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: 2.6.32/, 2.6.32-new/, 3.0.8/
Date: Tue, 15 Nov 2011 14:09:30
Message-Id: 5d9cb67b74ed4e82f0a6ab04032086a7f06ee3d2.blueness@gentoo
1 commit: 5d9cb67b74ed4e82f0a6ab04032086a7f06ee3d2
2 Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
3 AuthorDate: Tue Nov 15 14:07:04 2011 +0000
4 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
5 CommitDate: Tue Nov 15 14:07:04 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-patchset.git;a=commit;h=5d9cb67b
7
8 Readd 3.0.8|grsecurity-2.2.2-2.6.32.46-201111010529 + grsecurity-2.2.2-3.0.8-201111010529
9
10 ---
11 {2.6.32 => 2.6.32-new}/0000_README | 0
12 ...0_grsecurity-2.2.2-2.6.32.48-201111121310.patch | 0
13 .../4421_grsec-remove-localversion-grsec.patch | 9 +
14 2.6.32-new/4422_grsec-mute-warnings.patch | 42 +
15 2.6.32-new/4423_grsec-remove-protected-paths.patch | 19 +
16 2.6.32-new/4425_grsec-pax-without-grsec.patch | 88 +
17 2.6.32-new/4430_grsec-kconfig-default-gids.patch | 77 +
18 2.6.32-new/4435_grsec-kconfig-gentoo.patch | 314 +
19 2.6.32-new/4437-grsec-kconfig-proc-user.patch | 26 +
20 .../4440_selinux-avc_audit-log-curr_ip.patch | 73 +
21 2.6.32-new/4445_disable-compat_vdso.patch | 47 +
22 2.6.32-new/4450_check_ssp_fix.patch | 17 +
23 2.6.32/0000_README | 2 +-
24 ..._grsecurity-2.2.2-2.6.32.46-201111010529.patch} |10283 +++---
25 {2.6.32 => 3.0.8}/0000_README | 14 +-
26 3.0.8/1007_linux-3.0.8.patch | 1472 +
27 .../4420_grsecurity-2.2.2-3.0.8-201111010529.patch |46281 +++++++++-----------
28 3.0.8/4421_grsec-remove-localversion-grsec.patch | 9 +
29 3.0.8/4422_grsec-mute-warnings.patch | 42 +
30 3.0.8/4423_grsec-remove-protected-paths.patch | 19 +
31 3.0.8/4425_grsec-pax-without-grsec.patch | 88 +
32 3.0.8/4430_grsec-kconfig-default-gids.patch | 77 +
33 3.0.8/4435_grsec-kconfig-gentoo.patch | 315 +
34 3.0.8/4437-grsec-kconfig-proc-user.patch | 26 +
35 3.0.8/4440_selinux-avc_audit-log-curr_ip.patch | 73 +
36 3.0.8/4445_disable-compat_vdso.patch | 46 +
37 26 files changed, 29395 insertions(+), 30064 deletions(-)
38
39 diff --git a/2.6.32/0000_README b/2.6.32-new/0000_README
40 similarity index 100%
41 copy from 2.6.32/0000_README
42 copy to 2.6.32-new/0000_README
43
44 diff --git a/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch b/2.6.32-new/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
45 similarity index 100%
46 copy from 2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
47 copy to 2.6.32-new/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
48
49 diff --git a/2.6.32-new/4421_grsec-remove-localversion-grsec.patch b/2.6.32-new/4421_grsec-remove-localversion-grsec.patch
50 new file mode 100644
51 index 0000000..31cf878
52 --- /dev/null
53 +++ b/2.6.32-new/4421_grsec-remove-localversion-grsec.patch
54 @@ -0,0 +1,9 @@
55 +From: Kerin Millar <kerframil@×××××.com>
56 +
57 +Remove grsecurity's localversion-grsec file as it is inconsistent with
58 +Gentoo's kernel practices and naming scheme.
59 +
60 +--- a/localversion-grsec 2008-02-24 14:26:59.000000000 +0000
61 ++++ b/localversion-grsec 1970-01-01 01:00:00.000000000 +0100
62 +@@ -1 +0,0 @@
63 +--grsec
64
65 diff --git a/2.6.32-new/4422_grsec-mute-warnings.patch b/2.6.32-new/4422_grsec-mute-warnings.patch
66 new file mode 100644
67 index 0000000..0c9c69a
68 --- /dev/null
69 +++ b/2.6.32-new/4422_grsec-mute-warnings.patch
70 @@ -0,0 +1,42 @@
71 +From: Anthony G. Basile <blueness@g.o>
72 +Updated patch for 2.6.32.39.
73 +
74 +The credits/description from the original version of this patch remain accurate
75 +and are included below.
76 +
77 +---
78 +From: Jory A. Pratt <anarchy@g.o>
79 +Updated patch for kernel 2.6.32
80 +
81 +The credits/description from the original version of this patch remain accurate
82 +and are included below.
83 +
84 +---
85 +From: Gordon Malm <gengor@g.o>
86 +
87 +Updated patch for kernel series 2.6.24.
88 +
89 +The credits/description from the original version of this patch remain accurate
90 +and are included below.
91 +
92 +---
93 +From: Alexander Gabert <gaberta@××××××××.de>
94 +
95 +This patch removes the warnings introduced by grsec patch 2.1.9 and later.
96 +It removes the -W options added by the patch and restores the original
97 +warning flags of vanilla kernel versions.
98 +
99 +Acked-by: Christian Heim <phreak@g.o>
100 +---
101 +
102 +--- a/Makefile 2011-06-05 20:27:54.000000000 -0400
103 ++++ b/Makefile 2011-06-05 20:28:46.000000000 -0400
104 +@@ -221,7 +221,7 @@
105 +
106 + HOSTCC = gcc
107 + HOSTCXX = g++
108 +-HOSTCFLAGS = -Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
109 ++HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-empty-body -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
110 + HOSTCFLAGS += $(call cc-option, -Wno-empty-body)
111 + HOSTCXXFLAGS = -O2 -fno-delete-null-pointer-checks
112 +
113
114 diff --git a/2.6.32-new/4423_grsec-remove-protected-paths.patch b/2.6.32-new/4423_grsec-remove-protected-paths.patch
115 new file mode 100644
116 index 0000000..5cec66c
117 --- /dev/null
118 +++ b/2.6.32-new/4423_grsec-remove-protected-paths.patch
119 @@ -0,0 +1,19 @@
120 +From: Anthony G. Basile <blueness@g.o>
121 +
122 +We don't want GRSEC's Makefile to change permissions on paths in
123 +the filesystem.
124 +
125 +diff -Naur a/grsecurity/Makefile b/grsecurity/Makefile
126 +--- a/grsecurity/Makefile 2011-10-19 19:48:21.000000000 -0400
127 ++++ b/grsecurity/Makefile 2011-10-19 19:50:44.000000000 -0400
128 +@@ -27,10 +27,4 @@
129 + ifdef CONFIG_GRKERNSEC_HIDESYM
130 + extra-y := grsec_hidesym.o
131 + $(obj)/grsec_hidesym.o:
132 +- @-chmod -f 500 /boot
133 +- @-chmod -f 500 /lib/modules
134 +- @-chmod -f 500 /lib64/modules
135 +- @-chmod -f 500 /lib32/modules
136 +- @-chmod -f 700 .
137 +- @echo ' grsec: protected kernel image paths'
138 + endif
139
140 diff --git a/2.6.32-new/4425_grsec-pax-without-grsec.patch b/2.6.32-new/4425_grsec-pax-without-grsec.patch
141 new file mode 100644
142 index 0000000..96b85a3
143 --- /dev/null
144 +++ b/2.6.32-new/4425_grsec-pax-without-grsec.patch
145 @@ -0,0 +1,88 @@
146 +From: Anthony G. Basile <blueness@g.o>
147 +
148 +With grsecurity-2.2.2-2.6.32.38-201104171745, the functions pax_report_leak_to_user and
149 +pax_report_overflow_from_user in fs/exec.c were consolidated into pax_report_usercopy.
150 +This patch has been updated to reflect that change.
151 +--
152 +From: Jory Pratt <anarchy@g.o>
153 +Updated patch for kernel 2.6.32
154 +
155 +The credits/description from the original version of this patch remain accurate
156 +and are included below.
157 +--
158 +From: Gordon Malm <gengor@g.o>
159 +
160 +Allow PaX options to be selected without first selecting CONFIG_GRKERNSEC.
161 +
162 +This patch has been updated to keep current with newer kernel versions.
163 +The original version of this patch contained no credits/description.
164 +
165 +diff -Naur linux-2.6.32-hardened-r44.orig/arch/x86/mm/fault.c linux-2.6.32-hardened-r44/arch/x86/mm/fault.c
166 +--- linux-2.6.32-hardened-r44.orig/arch/x86/mm/fault.c 2011-04-17 18:15:54.000000000 -0400
167 ++++ linux-2.6.32-hardened-r44/arch/x86/mm/fault.c 2011-04-17 18:28:11.000000000 -0400
168 +@@ -658,10 +658,12 @@
169 +
170 + #ifdef CONFIG_PAX_KERNEXEC
171 + if (init_mm.start_code <= address && address < init_mm.end_code) {
172 ++#ifdef CONFIG_GRKERNSEC
173 + if (current->signal->curr_ip)
174 + printk(KERN_ERR "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n",
175 + &current->signal->curr_ip, current->comm, task_pid_nr(current), current_uid(), current_euid());
176 + else
177 ++#endif
178 + printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n",
179 + current->comm, task_pid_nr(current), current_uid(), current_euid());
180 + }
181 +diff -Naur linux-2.6.32-hardened-r44.orig/fs/exec.c linux-2.6.32-hardened-r44/fs/exec.c
182 +--- linux-2.6.32-hardened-r44.orig/fs/exec.c 2011-04-17 18:15:55.000000000 -0400
183 ++++ linux-2.6.32-hardened-r44/fs/exec.c 2011-04-17 18:29:40.000000000 -0400
184 +@@ -1803,9 +1803,11 @@
185 + }
186 + up_read(&mm->mmap_sem);
187 + }
188 ++#ifdef CONFIG_GRKERNSEC
189 + if (tsk->signal->curr_ip)
190 + printk(KERN_ERR "PAX: From %pI4: execution attempt in: %s, %08lx-%08lx %08lx\n", &tsk->signal->curr_ip, path_fault, start, end, offset);
191 + else
192 ++#endif
193 + printk(KERN_ERR "PAX: execution attempt in: %s, %08lx-%08lx %08lx\n", path_fault, start, end, offset);
194 + printk(KERN_ERR "PAX: terminating task: %s(%s):%d, uid/euid: %u/%u, "
195 + "PC: %p, SP: %p\n", path_exec, tsk->comm, task_pid_nr(tsk),
196 +@@ -1820,10 +1822,12 @@
197 + #ifdef CONFIG_PAX_REFCOUNT
198 + void pax_report_refcount_overflow(struct pt_regs *regs)
199 + {
200 ++#ifdef CONFIG_GRKERNSEC
201 + if (current->signal->curr_ip)
202 + printk(KERN_ERR "PAX: From %pI4: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n",
203 + &current->signal->curr_ip, current->comm, task_pid_nr(current), current_uid(), current_euid());
204 + else
205 ++#endif
206 + printk(KERN_ERR "PAX: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n",
207 + current->comm, task_pid_nr(current), current_uid(), current_euid());
208 + print_symbol(KERN_ERR "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs));
209 +@@ -1883,10 +1887,12 @@
210 +
211 + NORET_TYPE void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type)
212 + {
213 ++#ifdef CONFIG_GRKERNSEC
214 + if (current->signal->curr_ip)
215 + printk(KERN_ERR "PAX: From %pI4: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
216 + &current->signal->curr_ip, to ? "leak" : "overwrite", to ? "from" : "to", ptr, type ? : "unknown", len);
217 + else
218 ++#endif
219 + printk(KERN_ERR "PAX: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
220 + to ? "leak" : "overwrite", to ? "from" : "to", ptr, type ? : "unknown", len);
221 +
222 +diff -Naur linux-2.6.32-hardened-r44.orig/security/Kconfig linux-2.6.32-hardened-r44/security/Kconfig
223 +--- linux-2.6.32-hardened-r44.orig/security/Kconfig 2011-04-17 18:15:55.000000000 -0400
224 ++++ linux-2.6.32-hardened-r44/security/Kconfig 2011-04-17 18:28:11.000000000 -0400
225 +@@ -29,7 +29,7 @@
226 +
227 + config PAX
228 + bool "Enable various PaX features"
229 +- depends on GRKERNSEC && (ALPHA || ARM || AVR32 || IA64 || MIPS || PARISC || PPC || SPARC || X86)
230 ++ depends on (ALPHA || ARM || AVR32 || IA64 || MIPS || PARISC || PPC || SPARC || X86)
231 + help
232 + This allows you to enable various PaX features. PaX adds
233 + intrusion prevention mechanisms to the kernel that reduce
234
235 diff --git a/2.6.32-new/4430_grsec-kconfig-default-gids.patch b/2.6.32-new/4430_grsec-kconfig-default-gids.patch
236 new file mode 100644
237 index 0000000..b173bab
238 --- /dev/null
239 +++ b/2.6.32-new/4430_grsec-kconfig-default-gids.patch
240 @@ -0,0 +1,77 @@
241 +From: Kerin Millar <kerframil@×××××.com>
242 +
243 +grsecurity contains a number of options which allow certain protections
244 +to be applied to or exempted from members of a given group. However, the
245 +default GIDs specified in the upstream patch are entirely arbitrary and
246 +there is no telling which (if any) groups the GIDs will correlate with
247 +on an end-user's system. Because some users don't pay a great deal of
248 +attention to the finer points of kernel configuration, it is probably
249 +wise to specify some reasonable defaults so as to stop careless users
250 +from shooting themselves in the foot.
251 +
252 +diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-hardened-r44/grsecurity/Kconfig
253 +--- linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig 2011-04-17 18:15:55.000000000 -0400
254 ++++ linux-2.6.32-hardened-r44/grsecurity/Kconfig 2011-04-17 18:37:33.000000000 -0400
255 +@@ -432,7 +432,7 @@
256 + config GRKERNSEC_PROC_GID
257 + int "GID for special group"
258 + depends on GRKERNSEC_PROC_USERGROUP
259 +- default 1001
260 ++ default 10
261 +
262 + config GRKERNSEC_PROC_ADD
263 + bool "Additional restrictions"
264 +@@ -656,7 +656,7 @@
265 + config GRKERNSEC_AUDIT_GID
266 + int "GID for auditing"
267 + depends on GRKERNSEC_AUDIT_GROUP
268 +- default 1007
269 ++ default 100
270 +
271 + config GRKERNSEC_EXECLOG
272 + bool "Exec logging"
273 +@@ -834,7 +834,7 @@
274 + config GRKERNSEC_TPE_GID
275 + int "GID for untrusted users"
276 + depends on GRKERNSEC_TPE && !GRKERNSEC_TPE_INVERT
277 +- default 1005
278 ++ default 100
279 + help
280 + Setting this GID determines what group TPE restrictions will be
281 + *enabled* for. If the sysctl option is enabled, a sysctl option
282 +@@ -843,7 +843,7 @@
283 + config GRKERNSEC_TPE_GID
284 + int "GID for trusted users"
285 + depends on GRKERNSEC_TPE && GRKERNSEC_TPE_INVERT
286 +- default 1005
287 ++ default 10
288 + help
289 + Setting this GID determines what group TPE restrictions will be
290 + *disabled* for. If the sysctl option is enabled, a sysctl option
291 +@@ -916,7 +916,7 @@
292 + config GRKERNSEC_SOCKET_ALL_GID
293 + int "GID to deny all sockets for"
294 + depends on GRKERNSEC_SOCKET_ALL
295 +- default 1004
296 ++ default 65534
297 + help
298 + Here you can choose the GID to disable socket access for. Remember to
299 + add the users you want socket access disabled for to the GID
300 +@@ -937,7 +937,7 @@
301 + config GRKERNSEC_SOCKET_CLIENT_GID
302 + int "GID to deny client sockets for"
303 + depends on GRKERNSEC_SOCKET_CLIENT
304 +- default 1003
305 ++ default 65534
306 + help
307 + Here you can choose the GID to disable client socket access for.
308 + Remember to add the users you want client socket access disabled for to
309 +@@ -955,7 +955,7 @@
310 + config GRKERNSEC_SOCKET_SERVER_GID
311 + int "GID to deny server sockets for"
312 + depends on GRKERNSEC_SOCKET_SERVER
313 +- default 1002
314 ++ default 65534
315 + help
316 + Here you can choose the GID to disable server socket access for.
317 + Remember to add the users you want server socket access disabled for to
318
319 diff --git a/2.6.32-new/4435_grsec-kconfig-gentoo.patch b/2.6.32-new/4435_grsec-kconfig-gentoo.patch
320 new file mode 100644
321 index 0000000..0bb8941
322 --- /dev/null
323 +++ b/2.6.32-new/4435_grsec-kconfig-gentoo.patch
324 @@ -0,0 +1,314 @@
325 +From: Anthony G. Basile <blueness@g.o>
326 +From: Gordon Malm <gengor@g.o>
327 +From: Jory A. Pratt <anarchy@g.o>
328 +From: Kerin Millar <kerframil@×××××.com>
329 +
330 +Add Hardened Gentoo [server/workstation] predefined grsecurity
331 +levels. They're designed to provide a comparitively high level of
332 +security while remaining generally suitable for as great a majority
333 +of the userbase as possible (particularly new users).
334 +
335 +Make Hardened Gentoo [workstation] predefined grsecurity level the
336 +default. The Hardened Gentoo [server] level is more restrictive
337 +and conflicts with some software and thus would be less suitable.
338 +
339 +The original version of this patch was conceived and created by:
340 +Ned Ludd <solar@g.o>
341 +
342 +diff -Naur a/grsecurity/Kconfig b/grsecurity/Kconfig
343 +--- a/grsecurity/Kconfig 2011-04-17 18:41:22.000000000 -0400
344 ++++ b/grsecurity/Kconfig 2011-04-17 18:42:14.000000000 -0400
345 +@@ -18,7 +18,7 @@
346 + choice
347 + prompt "Security Level"
348 + depends on GRKERNSEC
349 +- default GRKERNSEC_CUSTOM
350 ++ default GRKERNSEC_HARDENED_WORKSTATION
351 +
352 + config GRKERNSEC_LOW
353 + bool "Low"
354 +@@ -191,6 +191,258 @@
355 + - Restricted sysfs/debugfs
356 + - Active kernel exploit response
357 +
358 ++config GRKERNSEC_HARDENED_SERVER
359 ++ bool "Hardened Gentoo [server]"
360 ++ select GRKERNSEC_LINK
361 ++ select GRKERNSEC_FIFO
362 ++ select GRKERNSEC_DMESG
363 ++ select GRKERNSEC_FORKFAIL
364 ++ select GRKERNSEC_TIME
365 ++ select GRKERNSEC_SIGNAL
366 ++ select GRKERNSEC_CHROOT
367 ++ select GRKERNSEC_CHROOT_SHMAT
368 ++ select GRKERNSEC_CHROOT_UNIX
369 ++ select GRKERNSEC_CHROOT_MOUNT
370 ++ select GRKERNSEC_CHROOT_FCHDIR
371 ++ select GRKERNSEC_CHROOT_PIVOT
372 ++ select GRKERNSEC_CHROOT_DOUBLE
373 ++ select GRKERNSEC_CHROOT_CHDIR
374 ++ select GRKERNSEC_CHROOT_MKNOD
375 ++ select GRKERNSEC_CHROOT_CAPS
376 ++ select GRKERNSEC_CHROOT_SYSCTL
377 ++ select GRKERNSEC_CHROOT_FINDTASK
378 ++ select GRKERNSEC_PROC
379 ++ select GRKERNSEC_PROC_MEMMAP if (PAX_NOEXEC || PAX_ASLR)
380 ++ select GRKERNSEC_HIDESYM
381 ++ select GRKERNSEC_BRUTE
382 ++ select GRKERNSEC_PROC_USERGROUP
383 ++ select GRKERNSEC_KMEM
384 ++ select GRKERNSEC_RESLOG
385 ++ select GRKERNSEC_RANDNET
386 ++ select GRKERNSEC_PROC_ADD
387 ++ select GRKERNSEC_CHROOT_CHMOD
388 ++ select GRKERNSEC_CHROOT_NICE
389 ++ select GRKERNSEC_AUDIT_MOUNT
390 ++ select GRKERNSEC_MODHARDEN if (MODULES)
391 ++ select GRKERNSEC_HARDEN_PTRACE
392 ++ select GRKERNSEC_VM86 if (X86_32)
393 ++ select GRKERNSEC_IO if (X86)
394 ++ select GRKERNSEC_PROC_IPADDR
395 ++ select GRKERNSEC_RWXMAP_LOG
396 ++ select GRKERNSEC_SYSCTL
397 ++ select GRKERNSEC_SYSCTL_ON
398 ++ select PAX
399 ++ select PAX_RANDUSTACK
400 ++ select PAX_ASLR
401 ++ select PAX_RANDMMAP
402 ++ select PAX_NOEXEC
403 ++ select PAX_MPROTECT
404 ++ select PAX_EI_PAX
405 ++ select PAX_PT_PAX_FLAGS
406 ++ select PAX_HAVE_ACL_FLAGS
407 ++ select PAX_KERNEXEC if ((PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN)
408 ++ select PAX_MEMORY_UDEREF if (X86 && !XEN)
409 ++ select PAX_RANDKSTACK if (X86_TSC && !X86_64)
410 ++ select PAX_SEGMEXEC if (X86_32)
411 ++ select PAX_PAGEEXEC
412 ++ select PAX_EMUPLT if (ALPHA || PARISC || SPARC32 || SPARC64)
413 ++ select PAX_EMUTRAMP if (PARISC)
414 ++ select PAX_EMUSIGRT if (PARISC)
415 ++ select PAX_ETEXECRELOCS if (ALPHA || IA64 || PARISC)
416 ++ select PAX_REFCOUNT if (X86 || SPARC64)
417 ++ select PAX_USERCOPY if ((X86 || PPC || SPARC32 || SPARC64) && (SLAB || SLUB || SLOB))
418 ++ select PAX_MEMORY_SANITIZE
419 ++ help
420 ++ If you say Y here, a configuration for grsecurity/PaX features
421 ++ will be used that is endorsed by the Hardened Gentoo project.
422 ++ These pre-defined security levels are designed to provide a high
423 ++ level of security while minimizing incompatibilities with a majority
424 ++ of Gentoo's available software.
425 ++
426 ++ This "Hardened Gentoo [server]" level is identical to the
427 ++ "Hardened Gentoo [workstation]" level, but with GRKERNSEC_IO,
428 ++ and GRKERNSEC_PROC_ADD enabled. Accordingly, this is the preferred
429 ++ security level if the system will not be utilizing software incompatible
430 ++ with these features.
431 ++
432 ++ When this level is selected, some security features will be forced on,
433 ++ while others will default to their suggested values of off or on. The
434 ++ later can be tweaked at the user's discretion, but may cause problems
435 ++ in some situations. You can fully customize all grsecurity/PaX features
436 ++ by choosing "Custom" in the Security Level menu. It may be helpful to
437 ++ inherit the options selected by this security level as a starting point.
438 ++ To accomplish this, select this security level, then exit the menuconfig
439 ++ interface, saving changes when prompted. Run make menuconfig again and
440 ++ select the "Custom" level.
441 ++
442 ++config GRKERNSEC_HARDENED_WORKSTATION
443 ++ bool "Hardened Gentoo [workstation]"
444 ++ select GRKERNSEC_LINK
445 ++ select GRKERNSEC_FIFO
446 ++ select GRKERNSEC_DMESG
447 ++ select GRKERNSEC_FORKFAIL
448 ++ select GRKERNSEC_TIME
449 ++ select GRKERNSEC_SIGNAL
450 ++ select GRKERNSEC_CHROOT
451 ++ select GRKERNSEC_CHROOT_SHMAT
452 ++ select GRKERNSEC_CHROOT_UNIX
453 ++ select GRKERNSEC_CHROOT_MOUNT
454 ++ select GRKERNSEC_CHROOT_FCHDIR
455 ++ select GRKERNSEC_CHROOT_PIVOT
456 ++ select GRKERNSEC_CHROOT_DOUBLE
457 ++ select GRKERNSEC_CHROOT_CHDIR
458 ++ select GRKERNSEC_CHROOT_MKNOD
459 ++ select GRKERNSEC_CHROOT_CAPS
460 ++ select GRKERNSEC_CHROOT_SYSCTL
461 ++ select GRKERNSEC_CHROOT_FINDTASK
462 ++ select GRKERNSEC_PROC
463 ++ select GRKERNSEC_PROC_MEMMAP if (PAX_NOEXEC || PAX_ASLR)
464 ++ select GRKERNSEC_HIDESYM
465 ++ select GRKERNSEC_BRUTE
466 ++ select GRKERNSEC_PROC_USERGROUP
467 ++ select GRKERNSEC_KMEM
468 ++ select GRKERNSEC_RESLOG
469 ++ select GRKERNSEC_RANDNET
470 ++ # select GRKERNSEC_PROC_ADD
471 ++ select GRKERNSEC_CHROOT_CHMOD
472 ++ select GRKERNSEC_CHROOT_NICE
473 ++ select GRKERNSEC_AUDIT_MOUNT
474 ++ select GRKERNSEC_MODHARDEN if (MODULES)
475 ++ select GRKERNSEC_HARDEN_PTRACE
476 ++ select GRKERNSEC_VM86 if (X86_32)
477 ++ # select GRKERNSEC_IO if (X86)
478 ++ select GRKERNSEC_PROC_IPADDR
479 ++ select GRKERNSEC_RWXMAP_LOG
480 ++ select GRKERNSEC_SYSCTL
481 ++ select GRKERNSEC_SYSCTL_ON
482 ++ select PAX
483 ++ select PAX_RANDUSTACK
484 ++ select PAX_ASLR
485 ++ select PAX_RANDMMAP
486 ++ select PAX_NOEXEC
487 ++ select PAX_MPROTECT
488 ++ select PAX_EI_PAX
489 ++ select PAX_PT_PAX_FLAGS
490 ++ select PAX_HAVE_ACL_FLAGS
491 ++ # select PAX_KERNEXEC if ((PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN)
492 ++ # select PAX_MEMORY_UDEREF if (X86 && !XEN)
493 ++ select PAX_RANDKSTACK if (X86_TSC && !X86_64)
494 ++ select PAX_SEGMEXEC if (X86_32)
495 ++ select PAX_PAGEEXEC
496 ++ select PAX_EMUPLT if (ALPHA || PARISC || SPARC32 || SPARC64)
497 ++ select PAX_EMUTRAMP if (PARISC)
498 ++ select PAX_EMUSIGRT if (PARISC)
499 ++ select PAX_ETEXECRELOCS if (ALPHA || IA64 || PARISC)
500 ++ select PAX_REFCOUNT if (X86 || SPARC64)
501 ++ select PAX_USERCOPY if ((X86 || PPC || SPARC32 || SPARC64) && (SLAB || SLUB || SLOB))
502 ++ select PAX_MEMORY_SANITIZE
503 ++ help
504 ++ If you say Y here, a configuration for grsecurity/PaX features
505 ++ will be used that is endorsed by the Hardened Gentoo project.
506 ++ These pre-defined security levels are designed to provide a high
507 ++ level of security while minimizing incompatibilities with a majority
508 ++ of Gentoo's available software.
509 ++
510 ++ This "Hardened Gentoo [workstation]" level is identical to the
511 ++ "Hardened Gentoo [server]" level, but with GRKERNSEC_IO and
512 ++ GRKERNSEC_PROC_ADD disabled. Accordingly, this is the preferred
513 ++ security level if the system will be utilizing software incompatible
514 ++ with these features.
515 ++
516 ++ When this level is selected, some security features will be forced on,
517 ++ while others will default to their suggested values of off or on. The
518 ++ later can be tweaked at the user's discretion, but may cause problems
519 ++ in some situations. You can fully customize all grsecurity/PaX features
520 ++ by choosing "Custom" in the Security Level menu. It may be helpful to
521 ++ inherit the options selected by this security level as a starting point.
522 ++ To accomplish this, select this security level, then exit the menuconfig
523 ++ interface, saving changes when prompted. Run make menuconfig again and
524 ++ select the "Custom" level.
525 ++
526 ++config GRKERNSEC_HARDENED_VIRTUALIZATION
527 ++ bool "Hardened Gentoo [virtualization]"
528 ++ select GRKERNSEC_LINK
529 ++ select GRKERNSEC_FIFO
530 ++ select GRKERNSEC_DMESG
531 ++ select GRKERNSEC_FORKFAIL
532 ++ select GRKERNSEC_TIME
533 ++ select GRKERNSEC_SIGNAL
534 ++ select GRKERNSEC_CHROOT
535 ++ select GRKERNSEC_CHROOT_SHMAT
536 ++ select GRKERNSEC_CHROOT_UNIX
537 ++ select GRKERNSEC_CHROOT_MOUNT
538 ++ select GRKERNSEC_CHROOT_FCHDIR
539 ++ select GRKERNSEC_CHROOT_PIVOT
540 ++ select GRKERNSEC_CHROOT_DOUBLE
541 ++ select GRKERNSEC_CHROOT_CHDIR
542 ++ select GRKERNSEC_CHROOT_MKNOD
543 ++ select GRKERNSEC_CHROOT_CAPS
544 ++ select GRKERNSEC_CHROOT_SYSCTL
545 ++ select GRKERNSEC_CHROOT_FINDTASK
546 ++ select GRKERNSEC_PROC
547 ++ select GRKERNSEC_PROC_MEMMAP if (PAX_NOEXEC || PAX_ASLR)
548 ++ select GRKERNSEC_HIDESYM
549 ++ select GRKERNSEC_BRUTE
550 ++ select GRKERNSEC_PROC_USERGROUP
551 ++ select GRKERNSEC_KMEM
552 ++ select GRKERNSEC_RESLOG
553 ++ select GRKERNSEC_RANDNET
554 ++ # select GRKERNSEC_PROC_ADD
555 ++ select GRKERNSEC_CHROOT_CHMOD
556 ++ select GRKERNSEC_CHROOT_NICE
557 ++ select GRKERNSEC_AUDIT_MOUNT
558 ++ select GRKERNSEC_MODHARDEN if (MODULES)
559 ++ select GRKERNSEC_HARDEN_PTRACE
560 ++ select GRKERNSEC_VM86 if (X86_32)
561 ++ # select GRKERNSEC_IO if (X86)
562 ++ select GRKERNSEC_PROC_IPADDR
563 ++ select GRKERNSEC_RWXMAP_LOG
564 ++ select GRKERNSEC_SYSCTL
565 ++ select GRKERNSEC_SYSCTL_ON
566 ++ select PAX
567 ++ select PAX_RANDUSTACK
568 ++ select PAX_ASLR
569 ++ select PAX_RANDMMAP
570 ++ select PAX_NOEXEC
571 ++ select PAX_MPROTECT
572 ++ select PAX_EI_PAX
573 ++ select PAX_PT_PAX_FLAGS
574 ++ select PAX_HAVE_ACL_FLAGS
575 ++ # select PAX_KERNEXEC if ((PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN)
576 ++ # select PAX_MEMORY_UDEREF if (X86 && !XEN)
577 ++ select PAX_RANDKSTACK if (X86_TSC && !X86_64)
578 ++ select PAX_SEGMEXEC if (X86_32)
579 ++ select PAX_PAGEEXEC
580 ++ select PAX_EMUPLT if (ALPHA || PARISC || SPARC32 || SPARC64)
581 ++ select PAX_EMUTRAMP if (PARISC)
582 ++ select PAX_EMUSIGRT if (PARISC)
583 ++ select PAX_ETEXECRELOCS if (ALPHA || IA64 || PARISC)
584 ++ select PAX_REFCOUNT if (X86 || SPARC64)
585 ++ select PAX_USERCOPY if ((X86 || PPC || SPARC32 || SPARC64) && (SLAB || SLUB || SLOB))
586 ++ select PAX_MEMORY_SANITIZE
587 ++ help
588 ++ If you say Y here, a configuration for grsecurity/PaX features
589 ++ will be used that is endorsed by the Hardened Gentoo project.
590 ++ These pre-defined security levels are designed to provide a high
591 ++ level of security while minimizing incompatibilities with a majority
592 ++ of Gentoo's available software.
593 ++
594 ++ This "Hardened Gentoo [virtualization]" level is identical to the
595 ++ "Hardened Gentoo [workstation]" level, but with the PAX_KERNEXEC and
596 ++ PAX_MEMORY_UDEREF defaulting to off. Accordingly, this is the preferred
597 ++ security level if the system will be utilizing virtualization software
598 ++ incompatible with these features, like VirtualBox or kvm.
599 ++
600 ++ When this level is selected, some security features will be forced on,
601 ++ while others will default to their suggested values of off or on. The
602 ++ later can be tweaked at the user's discretion, but may cause problems
603 ++ in some situations. You can fully customize all grsecurity/PaX features
604 ++ by choosing "Custom" in the Security Level menu. It may be helpful to
605 ++ inherit the options selected by this security level as a starting point.
606 ++ To accomplish this, select this security level, then exit the menuconfig
607 ++ interface, saving changes when prompted. Run make menuconfig again and
608 ++ select the "Custom" level.
609 ++
610 + config GRKERNSEC_CUSTOM
611 + bool "Custom"
612 + help
613 +diff -Naur a/security/Kconfig b/security/Kconfig
614 +--- a/security/Kconfig 2011-04-17 18:36:55.000000000 -0400
615 ++++ b/security/Kconfig 2011-04-17 18:42:14.000000000 -0400
616 +@@ -322,9 +322,10 @@
617 +
618 + config PAX_KERNEXEC
619 + bool "Enforce non-executable kernel pages"
620 +- depends on (PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN
621 ++ depends on (PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN && !GRKERNSEC_HARDENED_VIRTUALIZATION
622 + select PAX_PER_CPU_PGD if X86_64 || (X86_32 && X86_PAE)
623 + select PAX_KERNEXEC_PLUGIN if X86_64
624 ++ default y if GRKERNSEC_HARDENED_WORKSTATION
625 + help
626 + This is the kernel land equivalent of PAGEEXEC and MPROTECT,
627 + that is, enabling this option will make it harder to inject
628 +@@ -487,8 +488,9 @@
629 +
630 + config PAX_MEMORY_UDEREF
631 + bool "Prevent invalid userland pointer dereference"
632 +- depends on X86 && !UML_X86 && !XEN
633 ++ depends on X86 && !UML_X86 && !XEN && !GRKERNSEC_HARDENED_VIRTUALIZATION
634 + select PAX_PER_CPU_PGD if X86_64
635 ++ default y if GRKERNSEC_HARDENED_WORKSTATION
636 + help
637 + By saying Y here the kernel will be prevented from dereferencing
638 + userland pointers in contexts where the kernel expects only kernel
639
640 diff --git a/2.6.32-new/4437-grsec-kconfig-proc-user.patch b/2.6.32-new/4437-grsec-kconfig-proc-user.patch
641 new file mode 100644
642 index 0000000..368d10c
643 --- /dev/null
644 +++ b/2.6.32-new/4437-grsec-kconfig-proc-user.patch
645 @@ -0,0 +1,26 @@
646 +From: Anthony G. Basile <blueness@g.o>
647 +
648 +Address the mutually exclusive options GRKERNSEC_PROC_USER and GRKERNSEC_PROC_USERGROUP
649 +in a different way to avoid bug #366019. This patch should eventually go upstream.
650 +
651 +diff -Naur linux-2.6.32-hardened-r54.orig//grsecurity/Kconfig linux-2.6.32-hardened-r54/grsecurity/Kconfig
652 +--- a/grsecurity/Kconfig 2011-06-29 07:46:02.000000000 -0400
653 ++++ b/grsecurity/Kconfig 2011-06-29 07:47:20.000000000 -0400
654 +@@ -665,7 +665,7 @@
655 +
656 + config GRKERNSEC_PROC_USER
657 + bool "Restrict /proc to user only"
658 +- depends on GRKERNSEC_PROC
659 ++ depends on GRKERNSEC_PROC && !GRKERNSEC_PROC_USERGROUP
660 + help
661 + If you say Y here, non-root users will only be able to view their own
662 + processes, and restricts them from viewing network-related information,
663 +@@ -673,7 +673,7 @@
664 +
665 + config GRKERNSEC_PROC_USERGROUP
666 + bool "Allow special group"
667 +- depends on GRKERNSEC_PROC && !GRKERNSEC_PROC_USER
668 ++ depends on GRKERNSEC_PROC
669 + help
670 + If you say Y here, you will be able to select a group that will be
671 + able to view all processes and network-related information. If you've
672
673 diff --git a/2.6.32-new/4440_selinux-avc_audit-log-curr_ip.patch b/2.6.32-new/4440_selinux-avc_audit-log-curr_ip.patch
674 new file mode 100644
675 index 0000000..003d903
676 --- /dev/null
677 +++ b/2.6.32-new/4440_selinux-avc_audit-log-curr_ip.patch
678 @@ -0,0 +1,73 @@
679 +From: Anthony G. Basile <blueness@g.o>
680 +
681 +Removed deprecated NIPQUAD macro in favor of %pI4.
682 +See bug #346333.
683 +
684 +---
685 +From: Gordon Malm <gengor@g.o>
686 +
687 +This is a reworked version of the original
688 +*_selinux-avc_audit-log-curr_ip.patch carried in earlier releases of
689 +hardened-sources.
690 +
691 +Dropping the patch, or simply fixing the #ifdef of the original patch
692 +could break automated logging setups so this route was necessary.
693 +
694 +Suggestions for improving the help text are welcome.
695 +
696 +The original patch's description is still accurate and included below.
697 +
698 +---
699 +Provides support for a new field ipaddr within the SELinux
700 +AVC audit log, relying in task_struct->curr_ip (ipv4 only)
701 +provided by grSecurity patch to be applied before.
702 +
703 +Signed-off-by: Lorenzo Hernandez Garcia-Hierro <lorenzo@×××.org>
704 +---
705 +
706 +diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-hardened-r44/grsecurity/Kconfig
707 +--- linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig 2011-04-17 18:47:02.000000000 -0400
708 ++++ linux-2.6.32-hardened-r44/grsecurity/Kconfig 2011-04-17 18:51:15.000000000 -0400
709 +@@ -1264,6 +1264,27 @@
710 + menu "Logging Options"
711 + depends on GRKERNSEC
712 +
713 ++config GRKERNSEC_SELINUX_AVC_LOG_IPADDR
714 ++ def_bool n
715 ++ prompt "Add source IP address to SELinux AVC log messages"
716 ++ depends on GRKERNSEC && SECURITY_SELINUX
717 ++ help
718 ++ If you say Y here, a new field "ipaddr=" will be added to many SELinux
719 ++ AVC log messages. The value of this field in any given message
720 ++ represents the source IP address of the remote machine/user that created
721 ++ the offending process.
722 ++
723 ++ This information is sourced from task_struct->curr_ip provided by
724 ++ grsecurity's GRKERNSEC top-level configuration option. One limitation
725 ++ is that only IPv4 is supported.
726 ++
727 ++ In many instances SELinux AVC log messages already log a superior level
728 ++ of information that also includes source port and destination ip/port.
729 ++ Additionally, SELinux's AVC log code supports IPv6.
730 ++
731 ++ However, grsecurity's task_struct->curr_ip will sometimes (often?)
732 ++ provide the offender's IP address where stock SELinux logging fails to.
733 ++
734 + config GRKERNSEC_FLOODTIME
735 + int "Seconds in between log messages (minimum)"
736 + default 10
737 +diff -Naur linux-2.6.32-hardened-r44.orig/security/selinux/avc.c linux-2.6.32-hardened-r44/security/selinux/avc.c
738 +--- linux-2.6.32-hardened-r44.orig/security/selinux/avc.c 2009-12-02 22:51:21.000000000 -0500
739 ++++ linux-2.6.32-hardened-r44/security/selinux/avc.c 2011-04-17 18:51:15.000000000 -0400
740 +@@ -203,6 +203,11 @@
741 + char *scontext;
742 + u32 scontext_len;
743 +
744 ++#ifdef CONFIG_GRKERNSEC_SELINUX_AVC_LOG_IPADDR
745 ++ if (current->signal->curr_ip)
746 ++ audit_log_format(ab, "ipaddr=%pI4 ", &current->signal->curr_ip);
747 ++#endif
748 ++
749 + rc = security_sid_to_context(ssid, &scontext, &scontext_len);
750 + if (rc)
751 + audit_log_format(ab, "ssid=%d", ssid);
752
753 diff --git a/2.6.32-new/4445_disable-compat_vdso.patch b/2.6.32-new/4445_disable-compat_vdso.patch
754 new file mode 100644
755 index 0000000..c8e1aeb
756 --- /dev/null
757 +++ b/2.6.32-new/4445_disable-compat_vdso.patch
758 @@ -0,0 +1,47 @@
759 +From: Jory A. Pratt <anarchy@g.o>
760 +
761 +No need to wrap vdso calls as gentoo does not use any version of
762 +glibc <=2.3.3
763 +---
764 +From: Gordon Malm <gengor@g.o>
765 +From: Kerin Millar <kerframil@×××××.com>
766 +
767 +COMPAT_VDSO is inappropriate for any modern Hardened Gentoo system. It
768 +conflicts with various parts of PaX, crashing the system if enabled
769 +while PaX's NOEXEC or UDEREF features are active. Moreover, it prevents
770 +a number of important PaX options from appearing in the configuration
771 +menu, including all PaX NOEXEC implementations. Unfortunately, the
772 +reason for the disappearance of these PaX configuration options is
773 +often far from obvious to inexperienced users.
774 +
775 +Therefore, we disable the COMPAT_VDSO menu entry entirely. However,
776 +COMPAT_VDSO operation can still be enabled via bootparam and sysctl
777 +interfaces. Consequently, we must also disable the ability to select
778 +COMPAT_VDSO operation at boot or runtime. Here we patch the kernel so
779 +that selecting COMPAT_VDSO operation at boot/runtime has no effect if
780 +conflicting PaX options are enabled, leaving VDSO_ENABLED operation
781 +intact.
782 +
783 +Closes bug: http://bugs.gentoo.org/show_bug.cgi?id=210138
784 +
785 +diff -urp a/arch/x86/Kconfig b/arch/x86/Kconfig
786 +--- a/arch/x86/Kconfig 2009-07-31 01:36:57.323857684 +0100
787 ++++ b/arch/x86/Kconfig 2009-07-31 01:51:39.395749681 +0100
788 +@@ -1616,17 +1616,8 @@
789 +
790 + config COMPAT_VDSO
791 + def_bool n
792 +- prompt "Compat VDSO support"
793 + depends on X86_32 || IA32_EMULATION
794 + depends on !PAX_NOEXEC && !PAX_MEMORY_UDEREF
795 +- ---help---
796 +- Map the 32-bit VDSO to the predictable old-style address too.
797 +- ---help---
798 +- Say N here if you are running a sufficiently recent glibc
799 +- version (2.3.3 or later), to remove the high-mapped
800 +- VDSO mapping and to exclusively use the randomized VDSO.
801 +-
802 +- If unsure, say Y.
803 +
804 + config CMDLINE_BOOL
805 + bool "Built-in kernel command line"
806
807 diff --git a/2.6.32-new/4450_check_ssp_fix.patch b/2.6.32-new/4450_check_ssp_fix.patch
808 new file mode 100644
809 index 0000000..40e0467
810 --- /dev/null
811 +++ b/2.6.32-new/4450_check_ssp_fix.patch
812 @@ -0,0 +1,17 @@
813 +2010-03-31 Magnus Granberg <zorry@g.o>
814 +
815 + #312335
816 + arch/x86/Makefile: Add KBUILD_CPPFLAGS to the SSP test
817 + commandline for else it build that file with -fPIE
818 +
819 +--- a/arch/x86/Makefile 2010-03-31 16:39:32.000000000 +0200
820 ++++ b/arch/x86/Makefile 2010-03-31 16:36:53.000000000 +0200
821 +@@ -75,7 +75,7 @@
822 +
823 + ifdef CONFIG_CC_STACKPROTECTOR
824 + cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
825 +- ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(biarch)),y)
826 ++ ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(KBUILD_CPPFLAGS) $(biarch)),y)
827 + stackp-y := -fstack-protector
828 + KBUILD_CFLAGS += $(stackp-y)
829 + else
830
831 diff --git a/2.6.32/0000_README b/2.6.32/0000_README
832 index 5e969f0..a4675c0 100644
833 --- a/2.6.32/0000_README
834 +++ b/2.6.32/0000_README
835 @@ -3,7 +3,7 @@ README
836
837 Individual Patch Descriptions:
838 -----------------------------------------------------------------------------
839 -Patch: 4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
840 +Patch: 4420_grsecurity-2.2.2-2.6.32.46-201111010529.patch
841 From: http://www.grsecurity.net
842 Desc: hardened-sources base patch from upstream grsecurity
843
844
845 diff --git a/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch b/2.6.32/4420_grsecurity-2.2.2-2.6.32.46-201111010529.patch
846 similarity index 85%
847 copy from 2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
848 copy to 2.6.32/4420_grsecurity-2.2.2-2.6.32.46-201111010529.patch
849 index fa7931f..82fee55 100644
850 --- a/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
851 +++ b/2.6.32/4420_grsecurity-2.2.2-2.6.32.46-201111010529.patch
852 @@ -1,6 +1,6 @@
853 -diff -urNp linux-2.6.32.48/arch/alpha/include/asm/elf.h linux-2.6.32.48/arch/alpha/include/asm/elf.h
854 ---- linux-2.6.32.48/arch/alpha/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
855 -+++ linux-2.6.32.48/arch/alpha/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
856 +diff -urNp linux-2.6.32.46/arch/alpha/include/asm/elf.h linux-2.6.32.46/arch/alpha/include/asm/elf.h
857 +--- linux-2.6.32.46/arch/alpha/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
858 ++++ linux-2.6.32.46/arch/alpha/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
859 @@ -91,6 +91,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
860
861 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
862 @@ -15,9 +15,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/include/asm/elf.h linux-2.6.32.48/arch/alp
863 /* $0 is set by ld.so to a pointer to a function which might be
864 registered using atexit. This provides a mean for the dynamic
865 linker to call DT_FINI functions for shared libraries that have
866 -diff -urNp linux-2.6.32.48/arch/alpha/include/asm/pgtable.h linux-2.6.32.48/arch/alpha/include/asm/pgtable.h
867 ---- linux-2.6.32.48/arch/alpha/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
868 -+++ linux-2.6.32.48/arch/alpha/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
869 +diff -urNp linux-2.6.32.46/arch/alpha/include/asm/pgtable.h linux-2.6.32.46/arch/alpha/include/asm/pgtable.h
870 +--- linux-2.6.32.46/arch/alpha/include/asm/pgtable.h 2011-03-27 14:31:47.000000000 -0400
871 ++++ linux-2.6.32.46/arch/alpha/include/asm/pgtable.h 2011-04-17 15:56:45.000000000 -0400
872 @@ -101,6 +101,17 @@ struct vm_area_struct;
873 #define PAGE_SHARED __pgprot(_PAGE_VALID | __ACCESS_BITS)
874 #define PAGE_COPY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
875 @@ -36,9 +36,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/include/asm/pgtable.h linux-2.6.32.48/arch
876 #define PAGE_KERNEL __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE)
877
878 #define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x))
879 -diff -urNp linux-2.6.32.48/arch/alpha/kernel/module.c linux-2.6.32.48/arch/alpha/kernel/module.c
880 ---- linux-2.6.32.48/arch/alpha/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
881 -+++ linux-2.6.32.48/arch/alpha/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
882 +diff -urNp linux-2.6.32.46/arch/alpha/kernel/module.c linux-2.6.32.46/arch/alpha/kernel/module.c
883 +--- linux-2.6.32.46/arch/alpha/kernel/module.c 2011-03-27 14:31:47.000000000 -0400
884 ++++ linux-2.6.32.46/arch/alpha/kernel/module.c 2011-04-17 15:56:45.000000000 -0400
885 @@ -182,7 +182,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs,
886
887 /* The small sections were sorted to the end of the segment.
888 @@ -48,9 +48,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/kernel/module.c linux-2.6.32.48/arch/alpha
889 got = sechdrs[me->arch.gotsecindex].sh_addr;
890
891 for (i = 0; i < n; i++) {
892 -diff -urNp linux-2.6.32.48/arch/alpha/kernel/osf_sys.c linux-2.6.32.48/arch/alpha/kernel/osf_sys.c
893 ---- linux-2.6.32.48/arch/alpha/kernel/osf_sys.c 2011-11-12 12:44:28.000000000 -0500
894 -+++ linux-2.6.32.48/arch/alpha/kernel/osf_sys.c 2011-11-12 12:46:42.000000000 -0500
895 +diff -urNp linux-2.6.32.46/arch/alpha/kernel/osf_sys.c linux-2.6.32.46/arch/alpha/kernel/osf_sys.c
896 +--- linux-2.6.32.46/arch/alpha/kernel/osf_sys.c 2011-08-09 18:35:28.000000000 -0400
897 ++++ linux-2.6.32.46/arch/alpha/kernel/osf_sys.c 2011-06-13 17:19:47.000000000 -0400
898 @@ -1172,7 +1172,7 @@ arch_get_unmapped_area_1(unsigned long a
899 /* At this point: (!vma || addr < vma->vm_end). */
900 if (limit - len < addr)
901 @@ -82,9 +82,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/kernel/osf_sys.c linux-2.6.32.48/arch/alph
902 if (addr != (unsigned long) -ENOMEM)
903 return addr;
904
905 -diff -urNp linux-2.6.32.48/arch/alpha/mm/fault.c linux-2.6.32.48/arch/alpha/mm/fault.c
906 ---- linux-2.6.32.48/arch/alpha/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
907 -+++ linux-2.6.32.48/arch/alpha/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
908 +diff -urNp linux-2.6.32.46/arch/alpha/mm/fault.c linux-2.6.32.46/arch/alpha/mm/fault.c
909 +--- linux-2.6.32.46/arch/alpha/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
910 ++++ linux-2.6.32.46/arch/alpha/mm/fault.c 2011-04-17 15:56:45.000000000 -0400
911 @@ -54,6 +54,124 @@ __load_new_mm_context(struct mm_struct *
912 __reload_thread(pcb);
913 }
914 @@ -241,9 +241,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/mm/fault.c linux-2.6.32.48/arch/alpha/mm/f
915 } else if (!cause) {
916 /* Allow reads even for write-only mappings */
917 if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
918 -diff -urNp linux-2.6.32.48/arch/arm/include/asm/elf.h linux-2.6.32.48/arch/arm/include/asm/elf.h
919 ---- linux-2.6.32.48/arch/arm/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
920 -+++ linux-2.6.32.48/arch/arm/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
921 +diff -urNp linux-2.6.32.46/arch/arm/include/asm/elf.h linux-2.6.32.46/arch/arm/include/asm/elf.h
922 +--- linux-2.6.32.46/arch/arm/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
923 ++++ linux-2.6.32.46/arch/arm/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
924 @@ -109,7 +109,14 @@ int dump_task_regs(struct task_struct *t
925 the loader. We need to make sure that it is out of the way of the program
926 that it will "exec", and that there is sufficient room for the brk. */
927 @@ -260,9 +260,9 @@ diff -urNp linux-2.6.32.48/arch/arm/include/asm/elf.h linux-2.6.32.48/arch/arm/i
928
929 /* When the program starts, a1 contains a pointer to a function to be
930 registered with atexit, as per the SVR4 ABI. A value of 0 means we
931 -diff -urNp linux-2.6.32.48/arch/arm/include/asm/kmap_types.h linux-2.6.32.48/arch/arm/include/asm/kmap_types.h
932 ---- linux-2.6.32.48/arch/arm/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
933 -+++ linux-2.6.32.48/arch/arm/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
934 +diff -urNp linux-2.6.32.46/arch/arm/include/asm/kmap_types.h linux-2.6.32.46/arch/arm/include/asm/kmap_types.h
935 +--- linux-2.6.32.46/arch/arm/include/asm/kmap_types.h 2011-03-27 14:31:47.000000000 -0400
936 ++++ linux-2.6.32.46/arch/arm/include/asm/kmap_types.h 2011-04-17 15:56:45.000000000 -0400
937 @@ -19,6 +19,7 @@ enum km_type {
938 KM_SOFTIRQ0,
939 KM_SOFTIRQ1,
940 @@ -271,9 +271,9 @@ diff -urNp linux-2.6.32.48/arch/arm/include/asm/kmap_types.h linux-2.6.32.48/arc
941 KM_TYPE_NR
942 };
943
944 -diff -urNp linux-2.6.32.48/arch/arm/include/asm/uaccess.h linux-2.6.32.48/arch/arm/include/asm/uaccess.h
945 ---- linux-2.6.32.48/arch/arm/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
946 -+++ linux-2.6.32.48/arch/arm/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
947 +diff -urNp linux-2.6.32.46/arch/arm/include/asm/uaccess.h linux-2.6.32.46/arch/arm/include/asm/uaccess.h
948 +--- linux-2.6.32.46/arch/arm/include/asm/uaccess.h 2011-03-27 14:31:47.000000000 -0400
949 ++++ linux-2.6.32.46/arch/arm/include/asm/uaccess.h 2011-06-29 21:02:24.000000000 -0400
950 @@ -22,6 +22,8 @@
951 #define VERIFY_READ 0
952 #define VERIFY_WRITE 1
953 @@ -329,9 +329,9 @@ diff -urNp linux-2.6.32.48/arch/arm/include/asm/uaccess.h linux-2.6.32.48/arch/a
954 if (access_ok(VERIFY_WRITE, to, n))
955 n = __copy_to_user(to, from, n);
956 return n;
957 -diff -urNp linux-2.6.32.48/arch/arm/kernel/armksyms.c linux-2.6.32.48/arch/arm/kernel/armksyms.c
958 ---- linux-2.6.32.48/arch/arm/kernel/armksyms.c 2009-12-02 22:51:21.000000000 -0500
959 -+++ linux-2.6.32.48/arch/arm/kernel/armksyms.c 2011-11-12 12:46:42.000000000 -0500
960 +diff -urNp linux-2.6.32.46/arch/arm/kernel/armksyms.c linux-2.6.32.46/arch/arm/kernel/armksyms.c
961 +--- linux-2.6.32.46/arch/arm/kernel/armksyms.c 2011-03-27 14:31:47.000000000 -0400
962 ++++ linux-2.6.32.46/arch/arm/kernel/armksyms.c 2011-07-06 19:51:50.000000000 -0400
963 @@ -118,8 +118,8 @@ EXPORT_SYMBOL(__strncpy_from_user);
964 #ifdef CONFIG_MMU
965 EXPORT_SYMBOL(copy_page);
966 @@ -343,9 +343,9 @@ diff -urNp linux-2.6.32.48/arch/arm/kernel/armksyms.c linux-2.6.32.48/arch/arm/k
967 EXPORT_SYMBOL(__clear_user);
968
969 EXPORT_SYMBOL(__get_user_1);
970 -diff -urNp linux-2.6.32.48/arch/arm/kernel/kgdb.c linux-2.6.32.48/arch/arm/kernel/kgdb.c
971 ---- linux-2.6.32.48/arch/arm/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
972 -+++ linux-2.6.32.48/arch/arm/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
973 +diff -urNp linux-2.6.32.46/arch/arm/kernel/kgdb.c linux-2.6.32.46/arch/arm/kernel/kgdb.c
974 +--- linux-2.6.32.46/arch/arm/kernel/kgdb.c 2011-03-27 14:31:47.000000000 -0400
975 ++++ linux-2.6.32.46/arch/arm/kernel/kgdb.c 2011-04-17 15:56:45.000000000 -0400
976 @@ -190,7 +190,7 @@ void kgdb_arch_exit(void)
977 * and we handle the normal undef case within the do_undefinstr
978 * handler.
979 @@ -355,9 +355,9 @@ diff -urNp linux-2.6.32.48/arch/arm/kernel/kgdb.c linux-2.6.32.48/arch/arm/kerne
980 #ifndef __ARMEB__
981 .gdb_bpt_instr = {0xfe, 0xde, 0xff, 0xe7}
982 #else /* ! __ARMEB__ */
983 -diff -urNp linux-2.6.32.48/arch/arm/kernel/traps.c linux-2.6.32.48/arch/arm/kernel/traps.c
984 ---- linux-2.6.32.48/arch/arm/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
985 -+++ linux-2.6.32.48/arch/arm/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
986 +diff -urNp linux-2.6.32.46/arch/arm/kernel/traps.c linux-2.6.32.46/arch/arm/kernel/traps.c
987 +--- linux-2.6.32.46/arch/arm/kernel/traps.c 2011-03-27 14:31:47.000000000 -0400
988 ++++ linux-2.6.32.46/arch/arm/kernel/traps.c 2011-06-13 21:31:18.000000000 -0400
989 @@ -247,6 +247,8 @@ static void __die(const char *str, int e
990
991 DEFINE_SPINLOCK(die_lock);
992 @@ -376,9 +376,9 @@ diff -urNp linux-2.6.32.48/arch/arm/kernel/traps.c linux-2.6.32.48/arch/arm/kern
993 do_exit(SIGSEGV);
994 }
995
996 -diff -urNp linux-2.6.32.48/arch/arm/lib/copy_from_user.S linux-2.6.32.48/arch/arm/lib/copy_from_user.S
997 ---- linux-2.6.32.48/arch/arm/lib/copy_from_user.S 2009-12-02 22:51:21.000000000 -0500
998 -+++ linux-2.6.32.48/arch/arm/lib/copy_from_user.S 2011-11-12 12:46:42.000000000 -0500
999 +diff -urNp linux-2.6.32.46/arch/arm/lib/copy_from_user.S linux-2.6.32.46/arch/arm/lib/copy_from_user.S
1000 +--- linux-2.6.32.46/arch/arm/lib/copy_from_user.S 2011-03-27 14:31:47.000000000 -0400
1001 ++++ linux-2.6.32.46/arch/arm/lib/copy_from_user.S 2011-06-29 20:48:38.000000000 -0400
1002 @@ -16,7 +16,7 @@
1003 /*
1004 * Prototype:
1005 @@ -402,9 +402,9 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/copy_from_user.S linux-2.6.32.48/arch/ar
1006
1007 .section .fixup,"ax"
1008 .align 0
1009 -diff -urNp linux-2.6.32.48/arch/arm/lib/copy_to_user.S linux-2.6.32.48/arch/arm/lib/copy_to_user.S
1010 ---- linux-2.6.32.48/arch/arm/lib/copy_to_user.S 2009-12-02 22:51:21.000000000 -0500
1011 -+++ linux-2.6.32.48/arch/arm/lib/copy_to_user.S 2011-11-12 12:46:42.000000000 -0500
1012 +diff -urNp linux-2.6.32.46/arch/arm/lib/copy_to_user.S linux-2.6.32.46/arch/arm/lib/copy_to_user.S
1013 +--- linux-2.6.32.46/arch/arm/lib/copy_to_user.S 2011-03-27 14:31:47.000000000 -0400
1014 ++++ linux-2.6.32.46/arch/arm/lib/copy_to_user.S 2011-06-29 20:46:49.000000000 -0400
1015 @@ -16,7 +16,7 @@
1016 /*
1017 * Prototype:
1018 @@ -428,9 +428,9 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/copy_to_user.S linux-2.6.32.48/arch/arm/
1019
1020 .section .fixup,"ax"
1021 .align 0
1022 -diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess.S linux-2.6.32.48/arch/arm/lib/uaccess.S
1023 ---- linux-2.6.32.48/arch/arm/lib/uaccess.S 2009-12-02 22:51:21.000000000 -0500
1024 -+++ linux-2.6.32.48/arch/arm/lib/uaccess.S 2011-11-12 12:46:42.000000000 -0500
1025 +diff -urNp linux-2.6.32.46/arch/arm/lib/uaccess.S linux-2.6.32.46/arch/arm/lib/uaccess.S
1026 +--- linux-2.6.32.46/arch/arm/lib/uaccess.S 2011-03-27 14:31:47.000000000 -0400
1027 ++++ linux-2.6.32.46/arch/arm/lib/uaccess.S 2011-06-29 20:48:53.000000000 -0400
1028 @@ -19,7 +19,7 @@
1029
1030 #define PAGE_SHIFT 12
1031 @@ -484,9 +484,9 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess.S linux-2.6.32.48/arch/arm/lib/u
1032
1033 .section .fixup,"ax"
1034 .align 0
1035 -diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c
1036 ---- linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c 2009-12-02 22:51:21.000000000 -0500
1037 -+++ linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c 2011-11-12 12:46:42.000000000 -0500
1038 +diff -urNp linux-2.6.32.46/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.32.46/arch/arm/lib/uaccess_with_memcpy.c
1039 +--- linux-2.6.32.46/arch/arm/lib/uaccess_with_memcpy.c 2011-03-27 14:31:47.000000000 -0400
1040 ++++ linux-2.6.32.46/arch/arm/lib/uaccess_with_memcpy.c 2011-06-29 20:44:35.000000000 -0400
1041 @@ -97,7 +97,7 @@ out:
1042 }
1043
1044 @@ -496,9 +496,9 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.32.48/ar
1045 {
1046 /*
1047 * This test is stubbed out of the main function above to keep
1048 -diff -urNp linux-2.6.32.48/arch/arm/mach-at91/pm.c linux-2.6.32.48/arch/arm/mach-at91/pm.c
1049 ---- linux-2.6.32.48/arch/arm/mach-at91/pm.c 2009-12-02 22:51:21.000000000 -0500
1050 -+++ linux-2.6.32.48/arch/arm/mach-at91/pm.c 2011-11-12 12:46:42.000000000 -0500
1051 +diff -urNp linux-2.6.32.46/arch/arm/mach-at91/pm.c linux-2.6.32.46/arch/arm/mach-at91/pm.c
1052 +--- linux-2.6.32.46/arch/arm/mach-at91/pm.c 2011-03-27 14:31:47.000000000 -0400
1053 ++++ linux-2.6.32.46/arch/arm/mach-at91/pm.c 2011-04-17 15:56:45.000000000 -0400
1054 @@ -348,7 +348,7 @@ static void at91_pm_end(void)
1055 }
1056
1057 @@ -508,9 +508,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-at91/pm.c linux-2.6.32.48/arch/arm/mach
1058 .valid = at91_pm_valid_state,
1059 .begin = at91_pm_begin,
1060 .enter = at91_pm_enter,
1061 -diff -urNp linux-2.6.32.48/arch/arm/mach-omap1/pm.c linux-2.6.32.48/arch/arm/mach-omap1/pm.c
1062 ---- linux-2.6.32.48/arch/arm/mach-omap1/pm.c 2009-12-02 22:51:21.000000000 -0500
1063 -+++ linux-2.6.32.48/arch/arm/mach-omap1/pm.c 2011-11-12 12:46:42.000000000 -0500
1064 +diff -urNp linux-2.6.32.46/arch/arm/mach-omap1/pm.c linux-2.6.32.46/arch/arm/mach-omap1/pm.c
1065 +--- linux-2.6.32.46/arch/arm/mach-omap1/pm.c 2011-03-27 14:31:47.000000000 -0400
1066 ++++ linux-2.6.32.46/arch/arm/mach-omap1/pm.c 2011-04-17 15:56:45.000000000 -0400
1067 @@ -647,7 +647,7 @@ static struct irqaction omap_wakeup_irq
1068
1069
1070 @@ -520,9 +520,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-omap1/pm.c linux-2.6.32.48/arch/arm/mac
1071 .prepare = omap_pm_prepare,
1072 .enter = omap_pm_enter,
1073 .finish = omap_pm_finish,
1074 -diff -urNp linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c
1075 ---- linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c 2009-12-02 22:51:21.000000000 -0500
1076 -+++ linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c 2011-11-12 12:46:42.000000000 -0500
1077 +diff -urNp linux-2.6.32.46/arch/arm/mach-omap2/pm24xx.c linux-2.6.32.46/arch/arm/mach-omap2/pm24xx.c
1078 +--- linux-2.6.32.46/arch/arm/mach-omap2/pm24xx.c 2011-03-27 14:31:47.000000000 -0400
1079 ++++ linux-2.6.32.46/arch/arm/mach-omap2/pm24xx.c 2011-04-17 15:56:45.000000000 -0400
1080 @@ -326,7 +326,7 @@ static void omap2_pm_finish(void)
1081 enable_hlt();
1082 }
1083 @@ -532,9 +532,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c linux-2.6.32.48/arch/arm
1084 .prepare = omap2_pm_prepare,
1085 .enter = omap2_pm_enter,
1086 .finish = omap2_pm_finish,
1087 -diff -urNp linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c
1088 ---- linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c 2009-12-02 22:51:21.000000000 -0500
1089 -+++ linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c 2011-11-12 12:46:42.000000000 -0500
1090 +diff -urNp linux-2.6.32.46/arch/arm/mach-omap2/pm34xx.c linux-2.6.32.46/arch/arm/mach-omap2/pm34xx.c
1091 +--- linux-2.6.32.46/arch/arm/mach-omap2/pm34xx.c 2011-03-27 14:31:47.000000000 -0400
1092 ++++ linux-2.6.32.46/arch/arm/mach-omap2/pm34xx.c 2011-04-17 15:56:45.000000000 -0400
1093 @@ -401,7 +401,7 @@ static void omap3_pm_end(void)
1094 return;
1095 }
1096 @@ -544,9 +544,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c linux-2.6.32.48/arch/arm
1097 .begin = omap3_pm_begin,
1098 .end = omap3_pm_end,
1099 .prepare = omap3_pm_prepare,
1100 -diff -urNp linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c
1101 ---- linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c 2009-12-02 22:51:21.000000000 -0500
1102 -+++ linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c 2011-11-12 12:46:42.000000000 -0500
1103 +diff -urNp linux-2.6.32.46/arch/arm/mach-pnx4008/pm.c linux-2.6.32.46/arch/arm/mach-pnx4008/pm.c
1104 +--- linux-2.6.32.46/arch/arm/mach-pnx4008/pm.c 2011-03-27 14:31:47.000000000 -0400
1105 ++++ linux-2.6.32.46/arch/arm/mach-pnx4008/pm.c 2011-04-17 15:56:45.000000000 -0400
1106 @@ -116,7 +116,7 @@ static int pnx4008_pm_valid(suspend_stat
1107 (state == PM_SUSPEND_MEM);
1108 }
1109 @@ -556,9 +556,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c linux-2.6.32.48/arch/arm/m
1110 .enter = pnx4008_pm_enter,
1111 .valid = pnx4008_pm_valid,
1112 };
1113 -diff -urNp linux-2.6.32.48/arch/arm/mach-pxa/pm.c linux-2.6.32.48/arch/arm/mach-pxa/pm.c
1114 ---- linux-2.6.32.48/arch/arm/mach-pxa/pm.c 2009-12-02 22:51:21.000000000 -0500
1115 -+++ linux-2.6.32.48/arch/arm/mach-pxa/pm.c 2011-11-12 12:46:42.000000000 -0500
1116 +diff -urNp linux-2.6.32.46/arch/arm/mach-pxa/pm.c linux-2.6.32.46/arch/arm/mach-pxa/pm.c
1117 +--- linux-2.6.32.46/arch/arm/mach-pxa/pm.c 2011-03-27 14:31:47.000000000 -0400
1118 ++++ linux-2.6.32.46/arch/arm/mach-pxa/pm.c 2011-04-17 15:56:45.000000000 -0400
1119 @@ -95,7 +95,7 @@ void pxa_pm_finish(void)
1120 pxa_cpu_pm_fns->finish();
1121 }
1122 @@ -568,9 +568,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-pxa/pm.c linux-2.6.32.48/arch/arm/mach-
1123 .valid = pxa_pm_valid,
1124 .enter = pxa_pm_enter,
1125 .prepare = pxa_pm_prepare,
1126 -diff -urNp linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c
1127 ---- linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c 2009-12-02 22:51:21.000000000 -0500
1128 -+++ linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c 2011-11-12 12:46:42.000000000 -0500
1129 +diff -urNp linux-2.6.32.46/arch/arm/mach-pxa/sharpsl_pm.c linux-2.6.32.46/arch/arm/mach-pxa/sharpsl_pm.c
1130 +--- linux-2.6.32.46/arch/arm/mach-pxa/sharpsl_pm.c 2011-03-27 14:31:47.000000000 -0400
1131 ++++ linux-2.6.32.46/arch/arm/mach-pxa/sharpsl_pm.c 2011-04-17 15:56:45.000000000 -0400
1132 @@ -891,7 +891,7 @@ static void sharpsl_apm_get_power_status
1133 }
1134
1135 @@ -580,9 +580,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c linux-2.6.32.48/arch/a
1136 .prepare = pxa_pm_prepare,
1137 .finish = pxa_pm_finish,
1138 .enter = corgi_pxa_pm_enter,
1139 -diff -urNp linux-2.6.32.48/arch/arm/mach-sa1100/pm.c linux-2.6.32.48/arch/arm/mach-sa1100/pm.c
1140 ---- linux-2.6.32.48/arch/arm/mach-sa1100/pm.c 2009-12-02 22:51:21.000000000 -0500
1141 -+++ linux-2.6.32.48/arch/arm/mach-sa1100/pm.c 2011-11-12 12:46:42.000000000 -0500
1142 +diff -urNp linux-2.6.32.46/arch/arm/mach-sa1100/pm.c linux-2.6.32.46/arch/arm/mach-sa1100/pm.c
1143 +--- linux-2.6.32.46/arch/arm/mach-sa1100/pm.c 2011-03-27 14:31:47.000000000 -0400
1144 ++++ linux-2.6.32.46/arch/arm/mach-sa1100/pm.c 2011-04-17 15:56:45.000000000 -0400
1145 @@ -120,7 +120,7 @@ unsigned long sleep_phys_sp(void *sp)
1146 return virt_to_phys(sp);
1147 }
1148 @@ -592,9 +592,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mach-sa1100/pm.c linux-2.6.32.48/arch/arm/ma
1149 .enter = sa11x0_pm_enter,
1150 .valid = suspend_valid_only_mem,
1151 };
1152 -diff -urNp linux-2.6.32.48/arch/arm/mm/fault.c linux-2.6.32.48/arch/arm/mm/fault.c
1153 ---- linux-2.6.32.48/arch/arm/mm/fault.c 2011-11-12 12:44:28.000000000 -0500
1154 -+++ linux-2.6.32.48/arch/arm/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
1155 +diff -urNp linux-2.6.32.46/arch/arm/mm/fault.c linux-2.6.32.46/arch/arm/mm/fault.c
1156 +--- linux-2.6.32.46/arch/arm/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
1157 ++++ linux-2.6.32.46/arch/arm/mm/fault.c 2011-04-17 15:56:45.000000000 -0400
1158 @@ -166,6 +166,13 @@ __do_user_fault(struct task_struct *tsk,
1159 }
1160 #endif
1161 @@ -643,9 +643,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mm/fault.c linux-2.6.32.48/arch/arm/mm/fault
1162 /*
1163 * First Level Translation Fault Handler
1164 *
1165 -diff -urNp linux-2.6.32.48/arch/arm/mm/mmap.c linux-2.6.32.48/arch/arm/mm/mmap.c
1166 ---- linux-2.6.32.48/arch/arm/mm/mmap.c 2011-11-12 12:44:28.000000000 -0500
1167 -+++ linux-2.6.32.48/arch/arm/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
1168 +diff -urNp linux-2.6.32.46/arch/arm/mm/mmap.c linux-2.6.32.46/arch/arm/mm/mmap.c
1169 +--- linux-2.6.32.46/arch/arm/mm/mmap.c 2011-03-27 14:31:47.000000000 -0400
1170 ++++ linux-2.6.32.46/arch/arm/mm/mmap.c 2011-04-17 15:56:45.000000000 -0400
1171 @@ -63,6 +63,10 @@ arch_get_unmapped_area(struct file *filp
1172 if (len > TASK_SIZE)
1173 return -ENOMEM;
1174 @@ -695,9 +695,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mm/mmap.c linux-2.6.32.48/arch/arm/mm/mmap.c
1175 /*
1176 * Remember the place where we stopped the search:
1177 */
1178 -diff -urNp linux-2.6.32.48/arch/arm/plat-s3c/pm.c linux-2.6.32.48/arch/arm/plat-s3c/pm.c
1179 ---- linux-2.6.32.48/arch/arm/plat-s3c/pm.c 2009-12-02 22:51:21.000000000 -0500
1180 -+++ linux-2.6.32.48/arch/arm/plat-s3c/pm.c 2011-11-12 12:46:42.000000000 -0500
1181 +diff -urNp linux-2.6.32.46/arch/arm/plat-s3c/pm.c linux-2.6.32.46/arch/arm/plat-s3c/pm.c
1182 +--- linux-2.6.32.46/arch/arm/plat-s3c/pm.c 2011-03-27 14:31:47.000000000 -0400
1183 ++++ linux-2.6.32.46/arch/arm/plat-s3c/pm.c 2011-04-17 15:56:45.000000000 -0400
1184 @@ -355,7 +355,7 @@ static void s3c_pm_finish(void)
1185 s3c_pm_check_cleanup();
1186 }
1187 @@ -707,9 +707,9 @@ diff -urNp linux-2.6.32.48/arch/arm/plat-s3c/pm.c linux-2.6.32.48/arch/arm/plat-
1188 .enter = s3c_pm_enter,
1189 .prepare = s3c_pm_prepare,
1190 .finish = s3c_pm_finish,
1191 -diff -urNp linux-2.6.32.48/arch/avr32/include/asm/elf.h linux-2.6.32.48/arch/avr32/include/asm/elf.h
1192 ---- linux-2.6.32.48/arch/avr32/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
1193 -+++ linux-2.6.32.48/arch/avr32/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
1194 +diff -urNp linux-2.6.32.46/arch/avr32/include/asm/elf.h linux-2.6.32.46/arch/avr32/include/asm/elf.h
1195 +--- linux-2.6.32.46/arch/avr32/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
1196 ++++ linux-2.6.32.46/arch/avr32/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
1197 @@ -85,8 +85,14 @@ typedef struct user_fpu_struct elf_fpreg
1198 the loader. We need to make sure that it is out of the way of the program
1199 that it will "exec", and that there is sufficient room for the brk. */
1200 @@ -726,9 +726,9 @@ diff -urNp linux-2.6.32.48/arch/avr32/include/asm/elf.h linux-2.6.32.48/arch/avr
1201
1202 /* This yields a mask that user programs can use to figure out what
1203 instruction set this CPU supports. This could be done in user space,
1204 -diff -urNp linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h
1205 ---- linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
1206 -+++ linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
1207 +diff -urNp linux-2.6.32.46/arch/avr32/include/asm/kmap_types.h linux-2.6.32.46/arch/avr32/include/asm/kmap_types.h
1208 +--- linux-2.6.32.46/arch/avr32/include/asm/kmap_types.h 2011-03-27 14:31:47.000000000 -0400
1209 ++++ linux-2.6.32.46/arch/avr32/include/asm/kmap_types.h 2011-04-17 15:56:45.000000000 -0400
1210 @@ -22,7 +22,8 @@ D(10) KM_IRQ0,
1211 D(11) KM_IRQ1,
1212 D(12) KM_SOFTIRQ0,
1213 @@ -739,9 +739,9 @@ diff -urNp linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h linux-2.6.32.48/a
1214 };
1215
1216 #undef D
1217 -diff -urNp linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c
1218 ---- linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c 2009-12-02 22:51:21.000000000 -0500
1219 -+++ linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c 2011-11-12 12:46:42.000000000 -0500
1220 +diff -urNp linux-2.6.32.46/arch/avr32/mach-at32ap/pm.c linux-2.6.32.46/arch/avr32/mach-at32ap/pm.c
1221 +--- linux-2.6.32.46/arch/avr32/mach-at32ap/pm.c 2011-03-27 14:31:47.000000000 -0400
1222 ++++ linux-2.6.32.46/arch/avr32/mach-at32ap/pm.c 2011-04-17 15:56:45.000000000 -0400
1223 @@ -176,7 +176,7 @@ out:
1224 return 0;
1225 }
1226 @@ -751,9 +751,9 @@ diff -urNp linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c linux-2.6.32.48/arch/avr3
1227 .valid = avr32_pm_valid_state,
1228 .enter = avr32_pm_enter,
1229 };
1230 -diff -urNp linux-2.6.32.48/arch/avr32/mm/fault.c linux-2.6.32.48/arch/avr32/mm/fault.c
1231 ---- linux-2.6.32.48/arch/avr32/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
1232 -+++ linux-2.6.32.48/arch/avr32/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
1233 +diff -urNp linux-2.6.32.46/arch/avr32/mm/fault.c linux-2.6.32.46/arch/avr32/mm/fault.c
1234 +--- linux-2.6.32.46/arch/avr32/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
1235 ++++ linux-2.6.32.46/arch/avr32/mm/fault.c 2011-04-17 15:56:45.000000000 -0400
1236 @@ -41,6 +41,23 @@ static inline int notify_page_fault(stru
1237
1238 int exception_trace = 1;
1239 @@ -795,9 +795,9 @@ diff -urNp linux-2.6.32.48/arch/avr32/mm/fault.c linux-2.6.32.48/arch/avr32/mm/f
1240 if (exception_trace && printk_ratelimit())
1241 printk("%s%s[%d]: segfault at %08lx pc %08lx "
1242 "sp %08lx ecr %lu\n",
1243 -diff -urNp linux-2.6.32.48/arch/blackfin/kernel/kgdb.c linux-2.6.32.48/arch/blackfin/kernel/kgdb.c
1244 ---- linux-2.6.32.48/arch/blackfin/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
1245 -+++ linux-2.6.32.48/arch/blackfin/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
1246 +diff -urNp linux-2.6.32.46/arch/blackfin/kernel/kgdb.c linux-2.6.32.46/arch/blackfin/kernel/kgdb.c
1247 +--- linux-2.6.32.46/arch/blackfin/kernel/kgdb.c 2011-03-27 14:31:47.000000000 -0400
1248 ++++ linux-2.6.32.46/arch/blackfin/kernel/kgdb.c 2011-04-17 15:56:45.000000000 -0400
1249 @@ -428,7 +428,7 @@ int kgdb_arch_handle_exception(int vecto
1250 return -1; /* this means that we do not want to exit from the handler */
1251 }
1252 @@ -807,9 +807,9 @@ diff -urNp linux-2.6.32.48/arch/blackfin/kernel/kgdb.c linux-2.6.32.48/arch/blac
1253 .gdb_bpt_instr = {0xa1},
1254 #ifdef CONFIG_SMP
1255 .flags = KGDB_HW_BREAKPOINT|KGDB_THR_PROC_SWAP,
1256 -diff -urNp linux-2.6.32.48/arch/blackfin/mach-common/pm.c linux-2.6.32.48/arch/blackfin/mach-common/pm.c
1257 ---- linux-2.6.32.48/arch/blackfin/mach-common/pm.c 2009-12-02 22:51:21.000000000 -0500
1258 -+++ linux-2.6.32.48/arch/blackfin/mach-common/pm.c 2011-11-12 12:46:42.000000000 -0500
1259 +diff -urNp linux-2.6.32.46/arch/blackfin/mach-common/pm.c linux-2.6.32.46/arch/blackfin/mach-common/pm.c
1260 +--- linux-2.6.32.46/arch/blackfin/mach-common/pm.c 2011-03-27 14:31:47.000000000 -0400
1261 ++++ linux-2.6.32.46/arch/blackfin/mach-common/pm.c 2011-04-17 15:56:45.000000000 -0400
1262 @@ -255,7 +255,7 @@ static int bfin_pm_enter(suspend_state_t
1263 return 0;
1264 }
1265 @@ -819,9 +819,9 @@ diff -urNp linux-2.6.32.48/arch/blackfin/mach-common/pm.c linux-2.6.32.48/arch/b
1266 .enter = bfin_pm_enter,
1267 .valid = bfin_pm_valid,
1268 };
1269 -diff -urNp linux-2.6.32.48/arch/frv/include/asm/kmap_types.h linux-2.6.32.48/arch/frv/include/asm/kmap_types.h
1270 ---- linux-2.6.32.48/arch/frv/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
1271 -+++ linux-2.6.32.48/arch/frv/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
1272 +diff -urNp linux-2.6.32.46/arch/frv/include/asm/kmap_types.h linux-2.6.32.46/arch/frv/include/asm/kmap_types.h
1273 +--- linux-2.6.32.46/arch/frv/include/asm/kmap_types.h 2011-03-27 14:31:47.000000000 -0400
1274 ++++ linux-2.6.32.46/arch/frv/include/asm/kmap_types.h 2011-04-17 15:56:45.000000000 -0400
1275 @@ -23,6 +23,7 @@ enum km_type {
1276 KM_IRQ1,
1277 KM_SOFTIRQ0,
1278 @@ -830,9 +830,9 @@ diff -urNp linux-2.6.32.48/arch/frv/include/asm/kmap_types.h linux-2.6.32.48/arc
1279 KM_TYPE_NR
1280 };
1281
1282 -diff -urNp linux-2.6.32.48/arch/frv/mm/elf-fdpic.c linux-2.6.32.48/arch/frv/mm/elf-fdpic.c
1283 ---- linux-2.6.32.48/arch/frv/mm/elf-fdpic.c 2009-12-02 22:51:21.000000000 -0500
1284 -+++ linux-2.6.32.48/arch/frv/mm/elf-fdpic.c 2011-11-12 12:46:42.000000000 -0500
1285 +diff -urNp linux-2.6.32.46/arch/frv/mm/elf-fdpic.c linux-2.6.32.46/arch/frv/mm/elf-fdpic.c
1286 +--- linux-2.6.32.46/arch/frv/mm/elf-fdpic.c 2011-03-27 14:31:47.000000000 -0400
1287 ++++ linux-2.6.32.46/arch/frv/mm/elf-fdpic.c 2011-04-17 15:56:45.000000000 -0400
1288 @@ -73,8 +73,7 @@ unsigned long arch_get_unmapped_area(str
1289 if (addr) {
1290 addr = PAGE_ALIGN(addr);
1291 @@ -861,9 +861,9 @@ diff -urNp linux-2.6.32.48/arch/frv/mm/elf-fdpic.c linux-2.6.32.48/arch/frv/mm/e
1292 goto success;
1293 addr = vma->vm_end;
1294 }
1295 -diff -urNp linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c
1296 ---- linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c 2009-12-02 22:51:21.000000000 -0500
1297 -+++ linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c 2011-11-12 12:46:42.000000000 -0500
1298 +diff -urNp linux-2.6.32.46/arch/ia64/hp/common/hwsw_iommu.c linux-2.6.32.46/arch/ia64/hp/common/hwsw_iommu.c
1299 +--- linux-2.6.32.46/arch/ia64/hp/common/hwsw_iommu.c 2011-03-27 14:31:47.000000000 -0400
1300 ++++ linux-2.6.32.46/arch/ia64/hp/common/hwsw_iommu.c 2011-04-17 15:56:45.000000000 -0400
1301 @@ -17,7 +17,7 @@
1302 #include <linux/swiotlb.h>
1303 #include <asm/machvec.h>
1304 @@ -882,9 +882,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c linux-2.6.32.48/arch
1305 {
1306 if (use_swiotlb(dev))
1307 return &swiotlb_dma_ops;
1308 -diff -urNp linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c
1309 ---- linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c 2011-11-12 12:44:28.000000000 -0500
1310 -+++ linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c 2011-11-12 12:46:42.000000000 -0500
1311 +diff -urNp linux-2.6.32.46/arch/ia64/hp/common/sba_iommu.c linux-2.6.32.46/arch/ia64/hp/common/sba_iommu.c
1312 +--- linux-2.6.32.46/arch/ia64/hp/common/sba_iommu.c 2011-03-27 14:31:47.000000000 -0400
1313 ++++ linux-2.6.32.46/arch/ia64/hp/common/sba_iommu.c 2011-04-17 15:56:45.000000000 -0400
1314 @@ -2097,7 +2097,7 @@ static struct acpi_driver acpi_sba_ioc_d
1315 },
1316 };
1317 @@ -903,9 +903,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c linux-2.6.32.48/arch/
1318 .alloc_coherent = sba_alloc_coherent,
1319 .free_coherent = sba_free_coherent,
1320 .map_page = sba_map_page,
1321 -diff -urNp linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c
1322 ---- linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c 2009-12-02 22:51:21.000000000 -0500
1323 -+++ linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c 2011-11-12 12:46:42.000000000 -0500
1324 +diff -urNp linux-2.6.32.46/arch/ia64/ia32/binfmt_elf32.c linux-2.6.32.46/arch/ia64/ia32/binfmt_elf32.c
1325 +--- linux-2.6.32.46/arch/ia64/ia32/binfmt_elf32.c 2011-03-27 14:31:47.000000000 -0400
1326 ++++ linux-2.6.32.46/arch/ia64/ia32/binfmt_elf32.c 2011-04-17 15:56:45.000000000 -0400
1327 @@ -45,6 +45,13 @@ randomize_stack_top(unsigned long stack_
1328
1329 #define elf_read_implies_exec(ex, have_pt_gnu_stack) (!(have_pt_gnu_stack))
1330 @@ -920,9 +920,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c linux-2.6.32.48/arch/ia
1331 /* Ugly but avoids duplication */
1332 #include "../../../fs/binfmt_elf.c"
1333
1334 -diff -urNp linux-2.6.32.48/arch/ia64/ia32/ia32priv.h linux-2.6.32.48/arch/ia64/ia32/ia32priv.h
1335 ---- linux-2.6.32.48/arch/ia64/ia32/ia32priv.h 2009-12-02 22:51:21.000000000 -0500
1336 -+++ linux-2.6.32.48/arch/ia64/ia32/ia32priv.h 2011-11-12 12:46:42.000000000 -0500
1337 +diff -urNp linux-2.6.32.46/arch/ia64/ia32/ia32priv.h linux-2.6.32.46/arch/ia64/ia32/ia32priv.h
1338 +--- linux-2.6.32.46/arch/ia64/ia32/ia32priv.h 2011-03-27 14:31:47.000000000 -0400
1339 ++++ linux-2.6.32.46/arch/ia64/ia32/ia32priv.h 2011-04-17 15:56:45.000000000 -0400
1340 @@ -296,7 +296,14 @@ typedef struct compat_siginfo {
1341 #define ELF_DATA ELFDATA2LSB
1342 #define ELF_ARCH EM_386
1343 @@ -939,9 +939,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/ia32/ia32priv.h linux-2.6.32.48/arch/ia64/i
1344 #define IA32_GATE_OFFSET IA32_PAGE_OFFSET
1345 #define IA32_GATE_END IA32_PAGE_OFFSET + PAGE_SIZE
1346
1347 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h
1348 ---- linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
1349 -+++ linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
1350 +diff -urNp linux-2.6.32.46/arch/ia64/include/asm/dma-mapping.h linux-2.6.32.46/arch/ia64/include/asm/dma-mapping.h
1351 +--- linux-2.6.32.46/arch/ia64/include/asm/dma-mapping.h 2011-03-27 14:31:47.000000000 -0400
1352 ++++ linux-2.6.32.46/arch/ia64/include/asm/dma-mapping.h 2011-04-17 15:56:45.000000000 -0400
1353 @@ -12,7 +12,7 @@
1354
1355 #define ARCH_HAS_DMA_GET_REQUIRED_MASK
1356 @@ -985,9 +985,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h linux-2.6.32.48/a
1357 return ops->dma_supported(dev, mask);
1358 }
1359
1360 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/elf.h linux-2.6.32.48/arch/ia64/include/asm/elf.h
1361 ---- linux-2.6.32.48/arch/ia64/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
1362 -+++ linux-2.6.32.48/arch/ia64/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
1363 +diff -urNp linux-2.6.32.46/arch/ia64/include/asm/elf.h linux-2.6.32.46/arch/ia64/include/asm/elf.h
1364 +--- linux-2.6.32.46/arch/ia64/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
1365 ++++ linux-2.6.32.46/arch/ia64/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
1366 @@ -43,6 +43,13 @@
1367 */
1368 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL)
1369 @@ -1002,9 +1002,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/elf.h linux-2.6.32.48/arch/ia64
1370 #define PT_IA_64_UNWIND 0x70000001
1371
1372 /* IA-64 relocations: */
1373 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/machvec.h linux-2.6.32.48/arch/ia64/include/asm/machvec.h
1374 ---- linux-2.6.32.48/arch/ia64/include/asm/machvec.h 2009-12-02 22:51:21.000000000 -0500
1375 -+++ linux-2.6.32.48/arch/ia64/include/asm/machvec.h 2011-11-12 12:46:42.000000000 -0500
1376 +diff -urNp linux-2.6.32.46/arch/ia64/include/asm/machvec.h linux-2.6.32.46/arch/ia64/include/asm/machvec.h
1377 +--- linux-2.6.32.46/arch/ia64/include/asm/machvec.h 2011-03-27 14:31:47.000000000 -0400
1378 ++++ linux-2.6.32.46/arch/ia64/include/asm/machvec.h 2011-04-17 15:56:45.000000000 -0400
1379 @@ -45,7 +45,7 @@ typedef void ia64_mv_kernel_launch_event
1380 /* DMA-mapping interface: */
1381 typedef void ia64_mv_dma_init (void);
1382 @@ -1023,9 +1023,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/machvec.h linux-2.6.32.48/arch/
1383
1384 /*
1385 * Define default versions so we can extend machvec for new platforms without having
1386 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/pgtable.h linux-2.6.32.48/arch/ia64/include/asm/pgtable.h
1387 ---- linux-2.6.32.48/arch/ia64/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
1388 -+++ linux-2.6.32.48/arch/ia64/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
1389 +diff -urNp linux-2.6.32.46/arch/ia64/include/asm/pgtable.h linux-2.6.32.46/arch/ia64/include/asm/pgtable.h
1390 +--- linux-2.6.32.46/arch/ia64/include/asm/pgtable.h 2011-03-27 14:31:47.000000000 -0400
1391 ++++ linux-2.6.32.46/arch/ia64/include/asm/pgtable.h 2011-04-17 15:56:45.000000000 -0400
1392 @@ -12,7 +12,7 @@
1393 * David Mosberger-Tang <davidm@××××××.com>
1394 */
1395 @@ -1053,9 +1053,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/pgtable.h linux-2.6.32.48/arch/
1396 #define PAGE_GATE __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
1397 #define PAGE_KERNEL __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)
1398 #define PAGE_KERNELRX __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
1399 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/spinlock.h linux-2.6.32.48/arch/ia64/include/asm/spinlock.h
1400 ---- linux-2.6.32.48/arch/ia64/include/asm/spinlock.h 2009-12-02 22:51:21.000000000 -0500
1401 -+++ linux-2.6.32.48/arch/ia64/include/asm/spinlock.h 2011-11-12 12:46:42.000000000 -0500
1402 +diff -urNp linux-2.6.32.46/arch/ia64/include/asm/spinlock.h linux-2.6.32.46/arch/ia64/include/asm/spinlock.h
1403 +--- linux-2.6.32.46/arch/ia64/include/asm/spinlock.h 2011-03-27 14:31:47.000000000 -0400
1404 ++++ linux-2.6.32.46/arch/ia64/include/asm/spinlock.h 2011-04-17 15:56:45.000000000 -0400
1405 @@ -72,7 +72,7 @@ static __always_inline void __ticket_spi
1406 unsigned short *p = (unsigned short *)&lock->lock + 1, tmp;
1407
1408 @@ -1065,9 +1065,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/spinlock.h linux-2.6.32.48/arch
1409 }
1410
1411 static __always_inline void __ticket_spin_unlock_wait(raw_spinlock_t *lock)
1412 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/uaccess.h linux-2.6.32.48/arch/ia64/include/asm/uaccess.h
1413 ---- linux-2.6.32.48/arch/ia64/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
1414 -+++ linux-2.6.32.48/arch/ia64/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
1415 +diff -urNp linux-2.6.32.46/arch/ia64/include/asm/uaccess.h linux-2.6.32.46/arch/ia64/include/asm/uaccess.h
1416 +--- linux-2.6.32.46/arch/ia64/include/asm/uaccess.h 2011-03-27 14:31:47.000000000 -0400
1417 ++++ linux-2.6.32.46/arch/ia64/include/asm/uaccess.h 2011-04-17 15:56:45.000000000 -0400
1418 @@ -257,7 +257,7 @@ __copy_from_user (void *to, const void _
1419 const void *__cu_from = (from); \
1420 long __cu_len = (n); \
1421 @@ -1086,9 +1086,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/uaccess.h linux-2.6.32.48/arch/
1422 __cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \
1423 __cu_len; \
1424 })
1425 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c
1426 ---- linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c 2009-12-02 22:51:21.000000000 -0500
1427 -+++ linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c 2011-11-12 12:46:42.000000000 -0500
1428 +diff -urNp linux-2.6.32.46/arch/ia64/kernel/dma-mapping.c linux-2.6.32.46/arch/ia64/kernel/dma-mapping.c
1429 +--- linux-2.6.32.46/arch/ia64/kernel/dma-mapping.c 2011-03-27 14:31:47.000000000 -0400
1430 ++++ linux-2.6.32.46/arch/ia64/kernel/dma-mapping.c 2011-04-17 15:56:45.000000000 -0400
1431 @@ -3,7 +3,7 @@
1432 /* Set this to 1 if there is a HW IOMMU in the system */
1433 int iommu_detected __read_mostly;
1434 @@ -1107,9 +1107,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c linux-2.6.32.48/arch/i
1435 {
1436 return dma_ops;
1437 }
1438 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/module.c linux-2.6.32.48/arch/ia64/kernel/module.c
1439 ---- linux-2.6.32.48/arch/ia64/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
1440 -+++ linux-2.6.32.48/arch/ia64/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
1441 +diff -urNp linux-2.6.32.46/arch/ia64/kernel/module.c linux-2.6.32.46/arch/ia64/kernel/module.c
1442 +--- linux-2.6.32.46/arch/ia64/kernel/module.c 2011-03-27 14:31:47.000000000 -0400
1443 ++++ linux-2.6.32.46/arch/ia64/kernel/module.c 2011-04-17 15:56:45.000000000 -0400
1444 @@ -315,8 +315,7 @@ module_alloc (unsigned long size)
1445 void
1446 module_free (struct module *mod, void *module_region)
1447 @@ -1198,9 +1198,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/module.c linux-2.6.32.48/arch/ia64/k
1448 mod->arch.gp = gp;
1449 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
1450 }
1451 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/pci-dma.c linux-2.6.32.48/arch/ia64/kernel/pci-dma.c
1452 ---- linux-2.6.32.48/arch/ia64/kernel/pci-dma.c 2009-12-02 22:51:21.000000000 -0500
1453 -+++ linux-2.6.32.48/arch/ia64/kernel/pci-dma.c 2011-11-12 12:46:42.000000000 -0500
1454 +diff -urNp linux-2.6.32.46/arch/ia64/kernel/pci-dma.c linux-2.6.32.46/arch/ia64/kernel/pci-dma.c
1455 +--- linux-2.6.32.46/arch/ia64/kernel/pci-dma.c 2011-03-27 14:31:47.000000000 -0400
1456 ++++ linux-2.6.32.46/arch/ia64/kernel/pci-dma.c 2011-04-17 15:56:45.000000000 -0400
1457 @@ -43,7 +43,7 @@ struct device fallback_dev = {
1458 .dma_mask = &fallback_dev.coherent_dma_mask,
1459 };
1460 @@ -1252,9 +1252,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/pci-dma.c linux-2.6.32.48/arch/ia64/
1461
1462 /*
1463 * The order of these functions is important for
1464 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c
1465 ---- linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c 2009-12-02 22:51:21.000000000 -0500
1466 -+++ linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c 2011-11-12 12:46:42.000000000 -0500
1467 +diff -urNp linux-2.6.32.46/arch/ia64/kernel/pci-swiotlb.c linux-2.6.32.46/arch/ia64/kernel/pci-swiotlb.c
1468 +--- linux-2.6.32.46/arch/ia64/kernel/pci-swiotlb.c 2011-03-27 14:31:47.000000000 -0400
1469 ++++ linux-2.6.32.46/arch/ia64/kernel/pci-swiotlb.c 2011-04-17 15:56:45.000000000 -0400
1470 @@ -21,7 +21,7 @@ static void *ia64_swiotlb_alloc_coherent
1471 return swiotlb_alloc_coherent(dev, size, dma_handle, gfp);
1472 }
1473 @@ -1264,9 +1264,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c linux-2.6.32.48/arch/i
1474 .alloc_coherent = ia64_swiotlb_alloc_coherent,
1475 .free_coherent = swiotlb_free_coherent,
1476 .map_page = swiotlb_map_page,
1477 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c
1478 ---- linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c 2011-11-12 12:44:28.000000000 -0500
1479 -+++ linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c 2011-11-12 12:46:42.000000000 -0500
1480 +diff -urNp linux-2.6.32.46/arch/ia64/kernel/sys_ia64.c linux-2.6.32.46/arch/ia64/kernel/sys_ia64.c
1481 +--- linux-2.6.32.46/arch/ia64/kernel/sys_ia64.c 2011-03-27 14:31:47.000000000 -0400
1482 ++++ linux-2.6.32.46/arch/ia64/kernel/sys_ia64.c 2011-04-17 15:56:45.000000000 -0400
1483 @@ -43,6 +43,13 @@ arch_get_unmapped_area (struct file *fil
1484 if (REGION_NUMBER(addr) == RGN_HPAGE)
1485 addr = 0;
1486 @@ -1299,9 +1299,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c linux-2.6.32.48/arch/ia64
1487 /* Remember the address where we stopped this search: */
1488 mm->free_area_cache = addr + len;
1489 return addr;
1490 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/topology.c linux-2.6.32.48/arch/ia64/kernel/topology.c
1491 ---- linux-2.6.32.48/arch/ia64/kernel/topology.c 2009-12-02 22:51:21.000000000 -0500
1492 -+++ linux-2.6.32.48/arch/ia64/kernel/topology.c 2011-11-12 12:46:42.000000000 -0500
1493 +diff -urNp linux-2.6.32.46/arch/ia64/kernel/topology.c linux-2.6.32.46/arch/ia64/kernel/topology.c
1494 +--- linux-2.6.32.46/arch/ia64/kernel/topology.c 2011-03-27 14:31:47.000000000 -0400
1495 ++++ linux-2.6.32.46/arch/ia64/kernel/topology.c 2011-04-17 15:56:45.000000000 -0400
1496 @@ -282,7 +282,7 @@ static ssize_t cache_show(struct kobject
1497 return ret;
1498 }
1499 @@ -1311,9 +1311,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/topology.c linux-2.6.32.48/arch/ia64
1500 .show = cache_show
1501 };
1502
1503 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S
1504 ---- linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S 2009-12-02 22:51:21.000000000 -0500
1505 -+++ linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S 2011-11-12 12:46:42.000000000 -0500
1506 +diff -urNp linux-2.6.32.46/arch/ia64/kernel/vmlinux.lds.S linux-2.6.32.46/arch/ia64/kernel/vmlinux.lds.S
1507 +--- linux-2.6.32.46/arch/ia64/kernel/vmlinux.lds.S 2011-03-27 14:31:47.000000000 -0400
1508 ++++ linux-2.6.32.46/arch/ia64/kernel/vmlinux.lds.S 2011-04-17 15:56:45.000000000 -0400
1509 @@ -190,7 +190,7 @@ SECTIONS
1510 /* Per-cpu data: */
1511 . = ALIGN(PERCPU_PAGE_SIZE);
1512 @@ -1323,9 +1323,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S linux-2.6.32.48/arch/i
1513 . = __phys_per_cpu_start + PERCPU_PAGE_SIZE; /* ensure percpu data fits
1514 * into percpu page size
1515 */
1516 -diff -urNp linux-2.6.32.48/arch/ia64/mm/fault.c linux-2.6.32.48/arch/ia64/mm/fault.c
1517 ---- linux-2.6.32.48/arch/ia64/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
1518 -+++ linux-2.6.32.48/arch/ia64/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
1519 +diff -urNp linux-2.6.32.46/arch/ia64/mm/fault.c linux-2.6.32.46/arch/ia64/mm/fault.c
1520 +--- linux-2.6.32.46/arch/ia64/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
1521 ++++ linux-2.6.32.46/arch/ia64/mm/fault.c 2011-04-17 15:56:45.000000000 -0400
1522 @@ -72,6 +72,23 @@ mapped_kernel_page_is_present (unsigned
1523 return pte_present(pte);
1524 }
1525 @@ -1375,9 +1375,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/mm/fault.c linux-2.6.32.48/arch/ia64/mm/fau
1526 survive:
1527 /*
1528 * If for any reason at all we couldn't handle the fault, make
1529 -diff -urNp linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c
1530 ---- linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c 2009-12-02 22:51:21.000000000 -0500
1531 -+++ linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c 2011-11-12 12:46:42.000000000 -0500
1532 +diff -urNp linux-2.6.32.46/arch/ia64/mm/hugetlbpage.c linux-2.6.32.46/arch/ia64/mm/hugetlbpage.c
1533 +--- linux-2.6.32.46/arch/ia64/mm/hugetlbpage.c 2011-03-27 14:31:47.000000000 -0400
1534 ++++ linux-2.6.32.46/arch/ia64/mm/hugetlbpage.c 2011-04-17 15:56:45.000000000 -0400
1535 @@ -172,7 +172,7 @@ unsigned long hugetlb_get_unmapped_area(
1536 /* At this point: (!vmm || addr < vmm->vm_end). */
1537 if (REGION_OFFSET(addr) + len > RGN_MAP_LIMIT)
1538 @@ -1387,9 +1387,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c linux-2.6.32.48/arch/ia64/
1539 return addr;
1540 addr = ALIGN(vmm->vm_end, HPAGE_SIZE);
1541 }
1542 -diff -urNp linux-2.6.32.48/arch/ia64/mm/init.c linux-2.6.32.48/arch/ia64/mm/init.c
1543 ---- linux-2.6.32.48/arch/ia64/mm/init.c 2009-12-02 22:51:21.000000000 -0500
1544 -+++ linux-2.6.32.48/arch/ia64/mm/init.c 2011-11-12 12:46:42.000000000 -0500
1545 +diff -urNp linux-2.6.32.46/arch/ia64/mm/init.c linux-2.6.32.46/arch/ia64/mm/init.c
1546 +--- linux-2.6.32.46/arch/ia64/mm/init.c 2011-03-27 14:31:47.000000000 -0400
1547 ++++ linux-2.6.32.46/arch/ia64/mm/init.c 2011-04-17 15:56:45.000000000 -0400
1548 @@ -122,6 +122,19 @@ ia64_init_addr_space (void)
1549 vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
1550 vma->vm_end = vma->vm_start + PAGE_SIZE;
1551 @@ -1410,9 +1410,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/mm/init.c linux-2.6.32.48/arch/ia64/mm/init
1552 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
1553 down_write(&current->mm->mmap_sem);
1554 if (insert_vm_struct(current->mm, vma)) {
1555 -diff -urNp linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c
1556 ---- linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c 2009-12-02 22:51:21.000000000 -0500
1557 -+++ linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c 2011-11-12 12:46:42.000000000 -0500
1558 +diff -urNp linux-2.6.32.46/arch/ia64/sn/pci/pci_dma.c linux-2.6.32.46/arch/ia64/sn/pci/pci_dma.c
1559 +--- linux-2.6.32.46/arch/ia64/sn/pci/pci_dma.c 2011-03-27 14:31:47.000000000 -0400
1560 ++++ linux-2.6.32.46/arch/ia64/sn/pci/pci_dma.c 2011-04-17 15:56:45.000000000 -0400
1561 @@ -464,7 +464,7 @@ int sn_pci_legacy_write(struct pci_bus *
1562 return ret;
1563 }
1564 @@ -1422,9 +1422,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c linux-2.6.32.48/arch/ia64/
1565 .alloc_coherent = sn_dma_alloc_coherent,
1566 .free_coherent = sn_dma_free_coherent,
1567 .map_page = sn_dma_map_page,
1568 -diff -urNp linux-2.6.32.48/arch/m32r/lib/usercopy.c linux-2.6.32.48/arch/m32r/lib/usercopy.c
1569 ---- linux-2.6.32.48/arch/m32r/lib/usercopy.c 2009-12-02 22:51:21.000000000 -0500
1570 -+++ linux-2.6.32.48/arch/m32r/lib/usercopy.c 2011-11-12 12:46:42.000000000 -0500
1571 +diff -urNp linux-2.6.32.46/arch/m32r/lib/usercopy.c linux-2.6.32.46/arch/m32r/lib/usercopy.c
1572 +--- linux-2.6.32.46/arch/m32r/lib/usercopy.c 2011-03-27 14:31:47.000000000 -0400
1573 ++++ linux-2.6.32.46/arch/m32r/lib/usercopy.c 2011-04-17 15:56:45.000000000 -0400
1574 @@ -14,6 +14,9 @@
1575 unsigned long
1576 __generic_copy_to_user(void __user *to, const void *from, unsigned long n)
1577 @@ -1445,9 +1445,9 @@ diff -urNp linux-2.6.32.48/arch/m32r/lib/usercopy.c linux-2.6.32.48/arch/m32r/li
1578 prefetchw(to);
1579 if (access_ok(VERIFY_READ, from, n))
1580 __copy_user_zeroing(to,from,n);
1581 -diff -urNp linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c
1582 ---- linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c 2009-12-02 22:51:21.000000000 -0500
1583 -+++ linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c 2011-11-12 12:46:42.000000000 -0500
1584 +diff -urNp linux-2.6.32.46/arch/mips/alchemy/devboards/pm.c linux-2.6.32.46/arch/mips/alchemy/devboards/pm.c
1585 +--- linux-2.6.32.46/arch/mips/alchemy/devboards/pm.c 2011-03-27 14:31:47.000000000 -0400
1586 ++++ linux-2.6.32.46/arch/mips/alchemy/devboards/pm.c 2011-04-17 15:56:45.000000000 -0400
1587 @@ -78,7 +78,7 @@ static void db1x_pm_end(void)
1588
1589 }
1590 @@ -1457,9 +1457,9 @@ diff -urNp linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c linux-2.6.32.48/arch
1591 .valid = suspend_valid_only_mem,
1592 .begin = db1x_pm_begin,
1593 .enter = db1x_pm_enter,
1594 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/elf.h linux-2.6.32.48/arch/mips/include/asm/elf.h
1595 ---- linux-2.6.32.48/arch/mips/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
1596 -+++ linux-2.6.32.48/arch/mips/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
1597 +diff -urNp linux-2.6.32.46/arch/mips/include/asm/elf.h linux-2.6.32.46/arch/mips/include/asm/elf.h
1598 +--- linux-2.6.32.46/arch/mips/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
1599 ++++ linux-2.6.32.46/arch/mips/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
1600 @@ -368,4 +368,11 @@ extern int dump_task_fpu(struct task_str
1601 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
1602 #endif
1603 @@ -1472,9 +1472,9 @@ diff -urNp linux-2.6.32.48/arch/mips/include/asm/elf.h linux-2.6.32.48/arch/mips
1604 +#endif
1605 +
1606 #endif /* _ASM_ELF_H */
1607 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/page.h linux-2.6.32.48/arch/mips/include/asm/page.h
1608 ---- linux-2.6.32.48/arch/mips/include/asm/page.h 2009-12-02 22:51:21.000000000 -0500
1609 -+++ linux-2.6.32.48/arch/mips/include/asm/page.h 2011-11-12 12:46:42.000000000 -0500
1610 +diff -urNp linux-2.6.32.46/arch/mips/include/asm/page.h linux-2.6.32.46/arch/mips/include/asm/page.h
1611 +--- linux-2.6.32.46/arch/mips/include/asm/page.h 2011-03-27 14:31:47.000000000 -0400
1612 ++++ linux-2.6.32.46/arch/mips/include/asm/page.h 2011-04-17 15:56:45.000000000 -0400
1613 @@ -93,7 +93,7 @@ extern void copy_user_highpage(struct pa
1614 #ifdef CONFIG_CPU_MIPS32
1615 typedef struct { unsigned long pte_low, pte_high; } pte_t;
1616 @@ -1484,9 +1484,9 @@ diff -urNp linux-2.6.32.48/arch/mips/include/asm/page.h linux-2.6.32.48/arch/mip
1617 #else
1618 typedef struct { unsigned long long pte; } pte_t;
1619 #define pte_val(x) ((x).pte)
1620 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/reboot.h linux-2.6.32.48/arch/mips/include/asm/reboot.h
1621 ---- linux-2.6.32.48/arch/mips/include/asm/reboot.h 2009-12-02 22:51:21.000000000 -0500
1622 -+++ linux-2.6.32.48/arch/mips/include/asm/reboot.h 2011-11-12 12:46:42.000000000 -0500
1623 +diff -urNp linux-2.6.32.46/arch/mips/include/asm/reboot.h linux-2.6.32.46/arch/mips/include/asm/reboot.h
1624 +--- linux-2.6.32.46/arch/mips/include/asm/reboot.h 2011-03-27 14:31:47.000000000 -0400
1625 ++++ linux-2.6.32.46/arch/mips/include/asm/reboot.h 2011-08-21 17:35:02.000000000 -0400
1626 @@ -9,7 +9,7 @@
1627 #ifndef _ASM_REBOOT_H
1628 #define _ASM_REBOOT_H
1629 @@ -1497,9 +1497,9 @@ diff -urNp linux-2.6.32.48/arch/mips/include/asm/reboot.h linux-2.6.32.48/arch/m
1630 +extern void (*__noreturn _machine_halt)(void);
1631
1632 #endif /* _ASM_REBOOT_H */
1633 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/system.h linux-2.6.32.48/arch/mips/include/asm/system.h
1634 ---- linux-2.6.32.48/arch/mips/include/asm/system.h 2009-12-02 22:51:21.000000000 -0500
1635 -+++ linux-2.6.32.48/arch/mips/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
1636 +diff -urNp linux-2.6.32.46/arch/mips/include/asm/system.h linux-2.6.32.46/arch/mips/include/asm/system.h
1637 +--- linux-2.6.32.46/arch/mips/include/asm/system.h 2011-03-27 14:31:47.000000000 -0400
1638 ++++ linux-2.6.32.46/arch/mips/include/asm/system.h 2011-04-17 15:56:45.000000000 -0400
1639 @@ -230,6 +230,6 @@ extern void per_cpu_trap_init(void);
1640 */
1641 #define __ARCH_WANT_UNLOCKED_CTXSW
1642 @@ -1508,9 +1508,9 @@ diff -urNp linux-2.6.32.48/arch/mips/include/asm/system.h linux-2.6.32.48/arch/m
1643 +#define arch_align_stack(x) ((x) & ~0xfUL)
1644
1645 #endif /* _ASM_SYSTEM_H */
1646 -diff -urNp linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c
1647 ---- linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c 2009-12-02 22:51:21.000000000 -0500
1648 -+++ linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c 2011-11-12 12:46:42.000000000 -0500
1649 +diff -urNp linux-2.6.32.46/arch/mips/kernel/binfmt_elfn32.c linux-2.6.32.46/arch/mips/kernel/binfmt_elfn32.c
1650 +--- linux-2.6.32.46/arch/mips/kernel/binfmt_elfn32.c 2011-03-27 14:31:47.000000000 -0400
1651 ++++ linux-2.6.32.46/arch/mips/kernel/binfmt_elfn32.c 2011-04-17 15:56:45.000000000 -0400
1652 @@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
1653 #undef ELF_ET_DYN_BASE
1654 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
1655 @@ -1525,9 +1525,9 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c linux-2.6.32.48/arch
1656 #include <asm/processor.h>
1657 #include <linux/module.h>
1658 #include <linux/elfcore.h>
1659 -diff -urNp linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c
1660 ---- linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c 2009-12-02 22:51:21.000000000 -0500
1661 -+++ linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c 2011-11-12 12:46:42.000000000 -0500
1662 +diff -urNp linux-2.6.32.46/arch/mips/kernel/binfmt_elfo32.c linux-2.6.32.46/arch/mips/kernel/binfmt_elfo32.c
1663 +--- linux-2.6.32.46/arch/mips/kernel/binfmt_elfo32.c 2011-03-27 14:31:47.000000000 -0400
1664 ++++ linux-2.6.32.46/arch/mips/kernel/binfmt_elfo32.c 2011-04-17 15:56:45.000000000 -0400
1665 @@ -52,6 +52,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
1666 #undef ELF_ET_DYN_BASE
1667 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
1668 @@ -1542,9 +1542,9 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c linux-2.6.32.48/arch
1669 #include <asm/processor.h>
1670
1671 /*
1672 -diff -urNp linux-2.6.32.48/arch/mips/kernel/kgdb.c linux-2.6.32.48/arch/mips/kernel/kgdb.c
1673 ---- linux-2.6.32.48/arch/mips/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
1674 -+++ linux-2.6.32.48/arch/mips/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
1675 +diff -urNp linux-2.6.32.46/arch/mips/kernel/kgdb.c linux-2.6.32.46/arch/mips/kernel/kgdb.c
1676 +--- linux-2.6.32.46/arch/mips/kernel/kgdb.c 2011-03-27 14:31:47.000000000 -0400
1677 ++++ linux-2.6.32.46/arch/mips/kernel/kgdb.c 2011-04-17 15:56:45.000000000 -0400
1678 @@ -245,6 +245,7 @@ int kgdb_arch_handle_exception(int vecto
1679 return -1;
1680 }
1681 @@ -1553,9 +1553,9 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/kgdb.c linux-2.6.32.48/arch/mips/ker
1682 struct kgdb_arch arch_kgdb_ops;
1683
1684 /*
1685 -diff -urNp linux-2.6.32.48/arch/mips/kernel/process.c linux-2.6.32.48/arch/mips/kernel/process.c
1686 ---- linux-2.6.32.48/arch/mips/kernel/process.c 2009-12-02 22:51:21.000000000 -0500
1687 -+++ linux-2.6.32.48/arch/mips/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
1688 +diff -urNp linux-2.6.32.46/arch/mips/kernel/process.c linux-2.6.32.46/arch/mips/kernel/process.c
1689 +--- linux-2.6.32.46/arch/mips/kernel/process.c 2011-03-27 14:31:47.000000000 -0400
1690 ++++ linux-2.6.32.46/arch/mips/kernel/process.c 2011-04-17 15:56:45.000000000 -0400
1691 @@ -470,15 +470,3 @@ unsigned long get_wchan(struct task_stru
1692 out:
1693 return pc;
1694 @@ -1572,9 +1572,9 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/process.c linux-2.6.32.48/arch/mips/
1695 -
1696 - return sp & ALMASK;
1697 -}
1698 -diff -urNp linux-2.6.32.48/arch/mips/kernel/reset.c linux-2.6.32.48/arch/mips/kernel/reset.c
1699 ---- linux-2.6.32.48/arch/mips/kernel/reset.c 2009-12-02 22:51:21.000000000 -0500
1700 -+++ linux-2.6.32.48/arch/mips/kernel/reset.c 2011-11-12 12:46:42.000000000 -0500
1701 +diff -urNp linux-2.6.32.46/arch/mips/kernel/reset.c linux-2.6.32.46/arch/mips/kernel/reset.c
1702 +--- linux-2.6.32.46/arch/mips/kernel/reset.c 2011-03-27 14:31:47.000000000 -0400
1703 ++++ linux-2.6.32.46/arch/mips/kernel/reset.c 2011-08-21 17:35:26.000000000 -0400
1704 @@ -19,8 +19,8 @@
1705 * So handle all using function pointers to machine specific
1706 * functions.
1707 @@ -1606,9 +1606,9 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/reset.c linux-2.6.32.48/arch/mips/ke
1708 pm_power_off();
1709 + BUG();
1710 }
1711 -diff -urNp linux-2.6.32.48/arch/mips/kernel/syscall.c linux-2.6.32.48/arch/mips/kernel/syscall.c
1712 ---- linux-2.6.32.48/arch/mips/kernel/syscall.c 2011-11-12 12:44:28.000000000 -0500
1713 -+++ linux-2.6.32.48/arch/mips/kernel/syscall.c 2011-11-12 12:46:42.000000000 -0500
1714 +diff -urNp linux-2.6.32.46/arch/mips/kernel/syscall.c linux-2.6.32.46/arch/mips/kernel/syscall.c
1715 +--- linux-2.6.32.46/arch/mips/kernel/syscall.c 2011-03-27 14:31:47.000000000 -0400
1716 ++++ linux-2.6.32.46/arch/mips/kernel/syscall.c 2011-04-17 15:56:45.000000000 -0400
1717 @@ -102,17 +102,21 @@ unsigned long arch_get_unmapped_area(str
1718 do_color_align = 0;
1719 if (filp || (flags & MAP_SHARED))
1720 @@ -1643,9 +1643,9 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/syscall.c linux-2.6.32.48/arch/mips/
1721 return addr;
1722 addr = vmm->vm_end;
1723 if (do_color_align)
1724 -diff -urNp linux-2.6.32.48/arch/mips/Makefile linux-2.6.32.48/arch/mips/Makefile
1725 ---- linux-2.6.32.48/arch/mips/Makefile 2009-12-02 22:51:21.000000000 -0500
1726 -+++ linux-2.6.32.48/arch/mips/Makefile 2011-11-12 12:46:42.000000000 -0500
1727 +diff -urNp linux-2.6.32.46/arch/mips/Makefile linux-2.6.32.46/arch/mips/Makefile
1728 +--- linux-2.6.32.46/arch/mips/Makefile 2011-03-27 14:31:47.000000000 -0400
1729 ++++ linux-2.6.32.46/arch/mips/Makefile 2011-08-21 19:26:52.000000000 -0400
1730 @@ -51,6 +51,8 @@ endif
1731 cflags-y := -ffunction-sections
1732 cflags-y += $(call cc-option, -mno-check-zero-division)
1733 @@ -1655,9 +1655,9 @@ diff -urNp linux-2.6.32.48/arch/mips/Makefile linux-2.6.32.48/arch/mips/Makefile
1734 ifdef CONFIG_32BIT
1735 ld-emul = $(32bit-emul)
1736 vmlinux-32 = vmlinux
1737 -diff -urNp linux-2.6.32.48/arch/mips/mm/fault.c linux-2.6.32.48/arch/mips/mm/fault.c
1738 ---- linux-2.6.32.48/arch/mips/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
1739 -+++ linux-2.6.32.48/arch/mips/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
1740 +diff -urNp linux-2.6.32.46/arch/mips/mm/fault.c linux-2.6.32.46/arch/mips/mm/fault.c
1741 +--- linux-2.6.32.46/arch/mips/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
1742 ++++ linux-2.6.32.46/arch/mips/mm/fault.c 2011-04-17 15:56:45.000000000 -0400
1743 @@ -26,6 +26,23 @@
1744 #include <asm/ptrace.h>
1745 #include <asm/highmem.h> /* For VMALLOC_END */
1746 @@ -1682,9 +1682,9 @@ diff -urNp linux-2.6.32.48/arch/mips/mm/fault.c linux-2.6.32.48/arch/mips/mm/fau
1747 /*
1748 * This routine handles page faults. It determines the address,
1749 * and the problem, and then passes it off to one of the appropriate
1750 -diff -urNp linux-2.6.32.48/arch/parisc/include/asm/elf.h linux-2.6.32.48/arch/parisc/include/asm/elf.h
1751 ---- linux-2.6.32.48/arch/parisc/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
1752 -+++ linux-2.6.32.48/arch/parisc/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
1753 +diff -urNp linux-2.6.32.46/arch/parisc/include/asm/elf.h linux-2.6.32.46/arch/parisc/include/asm/elf.h
1754 +--- linux-2.6.32.46/arch/parisc/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
1755 ++++ linux-2.6.32.46/arch/parisc/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
1756 @@ -343,6 +343,13 @@ struct pt_regs; /* forward declaration..
1757
1758 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x01000000)
1759 @@ -1699,9 +1699,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/include/asm/elf.h linux-2.6.32.48/arch/pa
1760 /* This yields a mask that user programs can use to figure out what
1761 instruction set this CPU supports. This could be done in user space,
1762 but it's not easy, and we've already done it here. */
1763 -diff -urNp linux-2.6.32.48/arch/parisc/include/asm/pgtable.h linux-2.6.32.48/arch/parisc/include/asm/pgtable.h
1764 ---- linux-2.6.32.48/arch/parisc/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
1765 -+++ linux-2.6.32.48/arch/parisc/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
1766 +diff -urNp linux-2.6.32.46/arch/parisc/include/asm/pgtable.h linux-2.6.32.46/arch/parisc/include/asm/pgtable.h
1767 +--- linux-2.6.32.46/arch/parisc/include/asm/pgtable.h 2011-03-27 14:31:47.000000000 -0400
1768 ++++ linux-2.6.32.46/arch/parisc/include/asm/pgtable.h 2011-04-17 15:56:45.000000000 -0400
1769 @@ -207,6 +207,17 @@
1770 #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED)
1771 #define PAGE_COPY PAGE_EXECREAD
1772 @@ -1720,9 +1720,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/include/asm/pgtable.h linux-2.6.32.48/arc
1773 #define PAGE_KERNEL __pgprot(_PAGE_KERNEL)
1774 #define PAGE_KERNEL_RO __pgprot(_PAGE_KERNEL & ~_PAGE_WRITE)
1775 #define PAGE_KERNEL_UNC __pgprot(_PAGE_KERNEL | _PAGE_NO_CACHE)
1776 -diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/parisc/kernel/module.c
1777 ---- linux-2.6.32.48/arch/parisc/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
1778 -+++ linux-2.6.32.48/arch/parisc/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
1779 +diff -urNp linux-2.6.32.46/arch/parisc/kernel/module.c linux-2.6.32.46/arch/parisc/kernel/module.c
1780 +--- linux-2.6.32.46/arch/parisc/kernel/module.c 2011-03-27 14:31:47.000000000 -0400
1781 ++++ linux-2.6.32.46/arch/parisc/kernel/module.c 2011-04-17 15:56:45.000000000 -0400
1782 @@ -95,16 +95,38 @@
1783
1784 /* three functions to determine where in the module core
1785 @@ -1823,9 +1823,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/pari
1786
1787 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n",
1788 me->arch.unwind_section, table, end, gp);
1789 -diff -urNp linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c
1790 ---- linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c 2011-11-12 12:44:28.000000000 -0500
1791 -+++ linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c 2011-11-12 12:46:42.000000000 -0500
1792 +diff -urNp linux-2.6.32.46/arch/parisc/kernel/sys_parisc.c linux-2.6.32.46/arch/parisc/kernel/sys_parisc.c
1793 +--- linux-2.6.32.46/arch/parisc/kernel/sys_parisc.c 2011-03-27 14:31:47.000000000 -0400
1794 ++++ linux-2.6.32.46/arch/parisc/kernel/sys_parisc.c 2011-04-17 15:56:45.000000000 -0400
1795 @@ -43,7 +43,7 @@ static unsigned long get_unshared_area(u
1796 /* At this point: (!vma || addr < vma->vm_end). */
1797 if (TASK_SIZE - len < addr)
1798 @@ -1853,9 +1853,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c linux-2.6.32.48/arch/
1799
1800 if (filp) {
1801 addr = get_shared_area(filp->f_mapping, addr, len, pgoff);
1802 -diff -urNp linux-2.6.32.48/arch/parisc/kernel/traps.c linux-2.6.32.48/arch/parisc/kernel/traps.c
1803 ---- linux-2.6.32.48/arch/parisc/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
1804 -+++ linux-2.6.32.48/arch/parisc/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
1805 +diff -urNp linux-2.6.32.46/arch/parisc/kernel/traps.c linux-2.6.32.46/arch/parisc/kernel/traps.c
1806 +--- linux-2.6.32.46/arch/parisc/kernel/traps.c 2011-03-27 14:31:47.000000000 -0400
1807 ++++ linux-2.6.32.46/arch/parisc/kernel/traps.c 2011-04-17 15:56:45.000000000 -0400
1808 @@ -733,9 +733,7 @@ void notrace handle_interruption(int cod
1809
1810 down_read(&current->mm->mmap_sem);
1811 @@ -1867,9 +1867,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/traps.c linux-2.6.32.48/arch/paris
1812 fault_address = regs->iaoq[0];
1813 fault_space = regs->iasq[0];
1814
1815 -diff -urNp linux-2.6.32.48/arch/parisc/mm/fault.c linux-2.6.32.48/arch/parisc/mm/fault.c
1816 ---- linux-2.6.32.48/arch/parisc/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
1817 -+++ linux-2.6.32.48/arch/parisc/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
1818 +diff -urNp linux-2.6.32.46/arch/parisc/mm/fault.c linux-2.6.32.46/arch/parisc/mm/fault.c
1819 +--- linux-2.6.32.46/arch/parisc/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
1820 ++++ linux-2.6.32.46/arch/parisc/mm/fault.c 2011-04-17 15:56:45.000000000 -0400
1821 @@ -15,6 +15,7 @@
1822 #include <linux/sched.h>
1823 #include <linux/interrupt.h>
1824 @@ -2039,9 +2039,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/mm/fault.c linux-2.6.32.48/arch/parisc/mm
1825
1826 /*
1827 * If for any reason at all we couldn't handle the fault, make
1828 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/device.h linux-2.6.32.48/arch/powerpc/include/asm/device.h
1829 ---- linux-2.6.32.48/arch/powerpc/include/asm/device.h 2009-12-02 22:51:21.000000000 -0500
1830 -+++ linux-2.6.32.48/arch/powerpc/include/asm/device.h 2011-11-12 12:46:42.000000000 -0500
1831 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/device.h linux-2.6.32.46/arch/powerpc/include/asm/device.h
1832 +--- linux-2.6.32.46/arch/powerpc/include/asm/device.h 2011-03-27 14:31:47.000000000 -0400
1833 ++++ linux-2.6.32.46/arch/powerpc/include/asm/device.h 2011-04-17 15:56:45.000000000 -0400
1834 @@ -14,7 +14,7 @@ struct dev_archdata {
1835 struct device_node *of_node;
1836
1837 @@ -2051,9 +2051,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/device.h linux-2.6.32.48/arc
1838
1839 /*
1840 * When an iommu is in use, dma_data is used as a ptr to the base of the
1841 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h
1842 ---- linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
1843 -+++ linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
1844 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/dma-mapping.h linux-2.6.32.46/arch/powerpc/include/asm/dma-mapping.h
1845 +--- linux-2.6.32.46/arch/powerpc/include/asm/dma-mapping.h 2011-03-27 14:31:47.000000000 -0400
1846 ++++ linux-2.6.32.46/arch/powerpc/include/asm/dma-mapping.h 2011-04-17 15:56:45.000000000 -0400
1847 @@ -69,9 +69,9 @@ static inline unsigned long device_to_ma
1848 #ifdef CONFIG_PPC64
1849 extern struct dma_map_ops dma_iommu_ops;
1850 @@ -2120,9 +2120,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h linux-2.6.32.4
1851
1852 if (dma_ops->mapping_error)
1853 return dma_ops->mapping_error(dev, dma_addr);
1854 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/elf.h linux-2.6.32.48/arch/powerpc/include/asm/elf.h
1855 ---- linux-2.6.32.48/arch/powerpc/include/asm/elf.h 2011-11-12 12:44:28.000000000 -0500
1856 -+++ linux-2.6.32.48/arch/powerpc/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
1857 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/elf.h linux-2.6.32.46/arch/powerpc/include/asm/elf.h
1858 +--- linux-2.6.32.46/arch/powerpc/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
1859 ++++ linux-2.6.32.46/arch/powerpc/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
1860 @@ -179,8 +179,19 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E
1861 the loader. We need to make sure that it is out of the way of the program
1862 that it will "exec", and that there is sufficient room for the brk. */
1863 @@ -2155,9 +2155,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/elf.h linux-2.6.32.48/arch/p
1864 #endif /* __KERNEL__ */
1865
1866 /*
1867 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/iommu.h linux-2.6.32.48/arch/powerpc/include/asm/iommu.h
1868 ---- linux-2.6.32.48/arch/powerpc/include/asm/iommu.h 2009-12-02 22:51:21.000000000 -0500
1869 -+++ linux-2.6.32.48/arch/powerpc/include/asm/iommu.h 2011-11-12 12:46:42.000000000 -0500
1870 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/iommu.h linux-2.6.32.46/arch/powerpc/include/asm/iommu.h
1871 +--- linux-2.6.32.46/arch/powerpc/include/asm/iommu.h 2011-03-27 14:31:47.000000000 -0400
1872 ++++ linux-2.6.32.46/arch/powerpc/include/asm/iommu.h 2011-04-17 15:56:45.000000000 -0400
1873 @@ -116,6 +116,9 @@ extern void iommu_init_early_iSeries(voi
1874 extern void iommu_init_early_dart(void);
1875 extern void iommu_init_early_pasemi(void);
1876 @@ -2168,9 +2168,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/iommu.h linux-2.6.32.48/arch
1877 #ifdef CONFIG_PCI
1878 extern void pci_iommu_init(void);
1879 extern void pci_direct_iommu_init(void);
1880 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h
1881 ---- linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
1882 -+++ linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
1883 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/kmap_types.h linux-2.6.32.46/arch/powerpc/include/asm/kmap_types.h
1884 +--- linux-2.6.32.46/arch/powerpc/include/asm/kmap_types.h 2011-03-27 14:31:47.000000000 -0400
1885 ++++ linux-2.6.32.46/arch/powerpc/include/asm/kmap_types.h 2011-04-17 15:56:45.000000000 -0400
1886 @@ -26,6 +26,7 @@ enum km_type {
1887 KM_SOFTIRQ1,
1888 KM_PPC_SYNC_PAGE,
1889 @@ -2179,9 +2179,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h linux-2.6.32.48
1890 KM_TYPE_NR
1891 };
1892
1893 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page_64.h linux-2.6.32.48/arch/powerpc/include/asm/page_64.h
1894 ---- linux-2.6.32.48/arch/powerpc/include/asm/page_64.h 2009-12-02 22:51:21.000000000 -0500
1895 -+++ linux-2.6.32.48/arch/powerpc/include/asm/page_64.h 2011-11-12 12:46:42.000000000 -0500
1896 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/page_64.h linux-2.6.32.46/arch/powerpc/include/asm/page_64.h
1897 +--- linux-2.6.32.46/arch/powerpc/include/asm/page_64.h 2011-03-27 14:31:47.000000000 -0400
1898 ++++ linux-2.6.32.46/arch/powerpc/include/asm/page_64.h 2011-04-17 15:56:45.000000000 -0400
1899 @@ -180,15 +180,18 @@ do { \
1900 * stack by default, so in the absense of a PT_GNU_STACK program header
1901 * we turn execute permission off.
1902 @@ -2203,9 +2203,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page_64.h linux-2.6.32.48/ar
1903
1904 #include <asm-generic/getorder.h>
1905
1906 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page.h linux-2.6.32.48/arch/powerpc/include/asm/page.h
1907 ---- linux-2.6.32.48/arch/powerpc/include/asm/page.h 2009-12-02 22:51:21.000000000 -0500
1908 -+++ linux-2.6.32.48/arch/powerpc/include/asm/page.h 2011-11-12 12:46:42.000000000 -0500
1909 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/page.h linux-2.6.32.46/arch/powerpc/include/asm/page.h
1910 +--- linux-2.6.32.46/arch/powerpc/include/asm/page.h 2011-03-27 14:31:47.000000000 -0400
1911 ++++ linux-2.6.32.46/arch/powerpc/include/asm/page.h 2011-08-21 16:07:39.000000000 -0400
1912 @@ -116,8 +116,9 @@ extern phys_addr_t kernstart_addr;
1913 * and needs to be executable. This means the whole heap ends
1914 * up being executable.
1915 @@ -2228,9 +2228,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page.h linux-2.6.32.48/arch/
1916 #ifndef __ASSEMBLY__
1917
1918 #undef STRICT_MM_TYPECHECKS
1919 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pci.h linux-2.6.32.48/arch/powerpc/include/asm/pci.h
1920 ---- linux-2.6.32.48/arch/powerpc/include/asm/pci.h 2009-12-02 22:51:21.000000000 -0500
1921 -+++ linux-2.6.32.48/arch/powerpc/include/asm/pci.h 2011-11-12 12:46:42.000000000 -0500
1922 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/pci.h linux-2.6.32.46/arch/powerpc/include/asm/pci.h
1923 +--- linux-2.6.32.46/arch/powerpc/include/asm/pci.h 2011-03-27 14:31:47.000000000 -0400
1924 ++++ linux-2.6.32.46/arch/powerpc/include/asm/pci.h 2011-04-17 15:56:45.000000000 -0400
1925 @@ -65,8 +65,8 @@ static inline int pci_get_legacy_ide_irq
1926 }
1927
1928 @@ -2242,9 +2242,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pci.h linux-2.6.32.48/arch/p
1929 #else /* CONFIG_PCI */
1930 #define set_pci_dma_ops(d)
1931 #define get_pci_dma_ops() NULL
1932 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h
1933 ---- linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
1934 -+++ linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
1935 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/pgtable.h linux-2.6.32.46/arch/powerpc/include/asm/pgtable.h
1936 +--- linux-2.6.32.46/arch/powerpc/include/asm/pgtable.h 2011-03-27 14:31:47.000000000 -0400
1937 ++++ linux-2.6.32.46/arch/powerpc/include/asm/pgtable.h 2011-04-17 15:56:45.000000000 -0400
1938 @@ -2,6 +2,7 @@
1939 #define _ASM_POWERPC_PGTABLE_H
1940 #ifdef __KERNEL__
1941 @@ -2253,9 +2253,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h linux-2.6.32.48/ar
1942 #ifndef __ASSEMBLY__
1943 #include <asm/processor.h> /* For TASK_SIZE */
1944 #include <asm/mmu.h>
1945 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h
1946 ---- linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h 2009-12-02 22:51:21.000000000 -0500
1947 -+++ linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h 2011-11-12 12:46:42.000000000 -0500
1948 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/pte-hash32.h linux-2.6.32.46/arch/powerpc/include/asm/pte-hash32.h
1949 +--- linux-2.6.32.46/arch/powerpc/include/asm/pte-hash32.h 2011-03-27 14:31:47.000000000 -0400
1950 ++++ linux-2.6.32.46/arch/powerpc/include/asm/pte-hash32.h 2011-04-17 15:56:45.000000000 -0400
1951 @@ -21,6 +21,7 @@
1952 #define _PAGE_FILE 0x004 /* when !present: nonlinear file mapping */
1953 #define _PAGE_USER 0x004 /* usermode access allowed */
1954 @@ -2264,9 +2264,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h linux-2.6.32.48
1955 #define _PAGE_COHERENT 0x010 /* M: enforce memory coherence (SMP systems) */
1956 #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */
1957 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */
1958 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h
1959 ---- linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h 2009-12-02 22:51:21.000000000 -0500
1960 -+++ linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h 2011-11-12 12:46:42.000000000 -0500
1961 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/ptrace.h linux-2.6.32.46/arch/powerpc/include/asm/ptrace.h
1962 +--- linux-2.6.32.46/arch/powerpc/include/asm/ptrace.h 2011-03-27 14:31:47.000000000 -0400
1963 ++++ linux-2.6.32.46/arch/powerpc/include/asm/ptrace.h 2011-08-21 15:53:58.000000000 -0400
1964 @@ -103,7 +103,7 @@ extern unsigned long profile_pc(struct p
1965 } while(0)
1966
1967 @@ -2276,9 +2276,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h linux-2.6.32.48/arc
1968 extern int ptrace_put_reg(struct task_struct *task, int regno,
1969 unsigned long data);
1970
1971 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/reg.h linux-2.6.32.48/arch/powerpc/include/asm/reg.h
1972 ---- linux-2.6.32.48/arch/powerpc/include/asm/reg.h 2011-11-12 12:44:28.000000000 -0500
1973 -+++ linux-2.6.32.48/arch/powerpc/include/asm/reg.h 2011-11-12 12:46:42.000000000 -0500
1974 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/reg.h linux-2.6.32.46/arch/powerpc/include/asm/reg.h
1975 +--- linux-2.6.32.46/arch/powerpc/include/asm/reg.h 2011-03-27 14:31:47.000000000 -0400
1976 ++++ linux-2.6.32.46/arch/powerpc/include/asm/reg.h 2011-04-17 15:56:45.000000000 -0400
1977 @@ -191,6 +191,7 @@
1978 #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */
1979 #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
1980 @@ -2287,9 +2287,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/reg.h linux-2.6.32.48/arch/p
1981 #define DSISR_PROTFAULT 0x08000000 /* protection fault */
1982 #define DSISR_ISSTORE 0x02000000 /* access was a store */
1983 #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */
1984 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h
1985 ---- linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h 2009-12-02 22:51:21.000000000 -0500
1986 -+++ linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h 2011-11-12 12:46:42.000000000 -0500
1987 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/swiotlb.h linux-2.6.32.46/arch/powerpc/include/asm/swiotlb.h
1988 +--- linux-2.6.32.46/arch/powerpc/include/asm/swiotlb.h 2011-03-27 14:31:47.000000000 -0400
1989 ++++ linux-2.6.32.46/arch/powerpc/include/asm/swiotlb.h 2011-04-17 15:56:45.000000000 -0400
1990 @@ -13,7 +13,7 @@
1991
1992 #include <linux/swiotlb.h>
1993 @@ -2299,9 +2299,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h linux-2.6.32.48/ar
1994
1995 static inline void dma_mark_clean(void *addr, size_t size) {}
1996
1997 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/system.h linux-2.6.32.48/arch/powerpc/include/asm/system.h
1998 ---- linux-2.6.32.48/arch/powerpc/include/asm/system.h 2011-11-12 12:44:28.000000000 -0500
1999 -+++ linux-2.6.32.48/arch/powerpc/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
2000 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/system.h linux-2.6.32.46/arch/powerpc/include/asm/system.h
2001 +--- linux-2.6.32.46/arch/powerpc/include/asm/system.h 2011-03-27 14:31:47.000000000 -0400
2002 ++++ linux-2.6.32.46/arch/powerpc/include/asm/system.h 2011-04-17 15:56:45.000000000 -0400
2003 @@ -531,7 +531,7 @@ __cmpxchg_local(volatile void *ptr, unsi
2004 #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
2005 #endif
2006 @@ -2311,9 +2311,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/system.h linux-2.6.32.48/arc
2007
2008 /* Used in very early kernel initialization. */
2009 extern unsigned long reloc_offset(void);
2010 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h
2011 ---- linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
2012 -+++ linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
2013 +diff -urNp linux-2.6.32.46/arch/powerpc/include/asm/uaccess.h linux-2.6.32.46/arch/powerpc/include/asm/uaccess.h
2014 +--- linux-2.6.32.46/arch/powerpc/include/asm/uaccess.h 2011-03-27 14:31:47.000000000 -0400
2015 ++++ linux-2.6.32.46/arch/powerpc/include/asm/uaccess.h 2011-04-17 15:56:45.000000000 -0400
2016 @@ -13,6 +13,8 @@
2017 #define VERIFY_READ 0
2018 #define VERIFY_WRITE 1
2019 @@ -2491,9 +2491,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h linux-2.6.32.48/ar
2020 extern unsigned long __clear_user(void __user *addr, unsigned long size);
2021
2022 static inline unsigned long clear_user(void __user *addr, unsigned long size)
2023 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c
2024 ---- linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c 2009-12-02 22:51:21.000000000 -0500
2025 -+++ linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c 2011-11-12 12:46:42.000000000 -0500
2026 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/cacheinfo.c linux-2.6.32.46/arch/powerpc/kernel/cacheinfo.c
2027 +--- linux-2.6.32.46/arch/powerpc/kernel/cacheinfo.c 2011-03-27 14:31:47.000000000 -0400
2028 ++++ linux-2.6.32.46/arch/powerpc/kernel/cacheinfo.c 2011-04-17 15:56:45.000000000 -0400
2029 @@ -642,7 +642,7 @@ static struct kobj_attribute *cache_inde
2030 &cache_assoc_attr,
2031 };
2032 @@ -2503,9 +2503,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c linux-2.6.32.48/arch/
2033 .show = cache_index_show,
2034 };
2035
2036 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma.c linux-2.6.32.48/arch/powerpc/kernel/dma.c
2037 ---- linux-2.6.32.48/arch/powerpc/kernel/dma.c 2009-12-02 22:51:21.000000000 -0500
2038 -+++ linux-2.6.32.48/arch/powerpc/kernel/dma.c 2011-11-12 12:46:42.000000000 -0500
2039 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/dma.c linux-2.6.32.46/arch/powerpc/kernel/dma.c
2040 +--- linux-2.6.32.46/arch/powerpc/kernel/dma.c 2011-03-27 14:31:47.000000000 -0400
2041 ++++ linux-2.6.32.46/arch/powerpc/kernel/dma.c 2011-04-17 15:56:45.000000000 -0400
2042 @@ -134,7 +134,7 @@ static inline void dma_direct_sync_singl
2043 }
2044 #endif
2045 @@ -2515,9 +2515,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma.c linux-2.6.32.48/arch/powerp
2046 .alloc_coherent = dma_direct_alloc_coherent,
2047 .free_coherent = dma_direct_free_coherent,
2048 .map_sg = dma_direct_map_sg,
2049 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c
2050 ---- linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c 2009-12-02 22:51:21.000000000 -0500
2051 -+++ linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c 2011-11-12 12:46:42.000000000 -0500
2052 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/dma-iommu.c linux-2.6.32.46/arch/powerpc/kernel/dma-iommu.c
2053 +--- linux-2.6.32.46/arch/powerpc/kernel/dma-iommu.c 2011-03-27 14:31:47.000000000 -0400
2054 ++++ linux-2.6.32.46/arch/powerpc/kernel/dma-iommu.c 2011-04-17 15:56:45.000000000 -0400
2055 @@ -70,7 +70,7 @@ static void dma_iommu_unmap_sg(struct de
2056 }
2057
2058 @@ -2527,9 +2527,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c linux-2.6.32.48/arch/
2059 {
2060 struct iommu_table *tbl = get_iommu_table_base(dev);
2061
2062 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c
2063 ---- linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c 2009-12-02 22:51:21.000000000 -0500
2064 -+++ linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c 2011-11-12 12:46:42.000000000 -0500
2065 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/dma-swiotlb.c linux-2.6.32.46/arch/powerpc/kernel/dma-swiotlb.c
2066 +--- linux-2.6.32.46/arch/powerpc/kernel/dma-swiotlb.c 2011-03-27 14:31:47.000000000 -0400
2067 ++++ linux-2.6.32.46/arch/powerpc/kernel/dma-swiotlb.c 2011-04-17 15:56:45.000000000 -0400
2068 @@ -31,7 +31,7 @@ unsigned int ppc_swiotlb_enable;
2069 * map_page, and unmap_page on highmem, use normal dma_ops
2070 * for everything else.
2071 @@ -2539,9 +2539,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c linux-2.6.32.48/arc
2072 .alloc_coherent = dma_direct_alloc_coherent,
2073 .free_coherent = dma_direct_free_coherent,
2074 .map_sg = swiotlb_map_sg_attrs,
2075 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S
2076 ---- linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S 2009-12-02 22:51:21.000000000 -0500
2077 -+++ linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S 2011-11-12 12:46:42.000000000 -0500
2078 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/exceptions-64e.S linux-2.6.32.46/arch/powerpc/kernel/exceptions-64e.S
2079 +--- linux-2.6.32.46/arch/powerpc/kernel/exceptions-64e.S 2011-03-27 14:31:47.000000000 -0400
2080 ++++ linux-2.6.32.46/arch/powerpc/kernel/exceptions-64e.S 2011-04-17 15:56:45.000000000 -0400
2081 @@ -455,6 +455,7 @@ storage_fault_common:
2082 std r14,_DAR(r1)
2083 std r15,_DSISR(r1)
2084 @@ -2560,9 +2560,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S linux-2.6.32.48/
2085 addi r3,r1,STACK_FRAME_OVERHEAD
2086 ld r4,_DAR(r1)
2087 bl .bad_page_fault
2088 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S
2089 ---- linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S 2009-12-02 22:51:21.000000000 -0500
2090 -+++ linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S 2011-11-12 12:46:42.000000000 -0500
2091 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/exceptions-64s.S linux-2.6.32.46/arch/powerpc/kernel/exceptions-64s.S
2092 +--- linux-2.6.32.46/arch/powerpc/kernel/exceptions-64s.S 2011-03-27 14:31:47.000000000 -0400
2093 ++++ linux-2.6.32.46/arch/powerpc/kernel/exceptions-64s.S 2011-04-17 15:56:45.000000000 -0400
2094 @@ -818,10 +818,10 @@ handle_page_fault:
2095 11: ld r4,_DAR(r1)
2096 ld r5,_DSISR(r1)
2097 @@ -2575,9 +2575,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S linux-2.6.32.48/
2098 mr r5,r3
2099 addi r3,r1,STACK_FRAME_OVERHEAD
2100 lwz r4,_DAR(r1)
2101 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c
2102 ---- linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c 2009-12-02 22:51:21.000000000 -0500
2103 -+++ linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c 2011-11-12 12:46:42.000000000 -0500
2104 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/ibmebus.c linux-2.6.32.46/arch/powerpc/kernel/ibmebus.c
2105 +--- linux-2.6.32.46/arch/powerpc/kernel/ibmebus.c 2011-03-27 14:31:47.000000000 -0400
2106 ++++ linux-2.6.32.46/arch/powerpc/kernel/ibmebus.c 2011-04-17 15:56:45.000000000 -0400
2107 @@ -127,7 +127,7 @@ static int ibmebus_dma_supported(struct
2108 return 1;
2109 }
2110 @@ -2587,9 +2587,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c linux-2.6.32.48/arch/po
2111 .alloc_coherent = ibmebus_alloc_coherent,
2112 .free_coherent = ibmebus_free_coherent,
2113 .map_sg = ibmebus_map_sg,
2114 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/kgdb.c linux-2.6.32.48/arch/powerpc/kernel/kgdb.c
2115 ---- linux-2.6.32.48/arch/powerpc/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
2116 -+++ linux-2.6.32.48/arch/powerpc/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
2117 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/kgdb.c linux-2.6.32.46/arch/powerpc/kernel/kgdb.c
2118 +--- linux-2.6.32.46/arch/powerpc/kernel/kgdb.c 2011-03-27 14:31:47.000000000 -0400
2119 ++++ linux-2.6.32.46/arch/powerpc/kernel/kgdb.c 2011-04-17 15:56:45.000000000 -0400
2120 @@ -126,7 +126,7 @@ static int kgdb_handle_breakpoint(struct
2121 if (kgdb_handle_exception(0, SIGTRAP, 0, regs) != 0)
2122 return 0;
2123 @@ -2608,9 +2608,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/kgdb.c linux-2.6.32.48/arch/power
2124 .gdb_bpt_instr = {0x7d, 0x82, 0x10, 0x08},
2125 };
2126
2127 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module_32.c linux-2.6.32.48/arch/powerpc/kernel/module_32.c
2128 ---- linux-2.6.32.48/arch/powerpc/kernel/module_32.c 2009-12-02 22:51:21.000000000 -0500
2129 -+++ linux-2.6.32.48/arch/powerpc/kernel/module_32.c 2011-11-12 12:46:42.000000000 -0500
2130 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/module_32.c linux-2.6.32.46/arch/powerpc/kernel/module_32.c
2131 +--- linux-2.6.32.46/arch/powerpc/kernel/module_32.c 2011-03-27 14:31:47.000000000 -0400
2132 ++++ linux-2.6.32.46/arch/powerpc/kernel/module_32.c 2011-04-17 15:56:45.000000000 -0400
2133 @@ -162,7 +162,7 @@ int module_frob_arch_sections(Elf32_Ehdr
2134 me->arch.core_plt_section = i;
2135 }
2136 @@ -2640,9 +2640,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module_32.c linux-2.6.32.48/arch/
2137
2138 /* Find this entry, or if that fails, the next avail. entry */
2139 while (entry->jump[0]) {
2140 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module.c linux-2.6.32.48/arch/powerpc/kernel/module.c
2141 ---- linux-2.6.32.48/arch/powerpc/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
2142 -+++ linux-2.6.32.48/arch/powerpc/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
2143 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/module.c linux-2.6.32.46/arch/powerpc/kernel/module.c
2144 +--- linux-2.6.32.46/arch/powerpc/kernel/module.c 2011-03-27 14:31:47.000000000 -0400
2145 ++++ linux-2.6.32.46/arch/powerpc/kernel/module.c 2011-04-17 15:56:45.000000000 -0400
2146 @@ -31,11 +31,24 @@
2147
2148 LIST_HEAD(module_bug_list);
2149 @@ -2682,9 +2682,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module.c linux-2.6.32.48/arch/pow
2150 static const Elf_Shdr *find_section(const Elf_Ehdr *hdr,
2151 const Elf_Shdr *sechdrs,
2152 const char *name)
2153 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/pci-common.c linux-2.6.32.48/arch/powerpc/kernel/pci-common.c
2154 ---- linux-2.6.32.48/arch/powerpc/kernel/pci-common.c 2011-11-12 12:44:28.000000000 -0500
2155 -+++ linux-2.6.32.48/arch/powerpc/kernel/pci-common.c 2011-11-12 12:46:42.000000000 -0500
2156 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/pci-common.c linux-2.6.32.46/arch/powerpc/kernel/pci-common.c
2157 +--- linux-2.6.32.46/arch/powerpc/kernel/pci-common.c 2011-03-27 14:31:47.000000000 -0400
2158 ++++ linux-2.6.32.46/arch/powerpc/kernel/pci-common.c 2011-04-17 15:56:45.000000000 -0400
2159 @@ -50,14 +50,14 @@ resource_size_t isa_mem_base;
2160 unsigned int ppc_pci_flags = 0;
2161
2162 @@ -2703,9 +2703,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/pci-common.c linux-2.6.32.48/arch
2163 {
2164 return pci_dma_ops;
2165 }
2166 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/process.c linux-2.6.32.48/arch/powerpc/kernel/process.c
2167 ---- linux-2.6.32.48/arch/powerpc/kernel/process.c 2011-11-12 12:44:28.000000000 -0500
2168 -+++ linux-2.6.32.48/arch/powerpc/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
2169 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/process.c linux-2.6.32.46/arch/powerpc/kernel/process.c
2170 +--- linux-2.6.32.46/arch/powerpc/kernel/process.c 2011-03-27 14:31:47.000000000 -0400
2171 ++++ linux-2.6.32.46/arch/powerpc/kernel/process.c 2011-04-17 15:56:45.000000000 -0400
2172 @@ -539,8 +539,8 @@ void show_regs(struct pt_regs * regs)
2173 * Lookup NIP late so we have the best change of getting the
2174 * above info out without failing
2175 @@ -2798,9 +2798,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/process.c linux-2.6.32.48/arch/po
2176 -
2177 - return ret;
2178 -}
2179 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/ptrace.c linux-2.6.32.48/arch/powerpc/kernel/ptrace.c
2180 ---- linux-2.6.32.48/arch/powerpc/kernel/ptrace.c 2009-12-02 22:51:21.000000000 -0500
2181 -+++ linux-2.6.32.48/arch/powerpc/kernel/ptrace.c 2011-11-12 12:46:42.000000000 -0500
2182 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/ptrace.c linux-2.6.32.46/arch/powerpc/kernel/ptrace.c
2183 +--- linux-2.6.32.46/arch/powerpc/kernel/ptrace.c 2011-03-27 14:31:47.000000000 -0400
2184 ++++ linux-2.6.32.46/arch/powerpc/kernel/ptrace.c 2011-08-21 15:53:39.000000000 -0400
2185 @@ -86,7 +86,7 @@ static int set_user_trap(struct task_str
2186 /*
2187 * Get contents of register REGNO in task TASK.
2188 @@ -2819,9 +2819,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/ptrace.c linux-2.6.32.48/arch/pow
2189 } else {
2190 flush_fp_to_thread(child);
2191 tmp = ((unsigned long *)child->thread.fpr)
2192 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_32.c linux-2.6.32.48/arch/powerpc/kernel/signal_32.c
2193 ---- linux-2.6.32.48/arch/powerpc/kernel/signal_32.c 2009-12-02 22:51:21.000000000 -0500
2194 -+++ linux-2.6.32.48/arch/powerpc/kernel/signal_32.c 2011-11-12 12:46:42.000000000 -0500
2195 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/signal_32.c linux-2.6.32.46/arch/powerpc/kernel/signal_32.c
2196 +--- linux-2.6.32.46/arch/powerpc/kernel/signal_32.c 2011-03-27 14:31:47.000000000 -0400
2197 ++++ linux-2.6.32.46/arch/powerpc/kernel/signal_32.c 2011-04-17 15:56:45.000000000 -0400
2198 @@ -857,7 +857,7 @@ int handle_rt_signal32(unsigned long sig
2199 /* Save user registers on the stack */
2200 frame = &rt_sf->uc.uc_mcontext;
2201 @@ -2831,9 +2831,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_32.c linux-2.6.32.48/arch/
2202 if (save_user_regs(regs, frame, 0, 1))
2203 goto badframe;
2204 regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
2205 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_64.c linux-2.6.32.48/arch/powerpc/kernel/signal_64.c
2206 ---- linux-2.6.32.48/arch/powerpc/kernel/signal_64.c 2009-12-02 22:51:21.000000000 -0500
2207 -+++ linux-2.6.32.48/arch/powerpc/kernel/signal_64.c 2011-11-12 12:46:42.000000000 -0500
2208 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/signal_64.c linux-2.6.32.46/arch/powerpc/kernel/signal_64.c
2209 +--- linux-2.6.32.46/arch/powerpc/kernel/signal_64.c 2011-03-27 14:31:47.000000000 -0400
2210 ++++ linux-2.6.32.46/arch/powerpc/kernel/signal_64.c 2011-04-17 15:56:45.000000000 -0400
2211 @@ -429,7 +429,7 @@ int handle_rt_signal64(int signr, struct
2212 current->thread.fpscr.val = 0;
2213
2214 @@ -2843,9 +2843,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_64.c linux-2.6.32.48/arch/
2215 regs->link = current->mm->context.vdso_base + vdso64_rt_sigtramp;
2216 } else {
2217 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
2218 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c
2219 ---- linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c 2009-12-02 22:51:21.000000000 -0500
2220 -+++ linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c 2011-11-12 12:46:42.000000000 -0500
2221 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/sys_ppc32.c linux-2.6.32.46/arch/powerpc/kernel/sys_ppc32.c
2222 +--- linux-2.6.32.46/arch/powerpc/kernel/sys_ppc32.c 2011-03-27 14:31:47.000000000 -0400
2223 ++++ linux-2.6.32.46/arch/powerpc/kernel/sys_ppc32.c 2011-04-17 15:56:45.000000000 -0400
2224 @@ -563,10 +563,10 @@ asmlinkage long compat_sys_sysctl(struct
2225 if (oldlenp) {
2226 if (!error) {
2227 @@ -2859,9 +2859,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c linux-2.6.32.48/arch/
2228 }
2229 return error;
2230 }
2231 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/traps.c linux-2.6.32.48/arch/powerpc/kernel/traps.c
2232 ---- linux-2.6.32.48/arch/powerpc/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
2233 -+++ linux-2.6.32.48/arch/powerpc/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
2234 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/traps.c linux-2.6.32.46/arch/powerpc/kernel/traps.c
2235 +--- linux-2.6.32.46/arch/powerpc/kernel/traps.c 2011-03-27 14:31:47.000000000 -0400
2236 ++++ linux-2.6.32.46/arch/powerpc/kernel/traps.c 2011-06-13 21:33:37.000000000 -0400
2237 @@ -99,6 +99,8 @@ static void pmac_backlight_unblank(void)
2238 static inline void pmac_backlight_unblank(void) { }
2239 #endif
2240 @@ -2880,9 +2880,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/traps.c linux-2.6.32.48/arch/powe
2241 oops_exit();
2242 do_exit(err);
2243
2244 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/vdso.c linux-2.6.32.48/arch/powerpc/kernel/vdso.c
2245 ---- linux-2.6.32.48/arch/powerpc/kernel/vdso.c 2009-12-02 22:51:21.000000000 -0500
2246 -+++ linux-2.6.32.48/arch/powerpc/kernel/vdso.c 2011-11-12 12:46:42.000000000 -0500
2247 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/vdso.c linux-2.6.32.46/arch/powerpc/kernel/vdso.c
2248 +--- linux-2.6.32.46/arch/powerpc/kernel/vdso.c 2011-03-27 14:31:47.000000000 -0400
2249 ++++ linux-2.6.32.46/arch/powerpc/kernel/vdso.c 2011-04-17 15:56:45.000000000 -0400
2250 @@ -36,6 +36,7 @@
2251 #include <asm/firmware.h>
2252 #include <asm/vdso.h>
2253 @@ -2909,9 +2909,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/vdso.c linux-2.6.32.48/arch/power
2254 if (IS_ERR_VALUE(vdso_base)) {
2255 rc = vdso_base;
2256 goto fail_mmapsem;
2257 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/vio.c linux-2.6.32.48/arch/powerpc/kernel/vio.c
2258 ---- linux-2.6.32.48/arch/powerpc/kernel/vio.c 2009-12-02 22:51:21.000000000 -0500
2259 -+++ linux-2.6.32.48/arch/powerpc/kernel/vio.c 2011-11-12 12:46:42.000000000 -0500
2260 +diff -urNp linux-2.6.32.46/arch/powerpc/kernel/vio.c linux-2.6.32.46/arch/powerpc/kernel/vio.c
2261 +--- linux-2.6.32.46/arch/powerpc/kernel/vio.c 2011-03-27 14:31:47.000000000 -0400
2262 ++++ linux-2.6.32.46/arch/powerpc/kernel/vio.c 2011-04-17 15:56:45.000000000 -0400
2263 @@ -601,11 +601,12 @@ static void vio_dma_iommu_unmap_sg(struc
2264 vio_cmo_dealloc(viodev, alloc_size);
2265 }
2266 @@ -2934,9 +2934,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/vio.c linux-2.6.32.48/arch/powerp
2267 viodev->dev.archdata.dma_ops = &vio_dma_mapping_ops;
2268 }
2269
2270 -diff -urNp linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c
2271 ---- linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c 2009-12-02 22:51:21.000000000 -0500
2272 -+++ linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c 2011-11-12 12:46:42.000000000 -0500
2273 +diff -urNp linux-2.6.32.46/arch/powerpc/lib/usercopy_64.c linux-2.6.32.46/arch/powerpc/lib/usercopy_64.c
2274 +--- linux-2.6.32.46/arch/powerpc/lib/usercopy_64.c 2011-03-27 14:31:47.000000000 -0400
2275 ++++ linux-2.6.32.46/arch/powerpc/lib/usercopy_64.c 2011-04-17 15:56:45.000000000 -0400
2276 @@ -9,22 +9,6 @@
2277 #include <linux/module.h>
2278 #include <asm/uaccess.h>
2279 @@ -2968,9 +2968,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c linux-2.6.32.48/arch/p
2280 -EXPORT_SYMBOL(copy_to_user);
2281 EXPORT_SYMBOL(copy_in_user);
2282
2283 -diff -urNp linux-2.6.32.48/arch/powerpc/Makefile linux-2.6.32.48/arch/powerpc/Makefile
2284 ---- linux-2.6.32.48/arch/powerpc/Makefile 2011-11-12 12:44:28.000000000 -0500
2285 -+++ linux-2.6.32.48/arch/powerpc/Makefile 2011-11-12 12:46:42.000000000 -0500
2286 +diff -urNp linux-2.6.32.46/arch/powerpc/Makefile linux-2.6.32.46/arch/powerpc/Makefile
2287 +--- linux-2.6.32.46/arch/powerpc/Makefile 2011-03-27 14:31:47.000000000 -0400
2288 ++++ linux-2.6.32.46/arch/powerpc/Makefile 2011-08-21 19:27:08.000000000 -0400
2289 @@ -74,6 +74,8 @@ KBUILD_AFLAGS += -Iarch/$(ARCH)
2290 KBUILD_CFLAGS += -msoft-float -pipe -Iarch/$(ARCH) $(CFLAGS-y)
2291 CPP = $(CC) -E $(KBUILD_CFLAGS)
2292 @@ -2980,9 +2980,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/Makefile linux-2.6.32.48/arch/powerpc/Ma
2293 CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
2294
2295 ifeq ($(CONFIG_PPC64),y)
2296 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/mm/fault.c
2297 ---- linux-2.6.32.48/arch/powerpc/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
2298 -+++ linux-2.6.32.48/arch/powerpc/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
2299 +diff -urNp linux-2.6.32.46/arch/powerpc/mm/fault.c linux-2.6.32.46/arch/powerpc/mm/fault.c
2300 +--- linux-2.6.32.46/arch/powerpc/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
2301 ++++ linux-2.6.32.46/arch/powerpc/mm/fault.c 2011-04-17 15:56:45.000000000 -0400
2302 @@ -30,6 +30,10 @@
2303 #include <linux/kprobes.h>
2304 #include <linux/kdebug.h>
2305 @@ -3087,9 +3087,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/
2306 _exception(SIGSEGV, regs, code, address);
2307 return 0;
2308 }
2309 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/mem.c linux-2.6.32.48/arch/powerpc/mm/mem.c
2310 ---- linux-2.6.32.48/arch/powerpc/mm/mem.c 2009-12-02 22:51:21.000000000 -0500
2311 -+++ linux-2.6.32.48/arch/powerpc/mm/mem.c 2011-11-12 12:46:42.000000000 -0500
2312 +diff -urNp linux-2.6.32.46/arch/powerpc/mm/mem.c linux-2.6.32.46/arch/powerpc/mm/mem.c
2313 +--- linux-2.6.32.46/arch/powerpc/mm/mem.c 2011-03-27 14:31:47.000000000 -0400
2314 ++++ linux-2.6.32.46/arch/powerpc/mm/mem.c 2011-08-21 15:50:39.000000000 -0400
2315 @@ -250,7 +250,7 @@ static int __init mark_nonram_nosave(voi
2316 {
2317 unsigned long lmb_next_region_start_pfn,
2318 @@ -3099,9 +3099,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/mem.c linux-2.6.32.48/arch/powerpc/mm
2319
2320 for (i = 0; i < lmb.memory.cnt - 1; i++) {
2321 lmb_region_max_pfn =
2322 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/mmap_64.c linux-2.6.32.48/arch/powerpc/mm/mmap_64.c
2323 ---- linux-2.6.32.48/arch/powerpc/mm/mmap_64.c 2009-12-02 22:51:21.000000000 -0500
2324 -+++ linux-2.6.32.48/arch/powerpc/mm/mmap_64.c 2011-11-12 12:46:42.000000000 -0500
2325 +diff -urNp linux-2.6.32.46/arch/powerpc/mm/mmap_64.c linux-2.6.32.46/arch/powerpc/mm/mmap_64.c
2326 +--- linux-2.6.32.46/arch/powerpc/mm/mmap_64.c 2011-03-27 14:31:47.000000000 -0400
2327 ++++ linux-2.6.32.46/arch/powerpc/mm/mmap_64.c 2011-04-17 15:56:45.000000000 -0400
2328 @@ -99,10 +99,22 @@ void arch_pick_mmap_layout(struct mm_str
2329 */
2330 if (mmap_is_legacy()) {
2331 @@ -3125,9 +3125,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/mmap_64.c linux-2.6.32.48/arch/powerp
2332 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
2333 mm->unmap_area = arch_unmap_area_topdown;
2334 }
2335 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/slice.c linux-2.6.32.48/arch/powerpc/mm/slice.c
2336 ---- linux-2.6.32.48/arch/powerpc/mm/slice.c 2009-12-02 22:51:21.000000000 -0500
2337 -+++ linux-2.6.32.48/arch/powerpc/mm/slice.c 2011-11-12 12:46:42.000000000 -0500
2338 +diff -urNp linux-2.6.32.46/arch/powerpc/mm/slice.c linux-2.6.32.46/arch/powerpc/mm/slice.c
2339 +--- linux-2.6.32.46/arch/powerpc/mm/slice.c 2011-03-27 14:31:47.000000000 -0400
2340 ++++ linux-2.6.32.46/arch/powerpc/mm/slice.c 2011-04-17 15:56:45.000000000 -0400
2341 @@ -98,7 +98,7 @@ static int slice_area_is_free(struct mm_
2342 if ((mm->task_size - len) < addr)
2343 return 0;
2344 @@ -3194,9 +3194,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/slice.c linux-2.6.32.48/arch/powerpc/
2345 /* If hint, make sure it matches our alignment restrictions */
2346 if (!fixed && addr) {
2347 addr = _ALIGN_UP(addr, 1ul << pshift);
2348 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c
2349 ---- linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c 2009-12-02 22:51:21.000000000 -0500
2350 -+++ linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c 2011-11-12 12:46:42.000000000 -0500
2351 +diff -urNp linux-2.6.32.46/arch/powerpc/platforms/52xx/lite5200_pm.c linux-2.6.32.46/arch/powerpc/platforms/52xx/lite5200_pm.c
2352 +--- linux-2.6.32.46/arch/powerpc/platforms/52xx/lite5200_pm.c 2011-03-27 14:31:47.000000000 -0400
2353 ++++ linux-2.6.32.46/arch/powerpc/platforms/52xx/lite5200_pm.c 2011-04-17 15:56:45.000000000 -0400
2354 @@ -235,7 +235,7 @@ static void lite5200_pm_end(void)
2355 lite5200_pm_target_state = PM_SUSPEND_ON;
2356 }
2357 @@ -3206,9 +3206,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c linux-2.6.3
2358 .valid = lite5200_pm_valid,
2359 .begin = lite5200_pm_begin,
2360 .prepare = lite5200_pm_prepare,
2361 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c
2362 ---- linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c 2009-12-02 22:51:21.000000000 -0500
2363 -+++ linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c 2011-11-12 12:46:42.000000000 -0500
2364 +diff -urNp linux-2.6.32.46/arch/powerpc/platforms/52xx/mpc52xx_pm.c linux-2.6.32.46/arch/powerpc/platforms/52xx/mpc52xx_pm.c
2365 +--- linux-2.6.32.46/arch/powerpc/platforms/52xx/mpc52xx_pm.c 2011-03-27 14:31:47.000000000 -0400
2366 ++++ linux-2.6.32.46/arch/powerpc/platforms/52xx/mpc52xx_pm.c 2011-04-17 15:56:45.000000000 -0400
2367 @@ -180,7 +180,7 @@ void mpc52xx_pm_finish(void)
2368 iounmap(mbar);
2369 }
2370 @@ -3218,9 +3218,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c linux-2.6.32
2371 .valid = mpc52xx_pm_valid,
2372 .prepare = mpc52xx_pm_prepare,
2373 .enter = mpc52xx_pm_enter,
2374 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c
2375 ---- linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c 2009-12-02 22:51:21.000000000 -0500
2376 -+++ linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c 2011-11-12 12:46:42.000000000 -0500
2377 +diff -urNp linux-2.6.32.46/arch/powerpc/platforms/83xx/suspend.c linux-2.6.32.46/arch/powerpc/platforms/83xx/suspend.c
2378 +--- linux-2.6.32.46/arch/powerpc/platforms/83xx/suspend.c 2011-03-27 14:31:47.000000000 -0400
2379 ++++ linux-2.6.32.46/arch/powerpc/platforms/83xx/suspend.c 2011-04-17 15:56:45.000000000 -0400
2380 @@ -273,7 +273,7 @@ static int mpc83xx_is_pci_agent(void)
2381 return ret;
2382 }
2383 @@ -3230,9 +3230,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c linux-2.6.32.48
2384 .valid = mpc83xx_suspend_valid,
2385 .begin = mpc83xx_suspend_begin,
2386 .enter = mpc83xx_suspend_enter,
2387 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c
2388 ---- linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c 2009-12-02 22:51:21.000000000 -0500
2389 -+++ linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c 2011-11-12 12:46:42.000000000 -0500
2390 +diff -urNp linux-2.6.32.46/arch/powerpc/platforms/cell/iommu.c linux-2.6.32.46/arch/powerpc/platforms/cell/iommu.c
2391 +--- linux-2.6.32.46/arch/powerpc/platforms/cell/iommu.c 2011-03-27 14:31:47.000000000 -0400
2392 ++++ linux-2.6.32.46/arch/powerpc/platforms/cell/iommu.c 2011-04-17 15:56:45.000000000 -0400
2393 @@ -642,7 +642,7 @@ static int dma_fixed_dma_supported(struc
2394
2395 static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask);
2396 @@ -3242,9 +3242,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c linux-2.6.32.48/a
2397 .alloc_coherent = dma_fixed_alloc_coherent,
2398 .free_coherent = dma_fixed_free_coherent,
2399 .map_sg = dma_fixed_map_sg,
2400 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c
2401 ---- linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c 2009-12-02 22:51:21.000000000 -0500
2402 -+++ linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c 2011-11-12 12:46:42.000000000 -0500
2403 +diff -urNp linux-2.6.32.46/arch/powerpc/platforms/ps3/system-bus.c linux-2.6.32.46/arch/powerpc/platforms/ps3/system-bus.c
2404 +--- linux-2.6.32.46/arch/powerpc/platforms/ps3/system-bus.c 2011-03-27 14:31:47.000000000 -0400
2405 ++++ linux-2.6.32.46/arch/powerpc/platforms/ps3/system-bus.c 2011-04-17 15:56:45.000000000 -0400
2406 @@ -694,7 +694,7 @@ static int ps3_dma_supported(struct devi
2407 return mask >= DMA_BIT_MASK(32);
2408 }
2409 @@ -3263,9 +3263,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c linux-2.6.32.
2410 .alloc_coherent = ps3_alloc_coherent,
2411 .free_coherent = ps3_free_coherent,
2412 .map_sg = ps3_ioc0_map_sg,
2413 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig
2414 ---- linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig 2009-12-02 22:51:21.000000000 -0500
2415 -+++ linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig 2011-11-12 12:46:42.000000000 -0500
2416 +diff -urNp linux-2.6.32.46/arch/powerpc/platforms/pseries/Kconfig linux-2.6.32.46/arch/powerpc/platforms/pseries/Kconfig
2417 +--- linux-2.6.32.46/arch/powerpc/platforms/pseries/Kconfig 2011-03-27 14:31:47.000000000 -0400
2418 ++++ linux-2.6.32.46/arch/powerpc/platforms/pseries/Kconfig 2011-04-17 15:56:45.000000000 -0400
2419 @@ -2,6 +2,8 @@ config PPC_PSERIES
2420 depends on PPC64 && PPC_BOOK3S
2421 bool "IBM pSeries & new (POWER5-based) iSeries"
2422 @@ -3275,9 +3275,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig linux-2.6.32.4
2423 select PPC_I8259
2424 select PPC_RTAS
2425 select RTAS_ERROR_LOGGING
2426 -diff -urNp linux-2.6.32.48/arch/s390/include/asm/elf.h linux-2.6.32.48/arch/s390/include/asm/elf.h
2427 ---- linux-2.6.32.48/arch/s390/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
2428 -+++ linux-2.6.32.48/arch/s390/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
2429 +diff -urNp linux-2.6.32.46/arch/s390/include/asm/elf.h linux-2.6.32.46/arch/s390/include/asm/elf.h
2430 +--- linux-2.6.32.46/arch/s390/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
2431 ++++ linux-2.6.32.46/arch/s390/include/asm/elf.h 2011-04-17 15:56:45.000000000 -0400
2432 @@ -164,6 +164,13 @@ extern unsigned int vdso_enabled;
2433 that it will "exec", and that there is sufficient room for the brk. */
2434 #define ELF_ET_DYN_BASE (STACK_TOP / 3 * 2)
2435 @@ -3292,9 +3292,9 @@ diff -urNp linux-2.6.32.48/arch/s390/include/asm/elf.h linux-2.6.32.48/arch/s390
2436 /* This yields a mask that user programs can use to figure out what
2437 instruction set this CPU supports. */
2438
2439 -diff -urNp linux-2.6.32.48/arch/s390/include/asm/setup.h linux-2.6.32.48/arch/s390/include/asm/setup.h
2440 ---- linux-2.6.32.48/arch/s390/include/asm/setup.h 2009-12-02 22:51:21.000000000 -0500
2441 -+++ linux-2.6.32.48/arch/s390/include/asm/setup.h 2011-11-12 12:46:42.000000000 -0500
2442 +diff -urNp linux-2.6.32.46/arch/s390/include/asm/setup.h linux-2.6.32.46/arch/s390/include/asm/setup.h
2443 +--- linux-2.6.32.46/arch/s390/include/asm/setup.h 2011-03-27 14:31:47.000000000 -0400
2444 ++++ linux-2.6.32.46/arch/s390/include/asm/setup.h 2011-04-17 15:56:45.000000000 -0400
2445 @@ -50,13 +50,13 @@ extern unsigned long memory_end;
2446 void detect_memory_layout(struct mem_chunk chunk[]);
2447
2448 @@ -3311,9 +3311,9 @@ diff -urNp linux-2.6.32.48/arch/s390/include/asm/setup.h linux-2.6.32.48/arch/s3
2449 #else
2450 #define s390_noexec (0)
2451 #endif
2452 -diff -urNp linux-2.6.32.48/arch/s390/include/asm/uaccess.h linux-2.6.32.48/arch/s390/include/asm/uaccess.h
2453 ---- linux-2.6.32.48/arch/s390/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
2454 -+++ linux-2.6.32.48/arch/s390/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
2455 +diff -urNp linux-2.6.32.46/arch/s390/include/asm/uaccess.h linux-2.6.32.46/arch/s390/include/asm/uaccess.h
2456 +--- linux-2.6.32.46/arch/s390/include/asm/uaccess.h 2011-03-27 14:31:47.000000000 -0400
2457 ++++ linux-2.6.32.46/arch/s390/include/asm/uaccess.h 2011-04-17 15:56:45.000000000 -0400
2458 @@ -232,6 +232,10 @@ static inline unsigned long __must_check
2459 copy_to_user(void __user *to, const void *from, unsigned long n)
2460 {
2461 @@ -3346,9 +3346,9 @@ diff -urNp linux-2.6.32.48/arch/s390/include/asm/uaccess.h linux-2.6.32.48/arch/
2462 if (access_ok(VERIFY_READ, from, n))
2463 n = __copy_from_user(to, from, n);
2464 else
2465 -diff -urNp linux-2.6.32.48/arch/s390/Kconfig linux-2.6.32.48/arch/s390/Kconfig
2466 ---- linux-2.6.32.48/arch/s390/Kconfig 2009-12-02 22:51:21.000000000 -0500
2467 -+++ linux-2.6.32.48/arch/s390/Kconfig 2011-11-12 12:46:42.000000000 -0500
2468 +diff -urNp linux-2.6.32.46/arch/s390/Kconfig linux-2.6.32.46/arch/s390/Kconfig
2469 +--- linux-2.6.32.46/arch/s390/Kconfig 2011-03-27 14:31:47.000000000 -0400
2470 ++++ linux-2.6.32.46/arch/s390/Kconfig 2011-04-17 15:56:45.000000000 -0400
2471 @@ -194,28 +194,26 @@ config AUDIT_ARCH
2472
2473 config S390_SWITCH_AMODE
2474 @@ -3386,9 +3386,9 @@ diff -urNp linux-2.6.32.48/arch/s390/Kconfig linux-2.6.32.48/arch/s390/Kconfig
2475
2476 comment "Code generation options"
2477
2478 -diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/kernel/module.c
2479 ---- linux-2.6.32.48/arch/s390/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
2480 -+++ linux-2.6.32.48/arch/s390/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
2481 +diff -urNp linux-2.6.32.46/arch/s390/kernel/module.c linux-2.6.32.46/arch/s390/kernel/module.c
2482 +--- linux-2.6.32.46/arch/s390/kernel/module.c 2011-03-27 14:31:47.000000000 -0400
2483 ++++ linux-2.6.32.46/arch/s390/kernel/module.c 2011-04-17 15:56:45.000000000 -0400
2484 @@ -166,11 +166,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr,
2485
2486 /* Increase core size by size of got & plt and set start
2487 @@ -3460,9 +3460,9 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
2488 rela->r_addend - loc;
2489 if (r_type == R_390_GOTPC)
2490 *(unsigned int *) loc = val;
2491 -diff -urNp linux-2.6.32.48/arch/s390/kernel/setup.c linux-2.6.32.48/arch/s390/kernel/setup.c
2492 ---- linux-2.6.32.48/arch/s390/kernel/setup.c 2009-12-02 22:51:21.000000000 -0500
2493 -+++ linux-2.6.32.48/arch/s390/kernel/setup.c 2011-11-12 12:46:42.000000000 -0500
2494 +diff -urNp linux-2.6.32.46/arch/s390/kernel/setup.c linux-2.6.32.46/arch/s390/kernel/setup.c
2495 +--- linux-2.6.32.46/arch/s390/kernel/setup.c 2011-03-27 14:31:47.000000000 -0400
2496 ++++ linux-2.6.32.46/arch/s390/kernel/setup.c 2011-04-17 15:56:45.000000000 -0400
2497 @@ -306,9 +306,6 @@ static int __init early_parse_mem(char *
2498 early_param("mem", early_parse_mem);
2499
2500 @@ -3516,9 +3516,9 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/setup.c linux-2.6.32.48/arch/s390/ke
2501 static void setup_addressing_mode(void)
2502 {
2503 if (s390_noexec) {
2504 -diff -urNp linux-2.6.32.48/arch/s390/mm/mmap.c linux-2.6.32.48/arch/s390/mm/mmap.c
2505 ---- linux-2.6.32.48/arch/s390/mm/mmap.c 2009-12-02 22:51:21.000000000 -0500
2506 -+++ linux-2.6.32.48/arch/s390/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
2507 +diff -urNp linux-2.6.32.46/arch/s390/mm/mmap.c linux-2.6.32.46/arch/s390/mm/mmap.c
2508 +--- linux-2.6.32.46/arch/s390/mm/mmap.c 2011-03-27 14:31:47.000000000 -0400
2509 ++++ linux-2.6.32.46/arch/s390/mm/mmap.c 2011-04-17 15:56:45.000000000 -0400
2510 @@ -78,10 +78,22 @@ void arch_pick_mmap_layout(struct mm_str
2511 */
2512 if (mmap_is_legacy()) {
2513 @@ -3565,9 +3565,9 @@ diff -urNp linux-2.6.32.48/arch/s390/mm/mmap.c linux-2.6.32.48/arch/s390/mm/mmap
2514 mm->get_unmapped_area = s390_get_unmapped_area_topdown;
2515 mm->unmap_area = arch_unmap_area_topdown;
2516 }
2517 -diff -urNp linux-2.6.32.48/arch/score/include/asm/system.h linux-2.6.32.48/arch/score/include/asm/system.h
2518 ---- linux-2.6.32.48/arch/score/include/asm/system.h 2009-12-02 22:51:21.000000000 -0500
2519 -+++ linux-2.6.32.48/arch/score/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
2520 +diff -urNp linux-2.6.32.46/arch/score/include/asm/system.h linux-2.6.32.46/arch/score/include/asm/system.h
2521 +--- linux-2.6.32.46/arch/score/include/asm/system.h 2011-03-27 14:31:47.000000000 -0400
2522 ++++ linux-2.6.32.46/arch/score/include/asm/system.h 2011-04-17 15:56:45.000000000 -0400
2523 @@ -17,7 +17,7 @@ do { \
2524 #define finish_arch_switch(prev) do {} while (0)
2525
2526 @@ -3577,9 +3577,9 @@ diff -urNp linux-2.6.32.48/arch/score/include/asm/system.h linux-2.6.32.48/arch/
2527
2528 #define mb() barrier()
2529 #define rmb() barrier()
2530 -diff -urNp linux-2.6.32.48/arch/score/kernel/process.c linux-2.6.32.48/arch/score/kernel/process.c
2531 ---- linux-2.6.32.48/arch/score/kernel/process.c 2009-12-02 22:51:21.000000000 -0500
2532 -+++ linux-2.6.32.48/arch/score/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
2533 +diff -urNp linux-2.6.32.46/arch/score/kernel/process.c linux-2.6.32.46/arch/score/kernel/process.c
2534 +--- linux-2.6.32.46/arch/score/kernel/process.c 2011-03-27 14:31:47.000000000 -0400
2535 ++++ linux-2.6.32.46/arch/score/kernel/process.c 2011-04-17 15:56:45.000000000 -0400
2536 @@ -161,8 +161,3 @@ unsigned long get_wchan(struct task_stru
2537
2538 return task_pt_regs(task)->cp0_epc;
2539 @@ -3589,9 +3589,9 @@ diff -urNp linux-2.6.32.48/arch/score/kernel/process.c linux-2.6.32.48/arch/scor
2540 -{
2541 - return sp;
2542 -}
2543 -diff -urNp linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c
2544 ---- linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c 2009-12-02 22:51:21.000000000 -0500
2545 -+++ linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c 2011-11-12 12:46:42.000000000 -0500
2546 +diff -urNp linux-2.6.32.46/arch/sh/boards/mach-hp6xx/pm.c linux-2.6.32.46/arch/sh/boards/mach-hp6xx/pm.c
2547 +--- linux-2.6.32.46/arch/sh/boards/mach-hp6xx/pm.c 2011-03-27 14:31:47.000000000 -0400
2548 ++++ linux-2.6.32.46/arch/sh/boards/mach-hp6xx/pm.c 2011-04-17 15:56:45.000000000 -0400
2549 @@ -143,7 +143,7 @@ static int hp6x0_pm_enter(suspend_state_
2550 return 0;
2551 }
2552 @@ -3601,9 +3601,9 @@ diff -urNp linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c linux-2.6.32.48/arch/s
2553 .enter = hp6x0_pm_enter,
2554 .valid = suspend_valid_only_mem,
2555 };
2556 -diff -urNp linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c
2557 ---- linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c 2009-12-02 22:51:21.000000000 -0500
2558 -+++ linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c 2011-11-12 12:46:42.000000000 -0500
2559 +diff -urNp linux-2.6.32.46/arch/sh/kernel/cpu/sh4/sq.c linux-2.6.32.46/arch/sh/kernel/cpu/sh4/sq.c
2560 +--- linux-2.6.32.46/arch/sh/kernel/cpu/sh4/sq.c 2011-03-27 14:31:47.000000000 -0400
2561 ++++ linux-2.6.32.46/arch/sh/kernel/cpu/sh4/sq.c 2011-04-17 15:56:46.000000000 -0400
2562 @@ -327,7 +327,7 @@ static struct attribute *sq_sysfs_attrs[
2563 NULL,
2564 };
2565 @@ -3613,9 +3613,9 @@ diff -urNp linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c linux-2.6.32.48/arch/sh/k
2566 .show = sq_sysfs_show,
2567 .store = sq_sysfs_store,
2568 };
2569 -diff -urNp linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c
2570 ---- linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c 2009-12-02 22:51:21.000000000 -0500
2571 -+++ linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c 2011-11-12 12:46:42.000000000 -0500
2572 +diff -urNp linux-2.6.32.46/arch/sh/kernel/cpu/shmobile/pm.c linux-2.6.32.46/arch/sh/kernel/cpu/shmobile/pm.c
2573 +--- linux-2.6.32.46/arch/sh/kernel/cpu/shmobile/pm.c 2011-03-27 14:31:47.000000000 -0400
2574 ++++ linux-2.6.32.46/arch/sh/kernel/cpu/shmobile/pm.c 2011-04-17 15:56:46.000000000 -0400
2575 @@ -58,7 +58,7 @@ static int sh_pm_enter(suspend_state_t s
2576 return 0;
2577 }
2578 @@ -3625,9 +3625,9 @@ diff -urNp linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c linux-2.6.32.48/arch
2579 .enter = sh_pm_enter,
2580 .valid = suspend_valid_only_mem,
2581 };
2582 -diff -urNp linux-2.6.32.48/arch/sh/kernel/kgdb.c linux-2.6.32.48/arch/sh/kernel/kgdb.c
2583 ---- linux-2.6.32.48/arch/sh/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
2584 -+++ linux-2.6.32.48/arch/sh/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
2585 +diff -urNp linux-2.6.32.46/arch/sh/kernel/kgdb.c linux-2.6.32.46/arch/sh/kernel/kgdb.c
2586 +--- linux-2.6.32.46/arch/sh/kernel/kgdb.c 2011-03-27 14:31:47.000000000 -0400
2587 ++++ linux-2.6.32.46/arch/sh/kernel/kgdb.c 2011-04-17 15:56:46.000000000 -0400
2588 @@ -271,7 +271,7 @@ void kgdb_arch_exit(void)
2589 {
2590 }
2591 @@ -3637,9 +3637,9 @@ diff -urNp linux-2.6.32.48/arch/sh/kernel/kgdb.c linux-2.6.32.48/arch/sh/kernel/
2592 /* Breakpoint instruction: trapa #0x3c */
2593 #ifdef CONFIG_CPU_LITTLE_ENDIAN
2594 .gdb_bpt_instr = { 0x3c, 0xc3 },
2595 -diff -urNp linux-2.6.32.48/arch/sh/mm/mmap.c linux-2.6.32.48/arch/sh/mm/mmap.c
2596 ---- linux-2.6.32.48/arch/sh/mm/mmap.c 2011-11-12 12:44:28.000000000 -0500
2597 -+++ linux-2.6.32.48/arch/sh/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
2598 +diff -urNp linux-2.6.32.46/arch/sh/mm/mmap.c linux-2.6.32.46/arch/sh/mm/mmap.c
2599 +--- linux-2.6.32.46/arch/sh/mm/mmap.c 2011-03-27 14:31:47.000000000 -0400
2600 ++++ linux-2.6.32.46/arch/sh/mm/mmap.c 2011-04-17 15:56:46.000000000 -0400
2601 @@ -74,8 +74,7 @@ unsigned long arch_get_unmapped_area(str
2602 addr = PAGE_ALIGN(addr);
2603
2604 @@ -3714,9 +3714,9 @@ diff -urNp linux-2.6.32.48/arch/sh/mm/mmap.c linux-2.6.32.48/arch/sh/mm/mmap.c
2605
2606 bottomup:
2607 /*
2608 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h
2609 ---- linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h 2011-11-12 12:44:28.000000000 -0500
2610 -+++ linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h 2011-11-12 12:46:42.000000000 -0500
2611 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/atomic_64.h linux-2.6.32.46/arch/sparc/include/asm/atomic_64.h
2612 +--- linux-2.6.32.46/arch/sparc/include/asm/atomic_64.h 2011-03-27 14:31:47.000000000 -0400
2613 ++++ linux-2.6.32.46/arch/sparc/include/asm/atomic_64.h 2011-08-18 23:11:34.000000000 -0400
2614 @@ -14,18 +14,40 @@
2615 #define ATOMIC64_INIT(i) { (i) }
2616
2617 @@ -3909,9 +3909,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h linux-2.6.32.48/ar
2618 }
2619
2620 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
2621 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/cache.h linux-2.6.32.48/arch/sparc/include/asm/cache.h
2622 ---- linux-2.6.32.48/arch/sparc/include/asm/cache.h 2009-12-02 22:51:21.000000000 -0500
2623 -+++ linux-2.6.32.48/arch/sparc/include/asm/cache.h 2011-11-12 12:46:42.000000000 -0500
2624 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/cache.h linux-2.6.32.46/arch/sparc/include/asm/cache.h
2625 +--- linux-2.6.32.46/arch/sparc/include/asm/cache.h 2011-03-27 14:31:47.000000000 -0400
2626 ++++ linux-2.6.32.46/arch/sparc/include/asm/cache.h 2011-07-06 19:53:33.000000000 -0400
2627 @@ -8,7 +8,7 @@
2628 #define _SPARC_CACHE_H
2629
2630 @@ -3921,9 +3921,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/cache.h linux-2.6.32.48/arch/s
2631 #define L1_CACHE_ALIGN(x) ((((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1)))
2632
2633 #ifdef CONFIG_SPARC32
2634 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h
2635 ---- linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
2636 -+++ linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
2637 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/dma-mapping.h linux-2.6.32.46/arch/sparc/include/asm/dma-mapping.h
2638 +--- linux-2.6.32.46/arch/sparc/include/asm/dma-mapping.h 2011-03-27 14:31:47.000000000 -0400
2639 ++++ linux-2.6.32.46/arch/sparc/include/asm/dma-mapping.h 2011-04-17 15:56:46.000000000 -0400
2640 @@ -14,10 +14,10 @@ extern int dma_set_mask(struct device *d
2641 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
2642 #define dma_is_consistent(d, h) (1)
2643 @@ -3955,9 +3955,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h linux-2.6.32.48/
2644
2645 debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
2646 ops->free_coherent(dev, size, cpu_addr, dma_handle);
2647 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_32.h linux-2.6.32.48/arch/sparc/include/asm/elf_32.h
2648 ---- linux-2.6.32.48/arch/sparc/include/asm/elf_32.h 2009-12-02 22:51:21.000000000 -0500
2649 -+++ linux-2.6.32.48/arch/sparc/include/asm/elf_32.h 2011-11-12 12:46:42.000000000 -0500
2650 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/elf_32.h linux-2.6.32.46/arch/sparc/include/asm/elf_32.h
2651 +--- linux-2.6.32.46/arch/sparc/include/asm/elf_32.h 2011-03-27 14:31:47.000000000 -0400
2652 ++++ linux-2.6.32.46/arch/sparc/include/asm/elf_32.h 2011-04-17 15:56:46.000000000 -0400
2653 @@ -116,6 +116,13 @@ typedef struct {
2654
2655 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE)
2656 @@ -3972,9 +3972,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_32.h linux-2.6.32.48/arch/
2657 /* This yields a mask that user programs can use to figure out what
2658 instruction set this cpu supports. This can NOT be done in userspace
2659 on Sparc. */
2660 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_64.h linux-2.6.32.48/arch/sparc/include/asm/elf_64.h
2661 ---- linux-2.6.32.48/arch/sparc/include/asm/elf_64.h 2011-11-12 12:44:28.000000000 -0500
2662 -+++ linux-2.6.32.48/arch/sparc/include/asm/elf_64.h 2011-11-12 12:46:42.000000000 -0500
2663 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/elf_64.h linux-2.6.32.46/arch/sparc/include/asm/elf_64.h
2664 +--- linux-2.6.32.46/arch/sparc/include/asm/elf_64.h 2011-03-27 14:31:47.000000000 -0400
2665 ++++ linux-2.6.32.46/arch/sparc/include/asm/elf_64.h 2011-04-17 15:56:46.000000000 -0400
2666 @@ -163,6 +163,12 @@ typedef struct {
2667 #define ELF_ET_DYN_BASE 0x0000010000000000UL
2668 #define COMPAT_ELF_ET_DYN_BASE 0x0000000070000000UL
2669 @@ -3988,9 +3988,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_64.h linux-2.6.32.48/arch/
2670
2671 /* This yields a mask that user programs can use to figure out what
2672 instruction set this cpu supports. */
2673 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h
2674 ---- linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h 2009-12-02 22:51:21.000000000 -0500
2675 -+++ linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h 2011-11-12 12:46:42.000000000 -0500
2676 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/pgtable_32.h linux-2.6.32.46/arch/sparc/include/asm/pgtable_32.h
2677 +--- linux-2.6.32.46/arch/sparc/include/asm/pgtable_32.h 2011-03-27 14:31:47.000000000 -0400
2678 ++++ linux-2.6.32.46/arch/sparc/include/asm/pgtable_32.h 2011-04-17 15:56:46.000000000 -0400
2679 @@ -43,6 +43,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
2680 BTFIXUPDEF_INT(page_none)
2681 BTFIXUPDEF_INT(page_copy)
2682 @@ -4022,9 +4022,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h linux-2.6.32.48/a
2683 extern unsigned long page_kernel;
2684
2685 #ifdef MODULE
2686 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h
2687 ---- linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h 2009-12-02 22:51:21.000000000 -0500
2688 -+++ linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h 2011-11-12 12:46:42.000000000 -0500
2689 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.32.46/arch/sparc/include/asm/pgtsrmmu.h
2690 +--- linux-2.6.32.46/arch/sparc/include/asm/pgtsrmmu.h 2011-03-27 14:31:47.000000000 -0400
2691 ++++ linux-2.6.32.46/arch/sparc/include/asm/pgtsrmmu.h 2011-04-17 15:56:46.000000000 -0400
2692 @@ -115,6 +115,13 @@
2693 SRMMU_EXEC | SRMMU_REF)
2694 #define SRMMU_PAGE_RDONLY __pgprot(SRMMU_VALID | SRMMU_CACHE | \
2695 @@ -4039,9 +4039,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.32.48/arc
2696 #define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
2697 SRMMU_DIRTY | SRMMU_REF)
2698
2699 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h
2700 ---- linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h 2009-12-02 22:51:21.000000000 -0500
2701 -+++ linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h 2011-11-12 12:46:42.000000000 -0500
2702 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.46/arch/sparc/include/asm/spinlock_64.h
2703 +--- linux-2.6.32.46/arch/sparc/include/asm/spinlock_64.h 2011-03-27 14:31:47.000000000 -0400
2704 ++++ linux-2.6.32.46/arch/sparc/include/asm/spinlock_64.h 2011-08-18 23:19:30.000000000 -0400
2705 @@ -92,14 +92,19 @@ static inline void __raw_spin_lock_flags
2706
2707 /* Multi-reader locks, these are much saner than the 32-bit Sparc ones... */
2708 @@ -4139,9 +4139,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.48/
2709 {
2710 unsigned long mask, tmp1, tmp2, result;
2711
2712 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h
2713 ---- linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h 2009-12-02 22:51:21.000000000 -0500
2714 -+++ linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h 2011-11-12 12:46:42.000000000 -0500
2715 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/thread_info_32.h linux-2.6.32.46/arch/sparc/include/asm/thread_info_32.h
2716 +--- linux-2.6.32.46/arch/sparc/include/asm/thread_info_32.h 2011-03-27 14:31:47.000000000 -0400
2717 ++++ linux-2.6.32.46/arch/sparc/include/asm/thread_info_32.h 2011-06-04 20:46:01.000000000 -0400
2718 @@ -50,6 +50,8 @@ struct thread_info {
2719 unsigned long w_saved;
2720
2721 @@ -4151,9 +4151,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h linux-2.6.32.
2722 };
2723
2724 /*
2725 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h
2726 ---- linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h 2011-11-12 12:44:28.000000000 -0500
2727 -+++ linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h 2011-11-12 12:46:42.000000000 -0500
2728 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/thread_info_64.h linux-2.6.32.46/arch/sparc/include/asm/thread_info_64.h
2729 +--- linux-2.6.32.46/arch/sparc/include/asm/thread_info_64.h 2011-03-27 14:31:47.000000000 -0400
2730 ++++ linux-2.6.32.46/arch/sparc/include/asm/thread_info_64.h 2011-06-04 20:46:21.000000000 -0400
2731 @@ -68,6 +68,8 @@ struct thread_info {
2732 struct pt_regs *kern_una_regs;
2733 unsigned int kern_una_insn;
2734 @@ -4163,9 +4163,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h linux-2.6.32.
2735 unsigned long fpregs[0] __attribute__ ((aligned(64)));
2736 };
2737
2738 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h
2739 ---- linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h 2009-12-02 22:51:21.000000000 -0500
2740 -+++ linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h 2011-11-12 12:46:42.000000000 -0500
2741 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/uaccess_32.h linux-2.6.32.46/arch/sparc/include/asm/uaccess_32.h
2742 +--- linux-2.6.32.46/arch/sparc/include/asm/uaccess_32.h 2011-03-27 14:31:47.000000000 -0400
2743 ++++ linux-2.6.32.46/arch/sparc/include/asm/uaccess_32.h 2011-04-17 15:56:46.000000000 -0400
2744 @@ -249,27 +249,46 @@ extern unsigned long __copy_user(void __
2745
2746 static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
2747 @@ -4217,9 +4217,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h linux-2.6.32.48/a
2748 return __copy_user((__force void __user *) to, from, n);
2749 }
2750
2751 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h
2752 ---- linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h 2009-12-02 22:51:21.000000000 -0500
2753 -+++ linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h 2011-11-12 12:46:42.000000000 -0500
2754 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/uaccess_64.h linux-2.6.32.46/arch/sparc/include/asm/uaccess_64.h
2755 +--- linux-2.6.32.46/arch/sparc/include/asm/uaccess_64.h 2011-03-27 14:31:47.000000000 -0400
2756 ++++ linux-2.6.32.46/arch/sparc/include/asm/uaccess_64.h 2011-04-17 15:56:46.000000000 -0400
2757 @@ -9,6 +9,7 @@
2758 #include <linux/compiler.h>
2759 #include <linux/string.h>
2760 @@ -4262,9 +4262,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h linux-2.6.32.48/a
2761 if (unlikely(ret))
2762 ret = copy_to_user_fixup(to, from, size);
2763 return ret;
2764 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess.h linux-2.6.32.48/arch/sparc/include/asm/uaccess.h
2765 ---- linux-2.6.32.48/arch/sparc/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
2766 -+++ linux-2.6.32.48/arch/sparc/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
2767 +diff -urNp linux-2.6.32.46/arch/sparc/include/asm/uaccess.h linux-2.6.32.46/arch/sparc/include/asm/uaccess.h
2768 +--- linux-2.6.32.46/arch/sparc/include/asm/uaccess.h 2011-03-27 14:31:47.000000000 -0400
2769 ++++ linux-2.6.32.46/arch/sparc/include/asm/uaccess.h 2011-04-17 15:56:46.000000000 -0400
2770 @@ -1,5 +1,13 @@
2771 #ifndef ___ASM_SPARC_UACCESS_H
2772 #define ___ASM_SPARC_UACCESS_H
2773 @@ -4279,9 +4279,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess.h linux-2.6.32.48/arch
2774 #if defined(__sparc__) && defined(__arch64__)
2775 #include <asm/uaccess_64.h>
2776 #else
2777 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/iommu.c linux-2.6.32.48/arch/sparc/kernel/iommu.c
2778 ---- linux-2.6.32.48/arch/sparc/kernel/iommu.c 2009-12-02 22:51:21.000000000 -0500
2779 -+++ linux-2.6.32.48/arch/sparc/kernel/iommu.c 2011-11-12 12:46:42.000000000 -0500
2780 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/iommu.c linux-2.6.32.46/arch/sparc/kernel/iommu.c
2781 +--- linux-2.6.32.46/arch/sparc/kernel/iommu.c 2011-03-27 14:31:47.000000000 -0400
2782 ++++ linux-2.6.32.46/arch/sparc/kernel/iommu.c 2011-04-17 15:56:46.000000000 -0400
2783 @@ -826,7 +826,7 @@ static void dma_4u_sync_sg_for_cpu(struc
2784 spin_unlock_irqrestore(&iommu->lock, flags);
2785 }
2786 @@ -4300,9 +4300,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/iommu.c linux-2.6.32.48/arch/sparc/
2787 EXPORT_SYMBOL(dma_ops);
2788
2789 extern int pci64_dma_supported(struct pci_dev *pdev, u64 device_mask);
2790 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/ioport.c linux-2.6.32.48/arch/sparc/kernel/ioport.c
2791 ---- linux-2.6.32.48/arch/sparc/kernel/ioport.c 2009-12-02 22:51:21.000000000 -0500
2792 -+++ linux-2.6.32.48/arch/sparc/kernel/ioport.c 2011-11-12 12:46:42.000000000 -0500
2793 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/ioport.c linux-2.6.32.46/arch/sparc/kernel/ioport.c
2794 +--- linux-2.6.32.46/arch/sparc/kernel/ioport.c 2011-03-27 14:31:47.000000000 -0400
2795 ++++ linux-2.6.32.46/arch/sparc/kernel/ioport.c 2011-04-17 15:56:46.000000000 -0400
2796 @@ -392,7 +392,7 @@ static void sbus_sync_sg_for_device(stru
2797 BUG();
2798 }
2799 @@ -4330,9 +4330,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/ioport.c linux-2.6.32.48/arch/sparc
2800 .alloc_coherent = pci32_alloc_coherent,
2801 .free_coherent = pci32_free_coherent,
2802 .map_page = pci32_map_page,
2803 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c
2804 ---- linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c 2009-12-02 22:51:21.000000000 -0500
2805 -+++ linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c 2011-11-12 12:46:42.000000000 -0500
2806 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/kgdb_32.c linux-2.6.32.46/arch/sparc/kernel/kgdb_32.c
2807 +--- linux-2.6.32.46/arch/sparc/kernel/kgdb_32.c 2011-03-27 14:31:47.000000000 -0400
2808 ++++ linux-2.6.32.46/arch/sparc/kernel/kgdb_32.c 2011-04-17 15:56:46.000000000 -0400
2809 @@ -158,7 +158,7 @@ void kgdb_arch_exit(void)
2810 {
2811 }
2812 @@ -4342,9 +4342,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c linux-2.6.32.48/arch/spar
2813 /* Breakpoint instruction: ta 0x7d */
2814 .gdb_bpt_instr = { 0x91, 0xd0, 0x20, 0x7d },
2815 };
2816 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c
2817 ---- linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c 2009-12-02 22:51:21.000000000 -0500
2818 -+++ linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c 2011-11-12 12:46:42.000000000 -0500
2819 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/kgdb_64.c linux-2.6.32.46/arch/sparc/kernel/kgdb_64.c
2820 +--- linux-2.6.32.46/arch/sparc/kernel/kgdb_64.c 2011-03-27 14:31:47.000000000 -0400
2821 ++++ linux-2.6.32.46/arch/sparc/kernel/kgdb_64.c 2011-04-17 15:56:46.000000000 -0400
2822 @@ -180,7 +180,7 @@ void kgdb_arch_exit(void)
2823 {
2824 }
2825 @@ -4354,9 +4354,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c linux-2.6.32.48/arch/spar
2826 /* Breakpoint instruction: ta 0x72 */
2827 .gdb_bpt_instr = { 0x91, 0xd0, 0x20, 0x72 },
2828 };
2829 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/Makefile linux-2.6.32.48/arch/sparc/kernel/Makefile
2830 ---- linux-2.6.32.48/arch/sparc/kernel/Makefile 2011-11-12 12:44:28.000000000 -0500
2831 -+++ linux-2.6.32.48/arch/sparc/kernel/Makefile 2011-11-12 12:46:42.000000000 -0500
2832 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/Makefile linux-2.6.32.46/arch/sparc/kernel/Makefile
2833 +--- linux-2.6.32.46/arch/sparc/kernel/Makefile 2011-03-27 14:31:47.000000000 -0400
2834 ++++ linux-2.6.32.46/arch/sparc/kernel/Makefile 2011-04-17 15:56:46.000000000 -0400
2835 @@ -3,7 +3,7 @@
2836 #
2837
2838 @@ -4366,9 +4366,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/Makefile linux-2.6.32.48/arch/sparc
2839
2840 extra-y := head_$(BITS).o
2841 extra-y += init_task.o
2842 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c
2843 ---- linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c 2009-12-02 22:51:21.000000000 -0500
2844 -+++ linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c 2011-11-12 12:46:42.000000000 -0500
2845 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/pci_sun4v.c linux-2.6.32.46/arch/sparc/kernel/pci_sun4v.c
2846 +--- linux-2.6.32.46/arch/sparc/kernel/pci_sun4v.c 2011-03-27 14:31:47.000000000 -0400
2847 ++++ linux-2.6.32.46/arch/sparc/kernel/pci_sun4v.c 2011-04-17 15:56:46.000000000 -0400
2848 @@ -525,7 +525,7 @@ static void dma_4v_unmap_sg(struct devic
2849 spin_unlock_irqrestore(&iommu->lock, flags);
2850 }
2851 @@ -4378,9 +4378,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c linux-2.6.32.48/arch/sp
2852 .alloc_coherent = dma_4v_alloc_coherent,
2853 .free_coherent = dma_4v_free_coherent,
2854 .map_page = dma_4v_map_page,
2855 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_32.c linux-2.6.32.48/arch/sparc/kernel/process_32.c
2856 ---- linux-2.6.32.48/arch/sparc/kernel/process_32.c 2011-11-12 12:44:28.000000000 -0500
2857 -+++ linux-2.6.32.48/arch/sparc/kernel/process_32.c 2011-11-12 12:46:42.000000000 -0500
2858 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/process_32.c linux-2.6.32.46/arch/sparc/kernel/process_32.c
2859 +--- linux-2.6.32.46/arch/sparc/kernel/process_32.c 2011-03-27 14:31:47.000000000 -0400
2860 ++++ linux-2.6.32.46/arch/sparc/kernel/process_32.c 2011-04-17 15:56:46.000000000 -0400
2861 @@ -196,7 +196,7 @@ void __show_backtrace(unsigned long fp)
2862 rw->ins[4], rw->ins[5],
2863 rw->ins[6],
2864 @@ -4416,9 +4416,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_32.c linux-2.6.32.48/arch/s
2865 fp = rw->ins[6];
2866 } while (++count < 16);
2867 printk("\n");
2868 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_64.c linux-2.6.32.48/arch/sparc/kernel/process_64.c
2869 ---- linux-2.6.32.48/arch/sparc/kernel/process_64.c 2011-11-12 12:44:28.000000000 -0500
2870 -+++ linux-2.6.32.48/arch/sparc/kernel/process_64.c 2011-11-12 12:46:42.000000000 -0500
2871 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/process_64.c linux-2.6.32.46/arch/sparc/kernel/process_64.c
2872 +--- linux-2.6.32.46/arch/sparc/kernel/process_64.c 2011-03-27 14:31:47.000000000 -0400
2873 ++++ linux-2.6.32.46/arch/sparc/kernel/process_64.c 2011-04-17 15:56:46.000000000 -0400
2874 @@ -180,14 +180,14 @@ static void show_regwindow(struct pt_reg
2875 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n",
2876 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]);
2877 @@ -4454,9 +4454,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_64.c linux-2.6.32.48/arch/s
2878 (void *) gp->tpc,
2879 (void *) gp->o7,
2880 (void *) gp->i7,
2881 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c
2882 ---- linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c 2011-11-12 12:44:28.000000000 -0500
2883 -+++ linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c 2011-11-12 12:46:42.000000000 -0500
2884 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/sys_sparc_32.c linux-2.6.32.46/arch/sparc/kernel/sys_sparc_32.c
2885 +--- linux-2.6.32.46/arch/sparc/kernel/sys_sparc_32.c 2011-03-27 14:31:47.000000000 -0400
2886 ++++ linux-2.6.32.46/arch/sparc/kernel/sys_sparc_32.c 2011-04-17 15:56:46.000000000 -0400
2887 @@ -57,7 +57,7 @@ unsigned long arch_get_unmapped_area(str
2888 if (ARCH_SUN4C && len > 0x20000000)
2889 return -ENOMEM;
2890 @@ -4475,9 +4475,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c linux-2.6.32.48/arch
2891 return addr;
2892 addr = vmm->vm_end;
2893 if (flags & MAP_SHARED)
2894 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c
2895 ---- linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c 2011-11-12 12:44:28.000000000 -0500
2896 -+++ linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c 2011-11-12 12:46:42.000000000 -0500
2897 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.46/arch/sparc/kernel/sys_sparc_64.c
2898 +--- linux-2.6.32.46/arch/sparc/kernel/sys_sparc_64.c 2011-03-27 14:31:47.000000000 -0400
2899 ++++ linux-2.6.32.46/arch/sparc/kernel/sys_sparc_64.c 2011-04-17 15:56:46.000000000 -0400
2900 @@ -125,7 +125,7 @@ unsigned long arch_get_unmapped_area(str
2901 /* We do not accept a shared mapping if it would violate
2902 * cache aliasing constraints.
2903 @@ -4625,9 +4625,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
2904 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
2905 mm->unmap_area = arch_unmap_area_topdown;
2906 }
2907 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_32.c linux-2.6.32.48/arch/sparc/kernel/traps_32.c
2908 ---- linux-2.6.32.48/arch/sparc/kernel/traps_32.c 2009-12-02 22:51:21.000000000 -0500
2909 -+++ linux-2.6.32.48/arch/sparc/kernel/traps_32.c 2011-11-12 12:46:42.000000000 -0500
2910 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/traps_32.c linux-2.6.32.46/arch/sparc/kernel/traps_32.c
2911 +--- linux-2.6.32.46/arch/sparc/kernel/traps_32.c 2011-03-27 14:31:47.000000000 -0400
2912 ++++ linux-2.6.32.46/arch/sparc/kernel/traps_32.c 2011-06-13 21:25:39.000000000 -0400
2913 @@ -44,6 +44,8 @@ static void instruction_dump(unsigned lo
2914 #define __SAVE __asm__ __volatile__("save %sp, -0x40, %sp\n\t")
2915 #define __RESTORE __asm__ __volatile__("restore %g0, %g0, %g0\n\t")
2916 @@ -4657,9 +4657,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_32.c linux-2.6.32.48/arch/spa
2917 do_exit(SIGSEGV);
2918 }
2919
2920 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/sparc/kernel/traps_64.c
2921 ---- linux-2.6.32.48/arch/sparc/kernel/traps_64.c 2009-12-02 22:51:21.000000000 -0500
2922 -+++ linux-2.6.32.48/arch/sparc/kernel/traps_64.c 2011-11-12 12:46:42.000000000 -0500
2923 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/traps_64.c linux-2.6.32.46/arch/sparc/kernel/traps_64.c
2924 +--- linux-2.6.32.46/arch/sparc/kernel/traps_64.c 2011-03-27 14:31:47.000000000 -0400
2925 ++++ linux-2.6.32.46/arch/sparc/kernel/traps_64.c 2011-06-13 21:24:11.000000000 -0400
2926 @@ -73,7 +73,7 @@ static void dump_tl1_traplog(struct tl1_
2927 i + 1,
2928 p->trapstack[i].tstate, p->trapstack[i].tpc,
2929 @@ -4791,9 +4791,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
2930 do_exit(SIGSEGV);
2931 }
2932 EXPORT_SYMBOL(die_if_kernel);
2933 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S
2934 ---- linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S 2009-12-02 22:51:21.000000000 -0500
2935 -+++ linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S 2011-11-12 12:46:42.000000000 -0500
2936 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/una_asm_64.S linux-2.6.32.46/arch/sparc/kernel/una_asm_64.S
2937 +--- linux-2.6.32.46/arch/sparc/kernel/una_asm_64.S 2011-03-27 14:31:47.000000000 -0400
2938 ++++ linux-2.6.32.46/arch/sparc/kernel/una_asm_64.S 2011-07-13 22:20:05.000000000 -0400
2939 @@ -127,7 +127,7 @@ do_int_load:
2940 wr %o5, 0x0, %asi
2941 retl
2942 @@ -4803,9 +4803,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S linux-2.6.32.48/arch/s
2943
2944 .section __ex_table,"a"
2945 .word 4b, __retl_efault
2946 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c
2947 ---- linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c 2009-12-02 22:51:21.000000000 -0500
2948 -+++ linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c 2011-11-12 12:46:42.000000000 -0500
2949 +diff -urNp linux-2.6.32.46/arch/sparc/kernel/unaligned_64.c linux-2.6.32.46/arch/sparc/kernel/unaligned_64.c
2950 +--- linux-2.6.32.46/arch/sparc/kernel/unaligned_64.c 2011-03-27 14:31:47.000000000 -0400
2951 ++++ linux-2.6.32.46/arch/sparc/kernel/unaligned_64.c 2011-04-17 15:56:46.000000000 -0400
2952 @@ -288,7 +288,7 @@ static void log_unaligned(struct pt_regs
2953 if (count < 5) {
2954 last_time = jiffies;
2955 @@ -4815,9 +4815,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c linux-2.6.32.48/arch
2956 regs->tpc, (void *) regs->tpc);
2957 }
2958 }
2959 -diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc/lib/atomic_64.S
2960 ---- linux-2.6.32.48/arch/sparc/lib/atomic_64.S 2009-12-02 22:51:21.000000000 -0500
2961 -+++ linux-2.6.32.48/arch/sparc/lib/atomic_64.S 2011-11-12 12:46:42.000000000 -0500
2962 +diff -urNp linux-2.6.32.46/arch/sparc/lib/atomic_64.S linux-2.6.32.46/arch/sparc/lib/atomic_64.S
2963 +--- linux-2.6.32.46/arch/sparc/lib/atomic_64.S 2011-03-27 14:31:47.000000000 -0400
2964 ++++ linux-2.6.32.46/arch/sparc/lib/atomic_64.S 2011-04-17 15:56:46.000000000 -0400
2965 @@ -18,7 +18,12 @@
2966 atomic_add: /* %o0 = increment, %o1 = atomic_ptr */
2967 BACKOFF_SETUP(%o2)
2968 @@ -5052,9 +5052,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
2969 casx [%o1], %g1, %g7
2970 cmp %g1, %g7
2971 bne,pn %xcc, 2f
2972 -diff -urNp linux-2.6.32.48/arch/sparc/lib/ksyms.c linux-2.6.32.48/arch/sparc/lib/ksyms.c
2973 ---- linux-2.6.32.48/arch/sparc/lib/ksyms.c 2009-12-02 22:51:21.000000000 -0500
2974 -+++ linux-2.6.32.48/arch/sparc/lib/ksyms.c 2011-11-12 12:46:42.000000000 -0500
2975 +diff -urNp linux-2.6.32.46/arch/sparc/lib/ksyms.c linux-2.6.32.46/arch/sparc/lib/ksyms.c
2976 +--- linux-2.6.32.46/arch/sparc/lib/ksyms.c 2011-03-27 14:31:47.000000000 -0400
2977 ++++ linux-2.6.32.46/arch/sparc/lib/ksyms.c 2011-08-19 23:05:14.000000000 -0400
2978 @@ -144,12 +144,18 @@ EXPORT_SYMBOL(__downgrade_write);
2979
2980 /* Atomic counter implementation. */
2981 @@ -5074,9 +5074,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/ksyms.c linux-2.6.32.48/arch/sparc/lib
2982 EXPORT_SYMBOL(atomic64_sub_ret);
2983
2984 /* Atomic bit operations. */
2985 -diff -urNp linux-2.6.32.48/arch/sparc/lib/Makefile linux-2.6.32.48/arch/sparc/lib/Makefile
2986 ---- linux-2.6.32.48/arch/sparc/lib/Makefile 2009-12-02 22:51:21.000000000 -0500
2987 -+++ linux-2.6.32.48/arch/sparc/lib/Makefile 2011-11-12 12:46:42.000000000 -0500
2988 +diff -urNp linux-2.6.32.46/arch/sparc/lib/Makefile linux-2.6.32.46/arch/sparc/lib/Makefile
2989 +--- linux-2.6.32.46/arch/sparc/lib/Makefile 2011-03-27 14:31:47.000000000 -0400
2990 ++++ linux-2.6.32.46/arch/sparc/lib/Makefile 2011-05-17 19:26:34.000000000 -0400
2991 @@ -2,7 +2,7 @@
2992 #
2993
2994 @@ -5086,9 +5086,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/Makefile linux-2.6.32.48/arch/sparc/li
2995
2996 lib-$(CONFIG_SPARC32) += mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o
2997 lib-$(CONFIG_SPARC32) += memcpy.o memset.o
2998 -diff -urNp linux-2.6.32.48/arch/sparc/lib/rwsem_64.S linux-2.6.32.48/arch/sparc/lib/rwsem_64.S
2999 ---- linux-2.6.32.48/arch/sparc/lib/rwsem_64.S 2009-12-02 22:51:21.000000000 -0500
3000 -+++ linux-2.6.32.48/arch/sparc/lib/rwsem_64.S 2011-11-12 12:46:42.000000000 -0500
3001 +diff -urNp linux-2.6.32.46/arch/sparc/lib/rwsem_64.S linux-2.6.32.46/arch/sparc/lib/rwsem_64.S
3002 +--- linux-2.6.32.46/arch/sparc/lib/rwsem_64.S 2011-03-27 14:31:47.000000000 -0400
3003 ++++ linux-2.6.32.46/arch/sparc/lib/rwsem_64.S 2011-04-17 15:56:46.000000000 -0400
3004 @@ -11,7 +11,12 @@
3005 .globl __down_read
3006 __down_read:
3007 @@ -5187,9 +5187,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/rwsem_64.S linux-2.6.32.48/arch/sparc/
3008 cas [%o0], %g3, %g7
3009 cmp %g3, %g7
3010 bne,pn %icc, 1b
3011 -diff -urNp linux-2.6.32.48/arch/sparc/Makefile linux-2.6.32.48/arch/sparc/Makefile
3012 ---- linux-2.6.32.48/arch/sparc/Makefile 2011-11-12 12:44:28.000000000 -0500
3013 -+++ linux-2.6.32.48/arch/sparc/Makefile 2011-11-12 12:46:42.000000000 -0500
3014 +diff -urNp linux-2.6.32.46/arch/sparc/Makefile linux-2.6.32.46/arch/sparc/Makefile
3015 +--- linux-2.6.32.46/arch/sparc/Makefile 2011-03-27 14:31:47.000000000 -0400
3016 ++++ linux-2.6.32.46/arch/sparc/Makefile 2011-04-17 15:56:46.000000000 -0400
3017 @@ -75,7 +75,7 @@ drivers-$(CONFIG_OPROFILE) += arch/sparc
3018 # Export what is needed by arch/sparc/boot/Makefile
3019 export VMLINUX_INIT VMLINUX_MAIN
3020 @@ -5199,9 +5199,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/Makefile linux-2.6.32.48/arch/sparc/Makefi
3021 VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y)
3022 VMLINUX_MAIN += $(drivers-y) $(net-y)
3023
3024 -diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_32.c linux-2.6.32.48/arch/sparc/mm/fault_32.c
3025 ---- linux-2.6.32.48/arch/sparc/mm/fault_32.c 2009-12-02 22:51:21.000000000 -0500
3026 -+++ linux-2.6.32.48/arch/sparc/mm/fault_32.c 2011-11-12 12:46:42.000000000 -0500
3027 +diff -urNp linux-2.6.32.46/arch/sparc/mm/fault_32.c linux-2.6.32.46/arch/sparc/mm/fault_32.c
3028 +--- linux-2.6.32.46/arch/sparc/mm/fault_32.c 2011-03-27 14:31:47.000000000 -0400
3029 ++++ linux-2.6.32.46/arch/sparc/mm/fault_32.c 2011-04-17 15:56:46.000000000 -0400
3030 @@ -21,6 +21,9 @@
3031 #include <linux/interrupt.h>
3032 #include <linux/module.h>
3033 @@ -5505,9 +5505,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_32.c linux-2.6.32.48/arch/sparc/m
3034 /* Allow reads even for write-only mappings */
3035 if(!(vma->vm_flags & (VM_READ | VM_EXEC)))
3036 goto bad_area;
3037 -diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/mm/fault_64.c
3038 ---- linux-2.6.32.48/arch/sparc/mm/fault_64.c 2009-12-02 22:51:21.000000000 -0500
3039 -+++ linux-2.6.32.48/arch/sparc/mm/fault_64.c 2011-11-12 12:46:42.000000000 -0500
3040 +diff -urNp linux-2.6.32.46/arch/sparc/mm/fault_64.c linux-2.6.32.46/arch/sparc/mm/fault_64.c
3041 +--- linux-2.6.32.46/arch/sparc/mm/fault_64.c 2011-03-27 14:31:47.000000000 -0400
3042 ++++ linux-2.6.32.46/arch/sparc/mm/fault_64.c 2011-04-17 15:56:46.000000000 -0400
3043 @@ -20,6 +20,9 @@
3044 #include <linux/kprobes.h>
3045 #include <linux/kdebug.h>
3046 @@ -6014,9 +6014,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/m
3047 /* Pure DTLB misses do not tell us whether the fault causing
3048 * load/store/atomic was a write or not, it only says that there
3049 * was no match. So in such a case we (carefully) read the
3050 -diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c
3051 ---- linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c 2009-12-02 22:51:21.000000000 -0500
3052 -+++ linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c 2011-11-12 12:46:42.000000000 -0500
3053 +diff -urNp linux-2.6.32.46/arch/sparc/mm/hugetlbpage.c linux-2.6.32.46/arch/sparc/mm/hugetlbpage.c
3054 +--- linux-2.6.32.46/arch/sparc/mm/hugetlbpage.c 2011-03-27 14:31:47.000000000 -0400
3055 ++++ linux-2.6.32.46/arch/sparc/mm/hugetlbpage.c 2011-04-17 15:56:46.000000000 -0400
3056 @@ -69,7 +69,7 @@ full_search:
3057 }
3058 return -ENOMEM;
3059 @@ -6076,9 +6076,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/spar
3060 return addr;
3061 }
3062 if (mm->get_unmapped_area == arch_get_unmapped_area)
3063 -diff -urNp linux-2.6.32.48/arch/sparc/mm/init_32.c linux-2.6.32.48/arch/sparc/mm/init_32.c
3064 ---- linux-2.6.32.48/arch/sparc/mm/init_32.c 2009-12-02 22:51:21.000000000 -0500
3065 -+++ linux-2.6.32.48/arch/sparc/mm/init_32.c 2011-11-12 12:46:42.000000000 -0500
3066 +diff -urNp linux-2.6.32.46/arch/sparc/mm/init_32.c linux-2.6.32.46/arch/sparc/mm/init_32.c
3067 +--- linux-2.6.32.46/arch/sparc/mm/init_32.c 2011-03-27 14:31:47.000000000 -0400
3068 ++++ linux-2.6.32.46/arch/sparc/mm/init_32.c 2011-04-17 15:56:46.000000000 -0400
3069 @@ -317,6 +317,9 @@ extern void device_scan(void);
3070 pgprot_t PAGE_SHARED __read_mostly;
3071 EXPORT_SYMBOL(PAGE_SHARED);
3072 @@ -6113,9 +6113,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/init_32.c linux-2.6.32.48/arch/sparc/mm
3073 protection_map[12] = PAGE_READONLY;
3074 protection_map[13] = PAGE_READONLY;
3075 protection_map[14] = PAGE_SHARED;
3076 -diff -urNp linux-2.6.32.48/arch/sparc/mm/Makefile linux-2.6.32.48/arch/sparc/mm/Makefile
3077 ---- linux-2.6.32.48/arch/sparc/mm/Makefile 2009-12-02 22:51:21.000000000 -0500
3078 -+++ linux-2.6.32.48/arch/sparc/mm/Makefile 2011-11-12 12:46:42.000000000 -0500
3079 +diff -urNp linux-2.6.32.46/arch/sparc/mm/Makefile linux-2.6.32.46/arch/sparc/mm/Makefile
3080 +--- linux-2.6.32.46/arch/sparc/mm/Makefile 2011-03-27 14:31:47.000000000 -0400
3081 ++++ linux-2.6.32.46/arch/sparc/mm/Makefile 2011-04-17 15:56:46.000000000 -0400
3082 @@ -2,7 +2,7 @@
3083 #
3084
3085 @@ -6125,9 +6125,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/Makefile linux-2.6.32.48/arch/sparc/mm/
3086
3087 obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o
3088 obj-y += fault_$(BITS).o
3089 -diff -urNp linux-2.6.32.48/arch/sparc/mm/srmmu.c linux-2.6.32.48/arch/sparc/mm/srmmu.c
3090 ---- linux-2.6.32.48/arch/sparc/mm/srmmu.c 2009-12-02 22:51:21.000000000 -0500
3091 -+++ linux-2.6.32.48/arch/sparc/mm/srmmu.c 2011-11-12 12:46:42.000000000 -0500
3092 +diff -urNp linux-2.6.32.46/arch/sparc/mm/srmmu.c linux-2.6.32.46/arch/sparc/mm/srmmu.c
3093 +--- linux-2.6.32.46/arch/sparc/mm/srmmu.c 2011-03-27 14:31:47.000000000 -0400
3094 ++++ linux-2.6.32.46/arch/sparc/mm/srmmu.c 2011-04-17 15:56:46.000000000 -0400
3095 @@ -2200,6 +2200,13 @@ void __init ld_mmu_srmmu(void)
3096 PAGE_SHARED = pgprot_val(SRMMU_PAGE_SHARED);
3097 BTFIXUPSET_INT(page_copy, pgprot_val(SRMMU_PAGE_COPY));
3098 @@ -6142,9 +6142,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/srmmu.c linux-2.6.32.48/arch/sparc/mm/s
3099 BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL));
3100 page_kernel = pgprot_val(SRMMU_PAGE_KERNEL);
3101
3102 -diff -urNp linux-2.6.32.48/arch/um/include/asm/kmap_types.h linux-2.6.32.48/arch/um/include/asm/kmap_types.h
3103 ---- linux-2.6.32.48/arch/um/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
3104 -+++ linux-2.6.32.48/arch/um/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
3105 +diff -urNp linux-2.6.32.46/arch/um/include/asm/kmap_types.h linux-2.6.32.46/arch/um/include/asm/kmap_types.h
3106 +--- linux-2.6.32.46/arch/um/include/asm/kmap_types.h 2011-03-27 14:31:47.000000000 -0400
3107 ++++ linux-2.6.32.46/arch/um/include/asm/kmap_types.h 2011-04-17 15:56:46.000000000 -0400
3108 @@ -23,6 +23,7 @@ enum km_type {
3109 KM_IRQ1,
3110 KM_SOFTIRQ0,
3111 @@ -6153,9 +6153,9 @@ diff -urNp linux-2.6.32.48/arch/um/include/asm/kmap_types.h linux-2.6.32.48/arch
3112 KM_TYPE_NR
3113 };
3114
3115 -diff -urNp linux-2.6.32.48/arch/um/include/asm/page.h linux-2.6.32.48/arch/um/include/asm/page.h
3116 ---- linux-2.6.32.48/arch/um/include/asm/page.h 2009-12-02 22:51:21.000000000 -0500
3117 -+++ linux-2.6.32.48/arch/um/include/asm/page.h 2011-11-12 12:46:42.000000000 -0500
3118 +diff -urNp linux-2.6.32.46/arch/um/include/asm/page.h linux-2.6.32.46/arch/um/include/asm/page.h
3119 +--- linux-2.6.32.46/arch/um/include/asm/page.h 2011-03-27 14:31:47.000000000 -0400
3120 ++++ linux-2.6.32.46/arch/um/include/asm/page.h 2011-04-17 15:56:46.000000000 -0400
3121 @@ -14,6 +14,9 @@
3122 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
3123 #define PAGE_MASK (~(PAGE_SIZE-1))
3124 @@ -6166,9 +6166,9 @@ diff -urNp linux-2.6.32.48/arch/um/include/asm/page.h linux-2.6.32.48/arch/um/in
3125 #ifndef __ASSEMBLY__
3126
3127 struct page;
3128 -diff -urNp linux-2.6.32.48/arch/um/kernel/process.c linux-2.6.32.48/arch/um/kernel/process.c
3129 ---- linux-2.6.32.48/arch/um/kernel/process.c 2009-12-02 22:51:21.000000000 -0500
3130 -+++ linux-2.6.32.48/arch/um/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
3131 +diff -urNp linux-2.6.32.46/arch/um/kernel/process.c linux-2.6.32.46/arch/um/kernel/process.c
3132 +--- linux-2.6.32.46/arch/um/kernel/process.c 2011-03-27 14:31:47.000000000 -0400
3133 ++++ linux-2.6.32.46/arch/um/kernel/process.c 2011-04-17 15:56:46.000000000 -0400
3134 @@ -393,22 +393,6 @@ int singlestepping(void * t)
3135 return 2;
3136 }
3137 @@ -6192,9 +6192,9 @@ diff -urNp linux-2.6.32.48/arch/um/kernel/process.c linux-2.6.32.48/arch/um/kern
3138 unsigned long get_wchan(struct task_struct *p)
3139 {
3140 unsigned long stack_page, sp, ip;
3141 -diff -urNp linux-2.6.32.48/arch/um/sys-i386/syscalls.c linux-2.6.32.48/arch/um/sys-i386/syscalls.c
3142 ---- linux-2.6.32.48/arch/um/sys-i386/syscalls.c 2009-12-02 22:51:21.000000000 -0500
3143 -+++ linux-2.6.32.48/arch/um/sys-i386/syscalls.c 2011-11-12 12:46:42.000000000 -0500
3144 +diff -urNp linux-2.6.32.46/arch/um/sys-i386/syscalls.c linux-2.6.32.46/arch/um/sys-i386/syscalls.c
3145 +--- linux-2.6.32.46/arch/um/sys-i386/syscalls.c 2011-03-27 14:31:47.000000000 -0400
3146 ++++ linux-2.6.32.46/arch/um/sys-i386/syscalls.c 2011-04-17 15:56:46.000000000 -0400
3147 @@ -11,6 +11,21 @@
3148 #include "asm/uaccess.h"
3149 #include "asm/unistd.h"
3150 @@ -6217,9 +6217,9 @@ diff -urNp linux-2.6.32.48/arch/um/sys-i386/syscalls.c linux-2.6.32.48/arch/um/s
3151 /*
3152 * Perform the select(nd, in, out, ex, tv) and mmap() system
3153 * calls. Linux/i386 didn't use to be able to handle more than
3154 -diff -urNp linux-2.6.32.48/arch/x86/boot/bitops.h linux-2.6.32.48/arch/x86/boot/bitops.h
3155 ---- linux-2.6.32.48/arch/x86/boot/bitops.h 2009-12-02 22:51:21.000000000 -0500
3156 -+++ linux-2.6.32.48/arch/x86/boot/bitops.h 2011-11-12 12:46:42.000000000 -0500
3157 +diff -urNp linux-2.6.32.46/arch/x86/boot/bitops.h linux-2.6.32.46/arch/x86/boot/bitops.h
3158 +--- linux-2.6.32.46/arch/x86/boot/bitops.h 2011-03-27 14:31:47.000000000 -0400
3159 ++++ linux-2.6.32.46/arch/x86/boot/bitops.h 2011-04-17 15:56:46.000000000 -0400
3160 @@ -26,7 +26,7 @@ static inline int variable_test_bit(int
3161 u8 v;
3162 const u32 *p = (const u32 *)addr;
3163 @@ -6238,9 +6238,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/bitops.h linux-2.6.32.48/arch/x86/boot/
3164 }
3165
3166 #endif /* BOOT_BITOPS_H */
3167 -diff -urNp linux-2.6.32.48/arch/x86/boot/boot.h linux-2.6.32.48/arch/x86/boot/boot.h
3168 ---- linux-2.6.32.48/arch/x86/boot/boot.h 2009-12-02 22:51:21.000000000 -0500
3169 -+++ linux-2.6.32.48/arch/x86/boot/boot.h 2011-11-12 12:46:42.000000000 -0500
3170 +diff -urNp linux-2.6.32.46/arch/x86/boot/boot.h linux-2.6.32.46/arch/x86/boot/boot.h
3171 +--- linux-2.6.32.46/arch/x86/boot/boot.h 2011-03-27 14:31:47.000000000 -0400
3172 ++++ linux-2.6.32.46/arch/x86/boot/boot.h 2011-04-17 15:56:46.000000000 -0400
3173 @@ -82,7 +82,7 @@ static inline void io_delay(void)
3174 static inline u16 ds(void)
3175 {
3176 @@ -6259,9 +6259,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/boot.h linux-2.6.32.48/arch/x86/boot/bo
3177 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
3178 return diff;
3179 }
3180 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_32.S linux-2.6.32.48/arch/x86/boot/compressed/head_32.S
3181 ---- linux-2.6.32.48/arch/x86/boot/compressed/head_32.S 2009-12-02 22:51:21.000000000 -0500
3182 -+++ linux-2.6.32.48/arch/x86/boot/compressed/head_32.S 2011-11-12 12:46:42.000000000 -0500
3183 +diff -urNp linux-2.6.32.46/arch/x86/boot/compressed/head_32.S linux-2.6.32.46/arch/x86/boot/compressed/head_32.S
3184 +--- linux-2.6.32.46/arch/x86/boot/compressed/head_32.S 2011-03-27 14:31:47.000000000 -0400
3185 ++++ linux-2.6.32.46/arch/x86/boot/compressed/head_32.S 2011-04-17 15:56:46.000000000 -0400
3186 @@ -76,7 +76,7 @@ ENTRY(startup_32)
3187 notl %eax
3188 andl %eax, %ebx
3189 @@ -6290,9 +6290,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_32.S linux-2.6.32.48/ar
3190 addl %ebx, -__PAGE_OFFSET(%ebx, %ecx)
3191 jmp 1b
3192 2:
3193 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_64.S linux-2.6.32.48/arch/x86/boot/compressed/head_64.S
3194 ---- linux-2.6.32.48/arch/x86/boot/compressed/head_64.S 2009-12-02 22:51:21.000000000 -0500
3195 -+++ linux-2.6.32.48/arch/x86/boot/compressed/head_64.S 2011-11-12 12:46:42.000000000 -0500
3196 +diff -urNp linux-2.6.32.46/arch/x86/boot/compressed/head_64.S linux-2.6.32.46/arch/x86/boot/compressed/head_64.S
3197 +--- linux-2.6.32.46/arch/x86/boot/compressed/head_64.S 2011-03-27 14:31:47.000000000 -0400
3198 ++++ linux-2.6.32.46/arch/x86/boot/compressed/head_64.S 2011-07-01 18:53:00.000000000 -0400
3199 @@ -91,7 +91,7 @@ ENTRY(startup_32)
3200 notl %eax
3201 andl %eax, %ebx
3202 @@ -6320,9 +6320,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_64.S linux-2.6.32.48/ar
3203 #endif
3204
3205 /* Target address to relocate to for decompression */
3206 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/Makefile linux-2.6.32.48/arch/x86/boot/compressed/Makefile
3207 ---- linux-2.6.32.48/arch/x86/boot/compressed/Makefile 2009-12-02 22:51:21.000000000 -0500
3208 -+++ linux-2.6.32.48/arch/x86/boot/compressed/Makefile 2011-11-12 12:46:42.000000000 -0500
3209 +diff -urNp linux-2.6.32.46/arch/x86/boot/compressed/Makefile linux-2.6.32.46/arch/x86/boot/compressed/Makefile
3210 +--- linux-2.6.32.46/arch/x86/boot/compressed/Makefile 2011-03-27 14:31:47.000000000 -0400
3211 ++++ linux-2.6.32.46/arch/x86/boot/compressed/Makefile 2011-08-07 14:38:34.000000000 -0400
3212 @@ -13,6 +13,9 @@ cflags-$(CONFIG_X86_64) := -mcmodel=smal
3213 KBUILD_CFLAGS += $(cflags-y)
3214 KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
3215 @@ -6333,9 +6333,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/Makefile linux-2.6.32.48/arc
3216
3217 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
3218 GCOV_PROFILE := n
3219 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/misc.c linux-2.6.32.48/arch/x86/boot/compressed/misc.c
3220 ---- linux-2.6.32.48/arch/x86/boot/compressed/misc.c 2009-12-02 22:51:21.000000000 -0500
3221 -+++ linux-2.6.32.48/arch/x86/boot/compressed/misc.c 2011-11-12 12:46:42.000000000 -0500
3222 +diff -urNp linux-2.6.32.46/arch/x86/boot/compressed/misc.c linux-2.6.32.46/arch/x86/boot/compressed/misc.c
3223 +--- linux-2.6.32.46/arch/x86/boot/compressed/misc.c 2011-03-27 14:31:47.000000000 -0400
3224 ++++ linux-2.6.32.46/arch/x86/boot/compressed/misc.c 2011-04-17 15:56:46.000000000 -0400
3225 @@ -288,7 +288,7 @@ static void parse_elf(void *output)
3226 case PT_LOAD:
3227 #ifdef CONFIG_RELOCATABLE
3228 @@ -6354,9 +6354,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/misc.c linux-2.6.32.48/arch/
3229 error("Wrong destination address");
3230 #endif
3231
3232 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c
3233 ---- linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c 2009-12-02 22:51:21.000000000 -0500
3234 -+++ linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c 2011-11-12 12:46:42.000000000 -0500
3235 +diff -urNp linux-2.6.32.46/arch/x86/boot/compressed/mkpiggy.c linux-2.6.32.46/arch/x86/boot/compressed/mkpiggy.c
3236 +--- linux-2.6.32.46/arch/x86/boot/compressed/mkpiggy.c 2011-03-27 14:31:47.000000000 -0400
3237 ++++ linux-2.6.32.46/arch/x86/boot/compressed/mkpiggy.c 2011-04-17 15:56:46.000000000 -0400
3238 @@ -74,7 +74,7 @@ int main(int argc, char *argv[])
3239
3240 offs = (olen > ilen) ? olen - ilen : 0;
3241 @@ -6366,9 +6366,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c linux-2.6.32.48/ar
3242 offs = (offs+4095) & ~4095; /* Round to a 4K boundary */
3243
3244 printf(".section \".rodata.compressed\",\"a\",@progbits\n");
3245 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arch/x86/boot/compressed/relocs.c
3246 ---- linux-2.6.32.48/arch/x86/boot/compressed/relocs.c 2009-12-02 22:51:21.000000000 -0500
3247 -+++ linux-2.6.32.48/arch/x86/boot/compressed/relocs.c 2011-11-12 12:46:42.000000000 -0500
3248 +diff -urNp linux-2.6.32.46/arch/x86/boot/compressed/relocs.c linux-2.6.32.46/arch/x86/boot/compressed/relocs.c
3249 +--- linux-2.6.32.46/arch/x86/boot/compressed/relocs.c 2011-03-27 14:31:47.000000000 -0400
3250 ++++ linux-2.6.32.46/arch/x86/boot/compressed/relocs.c 2011-04-17 15:56:46.000000000 -0400
3251 @@ -10,8 +10,11 @@
3252 #define USE_BSD
3253 #include <endian.h>
3254 @@ -6569,9 +6569,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
3255 read_shdrs(fp);
3256 read_strtabs(fp);
3257 read_symtabs(fp);
3258 -diff -urNp linux-2.6.32.48/arch/x86/boot/cpucheck.c linux-2.6.32.48/arch/x86/boot/cpucheck.c
3259 ---- linux-2.6.32.48/arch/x86/boot/cpucheck.c 2009-12-02 22:51:21.000000000 -0500
3260 -+++ linux-2.6.32.48/arch/x86/boot/cpucheck.c 2011-11-12 12:46:42.000000000 -0500
3261 +diff -urNp linux-2.6.32.46/arch/x86/boot/cpucheck.c linux-2.6.32.46/arch/x86/boot/cpucheck.c
3262 +--- linux-2.6.32.46/arch/x86/boot/cpucheck.c 2011-03-27 14:31:47.000000000 -0400
3263 ++++ linux-2.6.32.46/arch/x86/boot/cpucheck.c 2011-04-17 15:56:46.000000000 -0400
3264 @@ -74,7 +74,7 @@ static int has_fpu(void)
3265 u16 fcw = -1, fsw = -1;
3266 u32 cr0;
3267 @@ -6667,9 +6667,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/cpucheck.c linux-2.6.32.48/arch/x86/boo
3268
3269 err = check_flags();
3270 }
3271 -diff -urNp linux-2.6.32.48/arch/x86/boot/header.S linux-2.6.32.48/arch/x86/boot/header.S
3272 ---- linux-2.6.32.48/arch/x86/boot/header.S 2009-12-02 22:51:21.000000000 -0500
3273 -+++ linux-2.6.32.48/arch/x86/boot/header.S 2011-11-12 12:46:42.000000000 -0500
3274 +diff -urNp linux-2.6.32.46/arch/x86/boot/header.S linux-2.6.32.46/arch/x86/boot/header.S
3275 +--- linux-2.6.32.46/arch/x86/boot/header.S 2011-03-27 14:31:47.000000000 -0400
3276 ++++ linux-2.6.32.46/arch/x86/boot/header.S 2011-04-17 15:56:46.000000000 -0400
3277 @@ -224,7 +224,7 @@ setup_data: .quad 0 # 64-bit physical
3278 # single linked list of
3279 # struct setup_data
3280 @@ -6679,9 +6679,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/header.S linux-2.6.32.48/arch/x86/boot/
3281
3282 #define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset)
3283 #define VO_INIT_SIZE (VO__end - VO__text)
3284 -diff -urNp linux-2.6.32.48/arch/x86/boot/Makefile linux-2.6.32.48/arch/x86/boot/Makefile
3285 ---- linux-2.6.32.48/arch/x86/boot/Makefile 2009-12-02 22:51:21.000000000 -0500
3286 -+++ linux-2.6.32.48/arch/x86/boot/Makefile 2011-11-12 12:46:42.000000000 -0500
3287 +diff -urNp linux-2.6.32.46/arch/x86/boot/Makefile linux-2.6.32.46/arch/x86/boot/Makefile
3288 +--- linux-2.6.32.46/arch/x86/boot/Makefile 2011-03-27 14:31:47.000000000 -0400
3289 ++++ linux-2.6.32.46/arch/x86/boot/Makefile 2011-08-07 14:38:13.000000000 -0400
3290 @@ -69,6 +69,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
3291 $(call cc-option, -fno-stack-protector) \
3292 $(call cc-option, -mpreferred-stack-boundary=2)
3293 @@ -6692,9 +6692,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/Makefile linux-2.6.32.48/arch/x86/boot/
3294 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
3295 GCOV_PROFILE := n
3296
3297 -diff -urNp linux-2.6.32.48/arch/x86/boot/memory.c linux-2.6.32.48/arch/x86/boot/memory.c
3298 ---- linux-2.6.32.48/arch/x86/boot/memory.c 2009-12-02 22:51:21.000000000 -0500
3299 -+++ linux-2.6.32.48/arch/x86/boot/memory.c 2011-11-12 12:46:42.000000000 -0500
3300 +diff -urNp linux-2.6.32.46/arch/x86/boot/memory.c linux-2.6.32.46/arch/x86/boot/memory.c
3301 +--- linux-2.6.32.46/arch/x86/boot/memory.c 2011-03-27 14:31:47.000000000 -0400
3302 ++++ linux-2.6.32.46/arch/x86/boot/memory.c 2011-04-17 15:56:46.000000000 -0400
3303 @@ -19,7 +19,7 @@
3304
3305 static int detect_memory_e820(void)
3306 @@ -6704,9 +6704,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/memory.c linux-2.6.32.48/arch/x86/boot/
3307 struct biosregs ireg, oreg;
3308 struct e820entry *desc = boot_params.e820_map;
3309 static struct e820entry buf; /* static so it is zeroed */
3310 -diff -urNp linux-2.6.32.48/arch/x86/boot/video.c linux-2.6.32.48/arch/x86/boot/video.c
3311 ---- linux-2.6.32.48/arch/x86/boot/video.c 2009-12-02 22:51:21.000000000 -0500
3312 -+++ linux-2.6.32.48/arch/x86/boot/video.c 2011-11-12 12:46:42.000000000 -0500
3313 +diff -urNp linux-2.6.32.46/arch/x86/boot/video.c linux-2.6.32.46/arch/x86/boot/video.c
3314 +--- linux-2.6.32.46/arch/x86/boot/video.c 2011-03-27 14:31:47.000000000 -0400
3315 ++++ linux-2.6.32.46/arch/x86/boot/video.c 2011-04-17 15:56:46.000000000 -0400
3316 @@ -90,7 +90,7 @@ static void store_mode_params(void)
3317 static unsigned int get_entry(void)
3318 {
3319 @@ -6716,9 +6716,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/video.c linux-2.6.32.48/arch/x86/boot/v
3320 int key;
3321 unsigned int v;
3322
3323 -diff -urNp linux-2.6.32.48/arch/x86/boot/video-vesa.c linux-2.6.32.48/arch/x86/boot/video-vesa.c
3324 ---- linux-2.6.32.48/arch/x86/boot/video-vesa.c 2009-12-02 22:51:21.000000000 -0500
3325 -+++ linux-2.6.32.48/arch/x86/boot/video-vesa.c 2011-11-12 12:46:42.000000000 -0500
3326 +diff -urNp linux-2.6.32.46/arch/x86/boot/video-vesa.c linux-2.6.32.46/arch/x86/boot/video-vesa.c
3327 +--- linux-2.6.32.46/arch/x86/boot/video-vesa.c 2011-03-27 14:31:47.000000000 -0400
3328 ++++ linux-2.6.32.46/arch/x86/boot/video-vesa.c 2011-04-17 15:56:46.000000000 -0400
3329 @@ -200,6 +200,7 @@ static void vesa_store_pm_info(void)
3330
3331 boot_params.screen_info.vesapm_seg = oreg.es;
3332 @@ -6727,9 +6727,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/video-vesa.c linux-2.6.32.48/arch/x86/b
3333 }
3334
3335 /*
3336 -diff -urNp linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S
3337 ---- linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S 2009-12-02 22:51:21.000000000 -0500
3338 -+++ linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S 2011-11-12 12:46:42.000000000 -0500
3339 +diff -urNp linux-2.6.32.46/arch/x86/crypto/aes-x86_64-asm_64.S linux-2.6.32.46/arch/x86/crypto/aes-x86_64-asm_64.S
3340 +--- linux-2.6.32.46/arch/x86/crypto/aes-x86_64-asm_64.S 2011-03-27 14:31:47.000000000 -0400
3341 ++++ linux-2.6.32.46/arch/x86/crypto/aes-x86_64-asm_64.S 2011-10-06 09:37:14.000000000 -0400
3342 @@ -8,6 +8,8 @@
3343 * including this sentence is retained in full.
3344 */
3345 @@ -6748,9 +6748,9 @@ diff -urNp linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S linux-2.6.32.48/a
3346 #define epilogue(r1,r2,r3,r4,r5,r6,r7,r8,r9) \
3347 movq r1,r2; \
3348 movq r3,r4; \
3349 -diff -urNp linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S
3350 ---- linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S 2009-12-02 22:51:21.000000000 -0500
3351 -+++ linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-11-12 12:46:42.000000000 -0500
3352 +diff -urNp linux-2.6.32.46/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-2.6.32.46/arch/x86/crypto/salsa20-x86_64-asm_64.S
3353 +--- linux-2.6.32.46/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-03-27 14:31:47.000000000 -0400
3354 ++++ linux-2.6.32.46/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-10-06 09:37:14.000000000 -0400
3355 @@ -1,3 +1,5 @@
3356 +#include <asm/alternative-asm.h>
3357 +
3358 @@ -6779,9 +6779,9 @@ diff -urNp linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-2.6.32.
3359 mov %rsi,%rdx
3360 + pax_force_retaddr
3361 ret
3362 -diff -urNp linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S
3363 ---- linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S 2009-12-02 22:51:21.000000000 -0500
3364 -+++ linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-11-12 12:46:42.000000000 -0500
3365 +diff -urNp linux-2.6.32.46/arch/x86/crypto/twofish-x86_64-asm_64.S linux-2.6.32.46/arch/x86/crypto/twofish-x86_64-asm_64.S
3366 +--- linux-2.6.32.46/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-03-27 14:31:47.000000000 -0400
3367 ++++ linux-2.6.32.46/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-10-06 09:37:14.000000000 -0400
3368 @@ -21,6 +21,7 @@
3369 .text
3370
3371 @@ -6804,9 +6804,9 @@ diff -urNp linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S linux-2.6.32.
3372 movq $1,%rax
3373 + pax_force_retaddr
3374 ret
3375 -diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_aout.c linux-2.6.32.48/arch/x86/ia32/ia32_aout.c
3376 ---- linux-2.6.32.48/arch/x86/ia32/ia32_aout.c 2011-11-12 12:44:28.000000000 -0500
3377 -+++ linux-2.6.32.48/arch/x86/ia32/ia32_aout.c 2011-11-12 12:46:42.000000000 -0500
3378 +diff -urNp linux-2.6.32.46/arch/x86/ia32/ia32_aout.c linux-2.6.32.46/arch/x86/ia32/ia32_aout.c
3379 +--- linux-2.6.32.46/arch/x86/ia32/ia32_aout.c 2011-03-27 14:31:47.000000000 -0400
3380 ++++ linux-2.6.32.46/arch/x86/ia32/ia32_aout.c 2011-04-17 15:56:46.000000000 -0400
3381 @@ -169,6 +169,8 @@ static int aout_core_dump(long signr, st
3382 unsigned long dump_start, dump_size;
3383 struct user32 dump;
3384 @@ -6829,9 +6829,9 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_aout.c linux-2.6.32.48/arch/x86/ia
3385 end_coredump:
3386 set_fs(fs);
3387 return has_dumped;
3388 -diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia32/ia32entry.S
3389 ---- linux-2.6.32.48/arch/x86/ia32/ia32entry.S 2011-11-12 12:44:28.000000000 -0500
3390 -+++ linux-2.6.32.48/arch/x86/ia32/ia32entry.S 2011-11-12 12:46:42.000000000 -0500
3391 +diff -urNp linux-2.6.32.46/arch/x86/ia32/ia32entry.S linux-2.6.32.46/arch/x86/ia32/ia32entry.S
3392 +--- linux-2.6.32.46/arch/x86/ia32/ia32entry.S 2011-03-27 14:31:47.000000000 -0400
3393 ++++ linux-2.6.32.46/arch/x86/ia32/ia32entry.S 2011-08-25 17:42:18.000000000 -0400
3394 @@ -13,6 +13,7 @@
3395 #include <asm/thread_info.h>
3396 #include <asm/segment.h>
3397 @@ -7008,9 +7008,9 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
3398 LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */
3399 RESTORE_REST
3400 cmpq $(IA32_NR_syscalls-1),%rax
3401 -diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_signal.c linux-2.6.32.48/arch/x86/ia32/ia32_signal.c
3402 ---- linux-2.6.32.48/arch/x86/ia32/ia32_signal.c 2009-12-02 22:51:21.000000000 -0500
3403 -+++ linux-2.6.32.48/arch/x86/ia32/ia32_signal.c 2011-11-12 12:46:42.000000000 -0500
3404 +diff -urNp linux-2.6.32.46/arch/x86/ia32/ia32_signal.c linux-2.6.32.46/arch/x86/ia32/ia32_signal.c
3405 +--- linux-2.6.32.46/arch/x86/ia32/ia32_signal.c 2011-03-27 14:31:47.000000000 -0400
3406 ++++ linux-2.6.32.46/arch/x86/ia32/ia32_signal.c 2011-10-06 09:37:08.000000000 -0400
3407 @@ -167,7 +167,7 @@ asmlinkage long sys32_sigaltstack(const
3408 }
3409 seg = get_fs();
3410 @@ -7087,9 +7087,9 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_signal.c linux-2.6.32.48/arch/x86/
3411 } put_user_catch(err);
3412
3413 if (err)
3414 -diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia32/sys_ia32.c
3415 ---- linux-2.6.32.48/arch/x86/ia32/sys_ia32.c 2011-11-12 12:44:28.000000000 -0500
3416 -+++ linux-2.6.32.48/arch/x86/ia32/sys_ia32.c 2011-11-12 12:46:42.000000000 -0500
3417 +diff -urNp linux-2.6.32.46/arch/x86/ia32/sys_ia32.c linux-2.6.32.46/arch/x86/ia32/sys_ia32.c
3418 +--- linux-2.6.32.46/arch/x86/ia32/sys_ia32.c 2011-03-27 14:31:47.000000000 -0400
3419 ++++ linux-2.6.32.46/arch/x86/ia32/sys_ia32.c 2011-10-06 09:37:14.000000000 -0400
3420 @@ -69,8 +69,8 @@ asmlinkage long sys32_ftruncate64(unsign
3421 */
3422 static int cp_stat64(struct stat64 __user *ubuf, struct kstat *stat)
3423 @@ -7148,9 +7148,9 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia3
3424 count);
3425 set_fs(old_fs);
3426
3427 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h
3428 ---- linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h 2009-12-02 22:51:21.000000000 -0500
3429 -+++ linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h 2011-11-12 12:46:42.000000000 -0500
3430 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/alternative-asm.h linux-2.6.32.46/arch/x86/include/asm/alternative-asm.h
3431 +--- linux-2.6.32.46/arch/x86/include/asm/alternative-asm.h 2011-03-27 14:31:47.000000000 -0400
3432 ++++ linux-2.6.32.46/arch/x86/include/asm/alternative-asm.h 2011-10-08 08:14:37.000000000 -0400
3433 @@ -19,4 +19,18 @@
3434 .endm
3435 #endif
3436 @@ -7170,9 +7170,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h linux-2.6.32.4
3437 +#endif
3438 +
3439 #endif /* __ASSEMBLY__ */
3440 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/alternative.h linux-2.6.32.48/arch/x86/include/asm/alternative.h
3441 ---- linux-2.6.32.48/arch/x86/include/asm/alternative.h 2009-12-02 22:51:21.000000000 -0500
3442 -+++ linux-2.6.32.48/arch/x86/include/asm/alternative.h 2011-11-12 12:46:42.000000000 -0500
3443 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/alternative.h linux-2.6.32.46/arch/x86/include/asm/alternative.h
3444 +--- linux-2.6.32.46/arch/x86/include/asm/alternative.h 2011-03-27 14:31:47.000000000 -0400
3445 ++++ linux-2.6.32.46/arch/x86/include/asm/alternative.h 2011-04-17 15:56:46.000000000 -0400
3446 @@ -85,7 +85,7 @@ static inline void alternatives_smp_swit
3447 " .byte 662b-661b\n" /* sourcelen */ \
3448 " .byte 664f-663f\n" /* replacementlen */ \
3449 @@ -7182,9 +7182,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/alternative.h linux-2.6.32.48/ar
3450 "663:\n\t" newinstr "\n664:\n" /* replacement */ \
3451 ".previous"
3452
3453 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/apic.h linux-2.6.32.48/arch/x86/include/asm/apic.h
3454 ---- linux-2.6.32.48/arch/x86/include/asm/apic.h 2009-12-02 22:51:21.000000000 -0500
3455 -+++ linux-2.6.32.48/arch/x86/include/asm/apic.h 2011-11-12 12:46:42.000000000 -0500
3456 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/apic.h linux-2.6.32.46/arch/x86/include/asm/apic.h
3457 +--- linux-2.6.32.46/arch/x86/include/asm/apic.h 2011-03-27 14:31:47.000000000 -0400
3458 ++++ linux-2.6.32.46/arch/x86/include/asm/apic.h 2011-08-17 20:01:15.000000000 -0400
3459 @@ -46,7 +46,7 @@ static inline void generic_apic_probe(vo
3460
3461 #ifdef CONFIG_X86_LOCAL_APIC
3462 @@ -7194,9 +7194,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/apic.h linux-2.6.32.48/arch/x86/
3463 extern int local_apic_timer_c2_ok;
3464
3465 extern int disable_apic;
3466 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/apm.h linux-2.6.32.48/arch/x86/include/asm/apm.h
3467 ---- linux-2.6.32.48/arch/x86/include/asm/apm.h 2009-12-02 22:51:21.000000000 -0500
3468 -+++ linux-2.6.32.48/arch/x86/include/asm/apm.h 2011-11-12 12:46:42.000000000 -0500
3469 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/apm.h linux-2.6.32.46/arch/x86/include/asm/apm.h
3470 +--- linux-2.6.32.46/arch/x86/include/asm/apm.h 2011-03-27 14:31:47.000000000 -0400
3471 ++++ linux-2.6.32.46/arch/x86/include/asm/apm.h 2011-04-17 15:56:46.000000000 -0400
3472 @@ -34,7 +34,7 @@ static inline void apm_bios_call_asm(u32
3473 __asm__ __volatile__(APM_DO_ZERO_SEGS
3474 "pushl %%edi\n\t"
3475 @@ -7215,9 +7215,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/apm.h linux-2.6.32.48/arch/x86/i
3476 "setc %%bl\n\t"
3477 "popl %%ebp\n\t"
3478 "popl %%edi\n\t"
3479 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_32.h linux-2.6.32.48/arch/x86/include/asm/atomic_32.h
3480 ---- linux-2.6.32.48/arch/x86/include/asm/atomic_32.h 2009-12-02 22:51:21.000000000 -0500
3481 -+++ linux-2.6.32.48/arch/x86/include/asm/atomic_32.h 2011-11-12 12:46:42.000000000 -0500
3482 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/atomic_32.h linux-2.6.32.46/arch/x86/include/asm/atomic_32.h
3483 +--- linux-2.6.32.46/arch/x86/include/asm/atomic_32.h 2011-03-27 14:31:47.000000000 -0400
3484 ++++ linux-2.6.32.46/arch/x86/include/asm/atomic_32.h 2011-05-04 17:56:20.000000000 -0400
3485 @@ -25,6 +25,17 @@ static inline int atomic_read(const atom
3486 }
3487
3488 @@ -7731,9 +7731,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_32.h linux-2.6.32.48/arch
3489 * atomic64_dec_and_test - decrement and test
3490 * @ptr: pointer to type atomic64_t
3491 *
3492 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch/x86/include/asm/atomic_64.h
3493 ---- linux-2.6.32.48/arch/x86/include/asm/atomic_64.h 2009-12-02 22:51:21.000000000 -0500
3494 -+++ linux-2.6.32.48/arch/x86/include/asm/atomic_64.h 2011-11-12 12:46:42.000000000 -0500
3495 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/atomic_64.h linux-2.6.32.46/arch/x86/include/asm/atomic_64.h
3496 +--- linux-2.6.32.46/arch/x86/include/asm/atomic_64.h 2011-03-27 14:31:47.000000000 -0400
3497 ++++ linux-2.6.32.46/arch/x86/include/asm/atomic_64.h 2011-05-04 18:35:31.000000000 -0400
3498 @@ -24,6 +24,17 @@ static inline int atomic_read(const atom
3499 }
3500
3501 @@ -8398,9 +8398,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
3502 }
3503
3504 /**
3505 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/bitops.h linux-2.6.32.48/arch/x86/include/asm/bitops.h
3506 ---- linux-2.6.32.48/arch/x86/include/asm/bitops.h 2009-12-02 22:51:21.000000000 -0500
3507 -+++ linux-2.6.32.48/arch/x86/include/asm/bitops.h 2011-11-12 12:46:42.000000000 -0500
3508 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/bitops.h linux-2.6.32.46/arch/x86/include/asm/bitops.h
3509 +--- linux-2.6.32.46/arch/x86/include/asm/bitops.h 2011-03-27 14:31:47.000000000 -0400
3510 ++++ linux-2.6.32.46/arch/x86/include/asm/bitops.h 2011-04-17 15:56:46.000000000 -0400
3511 @@ -38,7 +38,7 @@
3512 * a mask operation on a byte.
3513 */
3514 @@ -8410,9 +8410,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/bitops.h linux-2.6.32.48/arch/x8
3515 #define CONST_MASK(nr) (1 << ((nr) & 7))
3516
3517 /**
3518 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/boot.h linux-2.6.32.48/arch/x86/include/asm/boot.h
3519 ---- linux-2.6.32.48/arch/x86/include/asm/boot.h 2009-12-02 22:51:21.000000000 -0500
3520 -+++ linux-2.6.32.48/arch/x86/include/asm/boot.h 2011-11-12 12:46:42.000000000 -0500
3521 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/boot.h linux-2.6.32.46/arch/x86/include/asm/boot.h
3522 +--- linux-2.6.32.46/arch/x86/include/asm/boot.h 2011-03-27 14:31:47.000000000 -0400
3523 ++++ linux-2.6.32.46/arch/x86/include/asm/boot.h 2011-04-17 15:56:46.000000000 -0400
3524 @@ -11,10 +11,15 @@
3525 #include <asm/pgtable_types.h>
3526
3527 @@ -8430,9 +8430,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/boot.h linux-2.6.32.48/arch/x86/
3528 /* Minimum kernel alignment, as a power of two */
3529 #ifdef CONFIG_X86_64
3530 #define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT
3531 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/cacheflush.h linux-2.6.32.48/arch/x86/include/asm/cacheflush.h
3532 ---- linux-2.6.32.48/arch/x86/include/asm/cacheflush.h 2009-12-02 22:51:21.000000000 -0500
3533 -+++ linux-2.6.32.48/arch/x86/include/asm/cacheflush.h 2011-11-12 12:46:42.000000000 -0500
3534 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/cacheflush.h linux-2.6.32.46/arch/x86/include/asm/cacheflush.h
3535 +--- linux-2.6.32.46/arch/x86/include/asm/cacheflush.h 2011-03-27 14:31:47.000000000 -0400
3536 ++++ linux-2.6.32.46/arch/x86/include/asm/cacheflush.h 2011-04-17 15:56:46.000000000 -0400
3537 @@ -60,7 +60,7 @@ PAGEFLAG(WC, WC)
3538 static inline unsigned long get_page_memtype(struct page *pg)
3539 {
3540 @@ -8451,9 +8451,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/cacheflush.h linux-2.6.32.48/arc
3541 ClearPageUncached(pg);
3542 ClearPageWC(pg);
3543 break;
3544 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/cache.h linux-2.6.32.48/arch/x86/include/asm/cache.h
3545 ---- linux-2.6.32.48/arch/x86/include/asm/cache.h 2009-12-02 22:51:21.000000000 -0500
3546 -+++ linux-2.6.32.48/arch/x86/include/asm/cache.h 2011-11-12 12:46:42.000000000 -0500
3547 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/cache.h linux-2.6.32.46/arch/x86/include/asm/cache.h
3548 +--- linux-2.6.32.46/arch/x86/include/asm/cache.h 2011-03-27 14:31:47.000000000 -0400
3549 ++++ linux-2.6.32.46/arch/x86/include/asm/cache.h 2011-07-06 19:53:33.000000000 -0400
3550 @@ -5,9 +5,10 @@
3551
3552 /* L1 cache line size */
3553 @@ -8466,9 +8466,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/cache.h linux-2.6.32.48/arch/x86
3554
3555 #ifdef CONFIG_X86_VSMP
3556 /* vSMP Internode cacheline shift */
3557 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/calling.h linux-2.6.32.48/arch/x86/include/asm/calling.h
3558 ---- linux-2.6.32.48/arch/x86/include/asm/calling.h 2009-12-02 22:51:21.000000000 -0500
3559 -+++ linux-2.6.32.48/arch/x86/include/asm/calling.h 2011-11-12 12:46:42.000000000 -0500
3560 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/calling.h linux-2.6.32.46/arch/x86/include/asm/calling.h
3561 +--- linux-2.6.32.46/arch/x86/include/asm/calling.h 2011-03-27 14:31:47.000000000 -0400
3562 ++++ linux-2.6.32.46/arch/x86/include/asm/calling.h 2011-10-06 10:08:42.000000000 -0400
3563 @@ -52,32 +52,32 @@ For 32-bit we have the following convent
3564 * for assembly code:
3565 */
3566 @@ -8523,9 +8523,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/calling.h linux-2.6.32.48/arch/x
3567
3568 #define ARGOFFSET R11
3569 #define SWFRAME ORIG_RAX
3570 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/checksum_32.h linux-2.6.32.48/arch/x86/include/asm/checksum_32.h
3571 ---- linux-2.6.32.48/arch/x86/include/asm/checksum_32.h 2009-12-02 22:51:21.000000000 -0500
3572 -+++ linux-2.6.32.48/arch/x86/include/asm/checksum_32.h 2011-11-12 12:46:42.000000000 -0500
3573 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/checksum_32.h linux-2.6.32.46/arch/x86/include/asm/checksum_32.h
3574 +--- linux-2.6.32.46/arch/x86/include/asm/checksum_32.h 2011-03-27 14:31:47.000000000 -0400
3575 ++++ linux-2.6.32.46/arch/x86/include/asm/checksum_32.h 2011-04-17 15:56:46.000000000 -0400
3576 @@ -31,6 +31,14 @@ asmlinkage __wsum csum_partial_copy_gene
3577 int len, __wsum sum,
3578 int *src_err_ptr, int *dst_err_ptr);
3579 @@ -8559,9 +8559,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/checksum_32.h linux-2.6.32.48/ar
3580 len, sum, NULL, err_ptr);
3581
3582 if (len)
3583 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc_defs.h linux-2.6.32.48/arch/x86/include/asm/desc_defs.h
3584 ---- linux-2.6.32.48/arch/x86/include/asm/desc_defs.h 2009-12-02 22:51:21.000000000 -0500
3585 -+++ linux-2.6.32.48/arch/x86/include/asm/desc_defs.h 2011-11-12 12:46:42.000000000 -0500
3586 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/desc_defs.h linux-2.6.32.46/arch/x86/include/asm/desc_defs.h
3587 +--- linux-2.6.32.46/arch/x86/include/asm/desc_defs.h 2011-03-27 14:31:47.000000000 -0400
3588 ++++ linux-2.6.32.46/arch/x86/include/asm/desc_defs.h 2011-04-17 15:56:46.000000000 -0400
3589 @@ -31,6 +31,12 @@ struct desc_struct {
3590 unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
3591 unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
3592 @@ -8575,9 +8575,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc_defs.h linux-2.6.32.48/arch
3593 };
3594 } __attribute__((packed));
3595
3596 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/include/asm/desc.h
3597 ---- linux-2.6.32.48/arch/x86/include/asm/desc.h 2009-12-02 22:51:21.000000000 -0500
3598 -+++ linux-2.6.32.48/arch/x86/include/asm/desc.h 2011-11-12 12:46:42.000000000 -0500
3599 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/desc.h linux-2.6.32.46/arch/x86/include/asm/desc.h
3600 +--- linux-2.6.32.46/arch/x86/include/asm/desc.h 2011-03-27 14:31:47.000000000 -0400
3601 ++++ linux-2.6.32.46/arch/x86/include/asm/desc.h 2011-04-23 12:56:10.000000000 -0400
3602 @@ -4,6 +4,7 @@
3603 #include <asm/desc_defs.h>
3604 #include <asm/ldt.h>
3605 @@ -8758,9 +8758,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
3606 +#endif
3607 +
3608 #endif /* _ASM_X86_DESC_H */
3609 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/device.h linux-2.6.32.48/arch/x86/include/asm/device.h
3610 ---- linux-2.6.32.48/arch/x86/include/asm/device.h 2009-12-02 22:51:21.000000000 -0500
3611 -+++ linux-2.6.32.48/arch/x86/include/asm/device.h 2011-11-12 12:46:42.000000000 -0500
3612 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/device.h linux-2.6.32.46/arch/x86/include/asm/device.h
3613 +--- linux-2.6.32.46/arch/x86/include/asm/device.h 2011-03-27 14:31:47.000000000 -0400
3614 ++++ linux-2.6.32.46/arch/x86/include/asm/device.h 2011-04-17 15:56:46.000000000 -0400
3615 @@ -6,7 +6,7 @@ struct dev_archdata {
3616 void *acpi_handle;
3617 #endif
3618 @@ -8770,9 +8770,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/device.h linux-2.6.32.48/arch/x8
3619 #endif
3620 #ifdef CONFIG_DMAR
3621 void *iommu; /* hook for IOMMU specific extension */
3622 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h
3623 ---- linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
3624 -+++ linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
3625 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/dma-mapping.h linux-2.6.32.46/arch/x86/include/asm/dma-mapping.h
3626 +--- linux-2.6.32.46/arch/x86/include/asm/dma-mapping.h 2011-03-27 14:31:47.000000000 -0400
3627 ++++ linux-2.6.32.46/arch/x86/include/asm/dma-mapping.h 2011-04-17 15:56:46.000000000 -0400
3628 @@ -25,9 +25,9 @@ extern int iommu_merge;
3629 extern struct device x86_dma_fallback_dev;
3630 extern int panic_on_overflow;
3631 @@ -8812,9 +8812,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h linux-2.6.32.48/ar
3632
3633 WARN_ON(irqs_disabled()); /* for portability */
3634
3635 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/e820.h linux-2.6.32.48/arch/x86/include/asm/e820.h
3636 ---- linux-2.6.32.48/arch/x86/include/asm/e820.h 2009-12-02 22:51:21.000000000 -0500
3637 -+++ linux-2.6.32.48/arch/x86/include/asm/e820.h 2011-11-12 12:46:42.000000000 -0500
3638 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/e820.h linux-2.6.32.46/arch/x86/include/asm/e820.h
3639 +--- linux-2.6.32.46/arch/x86/include/asm/e820.h 2011-03-27 14:31:47.000000000 -0400
3640 ++++ linux-2.6.32.46/arch/x86/include/asm/e820.h 2011-04-17 15:56:46.000000000 -0400
3641 @@ -133,7 +133,7 @@ extern char *default_machine_specific_me
3642 #define ISA_END_ADDRESS 0x100000
3643 #define is_ISA_range(s, e) ((s) >= ISA_START_ADDRESS && (e) < ISA_END_ADDRESS)
3644 @@ -8824,9 +8824,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/e820.h linux-2.6.32.48/arch/x86/
3645 #define BIOS_END 0x00100000
3646
3647 #ifdef __KERNEL__
3648 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/elf.h linux-2.6.32.48/arch/x86/include/asm/elf.h
3649 ---- linux-2.6.32.48/arch/x86/include/asm/elf.h 2011-11-12 12:44:28.000000000 -0500
3650 -+++ linux-2.6.32.48/arch/x86/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
3651 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/elf.h linux-2.6.32.46/arch/x86/include/asm/elf.h
3652 +--- linux-2.6.32.46/arch/x86/include/asm/elf.h 2011-03-27 14:31:47.000000000 -0400
3653 ++++ linux-2.6.32.46/arch/x86/include/asm/elf.h 2011-08-23 20:24:19.000000000 -0400
3654 @@ -257,7 +257,25 @@ extern int force_personality32;
3655 the loader. We need to make sure that it is out of the way of the program
3656 that it will "exec", and that there is sufficient room for the brk. */
3657 @@ -8881,9 +8881,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/elf.h linux-2.6.32.48/arch/x86/i
3658 -#define arch_randomize_brk arch_randomize_brk
3659 -
3660 #endif /* _ASM_X86_ELF_H */
3661 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h
3662 ---- linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h 2009-12-02 22:51:21.000000000 -0500
3663 -+++ linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h 2011-11-12 12:46:42.000000000 -0500
3664 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/emergency-restart.h linux-2.6.32.46/arch/x86/include/asm/emergency-restart.h
3665 +--- linux-2.6.32.46/arch/x86/include/asm/emergency-restart.h 2011-03-27 14:31:47.000000000 -0400
3666 ++++ linux-2.6.32.46/arch/x86/include/asm/emergency-restart.h 2011-05-22 23:02:06.000000000 -0400
3667 @@ -15,6 +15,6 @@ enum reboot_type {
3668
3669 extern enum reboot_type reboot_type;
3670 @@ -8892,9 +8892,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h linux-2.6.32
3671 +extern void machine_emergency_restart(void) __noreturn;
3672
3673 #endif /* _ASM_X86_EMERGENCY_RESTART_H */
3674 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/futex.h linux-2.6.32.48/arch/x86/include/asm/futex.h
3675 ---- linux-2.6.32.48/arch/x86/include/asm/futex.h 2009-12-02 22:51:21.000000000 -0500
3676 -+++ linux-2.6.32.48/arch/x86/include/asm/futex.h 2011-11-12 12:46:42.000000000 -0500
3677 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/futex.h linux-2.6.32.46/arch/x86/include/asm/futex.h
3678 +--- linux-2.6.32.46/arch/x86/include/asm/futex.h 2011-03-27 14:31:47.000000000 -0400
3679 ++++ linux-2.6.32.46/arch/x86/include/asm/futex.h 2011-10-06 09:37:08.000000000 -0400
3680 @@ -12,16 +12,18 @@
3681 #include <asm/system.h>
3682
3683 @@ -8970,9 +8970,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/futex.h linux-2.6.32.48/arch/x86
3684 : "i" (-EFAULT), "r" (newval), "0" (oldval)
3685 : "memory"
3686 );
3687 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/hw_irq.h linux-2.6.32.48/arch/x86/include/asm/hw_irq.h
3688 ---- linux-2.6.32.48/arch/x86/include/asm/hw_irq.h 2009-12-02 22:51:21.000000000 -0500
3689 -+++ linux-2.6.32.48/arch/x86/include/asm/hw_irq.h 2011-11-12 12:46:42.000000000 -0500
3690 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/hw_irq.h linux-2.6.32.46/arch/x86/include/asm/hw_irq.h
3691 +--- linux-2.6.32.46/arch/x86/include/asm/hw_irq.h 2011-03-27 14:31:47.000000000 -0400
3692 ++++ linux-2.6.32.46/arch/x86/include/asm/hw_irq.h 2011-05-04 17:56:28.000000000 -0400
3693 @@ -92,8 +92,8 @@ extern void setup_ioapic_dest(void);
3694 extern void enable_IO_APIC(void);
3695
3696 @@ -8984,9 +8984,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/hw_irq.h linux-2.6.32.48/arch/x8
3697
3698 /* EISA */
3699 extern void eisa_set_level_irq(unsigned int irq);
3700 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/i387.h linux-2.6.32.48/arch/x86/include/asm/i387.h
3701 ---- linux-2.6.32.48/arch/x86/include/asm/i387.h 2009-12-02 22:51:21.000000000 -0500
3702 -+++ linux-2.6.32.48/arch/x86/include/asm/i387.h 2011-11-12 12:46:42.000000000 -0500
3703 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/i387.h linux-2.6.32.46/arch/x86/include/asm/i387.h
3704 +--- linux-2.6.32.46/arch/x86/include/asm/i387.h 2011-03-27 14:31:47.000000000 -0400
3705 ++++ linux-2.6.32.46/arch/x86/include/asm/i387.h 2011-04-17 15:56:46.000000000 -0400
3706 @@ -60,6 +60,11 @@ static inline int fxrstor_checking(struc
3707 {
3708 int err;
3709 @@ -9036,9 +9036,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/i387.h linux-2.6.32.48/arch/x86/
3710 else
3711 clts();
3712 }
3713 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/io_32.h linux-2.6.32.48/arch/x86/include/asm/io_32.h
3714 ---- linux-2.6.32.48/arch/x86/include/asm/io_32.h 2009-12-02 22:51:21.000000000 -0500
3715 -+++ linux-2.6.32.48/arch/x86/include/asm/io_32.h 2011-11-12 12:46:42.000000000 -0500
3716 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/io_32.h linux-2.6.32.46/arch/x86/include/asm/io_32.h
3717 +--- linux-2.6.32.46/arch/x86/include/asm/io_32.h 2011-03-27 14:31:47.000000000 -0400
3718 ++++ linux-2.6.32.46/arch/x86/include/asm/io_32.h 2011-04-17 15:56:46.000000000 -0400
3719 @@ -3,6 +3,7 @@
3720
3721 #include <linux/string.h>
3722 @@ -9065,9 +9065,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/io_32.h linux-2.6.32.48/arch/x86
3723 #include <asm-generic/iomap.h>
3724
3725 #include <linux/vmalloc.h>
3726 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/io_64.h linux-2.6.32.48/arch/x86/include/asm/io_64.h
3727 ---- linux-2.6.32.48/arch/x86/include/asm/io_64.h 2009-12-02 22:51:21.000000000 -0500
3728 -+++ linux-2.6.32.48/arch/x86/include/asm/io_64.h 2011-11-12 12:46:42.000000000 -0500
3729 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/io_64.h linux-2.6.32.46/arch/x86/include/asm/io_64.h
3730 +--- linux-2.6.32.46/arch/x86/include/asm/io_64.h 2011-03-27 14:31:47.000000000 -0400
3731 ++++ linux-2.6.32.46/arch/x86/include/asm/io_64.h 2011-04-17 15:56:46.000000000 -0400
3732 @@ -140,6 +140,17 @@ __OUTS(l)
3733
3734 #include <linux/vmalloc.h>
3735 @@ -9086,9 +9086,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/io_64.h linux-2.6.32.48/arch/x86
3736 #include <asm-generic/iomap.h>
3737
3738 void __memcpy_fromio(void *, unsigned long, unsigned);
3739 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/iommu.h linux-2.6.32.48/arch/x86/include/asm/iommu.h
3740 ---- linux-2.6.32.48/arch/x86/include/asm/iommu.h 2009-12-02 22:51:21.000000000 -0500
3741 -+++ linux-2.6.32.48/arch/x86/include/asm/iommu.h 2011-11-12 12:46:42.000000000 -0500
3742 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/iommu.h linux-2.6.32.46/arch/x86/include/asm/iommu.h
3743 +--- linux-2.6.32.46/arch/x86/include/asm/iommu.h 2011-03-27 14:31:47.000000000 -0400
3744 ++++ linux-2.6.32.46/arch/x86/include/asm/iommu.h 2011-04-17 15:56:46.000000000 -0400
3745 @@ -3,7 +3,7 @@
3746
3747 extern void pci_iommu_shutdown(void);
3748 @@ -9098,9 +9098,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/iommu.h linux-2.6.32.48/arch/x86
3749 extern int force_iommu, no_iommu;
3750 extern int iommu_detected;
3751 extern int iommu_pass_through;
3752 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/irqflags.h linux-2.6.32.48/arch/x86/include/asm/irqflags.h
3753 ---- linux-2.6.32.48/arch/x86/include/asm/irqflags.h 2009-12-02 22:51:21.000000000 -0500
3754 -+++ linux-2.6.32.48/arch/x86/include/asm/irqflags.h 2011-11-12 12:46:42.000000000 -0500
3755 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/irqflags.h linux-2.6.32.46/arch/x86/include/asm/irqflags.h
3756 +--- linux-2.6.32.46/arch/x86/include/asm/irqflags.h 2011-03-27 14:31:47.000000000 -0400
3757 ++++ linux-2.6.32.46/arch/x86/include/asm/irqflags.h 2011-04-17 15:56:46.000000000 -0400
3758 @@ -142,6 +142,11 @@ static inline unsigned long __raw_local_
3759 sti; \
3760 sysexit
3761 @@ -9113,9 +9113,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/irqflags.h linux-2.6.32.48/arch/
3762 #else
3763 #define INTERRUPT_RETURN iret
3764 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
3765 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/kprobes.h linux-2.6.32.48/arch/x86/include/asm/kprobes.h
3766 ---- linux-2.6.32.48/arch/x86/include/asm/kprobes.h 2009-12-02 22:51:21.000000000 -0500
3767 -+++ linux-2.6.32.48/arch/x86/include/asm/kprobes.h 2011-11-12 12:46:42.000000000 -0500
3768 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/kprobes.h linux-2.6.32.46/arch/x86/include/asm/kprobes.h
3769 +--- linux-2.6.32.46/arch/x86/include/asm/kprobes.h 2011-03-27 14:31:47.000000000 -0400
3770 ++++ linux-2.6.32.46/arch/x86/include/asm/kprobes.h 2011-04-23 12:56:12.000000000 -0400
3771 @@ -34,13 +34,8 @@ typedef u8 kprobe_opcode_t;
3772 #define BREAKPOINT_INSTRUCTION 0xcc
3773 #define RELATIVEJUMP_INSTRUCTION 0xe9
3774 @@ -9132,9 +9132,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/kprobes.h linux-2.6.32.48/arch/x
3775
3776 #define flush_insn_slot(p) do { } while (0)
3777
3778 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/kvm_host.h linux-2.6.32.48/arch/x86/include/asm/kvm_host.h
3779 ---- linux-2.6.32.48/arch/x86/include/asm/kvm_host.h 2011-11-12 12:44:28.000000000 -0500
3780 -+++ linux-2.6.32.48/arch/x86/include/asm/kvm_host.h 2011-11-12 12:46:42.000000000 -0500
3781 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/kvm_host.h linux-2.6.32.46/arch/x86/include/asm/kvm_host.h
3782 +--- linux-2.6.32.46/arch/x86/include/asm/kvm_host.h 2011-05-10 22:12:01.000000000 -0400
3783 ++++ linux-2.6.32.46/arch/x86/include/asm/kvm_host.h 2011-08-26 20:19:09.000000000 -0400
3784 @@ -534,9 +534,9 @@ struct kvm_x86_ops {
3785 bool (*gb_page_enable)(void);
3786
3787 @@ -9147,9 +9147,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/kvm_host.h linux-2.6.32.48/arch/
3788
3789 int kvm_mmu_module_init(void);
3790 void kvm_mmu_module_exit(void);
3791 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/local.h linux-2.6.32.48/arch/x86/include/asm/local.h
3792 ---- linux-2.6.32.48/arch/x86/include/asm/local.h 2009-12-02 22:51:21.000000000 -0500
3793 -+++ linux-2.6.32.48/arch/x86/include/asm/local.h 2011-11-12 12:46:42.000000000 -0500
3794 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/local.h linux-2.6.32.46/arch/x86/include/asm/local.h
3795 +--- linux-2.6.32.46/arch/x86/include/asm/local.h 2011-03-27 14:31:47.000000000 -0400
3796 ++++ linux-2.6.32.46/arch/x86/include/asm/local.h 2011-04-17 15:56:46.000000000 -0400
3797 @@ -18,26 +18,58 @@ typedef struct {
3798
3799 static inline void local_inc(local_t *l)
3800 @@ -9302,9 +9302,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/local.h linux-2.6.32.48/arch/x86
3801 : "+r" (i), "+m" (l->a.counter)
3802 : : "memory");
3803 return i + __i;
3804 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/microcode.h linux-2.6.32.48/arch/x86/include/asm/microcode.h
3805 ---- linux-2.6.32.48/arch/x86/include/asm/microcode.h 2009-12-02 22:51:21.000000000 -0500
3806 -+++ linux-2.6.32.48/arch/x86/include/asm/microcode.h 2011-11-12 12:46:42.000000000 -0500
3807 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/microcode.h linux-2.6.32.46/arch/x86/include/asm/microcode.h
3808 +--- linux-2.6.32.46/arch/x86/include/asm/microcode.h 2011-03-27 14:31:47.000000000 -0400
3809 ++++ linux-2.6.32.46/arch/x86/include/asm/microcode.h 2011-04-17 15:56:46.000000000 -0400
3810 @@ -12,13 +12,13 @@ struct device;
3811 enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND };
3812
3813 @@ -9345,9 +9345,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/microcode.h linux-2.6.32.48/arch
3814 {
3815 return NULL;
3816 }
3817 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/mman.h linux-2.6.32.48/arch/x86/include/asm/mman.h
3818 ---- linux-2.6.32.48/arch/x86/include/asm/mman.h 2009-12-02 22:51:21.000000000 -0500
3819 -+++ linux-2.6.32.48/arch/x86/include/asm/mman.h 2011-11-12 12:46:42.000000000 -0500
3820 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/mman.h linux-2.6.32.46/arch/x86/include/asm/mman.h
3821 +--- linux-2.6.32.46/arch/x86/include/asm/mman.h 2011-03-27 14:31:47.000000000 -0400
3822 ++++ linux-2.6.32.46/arch/x86/include/asm/mman.h 2011-04-17 15:56:46.000000000 -0400
3823 @@ -5,4 +5,14 @@
3824
3825 #include <asm-generic/mman.h>
3826 @@ -9363,9 +9363,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mman.h linux-2.6.32.48/arch/x86/
3827 +#endif
3828 +
3829 #endif /* _ASM_X86_MMAN_H */
3830 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu_context.h linux-2.6.32.48/arch/x86/include/asm/mmu_context.h
3831 ---- linux-2.6.32.48/arch/x86/include/asm/mmu_context.h 2011-11-12 12:44:28.000000000 -0500
3832 -+++ linux-2.6.32.48/arch/x86/include/asm/mmu_context.h 2011-11-12 12:46:42.000000000 -0500
3833 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/mmu_context.h linux-2.6.32.46/arch/x86/include/asm/mmu_context.h
3834 +--- linux-2.6.32.46/arch/x86/include/asm/mmu_context.h 2011-03-27 14:31:47.000000000 -0400
3835 ++++ linux-2.6.32.46/arch/x86/include/asm/mmu_context.h 2011-08-23 20:24:19.000000000 -0400
3836 @@ -24,6 +24,18 @@ void destroy_context(struct mm_struct *m
3837
3838 static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
3839 @@ -9486,9 +9486,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu_context.h linux-2.6.32.48/ar
3840 }
3841
3842 #define activate_mm(prev, next) \
3843 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu.h linux-2.6.32.48/arch/x86/include/asm/mmu.h
3844 ---- linux-2.6.32.48/arch/x86/include/asm/mmu.h 2009-12-02 22:51:21.000000000 -0500
3845 -+++ linux-2.6.32.48/arch/x86/include/asm/mmu.h 2011-11-12 12:46:42.000000000 -0500
3846 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/mmu.h linux-2.6.32.46/arch/x86/include/asm/mmu.h
3847 +--- linux-2.6.32.46/arch/x86/include/asm/mmu.h 2011-03-27 14:31:47.000000000 -0400
3848 ++++ linux-2.6.32.46/arch/x86/include/asm/mmu.h 2011-04-17 15:56:46.000000000 -0400
3849 @@ -9,10 +9,23 @@
3850 * we put the segment information here.
3851 */
3852 @@ -9515,9 +9515,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu.h linux-2.6.32.48/arch/x86/i
3853 } mm_context_t;
3854
3855 #ifdef CONFIG_SMP
3856 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/module.h linux-2.6.32.48/arch/x86/include/asm/module.h
3857 ---- linux-2.6.32.48/arch/x86/include/asm/module.h 2009-12-02 22:51:21.000000000 -0500
3858 -+++ linux-2.6.32.48/arch/x86/include/asm/module.h 2011-11-12 12:46:42.000000000 -0500
3859 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/module.h linux-2.6.32.46/arch/x86/include/asm/module.h
3860 +--- linux-2.6.32.46/arch/x86/include/asm/module.h 2011-03-27 14:31:47.000000000 -0400
3861 ++++ linux-2.6.32.46/arch/x86/include/asm/module.h 2011-10-08 08:16:59.000000000 -0400
3862 @@ -5,6 +5,7 @@
3863
3864 #ifdef CONFIG_X86_64
3865 @@ -9558,9 +9558,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/module.h linux-2.6.32.48/arch/x8
3866 +#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_STACKSIZE MODULE_PAX_KERNEXEC MODULE_PAX_UDEREF
3867 +
3868 #endif /* _ASM_X86_MODULE_H */
3869 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/page_64_types.h linux-2.6.32.48/arch/x86/include/asm/page_64_types.h
3870 ---- linux-2.6.32.48/arch/x86/include/asm/page_64_types.h 2009-12-02 22:51:21.000000000 -0500
3871 -+++ linux-2.6.32.48/arch/x86/include/asm/page_64_types.h 2011-11-12 12:46:42.000000000 -0500
3872 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/page_64_types.h linux-2.6.32.46/arch/x86/include/asm/page_64_types.h
3873 +--- linux-2.6.32.46/arch/x86/include/asm/page_64_types.h 2011-03-27 14:31:47.000000000 -0400
3874 ++++ linux-2.6.32.46/arch/x86/include/asm/page_64_types.h 2011-04-17 15:56:46.000000000 -0400
3875 @@ -56,7 +56,7 @@ void copy_page(void *to, void *from);
3876
3877 /* duplicated to the one in bootmem.h */
3878 @@ -9570,9 +9570,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/page_64_types.h linux-2.6.32.48/
3879
3880 extern unsigned long __phys_addr(unsigned long);
3881 #define __phys_reloc_hide(x) (x)
3882 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt.h linux-2.6.32.48/arch/x86/include/asm/paravirt.h
3883 ---- linux-2.6.32.48/arch/x86/include/asm/paravirt.h 2009-12-02 22:51:21.000000000 -0500
3884 -+++ linux-2.6.32.48/arch/x86/include/asm/paravirt.h 2011-11-12 12:46:42.000000000 -0500
3885 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/paravirt.h linux-2.6.32.46/arch/x86/include/asm/paravirt.h
3886 +--- linux-2.6.32.46/arch/x86/include/asm/paravirt.h 2011-03-27 14:31:47.000000000 -0400
3887 ++++ linux-2.6.32.46/arch/x86/include/asm/paravirt.h 2011-08-23 21:36:48.000000000 -0400
3888 @@ -648,6 +648,18 @@ static inline void set_pgd(pgd_t *pgdp,
3889 val);
3890 }
3891 @@ -9645,9 +9645,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt.h linux-2.6.32.48/arch/
3892 #endif /* CONFIG_X86_32 */
3893
3894 #endif /* __ASSEMBLY__ */
3895 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h
3896 ---- linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h 2009-12-02 22:51:21.000000000 -0500
3897 -+++ linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h 2011-11-12 12:46:42.000000000 -0500
3898 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/paravirt_types.h linux-2.6.32.46/arch/x86/include/asm/paravirt_types.h
3899 +--- linux-2.6.32.46/arch/x86/include/asm/paravirt_types.h 2011-03-27 14:31:47.000000000 -0400
3900 ++++ linux-2.6.32.46/arch/x86/include/asm/paravirt_types.h 2011-08-23 20:24:19.000000000 -0400
3901 @@ -78,19 +78,19 @@ struct pv_init_ops {
3902 */
3903 unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
3904 @@ -9719,9 +9719,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h linux-2.6.32.48
3905
3906 /* This contains all the paravirt structures: we get a convenient
3907 * number for each function using the offset which we use to indicate
3908 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pci_x86.h linux-2.6.32.48/arch/x86/include/asm/pci_x86.h
3909 ---- linux-2.6.32.48/arch/x86/include/asm/pci_x86.h 2009-12-02 22:51:21.000000000 -0500
3910 -+++ linux-2.6.32.48/arch/x86/include/asm/pci_x86.h 2011-11-12 12:46:42.000000000 -0500
3911 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pci_x86.h linux-2.6.32.46/arch/x86/include/asm/pci_x86.h
3912 +--- linux-2.6.32.46/arch/x86/include/asm/pci_x86.h 2011-03-27 14:31:47.000000000 -0400
3913 ++++ linux-2.6.32.46/arch/x86/include/asm/pci_x86.h 2011-04-17 15:56:46.000000000 -0400
3914 @@ -89,16 +89,16 @@ extern int (*pcibios_enable_irq)(struct
3915 extern void (*pcibios_disable_irq)(struct pci_dev *dev);
3916
3917 @@ -9744,9 +9744,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pci_x86.h linux-2.6.32.48/arch/x
3918 extern bool port_cf9_safe;
3919
3920 /* arch_initcall level */
3921 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/percpu.h linux-2.6.32.48/arch/x86/include/asm/percpu.h
3922 ---- linux-2.6.32.48/arch/x86/include/asm/percpu.h 2009-12-02 22:51:21.000000000 -0500
3923 -+++ linux-2.6.32.48/arch/x86/include/asm/percpu.h 2011-11-12 12:46:42.000000000 -0500
3924 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/percpu.h linux-2.6.32.46/arch/x86/include/asm/percpu.h
3925 +--- linux-2.6.32.46/arch/x86/include/asm/percpu.h 2011-03-27 14:31:47.000000000 -0400
3926 ++++ linux-2.6.32.46/arch/x86/include/asm/percpu.h 2011-08-17 19:33:59.000000000 -0400
3927 @@ -78,6 +78,7 @@ do { \
3928 if (0) { \
3929 T__ tmp__; \
3930 @@ -9755,9 +9755,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/percpu.h linux-2.6.32.48/arch/x8
3931 } \
3932 switch (sizeof(var)) { \
3933 case 1: \
3934 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgalloc.h linux-2.6.32.48/arch/x86/include/asm/pgalloc.h
3935 ---- linux-2.6.32.48/arch/x86/include/asm/pgalloc.h 2011-11-12 12:44:28.000000000 -0500
3936 -+++ linux-2.6.32.48/arch/x86/include/asm/pgalloc.h 2011-11-12 12:46:42.000000000 -0500
3937 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgalloc.h linux-2.6.32.46/arch/x86/include/asm/pgalloc.h
3938 +--- linux-2.6.32.46/arch/x86/include/asm/pgalloc.h 2011-03-27 14:31:47.000000000 -0400
3939 ++++ linux-2.6.32.46/arch/x86/include/asm/pgalloc.h 2011-04-17 15:56:46.000000000 -0400
3940 @@ -63,6 +63,13 @@ static inline void pmd_populate_kernel(s
3941 pmd_t *pmd, pte_t *pte)
3942 {
3943 @@ -9772,9 +9772,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgalloc.h linux-2.6.32.48/arch/x
3944 set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE));
3945 }
3946
3947 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h
3948 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h 2009-12-02 22:51:21.000000000 -0500
3949 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h 2011-11-12 12:46:42.000000000 -0500
3950 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable-2level.h linux-2.6.32.46/arch/x86/include/asm/pgtable-2level.h
3951 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable-2level.h 2011-03-27 14:31:47.000000000 -0400
3952 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable-2level.h 2011-04-17 15:56:46.000000000 -0400
3953 @@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t
3954
3955 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
3956 @@ -9785,9 +9785,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h linux-2.6.32.48
3957 }
3958
3959 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
3960 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h
3961 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h 2011-11-12 12:44:28.000000000 -0500
3962 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h 2011-11-12 12:46:42.000000000 -0500
3963 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable_32.h linux-2.6.32.46/arch/x86/include/asm/pgtable_32.h
3964 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable_32.h 2011-03-27 14:31:47.000000000 -0400
3965 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable_32.h 2011-04-17 15:56:46.000000000 -0400
3966 @@ -26,9 +26,6 @@
3967 struct mm_struct;
3968 struct vm_area_struct;
3969 @@ -9831,9 +9831,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h linux-2.6.32.48/arc
3970 /*
3971 * kern_addr_valid() is (1) for FLATMEM and (0) for
3972 * SPARSEMEM and DISCONTIGMEM
3973 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h
3974 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h 2009-12-02 22:51:21.000000000 -0500
3975 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h 2011-11-12 12:46:42.000000000 -0500
3976 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable_32_types.h linux-2.6.32.46/arch/x86/include/asm/pgtable_32_types.h
3977 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable_32_types.h 2011-03-27 14:31:47.000000000 -0400
3978 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable_32_types.h 2011-04-17 15:56:46.000000000 -0400
3979 @@ -8,7 +8,7 @@
3980 */
3981 #ifdef CONFIG_X86_PAE
3982 @@ -9863,9 +9863,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h linux-2.6.32.
3983 #define MODULES_VADDR VMALLOC_START
3984 #define MODULES_END VMALLOC_END
3985 #define MODULES_LEN (MODULES_VADDR - MODULES_END)
3986 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h
3987 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h 2011-11-12 12:44:28.000000000 -0500
3988 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h 2011-11-12 12:46:42.000000000 -0500
3989 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable-3level.h linux-2.6.32.46/arch/x86/include/asm/pgtable-3level.h
3990 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable-3level.h 2011-03-27 14:31:47.000000000 -0400
3991 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable-3level.h 2011-04-17 15:56:46.000000000 -0400
3992 @@ -38,12 +38,16 @@ static inline void native_set_pte_atomic
3993
3994 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
3995 @@ -9883,9 +9883,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h linux-2.6.32.48
3996 }
3997
3998 /*
3999 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h
4000 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h 2009-12-02 22:51:21.000000000 -0500
4001 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h 2011-11-12 12:46:42.000000000 -0500
4002 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable_64.h linux-2.6.32.46/arch/x86/include/asm/pgtable_64.h
4003 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable_64.h 2011-03-27 14:31:47.000000000 -0400
4004 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable_64.h 2011-08-23 20:24:19.000000000 -0400
4005 @@ -16,10 +16,13 @@
4006
4007 extern pud_t level3_kernel_pgt[512];
4008 @@ -9926,9 +9926,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h linux-2.6.32.48/arc
4009 *pgdp = pgd;
4010 }
4011
4012 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h
4013 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h 2009-12-02 22:51:21.000000000 -0500
4014 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h 2011-11-12 12:46:42.000000000 -0500
4015 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable_64_types.h linux-2.6.32.46/arch/x86/include/asm/pgtable_64_types.h
4016 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable_64_types.h 2011-03-27 14:31:47.000000000 -0400
4017 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable_64_types.h 2011-04-17 15:56:46.000000000 -0400
4018 @@ -59,5 +59,10 @@ typedef struct { pteval_t pte; } pte_t;
4019 #define MODULES_VADDR _AC(0xffffffffa0000000, UL)
4020 #define MODULES_END _AC(0xffffffffff000000, UL)
4021 @@ -9940,9 +9940,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h linux-2.6.32.
4022 +#define ktva_ktla(addr) (addr)
4023
4024 #endif /* _ASM_X86_PGTABLE_64_DEFS_H */
4025 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x86/include/asm/pgtable.h
4026 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
4027 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
4028 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable.h linux-2.6.32.46/arch/x86/include/asm/pgtable.h
4029 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable.h 2011-03-27 14:31:47.000000000 -0400
4030 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable.h 2011-08-23 20:24:19.000000000 -0400
4031 @@ -39,6 +39,7 @@ extern struct list_head pgd_list;
4032
4033 #ifndef __PAGETABLE_PUD_FOLDED
4034 @@ -10120,9 +10120,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
4035
4036 #include <asm-generic/pgtable.h>
4037 #endif /* __ASSEMBLY__ */
4038 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h
4039 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h 2009-12-02 22:51:21.000000000 -0500
4040 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h 2011-11-12 12:46:42.000000000 -0500
4041 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/pgtable_types.h linux-2.6.32.46/arch/x86/include/asm/pgtable_types.h
4042 +--- linux-2.6.32.46/arch/x86/include/asm/pgtable_types.h 2011-03-27 14:31:47.000000000 -0400
4043 ++++ linux-2.6.32.46/arch/x86/include/asm/pgtable_types.h 2011-04-17 15:56:46.000000000 -0400
4044 @@ -16,12 +16,11 @@
4045 #define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
4046 #define _PAGE_BIT_PAT 7 /* on 4KB pages */
4047 @@ -10243,9 +10243,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
4048
4049 #define pgprot_writecombine pgprot_writecombine
4050 extern pgprot_t pgprot_writecombine(pgprot_t prot);
4051 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch/x86/include/asm/processor.h
4052 ---- linux-2.6.32.48/arch/x86/include/asm/processor.h 2011-11-12 12:44:28.000000000 -0500
4053 -+++ linux-2.6.32.48/arch/x86/include/asm/processor.h 2011-11-12 12:46:42.000000000 -0500
4054 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/processor.h linux-2.6.32.46/arch/x86/include/asm/processor.h
4055 +--- linux-2.6.32.46/arch/x86/include/asm/processor.h 2011-04-22 19:16:29.000000000 -0400
4056 ++++ linux-2.6.32.46/arch/x86/include/asm/processor.h 2011-05-11 18:25:15.000000000 -0400
4057 @@ -272,7 +272,7 @@ struct tss_struct {
4058
4059 } ____cacheline_aligned;
4060 @@ -10255,7 +10255,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4061
4062 /*
4063 * Save the original ist values for checking stack pointers during debugging
4064 -@@ -911,11 +911,18 @@ static inline void spin_lock_prefetch(co
4065 +@@ -888,11 +888,18 @@ static inline void spin_lock_prefetch(co
4066 */
4067 #define TASK_SIZE PAGE_OFFSET
4068 #define TASK_SIZE_MAX TASK_SIZE
4069 @@ -10276,7 +10276,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4070 .vm86_info = NULL, \
4071 .sysenter_cs = __KERNEL_CS, \
4072 .io_bitmap_ptr = NULL, \
4073 -@@ -929,7 +936,7 @@ static inline void spin_lock_prefetch(co
4074 +@@ -906,7 +913,7 @@ static inline void spin_lock_prefetch(co
4075 */
4076 #define INIT_TSS { \
4077 .x86_tss = { \
4078 @@ -10285,7 +10285,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4079 .ss0 = __KERNEL_DS, \
4080 .ss1 = __KERNEL_CS, \
4081 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \
4082 -@@ -940,11 +947,7 @@ static inline void spin_lock_prefetch(co
4083 +@@ -917,11 +924,7 @@ static inline void spin_lock_prefetch(co
4084 extern unsigned long thread_saved_pc(struct task_struct *tsk);
4085
4086 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
4087 @@ -10298,7 +10298,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4088
4089 /*
4090 * The below -8 is to reserve 8 bytes on top of the ring0 stack.
4091 -@@ -959,7 +962,7 @@ extern unsigned long thread_saved_pc(str
4092 +@@ -936,7 +939,7 @@ extern unsigned long thread_saved_pc(str
4093 #define task_pt_regs(task) \
4094 ({ \
4095 struct pt_regs *__regs__; \
4096 @@ -10307,7 +10307,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4097 __regs__ - 1; \
4098 })
4099
4100 -@@ -969,13 +972,13 @@ extern unsigned long thread_saved_pc(str
4101 +@@ -946,13 +949,13 @@ extern unsigned long thread_saved_pc(str
4102 /*
4103 * User space process size. 47bits minus one guard page.
4104 */
4105 @@ -10323,7 +10323,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4106
4107 #define TASK_SIZE (test_thread_flag(TIF_IA32) ? \
4108 IA32_PAGE_OFFSET : TASK_SIZE_MAX)
4109 -@@ -986,11 +989,11 @@ extern unsigned long thread_saved_pc(str
4110 +@@ -963,11 +966,11 @@ extern unsigned long thread_saved_pc(str
4111 #define STACK_TOP_MAX TASK_SIZE_MAX
4112
4113 #define INIT_THREAD { \
4114 @@ -10337,7 +10337,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4115 }
4116
4117 /*
4118 -@@ -1012,6 +1015,10 @@ extern void start_thread(struct pt_regs
4119 +@@ -989,6 +992,10 @@ extern void start_thread(struct pt_regs
4120 */
4121 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
4122
4123 @@ -10348,9 +10348,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
4124 #define KSTK_EIP(task) (task_pt_regs(task)->ip)
4125
4126 /* Get/set a process' ability to use the timestamp counter instruction */
4127 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/ptrace.h linux-2.6.32.48/arch/x86/include/asm/ptrace.h
4128 ---- linux-2.6.32.48/arch/x86/include/asm/ptrace.h 2009-12-02 22:51:21.000000000 -0500
4129 -+++ linux-2.6.32.48/arch/x86/include/asm/ptrace.h 2011-11-12 12:46:42.000000000 -0500
4130 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/ptrace.h linux-2.6.32.46/arch/x86/include/asm/ptrace.h
4131 +--- linux-2.6.32.46/arch/x86/include/asm/ptrace.h 2011-03-27 14:31:47.000000000 -0400
4132 ++++ linux-2.6.32.46/arch/x86/include/asm/ptrace.h 2011-04-17 15:56:46.000000000 -0400
4133 @@ -151,28 +151,29 @@ static inline unsigned long regs_return_
4134 }
4135
4136 @@ -10387,9 +10387,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/ptrace.h linux-2.6.32.48/arch/x8
4137 #endif
4138 }
4139
4140 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/reboot.h linux-2.6.32.48/arch/x86/include/asm/reboot.h
4141 ---- linux-2.6.32.48/arch/x86/include/asm/reboot.h 2009-12-02 22:51:21.000000000 -0500
4142 -+++ linux-2.6.32.48/arch/x86/include/asm/reboot.h 2011-11-12 12:46:42.000000000 -0500
4143 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/reboot.h linux-2.6.32.46/arch/x86/include/asm/reboot.h
4144 +--- linux-2.6.32.46/arch/x86/include/asm/reboot.h 2011-03-27 14:31:47.000000000 -0400
4145 ++++ linux-2.6.32.46/arch/x86/include/asm/reboot.h 2011-08-05 20:33:55.000000000 -0400
4146 @@ -6,19 +6,19 @@
4147 struct pt_regs;
4148
4149 @@ -10416,9 +10416,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/reboot.h linux-2.6.32.48/arch/x8
4150
4151 typedef void (*nmi_shootdown_cb)(int, struct die_args*);
4152 void nmi_shootdown_cpus(nmi_shootdown_cb callback);
4153 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86/include/asm/rwsem.h
4154 ---- linux-2.6.32.48/arch/x86/include/asm/rwsem.h 2011-11-12 12:44:28.000000000 -0500
4155 -+++ linux-2.6.32.48/arch/x86/include/asm/rwsem.h 2011-11-12 12:46:42.000000000 -0500
4156 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/rwsem.h linux-2.6.32.46/arch/x86/include/asm/rwsem.h
4157 +--- linux-2.6.32.46/arch/x86/include/asm/rwsem.h 2011-03-27 14:31:47.000000000 -0400
4158 ++++ linux-2.6.32.46/arch/x86/include/asm/rwsem.h 2011-04-17 15:56:46.000000000 -0400
4159 @@ -118,6 +118,14 @@ static inline void __down_read(struct rw
4160 {
4161 asm volatile("# beginning down_read\n\t"
4162 @@ -10543,9 +10543,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
4163 : "+r" (tmp), "+m" (sem->count)
4164 : : "memory");
4165
4166 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/segment.h linux-2.6.32.48/arch/x86/include/asm/segment.h
4167 ---- linux-2.6.32.48/arch/x86/include/asm/segment.h 2009-12-02 22:51:21.000000000 -0500
4168 -+++ linux-2.6.32.48/arch/x86/include/asm/segment.h 2011-11-12 12:46:42.000000000 -0500
4169 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/segment.h linux-2.6.32.46/arch/x86/include/asm/segment.h
4170 +--- linux-2.6.32.46/arch/x86/include/asm/segment.h 2011-03-27 14:31:47.000000000 -0400
4171 ++++ linux-2.6.32.46/arch/x86/include/asm/segment.h 2011-10-06 09:37:08.000000000 -0400
4172 @@ -62,10 +62,15 @@
4173 * 26 - ESPFIX small SS
4174 * 27 - per-cpu [ offset to per-cpu data area ]
4175 @@ -10621,9 +10621,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/segment.h linux-2.6.32.48/arch/x
4176 #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
4177 #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS* 8 + 3)
4178 #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3)
4179 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/smp.h linux-2.6.32.48/arch/x86/include/asm/smp.h
4180 ---- linux-2.6.32.48/arch/x86/include/asm/smp.h 2011-11-12 12:44:28.000000000 -0500
4181 -+++ linux-2.6.32.48/arch/x86/include/asm/smp.h 2011-11-12 12:46:42.000000000 -0500
4182 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/smp.h linux-2.6.32.46/arch/x86/include/asm/smp.h
4183 +--- linux-2.6.32.46/arch/x86/include/asm/smp.h 2011-03-27 14:31:47.000000000 -0400
4184 ++++ linux-2.6.32.46/arch/x86/include/asm/smp.h 2011-08-05 20:33:55.000000000 -0400
4185 @@ -24,7 +24,7 @@ extern unsigned int num_processors;
4186 DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_map);
4187 DECLARE_PER_CPU(cpumask_var_t, cpu_core_map);
4188 @@ -10671,9 +10671,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/smp.h linux-2.6.32.48/arch/x86/i
4189 #define safe_smp_processor_id() smp_processor_id()
4190
4191 #endif
4192 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/spinlock.h linux-2.6.32.48/arch/x86/include/asm/spinlock.h
4193 ---- linux-2.6.32.48/arch/x86/include/asm/spinlock.h 2009-12-02 22:51:21.000000000 -0500
4194 -+++ linux-2.6.32.48/arch/x86/include/asm/spinlock.h 2011-11-12 12:46:42.000000000 -0500
4195 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/spinlock.h linux-2.6.32.46/arch/x86/include/asm/spinlock.h
4196 +--- linux-2.6.32.46/arch/x86/include/asm/spinlock.h 2011-03-27 14:31:47.000000000 -0400
4197 ++++ linux-2.6.32.46/arch/x86/include/asm/spinlock.h 2011-04-17 15:56:46.000000000 -0400
4198 @@ -249,6 +249,14 @@ static inline int __raw_write_can_lock(r
4199 static inline void __raw_read_lock(raw_rwlock_t *rw)
4200 {
4201 @@ -10736,9 +10736,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/spinlock.h linux-2.6.32.48/arch/
4202 : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory");
4203 }
4204
4205 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/stackprotector.h linux-2.6.32.48/arch/x86/include/asm/stackprotector.h
4206 ---- linux-2.6.32.48/arch/x86/include/asm/stackprotector.h 2009-12-02 22:51:21.000000000 -0500
4207 -+++ linux-2.6.32.48/arch/x86/include/asm/stackprotector.h 2011-11-12 12:46:42.000000000 -0500
4208 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/stackprotector.h linux-2.6.32.46/arch/x86/include/asm/stackprotector.h
4209 +--- linux-2.6.32.46/arch/x86/include/asm/stackprotector.h 2011-03-27 14:31:47.000000000 -0400
4210 ++++ linux-2.6.32.46/arch/x86/include/asm/stackprotector.h 2011-07-06 19:53:33.000000000 -0400
4211 @@ -48,7 +48,7 @@
4212 * head_32 for boot CPU and setup_per_cpu_areas() for others.
4213 */
4214 @@ -10757,9 +10757,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/stackprotector.h linux-2.6.32.48
4215 asm volatile ("mov %0, %%gs" : : "r" (0));
4216 #endif
4217 }
4218 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/system.h linux-2.6.32.48/arch/x86/include/asm/system.h
4219 ---- linux-2.6.32.48/arch/x86/include/asm/system.h 2011-11-12 12:44:28.000000000 -0500
4220 -+++ linux-2.6.32.48/arch/x86/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
4221 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/system.h linux-2.6.32.46/arch/x86/include/asm/system.h
4222 +--- linux-2.6.32.46/arch/x86/include/asm/system.h 2011-03-27 14:31:47.000000000 -0400
4223 ++++ linux-2.6.32.46/arch/x86/include/asm/system.h 2011-05-22 23:02:03.000000000 -0400
4224 @@ -132,7 +132,7 @@ do { \
4225 "thread_return:\n\t" \
4226 "movq "__percpu_arg([current_task])",%%rsi\n\t" \
4227 @@ -10802,9 +10802,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/system.h linux-2.6.32.48/arch/x8
4228
4229 /*
4230 * Force strict CPU ordering.
4231 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/arch/x86/include/asm/thread_info.h
4232 ---- linux-2.6.32.48/arch/x86/include/asm/thread_info.h 2011-11-12 12:44:28.000000000 -0500
4233 -+++ linux-2.6.32.48/arch/x86/include/asm/thread_info.h 2011-11-12 12:46:42.000000000 -0500
4234 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/thread_info.h linux-2.6.32.46/arch/x86/include/asm/thread_info.h
4235 +--- linux-2.6.32.46/arch/x86/include/asm/thread_info.h 2011-03-27 14:31:47.000000000 -0400
4236 ++++ linux-2.6.32.46/arch/x86/include/asm/thread_info.h 2011-05-17 19:26:34.000000000 -0400
4237 @@ -10,6 +10,7 @@
4238 #include <linux/compiler.h>
4239 #include <asm/page.h>
4240 @@ -10952,9 +10952,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/ar
4241 +
4242 #endif
4243 #endif /* _ASM_X86_THREAD_INFO_H */
4244 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h
4245 ---- linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h 2009-12-02 22:51:21.000000000 -0500
4246 -+++ linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h 2011-11-12 12:46:42.000000000 -0500
4247 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/uaccess_32.h linux-2.6.32.46/arch/x86/include/asm/uaccess_32.h
4248 +--- linux-2.6.32.46/arch/x86/include/asm/uaccess_32.h 2011-03-27 14:31:47.000000000 -0400
4249 ++++ linux-2.6.32.46/arch/x86/include/asm/uaccess_32.h 2011-05-16 21:46:57.000000000 -0400
4250 @@ -44,6 +44,11 @@ unsigned long __must_check __copy_from_u
4251 static __always_inline unsigned long __must_check
4252 __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
4253 @@ -11095,9 +11095,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
4254 long __must_check strncpy_from_user(char *dst, const char __user *src,
4255 long count);
4256 long __must_check __strncpy_from_user(char *dst,
4257 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h
4258 ---- linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h 2009-12-02 22:51:21.000000000 -0500
4259 -+++ linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h 2011-11-12 12:46:42.000000000 -0500
4260 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/uaccess_64.h linux-2.6.32.46/arch/x86/include/asm/uaccess_64.h
4261 +--- linux-2.6.32.46/arch/x86/include/asm/uaccess_64.h 2011-03-27 14:31:47.000000000 -0400
4262 ++++ linux-2.6.32.46/arch/x86/include/asm/uaccess_64.h 2011-10-06 09:37:08.000000000 -0400
4263 @@ -9,6 +9,9 @@
4264 #include <linux/prefetch.h>
4265 #include <linux/lockdep.h>
4266 @@ -11481,9 +11481,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
4267 +copy_user_handle_tail(char __user *to, char __user *from, unsigned len, unsigned zerorest);
4268
4269 #endif /* _ASM_X86_UACCESS_64_H */
4270 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x86/include/asm/uaccess.h
4271 ---- linux-2.6.32.48/arch/x86/include/asm/uaccess.h 2011-11-12 12:44:28.000000000 -0500
4272 -+++ linux-2.6.32.48/arch/x86/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
4273 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/uaccess.h linux-2.6.32.46/arch/x86/include/asm/uaccess.h
4274 +--- linux-2.6.32.46/arch/x86/include/asm/uaccess.h 2011-06-25 12:55:34.000000000 -0400
4275 ++++ linux-2.6.32.46/arch/x86/include/asm/uaccess.h 2011-10-06 09:37:08.000000000 -0400
4276 @@ -8,12 +8,15 @@
4277 #include <linux/thread_info.h>
4278 #include <linux/prefetch.h>
4279 @@ -11711,9 +11711,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
4280 #ifdef CONFIG_X86_32
4281 # include "uaccess_32.h"
4282 #else
4283 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vdso.h linux-2.6.32.48/arch/x86/include/asm/vdso.h
4284 ---- linux-2.6.32.48/arch/x86/include/asm/vdso.h 2009-12-02 22:51:21.000000000 -0500
4285 -+++ linux-2.6.32.48/arch/x86/include/asm/vdso.h 2011-11-12 12:46:42.000000000 -0500
4286 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/vdso.h linux-2.6.32.46/arch/x86/include/asm/vdso.h
4287 +--- linux-2.6.32.46/arch/x86/include/asm/vdso.h 2011-03-27 14:31:47.000000000 -0400
4288 ++++ linux-2.6.32.46/arch/x86/include/asm/vdso.h 2011-10-06 09:37:14.000000000 -0400
4289 @@ -25,7 +25,7 @@ extern const char VDSO32_PRELINK[];
4290 #define VDSO32_SYMBOL(base, name) \
4291 ({ \
4292 @@ -11723,9 +11723,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/vdso.h linux-2.6.32.48/arch/x86/
4293 })
4294 #endif
4295
4296 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vgtod.h linux-2.6.32.48/arch/x86/include/asm/vgtod.h
4297 ---- linux-2.6.32.48/arch/x86/include/asm/vgtod.h 2009-12-02 22:51:21.000000000 -0500
4298 -+++ linux-2.6.32.48/arch/x86/include/asm/vgtod.h 2011-11-12 12:46:42.000000000 -0500
4299 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/vgtod.h linux-2.6.32.46/arch/x86/include/asm/vgtod.h
4300 +--- linux-2.6.32.46/arch/x86/include/asm/vgtod.h 2011-03-27 14:31:47.000000000 -0400
4301 ++++ linux-2.6.32.46/arch/x86/include/asm/vgtod.h 2011-04-17 15:56:46.000000000 -0400
4302 @@ -14,6 +14,7 @@ struct vsyscall_gtod_data {
4303 int sysctl_enabled;
4304 struct timezone sys_tz;
4305 @@ -11734,9 +11734,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/vgtod.h linux-2.6.32.48/arch/x86
4306 cycle_t (*vread)(void);
4307 cycle_t cycle_last;
4308 cycle_t mask;
4309 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vmi.h linux-2.6.32.48/arch/x86/include/asm/vmi.h
4310 ---- linux-2.6.32.48/arch/x86/include/asm/vmi.h 2009-12-02 22:51:21.000000000 -0500
4311 -+++ linux-2.6.32.48/arch/x86/include/asm/vmi.h 2011-11-12 12:46:42.000000000 -0500
4312 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/vmi.h linux-2.6.32.46/arch/x86/include/asm/vmi.h
4313 +--- linux-2.6.32.46/arch/x86/include/asm/vmi.h 2011-03-27 14:31:47.000000000 -0400
4314 ++++ linux-2.6.32.46/arch/x86/include/asm/vmi.h 2011-04-17 15:56:46.000000000 -0400
4315 @@ -191,6 +191,7 @@ struct vrom_header {
4316 u8 reserved[96]; /* Reserved for headers */
4317 char vmi_init[8]; /* VMI_Init jump point */
4318 @@ -11745,9 +11745,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/vmi.h linux-2.6.32.48/arch/x86/i
4319 } __attribute__((packed));
4320
4321 struct pnp_header {
4322 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vmi_time.h linux-2.6.32.48/arch/x86/include/asm/vmi_time.h
4323 ---- linux-2.6.32.48/arch/x86/include/asm/vmi_time.h 2009-12-02 22:51:21.000000000 -0500
4324 -+++ linux-2.6.32.48/arch/x86/include/asm/vmi_time.h 2011-11-12 12:46:42.000000000 -0500
4325 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/vmi_time.h linux-2.6.32.46/arch/x86/include/asm/vmi_time.h
4326 +--- linux-2.6.32.46/arch/x86/include/asm/vmi_time.h 2011-03-27 14:31:47.000000000 -0400
4327 ++++ linux-2.6.32.46/arch/x86/include/asm/vmi_time.h 2011-08-05 20:33:55.000000000 -0400
4328 @@ -43,7 +43,7 @@ extern struct vmi_timer_ops {
4329 int (*wallclock_updated)(void);
4330 void (*set_alarm)(u32 flags, u64 expiry, u64 period);
4331 @@ -11757,9 +11757,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/vmi_time.h linux-2.6.32.48/arch/
4332
4333 /* Prototypes */
4334 extern void __init vmi_time_init(void);
4335 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vsyscall.h linux-2.6.32.48/arch/x86/include/asm/vsyscall.h
4336 ---- linux-2.6.32.48/arch/x86/include/asm/vsyscall.h 2009-12-02 22:51:21.000000000 -0500
4337 -+++ linux-2.6.32.48/arch/x86/include/asm/vsyscall.h 2011-11-12 12:46:42.000000000 -0500
4338 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/vsyscall.h linux-2.6.32.46/arch/x86/include/asm/vsyscall.h
4339 +--- linux-2.6.32.46/arch/x86/include/asm/vsyscall.h 2011-03-27 14:31:47.000000000 -0400
4340 ++++ linux-2.6.32.46/arch/x86/include/asm/vsyscall.h 2011-04-17 15:56:46.000000000 -0400
4341 @@ -15,9 +15,10 @@ enum vsyscall_num {
4342
4343 #ifdef __KERNEL__
4344 @@ -11790,9 +11790,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/vsyscall.h linux-2.6.32.48/arch/
4345 #endif /* __KERNEL__ */
4346
4347 #endif /* _ASM_X86_VSYSCALL_H */
4348 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/x86_init.h linux-2.6.32.48/arch/x86/include/asm/x86_init.h
4349 ---- linux-2.6.32.48/arch/x86/include/asm/x86_init.h 2009-12-02 22:51:21.000000000 -0500
4350 -+++ linux-2.6.32.48/arch/x86/include/asm/x86_init.h 2011-11-12 12:46:42.000000000 -0500
4351 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/x86_init.h linux-2.6.32.46/arch/x86/include/asm/x86_init.h
4352 +--- linux-2.6.32.46/arch/x86/include/asm/x86_init.h 2011-03-27 14:31:47.000000000 -0400
4353 ++++ linux-2.6.32.46/arch/x86/include/asm/x86_init.h 2011-08-05 20:33:55.000000000 -0400
4354 @@ -28,7 +28,7 @@ struct x86_init_mpparse {
4355 void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name);
4356 void (*find_smp_config)(unsigned int reserve);
4357 @@ -11874,9 +11874,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/x86_init.h linux-2.6.32.48/arch/
4358
4359 extern struct x86_init_ops x86_init;
4360 extern struct x86_cpuinit_ops x86_cpuinit;
4361 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/xsave.h linux-2.6.32.48/arch/x86/include/asm/xsave.h
4362 ---- linux-2.6.32.48/arch/x86/include/asm/xsave.h 2009-12-02 22:51:21.000000000 -0500
4363 -+++ linux-2.6.32.48/arch/x86/include/asm/xsave.h 2011-11-12 12:46:42.000000000 -0500
4364 +diff -urNp linux-2.6.32.46/arch/x86/include/asm/xsave.h linux-2.6.32.46/arch/x86/include/asm/xsave.h
4365 +--- linux-2.6.32.46/arch/x86/include/asm/xsave.h 2011-03-27 14:31:47.000000000 -0400
4366 ++++ linux-2.6.32.46/arch/x86/include/asm/xsave.h 2011-10-06 09:37:08.000000000 -0400
4367 @@ -56,6 +56,12 @@ static inline int xrstor_checking(struct
4368 static inline int xsave_user(struct xsave_struct __user *buf)
4369 {
4370 @@ -11907,9 +11907,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/xsave.h linux-2.6.32.48/arch/x86
4371 __asm__ __volatile__("1: .byte " REX_PREFIX "0x0f,0xae,0x2f\n"
4372 "2:\n"
4373 ".section .fixup,\"ax\"\n"
4374 -diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
4375 ---- linux-2.6.32.48/arch/x86/Kconfig 2011-11-12 12:44:28.000000000 -0500
4376 -+++ linux-2.6.32.48/arch/x86/Kconfig 2011-11-12 12:46:42.000000000 -0500
4377 +diff -urNp linux-2.6.32.46/arch/x86/Kconfig linux-2.6.32.46/arch/x86/Kconfig
4378 +--- linux-2.6.32.46/arch/x86/Kconfig 2011-03-27 14:31:47.000000000 -0400
4379 ++++ linux-2.6.32.46/arch/x86/Kconfig 2011-10-07 08:11:49.000000000 -0400
4380 @@ -223,7 +223,7 @@ config X86_TRAMPOLINE
4381
4382 config X86_32_LAZY_GS
4383 @@ -11982,9 +11982,9 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
4384 ---help---
4385 Map the 32-bit VDSO to the predictable old-style address too.
4386 ---help---
4387 -diff -urNp linux-2.6.32.48/arch/x86/Kconfig.cpu linux-2.6.32.48/arch/x86/Kconfig.cpu
4388 ---- linux-2.6.32.48/arch/x86/Kconfig.cpu 2011-11-12 12:44:28.000000000 -0500
4389 -+++ linux-2.6.32.48/arch/x86/Kconfig.cpu 2011-11-12 12:46:42.000000000 -0500
4390 +diff -urNp linux-2.6.32.46/arch/x86/Kconfig.cpu linux-2.6.32.46/arch/x86/Kconfig.cpu
4391 +--- linux-2.6.32.46/arch/x86/Kconfig.cpu 2011-03-27 14:31:47.000000000 -0400
4392 ++++ linux-2.6.32.46/arch/x86/Kconfig.cpu 2011-04-17 15:56:46.000000000 -0400
4393 @@ -340,7 +340,7 @@ config X86_PPRO_FENCE
4394
4395 config X86_F00F_BUG
4396 @@ -12012,9 +12012,9 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig.cpu linux-2.6.32.48/arch/x86/Kconfig
4397
4398 config X86_MINIMUM_CPU_FAMILY
4399 int
4400 -diff -urNp linux-2.6.32.48/arch/x86/Kconfig.debug linux-2.6.32.48/arch/x86/Kconfig.debug
4401 ---- linux-2.6.32.48/arch/x86/Kconfig.debug 2009-12-02 22:51:21.000000000 -0500
4402 -+++ linux-2.6.32.48/arch/x86/Kconfig.debug 2011-11-12 12:46:42.000000000 -0500
4403 +diff -urNp linux-2.6.32.46/arch/x86/Kconfig.debug linux-2.6.32.46/arch/x86/Kconfig.debug
4404 +--- linux-2.6.32.46/arch/x86/Kconfig.debug 2011-03-27 14:31:47.000000000 -0400
4405 ++++ linux-2.6.32.46/arch/x86/Kconfig.debug 2011-04-17 15:56:46.000000000 -0400
4406 @@ -99,7 +99,7 @@ config X86_PTDUMP
4407 config DEBUG_RODATA
4408 bool "Write protect kernel read-only data structures"
4409 @@ -12024,9 +12024,9 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig.debug linux-2.6.32.48/arch/x86/Kconf
4410 ---help---
4411 Mark the kernel read-only data as write-protected in the pagetables,
4412 in order to catch accidental (and incorrect) writes to such const
4413 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile
4414 ---- linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile 2009-12-02 22:51:21.000000000 -0500
4415 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile 2011-11-12 12:46:42.000000000 -0500
4416 +diff -urNp linux-2.6.32.46/arch/x86/kernel/acpi/realmode/Makefile linux-2.6.32.46/arch/x86/kernel/acpi/realmode/Makefile
4417 +--- linux-2.6.32.46/arch/x86/kernel/acpi/realmode/Makefile 2011-03-27 14:31:47.000000000 -0400
4418 ++++ linux-2.6.32.46/arch/x86/kernel/acpi/realmode/Makefile 2011-08-07 14:38:58.000000000 -0400
4419 @@ -41,6 +41,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
4420 $(call cc-option, -fno-stack-protector) \
4421 $(call cc-option, -mpreferred-stack-boundary=2)
4422 @@ -12037,9 +12037,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile linux-2.6.32.4
4423 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
4424 GCOV_PROFILE := n
4425
4426 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S
4427 ---- linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S 2009-12-02 22:51:21.000000000 -0500
4428 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S 2011-11-12 12:46:42.000000000 -0500
4429 +diff -urNp linux-2.6.32.46/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.32.46/arch/x86/kernel/acpi/realmode/wakeup.S
4430 +--- linux-2.6.32.46/arch/x86/kernel/acpi/realmode/wakeup.S 2011-03-27 14:31:47.000000000 -0400
4431 ++++ linux-2.6.32.46/arch/x86/kernel/acpi/realmode/wakeup.S 2011-07-01 18:53:40.000000000 -0400
4432 @@ -91,6 +91,9 @@ _start:
4433 /* Do any other stuff... */
4434
4435 @@ -12067,9 +12067,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.32.4
4436 #else
4437 pushw $0
4438 pushw trampoline_segment
4439 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c
4440 ---- linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c 2009-12-02 22:51:21.000000000 -0500
4441 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c 2011-11-12 12:46:42.000000000 -0500
4442 +diff -urNp linux-2.6.32.46/arch/x86/kernel/acpi/sleep.c linux-2.6.32.46/arch/x86/kernel/acpi/sleep.c
4443 +--- linux-2.6.32.46/arch/x86/kernel/acpi/sleep.c 2011-03-27 14:31:47.000000000 -0400
4444 ++++ linux-2.6.32.46/arch/x86/kernel/acpi/sleep.c 2011-07-01 19:01:34.000000000 -0400
4445 @@ -11,11 +11,12 @@
4446 #include <linux/cpumask.h>
4447 #include <asm/segment.h>
4448 @@ -12116,9 +12116,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c linux-2.6.32.48/arch/x86
4449 }
4450
4451
4452 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S
4453 ---- linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S 2009-12-02 22:51:21.000000000 -0500
4454 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S 2011-11-12 12:46:42.000000000 -0500
4455 +diff -urNp linux-2.6.32.46/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.32.46/arch/x86/kernel/acpi/wakeup_32.S
4456 +--- linux-2.6.32.46/arch/x86/kernel/acpi/wakeup_32.S 2011-03-27 14:31:47.000000000 -0400
4457 ++++ linux-2.6.32.46/arch/x86/kernel/acpi/wakeup_32.S 2011-04-17 15:56:46.000000000 -0400
4458 @@ -30,13 +30,11 @@ wakeup_pmode_return:
4459 # and restore the stack ... but you need gdt for this to work
4460 movl saved_context_esp, %esp
4461 @@ -12135,9 +12135,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.32.48/arch
4462
4463 bogus_magic:
4464 jmp bogus_magic
4465 -diff -urNp linux-2.6.32.48/arch/x86/kernel/alternative.c linux-2.6.32.48/arch/x86/kernel/alternative.c
4466 ---- linux-2.6.32.48/arch/x86/kernel/alternative.c 2009-12-02 22:51:21.000000000 -0500
4467 -+++ linux-2.6.32.48/arch/x86/kernel/alternative.c 2011-11-12 12:46:42.000000000 -0500
4468 +diff -urNp linux-2.6.32.46/arch/x86/kernel/alternative.c linux-2.6.32.46/arch/x86/kernel/alternative.c
4469 +--- linux-2.6.32.46/arch/x86/kernel/alternative.c 2011-03-27 14:31:47.000000000 -0400
4470 ++++ linux-2.6.32.46/arch/x86/kernel/alternative.c 2011-04-17 15:56:46.000000000 -0400
4471 @@ -407,7 +407,7 @@ void __init_or_module apply_paravirt(str
4472
4473 BUG_ON(p->len > MAX_PATCH_LEN);
4474 @@ -12220,9 +12220,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/alternative.c linux-2.6.32.48/arch/x8
4475 + BUG_ON((vaddr)[i] != ((const unsigned char *)opcode)[i]);
4476 return addr;
4477 }
4478 -diff -urNp linux-2.6.32.48/arch/x86/kernel/amd_iommu.c linux-2.6.32.48/arch/x86/kernel/amd_iommu.c
4479 ---- linux-2.6.32.48/arch/x86/kernel/amd_iommu.c 2011-11-12 12:44:28.000000000 -0500
4480 -+++ linux-2.6.32.48/arch/x86/kernel/amd_iommu.c 2011-11-12 12:46:42.000000000 -0500
4481 +diff -urNp linux-2.6.32.46/arch/x86/kernel/amd_iommu.c linux-2.6.32.46/arch/x86/kernel/amd_iommu.c
4482 +--- linux-2.6.32.46/arch/x86/kernel/amd_iommu.c 2011-03-27 14:31:47.000000000 -0400
4483 ++++ linux-2.6.32.46/arch/x86/kernel/amd_iommu.c 2011-04-17 15:56:46.000000000 -0400
4484 @@ -2076,7 +2076,7 @@ static void prealloc_protection_domains(
4485 }
4486 }
4487 @@ -12232,9 +12232,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/amd_iommu.c linux-2.6.32.48/arch/x86/
4488 .alloc_coherent = alloc_coherent,
4489 .free_coherent = free_coherent,
4490 .map_page = map_page,
4491 -diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/apic.c linux-2.6.32.48/arch/x86/kernel/apic/apic.c
4492 ---- linux-2.6.32.48/arch/x86/kernel/apic/apic.c 2011-11-12 12:44:28.000000000 -0500
4493 -+++ linux-2.6.32.48/arch/x86/kernel/apic/apic.c 2011-11-12 12:46:42.000000000 -0500
4494 +diff -urNp linux-2.6.32.46/arch/x86/kernel/apic/apic.c linux-2.6.32.46/arch/x86/kernel/apic/apic.c
4495 +--- linux-2.6.32.46/arch/x86/kernel/apic/apic.c 2011-03-27 14:31:47.000000000 -0400
4496 ++++ linux-2.6.32.46/arch/x86/kernel/apic/apic.c 2011-08-17 20:00:16.000000000 -0400
4497 @@ -170,7 +170,7 @@ int first_system_vector = 0xfe;
4498 /*
4499 * Debug level, exported for io_apic.c
4500 @@ -12262,9 +12262,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/apic.c linux-2.6.32.48/arch/x86/
4501 bios_cpu_apicid = early_per_cpu_ptr(x86_bios_cpu_apicid);
4502 bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
4503
4504 -diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c
4505 ---- linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c 2011-11-12 12:44:28.000000000 -0500
4506 -+++ linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c 2011-11-12 12:46:42.000000000 -0500
4507 +diff -urNp linux-2.6.32.46/arch/x86/kernel/apic/io_apic.c linux-2.6.32.46/arch/x86/kernel/apic/io_apic.c
4508 +--- linux-2.6.32.46/arch/x86/kernel/apic/io_apic.c 2011-03-27 14:31:47.000000000 -0400
4509 ++++ linux-2.6.32.46/arch/x86/kernel/apic/io_apic.c 2011-05-04 17:56:20.000000000 -0400
4510 @@ -716,7 +716,7 @@ struct IO_APIC_route_entry **alloc_ioapi
4511 ioapic_entries = kzalloc(sizeof(*ioapic_entries) * nr_ioapics,
4512 GFP_ATOMIC);
4513 @@ -12319,9 +12319,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c linux-2.6.32.48/arch/x
4514 spin_lock(&ioapic_lock);
4515 __mask_and_edge_IO_APIC_irq(cfg);
4516 __unmask_and_level_IO_APIC_irq(cfg);
4517 -diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/kernel/apm_32.c
4518 ---- linux-2.6.32.48/arch/x86/kernel/apm_32.c 2009-12-02 22:51:21.000000000 -0500
4519 -+++ linux-2.6.32.48/arch/x86/kernel/apm_32.c 2011-11-12 12:46:42.000000000 -0500
4520 +diff -urNp linux-2.6.32.46/arch/x86/kernel/apm_32.c linux-2.6.32.46/arch/x86/kernel/apm_32.c
4521 +--- linux-2.6.32.46/arch/x86/kernel/apm_32.c 2011-03-27 14:31:47.000000000 -0400
4522 ++++ linux-2.6.32.46/arch/x86/kernel/apm_32.c 2011-04-23 12:56:10.000000000 -0400
4523 @@ -410,7 +410,7 @@ static DEFINE_SPINLOCK(user_list_lock);
4524 * This is for buggy BIOS's that refer to (real mode) segment 0x40
4525 * even though they are called in protected mode.
4526 @@ -12402,9 +12402,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/ker
4527
4528 proc_create("apm", 0, NULL, &apm_file_ops);
4529
4530 -diff -urNp linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c
4531 ---- linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c 2009-12-02 22:51:21.000000000 -0500
4532 -+++ linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c 2011-11-12 12:46:42.000000000 -0500
4533 +diff -urNp linux-2.6.32.46/arch/x86/kernel/asm-offsets_32.c linux-2.6.32.46/arch/x86/kernel/asm-offsets_32.c
4534 +--- linux-2.6.32.46/arch/x86/kernel/asm-offsets_32.c 2011-03-27 14:31:47.000000000 -0400
4535 ++++ linux-2.6.32.46/arch/x86/kernel/asm-offsets_32.c 2011-05-16 21:46:57.000000000 -0400
4536 @@ -51,7 +51,6 @@ void foo(void)
4537 OFFSET(CPUINFO_x86_vendor_id, cpuinfo_x86, x86_vendor_id);
4538 BLANK();
4539 @@ -12442,9 +12442,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c linux-2.6.32.48/arch
4540 #endif
4541
4542 #ifdef CONFIG_XEN
4543 -diff -urNp linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c
4544 ---- linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c 2009-12-02 22:51:21.000000000 -0500
4545 -+++ linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c 2011-11-12 12:46:42.000000000 -0500
4546 +diff -urNp linux-2.6.32.46/arch/x86/kernel/asm-offsets_64.c linux-2.6.32.46/arch/x86/kernel/asm-offsets_64.c
4547 +--- linux-2.6.32.46/arch/x86/kernel/asm-offsets_64.c 2011-03-27 14:31:47.000000000 -0400
4548 ++++ linux-2.6.32.46/arch/x86/kernel/asm-offsets_64.c 2011-08-23 20:24:19.000000000 -0400
4549 @@ -44,6 +44,8 @@ int main(void)
4550 ENTRY(addr_limit);
4551 ENTRY(preempt_count);
4552 @@ -12489,9 +12489,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c linux-2.6.32.48/arch
4553 #ifdef CONFIG_XEN
4554 BLANK();
4555 OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask);
4556 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/amd.c linux-2.6.32.48/arch/x86/kernel/cpu/amd.c
4557 ---- linux-2.6.32.48/arch/x86/kernel/cpu/amd.c 2011-11-12 12:44:28.000000000 -0500
4558 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/amd.c 2011-11-12 12:46:42.000000000 -0500
4559 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/amd.c linux-2.6.32.46/arch/x86/kernel/cpu/amd.c
4560 +--- linux-2.6.32.46/arch/x86/kernel/cpu/amd.c 2011-06-25 12:55:34.000000000 -0400
4561 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/amd.c 2011-06-25 12:56:37.000000000 -0400
4562 @@ -602,7 +602,7 @@ static unsigned int __cpuinit amd_size_c
4563 unsigned int size)
4564 {
4565 @@ -12501,9 +12501,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/amd.c linux-2.6.32.48/arch/x86/ke
4566 /* Duron Rev A0 */
4567 if (c->x86_model == 3 && c->x86_mask == 0)
4568 size = 64;
4569 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86/kernel/cpu/common.c
4570 ---- linux-2.6.32.48/arch/x86/kernel/cpu/common.c 2011-11-12 12:44:28.000000000 -0500
4571 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/common.c 2011-11-12 12:46:42.000000000 -0500
4572 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/common.c linux-2.6.32.46/arch/x86/kernel/cpu/common.c
4573 +--- linux-2.6.32.46/arch/x86/kernel/cpu/common.c 2011-03-27 14:31:47.000000000 -0400
4574 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/common.c 2011-05-11 18:25:15.000000000 -0400
4575 @@ -83,60 +83,6 @@ static const struct cpu_dev __cpuinitcon
4576
4577 static const struct cpu_dev *this_cpu __cpuinitdata = &default_cpu;
4578 @@ -12648,9 +12648,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
4579 struct thread_struct *thread = &curr->thread;
4580
4581 if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
4582 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/intel.c linux-2.6.32.48/arch/x86/kernel/cpu/intel.c
4583 ---- linux-2.6.32.48/arch/x86/kernel/cpu/intel.c 2011-11-12 12:44:28.000000000 -0500
4584 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/intel.c 2011-11-12 12:46:42.000000000 -0500
4585 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/intel.c linux-2.6.32.46/arch/x86/kernel/cpu/intel.c
4586 +--- linux-2.6.32.46/arch/x86/kernel/cpu/intel.c 2011-03-27 14:31:47.000000000 -0400
4587 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/intel.c 2011-04-17 15:56:46.000000000 -0400
4588 @@ -162,7 +162,7 @@ static void __cpuinit trap_init_f00f_bug
4589 * Update the IDT descriptor and reload the IDT so that
4590 * it uses the read-only mapped virtual address.
4591 @@ -12660,9 +12660,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/intel.c linux-2.6.32.48/arch/x86/
4592 load_idt(&idt_descr);
4593 }
4594 #endif
4595 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c
4596 ---- linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c 2011-11-12 12:44:28.000000000 -0500
4597 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c 2011-11-12 12:46:42.000000000 -0500
4598 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/intel_cacheinfo.c linux-2.6.32.46/arch/x86/kernel/cpu/intel_cacheinfo.c
4599 +--- linux-2.6.32.46/arch/x86/kernel/cpu/intel_cacheinfo.c 2011-03-27 14:31:47.000000000 -0400
4600 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/intel_cacheinfo.c 2011-04-17 15:56:46.000000000 -0400
4601 @@ -921,7 +921,7 @@ static ssize_t store(struct kobject *kob
4602 return ret;
4603 }
4604 @@ -12672,9 +12672,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c linux-2.6.32.48
4605 .show = show,
4606 .store = store,
4607 };
4608 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/Makefile linux-2.6.32.48/arch/x86/kernel/cpu/Makefile
4609 ---- linux-2.6.32.48/arch/x86/kernel/cpu/Makefile 2011-11-12 12:44:28.000000000 -0500
4610 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/Makefile 2011-11-12 12:46:42.000000000 -0500
4611 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/Makefile linux-2.6.32.46/arch/x86/kernel/cpu/Makefile
4612 +--- linux-2.6.32.46/arch/x86/kernel/cpu/Makefile 2011-03-27 14:31:47.000000000 -0400
4613 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/Makefile 2011-04-17 15:56:46.000000000 -0400
4614 @@ -7,10 +7,6 @@ ifdef CONFIG_FUNCTION_TRACER
4615 CFLAGS_REMOVE_common.o = -pg
4616 endif
4617 @@ -12686,9 +12686,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/Makefile linux-2.6.32.48/arch/x86
4618 obj-y := intel_cacheinfo.o addon_cpuid_features.o
4619 obj-y += proc.o capflags.o powerflags.o common.o
4620 obj-y += vmware.o hypervisor.o sched.o
4621 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c
4622 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c 2011-11-12 12:44:28.000000000 -0500
4623 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c 2011-11-12 12:46:42.000000000 -0500
4624 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce_amd.c linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce_amd.c
4625 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce_amd.c 2011-05-23 16:56:59.000000000 -0400
4626 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce_amd.c 2011-05-23 16:57:13.000000000 -0400
4627 @@ -385,7 +385,7 @@ static ssize_t store(struct kobject *kob
4628 return ret;
4629 }
4630 @@ -12698,9 +12698,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c linux-2.6.32.48/
4631 .show = show,
4632 .store = store,
4633 };
4634 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c
4635 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-12 12:44:28.000000000 -0500
4636 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-12 12:46:42.000000000 -0500
4637 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce.c
4638 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce.c 2011-03-27 14:31:47.000000000 -0400
4639 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce.c 2011-05-04 17:56:20.000000000 -0400
4640 @@ -43,6 +43,7 @@
4641 #include <asm/ipi.h>
4642 #include <asm/mce.h>
4643 @@ -12802,9 +12802,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
4644 atomic_set(&mce_executing, 0);
4645 atomic_set(&mce_callin, 0);
4646 atomic_set(&global_nwo, 0);
4647 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c
4648 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c 2009-12-02 22:51:21.000000000 -0500
4649 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-11-12 12:46:42.000000000 -0500
4650 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce-inject.c
4651 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-03-27 14:31:47.000000000 -0400
4652 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-08-05 20:33:55.000000000 -0400
4653 @@ -211,7 +211,9 @@ static ssize_t mce_write(struct file *fi
4654 static int inject_init(void)
4655 {
4656 @@ -12816,9 +12816,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-2.6.32.
4657 register_die_notifier(&mce_raise_nb);
4658 return 0;
4659 }
4660 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c
4661 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c 2009-12-02 22:51:21.000000000 -0500
4662 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c 2011-11-12 12:46:42.000000000 -0500
4663 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/amd.c linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/amd.c
4664 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/amd.c 2011-03-27 14:31:47.000000000 -0400
4665 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/amd.c 2011-04-17 15:56:46.000000000 -0400
4666 @@ -108,7 +108,7 @@ amd_validate_add_page(unsigned long base
4667 return 0;
4668 }
4669 @@ -12828,9 +12828,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c linux-2.6.32.48/arch/x
4670 .vendor = X86_VENDOR_AMD,
4671 .set = amd_set_mtrr,
4672 .get = amd_get_mtrr,
4673 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c
4674 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c 2009-12-02 22:51:21.000000000 -0500
4675 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c 2011-11-12 12:46:42.000000000 -0500
4676 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/centaur.c linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/centaur.c
4677 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/centaur.c 2011-03-27 14:31:47.000000000 -0400
4678 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/centaur.c 2011-04-17 15:56:46.000000000 -0400
4679 @@ -110,7 +110,7 @@ centaur_validate_add_page(unsigned long
4680 return 0;
4681 }
4682 @@ -12840,9 +12840,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c linux-2.6.32.48/ar
4683 .vendor = X86_VENDOR_CENTAUR,
4684 .set = centaur_set_mcr,
4685 .get = centaur_get_mcr,
4686 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c
4687 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c 2009-12-02 22:51:21.000000000 -0500
4688 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c 2011-11-12 12:46:42.000000000 -0500
4689 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/cyrix.c linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/cyrix.c
4690 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/cyrix.c 2011-03-27 14:31:47.000000000 -0400
4691 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/cyrix.c 2011-04-17 15:56:46.000000000 -0400
4692 @@ -265,7 +265,7 @@ static void cyrix_set_all(void)
4693 post_set();
4694 }
4695 @@ -12852,9 +12852,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c linux-2.6.32.48/arch
4696 .vendor = X86_VENDOR_CYRIX,
4697 .set_all = cyrix_set_all,
4698 .set = cyrix_set_arr,
4699 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c
4700 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c 2009-12-02 22:51:21.000000000 -0500
4701 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c 2011-11-12 12:46:42.000000000 -0500
4702 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/generic.c linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/generic.c
4703 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/generic.c 2011-03-27 14:31:47.000000000 -0400
4704 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/generic.c 2011-04-23 12:56:10.000000000 -0400
4705 @@ -752,7 +752,7 @@ int positive_have_wrcomb(void)
4706 /*
4707 * Generic structure...
4708 @@ -12864,9 +12864,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c linux-2.6.32.48/ar
4709 .use_intel_if = 1,
4710 .set_all = generic_set_all,
4711 .get = generic_get_mtrr,
4712 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c
4713 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c 2011-11-12 12:44:28.000000000 -0500
4714 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c 2011-11-12 12:46:42.000000000 -0500
4715 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/main.c
4716 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/main.c 2011-04-17 17:00:52.000000000 -0400
4717 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/main.c 2011-04-17 17:03:05.000000000 -0400
4718 @@ -60,14 +60,14 @@ static DEFINE_MUTEX(mtrr_mutex);
4719 u64 size_or_mask, size_and_mask;
4720 static bool mtrr_aps_delayed_init;
4721 @@ -12885,9 +12885,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.32.48/arch/
4722 {
4723 if (ops->vendor && ops->vendor < X86_VENDOR_NUM)
4724 mtrr_ops[ops->vendor] = ops;
4725 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h
4726 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h 2009-12-02 22:51:21.000000000 -0500
4727 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-11-12 12:46:42.000000000 -0500
4728 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/mtrr.h linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/mtrr.h
4729 +--- linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-03-27 14:31:47.000000000 -0400
4730 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-08-26 20:23:57.000000000 -0400
4731 @@ -25,14 +25,14 @@ struct mtrr_ops {
4732 int (*validate_add_page)(unsigned long base, unsigned long size,
4733 unsigned int type);
4734 @@ -12918,9 +12918,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h linux-2.6.32.48/arch/
4735
4736 #define is_cpu(vnd) (mtrr_if && mtrr_if->vendor == X86_VENDOR_##vnd)
4737 #define use_intel() (mtrr_if && mtrr_if->use_intel_if == 1)
4738 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c
4739 ---- linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c 2011-11-12 12:44:28.000000000 -0500
4740 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c 2011-11-12 12:46:42.000000000 -0500
4741 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/perfctr-watchdog.c linux-2.6.32.46/arch/x86/kernel/cpu/perfctr-watchdog.c
4742 +--- linux-2.6.32.46/arch/x86/kernel/cpu/perfctr-watchdog.c 2011-03-27 14:31:47.000000000 -0400
4743 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/perfctr-watchdog.c 2011-04-17 15:56:46.000000000 -0400
4744 @@ -30,11 +30,11 @@ struct nmi_watchdog_ctlblk {
4745
4746 /* Interface defining a CPU specific perfctr watchdog */
4747 @@ -12954,9 +12954,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c linux-2.6.32.4
4748 static struct wd_ops intel_arch_wd_ops __read_mostly = {
4749 .reserve = single_msr_reserve,
4750 .unreserve = single_msr_unreserve,
4751 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c
4752 ---- linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c 2011-11-12 12:44:28.000000000 -0500
4753 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c 2011-11-12 12:46:42.000000000 -0500
4754 +diff -urNp linux-2.6.32.46/arch/x86/kernel/cpu/perf_event.c linux-2.6.32.46/arch/x86/kernel/cpu/perf_event.c
4755 +--- linux-2.6.32.46/arch/x86/kernel/cpu/perf_event.c 2011-03-27 14:31:47.000000000 -0400
4756 ++++ linux-2.6.32.46/arch/x86/kernel/cpu/perf_event.c 2011-05-04 17:56:20.000000000 -0400
4757 @@ -723,10 +723,10 @@ x86_perf_event_update(struct perf_event
4758 * count to the generic event atomically:
4759 */
4760 @@ -12997,9 +12997,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c linux-2.6.32.48/arch
4761 }
4762 }
4763
4764 -diff -urNp linux-2.6.32.48/arch/x86/kernel/crash.c linux-2.6.32.48/arch/x86/kernel/crash.c
4765 ---- linux-2.6.32.48/arch/x86/kernel/crash.c 2011-11-12 12:44:28.000000000 -0500
4766 -+++ linux-2.6.32.48/arch/x86/kernel/crash.c 2011-11-12 12:46:42.000000000 -0500
4767 +diff -urNp linux-2.6.32.46/arch/x86/kernel/crash.c linux-2.6.32.46/arch/x86/kernel/crash.c
4768 +--- linux-2.6.32.46/arch/x86/kernel/crash.c 2011-03-27 14:31:47.000000000 -0400
4769 ++++ linux-2.6.32.46/arch/x86/kernel/crash.c 2011-04-17 15:56:46.000000000 -0400
4770 @@ -41,7 +41,7 @@ static void kdump_nmi_callback(int cpu,
4771 regs = args->regs;
4772
4773 @@ -13009,9 +13009,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/crash.c linux-2.6.32.48/arch/x86/kern
4774 crash_fixup_ss_esp(&fixed_regs, regs);
4775 regs = &fixed_regs;
4776 }
4777 -diff -urNp linux-2.6.32.48/arch/x86/kernel/doublefault_32.c linux-2.6.32.48/arch/x86/kernel/doublefault_32.c
4778 ---- linux-2.6.32.48/arch/x86/kernel/doublefault_32.c 2009-12-02 22:51:21.000000000 -0500
4779 -+++ linux-2.6.32.48/arch/x86/kernel/doublefault_32.c 2011-11-12 12:46:42.000000000 -0500
4780 +diff -urNp linux-2.6.32.46/arch/x86/kernel/doublefault_32.c linux-2.6.32.46/arch/x86/kernel/doublefault_32.c
4781 +--- linux-2.6.32.46/arch/x86/kernel/doublefault_32.c 2011-03-27 14:31:47.000000000 -0400
4782 ++++ linux-2.6.32.46/arch/x86/kernel/doublefault_32.c 2011-04-17 15:56:46.000000000 -0400
4783 @@ -11,7 +11,7 @@
4784
4785 #define DOUBLEFAULT_STACKSIZE (1024)
4786 @@ -13043,9 +13043,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/doublefault_32.c linux-2.6.32.48/arch
4787 .fs = __KERNEL_PERCPU,
4788
4789 .__cr3 = __pa_nodebug(swapper_pg_dir),
4790 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c
4791 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c 2009-12-02 22:51:21.000000000 -0500
4792 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c 2011-11-12 12:46:42.000000000 -0500
4793 +diff -urNp linux-2.6.32.46/arch/x86/kernel/dumpstack_32.c linux-2.6.32.46/arch/x86/kernel/dumpstack_32.c
4794 +--- linux-2.6.32.46/arch/x86/kernel/dumpstack_32.c 2011-03-27 14:31:47.000000000 -0400
4795 ++++ linux-2.6.32.46/arch/x86/kernel/dumpstack_32.c 2011-04-17 15:56:46.000000000 -0400
4796 @@ -53,16 +53,12 @@ void dump_trace(struct task_struct *task
4797 #endif
4798
4799 @@ -13111,9 +13111,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x
4800 if (ip < PAGE_OFFSET)
4801 return 0;
4802 if (probe_kernel_address((unsigned short *)ip, ud2))
4803 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c
4804 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c 2009-12-02 22:51:21.000000000 -0500
4805 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c 2011-11-12 12:46:42.000000000 -0500
4806 +diff -urNp linux-2.6.32.46/arch/x86/kernel/dumpstack_64.c linux-2.6.32.46/arch/x86/kernel/dumpstack_64.c
4807 +--- linux-2.6.32.46/arch/x86/kernel/dumpstack_64.c 2011-03-27 14:31:47.000000000 -0400
4808 ++++ linux-2.6.32.46/arch/x86/kernel/dumpstack_64.c 2011-04-17 15:56:46.000000000 -0400
4809 @@ -116,8 +116,8 @@ void dump_trace(struct task_struct *task
4810 unsigned long *irq_stack_end =
4811 (unsigned long *)per_cpu(irq_stack_ptr, cpu);
4812 @@ -13164,9 +13164,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c linux-2.6.32.48/arch/x
4813 put_cpu();
4814 }
4815 EXPORT_SYMBOL(dump_trace);
4816 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/kernel/dumpstack.c
4817 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack.c 2009-12-02 22:51:21.000000000 -0500
4818 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack.c 2011-11-12 12:46:42.000000000 -0500
4819 +diff -urNp linux-2.6.32.46/arch/x86/kernel/dumpstack.c linux-2.6.32.46/arch/x86/kernel/dumpstack.c
4820 +--- linux-2.6.32.46/arch/x86/kernel/dumpstack.c 2011-03-27 14:31:47.000000000 -0400
4821 ++++ linux-2.6.32.46/arch/x86/kernel/dumpstack.c 2011-04-17 15:56:46.000000000 -0400
4822 @@ -2,6 +2,9 @@
4823 * Copyright (C) 1991, 1992 Linus Torvalds
4824 * Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
4825 @@ -13283,9 +13283,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
4826 report_bug(regs->ip, regs);
4827
4828 if (__die(str, regs, err))
4829 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.h linux-2.6.32.48/arch/x86/kernel/dumpstack.h
4830 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack.h 2009-12-02 22:51:21.000000000 -0500
4831 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack.h 2011-11-12 12:46:42.000000000 -0500
4832 +diff -urNp linux-2.6.32.46/arch/x86/kernel/dumpstack.h linux-2.6.32.46/arch/x86/kernel/dumpstack.h
4833 +--- linux-2.6.32.46/arch/x86/kernel/dumpstack.h 2011-03-27 14:31:47.000000000 -0400
4834 ++++ linux-2.6.32.46/arch/x86/kernel/dumpstack.h 2011-04-23 13:25:26.000000000 -0400
4835 @@ -15,7 +15,7 @@
4836 #endif
4837
4838 @@ -13295,9 +13295,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.h linux-2.6.32.48/arch/x86/
4839 unsigned long *stack, unsigned long bp,
4840 const struct stacktrace_ops *ops, void *data,
4841 unsigned long *end, int *graph);
4842 -diff -urNp linux-2.6.32.48/arch/x86/kernel/e820.c linux-2.6.32.48/arch/x86/kernel/e820.c
4843 ---- linux-2.6.32.48/arch/x86/kernel/e820.c 2011-11-12 12:44:28.000000000 -0500
4844 -+++ linux-2.6.32.48/arch/x86/kernel/e820.c 2011-11-12 12:46:42.000000000 -0500
4845 +diff -urNp linux-2.6.32.46/arch/x86/kernel/e820.c linux-2.6.32.46/arch/x86/kernel/e820.c
4846 +--- linux-2.6.32.46/arch/x86/kernel/e820.c 2011-03-27 14:31:47.000000000 -0400
4847 ++++ linux-2.6.32.46/arch/x86/kernel/e820.c 2011-04-17 15:56:46.000000000 -0400
4848 @@ -733,7 +733,7 @@ struct early_res {
4849 };
4850 static struct early_res early_res[MAX_EARLY_RES] __initdata = {
4851 @@ -13307,9 +13307,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/e820.c linux-2.6.32.48/arch/x86/kerne
4852 };
4853
4854 static int __init find_overlapped_early(u64 start, u64 end)
4855 -diff -urNp linux-2.6.32.48/arch/x86/kernel/early_printk.c linux-2.6.32.48/arch/x86/kernel/early_printk.c
4856 ---- linux-2.6.32.48/arch/x86/kernel/early_printk.c 2009-12-02 22:51:21.000000000 -0500
4857 -+++ linux-2.6.32.48/arch/x86/kernel/early_printk.c 2011-11-12 12:46:42.000000000 -0500
4858 +diff -urNp linux-2.6.32.46/arch/x86/kernel/early_printk.c linux-2.6.32.46/arch/x86/kernel/early_printk.c
4859 +--- linux-2.6.32.46/arch/x86/kernel/early_printk.c 2011-03-27 14:31:47.000000000 -0400
4860 ++++ linux-2.6.32.46/arch/x86/kernel/early_printk.c 2011-05-16 21:46:57.000000000 -0400
4861 @@ -7,6 +7,7 @@
4862 #include <linux/pci_regs.h>
4863 #include <linux/pci_ids.h>
4864 @@ -13327,9 +13327,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/early_printk.c linux-2.6.32.48/arch/x
4865 va_start(ap, fmt);
4866 n = vscnprintf(buf, sizeof(buf), fmt, ap);
4867 early_console->write(early_console, buf, n);
4868 -diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_32.c linux-2.6.32.48/arch/x86/kernel/efi_32.c
4869 ---- linux-2.6.32.48/arch/x86/kernel/efi_32.c 2009-12-02 22:51:21.000000000 -0500
4870 -+++ linux-2.6.32.48/arch/x86/kernel/efi_32.c 2011-11-12 12:46:42.000000000 -0500
4871 +diff -urNp linux-2.6.32.46/arch/x86/kernel/efi_32.c linux-2.6.32.46/arch/x86/kernel/efi_32.c
4872 +--- linux-2.6.32.46/arch/x86/kernel/efi_32.c 2011-03-27 14:31:47.000000000 -0400
4873 ++++ linux-2.6.32.46/arch/x86/kernel/efi_32.c 2011-10-06 09:37:08.000000000 -0400
4874 @@ -38,70 +38,56 @@
4875 */
4876
4877 @@ -13427,9 +13427,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_32.c linux-2.6.32.48/arch/x86/ker
4878
4879 /*
4880 * After the lock is released, the original page table is restored.
4881 -diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S
4882 ---- linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S 2009-12-02 22:51:21.000000000 -0500
4883 -+++ linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S 2011-11-12 12:46:42.000000000 -0500
4884 +diff -urNp linux-2.6.32.46/arch/x86/kernel/efi_stub_32.S linux-2.6.32.46/arch/x86/kernel/efi_stub_32.S
4885 +--- linux-2.6.32.46/arch/x86/kernel/efi_stub_32.S 2011-03-27 14:31:47.000000000 -0400
4886 ++++ linux-2.6.32.46/arch/x86/kernel/efi_stub_32.S 2011-10-06 09:37:08.000000000 -0400
4887 @@ -6,7 +6,9 @@
4888 */
4889
4890 @@ -13538,9 +13538,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S linux-2.6.32.48/arch/x8
4891 saved_return_addr:
4892 .long 0
4893 efi_rt_function_ptr:
4894 -diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S
4895 ---- linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S 2009-12-02 22:51:21.000000000 -0500
4896 -+++ linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S 2011-11-12 12:46:42.000000000 -0500
4897 +diff -urNp linux-2.6.32.46/arch/x86/kernel/efi_stub_64.S linux-2.6.32.46/arch/x86/kernel/efi_stub_64.S
4898 +--- linux-2.6.32.46/arch/x86/kernel/efi_stub_64.S 2011-03-27 14:31:47.000000000 -0400
4899 ++++ linux-2.6.32.46/arch/x86/kernel/efi_stub_64.S 2011-10-06 09:37:14.000000000 -0400
4900 @@ -7,6 +7,7 @@
4901 */
4902
4903 @@ -13604,9 +13604,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S linux-2.6.32.48/arch/x8
4904 + pax_force_retaddr
4905 ret
4906 ENDPROC(efi_call6)
4907 -diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/kernel/entry_32.S
4908 ---- linux-2.6.32.48/arch/x86/kernel/entry_32.S 2009-12-02 22:51:21.000000000 -0500
4909 -+++ linux-2.6.32.48/arch/x86/kernel/entry_32.S 2011-11-12 12:46:42.000000000 -0500
4910 +diff -urNp linux-2.6.32.46/arch/x86/kernel/entry_32.S linux-2.6.32.46/arch/x86/kernel/entry_32.S
4911 +--- linux-2.6.32.46/arch/x86/kernel/entry_32.S 2011-03-27 14:31:47.000000000 -0400
4912 ++++ linux-2.6.32.46/arch/x86/kernel/entry_32.S 2011-08-30 18:19:52.000000000 -0400
4913 @@ -185,13 +185,146 @@
4914 /*CFI_REL_OFFSET gs, PT_GS*/
4915 .endm
4916 @@ -14095,9 +14095,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
4917 RESTORE_REGS
4918 lss 12+4(%esp), %esp # back to espfix stack
4919 CFI_ADJUST_CFA_OFFSET -24
4920 -diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/kernel/entry_64.S
4921 ---- linux-2.6.32.48/arch/x86/kernel/entry_64.S 2011-11-12 12:44:28.000000000 -0500
4922 -+++ linux-2.6.32.48/arch/x86/kernel/entry_64.S 2011-11-12 12:46:42.000000000 -0500
4923 +diff -urNp linux-2.6.32.46/arch/x86/kernel/entry_64.S linux-2.6.32.46/arch/x86/kernel/entry_64.S
4924 +--- linux-2.6.32.46/arch/x86/kernel/entry_64.S 2011-03-27 14:31:47.000000000 -0400
4925 ++++ linux-2.6.32.46/arch/x86/kernel/entry_64.S 2011-10-08 08:14:37.000000000 -0400
4926 @@ -53,6 +53,8 @@
4927 #include <asm/paravirt.h>
4928 #include <asm/ftrace.h>
4929 @@ -14811,9 +14811,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
4930 jmp irq_return
4931 nmi_userspace:
4932 GET_THREAD_INFO(%rcx)
4933 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/kernel/ftrace.c
4934 ---- linux-2.6.32.48/arch/x86/kernel/ftrace.c 2009-12-02 22:51:21.000000000 -0500
4935 -+++ linux-2.6.32.48/arch/x86/kernel/ftrace.c 2011-11-12 12:46:42.000000000 -0500
4936 +diff -urNp linux-2.6.32.46/arch/x86/kernel/ftrace.c linux-2.6.32.46/arch/x86/kernel/ftrace.c
4937 +--- linux-2.6.32.46/arch/x86/kernel/ftrace.c 2011-03-27 14:31:47.000000000 -0400
4938 ++++ linux-2.6.32.46/arch/x86/kernel/ftrace.c 2011-05-04 17:56:20.000000000 -0400
4939 @@ -103,7 +103,7 @@ static void *mod_code_ip; /* holds the
4940 static void *mod_code_newcode; /* holds the text to write to the IP */
4941
4942 @@ -14899,9 +14899,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/ker
4943 if (probe_kernel_read(code, (void *)ip, MCOUNT_INSN_SIZE))
4944 return -EFAULT;
4945
4946 -diff -urNp linux-2.6.32.48/arch/x86/kernel/head32.c linux-2.6.32.48/arch/x86/kernel/head32.c
4947 ---- linux-2.6.32.48/arch/x86/kernel/head32.c 2009-12-02 22:51:21.000000000 -0500
4948 -+++ linux-2.6.32.48/arch/x86/kernel/head32.c 2011-11-12 12:46:42.000000000 -0500
4949 +diff -urNp linux-2.6.32.46/arch/x86/kernel/head32.c linux-2.6.32.46/arch/x86/kernel/head32.c
4950 +--- linux-2.6.32.46/arch/x86/kernel/head32.c 2011-03-27 14:31:47.000000000 -0400
4951 ++++ linux-2.6.32.46/arch/x86/kernel/head32.c 2011-04-17 15:56:46.000000000 -0400
4952 @@ -16,6 +16,7 @@
4953 #include <asm/apic.h>
4954 #include <asm/io_apic.h>
4955 @@ -14919,9 +14919,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head32.c linux-2.6.32.48/arch/x86/ker
4956
4957 #ifdef CONFIG_BLK_DEV_INITRD
4958 /* Reserve INITRD */
4959 -diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/kernel/head_32.S
4960 ---- linux-2.6.32.48/arch/x86/kernel/head_32.S 2011-11-12 12:44:28.000000000 -0500
4961 -+++ linux-2.6.32.48/arch/x86/kernel/head_32.S 2011-11-12 12:46:42.000000000 -0500
4962 +diff -urNp linux-2.6.32.46/arch/x86/kernel/head_32.S linux-2.6.32.46/arch/x86/kernel/head_32.S
4963 +--- linux-2.6.32.46/arch/x86/kernel/head_32.S 2011-03-27 14:31:47.000000000 -0400
4964 ++++ linux-2.6.32.46/arch/x86/kernel/head_32.S 2011-07-06 19:53:33.000000000 -0400
4965 @@ -19,10 +19,17 @@
4966 #include <asm/setup.h>
4967 #include <asm/processor-flags.h>
4968 @@ -15443,9 +15443,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
4969 + /* Be sure this is zeroed to avoid false validations in Xen */
4970 + .fill PAGE_SIZE_asm - GDT_SIZE,1,0
4971 + .endr
4972 -diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/kernel/head_64.S
4973 ---- linux-2.6.32.48/arch/x86/kernel/head_64.S 2009-12-02 22:51:21.000000000 -0500
4974 -+++ linux-2.6.32.48/arch/x86/kernel/head_64.S 2011-11-12 12:46:42.000000000 -0500
4975 +diff -urNp linux-2.6.32.46/arch/x86/kernel/head_64.S linux-2.6.32.46/arch/x86/kernel/head_64.S
4976 +--- linux-2.6.32.46/arch/x86/kernel/head_64.S 2011-03-27 14:31:47.000000000 -0400
4977 ++++ linux-2.6.32.46/arch/x86/kernel/head_64.S 2011-04-17 15:56:46.000000000 -0400
4978 @@ -19,6 +19,7 @@
4979 #include <asm/cache.h>
4980 #include <asm/processor-flags.h>
4981 @@ -15716,9 +15716,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
4982
4983 __PAGE_ALIGNED_BSS
4984 .align PAGE_SIZE
4985 -diff -urNp linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c
4986 ---- linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c 2009-12-02 22:51:21.000000000 -0500
4987 -+++ linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c 2011-11-12 12:46:42.000000000 -0500
4988 +diff -urNp linux-2.6.32.46/arch/x86/kernel/i386_ksyms_32.c linux-2.6.32.46/arch/x86/kernel/i386_ksyms_32.c
4989 +--- linux-2.6.32.46/arch/x86/kernel/i386_ksyms_32.c 2011-03-27 14:31:47.000000000 -0400
4990 ++++ linux-2.6.32.46/arch/x86/kernel/i386_ksyms_32.c 2011-04-17 15:56:46.000000000 -0400
4991 @@ -20,8 +20,12 @@ extern void cmpxchg8b_emu(void);
4992 EXPORT_SYMBOL(cmpxchg8b_emu);
4993 #endif
4994 @@ -15740,9 +15740,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c linux-2.6.32.48/arch/
4995 +#ifdef CONFIG_PAX_KERNEXEC
4996 +EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR);
4997 +#endif
4998 -diff -urNp linux-2.6.32.48/arch/x86/kernel/i8259.c linux-2.6.32.48/arch/x86/kernel/i8259.c
4999 ---- linux-2.6.32.48/arch/x86/kernel/i8259.c 2009-12-02 22:51:21.000000000 -0500
5000 -+++ linux-2.6.32.48/arch/x86/kernel/i8259.c 2011-11-12 12:46:42.000000000 -0500
5001 +diff -urNp linux-2.6.32.46/arch/x86/kernel/i8259.c linux-2.6.32.46/arch/x86/kernel/i8259.c
5002 +--- linux-2.6.32.46/arch/x86/kernel/i8259.c 2011-03-27 14:31:47.000000000 -0400
5003 ++++ linux-2.6.32.46/arch/x86/kernel/i8259.c 2011-05-04 17:56:28.000000000 -0400
5004 @@ -208,7 +208,7 @@ spurious_8259A_irq:
5005 "spurious 8259A interrupt: IRQ%d.\n", irq);
5006 spurious_irq_mask |= irqmask;
5007 @@ -15752,9 +15752,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/i8259.c linux-2.6.32.48/arch/x86/kern
5008 /*
5009 * Theoretically we do not have to handle this IRQ,
5010 * but in Linux this does not cause problems and is
5011 -diff -urNp linux-2.6.32.48/arch/x86/kernel/init_task.c linux-2.6.32.48/arch/x86/kernel/init_task.c
5012 ---- linux-2.6.32.48/arch/x86/kernel/init_task.c 2009-12-02 22:51:21.000000000 -0500
5013 -+++ linux-2.6.32.48/arch/x86/kernel/init_task.c 2011-11-12 12:46:42.000000000 -0500
5014 +diff -urNp linux-2.6.32.46/arch/x86/kernel/init_task.c linux-2.6.32.46/arch/x86/kernel/init_task.c
5015 +--- linux-2.6.32.46/arch/x86/kernel/init_task.c 2011-03-27 14:31:47.000000000 -0400
5016 ++++ linux-2.6.32.46/arch/x86/kernel/init_task.c 2011-04-17 15:56:46.000000000 -0400
5017 @@ -20,8 +20,7 @@ static struct sighand_struct init_sighan
5018 * way process stacks are handled. This is done by having a special
5019 * "init_task" linker map entry..
5020 @@ -15773,9 +15773,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/init_task.c linux-2.6.32.48/arch/x86/
5021 -
5022 +struct tss_struct init_tss[NR_CPUS] ____cacheline_internodealigned_in_smp = { [0 ... NR_CPUS-1] = INIT_TSS };
5023 +EXPORT_SYMBOL(init_tss);
5024 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ioport.c linux-2.6.32.48/arch/x86/kernel/ioport.c
5025 ---- linux-2.6.32.48/arch/x86/kernel/ioport.c 2009-12-02 22:51:21.000000000 -0500
5026 -+++ linux-2.6.32.48/arch/x86/kernel/ioport.c 2011-11-12 12:46:42.000000000 -0500
5027 +diff -urNp linux-2.6.32.46/arch/x86/kernel/ioport.c linux-2.6.32.46/arch/x86/kernel/ioport.c
5028 +--- linux-2.6.32.46/arch/x86/kernel/ioport.c 2011-03-27 14:31:47.000000000 -0400
5029 ++++ linux-2.6.32.46/arch/x86/kernel/ioport.c 2011-04-17 15:56:46.000000000 -0400
5030 @@ -6,6 +6,7 @@
5031 #include <linux/sched.h>
5032 #include <linux/kernel.h>
5033 @@ -15819,9 +15819,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ioport.c linux-2.6.32.48/arch/x86/ker
5034 if (!capable(CAP_SYS_RAWIO))
5035 return -EPERM;
5036 }
5037 -diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/kernel/irq_32.c
5038 ---- linux-2.6.32.48/arch/x86/kernel/irq_32.c 2009-12-02 22:51:21.000000000 -0500
5039 -+++ linux-2.6.32.48/arch/x86/kernel/irq_32.c 2011-11-12 12:46:42.000000000 -0500
5040 +diff -urNp linux-2.6.32.46/arch/x86/kernel/irq_32.c linux-2.6.32.46/arch/x86/kernel/irq_32.c
5041 +--- linux-2.6.32.46/arch/x86/kernel/irq_32.c 2011-03-27 14:31:47.000000000 -0400
5042 ++++ linux-2.6.32.46/arch/x86/kernel/irq_32.c 2011-07-06 19:53:33.000000000 -0400
5043 @@ -35,7 +35,7 @@ static int check_stack_overflow(void)
5044 __asm__ __volatile__("andl %%esp,%0" :
5045 "=r" (sp) : "0" (THREAD_SIZE - 1));
5046 @@ -15962,9 +15962,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
5047 /*
5048 * Shouldnt happen, we returned above if in_interrupt():
5049 */
5050 -diff -urNp linux-2.6.32.48/arch/x86/kernel/irq.c linux-2.6.32.48/arch/x86/kernel/irq.c
5051 ---- linux-2.6.32.48/arch/x86/kernel/irq.c 2009-12-02 22:51:21.000000000 -0500
5052 -+++ linux-2.6.32.48/arch/x86/kernel/irq.c 2011-11-12 12:46:42.000000000 -0500
5053 +diff -urNp linux-2.6.32.46/arch/x86/kernel/irq.c linux-2.6.32.46/arch/x86/kernel/irq.c
5054 +--- linux-2.6.32.46/arch/x86/kernel/irq.c 2011-03-27 14:31:47.000000000 -0400
5055 ++++ linux-2.6.32.46/arch/x86/kernel/irq.c 2011-05-04 17:56:28.000000000 -0400
5056 @@ -15,7 +15,7 @@
5057 #include <asm/mce.h>
5058 #include <asm/hw_irq.h>
5059 @@ -15999,9 +15999,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq.c linux-2.6.32.48/arch/x86/kernel
5060 #endif
5061 return sum;
5062 }
5063 -diff -urNp linux-2.6.32.48/arch/x86/kernel/kgdb.c linux-2.6.32.48/arch/x86/kernel/kgdb.c
5064 ---- linux-2.6.32.48/arch/x86/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
5065 -+++ linux-2.6.32.48/arch/x86/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
5066 +diff -urNp linux-2.6.32.46/arch/x86/kernel/kgdb.c linux-2.6.32.46/arch/x86/kernel/kgdb.c
5067 +--- linux-2.6.32.46/arch/x86/kernel/kgdb.c 2011-03-27 14:31:47.000000000 -0400
5068 ++++ linux-2.6.32.46/arch/x86/kernel/kgdb.c 2011-05-04 17:56:20.000000000 -0400
5069 @@ -390,13 +390,13 @@ int kgdb_arch_handle_exception(int e_vec
5070
5071 /* clear the trace bit */
5072 @@ -16036,10 +16036,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kgdb.c linux-2.6.32.48/arch/x86/kerne
5073 /* Breakpoint instruction: */
5074 .gdb_bpt_instr = { 0xcc },
5075 .flags = KGDB_HW_BREAKPOINT,
5076 -diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/kernel/kprobes.c
5077 ---- linux-2.6.32.48/arch/x86/kernel/kprobes.c 2011-11-12 12:44:28.000000000 -0500
5078 -+++ linux-2.6.32.48/arch/x86/kernel/kprobes.c 2011-11-12 12:46:42.000000000 -0500
5079 -@@ -168,9 +168,13 @@ static void __kprobes set_jmp_op(void *f
5080 +diff -urNp linux-2.6.32.46/arch/x86/kernel/kprobes.c linux-2.6.32.46/arch/x86/kernel/kprobes.c
5081 +--- linux-2.6.32.46/arch/x86/kernel/kprobes.c 2011-03-27 14:31:47.000000000 -0400
5082 ++++ linux-2.6.32.46/arch/x86/kernel/kprobes.c 2011-04-17 15:56:46.000000000 -0400
5083 +@@ -166,9 +166,13 @@ static void __kprobes set_jmp_op(void *f
5084 char op;
5085 s32 raddr;
5086 } __attribute__((packed)) * jop;
5087 @@ -16054,7 +16054,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5088 }
5089
5090 /*
5091 -@@ -195,7 +199,7 @@ static int __kprobes can_boost(kprobe_op
5092 +@@ -193,7 +197,7 @@ static int __kprobes can_boost(kprobe_op
5093 kprobe_opcode_t opcode;
5094 kprobe_opcode_t *orig_opcodes = opcodes;
5095
5096 @@ -16063,7 +16063,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5097 return 0; /* Page fault may occur on this address. */
5098
5099 retry:
5100 -@@ -339,7 +343,9 @@ static void __kprobes fix_riprel(struct
5101 +@@ -337,7 +341,9 @@ static void __kprobes fix_riprel(struct
5102 disp = (u8 *) p->addr + *((s32 *) insn) -
5103 (u8 *) p->ainsn.insn;
5104 BUG_ON((s64) (s32) disp != disp); /* Sanity check. */
5105 @@ -16073,7 +16073,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5106 }
5107 }
5108 #endif
5109 -@@ -347,16 +353,18 @@ static void __kprobes fix_riprel(struct
5110 +@@ -345,16 +351,18 @@ static void __kprobes fix_riprel(struct
5111
5112 static void __kprobes arch_copy_kprobe(struct kprobe *p)
5113 {
5114 @@ -16095,7 +16095,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5115 }
5116
5117 int __kprobes arch_prepare_kprobe(struct kprobe *p)
5118 -@@ -434,7 +442,7 @@ static void __kprobes prepare_singlestep
5119 +@@ -432,7 +440,7 @@ static void __kprobes prepare_singlestep
5120 if (p->opcode == BREAKPOINT_INSTRUCTION)
5121 regs->ip = (unsigned long)p->addr;
5122 else
5123 @@ -16104,7 +16104,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5124 }
5125
5126 void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
5127 -@@ -455,7 +463,7 @@ static void __kprobes setup_singlestep(s
5128 +@@ -453,7 +461,7 @@ static void __kprobes setup_singlestep(s
5129 if (p->ainsn.boostable == 1 && !p->post_handler) {
5130 /* Boost up -- we can execute copied instructions directly */
5131 reset_current_kprobe();
5132 @@ -16113,7 +16113,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5133 preempt_enable_no_resched();
5134 return;
5135 }
5136 -@@ -525,7 +533,7 @@ static int __kprobes kprobe_handler(stru
5137 +@@ -523,7 +531,7 @@ static int __kprobes kprobe_handler(stru
5138 struct kprobe_ctlblk *kcb;
5139
5140 addr = (kprobe_opcode_t *)(regs->ip - sizeof(kprobe_opcode_t));
5141 @@ -16122,7 +16122,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5142 /*
5143 * The breakpoint instruction was removed right
5144 * after we hit it. Another cpu has removed
5145 -@@ -777,7 +785,7 @@ static void __kprobes resume_execution(s
5146 +@@ -775,7 +783,7 @@ static void __kprobes resume_execution(s
5147 struct pt_regs *regs, struct kprobe_ctlblk *kcb)
5148 {
5149 unsigned long *tos = stack_addr(regs);
5150 @@ -16131,7 +16131,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5151 unsigned long orig_ip = (unsigned long)p->addr;
5152 kprobe_opcode_t *insn = p->ainsn.insn;
5153
5154 -@@ -960,7 +968,7 @@ int __kprobes kprobe_exceptions_notify(s
5155 +@@ -958,7 +966,7 @@ int __kprobes kprobe_exceptions_notify(s
5156 struct die_args *args = data;
5157 int ret = NOTIFY_DONE;
5158
5159 @@ -16140,9 +16140,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
5160 return ret;
5161
5162 switch (val) {
5163 -diff -urNp linux-2.6.32.48/arch/x86/kernel/kvm.c linux-2.6.32.48/arch/x86/kernel/kvm.c
5164 ---- linux-2.6.32.48/arch/x86/kernel/kvm.c 2009-12-02 22:51:21.000000000 -0500
5165 -+++ linux-2.6.32.48/arch/x86/kernel/kvm.c 2011-11-12 12:46:42.000000000 -0500
5166 +diff -urNp linux-2.6.32.46/arch/x86/kernel/kvm.c linux-2.6.32.46/arch/x86/kernel/kvm.c
5167 +--- linux-2.6.32.46/arch/x86/kernel/kvm.c 2011-03-27 14:31:47.000000000 -0400
5168 ++++ linux-2.6.32.46/arch/x86/kernel/kvm.c 2011-08-24 18:35:52.000000000 -0400
5169 @@ -216,6 +216,7 @@ static void __init paravirt_ops_setup(vo
5170 pv_mmu_ops.set_pud = kvm_set_pud;
5171 #if PAGETABLE_LEVELS == 4
5172 @@ -16151,9 +16151,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kvm.c linux-2.6.32.48/arch/x86/kernel
5173 #endif
5174 #endif
5175 pv_mmu_ops.flush_tlb_user = kvm_flush_tlb;
5176 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ldt.c linux-2.6.32.48/arch/x86/kernel/ldt.c
5177 ---- linux-2.6.32.48/arch/x86/kernel/ldt.c 2009-12-02 22:51:21.000000000 -0500
5178 -+++ linux-2.6.32.48/arch/x86/kernel/ldt.c 2011-11-12 12:46:42.000000000 -0500
5179 +diff -urNp linux-2.6.32.46/arch/x86/kernel/ldt.c linux-2.6.32.46/arch/x86/kernel/ldt.c
5180 +--- linux-2.6.32.46/arch/x86/kernel/ldt.c 2011-03-27 14:31:47.000000000 -0400
5181 ++++ linux-2.6.32.46/arch/x86/kernel/ldt.c 2011-04-17 15:56:46.000000000 -0400
5182 @@ -66,13 +66,13 @@ static int alloc_ldt(mm_context_t *pc, i
5183 if (reload) {
5184 #ifdef CONFIG_SMP
5185 @@ -16218,9 +16218,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ldt.c linux-2.6.32.48/arch/x86/kernel
5186 fill_ldt(&ldt, &ldt_info);
5187 if (oldmode)
5188 ldt.avl = 0;
5189 -diff -urNp linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c
5190 ---- linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c 2009-12-02 22:51:21.000000000 -0500
5191 -+++ linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c 2011-11-12 12:46:42.000000000 -0500
5192 +diff -urNp linux-2.6.32.46/arch/x86/kernel/machine_kexec_32.c linux-2.6.32.46/arch/x86/kernel/machine_kexec_32.c
5193 +--- linux-2.6.32.46/arch/x86/kernel/machine_kexec_32.c 2011-03-27 14:31:47.000000000 -0400
5194 ++++ linux-2.6.32.46/arch/x86/kernel/machine_kexec_32.c 2011-04-17 15:56:46.000000000 -0400
5195 @@ -26,7 +26,7 @@
5196 #include <asm/system.h>
5197 #include <asm/cacheflush.h>
5198 @@ -16248,9 +16248,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c linux-2.6.32.48/ar
5199
5200 relocate_kernel_ptr = control_page;
5201 page_list[PA_CONTROL_PAGE] = __pa(control_page);
5202 -diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_amd.c linux-2.6.32.48/arch/x86/kernel/microcode_amd.c
5203 ---- linux-2.6.32.48/arch/x86/kernel/microcode_amd.c 2011-11-12 12:44:28.000000000 -0500
5204 -+++ linux-2.6.32.48/arch/x86/kernel/microcode_amd.c 2011-11-12 12:46:42.000000000 -0500
5205 +diff -urNp linux-2.6.32.46/arch/x86/kernel/microcode_amd.c linux-2.6.32.46/arch/x86/kernel/microcode_amd.c
5206 +--- linux-2.6.32.46/arch/x86/kernel/microcode_amd.c 2011-04-17 17:00:52.000000000 -0400
5207 ++++ linux-2.6.32.46/arch/x86/kernel/microcode_amd.c 2011-04-17 17:03:05.000000000 -0400
5208 @@ -364,7 +364,7 @@ static void microcode_fini_cpu_amd(int c
5209 uci->mc = NULL;
5210 }
5211 @@ -16269,9 +16269,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_amd.c linux-2.6.32.48/arch/
5212 {
5213 return &microcode_amd_ops;
5214 }
5215 -diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_core.c linux-2.6.32.48/arch/x86/kernel/microcode_core.c
5216 ---- linux-2.6.32.48/arch/x86/kernel/microcode_core.c 2009-12-02 22:51:21.000000000 -0500
5217 -+++ linux-2.6.32.48/arch/x86/kernel/microcode_core.c 2011-11-12 12:46:42.000000000 -0500
5218 +diff -urNp linux-2.6.32.46/arch/x86/kernel/microcode_core.c linux-2.6.32.46/arch/x86/kernel/microcode_core.c
5219 +--- linux-2.6.32.46/arch/x86/kernel/microcode_core.c 2011-03-27 14:31:47.000000000 -0400
5220 ++++ linux-2.6.32.46/arch/x86/kernel/microcode_core.c 2011-04-17 15:56:46.000000000 -0400
5221 @@ -90,7 +90,7 @@ MODULE_LICENSE("GPL");
5222
5223 #define MICROCODE_VERSION "2.00"
5224 @@ -16281,9 +16281,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_core.c linux-2.6.32.48/arch
5225
5226 /*
5227 * Synchronization.
5228 -diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_intel.c linux-2.6.32.48/arch/x86/kernel/microcode_intel.c
5229 ---- linux-2.6.32.48/arch/x86/kernel/microcode_intel.c 2009-12-02 22:51:21.000000000 -0500
5230 -+++ linux-2.6.32.48/arch/x86/kernel/microcode_intel.c 2011-11-12 12:46:42.000000000 -0500
5231 +diff -urNp linux-2.6.32.46/arch/x86/kernel/microcode_intel.c linux-2.6.32.46/arch/x86/kernel/microcode_intel.c
5232 +--- linux-2.6.32.46/arch/x86/kernel/microcode_intel.c 2011-03-27 14:31:47.000000000 -0400
5233 ++++ linux-2.6.32.46/arch/x86/kernel/microcode_intel.c 2011-10-06 09:37:08.000000000 -0400
5234 @@ -443,13 +443,13 @@ static enum ucode_state request_microcod
5235
5236 static int get_ucode_user(void *to, const void *from, size_t n)
5237 @@ -16318,9 +16318,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_intel.c linux-2.6.32.48/arc
5238 {
5239 return &microcode_intel_ops;
5240 }
5241 -diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/kernel/module.c
5242 ---- linux-2.6.32.48/arch/x86/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
5243 -+++ linux-2.6.32.48/arch/x86/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
5244 +diff -urNp linux-2.6.32.46/arch/x86/kernel/module.c linux-2.6.32.46/arch/x86/kernel/module.c
5245 +--- linux-2.6.32.46/arch/x86/kernel/module.c 2011-03-27 14:31:47.000000000 -0400
5246 ++++ linux-2.6.32.46/arch/x86/kernel/module.c 2011-04-17 15:56:46.000000000 -0400
5247 @@ -34,7 +34,7 @@
5248 #define DEBUGP(fmt...)
5249 #endif
5250 @@ -16461,9 +16461,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/ker
5251 #if 0
5252 if ((s64)val != *(s32 *)loc)
5253 goto overflow;
5254 -diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/kernel/paravirt.c
5255 ---- linux-2.6.32.48/arch/x86/kernel/paravirt.c 2009-12-02 22:51:21.000000000 -0500
5256 -+++ linux-2.6.32.48/arch/x86/kernel/paravirt.c 2011-11-12 12:46:42.000000000 -0500
5257 +diff -urNp linux-2.6.32.46/arch/x86/kernel/paravirt.c linux-2.6.32.46/arch/x86/kernel/paravirt.c
5258 +--- linux-2.6.32.46/arch/x86/kernel/paravirt.c 2011-03-27 14:31:47.000000000 -0400
5259 ++++ linux-2.6.32.46/arch/x86/kernel/paravirt.c 2011-08-23 20:24:19.000000000 -0400
5260 @@ -53,6 +53,9 @@ u64 _paravirt_ident_64(u64 x)
5261 {
5262 return x;
5263 @@ -16611,9 +16611,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
5264 };
5265
5266 EXPORT_SYMBOL_GPL(pv_time_ops);
5267 -diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c
5268 ---- linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c 2009-12-02 22:51:21.000000000 -0500
5269 -+++ linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c 2011-11-12 12:46:42.000000000 -0500
5270 +diff -urNp linux-2.6.32.46/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.32.46/arch/x86/kernel/paravirt-spinlocks.c
5271 +--- linux-2.6.32.46/arch/x86/kernel/paravirt-spinlocks.c 2011-03-27 14:31:47.000000000 -0400
5272 ++++ linux-2.6.32.46/arch/x86/kernel/paravirt-spinlocks.c 2011-04-17 15:56:46.000000000 -0400
5273 @@ -13,7 +13,7 @@ default_spin_lock_flags(raw_spinlock_t *
5274 __raw_spin_lock(lock);
5275 }
5276 @@ -16623,9 +16623,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.32.48/
5277 #ifdef CONFIG_SMP
5278 .spin_is_locked = __ticket_spin_is_locked,
5279 .spin_is_contended = __ticket_spin_is_contended,
5280 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c
5281 ---- linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c 2011-11-12 12:44:28.000000000 -0500
5282 -+++ linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c 2011-11-12 12:46:42.000000000 -0500
5283 +diff -urNp linux-2.6.32.46/arch/x86/kernel/pci-calgary_64.c linux-2.6.32.46/arch/x86/kernel/pci-calgary_64.c
5284 +--- linux-2.6.32.46/arch/x86/kernel/pci-calgary_64.c 2011-03-27 14:31:47.000000000 -0400
5285 ++++ linux-2.6.32.46/arch/x86/kernel/pci-calgary_64.c 2011-04-17 15:56:46.000000000 -0400
5286 @@ -477,7 +477,7 @@ static void calgary_free_coherent(struct
5287 free_pages((unsigned long)vaddr, get_order(size));
5288 }
5289 @@ -16635,9 +16635,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c linux-2.6.32.48/arch
5290 .alloc_coherent = calgary_alloc_coherent,
5291 .free_coherent = calgary_free_coherent,
5292 .map_sg = calgary_map_sg,
5293 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-dma.c linux-2.6.32.48/arch/x86/kernel/pci-dma.c
5294 ---- linux-2.6.32.48/arch/x86/kernel/pci-dma.c 2011-11-12 12:44:28.000000000 -0500
5295 -+++ linux-2.6.32.48/arch/x86/kernel/pci-dma.c 2011-11-12 12:46:42.000000000 -0500
5296 +diff -urNp linux-2.6.32.46/arch/x86/kernel/pci-dma.c linux-2.6.32.46/arch/x86/kernel/pci-dma.c
5297 +--- linux-2.6.32.46/arch/x86/kernel/pci-dma.c 2011-03-27 14:31:47.000000000 -0400
5298 ++++ linux-2.6.32.46/arch/x86/kernel/pci-dma.c 2011-04-17 15:56:46.000000000 -0400
5299 @@ -14,7 +14,7 @@
5300
5301 static int forbid_dac __read_mostly;
5302 @@ -16656,9 +16656,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-dma.c linux-2.6.32.48/arch/x86/ke
5303
5304 #ifdef CONFIG_PCI
5305 if (mask > 0xffffffff && forbid_dac > 0) {
5306 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c
5307 ---- linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c 2011-11-12 12:44:28.000000000 -0500
5308 -+++ linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c 2011-11-12 12:46:42.000000000 -0500
5309 +diff -urNp linux-2.6.32.46/arch/x86/kernel/pci-gart_64.c linux-2.6.32.46/arch/x86/kernel/pci-gart_64.c
5310 +--- linux-2.6.32.46/arch/x86/kernel/pci-gart_64.c 2011-03-27 14:31:47.000000000 -0400
5311 ++++ linux-2.6.32.46/arch/x86/kernel/pci-gart_64.c 2011-04-17 15:56:46.000000000 -0400
5312 @@ -682,7 +682,7 @@ static __init int init_k8_gatt(struct ag
5313 return -1;
5314 }
5315 @@ -16668,9 +16668,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c linux-2.6.32.48/arch/x8
5316 .map_sg = gart_map_sg,
5317 .unmap_sg = gart_unmap_sg,
5318 .map_page = gart_map_page,
5319 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-nommu.c linux-2.6.32.48/arch/x86/kernel/pci-nommu.c
5320 ---- linux-2.6.32.48/arch/x86/kernel/pci-nommu.c 2009-12-02 22:51:21.000000000 -0500
5321 -+++ linux-2.6.32.48/arch/x86/kernel/pci-nommu.c 2011-11-12 12:46:42.000000000 -0500
5322 +diff -urNp linux-2.6.32.46/arch/x86/kernel/pci-nommu.c linux-2.6.32.46/arch/x86/kernel/pci-nommu.c
5323 +--- linux-2.6.32.46/arch/x86/kernel/pci-nommu.c 2011-03-27 14:31:47.000000000 -0400
5324 ++++ linux-2.6.32.46/arch/x86/kernel/pci-nommu.c 2011-04-17 15:56:46.000000000 -0400
5325 @@ -94,7 +94,7 @@ static void nommu_sync_sg_for_device(str
5326 flush_write_buffers();
5327 }
5328 @@ -16680,9 +16680,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-nommu.c linux-2.6.32.48/arch/x86/
5329 .alloc_coherent = dma_generic_alloc_coherent,
5330 .free_coherent = nommu_free_coherent,
5331 .map_sg = nommu_map_sg,
5332 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c
5333 ---- linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c 2009-12-02 22:51:21.000000000 -0500
5334 -+++ linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c 2011-11-12 12:46:42.000000000 -0500
5335 +diff -urNp linux-2.6.32.46/arch/x86/kernel/pci-swiotlb.c linux-2.6.32.46/arch/x86/kernel/pci-swiotlb.c
5336 +--- linux-2.6.32.46/arch/x86/kernel/pci-swiotlb.c 2011-03-27 14:31:47.000000000 -0400
5337 ++++ linux-2.6.32.46/arch/x86/kernel/pci-swiotlb.c 2011-04-17 15:56:46.000000000 -0400
5338 @@ -25,7 +25,7 @@ static void *x86_swiotlb_alloc_coherent(
5339 return swiotlb_alloc_coherent(hwdev, size, dma_handle, flags);
5340 }
5341 @@ -16692,9 +16692,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c linux-2.6.32.48/arch/x8
5342 .mapping_error = swiotlb_dma_mapping_error,
5343 .alloc_coherent = x86_swiotlb_alloc_coherent,
5344 .free_coherent = swiotlb_free_coherent,
5345 -diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86/kernel/process_32.c
5346 ---- linux-2.6.32.48/arch/x86/kernel/process_32.c 2011-11-12 12:44:28.000000000 -0500
5347 -+++ linux-2.6.32.48/arch/x86/kernel/process_32.c 2011-11-12 12:46:42.000000000 -0500
5348 +diff -urNp linux-2.6.32.46/arch/x86/kernel/process_32.c linux-2.6.32.46/arch/x86/kernel/process_32.c
5349 +--- linux-2.6.32.46/arch/x86/kernel/process_32.c 2011-06-25 12:55:34.000000000 -0400
5350 ++++ linux-2.6.32.46/arch/x86/kernel/process_32.c 2011-06-25 12:56:37.000000000 -0400
5351 @@ -67,6 +67,7 @@ asmlinkage void ret_from_fork(void) __as
5352 unsigned long thread_saved_pc(struct task_struct *tsk)
5353 {
5354 @@ -16795,9 +16795,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
5355 return 0;
5356 }
5357 -
5358 -diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86/kernel/process_64.c
5359 ---- linux-2.6.32.48/arch/x86/kernel/process_64.c 2011-11-12 12:44:28.000000000 -0500
5360 -+++ linux-2.6.32.48/arch/x86/kernel/process_64.c 2011-11-12 12:46:42.000000000 -0500
5361 +diff -urNp linux-2.6.32.46/arch/x86/kernel/process_64.c linux-2.6.32.46/arch/x86/kernel/process_64.c
5362 +--- linux-2.6.32.46/arch/x86/kernel/process_64.c 2011-06-25 12:55:34.000000000 -0400
5363 ++++ linux-2.6.32.46/arch/x86/kernel/process_64.c 2011-06-25 12:56:37.000000000 -0400
5364 @@ -91,7 +91,7 @@ static void __exit_idle(void)
5365 void exit_idle(void)
5366 {
5367 @@ -16871,9 +16871,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86
5368 return 0;
5369 ip = *(u64 *)(fp+8);
5370 if (!in_sched_functions(ip))
5371 -diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/kernel/process.c
5372 ---- linux-2.6.32.48/arch/x86/kernel/process.c 2011-11-12 12:44:28.000000000 -0500
5373 -+++ linux-2.6.32.48/arch/x86/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
5374 +diff -urNp linux-2.6.32.46/arch/x86/kernel/process.c linux-2.6.32.46/arch/x86/kernel/process.c
5375 +--- linux-2.6.32.46/arch/x86/kernel/process.c 2011-04-22 19:16:29.000000000 -0400
5376 ++++ linux-2.6.32.46/arch/x86/kernel/process.c 2011-08-30 18:19:52.000000000 -0400
5377 @@ -51,16 +51,33 @@ void free_thread_xstate(struct task_stru
5378
5379 void free_thread_info(struct thread_info *ti)
5380 @@ -16988,9 +16988,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/ke
5381 }
5382 +#endif
5383
5384 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ptrace.c linux-2.6.32.48/arch/x86/kernel/ptrace.c
5385 ---- linux-2.6.32.48/arch/x86/kernel/ptrace.c 2011-11-12 12:44:28.000000000 -0500
5386 -+++ linux-2.6.32.48/arch/x86/kernel/ptrace.c 2011-11-12 12:46:42.000000000 -0500
5387 +diff -urNp linux-2.6.32.46/arch/x86/kernel/ptrace.c linux-2.6.32.46/arch/x86/kernel/ptrace.c
5388 +--- linux-2.6.32.46/arch/x86/kernel/ptrace.c 2011-03-27 14:31:47.000000000 -0400
5389 ++++ linux-2.6.32.46/arch/x86/kernel/ptrace.c 2011-04-17 15:56:46.000000000 -0400
5390 @@ -925,7 +925,7 @@ static const struct user_regset_view use
5391 long arch_ptrace(struct task_struct *child, long request, long addr, long data)
5392 {
5393 @@ -17077,9 +17077,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ptrace.c linux-2.6.32.48/arch/x86/ker
5394 {
5395 if (unlikely(current->audit_context))
5396 audit_syscall_exit(AUDITSC_RESULT(regs->ax), regs->ax);
5397 -diff -urNp linux-2.6.32.48/arch/x86/kernel/reboot.c linux-2.6.32.48/arch/x86/kernel/reboot.c
5398 ---- linux-2.6.32.48/arch/x86/kernel/reboot.c 2011-11-12 12:44:28.000000000 -0500
5399 -+++ linux-2.6.32.48/arch/x86/kernel/reboot.c 2011-11-12 12:46:42.000000000 -0500
5400 +diff -urNp linux-2.6.32.46/arch/x86/kernel/reboot.c linux-2.6.32.46/arch/x86/kernel/reboot.c
5401 +--- linux-2.6.32.46/arch/x86/kernel/reboot.c 2011-08-09 18:35:28.000000000 -0400
5402 ++++ linux-2.6.32.46/arch/x86/kernel/reboot.c 2011-08-09 18:33:59.000000000 -0400
5403 @@ -33,7 +33,7 @@ void (*pm_power_off)(void);
5404 EXPORT_SYMBOL(pm_power_off);
5405
5406 @@ -17206,9 +17206,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/reboot.c linux-2.6.32.48/arch/x86/ker
5407 }
5408
5409 struct machine_ops machine_ops = {
5410 -diff -urNp linux-2.6.32.48/arch/x86/kernel/setup.c linux-2.6.32.48/arch/x86/kernel/setup.c
5411 ---- linux-2.6.32.48/arch/x86/kernel/setup.c 2011-11-12 12:44:28.000000000 -0500
5412 -+++ linux-2.6.32.48/arch/x86/kernel/setup.c 2011-11-12 12:46:42.000000000 -0500
5413 +diff -urNp linux-2.6.32.46/arch/x86/kernel/setup.c linux-2.6.32.46/arch/x86/kernel/setup.c
5414 +--- linux-2.6.32.46/arch/x86/kernel/setup.c 2011-04-17 17:00:52.000000000 -0400
5415 ++++ linux-2.6.32.46/arch/x86/kernel/setup.c 2011-04-17 17:03:05.000000000 -0400
5416 @@ -783,14 +783,14 @@ void __init setup_arch(char **cmdline_p)
5417
5418 if (!boot_params.hdr.root_flags)
5419 @@ -17229,9 +17229,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/setup.c linux-2.6.32.48/arch/x86/kern
5420 data_resource.end = virt_to_phys(_edata)-1;
5421 bss_resource.start = virt_to_phys(&__bss_start);
5422 bss_resource.end = virt_to_phys(&__bss_stop)-1;
5423 -diff -urNp linux-2.6.32.48/arch/x86/kernel/setup_percpu.c linux-2.6.32.48/arch/x86/kernel/setup_percpu.c
5424 ---- linux-2.6.32.48/arch/x86/kernel/setup_percpu.c 2009-12-02 22:51:21.000000000 -0500
5425 -+++ linux-2.6.32.48/arch/x86/kernel/setup_percpu.c 2011-11-12 12:46:42.000000000 -0500
5426 +diff -urNp linux-2.6.32.46/arch/x86/kernel/setup_percpu.c linux-2.6.32.46/arch/x86/kernel/setup_percpu.c
5427 +--- linux-2.6.32.46/arch/x86/kernel/setup_percpu.c 2011-03-27 14:31:47.000000000 -0400
5428 ++++ linux-2.6.32.46/arch/x86/kernel/setup_percpu.c 2011-06-04 20:36:29.000000000 -0400
5429 @@ -25,19 +25,17 @@
5430 # define DBG(x...)
5431 #endif
5432 @@ -17295,9 +17295,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/setup_percpu.c linux-2.6.32.48/arch/x
5433 /*
5434 * Up to this point, the boot CPU has been using .data.init
5435 * area. Reload any changed state for the boot CPU.
5436 -diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/kernel/signal.c
5437 ---- linux-2.6.32.48/arch/x86/kernel/signal.c 2009-12-02 22:51:21.000000000 -0500
5438 -+++ linux-2.6.32.48/arch/x86/kernel/signal.c 2011-11-12 12:46:42.000000000 -0500
5439 +diff -urNp linux-2.6.32.46/arch/x86/kernel/signal.c linux-2.6.32.46/arch/x86/kernel/signal.c
5440 +--- linux-2.6.32.46/arch/x86/kernel/signal.c 2011-03-27 14:31:47.000000000 -0400
5441 ++++ linux-2.6.32.46/arch/x86/kernel/signal.c 2011-05-22 23:02:03.000000000 -0400
5442 @@ -197,7 +197,7 @@ static unsigned long align_sigframe(unsi
5443 * Align the stack pointer according to the i386 ABI,
5444 * i.e. so that on function entry ((sp + 4) & 15) == 0.
5445 @@ -17381,9 +17381,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
5446 return;
5447
5448 if (current_thread_info()->status & TS_RESTORE_SIGMASK)
5449 -diff -urNp linux-2.6.32.48/arch/x86/kernel/smpboot.c linux-2.6.32.48/arch/x86/kernel/smpboot.c
5450 ---- linux-2.6.32.48/arch/x86/kernel/smpboot.c 2011-11-12 12:44:28.000000000 -0500
5451 -+++ linux-2.6.32.48/arch/x86/kernel/smpboot.c 2011-11-12 12:46:42.000000000 -0500
5452 +diff -urNp linux-2.6.32.46/arch/x86/kernel/smpboot.c linux-2.6.32.46/arch/x86/kernel/smpboot.c
5453 +--- linux-2.6.32.46/arch/x86/kernel/smpboot.c 2011-03-27 14:31:47.000000000 -0400
5454 ++++ linux-2.6.32.46/arch/x86/kernel/smpboot.c 2011-07-01 19:10:03.000000000 -0400
5455 @@ -94,14 +94,14 @@ static DEFINE_PER_CPU(struct task_struct
5456 */
5457 static DEFINE_MUTEX(x86_cpu_hotplug_driver_mutex);
5458 @@ -17453,9 +17453,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/smpboot.c linux-2.6.32.48/arch/x86/ke
5459 err = do_boot_cpu(apicid, cpu);
5460
5461 if (err) {
5462 -diff -urNp linux-2.6.32.48/arch/x86/kernel/step.c linux-2.6.32.48/arch/x86/kernel/step.c
5463 ---- linux-2.6.32.48/arch/x86/kernel/step.c 2009-12-02 22:51:21.000000000 -0500
5464 -+++ linux-2.6.32.48/arch/x86/kernel/step.c 2011-11-12 12:46:42.000000000 -0500
5465 +diff -urNp linux-2.6.32.46/arch/x86/kernel/step.c linux-2.6.32.46/arch/x86/kernel/step.c
5466 +--- linux-2.6.32.46/arch/x86/kernel/step.c 2011-03-27 14:31:47.000000000 -0400
5467 ++++ linux-2.6.32.46/arch/x86/kernel/step.c 2011-04-17 15:56:46.000000000 -0400
5468 @@ -27,10 +27,10 @@ unsigned long convert_ip_to_linear(struc
5469 struct desc_struct *desc;
5470 unsigned long base;
5471 @@ -17498,17 +17498,17 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/step.c linux-2.6.32.48/arch/x86/kerne
5472 /* 32-bit mode: register increment */
5473 return 0;
5474 /* 64-bit mode: REX prefix */
5475 -diff -urNp linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S
5476 ---- linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S 2011-11-12 12:44:28.000000000 -0500
5477 -+++ linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S 2011-11-12 12:46:42.000000000 -0500
5478 +diff -urNp linux-2.6.32.46/arch/x86/kernel/syscall_table_32.S linux-2.6.32.46/arch/x86/kernel/syscall_table_32.S
5479 +--- linux-2.6.32.46/arch/x86/kernel/syscall_table_32.S 2011-03-27 14:31:47.000000000 -0400
5480 ++++ linux-2.6.32.46/arch/x86/kernel/syscall_table_32.S 2011-04-17 15:56:46.000000000 -0400
5481 @@ -1,3 +1,4 @@
5482 +.section .rodata,"a",@progbits
5483 ENTRY(sys_call_table)
5484 .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
5485 .long sys_exit
5486 -diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c
5487 ---- linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c 2011-11-12 12:44:28.000000000 -0500
5488 -+++ linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c 2011-11-12 12:46:42.000000000 -0500
5489 +diff -urNp linux-2.6.32.46/arch/x86/kernel/sys_i386_32.c linux-2.6.32.46/arch/x86/kernel/sys_i386_32.c
5490 +--- linux-2.6.32.46/arch/x86/kernel/sys_i386_32.c 2011-03-27 14:31:47.000000000 -0400
5491 ++++ linux-2.6.32.46/arch/x86/kernel/sys_i386_32.c 2011-04-17 15:56:46.000000000 -0400
5492 @@ -24,6 +24,21 @@
5493
5494 #include <asm/syscalls.h>
5495 @@ -17780,9 +17780,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c linux-2.6.32.48/arch/x8
5496 - : "0" (__NR_execve), "ri" (filename), "c" (argv), "d" (envp) : "memory");
5497 - return __res;
5498 -}
5499 -diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c
5500 ---- linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c 2011-11-12 12:44:28.000000000 -0500
5501 -+++ linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c 2011-11-12 12:46:42.000000000 -0500
5502 +diff -urNp linux-2.6.32.46/arch/x86/kernel/sys_x86_64.c linux-2.6.32.46/arch/x86/kernel/sys_x86_64.c
5503 +--- linux-2.6.32.46/arch/x86/kernel/sys_x86_64.c 2011-03-27 14:31:47.000000000 -0400
5504 ++++ linux-2.6.32.46/arch/x86/kernel/sys_x86_64.c 2011-04-17 15:56:46.000000000 -0400
5505 @@ -32,8 +32,8 @@ out:
5506 return error;
5507 }
5508 @@ -17920,9 +17920,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c linux-2.6.32.48/arch/x86
5509 mm->cached_hole_size = ~0UL;
5510
5511 return addr;
5512 -diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kernel/tboot.c
5513 ---- linux-2.6.32.48/arch/x86/kernel/tboot.c 2011-11-12 12:44:28.000000000 -0500
5514 -+++ linux-2.6.32.48/arch/x86/kernel/tboot.c 2011-11-12 12:46:42.000000000 -0500
5515 +diff -urNp linux-2.6.32.46/arch/x86/kernel/tboot.c linux-2.6.32.46/arch/x86/kernel/tboot.c
5516 +--- linux-2.6.32.46/arch/x86/kernel/tboot.c 2011-03-27 14:31:47.000000000 -0400
5517 ++++ linux-2.6.32.46/arch/x86/kernel/tboot.c 2011-05-22 23:02:03.000000000 -0400
5518 @@ -216,7 +216,7 @@ static int tboot_setup_sleep(void)
5519
5520 void tboot_shutdown(u32 shutdown_type)
5521 @@ -17971,9 +17971,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kern
5522 register_hotcpu_notifier(&tboot_cpu_notifier);
5523 return 0;
5524 }
5525 -diff -urNp linux-2.6.32.48/arch/x86/kernel/time.c linux-2.6.32.48/arch/x86/kernel/time.c
5526 ---- linux-2.6.32.48/arch/x86/kernel/time.c 2009-12-02 22:51:21.000000000 -0500
5527 -+++ linux-2.6.32.48/arch/x86/kernel/time.c 2011-11-12 12:46:42.000000000 -0500
5528 +diff -urNp linux-2.6.32.46/arch/x86/kernel/time.c linux-2.6.32.46/arch/x86/kernel/time.c
5529 +--- linux-2.6.32.46/arch/x86/kernel/time.c 2011-03-27 14:31:47.000000000 -0400
5530 ++++ linux-2.6.32.46/arch/x86/kernel/time.c 2011-04-17 15:56:46.000000000 -0400
5531 @@ -26,17 +26,13 @@
5532 int timer_ack;
5533 #endif
5534 @@ -18012,9 +18012,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/time.c linux-2.6.32.48/arch/x86/kerne
5535 }
5536 return pc;
5537 }
5538 -diff -urNp linux-2.6.32.48/arch/x86/kernel/tls.c linux-2.6.32.48/arch/x86/kernel/tls.c
5539 ---- linux-2.6.32.48/arch/x86/kernel/tls.c 2009-12-02 22:51:21.000000000 -0500
5540 -+++ linux-2.6.32.48/arch/x86/kernel/tls.c 2011-11-12 12:46:42.000000000 -0500
5541 +diff -urNp linux-2.6.32.46/arch/x86/kernel/tls.c linux-2.6.32.46/arch/x86/kernel/tls.c
5542 +--- linux-2.6.32.46/arch/x86/kernel/tls.c 2011-03-27 14:31:47.000000000 -0400
5543 ++++ linux-2.6.32.46/arch/x86/kernel/tls.c 2011-04-17 15:56:46.000000000 -0400
5544 @@ -85,6 +85,11 @@ int do_set_thread_area(struct task_struc
5545 if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
5546 return -EINVAL;
5547 @@ -18027,9 +18027,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tls.c linux-2.6.32.48/arch/x86/kernel
5548 set_tls_desc(p, idx, &info, 1);
5549
5550 return 0;
5551 -diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_32.S linux-2.6.32.48/arch/x86/kernel/trampoline_32.S
5552 ---- linux-2.6.32.48/arch/x86/kernel/trampoline_32.S 2009-12-02 22:51:21.000000000 -0500
5553 -+++ linux-2.6.32.48/arch/x86/kernel/trampoline_32.S 2011-11-12 12:46:42.000000000 -0500
5554 +diff -urNp linux-2.6.32.46/arch/x86/kernel/trampoline_32.S linux-2.6.32.46/arch/x86/kernel/trampoline_32.S
5555 +--- linux-2.6.32.46/arch/x86/kernel/trampoline_32.S 2011-03-27 14:31:47.000000000 -0400
5556 ++++ linux-2.6.32.46/arch/x86/kernel/trampoline_32.S 2011-04-17 15:56:46.000000000 -0400
5557 @@ -32,6 +32,12 @@
5558 #include <asm/segment.h>
5559 #include <asm/page_types.h>
5560 @@ -18052,9 +18052,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_32.S linux-2.6.32.48/arch/
5561
5562 # These need to be in the same 64K segment as the above;
5563 # hence we don't use the boot_gdt_descr defined in head.S
5564 -diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_64.S linux-2.6.32.48/arch/x86/kernel/trampoline_64.S
5565 ---- linux-2.6.32.48/arch/x86/kernel/trampoline_64.S 2009-12-02 22:51:21.000000000 -0500
5566 -+++ linux-2.6.32.48/arch/x86/kernel/trampoline_64.S 2011-11-12 12:46:42.000000000 -0500
5567 +diff -urNp linux-2.6.32.46/arch/x86/kernel/trampoline_64.S linux-2.6.32.46/arch/x86/kernel/trampoline_64.S
5568 +--- linux-2.6.32.46/arch/x86/kernel/trampoline_64.S 2011-03-27 14:31:47.000000000 -0400
5569 ++++ linux-2.6.32.46/arch/x86/kernel/trampoline_64.S 2011-07-01 18:53:26.000000000 -0400
5570 @@ -91,7 +91,7 @@ startup_32:
5571 movl $__KERNEL_DS, %eax # Initialize the %ds segment register
5572 movl %eax, %ds
5573 @@ -18082,9 +18082,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_64.S linux-2.6.32.48/arch/
5574 .long tgdt - r_base
5575 .short 0
5576 .quad 0x00cf9b000000ffff # __KERNEL32_CS
5577 -diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kernel/traps.c
5578 ---- linux-2.6.32.48/arch/x86/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
5579 -+++ linux-2.6.32.48/arch/x86/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
5580 +diff -urNp linux-2.6.32.46/arch/x86/kernel/traps.c linux-2.6.32.46/arch/x86/kernel/traps.c
5581 +--- linux-2.6.32.46/arch/x86/kernel/traps.c 2011-03-27 14:31:47.000000000 -0400
5582 ++++ linux-2.6.32.46/arch/x86/kernel/traps.c 2011-07-06 19:53:33.000000000 -0400
5583 @@ -69,12 +69,6 @@ asmlinkage int system_call(void);
5584
5585 /* Do we ignore FPU interrupts ? */
5586 @@ -18271,9 +18271,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
5587
5588 if (!tsk_used_math(tsk)) {
5589 local_irq_enable();
5590 -diff -urNp linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S
5591 ---- linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S 2009-12-02 22:51:21.000000000 -0500
5592 -+++ linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S 1969-12-31 19:00:00.000000000 -0500
5593 +diff -urNp linux-2.6.32.46/arch/x86/kernel/verify_cpu_64.S linux-2.6.32.46/arch/x86/kernel/verify_cpu_64.S
5594 +--- linux-2.6.32.46/arch/x86/kernel/verify_cpu_64.S 2011-03-27 14:31:47.000000000 -0400
5595 ++++ linux-2.6.32.46/arch/x86/kernel/verify_cpu_64.S 1969-12-31 19:00:00.000000000 -0500
5596 @@ -1,105 +0,0 @@
5597 -/*
5598 - *
5599 @@ -18380,9 +18380,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S linux-2.6.32.48/arch/
5600 - popfl # Restore caller passed flags
5601 - xorl %eax, %eax
5602 - ret
5603 -diff -urNp linux-2.6.32.48/arch/x86/kernel/verify_cpu.S linux-2.6.32.48/arch/x86/kernel/verify_cpu.S
5604 ---- linux-2.6.32.48/arch/x86/kernel/verify_cpu.S 1969-12-31 19:00:00.000000000 -0500
5605 -+++ linux-2.6.32.48/arch/x86/kernel/verify_cpu.S 2011-11-12 12:46:42.000000000 -0500
5606 +diff -urNp linux-2.6.32.46/arch/x86/kernel/verify_cpu.S linux-2.6.32.46/arch/x86/kernel/verify_cpu.S
5607 +--- linux-2.6.32.46/arch/x86/kernel/verify_cpu.S 1969-12-31 19:00:00.000000000 -0500
5608 ++++ linux-2.6.32.46/arch/x86/kernel/verify_cpu.S 2011-07-01 18:28:42.000000000 -0400
5609 @@ -0,0 +1,140 @@
5610 +/*
5611 + *
5612 @@ -18524,9 +18524,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/verify_cpu.S linux-2.6.32.48/arch/x86
5613 + popfl # Restore caller passed flags
5614 + xorl %eax, %eax
5615 + ret
5616 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vm86_32.c linux-2.6.32.48/arch/x86/kernel/vm86_32.c
5617 ---- linux-2.6.32.48/arch/x86/kernel/vm86_32.c 2009-12-02 22:51:21.000000000 -0500
5618 -+++ linux-2.6.32.48/arch/x86/kernel/vm86_32.c 2011-11-12 12:46:42.000000000 -0500
5619 +diff -urNp linux-2.6.32.46/arch/x86/kernel/vm86_32.c linux-2.6.32.46/arch/x86/kernel/vm86_32.c
5620 +--- linux-2.6.32.46/arch/x86/kernel/vm86_32.c 2011-03-27 14:31:47.000000000 -0400
5621 ++++ linux-2.6.32.46/arch/x86/kernel/vm86_32.c 2011-04-17 15:56:46.000000000 -0400
5622 @@ -41,6 +41,7 @@
5623 #include <linux/ptrace.h>
5624 #include <linux/audit.h>
5625 @@ -18591,9 +18591,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vm86_32.c linux-2.6.32.48/arch/x86/ke
5626 if (get_user(segoffs, intr_ptr))
5627 goto cannot_handle;
5628 if ((segoffs >> 16) == BIOSSEG)
5629 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vmi_32.c linux-2.6.32.48/arch/x86/kernel/vmi_32.c
5630 ---- linux-2.6.32.48/arch/x86/kernel/vmi_32.c 2009-12-02 22:51:21.000000000 -0500
5631 -+++ linux-2.6.32.48/arch/x86/kernel/vmi_32.c 2011-11-12 12:46:42.000000000 -0500
5632 +diff -urNp linux-2.6.32.46/arch/x86/kernel/vmi_32.c linux-2.6.32.46/arch/x86/kernel/vmi_32.c
5633 +--- linux-2.6.32.46/arch/x86/kernel/vmi_32.c 2011-03-27 14:31:47.000000000 -0400
5634 ++++ linux-2.6.32.46/arch/x86/kernel/vmi_32.c 2011-08-05 20:33:55.000000000 -0400
5635 @@ -44,12 +44,17 @@ typedef u32 __attribute__((regparm(1)))
5636 typedef u64 __attribute__((regparm(2))) (VROMLONGFUNC)(int);
5637
5638 @@ -18756,9 +18756,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmi_32.c linux-2.6.32.48/arch/x86/ker
5639 return;
5640
5641 local_irq_save(flags);
5642 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S
5643 ---- linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S 2009-12-02 22:51:21.000000000 -0500
5644 -+++ linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S 2011-11-12 12:46:42.000000000 -0500
5645 +diff -urNp linux-2.6.32.46/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.46/arch/x86/kernel/vmlinux.lds.S
5646 +--- linux-2.6.32.46/arch/x86/kernel/vmlinux.lds.S 2011-03-27 14:31:47.000000000 -0400
5647 ++++ linux-2.6.32.46/arch/x86/kernel/vmlinux.lds.S 2011-04-17 15:56:46.000000000 -0400
5648 @@ -26,6 +26,13 @@
5649 #include <asm/page_types.h>
5650 #include <asm/cache.h>
5651 @@ -19051,9 +19051,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
5652 "kernel image bigger than KERNEL_IMAGE_SIZE");
5653
5654 #ifdef CONFIG_SMP
5655 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c
5656 ---- linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c 2011-11-12 12:44:28.000000000 -0500
5657 -+++ linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c 2011-11-12 12:46:42.000000000 -0500
5658 +diff -urNp linux-2.6.32.46/arch/x86/kernel/vsyscall_64.c linux-2.6.32.46/arch/x86/kernel/vsyscall_64.c
5659 +--- linux-2.6.32.46/arch/x86/kernel/vsyscall_64.c 2011-03-27 14:31:47.000000000 -0400
5660 ++++ linux-2.6.32.46/arch/x86/kernel/vsyscall_64.c 2011-04-23 12:56:10.000000000 -0400
5661 @@ -80,6 +80,7 @@ void update_vsyscall(struct timespec *wa
5662
5663 write_seqlock_irqsave(&vsyscall_gtod_data.lock, flags);
5664 @@ -19071,9 +19071,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c linux-2.6.32.48/arch/x8
5665 p = tcache->blob[1];
5666 } else if (__vgetcpu_mode == VGETCPU_RDTSCP) {
5667 /* Load per CPU data from RDTSCP */
5668 -diff -urNp linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c
5669 ---- linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c 2009-12-02 22:51:21.000000000 -0500
5670 -+++ linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c 2011-11-12 12:46:42.000000000 -0500
5671 +diff -urNp linux-2.6.32.46/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.32.46/arch/x86/kernel/x8664_ksyms_64.c
5672 +--- linux-2.6.32.46/arch/x86/kernel/x8664_ksyms_64.c 2011-03-27 14:31:47.000000000 -0400
5673 ++++ linux-2.6.32.46/arch/x86/kernel/x8664_ksyms_64.c 2011-04-17 15:56:46.000000000 -0400
5674 @@ -30,8 +30,6 @@ EXPORT_SYMBOL(__put_user_8);
5675
5676 EXPORT_SYMBOL(copy_user_generic);
5677 @@ -19083,9 +19083,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.32.48/arch
5678 EXPORT_SYMBOL(__copy_from_user_inatomic);
5679
5680 EXPORT_SYMBOL(copy_page);
5681 -diff -urNp linux-2.6.32.48/arch/x86/kernel/xsave.c linux-2.6.32.48/arch/x86/kernel/xsave.c
5682 ---- linux-2.6.32.48/arch/x86/kernel/xsave.c 2009-12-02 22:51:21.000000000 -0500
5683 -+++ linux-2.6.32.48/arch/x86/kernel/xsave.c 2011-11-12 12:46:42.000000000 -0500
5684 +diff -urNp linux-2.6.32.46/arch/x86/kernel/xsave.c linux-2.6.32.46/arch/x86/kernel/xsave.c
5685 +--- linux-2.6.32.46/arch/x86/kernel/xsave.c 2011-03-27 14:31:47.000000000 -0400
5686 ++++ linux-2.6.32.46/arch/x86/kernel/xsave.c 2011-10-06 09:37:08.000000000 -0400
5687 @@ -54,7 +54,7 @@ int check_for_xstate(struct i387_fxsave_
5688 fx_sw_user->xstate_size > fx_sw_user->extended_size)
5689 return -1;
5690 @@ -19113,9 +19113,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/xsave.c linux-2.6.32.48/arch/x86/kern
5691 buf);
5692 if (unlikely(err)) {
5693 /*
5694 -diff -urNp linux-2.6.32.48/arch/x86/kvm/emulate.c linux-2.6.32.48/arch/x86/kvm/emulate.c
5695 ---- linux-2.6.32.48/arch/x86/kvm/emulate.c 2011-11-12 12:44:28.000000000 -0500
5696 -+++ linux-2.6.32.48/arch/x86/kvm/emulate.c 2011-11-12 12:46:42.000000000 -0500
5697 +diff -urNp linux-2.6.32.46/arch/x86/kvm/emulate.c linux-2.6.32.46/arch/x86/kvm/emulate.c
5698 +--- linux-2.6.32.46/arch/x86/kvm/emulate.c 2011-03-27 14:31:47.000000000 -0400
5699 ++++ linux-2.6.32.46/arch/x86/kvm/emulate.c 2011-04-17 15:56:46.000000000 -0400
5700 @@ -81,8 +81,8 @@
5701 #define Src2CL (1<<29)
5702 #define Src2ImmByte (2<<29)
5703 @@ -19152,9 +19152,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/emulate.c linux-2.6.32.48/arch/x86/kvm/e
5704 switch ((_dst).bytes) { \
5705 case 1: \
5706 ____emulate_2op(_op,_src,_dst,_eflags,_bx,_by,"b"); \
5707 -diff -urNp linux-2.6.32.48/arch/x86/kvm/lapic.c linux-2.6.32.48/arch/x86/kvm/lapic.c
5708 ---- linux-2.6.32.48/arch/x86/kvm/lapic.c 2011-11-12 12:44:28.000000000 -0500
5709 -+++ linux-2.6.32.48/arch/x86/kvm/lapic.c 2011-11-12 12:46:42.000000000 -0500
5710 +diff -urNp linux-2.6.32.46/arch/x86/kvm/lapic.c linux-2.6.32.46/arch/x86/kvm/lapic.c
5711 +--- linux-2.6.32.46/arch/x86/kvm/lapic.c 2011-03-27 14:31:47.000000000 -0400
5712 ++++ linux-2.6.32.46/arch/x86/kvm/lapic.c 2011-04-17 15:56:46.000000000 -0400
5713 @@ -52,7 +52,7 @@
5714 #define APIC_BUS_CYCLE_NS 1
5715
5716 @@ -19164,9 +19164,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/lapic.c linux-2.6.32.48/arch/x86/kvm/lap
5717
5718 #define APIC_LVT_NUM 6
5719 /* 14 is the version for Xeon and Pentium 8.4.8*/
5720 -diff -urNp linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h
5721 ---- linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h 2011-11-12 12:44:28.000000000 -0500
5722 -+++ linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h 2011-11-12 12:46:42.000000000 -0500
5723 +diff -urNp linux-2.6.32.46/arch/x86/kvm/paging_tmpl.h linux-2.6.32.46/arch/x86/kvm/paging_tmpl.h
5724 +--- linux-2.6.32.46/arch/x86/kvm/paging_tmpl.h 2011-03-27 14:31:47.000000000 -0400
5725 ++++ linux-2.6.32.46/arch/x86/kvm/paging_tmpl.h 2011-05-16 21:46:57.000000000 -0400
5726 @@ -416,6 +416,8 @@ static int FNAME(page_fault)(struct kvm_
5727 int level = PT_PAGE_TABLE_LEVEL;
5728 unsigned long mmu_seq;
5729 @@ -19176,10 +19176,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h linux-2.6.32.48/arch/x86/k
5730 pgprintk("%s: addr %lx err %x\n", __func__, addr, error_code);
5731 kvm_mmu_audit(vcpu, "pre page fault");
5732
5733 -diff -urNp linux-2.6.32.48/arch/x86/kvm/svm.c linux-2.6.32.48/arch/x86/kvm/svm.c
5734 ---- linux-2.6.32.48/arch/x86/kvm/svm.c 2011-11-12 12:44:28.000000000 -0500
5735 -+++ linux-2.6.32.48/arch/x86/kvm/svm.c 2011-11-12 12:46:42.000000000 -0500
5736 -@@ -2486,7 +2486,11 @@ static void reload_tss(struct kvm_vcpu *
5737 +diff -urNp linux-2.6.32.46/arch/x86/kvm/svm.c linux-2.6.32.46/arch/x86/kvm/svm.c
5738 +--- linux-2.6.32.46/arch/x86/kvm/svm.c 2011-03-27 14:31:47.000000000 -0400
5739 ++++ linux-2.6.32.46/arch/x86/kvm/svm.c 2011-08-05 20:33:55.000000000 -0400
5740 +@@ -2485,7 +2485,11 @@ static void reload_tss(struct kvm_vcpu *
5741 int cpu = raw_smp_processor_id();
5742
5743 struct svm_cpu_data *svm_data = per_cpu(svm_data, cpu);
5744 @@ -19191,7 +19191,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/svm.c linux-2.6.32.48/arch/x86/kvm/svm.c
5745 load_TR_desc();
5746 }
5747
5748 -@@ -2947,7 +2951,7 @@ static bool svm_gb_page_enable(void)
5749 +@@ -2946,7 +2950,7 @@ static bool svm_gb_page_enable(void)
5750 return true;
5751 }
5752
5753 @@ -19200,9 +19200,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/svm.c linux-2.6.32.48/arch/x86/kvm/svm.c
5754 .cpu_has_kvm_support = has_svm,
5755 .disabled_by_bios = is_disabled,
5756 .hardware_setup = svm_hardware_setup,
5757 -diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5758 ---- linux-2.6.32.48/arch/x86/kvm/vmx.c 2011-11-12 12:44:28.000000000 -0500
5759 -+++ linux-2.6.32.48/arch/x86/kvm/vmx.c 2011-11-12 12:46:42.000000000 -0500
5760 +diff -urNp linux-2.6.32.46/arch/x86/kvm/vmx.c linux-2.6.32.46/arch/x86/kvm/vmx.c
5761 +--- linux-2.6.32.46/arch/x86/kvm/vmx.c 2011-03-27 14:31:47.000000000 -0400
5762 ++++ linux-2.6.32.46/arch/x86/kvm/vmx.c 2011-05-04 17:56:20.000000000 -0400
5763 @@ -570,7 +570,11 @@ static void reload_tss(void)
5764
5765 kvm_get_gdt(&gdt);
5766 @@ -19215,7 +19215,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5767 load_TR_desc();
5768 }
5769
5770 -@@ -1410,8 +1414,11 @@ static __init int hardware_setup(void)
5771 +@@ -1409,8 +1413,11 @@ static __init int hardware_setup(void)
5772 if (!cpu_has_vmx_flexpriority())
5773 flexpriority_enabled = 0;
5774
5775 @@ -19229,7 +19229,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5776
5777 if (enable_ept && !cpu_has_vmx_ept_2m_page())
5778 kvm_disable_largepages();
5779 -@@ -2362,7 +2369,7 @@ static int vmx_vcpu_setup(struct vcpu_vm
5780 +@@ -2361,7 +2368,7 @@ static int vmx_vcpu_setup(struct vcpu_vm
5781 vmcs_writel(HOST_IDTR_BASE, dt.base); /* 22.2.4 */
5782
5783 asm("mov $.Lkvm_vmx_return, %0" : "=r"(kvm_vmx_return));
5784 @@ -19238,7 +19238,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5785 vmcs_write32(VM_EXIT_MSR_STORE_COUNT, 0);
5786 vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, 0);
5787 vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, 0);
5788 -@@ -3718,6 +3725,12 @@ static void vmx_vcpu_run(struct kvm_vcpu
5789 +@@ -3717,6 +3724,12 @@ static void vmx_vcpu_run(struct kvm_vcpu
5790 "jmp .Lkvm_vmx_return \n\t"
5791 ".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t"
5792 ".Lkvm_vmx_return: "
5793 @@ -19251,7 +19251,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5794 /* Save guest registers, load host registers, keep flags */
5795 "xchg %0, (%%"R"sp) \n\t"
5796 "mov %%"R"ax, %c[rax](%0) \n\t"
5797 -@@ -3764,8 +3777,13 @@ static void vmx_vcpu_run(struct kvm_vcpu
5798 +@@ -3763,8 +3776,13 @@ static void vmx_vcpu_run(struct kvm_vcpu
5799 [r15]"i"(offsetof(struct vcpu_vmx, vcpu.arch.regs[VCPU_REGS_R15])),
5800 #endif
5801 [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2))
5802 @@ -19266,7 +19266,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5803 #ifdef CONFIG_X86_64
5804 , "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
5805 #endif
5806 -@@ -3782,7 +3800,16 @@ static void vmx_vcpu_run(struct kvm_vcpu
5807 +@@ -3781,7 +3799,16 @@ static void vmx_vcpu_run(struct kvm_vcpu
5808 if (vmx->rmode.irq.pending)
5809 fixup_rmode_irq(vmx);
5810
5811 @@ -19284,7 +19284,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5812 vmx->launched = 1;
5813
5814 vmx_complete_interrupts(vmx);
5815 -@@ -3957,7 +3984,7 @@ static bool vmx_gb_page_enable(void)
5816 +@@ -3956,7 +3983,7 @@ static bool vmx_gb_page_enable(void)
5817 return false;
5818 }
5819
5820 @@ -19293,9 +19293,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
5821 .cpu_has_kvm_support = cpu_has_kvm_support,
5822 .disabled_by_bios = vmx_disabled_by_bios,
5823 .hardware_setup = hardware_setup,
5824 -diff -urNp linux-2.6.32.48/arch/x86/kvm/x86.c linux-2.6.32.48/arch/x86/kvm/x86.c
5825 ---- linux-2.6.32.48/arch/x86/kvm/x86.c 2011-11-12 12:44:28.000000000 -0500
5826 -+++ linux-2.6.32.48/arch/x86/kvm/x86.c 2011-11-12 12:46:42.000000000 -0500
5827 +diff -urNp linux-2.6.32.46/arch/x86/kvm/x86.c linux-2.6.32.46/arch/x86/kvm/x86.c
5828 +--- linux-2.6.32.46/arch/x86/kvm/x86.c 2011-05-10 22:12:01.000000000 -0400
5829 ++++ linux-2.6.32.46/arch/x86/kvm/x86.c 2011-05-10 22:12:26.000000000 -0400
5830 @@ -82,7 +82,7 @@ static void update_cr8_intercept(struct
5831 static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid,
5832 struct kvm_cpuid_entry2 __user *entries);
5833 @@ -19375,9 +19375,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/x86.c linux-2.6.32.48/arch/x86/kvm/x86.c
5834
5835 if (kvm_x86_ops) {
5836 printk(KERN_ERR "kvm: already loaded the other module\n");
5837 -diff -urNp linux-2.6.32.48/arch/x86/lguest/boot.c linux-2.6.32.48/arch/x86/lguest/boot.c
5838 ---- linux-2.6.32.48/arch/x86/lguest/boot.c 2009-12-02 22:51:21.000000000 -0500
5839 -+++ linux-2.6.32.48/arch/x86/lguest/boot.c 2011-11-12 12:46:42.000000000 -0500
5840 +diff -urNp linux-2.6.32.46/arch/x86/lguest/boot.c linux-2.6.32.46/arch/x86/lguest/boot.c
5841 +--- linux-2.6.32.46/arch/x86/lguest/boot.c 2011-03-27 14:31:47.000000000 -0400
5842 ++++ linux-2.6.32.46/arch/x86/lguest/boot.c 2011-08-05 20:33:55.000000000 -0400
5843 @@ -1172,9 +1172,10 @@ static __init int early_put_chars(u32 vt
5844 * Rebooting also tells the Host we're finished, but the RESTART flag tells the
5845 * Launcher to reboot us.
5846 @@ -19390,9 +19390,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lguest/boot.c linux-2.6.32.48/arch/x86/lgues
5847 }
5848
5849 /*G:050
5850 -diff -urNp linux-2.6.32.48/arch/x86/lib/atomic64_32.c linux-2.6.32.48/arch/x86/lib/atomic64_32.c
5851 ---- linux-2.6.32.48/arch/x86/lib/atomic64_32.c 2009-12-02 22:51:21.000000000 -0500
5852 -+++ linux-2.6.32.48/arch/x86/lib/atomic64_32.c 2011-11-12 12:46:42.000000000 -0500
5853 +diff -urNp linux-2.6.32.46/arch/x86/lib/atomic64_32.c linux-2.6.32.46/arch/x86/lib/atomic64_32.c
5854 +--- linux-2.6.32.46/arch/x86/lib/atomic64_32.c 2011-03-27 14:31:47.000000000 -0400
5855 ++++ linux-2.6.32.46/arch/x86/lib/atomic64_32.c 2011-05-04 17:56:28.000000000 -0400
5856 @@ -25,6 +25,12 @@ u64 atomic64_cmpxchg(atomic64_t *ptr, u6
5857 }
5858 EXPORT_SYMBOL(atomic64_cmpxchg);
5859 @@ -19615,9 +19615,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/atomic64_32.c linux-2.6.32.48/arch/x86/l
5860 * atomic64_dec_and_test - decrement and test
5861 * @ptr: pointer to type atomic64_t
5862 *
5863 -diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/lib/checksum_32.S
5864 ---- linux-2.6.32.48/arch/x86/lib/checksum_32.S 2009-12-02 22:51:21.000000000 -0500
5865 -+++ linux-2.6.32.48/arch/x86/lib/checksum_32.S 2011-11-12 12:46:42.000000000 -0500
5866 +diff -urNp linux-2.6.32.46/arch/x86/lib/checksum_32.S linux-2.6.32.46/arch/x86/lib/checksum_32.S
5867 +--- linux-2.6.32.46/arch/x86/lib/checksum_32.S 2011-03-27 14:31:47.000000000 -0400
5868 ++++ linux-2.6.32.46/arch/x86/lib/checksum_32.S 2011-04-17 15:56:46.000000000 -0400
5869 @@ -28,7 +28,8 @@
5870 #include <linux/linkage.h>
5871 #include <asm/dwarf2.h>
5872 @@ -19878,9 +19878,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
5873
5874 #undef ROUND
5875 #undef ROUND1
5876 -diff -urNp linux-2.6.32.48/arch/x86/lib/clear_page_64.S linux-2.6.32.48/arch/x86/lib/clear_page_64.S
5877 ---- linux-2.6.32.48/arch/x86/lib/clear_page_64.S 2009-12-02 22:51:21.000000000 -0500
5878 -+++ linux-2.6.32.48/arch/x86/lib/clear_page_64.S 2011-11-12 12:46:42.000000000 -0500
5879 +diff -urNp linux-2.6.32.46/arch/x86/lib/clear_page_64.S linux-2.6.32.46/arch/x86/lib/clear_page_64.S
5880 +--- linux-2.6.32.46/arch/x86/lib/clear_page_64.S 2011-03-27 14:31:47.000000000 -0400
5881 ++++ linux-2.6.32.46/arch/x86/lib/clear_page_64.S 2011-10-06 09:37:08.000000000 -0400
5882 @@ -1,5 +1,6 @@
5883 #include <linux/linkage.h>
5884 #include <asm/dwarf2.h>
5885 @@ -19913,9 +19913,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/clear_page_64.S linux-2.6.32.48/arch/x86
5886 1: .byte 0xeb /* jmp <disp8> */
5887 .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */
5888 2:
5889 -diff -urNp linux-2.6.32.48/arch/x86/lib/copy_page_64.S linux-2.6.32.48/arch/x86/lib/copy_page_64.S
5890 ---- linux-2.6.32.48/arch/x86/lib/copy_page_64.S 2009-12-02 22:51:21.000000000 -0500
5891 -+++ linux-2.6.32.48/arch/x86/lib/copy_page_64.S 2011-11-12 12:46:42.000000000 -0500
5892 +diff -urNp linux-2.6.32.46/arch/x86/lib/copy_page_64.S linux-2.6.32.46/arch/x86/lib/copy_page_64.S
5893 +--- linux-2.6.32.46/arch/x86/lib/copy_page_64.S 2011-03-27 14:31:47.000000000 -0400
5894 ++++ linux-2.6.32.46/arch/x86/lib/copy_page_64.S 2011-10-06 09:37:08.000000000 -0400
5895 @@ -2,12 +2,14 @@
5896
5897 #include <linux/linkage.h>
5898 @@ -19948,9 +19948,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_page_64.S linux-2.6.32.48/arch/x86/
5899 1: .byte 0xeb /* jmp <disp8> */
5900 .byte (copy_page_c - copy_page) - (2f - 1b) /* offset */
5901 2:
5902 -diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/lib/copy_user_64.S
5903 ---- linux-2.6.32.48/arch/x86/lib/copy_user_64.S 2011-11-12 12:44:28.000000000 -0500
5904 -+++ linux-2.6.32.48/arch/x86/lib/copy_user_64.S 2011-11-12 12:46:42.000000000 -0500
5905 +diff -urNp linux-2.6.32.46/arch/x86/lib/copy_user_64.S linux-2.6.32.46/arch/x86/lib/copy_user_64.S
5906 +--- linux-2.6.32.46/arch/x86/lib/copy_user_64.S 2011-06-25 12:55:34.000000000 -0400
5907 ++++ linux-2.6.32.46/arch/x86/lib/copy_user_64.S 2011-10-06 10:12:52.000000000 -0400
5908 @@ -15,13 +15,15 @@
5909 #include <asm/asm-offsets.h>
5910 #include <asm/thread_info.h>
5911 @@ -20043,9 +20043,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/
5912 ret
5913
5914 .section .fixup,"ax"
5915 -diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S
5916 ---- linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S 2009-12-02 22:51:21.000000000 -0500
5917 -+++ linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S 2011-11-12 12:46:42.000000000 -0500
5918 +diff -urNp linux-2.6.32.46/arch/x86/lib/copy_user_nocache_64.S linux-2.6.32.46/arch/x86/lib/copy_user_nocache_64.S
5919 +--- linux-2.6.32.46/arch/x86/lib/copy_user_nocache_64.S 2011-03-27 14:31:47.000000000 -0400
5920 ++++ linux-2.6.32.46/arch/x86/lib/copy_user_nocache_64.S 2011-10-06 09:37:08.000000000 -0400
5921 @@ -8,12 +8,14 @@
5922
5923 #include <linux/linkage.h>
5924 @@ -20085,9 +20085,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S linux-2.6.32.48/a
5925 ret
5926
5927 .section .fixup,"ax"
5928 -diff -urNp linux-2.6.32.48/arch/x86/lib/csum-copy_64.S linux-2.6.32.48/arch/x86/lib/csum-copy_64.S
5929 ---- linux-2.6.32.48/arch/x86/lib/csum-copy_64.S 2009-12-02 22:51:21.000000000 -0500
5930 -+++ linux-2.6.32.48/arch/x86/lib/csum-copy_64.S 2011-11-12 12:46:42.000000000 -0500
5931 +diff -urNp linux-2.6.32.46/arch/x86/lib/csum-copy_64.S linux-2.6.32.46/arch/x86/lib/csum-copy_64.S
5932 +--- linux-2.6.32.46/arch/x86/lib/csum-copy_64.S 2011-03-27 14:31:47.000000000 -0400
5933 ++++ linux-2.6.32.46/arch/x86/lib/csum-copy_64.S 2011-10-06 09:37:14.000000000 -0400
5934 @@ -8,6 +8,7 @@
5935 #include <linux/linkage.h>
5936 #include <asm/dwarf2.h>
5937 @@ -20104,9 +20104,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/csum-copy_64.S linux-2.6.32.48/arch/x86/
5938 ret
5939 CFI_RESTORE_STATE
5940
5941 -diff -urNp linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c
5942 ---- linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c 2009-12-02 22:51:21.000000000 -0500
5943 -+++ linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c 2011-11-12 12:46:42.000000000 -0500
5944 +diff -urNp linux-2.6.32.46/arch/x86/lib/csum-wrappers_64.c linux-2.6.32.46/arch/x86/lib/csum-wrappers_64.c
5945 +--- linux-2.6.32.46/arch/x86/lib/csum-wrappers_64.c 2011-03-27 14:31:47.000000000 -0400
5946 ++++ linux-2.6.32.46/arch/x86/lib/csum-wrappers_64.c 2011-10-06 09:37:08.000000000 -0400
5947 @@ -52,7 +52,13 @@ csum_partial_copy_from_user(const void _
5948 len -= 2;
5949 }
5950 @@ -20137,9 +20137,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c linux-2.6.32.48/arch/
5951 len, isum, NULL, errp);
5952 }
5953 EXPORT_SYMBOL(csum_partial_copy_to_user);
5954 -diff -urNp linux-2.6.32.48/arch/x86/lib/getuser.S linux-2.6.32.48/arch/x86/lib/getuser.S
5955 ---- linux-2.6.32.48/arch/x86/lib/getuser.S 2009-12-02 22:51:21.000000000 -0500
5956 -+++ linux-2.6.32.48/arch/x86/lib/getuser.S 2011-11-12 12:46:42.000000000 -0500
5957 +diff -urNp linux-2.6.32.46/arch/x86/lib/getuser.S linux-2.6.32.46/arch/x86/lib/getuser.S
5958 +--- linux-2.6.32.46/arch/x86/lib/getuser.S 2011-03-27 14:31:47.000000000 -0400
5959 ++++ linux-2.6.32.46/arch/x86/lib/getuser.S 2011-10-08 08:14:37.000000000 -0400
5960 @@ -33,15 +33,38 @@
5961 #include <asm/asm-offsets.h>
5962 #include <asm/thread_info.h>
5963 @@ -20263,9 +20263,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/getuser.S linux-2.6.32.48/arch/x86/lib/g
5964 ret
5965 CFI_ENDPROC
5966 END(bad_get_user)
5967 -diff -urNp linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S
5968 ---- linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S 2009-12-02 22:51:21.000000000 -0500
5969 -+++ linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S 2011-11-12 12:46:42.000000000 -0500
5970 +diff -urNp linux-2.6.32.46/arch/x86/lib/iomap_copy_64.S linux-2.6.32.46/arch/x86/lib/iomap_copy_64.S
5971 +--- linux-2.6.32.46/arch/x86/lib/iomap_copy_64.S 2011-03-27 14:31:47.000000000 -0400
5972 ++++ linux-2.6.32.46/arch/x86/lib/iomap_copy_64.S 2011-10-06 09:37:14.000000000 -0400
5973 @@ -17,6 +17,7 @@
5974
5975 #include <linux/linkage.h>
5976 @@ -20282,9 +20282,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S linux-2.6.32.48/arch/x86
5977 ret
5978 CFI_ENDPROC
5979 ENDPROC(__iowrite32_copy)
5980 -diff -urNp linux-2.6.32.48/arch/x86/lib/memcpy_64.S linux-2.6.32.48/arch/x86/lib/memcpy_64.S
5981 ---- linux-2.6.32.48/arch/x86/lib/memcpy_64.S 2009-12-02 22:51:21.000000000 -0500
5982 -+++ linux-2.6.32.48/arch/x86/lib/memcpy_64.S 2011-11-12 12:46:42.000000000 -0500
5983 +diff -urNp linux-2.6.32.46/arch/x86/lib/memcpy_64.S linux-2.6.32.46/arch/x86/lib/memcpy_64.S
5984 +--- linux-2.6.32.46/arch/x86/lib/memcpy_64.S 2011-03-27 14:31:47.000000000 -0400
5985 ++++ linux-2.6.32.46/arch/x86/lib/memcpy_64.S 2011-10-06 10:13:49.000000000 -0400
5986 @@ -4,6 +4,7 @@
5987
5988 #include <asm/cpufeature.h>
5989 @@ -20318,9 +20318,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/memcpy_64.S linux-2.6.32.48/arch/x86/lib
5990 1: .byte 0xeb /* jmp <disp8> */
5991 .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */
5992 2:
5993 -diff -urNp linux-2.6.32.48/arch/x86/lib/memset_64.S linux-2.6.32.48/arch/x86/lib/memset_64.S
5994 ---- linux-2.6.32.48/arch/x86/lib/memset_64.S 2009-12-02 22:51:21.000000000 -0500
5995 -+++ linux-2.6.32.48/arch/x86/lib/memset_64.S 2011-11-12 12:46:42.000000000 -0500
5996 +diff -urNp linux-2.6.32.46/arch/x86/lib/memset_64.S linux-2.6.32.46/arch/x86/lib/memset_64.S
5997 +--- linux-2.6.32.46/arch/x86/lib/memset_64.S 2011-03-27 14:31:47.000000000 -0400
5998 ++++ linux-2.6.32.46/arch/x86/lib/memset_64.S 2011-10-06 09:37:08.000000000 -0400
5999 @@ -2,6 +2,7 @@
6000
6001 #include <linux/linkage.h>
6002 @@ -20354,9 +20354,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/memset_64.S linux-2.6.32.48/arch/x86/lib
6003 1: .byte 0xeb /* jmp <disp8> */
6004 .byte (memset_c - memset) - (2f - 1b) /* offset */
6005 2:
6006 -diff -urNp linux-2.6.32.48/arch/x86/lib/mmx_32.c linux-2.6.32.48/arch/x86/lib/mmx_32.c
6007 ---- linux-2.6.32.48/arch/x86/lib/mmx_32.c 2009-12-02 22:51:21.000000000 -0500
6008 -+++ linux-2.6.32.48/arch/x86/lib/mmx_32.c 2011-11-12 12:46:42.000000000 -0500
6009 +diff -urNp linux-2.6.32.46/arch/x86/lib/mmx_32.c linux-2.6.32.46/arch/x86/lib/mmx_32.c
6010 +--- linux-2.6.32.46/arch/x86/lib/mmx_32.c 2011-03-27 14:31:47.000000000 -0400
6011 ++++ linux-2.6.32.46/arch/x86/lib/mmx_32.c 2011-04-17 15:56:46.000000000 -0400
6012 @@ -29,6 +29,7 @@ void *_mmx_memcpy(void *to, const void *
6013 {
6014 void *p;
6015 @@ -20672,9 +20672,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/mmx_32.c linux-2.6.32.48/arch/x86/lib/mm
6016
6017 from += 64;
6018 to += 64;
6019 -diff -urNp linux-2.6.32.48/arch/x86/lib/msr-reg.S linux-2.6.32.48/arch/x86/lib/msr-reg.S
6020 ---- linux-2.6.32.48/arch/x86/lib/msr-reg.S 2009-12-02 22:51:21.000000000 -0500
6021 -+++ linux-2.6.32.48/arch/x86/lib/msr-reg.S 2011-11-12 12:46:42.000000000 -0500
6022 +diff -urNp linux-2.6.32.46/arch/x86/lib/msr-reg.S linux-2.6.32.46/arch/x86/lib/msr-reg.S
6023 +--- linux-2.6.32.46/arch/x86/lib/msr-reg.S 2011-03-27 14:31:47.000000000 -0400
6024 ++++ linux-2.6.32.46/arch/x86/lib/msr-reg.S 2011-10-08 08:14:40.000000000 -0400
6025 @@ -3,6 +3,7 @@
6026 #include <asm/dwarf2.h>
6027 #include <asm/asm.h>
6028 @@ -20691,9 +20691,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/msr-reg.S linux-2.6.32.48/arch/x86/lib/m
6029 ret
6030 3:
6031 CFI_RESTORE_STATE
6032 -diff -urNp linux-2.6.32.48/arch/x86/lib/putuser.S linux-2.6.32.48/arch/x86/lib/putuser.S
6033 ---- linux-2.6.32.48/arch/x86/lib/putuser.S 2009-12-02 22:51:21.000000000 -0500
6034 -+++ linux-2.6.32.48/arch/x86/lib/putuser.S 2011-11-12 12:46:42.000000000 -0500
6035 +diff -urNp linux-2.6.32.46/arch/x86/lib/putuser.S linux-2.6.32.46/arch/x86/lib/putuser.S
6036 +--- linux-2.6.32.46/arch/x86/lib/putuser.S 2011-03-27 14:31:47.000000000 -0400
6037 ++++ linux-2.6.32.46/arch/x86/lib/putuser.S 2011-10-08 08:14:40.000000000 -0400
6038 @@ -15,7 +15,9 @@
6039 #include <asm/thread_info.h>
6040 #include <asm/errno.h>
6041 @@ -20833,9 +20833,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/putuser.S linux-2.6.32.48/arch/x86/lib/p
6042 #endif
6043 xor %eax,%eax
6044 EXIT
6045 -diff -urNp linux-2.6.32.48/arch/x86/lib/rwlock_64.S linux-2.6.32.48/arch/x86/lib/rwlock_64.S
6046 ---- linux-2.6.32.48/arch/x86/lib/rwlock_64.S 2009-12-02 22:51:21.000000000 -0500
6047 -+++ linux-2.6.32.48/arch/x86/lib/rwlock_64.S 2011-11-12 12:46:42.000000000 -0500
6048 +diff -urNp linux-2.6.32.46/arch/x86/lib/rwlock_64.S linux-2.6.32.46/arch/x86/lib/rwlock_64.S
6049 +--- linux-2.6.32.46/arch/x86/lib/rwlock_64.S 2011-03-27 14:31:47.000000000 -0400
6050 ++++ linux-2.6.32.46/arch/x86/lib/rwlock_64.S 2011-10-06 09:37:14.000000000 -0400
6051 @@ -17,6 +17,7 @@ ENTRY(__write_lock_failed)
6052 LOCK_PREFIX
6053 subl $RW_LOCK_BIAS,(%rdi)
6054 @@ -20852,9 +20852,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/rwlock_64.S linux-2.6.32.48/arch/x86/lib
6055 ret
6056 CFI_ENDPROC
6057 END(__read_lock_failed)
6058 -diff -urNp linux-2.6.32.48/arch/x86/lib/rwsem_64.S linux-2.6.32.48/arch/x86/lib/rwsem_64.S
6059 ---- linux-2.6.32.48/arch/x86/lib/rwsem_64.S 2011-11-12 12:44:28.000000000 -0500
6060 -+++ linux-2.6.32.48/arch/x86/lib/rwsem_64.S 2011-11-12 12:46:42.000000000 -0500
6061 +diff -urNp linux-2.6.32.46/arch/x86/lib/rwsem_64.S linux-2.6.32.46/arch/x86/lib/rwsem_64.S
6062 +--- linux-2.6.32.46/arch/x86/lib/rwsem_64.S 2011-03-27 14:31:47.000000000 -0400
6063 ++++ linux-2.6.32.46/arch/x86/lib/rwsem_64.S 2011-10-06 09:37:14.000000000 -0400
6064 @@ -48,6 +48,7 @@ ENTRY(call_rwsem_down_read_failed)
6065 call rwsem_down_read_failed
6066 popq %rdx
6067 @@ -20888,9 +20888,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/rwsem_64.S linux-2.6.32.48/arch/x86/lib/
6068 + pax_force_retaddr
6069 ret
6070 ENDPROC(call_rwsem_downgrade_wake)
6071 -diff -urNp linux-2.6.32.48/arch/x86/lib/thunk_64.S linux-2.6.32.48/arch/x86/lib/thunk_64.S
6072 ---- linux-2.6.32.48/arch/x86/lib/thunk_64.S 2009-12-02 22:51:21.000000000 -0500
6073 -+++ linux-2.6.32.48/arch/x86/lib/thunk_64.S 2011-11-12 12:46:42.000000000 -0500
6074 +diff -urNp linux-2.6.32.46/arch/x86/lib/thunk_64.S linux-2.6.32.46/arch/x86/lib/thunk_64.S
6075 +--- linux-2.6.32.46/arch/x86/lib/thunk_64.S 2011-03-27 14:31:47.000000000 -0400
6076 ++++ linux-2.6.32.46/arch/x86/lib/thunk_64.S 2011-10-06 09:37:14.000000000 -0400
6077 @@ -10,7 +10,8 @@
6078 #include <asm/dwarf2.h>
6079 #include <asm/calling.h>
6080 @@ -20916,9 +20916,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/thunk_64.S linux-2.6.32.48/arch/x86/lib/
6081 + pax_force_retaddr
6082 ret
6083 CFI_ENDPROC
6084 -diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_32.c linux-2.6.32.48/arch/x86/lib/usercopy_32.c
6085 ---- linux-2.6.32.48/arch/x86/lib/usercopy_32.c 2009-12-02 22:51:21.000000000 -0500
6086 -+++ linux-2.6.32.48/arch/x86/lib/usercopy_32.c 2011-11-12 12:46:42.000000000 -0500
6087 +diff -urNp linux-2.6.32.46/arch/x86/lib/usercopy_32.c linux-2.6.32.46/arch/x86/lib/usercopy_32.c
6088 +--- linux-2.6.32.46/arch/x86/lib/usercopy_32.c 2011-03-27 14:31:47.000000000 -0400
6089 ++++ linux-2.6.32.46/arch/x86/lib/usercopy_32.c 2011-04-23 21:12:28.000000000 -0400
6090 @@ -43,7 +43,7 @@ do { \
6091 __asm__ __volatile__( \
6092 " testl %1,%1\n" \
6093 @@ -21524,9 +21524,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_32.c linux-2.6.32.48/arch/x86/l
6094 -EXPORT_SYMBOL(copy_from_user);
6095 +EXPORT_SYMBOL(set_fs);
6096 +#endif
6097 -diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_64.c linux-2.6.32.48/arch/x86/lib/usercopy_64.c
6098 ---- linux-2.6.32.48/arch/x86/lib/usercopy_64.c 2009-12-02 22:51:21.000000000 -0500
6099 -+++ linux-2.6.32.48/arch/x86/lib/usercopy_64.c 2011-11-12 12:46:42.000000000 -0500
6100 +diff -urNp linux-2.6.32.46/arch/x86/lib/usercopy_64.c linux-2.6.32.46/arch/x86/lib/usercopy_64.c
6101 +--- linux-2.6.32.46/arch/x86/lib/usercopy_64.c 2011-03-27 14:31:47.000000000 -0400
6102 ++++ linux-2.6.32.46/arch/x86/lib/usercopy_64.c 2011-10-06 09:37:08.000000000 -0400
6103 @@ -42,6 +42,12 @@ long
6104 __strncpy_from_user(char *dst, const char __user *src, long count)
6105 {
6106 @@ -21585,9 +21585,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_64.c linux-2.6.32.48/arch/x86/l
6107 {
6108 char c;
6109 unsigned zero_len;
6110 -diff -urNp linux-2.6.32.48/arch/x86/Makefile linux-2.6.32.48/arch/x86/Makefile
6111 ---- linux-2.6.32.48/arch/x86/Makefile 2009-12-02 22:51:21.000000000 -0500
6112 -+++ linux-2.6.32.48/arch/x86/Makefile 2011-11-12 12:46:42.000000000 -0500
6113 +diff -urNp linux-2.6.32.46/arch/x86/Makefile linux-2.6.32.46/arch/x86/Makefile
6114 +--- linux-2.6.32.46/arch/x86/Makefile 2011-03-27 14:31:47.000000000 -0400
6115 ++++ linux-2.6.32.46/arch/x86/Makefile 2011-07-19 18:16:02.000000000 -0400
6116 @@ -44,6 +44,7 @@ ifeq ($(CONFIG_X86_32),y)
6117 else
6118 BITS := 64
6119 @@ -21609,9 +21609,9 @@ diff -urNp linux-2.6.32.48/arch/x86/Makefile linux-2.6.32.48/arch/x86/Makefile
6120 +
6121 +archprepare:
6122 + $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
6123 -diff -urNp linux-2.6.32.48/arch/x86/mm/extable.c linux-2.6.32.48/arch/x86/mm/extable.c
6124 ---- linux-2.6.32.48/arch/x86/mm/extable.c 2009-12-02 22:51:21.000000000 -0500
6125 -+++ linux-2.6.32.48/arch/x86/mm/extable.c 2011-11-12 12:46:42.000000000 -0500
6126 +diff -urNp linux-2.6.32.46/arch/x86/mm/extable.c linux-2.6.32.46/arch/x86/mm/extable.c
6127 +--- linux-2.6.32.46/arch/x86/mm/extable.c 2011-03-27 14:31:47.000000000 -0400
6128 ++++ linux-2.6.32.46/arch/x86/mm/extable.c 2011-04-17 15:56:46.000000000 -0400
6129 @@ -1,14 +1,71 @@
6130 #include <linux/module.h>
6131 #include <linux/spinlock.h>
6132 @@ -21685,9 +21685,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/extable.c linux-2.6.32.48/arch/x86/mm/ext
6133 extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
6134 extern u32 pnp_bios_is_utter_crap;
6135 pnp_bios_is_utter_crap = 1;
6136 -diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault.c
6137 ---- linux-2.6.32.48/arch/x86/mm/fault.c 2011-11-12 12:44:28.000000000 -0500
6138 -+++ linux-2.6.32.48/arch/x86/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
6139 +diff -urNp linux-2.6.32.46/arch/x86/mm/fault.c linux-2.6.32.46/arch/x86/mm/fault.c
6140 +--- linux-2.6.32.46/arch/x86/mm/fault.c 2011-03-27 14:31:47.000000000 -0400
6141 ++++ linux-2.6.32.46/arch/x86/mm/fault.c 2011-10-06 09:37:08.000000000 -0400
6142 @@ -11,10 +11,19 @@
6143 #include <linux/kprobes.h> /* __kprobes, ... */
6144 #include <linux/mmiotrace.h> /* kmmio_handler, ... */
6145 @@ -22374,9 +22374,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
6146 +
6147 + return ret ? -EFAULT : 0;
6148 +}
6149 -diff -urNp linux-2.6.32.48/arch/x86/mm/gup.c linux-2.6.32.48/arch/x86/mm/gup.c
6150 ---- linux-2.6.32.48/arch/x86/mm/gup.c 2009-12-02 22:51:21.000000000 -0500
6151 -+++ linux-2.6.32.48/arch/x86/mm/gup.c 2011-11-12 12:46:42.000000000 -0500
6152 +diff -urNp linux-2.6.32.46/arch/x86/mm/gup.c linux-2.6.32.46/arch/x86/mm/gup.c
6153 +--- linux-2.6.32.46/arch/x86/mm/gup.c 2011-03-27 14:31:47.000000000 -0400
6154 ++++ linux-2.6.32.46/arch/x86/mm/gup.c 2011-04-17 15:56:46.000000000 -0400
6155 @@ -237,7 +237,7 @@ int __get_user_pages_fast(unsigned long
6156 addr = start;
6157 len = (unsigned long) nr_pages << PAGE_SHIFT;
6158 @@ -22386,9 +22386,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/gup.c linux-2.6.32.48/arch/x86/mm/gup.c
6159 (void __user *)start, len)))
6160 return 0;
6161
6162 -diff -urNp linux-2.6.32.48/arch/x86/mm/highmem_32.c linux-2.6.32.48/arch/x86/mm/highmem_32.c
6163 ---- linux-2.6.32.48/arch/x86/mm/highmem_32.c 2009-12-02 22:51:21.000000000 -0500
6164 -+++ linux-2.6.32.48/arch/x86/mm/highmem_32.c 2011-11-12 12:46:42.000000000 -0500
6165 +diff -urNp linux-2.6.32.46/arch/x86/mm/highmem_32.c linux-2.6.32.46/arch/x86/mm/highmem_32.c
6166 +--- linux-2.6.32.46/arch/x86/mm/highmem_32.c 2011-03-27 14:31:47.000000000 -0400
6167 ++++ linux-2.6.32.46/arch/x86/mm/highmem_32.c 2011-04-17 15:56:46.000000000 -0400
6168 @@ -43,7 +43,10 @@ void *kmap_atomic_prot(struct page *page
6169 idx = type + KM_TYPE_NR*smp_processor_id();
6170 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
6171 @@ -22400,9 +22400,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/highmem_32.c linux-2.6.32.48/arch/x86/mm/
6172
6173 return (void *)vaddr;
6174 }
6175 -diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm/hugetlbpage.c
6176 ---- linux-2.6.32.48/arch/x86/mm/hugetlbpage.c 2009-12-02 22:51:21.000000000 -0500
6177 -+++ linux-2.6.32.48/arch/x86/mm/hugetlbpage.c 2011-11-12 12:46:42.000000000 -0500
6178 +diff -urNp linux-2.6.32.46/arch/x86/mm/hugetlbpage.c linux-2.6.32.46/arch/x86/mm/hugetlbpage.c
6179 +--- linux-2.6.32.46/arch/x86/mm/hugetlbpage.c 2011-03-27 14:31:47.000000000 -0400
6180 ++++ linux-2.6.32.46/arch/x86/mm/hugetlbpage.c 2011-04-17 15:56:46.000000000 -0400
6181 @@ -267,13 +267,20 @@ static unsigned long hugetlb_get_unmappe
6182 struct hstate *h = hstate_file(file);
6183 struct mm_struct *mm = current->mm;
6184 @@ -22610,9 +22610,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
6185 return addr;
6186 }
6187 if (mm->get_unmapped_area == arch_get_unmapped_area)
6188 -diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/init_32.c
6189 ---- linux-2.6.32.48/arch/x86/mm/init_32.c 2009-12-02 22:51:21.000000000 -0500
6190 -+++ linux-2.6.32.48/arch/x86/mm/init_32.c 2011-11-12 12:46:42.000000000 -0500
6191 +diff -urNp linux-2.6.32.46/arch/x86/mm/init_32.c linux-2.6.32.46/arch/x86/mm/init_32.c
6192 +--- linux-2.6.32.46/arch/x86/mm/init_32.c 2011-03-27 14:31:47.000000000 -0400
6193 ++++ linux-2.6.32.46/arch/x86/mm/init_32.c 2011-04-17 15:56:46.000000000 -0400
6194 @@ -72,36 +72,6 @@ static __init void *alloc_low_page(void)
6195 }
6196
6197 @@ -22916,9 +22916,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
6198 set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
6199 printk(KERN_INFO "Write protecting the kernel text: %luk\n",
6200 size >> 10);
6201 -diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/init_64.c
6202 ---- linux-2.6.32.48/arch/x86/mm/init_64.c 2011-11-12 12:44:28.000000000 -0500
6203 -+++ linux-2.6.32.48/arch/x86/mm/init_64.c 2011-11-12 12:46:42.000000000 -0500
6204 +diff -urNp linux-2.6.32.46/arch/x86/mm/init_64.c linux-2.6.32.46/arch/x86/mm/init_64.c
6205 +--- linux-2.6.32.46/arch/x86/mm/init_64.c 2011-04-17 17:00:52.000000000 -0400
6206 ++++ linux-2.6.32.46/arch/x86/mm/init_64.c 2011-04-17 17:03:05.000000000 -0400
6207 @@ -164,7 +164,9 @@ void set_pte_vaddr_pud(pud_t *pud_page,
6208 pmd = fill_pmd(pud, vaddr);
6209 pte = fill_pte(pmd, vaddr);
6210 @@ -22979,9 +22979,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/ini
6211 return "[vdso]";
6212 if (vma == &gate_vma)
6213 return "[vsyscall]";
6214 -diff -urNp linux-2.6.32.48/arch/x86/mm/init.c linux-2.6.32.48/arch/x86/mm/init.c
6215 ---- linux-2.6.32.48/arch/x86/mm/init.c 2009-12-02 22:51:21.000000000 -0500
6216 -+++ linux-2.6.32.48/arch/x86/mm/init.c 2011-11-12 12:46:42.000000000 -0500
6217 +diff -urNp linux-2.6.32.46/arch/x86/mm/init.c linux-2.6.32.46/arch/x86/mm/init.c
6218 +--- linux-2.6.32.46/arch/x86/mm/init.c 2011-04-17 17:00:52.000000000 -0400
6219 ++++ linux-2.6.32.46/arch/x86/mm/init.c 2011-06-07 19:06:09.000000000 -0400
6220 @@ -69,11 +69,7 @@ static void __init find_early_table_spac
6221 * cause a hotspot and fill up ZONE_DMA. The page tables
6222 * need roughly 0.5KB per GB.
6223 @@ -23119,9 +23119,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init.c linux-2.6.32.48/arch/x86/mm/init.c
6224 free_init_pages("unused kernel memory",
6225 (unsigned long)(&__init_begin),
6226 (unsigned long)(&__init_end));
6227 -diff -urNp linux-2.6.32.48/arch/x86/mm/iomap_32.c linux-2.6.32.48/arch/x86/mm/iomap_32.c
6228 ---- linux-2.6.32.48/arch/x86/mm/iomap_32.c 2009-12-02 22:51:21.000000000 -0500
6229 -+++ linux-2.6.32.48/arch/x86/mm/iomap_32.c 2011-11-12 12:46:42.000000000 -0500
6230 +diff -urNp linux-2.6.32.46/arch/x86/mm/iomap_32.c linux-2.6.32.46/arch/x86/mm/iomap_32.c
6231 +--- linux-2.6.32.46/arch/x86/mm/iomap_32.c 2011-03-27 14:31:47.000000000 -0400
6232 ++++ linux-2.6.32.46/arch/x86/mm/iomap_32.c 2011-04-17 15:56:46.000000000 -0400
6233 @@ -65,7 +65,11 @@ void *kmap_atomic_prot_pfn(unsigned long
6234 debug_kmap_atomic(type);
6235 idx = type + KM_TYPE_NR * smp_processor_id();
6236 @@ -23134,9 +23134,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/iomap_32.c linux-2.6.32.48/arch/x86/mm/io
6237 arch_flush_lazy_mmu_mode();
6238
6239 return (void *)vaddr;
6240 -diff -urNp linux-2.6.32.48/arch/x86/mm/ioremap.c linux-2.6.32.48/arch/x86/mm/ioremap.c
6241 ---- linux-2.6.32.48/arch/x86/mm/ioremap.c 2009-12-02 22:51:21.000000000 -0500
6242 -+++ linux-2.6.32.48/arch/x86/mm/ioremap.c 2011-11-12 12:46:42.000000000 -0500
6243 +diff -urNp linux-2.6.32.46/arch/x86/mm/ioremap.c linux-2.6.32.46/arch/x86/mm/ioremap.c
6244 +--- linux-2.6.32.46/arch/x86/mm/ioremap.c 2011-03-27 14:31:47.000000000 -0400
6245 ++++ linux-2.6.32.46/arch/x86/mm/ioremap.c 2011-04-17 15:56:46.000000000 -0400
6246 @@ -41,8 +41,8 @@ int page_is_ram(unsigned long pagenr)
6247 * Second special case: Some BIOSen report the PC BIOS
6248 * area (640->1Mb) as ram even though it is not.
6249 @@ -23183,9 +23183,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/ioremap.c linux-2.6.32.48/arch/x86/mm/ior
6250
6251 /*
6252 * The boot-ioremap range spans multiple pmds, for which
6253 -diff -urNp linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c
6254 ---- linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c 2009-12-02 22:51:21.000000000 -0500
6255 -+++ linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c 2011-11-12 12:46:42.000000000 -0500
6256 +diff -urNp linux-2.6.32.46/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.32.46/arch/x86/mm/kmemcheck/kmemcheck.c
6257 +--- linux-2.6.32.46/arch/x86/mm/kmemcheck/kmemcheck.c 2011-03-27 14:31:47.000000000 -0400
6258 ++++ linux-2.6.32.46/arch/x86/mm/kmemcheck/kmemcheck.c 2011-04-17 15:56:46.000000000 -0400
6259 @@ -622,9 +622,9 @@ bool kmemcheck_fault(struct pt_regs *reg
6260 * memory (e.g. tracked pages)? For now, we need this to avoid
6261 * invoking kmemcheck for PnP BIOS calls.
6262 @@ -23198,9 +23198,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.32.48/arc
6263 return false;
6264
6265 pte = kmemcheck_pte_lookup(address);
6266 -diff -urNp linux-2.6.32.48/arch/x86/mm/mmap.c linux-2.6.32.48/arch/x86/mm/mmap.c
6267 ---- linux-2.6.32.48/arch/x86/mm/mmap.c 2009-12-02 22:51:21.000000000 -0500
6268 -+++ linux-2.6.32.48/arch/x86/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
6269 +diff -urNp linux-2.6.32.46/arch/x86/mm/mmap.c linux-2.6.32.46/arch/x86/mm/mmap.c
6270 +--- linux-2.6.32.46/arch/x86/mm/mmap.c 2011-03-27 14:31:47.000000000 -0400
6271 ++++ linux-2.6.32.46/arch/x86/mm/mmap.c 2011-04-17 15:56:46.000000000 -0400
6272 @@ -49,7 +49,7 @@ static unsigned int stack_maxrandom_size
6273 * Leave an at least ~128 MB hole with possible stack randomization.
6274 */
6275 @@ -23282,9 +23282,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/mmap.c linux-2.6.32.48/arch/x86/mm/mmap.c
6276 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
6277 mm->unmap_area = arch_unmap_area_topdown;
6278 }
6279 -diff -urNp linux-2.6.32.48/arch/x86/mm/mmio-mod.c linux-2.6.32.48/arch/x86/mm/mmio-mod.c
6280 ---- linux-2.6.32.48/arch/x86/mm/mmio-mod.c 2009-12-02 22:51:21.000000000 -0500
6281 -+++ linux-2.6.32.48/arch/x86/mm/mmio-mod.c 2011-11-12 12:46:42.000000000 -0500
6282 +diff -urNp linux-2.6.32.46/arch/x86/mm/mmio-mod.c linux-2.6.32.46/arch/x86/mm/mmio-mod.c
6283 +--- linux-2.6.32.46/arch/x86/mm/mmio-mod.c 2011-03-27 14:31:47.000000000 -0400
6284 ++++ linux-2.6.32.46/arch/x86/mm/mmio-mod.c 2011-07-06 19:53:33.000000000 -0400
6285 @@ -193,7 +193,7 @@ static void pre(struct kmmio_probe *p, s
6286 break;
6287 default:
6288 @@ -23312,9 +23312,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/mmio-mod.c linux-2.6.32.48/arch/x86/mm/mm
6289 };
6290 map.map_id = trace->id;
6291
6292 -diff -urNp linux-2.6.32.48/arch/x86/mm/numa_32.c linux-2.6.32.48/arch/x86/mm/numa_32.c
6293 ---- linux-2.6.32.48/arch/x86/mm/numa_32.c 2009-12-02 22:51:21.000000000 -0500
6294 -+++ linux-2.6.32.48/arch/x86/mm/numa_32.c 2011-11-12 12:46:42.000000000 -0500
6295 +diff -urNp linux-2.6.32.46/arch/x86/mm/numa_32.c linux-2.6.32.46/arch/x86/mm/numa_32.c
6296 +--- linux-2.6.32.46/arch/x86/mm/numa_32.c 2011-03-27 14:31:47.000000000 -0400
6297 ++++ linux-2.6.32.46/arch/x86/mm/numa_32.c 2011-04-17 15:56:46.000000000 -0400
6298 @@ -98,7 +98,6 @@ unsigned long node_memmap_size_bytes(int
6299 }
6300 #endif
6301 @@ -23323,9 +23323,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/numa_32.c linux-2.6.32.48/arch/x86/mm/num
6302 extern unsigned long highend_pfn, highstart_pfn;
6303
6304 #define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE)
6305 -diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr.c linux-2.6.32.48/arch/x86/mm/pageattr.c
6306 ---- linux-2.6.32.48/arch/x86/mm/pageattr.c 2009-12-02 22:51:21.000000000 -0500
6307 -+++ linux-2.6.32.48/arch/x86/mm/pageattr.c 2011-11-12 12:46:42.000000000 -0500
6308 +diff -urNp linux-2.6.32.46/arch/x86/mm/pageattr.c linux-2.6.32.46/arch/x86/mm/pageattr.c
6309 +--- linux-2.6.32.46/arch/x86/mm/pageattr.c 2011-03-27 14:31:47.000000000 -0400
6310 ++++ linux-2.6.32.46/arch/x86/mm/pageattr.c 2011-04-17 15:56:46.000000000 -0400
6311 @@ -261,16 +261,17 @@ static inline pgprot_t static_protection
6312 * PCI BIOS based config access (CONFIG_PCI_GOBIOS) support.
6313 */
6314 @@ -23402,9 +23402,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr.c linux-2.6.32.48/arch/x86/mm/pa
6315 }
6316
6317 static int
6318 -diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr-test.c linux-2.6.32.48/arch/x86/mm/pageattr-test.c
6319 ---- linux-2.6.32.48/arch/x86/mm/pageattr-test.c 2009-12-02 22:51:21.000000000 -0500
6320 -+++ linux-2.6.32.48/arch/x86/mm/pageattr-test.c 2011-11-12 12:46:42.000000000 -0500
6321 +diff -urNp linux-2.6.32.46/arch/x86/mm/pageattr-test.c linux-2.6.32.46/arch/x86/mm/pageattr-test.c
6322 +--- linux-2.6.32.46/arch/x86/mm/pageattr-test.c 2011-03-27 14:31:47.000000000 -0400
6323 ++++ linux-2.6.32.46/arch/x86/mm/pageattr-test.c 2011-04-17 15:56:46.000000000 -0400
6324 @@ -36,7 +36,7 @@ enum {
6325
6326 static int pte_testbit(pte_t pte)
6327 @@ -23414,9 +23414,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr-test.c linux-2.6.32.48/arch/x86/
6328 }
6329
6330 struct split_state {
6331 -diff -urNp linux-2.6.32.48/arch/x86/mm/pat.c linux-2.6.32.48/arch/x86/mm/pat.c
6332 ---- linux-2.6.32.48/arch/x86/mm/pat.c 2009-12-02 22:51:21.000000000 -0500
6333 -+++ linux-2.6.32.48/arch/x86/mm/pat.c 2011-11-12 12:46:42.000000000 -0500
6334 +diff -urNp linux-2.6.32.46/arch/x86/mm/pat.c linux-2.6.32.46/arch/x86/mm/pat.c
6335 +--- linux-2.6.32.46/arch/x86/mm/pat.c 2011-03-27 14:31:47.000000000 -0400
6336 ++++ linux-2.6.32.46/arch/x86/mm/pat.c 2011-04-17 15:56:46.000000000 -0400
6337 @@ -258,7 +258,7 @@ chk_conflict(struct memtype *new, struct
6338
6339 conflict:
6340 @@ -23464,9 +23464,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pat.c linux-2.6.32.48/arch/x86/mm/pat.c
6341 cattr_name(want_flags),
6342 (unsigned long long)paddr,
6343 (unsigned long long)(paddr + size),
6344 -diff -urNp linux-2.6.32.48/arch/x86/mm/pf_in.c linux-2.6.32.48/arch/x86/mm/pf_in.c
6345 ---- linux-2.6.32.48/arch/x86/mm/pf_in.c 2009-12-02 22:51:21.000000000 -0500
6346 -+++ linux-2.6.32.48/arch/x86/mm/pf_in.c 2011-11-12 12:46:42.000000000 -0500
6347 +diff -urNp linux-2.6.32.46/arch/x86/mm/pf_in.c linux-2.6.32.46/arch/x86/mm/pf_in.c
6348 +--- linux-2.6.32.46/arch/x86/mm/pf_in.c 2011-03-27 14:31:47.000000000 -0400
6349 ++++ linux-2.6.32.46/arch/x86/mm/pf_in.c 2011-07-06 19:53:33.000000000 -0400
6350 @@ -148,7 +148,7 @@ enum reason_type get_ins_type(unsigned l
6351 int i;
6352 enum reason_type rv = OTHERS;
6353 @@ -23512,9 +23512,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pf_in.c linux-2.6.32.48/arch/x86/mm/pf_in
6354 p += skip_prefix(p, &prf);
6355 p += get_opcode(p, &opcode);
6356 for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
6357 -diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable_32.c linux-2.6.32.48/arch/x86/mm/pgtable_32.c
6358 ---- linux-2.6.32.48/arch/x86/mm/pgtable_32.c 2009-12-02 22:51:21.000000000 -0500
6359 -+++ linux-2.6.32.48/arch/x86/mm/pgtable_32.c 2011-11-12 12:46:42.000000000 -0500
6360 +diff -urNp linux-2.6.32.46/arch/x86/mm/pgtable_32.c linux-2.6.32.46/arch/x86/mm/pgtable_32.c
6361 +--- linux-2.6.32.46/arch/x86/mm/pgtable_32.c 2011-03-27 14:31:47.000000000 -0400
6362 ++++ linux-2.6.32.46/arch/x86/mm/pgtable_32.c 2011-04-17 15:56:46.000000000 -0400
6363 @@ -49,10 +49,13 @@ void set_pte_vaddr(unsigned long vaddr,
6364 return;
6365 }
6366 @@ -23529,9 +23529,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable_32.c linux-2.6.32.48/arch/x86/mm/
6367
6368 /*
6369 * It's enough to flush this one mapping.
6370 -diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgtable.c
6371 ---- linux-2.6.32.48/arch/x86/mm/pgtable.c 2011-11-12 12:44:28.000000000 -0500
6372 -+++ linux-2.6.32.48/arch/x86/mm/pgtable.c 2011-11-12 12:46:42.000000000 -0500
6373 +diff -urNp linux-2.6.32.46/arch/x86/mm/pgtable.c linux-2.6.32.46/arch/x86/mm/pgtable.c
6374 +--- linux-2.6.32.46/arch/x86/mm/pgtable.c 2011-03-27 14:31:47.000000000 -0400
6375 ++++ linux-2.6.32.46/arch/x86/mm/pgtable.c 2011-05-11 18:25:15.000000000 -0400
6376 @@ -83,9 +83,52 @@ static inline void pgd_list_del(pgd_t *p
6377 list_del(&page->lru);
6378 }
6379 @@ -23778,9 +23778,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
6380 pgd_dtor(pgd);
6381 paravirt_pgd_free(mm, pgd);
6382 free_page((unsigned long)pgd);
6383 -diff -urNp linux-2.6.32.48/arch/x86/mm/setup_nx.c linux-2.6.32.48/arch/x86/mm/setup_nx.c
6384 ---- linux-2.6.32.48/arch/x86/mm/setup_nx.c 2009-12-02 22:51:21.000000000 -0500
6385 -+++ linux-2.6.32.48/arch/x86/mm/setup_nx.c 2011-11-12 12:46:42.000000000 -0500
6386 +diff -urNp linux-2.6.32.46/arch/x86/mm/setup_nx.c linux-2.6.32.46/arch/x86/mm/setup_nx.c
6387 +--- linux-2.6.32.46/arch/x86/mm/setup_nx.c 2011-03-27 14:31:47.000000000 -0400
6388 ++++ linux-2.6.32.46/arch/x86/mm/setup_nx.c 2011-04-17 15:56:46.000000000 -0400
6389 @@ -4,11 +4,10 @@
6390
6391 #include <asm/pgtable.h>
6392 @@ -23846,9 +23846,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/setup_nx.c linux-2.6.32.48/arch/x86/mm/se
6393 __supported_pte_mask &= ~_PAGE_NX;
6394 }
6395 #endif
6396 -diff -urNp linux-2.6.32.48/arch/x86/mm/tlb.c linux-2.6.32.48/arch/x86/mm/tlb.c
6397 ---- linux-2.6.32.48/arch/x86/mm/tlb.c 2009-12-02 22:51:21.000000000 -0500
6398 -+++ linux-2.6.32.48/arch/x86/mm/tlb.c 2011-11-12 12:46:42.000000000 -0500
6399 +diff -urNp linux-2.6.32.46/arch/x86/mm/tlb.c linux-2.6.32.46/arch/x86/mm/tlb.c
6400 +--- linux-2.6.32.46/arch/x86/mm/tlb.c 2011-03-27 14:31:47.000000000 -0400
6401 ++++ linux-2.6.32.46/arch/x86/mm/tlb.c 2011-04-23 12:56:10.000000000 -0400
6402 @@ -61,7 +61,11 @@ void leave_mm(int cpu)
6403 BUG();
6404 cpumask_clear_cpu(cpu,
6405 @@ -23861,9 +23861,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/tlb.c linux-2.6.32.48/arch/x86/mm/tlb.c
6406 }
6407 EXPORT_SYMBOL_GPL(leave_mm);
6408
6409 -diff -urNp linux-2.6.32.48/arch/x86/oprofile/backtrace.c linux-2.6.32.48/arch/x86/oprofile/backtrace.c
6410 ---- linux-2.6.32.48/arch/x86/oprofile/backtrace.c 2009-12-02 22:51:21.000000000 -0500
6411 -+++ linux-2.6.32.48/arch/x86/oprofile/backtrace.c 2011-11-12 12:46:42.000000000 -0500
6412 +diff -urNp linux-2.6.32.46/arch/x86/oprofile/backtrace.c linux-2.6.32.46/arch/x86/oprofile/backtrace.c
6413 +--- linux-2.6.32.46/arch/x86/oprofile/backtrace.c 2011-03-27 14:31:47.000000000 -0400
6414 ++++ linux-2.6.32.46/arch/x86/oprofile/backtrace.c 2011-04-17 15:56:46.000000000 -0400
6415 @@ -57,7 +57,7 @@ static struct frame_head *dump_user_back
6416 struct frame_head bufhead[2];
6417
6418 @@ -23882,9 +23882,9 @@ diff -urNp linux-2.6.32.48/arch/x86/oprofile/backtrace.c linux-2.6.32.48/arch/x8
6419 unsigned long stack = kernel_stack_pointer(regs);
6420 if (depth)
6421 dump_trace(NULL, regs, (unsigned long *)stack, 0,
6422 -diff -urNp linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c
6423 ---- linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c 2011-11-12 12:44:28.000000000 -0500
6424 -+++ linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c 2011-11-12 12:46:42.000000000 -0500
6425 +diff -urNp linux-2.6.32.46/arch/x86/oprofile/op_model_p4.c linux-2.6.32.46/arch/x86/oprofile/op_model_p4.c
6426 +--- linux-2.6.32.46/arch/x86/oprofile/op_model_p4.c 2011-03-27 14:31:47.000000000 -0400
6427 ++++ linux-2.6.32.46/arch/x86/oprofile/op_model_p4.c 2011-04-17 15:56:46.000000000 -0400
6428 @@ -50,7 +50,7 @@ static inline void setup_num_counters(vo
6429 #endif
6430 }
6431 @@ -23894,9 +23894,9 @@ diff -urNp linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c linux-2.6.32.48/arch/
6432 {
6433 #ifdef CONFIG_SMP
6434 return smp_num_siblings == 2 ? 2 : 1;
6435 -diff -urNp linux-2.6.32.48/arch/x86/pci/common.c linux-2.6.32.48/arch/x86/pci/common.c
6436 ---- linux-2.6.32.48/arch/x86/pci/common.c 2009-12-02 22:51:21.000000000 -0500
6437 -+++ linux-2.6.32.48/arch/x86/pci/common.c 2011-11-12 12:46:42.000000000 -0500
6438 +diff -urNp linux-2.6.32.46/arch/x86/pci/common.c linux-2.6.32.46/arch/x86/pci/common.c
6439 +--- linux-2.6.32.46/arch/x86/pci/common.c 2011-03-27 14:31:47.000000000 -0400
6440 ++++ linux-2.6.32.46/arch/x86/pci/common.c 2011-04-23 12:56:10.000000000 -0400
6441 @@ -31,8 +31,8 @@ int noioapicreroute = 1;
6442 int pcibios_last_bus = -1;
6443 unsigned long pirq_table_addr;
6444 @@ -23908,9 +23908,9 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/common.c linux-2.6.32.48/arch/x86/pci/co
6445
6446 int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn,
6447 int reg, int len, u32 *val)
6448 -diff -urNp linux-2.6.32.48/arch/x86/pci/direct.c linux-2.6.32.48/arch/x86/pci/direct.c
6449 ---- linux-2.6.32.48/arch/x86/pci/direct.c 2009-12-02 22:51:21.000000000 -0500
6450 -+++ linux-2.6.32.48/arch/x86/pci/direct.c 2011-11-12 12:46:42.000000000 -0500
6451 +diff -urNp linux-2.6.32.46/arch/x86/pci/direct.c linux-2.6.32.46/arch/x86/pci/direct.c
6452 +--- linux-2.6.32.46/arch/x86/pci/direct.c 2011-03-27 14:31:47.000000000 -0400
6453 ++++ linux-2.6.32.46/arch/x86/pci/direct.c 2011-04-17 15:56:46.000000000 -0400
6454 @@ -79,7 +79,7 @@ static int pci_conf1_write(unsigned int
6455
6456 #undef PCI_CONF1_ADDRESS
6457 @@ -23938,9 +23938,9 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/direct.c linux-2.6.32.48/arch/x86/pci/di
6458 {
6459 u32 x = 0;
6460 int year, devfn;
6461 -diff -urNp linux-2.6.32.48/arch/x86/pci/mmconfig_32.c linux-2.6.32.48/arch/x86/pci/mmconfig_32.c
6462 ---- linux-2.6.32.48/arch/x86/pci/mmconfig_32.c 2009-12-02 22:51:21.000000000 -0500
6463 -+++ linux-2.6.32.48/arch/x86/pci/mmconfig_32.c 2011-11-12 12:46:42.000000000 -0500
6464 +diff -urNp linux-2.6.32.46/arch/x86/pci/mmconfig_32.c linux-2.6.32.46/arch/x86/pci/mmconfig_32.c
6465 +--- linux-2.6.32.46/arch/x86/pci/mmconfig_32.c 2011-03-27 14:31:47.000000000 -0400
6466 ++++ linux-2.6.32.46/arch/x86/pci/mmconfig_32.c 2011-04-17 15:56:46.000000000 -0400
6467 @@ -125,7 +125,7 @@ static int pci_mmcfg_write(unsigned int
6468 return 0;
6469 }
6470 @@ -23950,9 +23950,9 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/mmconfig_32.c linux-2.6.32.48/arch/x86/p
6471 .read = pci_mmcfg_read,
6472 .write = pci_mmcfg_write,
6473 };
6474 -diff -urNp linux-2.6.32.48/arch/x86/pci/mmconfig_64.c linux-2.6.32.48/arch/x86/pci/mmconfig_64.c
6475 ---- linux-2.6.32.48/arch/x86/pci/mmconfig_64.c 2009-12-02 22:51:21.000000000 -0500
6476 -+++ linux-2.6.32.48/arch/x86/pci/mmconfig_64.c 2011-11-12 12:46:42.000000000 -0500
6477 +diff -urNp linux-2.6.32.46/arch/x86/pci/mmconfig_64.c linux-2.6.32.46/arch/x86/pci/mmconfig_64.c
6478 +--- linux-2.6.32.46/arch/x86/pci/mmconfig_64.c 2011-03-27 14:31:47.000000000 -0400
6479 ++++ linux-2.6.32.46/arch/x86/pci/mmconfig_64.c 2011-04-17 15:56:46.000000000 -0400
6480 @@ -104,7 +104,7 @@ static int pci_mmcfg_write(unsigned int
6481 return 0;
6482 }
6483 @@ -23962,9 +23962,9 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/mmconfig_64.c linux-2.6.32.48/arch/x86/p
6484 .read = pci_mmcfg_read,
6485 .write = pci_mmcfg_write,
6486 };
6487 -diff -urNp linux-2.6.32.48/arch/x86/pci/numaq_32.c linux-2.6.32.48/arch/x86/pci/numaq_32.c
6488 ---- linux-2.6.32.48/arch/x86/pci/numaq_32.c 2009-12-02 22:51:21.000000000 -0500
6489 -+++ linux-2.6.32.48/arch/x86/pci/numaq_32.c 2011-11-12 12:46:42.000000000 -0500
6490 +diff -urNp linux-2.6.32.46/arch/x86/pci/numaq_32.c linux-2.6.32.46/arch/x86/pci/numaq_32.c
6491 +--- linux-2.6.32.46/arch/x86/pci/numaq_32.c 2011-03-27 14:31:47.000000000 -0400
6492 ++++ linux-2.6.32.46/arch/x86/pci/numaq_32.c 2011-04-17 15:56:46.000000000 -0400
6493 @@ -112,7 +112,7 @@ static int pci_conf1_mq_write(unsigned i
6494
6495 #undef PCI_CONF1_MQ_ADDRESS
6496 @@ -23974,9 +23974,9 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/numaq_32.c linux-2.6.32.48/arch/x86/pci/
6497 .read = pci_conf1_mq_read,
6498 .write = pci_conf1_mq_write
6499 };
6500 -diff -urNp linux-2.6.32.48/arch/x86/pci/olpc.c linux-2.6.32.48/arch/x86/pci/olpc.c
6501 ---- linux-2.6.32.48/arch/x86/pci/olpc.c 2009-12-02 22:51:21.000000000 -0500
6502 -+++ linux-2.6.32.48/arch/x86/pci/olpc.c 2011-11-12 12:46:42.000000000 -0500
6503 +diff -urNp linux-2.6.32.46/arch/x86/pci/olpc.c linux-2.6.32.46/arch/x86/pci/olpc.c
6504 +--- linux-2.6.32.46/arch/x86/pci/olpc.c 2011-03-27 14:31:47.000000000 -0400
6505 ++++ linux-2.6.32.46/arch/x86/pci/olpc.c 2011-04-17 15:56:46.000000000 -0400
6506 @@ -297,7 +297,7 @@ static int pci_olpc_write(unsigned int s
6507 return 0;
6508 }
6509 @@ -23986,9 +23986,9 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/olpc.c linux-2.6.32.48/arch/x86/pci/olpc
6510 .read = pci_olpc_read,
6511 .write = pci_olpc_write,
6512 };
6513 -diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pcbios.c
6514 ---- linux-2.6.32.48/arch/x86/pci/pcbios.c 2009-12-02 22:51:21.000000000 -0500
6515 -+++ linux-2.6.32.48/arch/x86/pci/pcbios.c 2011-11-12 12:46:42.000000000 -0500
6516 +diff -urNp linux-2.6.32.46/arch/x86/pci/pcbios.c linux-2.6.32.46/arch/x86/pci/pcbios.c
6517 +--- linux-2.6.32.46/arch/x86/pci/pcbios.c 2011-03-27 14:31:47.000000000 -0400
6518 ++++ linux-2.6.32.46/arch/x86/pci/pcbios.c 2011-04-17 15:56:46.000000000 -0400
6519 @@ -56,50 +56,93 @@ union bios32 {
6520 static struct {
6521 unsigned long address;
6522 @@ -24311,9 +24311,9 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
6523 return !(ret & 0xff00);
6524 }
6525 EXPORT_SYMBOL(pcibios_set_irq_routing);
6526 -diff -urNp linux-2.6.32.48/arch/x86/power/cpu.c linux-2.6.32.48/arch/x86/power/cpu.c
6527 ---- linux-2.6.32.48/arch/x86/power/cpu.c 2011-11-12 12:44:28.000000000 -0500
6528 -+++ linux-2.6.32.48/arch/x86/power/cpu.c 2011-11-12 12:46:42.000000000 -0500
6529 +diff -urNp linux-2.6.32.46/arch/x86/power/cpu.c linux-2.6.32.46/arch/x86/power/cpu.c
6530 +--- linux-2.6.32.46/arch/x86/power/cpu.c 2011-03-27 14:31:47.000000000 -0400
6531 ++++ linux-2.6.32.46/arch/x86/power/cpu.c 2011-04-17 15:56:46.000000000 -0400
6532 @@ -129,7 +129,7 @@ static void do_fpu_end(void)
6533 static void fix_processor_context(void)
6534 {
6535 @@ -24333,9 +24333,9 @@ diff -urNp linux-2.6.32.48/arch/x86/power/cpu.c linux-2.6.32.48/arch/x86/power/c
6536
6537 syscall_init(); /* This sets MSR_*STAR and related */
6538 #endif
6539 -diff -urNp linux-2.6.32.48/arch/x86/vdso/Makefile linux-2.6.32.48/arch/x86/vdso/Makefile
6540 ---- linux-2.6.32.48/arch/x86/vdso/Makefile 2011-11-12 12:44:28.000000000 -0500
6541 -+++ linux-2.6.32.48/arch/x86/vdso/Makefile 2011-11-12 12:46:42.000000000 -0500
6542 +diff -urNp linux-2.6.32.46/arch/x86/vdso/Makefile linux-2.6.32.46/arch/x86/vdso/Makefile
6543 +--- linux-2.6.32.46/arch/x86/vdso/Makefile 2011-03-27 14:31:47.000000000 -0400
6544 ++++ linux-2.6.32.46/arch/x86/vdso/Makefile 2011-04-17 15:56:46.000000000 -0400
6545 @@ -122,7 +122,7 @@ quiet_cmd_vdso = VDSO $@
6546 $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
6547 -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^)
6548 @@ -24345,9 +24345,9 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/Makefile linux-2.6.32.48/arch/x86/vdso/
6549 GCOV_PROFILE := n
6550
6551 #
6552 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c
6553 ---- linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c 2009-12-02 22:51:21.000000000 -0500
6554 -+++ linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c 2011-11-12 12:46:42.000000000 -0500
6555 +diff -urNp linux-2.6.32.46/arch/x86/vdso/vclock_gettime.c linux-2.6.32.46/arch/x86/vdso/vclock_gettime.c
6556 +--- linux-2.6.32.46/arch/x86/vdso/vclock_gettime.c 2011-03-27 14:31:47.000000000 -0400
6557 ++++ linux-2.6.32.46/arch/x86/vdso/vclock_gettime.c 2011-04-17 15:56:46.000000000 -0400
6558 @@ -22,24 +22,48 @@
6559 #include <asm/hpet.h>
6560 #include <asm/unistd.h>
6561 @@ -24446,9 +24446,9 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c linux-2.6.32.48/arch/x
6562 }
6563 int gettimeofday(struct timeval *, struct timezone *)
6564 __attribute__((weak, alias("__vdso_gettimeofday")));
6565 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c
6566 ---- linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c 2009-12-02 22:51:21.000000000 -0500
6567 -+++ linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c 2011-11-12 12:46:42.000000000 -0500
6568 +diff -urNp linux-2.6.32.46/arch/x86/vdso/vdso32-setup.c linux-2.6.32.46/arch/x86/vdso/vdso32-setup.c
6569 +--- linux-2.6.32.46/arch/x86/vdso/vdso32-setup.c 2011-03-27 14:31:47.000000000 -0400
6570 ++++ linux-2.6.32.46/arch/x86/vdso/vdso32-setup.c 2011-04-23 12:56:10.000000000 -0400
6571 @@ -25,6 +25,7 @@
6572 #include <asm/tlbflush.h>
6573 #include <asm/vdso.h>
6574 @@ -24531,9 +24531,9 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c linux-2.6.32.48/arch/x86
6575 return &gate_vma;
6576 return NULL;
6577 }
6578 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vdso.lds.S linux-2.6.32.48/arch/x86/vdso/vdso.lds.S
6579 ---- linux-2.6.32.48/arch/x86/vdso/vdso.lds.S 2009-12-02 22:51:21.000000000 -0500
6580 -+++ linux-2.6.32.48/arch/x86/vdso/vdso.lds.S 2011-11-12 12:46:42.000000000 -0500
6581 +diff -urNp linux-2.6.32.46/arch/x86/vdso/vdso.lds.S linux-2.6.32.46/arch/x86/vdso/vdso.lds.S
6582 +--- linux-2.6.32.46/arch/x86/vdso/vdso.lds.S 2011-03-27 14:31:47.000000000 -0400
6583 ++++ linux-2.6.32.46/arch/x86/vdso/vdso.lds.S 2011-06-06 17:35:35.000000000 -0400
6584 @@ -35,3 +35,9 @@ VDSO64_PRELINK = VDSO_PRELINK;
6585 #define VEXTERN(x) VDSO64_ ## x = vdso_ ## x;
6586 #include "vextern.h"
6587 @@ -24544,9 +24544,9 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vdso.lds.S linux-2.6.32.48/arch/x86/vds
6588 +VEXTERN(fallback_time)
6589 +VEXTERN(getcpu)
6590 +#undef VEXTERN
6591 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vextern.h linux-2.6.32.48/arch/x86/vdso/vextern.h
6592 ---- linux-2.6.32.48/arch/x86/vdso/vextern.h 2009-12-02 22:51:21.000000000 -0500
6593 -+++ linux-2.6.32.48/arch/x86/vdso/vextern.h 2011-11-12 12:46:42.000000000 -0500
6594 +diff -urNp linux-2.6.32.46/arch/x86/vdso/vextern.h linux-2.6.32.46/arch/x86/vdso/vextern.h
6595 +--- linux-2.6.32.46/arch/x86/vdso/vextern.h 2011-03-27 14:31:47.000000000 -0400
6596 ++++ linux-2.6.32.46/arch/x86/vdso/vextern.h 2011-04-17 15:56:46.000000000 -0400
6597 @@ -11,6 +11,5 @@
6598 put into vextern.h and be referenced as a pointer with vdso prefix.
6599 The main kernel later fills in the values. */
6600 @@ -24554,9 +24554,9 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vextern.h linux-2.6.32.48/arch/x86/vdso
6601 -VEXTERN(jiffies)
6602 VEXTERN(vgetcpu_mode)
6603 VEXTERN(vsyscall_gtod_data)
6604 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vma.c linux-2.6.32.48/arch/x86/vdso/vma.c
6605 ---- linux-2.6.32.48/arch/x86/vdso/vma.c 2009-12-02 22:51:21.000000000 -0500
6606 -+++ linux-2.6.32.48/arch/x86/vdso/vma.c 2011-11-12 12:46:42.000000000 -0500
6607 +diff -urNp linux-2.6.32.46/arch/x86/vdso/vma.c linux-2.6.32.46/arch/x86/vdso/vma.c
6608 +--- linux-2.6.32.46/arch/x86/vdso/vma.c 2011-03-27 14:31:47.000000000 -0400
6609 ++++ linux-2.6.32.46/arch/x86/vdso/vma.c 2011-08-23 20:24:19.000000000 -0400
6610 @@ -17,8 +17,6 @@
6611 #include "vextern.h" /* Just for VMAGIC. */
6612 #undef VEXTERN
6613 @@ -24644,9 +24644,9 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vma.c linux-2.6.32.48/arch/x86/vdso/vma
6614 - return 0;
6615 -}
6616 -__setup("vdso=", vdso_setup);
6617 -diff -urNp linux-2.6.32.48/arch/x86/xen/enlighten.c linux-2.6.32.48/arch/x86/xen/enlighten.c
6618 ---- linux-2.6.32.48/arch/x86/xen/enlighten.c 2011-11-12 12:44:28.000000000 -0500
6619 -+++ linux-2.6.32.48/arch/x86/xen/enlighten.c 2011-11-12 12:46:42.000000000 -0500
6620 +diff -urNp linux-2.6.32.46/arch/x86/xen/enlighten.c linux-2.6.32.46/arch/x86/xen/enlighten.c
6621 +--- linux-2.6.32.46/arch/x86/xen/enlighten.c 2011-03-27 14:31:47.000000000 -0400
6622 ++++ linux-2.6.32.46/arch/x86/xen/enlighten.c 2011-05-22 23:02:03.000000000 -0400
6623 @@ -71,8 +71,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
6624
6625 struct shared_info xen_dummy_shared_info;
6626 @@ -24732,9 +24732,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/enlighten.c linux-2.6.32.48/arch/x86/xen
6627 xen_smp_init();
6628
6629 pgd = (pgd_t *)xen_start_info->pt_base;
6630 -diff -urNp linux-2.6.32.48/arch/x86/xen/mmu.c linux-2.6.32.48/arch/x86/xen/mmu.c
6631 ---- linux-2.6.32.48/arch/x86/xen/mmu.c 2011-11-12 12:44:28.000000000 -0500
6632 -+++ linux-2.6.32.48/arch/x86/xen/mmu.c 2011-11-12 12:46:42.000000000 -0500
6633 +diff -urNp linux-2.6.32.46/arch/x86/xen/mmu.c linux-2.6.32.46/arch/x86/xen/mmu.c
6634 +--- linux-2.6.32.46/arch/x86/xen/mmu.c 2011-07-13 17:23:04.000000000 -0400
6635 ++++ linux-2.6.32.46/arch/x86/xen/mmu.c 2011-08-24 18:35:52.000000000 -0400
6636 @@ -1719,6 +1719,8 @@ __init pgd_t *xen_setup_kernel_pagetable
6637 convert_pfn_mfn(init_level4_pgt);
6638 convert_pfn_mfn(level3_ident_pgt);
6639 @@ -24771,10 +24771,10 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/mmu.c linux-2.6.32.48/arch/x86/xen/mmu.c
6640
6641 .alloc_pud = xen_alloc_pmd_init,
6642 .release_pud = xen_release_pmd_init,
6643 -diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
6644 ---- linux-2.6.32.48/arch/x86/xen/smp.c 2011-11-12 12:44:28.000000000 -0500
6645 -+++ linux-2.6.32.48/arch/x86/xen/smp.c 2011-11-12 12:46:42.000000000 -0500
6646 -@@ -168,11 +168,6 @@ static void __init xen_smp_prepare_boot_
6647 +diff -urNp linux-2.6.32.46/arch/x86/xen/smp.c linux-2.6.32.46/arch/x86/xen/smp.c
6648 +--- linux-2.6.32.46/arch/x86/xen/smp.c 2011-03-27 14:31:47.000000000 -0400
6649 ++++ linux-2.6.32.46/arch/x86/xen/smp.c 2011-05-11 18:25:15.000000000 -0400
6650 +@@ -167,11 +167,6 @@ static void __init xen_smp_prepare_boot_
6651 {
6652 BUG_ON(smp_processor_id() != 0);
6653 native_smp_prepare_boot_cpu();
6654 @@ -24786,7 +24786,7 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
6655 xen_setup_vcpu_info_placement();
6656 }
6657
6658 -@@ -241,12 +236,12 @@ cpu_initialize_context(unsigned int cpu,
6659 +@@ -231,12 +226,12 @@ cpu_initialize_context(unsigned int cpu,
6660 gdt = get_cpu_gdt_table(cpu);
6661
6662 ctxt->flags = VGCF_IN_KERNEL;
6663 @@ -24802,7 +24802,7 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
6664 #else
6665 ctxt->gs_base_kernel = per_cpu_offset(cpu);
6666 #endif
6667 -@@ -297,13 +292,12 @@ static int __cpuinit xen_cpu_up(unsigned
6668 +@@ -287,13 +282,12 @@ static int __cpuinit xen_cpu_up(unsigned
6669 int rc;
6670
6671 per_cpu(current_task, cpu) = idle;
6672 @@ -24818,9 +24818,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
6673 #endif
6674 xen_setup_runstate_info(cpu);
6675 xen_setup_timer(cpu);
6676 -diff -urNp linux-2.6.32.48/arch/x86/xen/xen-asm_32.S linux-2.6.32.48/arch/x86/xen/xen-asm_32.S
6677 ---- linux-2.6.32.48/arch/x86/xen/xen-asm_32.S 2011-11-12 12:44:28.000000000 -0500
6678 -+++ linux-2.6.32.48/arch/x86/xen/xen-asm_32.S 2011-11-12 12:46:42.000000000 -0500
6679 +diff -urNp linux-2.6.32.46/arch/x86/xen/xen-asm_32.S linux-2.6.32.46/arch/x86/xen/xen-asm_32.S
6680 +--- linux-2.6.32.46/arch/x86/xen/xen-asm_32.S 2011-03-27 14:31:47.000000000 -0400
6681 ++++ linux-2.6.32.46/arch/x86/xen/xen-asm_32.S 2011-04-22 19:13:13.000000000 -0400
6682 @@ -83,14 +83,14 @@ ENTRY(xen_iret)
6683 ESP_OFFSET=4 # bytes pushed onto stack
6684
6685 @@ -24842,9 +24842,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/xen-asm_32.S linux-2.6.32.48/arch/x86/xe
6686 #else
6687 movl per_cpu__xen_vcpu, %eax
6688 #endif
6689 -diff -urNp linux-2.6.32.48/arch/x86/xen/xen-head.S linux-2.6.32.48/arch/x86/xen/xen-head.S
6690 ---- linux-2.6.32.48/arch/x86/xen/xen-head.S 2009-12-02 22:51:21.000000000 -0500
6691 -+++ linux-2.6.32.48/arch/x86/xen/xen-head.S 2011-11-12 12:46:42.000000000 -0500
6692 +diff -urNp linux-2.6.32.46/arch/x86/xen/xen-head.S linux-2.6.32.46/arch/x86/xen/xen-head.S
6693 +--- linux-2.6.32.46/arch/x86/xen/xen-head.S 2011-03-27 14:31:47.000000000 -0400
6694 ++++ linux-2.6.32.46/arch/x86/xen/xen-head.S 2011-04-17 15:56:46.000000000 -0400
6695 @@ -19,6 +19,17 @@ ENTRY(startup_xen)
6696 #ifdef CONFIG_X86_32
6697 mov %esi,xen_start_info
6698 @@ -24863,9 +24863,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/xen-head.S linux-2.6.32.48/arch/x86/xen/
6699 #else
6700 mov %rsi,xen_start_info
6701 mov $init_thread_union+THREAD_SIZE,%rsp
6702 -diff -urNp linux-2.6.32.48/arch/x86/xen/xen-ops.h linux-2.6.32.48/arch/x86/xen/xen-ops.h
6703 ---- linux-2.6.32.48/arch/x86/xen/xen-ops.h 2011-11-12 12:44:28.000000000 -0500
6704 -+++ linux-2.6.32.48/arch/x86/xen/xen-ops.h 2011-11-12 12:46:42.000000000 -0500
6705 +diff -urNp linux-2.6.32.46/arch/x86/xen/xen-ops.h linux-2.6.32.46/arch/x86/xen/xen-ops.h
6706 +--- linux-2.6.32.46/arch/x86/xen/xen-ops.h 2011-03-27 14:31:47.000000000 -0400
6707 ++++ linux-2.6.32.46/arch/x86/xen/xen-ops.h 2011-04-17 15:56:46.000000000 -0400
6708 @@ -10,8 +10,6 @@
6709 extern const char xen_hypervisor_callback[];
6710 extern const char xen_failsafe_callback[];
6711 @@ -24875,9 +24875,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/xen-ops.h linux-2.6.32.48/arch/x86/xen/x
6712 struct trap_info;
6713 void xen_copy_trap_info(struct trap_info *traps);
6714
6715 -diff -urNp linux-2.6.32.48/block/blk-integrity.c linux-2.6.32.48/block/blk-integrity.c
6716 ---- linux-2.6.32.48/block/blk-integrity.c 2009-12-02 22:51:21.000000000 -0500
6717 -+++ linux-2.6.32.48/block/blk-integrity.c 2011-11-12 12:46:42.000000000 -0500
6718 +diff -urNp linux-2.6.32.46/block/blk-integrity.c linux-2.6.32.46/block/blk-integrity.c
6719 +--- linux-2.6.32.46/block/blk-integrity.c 2011-03-27 14:31:47.000000000 -0400
6720 ++++ linux-2.6.32.46/block/blk-integrity.c 2011-04-17 15:56:46.000000000 -0400
6721 @@ -278,7 +278,7 @@ static struct attribute *integrity_attrs
6722 NULL,
6723 };
6724 @@ -24887,9 +24887,9 @@ diff -urNp linux-2.6.32.48/block/blk-integrity.c linux-2.6.32.48/block/blk-integ
6725 .show = &integrity_attr_show,
6726 .store = &integrity_attr_store,
6727 };
6728 -diff -urNp linux-2.6.32.48/block/blk-iopoll.c linux-2.6.32.48/block/blk-iopoll.c
6729 ---- linux-2.6.32.48/block/blk-iopoll.c 2009-12-02 22:51:21.000000000 -0500
6730 -+++ linux-2.6.32.48/block/blk-iopoll.c 2011-11-12 12:46:42.000000000 -0500
6731 +diff -urNp linux-2.6.32.46/block/blk-iopoll.c linux-2.6.32.46/block/blk-iopoll.c
6732 +--- linux-2.6.32.46/block/blk-iopoll.c 2011-03-27 14:31:47.000000000 -0400
6733 ++++ linux-2.6.32.46/block/blk-iopoll.c 2011-04-17 15:56:46.000000000 -0400
6734 @@ -77,7 +77,7 @@ void blk_iopoll_complete(struct blk_iopo
6735 }
6736 EXPORT_SYMBOL(blk_iopoll_complete);
6737 @@ -24899,9 +24899,9 @@ diff -urNp linux-2.6.32.48/block/blk-iopoll.c linux-2.6.32.48/block/blk-iopoll.c
6738 {
6739 struct list_head *list = &__get_cpu_var(blk_cpu_iopoll);
6740 int rearm = 0, budget = blk_iopoll_budget;
6741 -diff -urNp linux-2.6.32.48/block/blk-map.c linux-2.6.32.48/block/blk-map.c
6742 ---- linux-2.6.32.48/block/blk-map.c 2011-11-12 12:44:28.000000000 -0500
6743 -+++ linux-2.6.32.48/block/blk-map.c 2011-11-12 12:46:42.000000000 -0500
6744 +diff -urNp linux-2.6.32.46/block/blk-map.c linux-2.6.32.46/block/blk-map.c
6745 +--- linux-2.6.32.46/block/blk-map.c 2011-03-27 14:31:47.000000000 -0400
6746 ++++ linux-2.6.32.46/block/blk-map.c 2011-04-18 16:57:33.000000000 -0400
6747 @@ -54,7 +54,7 @@ static int __blk_rq_map_user(struct requ
6748 * direct dma. else, set up kernel bounce buffers
6749 */
6750 @@ -24936,9 +24936,9 @@ diff -urNp linux-2.6.32.48/block/blk-map.c linux-2.6.32.48/block/blk-map.c
6751 if (do_copy)
6752 bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading);
6753 else
6754 -diff -urNp linux-2.6.32.48/block/blk-softirq.c linux-2.6.32.48/block/blk-softirq.c
6755 ---- linux-2.6.32.48/block/blk-softirq.c 2009-12-02 22:51:21.000000000 -0500
6756 -+++ linux-2.6.32.48/block/blk-softirq.c 2011-11-12 12:46:42.000000000 -0500
6757 +diff -urNp linux-2.6.32.46/block/blk-softirq.c linux-2.6.32.46/block/blk-softirq.c
6758 +--- linux-2.6.32.46/block/blk-softirq.c 2011-03-27 14:31:47.000000000 -0400
6759 ++++ linux-2.6.32.46/block/blk-softirq.c 2011-04-17 15:56:46.000000000 -0400
6760 @@ -17,7 +17,7 @@ static DEFINE_PER_CPU(struct list_head,
6761 * Softirq action handler - move entries to local list and loop over them
6762 * while passing them to the queue registered handler.
6763 @@ -24948,9 +24948,9 @@ diff -urNp linux-2.6.32.48/block/blk-softirq.c linux-2.6.32.48/block/blk-softirq
6764 {
6765 struct list_head *cpu_list, local_list;
6766
6767 -diff -urNp linux-2.6.32.48/block/blk-sysfs.c linux-2.6.32.48/block/blk-sysfs.c
6768 ---- linux-2.6.32.48/block/blk-sysfs.c 2011-11-12 12:44:28.000000000 -0500
6769 -+++ linux-2.6.32.48/block/blk-sysfs.c 2011-11-12 12:46:42.000000000 -0500
6770 +diff -urNp linux-2.6.32.46/block/blk-sysfs.c linux-2.6.32.46/block/blk-sysfs.c
6771 +--- linux-2.6.32.46/block/blk-sysfs.c 2011-05-10 22:12:01.000000000 -0400
6772 ++++ linux-2.6.32.46/block/blk-sysfs.c 2011-05-10 22:12:26.000000000 -0400
6773 @@ -414,7 +414,7 @@ static void blk_release_queue(struct kob
6774 kmem_cache_free(blk_requestq_cachep, q);
6775 }
6776 @@ -24960,9 +24960,9 @@ diff -urNp linux-2.6.32.48/block/blk-sysfs.c linux-2.6.32.48/block/blk-sysfs.c
6777 .show = queue_attr_show,
6778 .store = queue_attr_store,
6779 };
6780 -diff -urNp linux-2.6.32.48/block/bsg.c linux-2.6.32.48/block/bsg.c
6781 ---- linux-2.6.32.48/block/bsg.c 2011-11-12 12:44:28.000000000 -0500
6782 -+++ linux-2.6.32.48/block/bsg.c 2011-11-12 12:46:42.000000000 -0500
6783 +diff -urNp linux-2.6.32.46/block/bsg.c linux-2.6.32.46/block/bsg.c
6784 +--- linux-2.6.32.46/block/bsg.c 2011-03-27 14:31:47.000000000 -0400
6785 ++++ linux-2.6.32.46/block/bsg.c 2011-10-06 09:37:08.000000000 -0400
6786 @@ -175,16 +175,24 @@ static int blk_fill_sgv4_hdr_rq(struct r
6787 struct sg_io_v4 *hdr, struct bsg_device *bd,
6788 fmode_t has_write_perm)
6789 @@ -25021,9 +25021,9 @@ diff -urNp linux-2.6.32.48/block/bsg.c linux-2.6.32.48/block/bsg.c
6790 rq->sense, len);
6791 if (!ret)
6792 hdr->response_len = len;
6793 -diff -urNp linux-2.6.32.48/block/compat_ioctl.c linux-2.6.32.48/block/compat_ioctl.c
6794 ---- linux-2.6.32.48/block/compat_ioctl.c 2009-12-02 22:51:21.000000000 -0500
6795 -+++ linux-2.6.32.48/block/compat_ioctl.c 2011-11-12 12:46:42.000000000 -0500
6796 +diff -urNp linux-2.6.32.46/block/compat_ioctl.c linux-2.6.32.46/block/compat_ioctl.c
6797 +--- linux-2.6.32.46/block/compat_ioctl.c 2011-03-27 14:31:47.000000000 -0400
6798 ++++ linux-2.6.32.46/block/compat_ioctl.c 2011-10-06 09:37:14.000000000 -0400
6799 @@ -354,7 +354,7 @@ static int compat_fd_ioctl(struct block_
6800 err |= __get_user(f->spec1, &uf->spec1);
6801 err |= __get_user(f->fmt_gap, &uf->fmt_gap);
6802 @@ -25033,9 +25033,9 @@ diff -urNp linux-2.6.32.48/block/compat_ioctl.c linux-2.6.32.48/block/compat_ioc
6803 if (err) {
6804 err = -EFAULT;
6805 goto out;
6806 -diff -urNp linux-2.6.32.48/block/elevator.c linux-2.6.32.48/block/elevator.c
6807 ---- linux-2.6.32.48/block/elevator.c 2009-12-02 22:51:21.000000000 -0500
6808 -+++ linux-2.6.32.48/block/elevator.c 2011-11-12 12:46:42.000000000 -0500
6809 +diff -urNp linux-2.6.32.46/block/elevator.c linux-2.6.32.46/block/elevator.c
6810 +--- linux-2.6.32.46/block/elevator.c 2011-03-27 14:31:47.000000000 -0400
6811 ++++ linux-2.6.32.46/block/elevator.c 2011-04-17 15:56:46.000000000 -0400
6812 @@ -889,7 +889,7 @@ elv_attr_store(struct kobject *kobj, str
6813 return error;
6814 }
6815 @@ -25045,9 +25045,9 @@ diff -urNp linux-2.6.32.48/block/elevator.c linux-2.6.32.48/block/elevator.c
6816 .show = elv_attr_show,
6817 .store = elv_attr_store,
6818 };
6819 -diff -urNp linux-2.6.32.48/block/scsi_ioctl.c linux-2.6.32.48/block/scsi_ioctl.c
6820 ---- linux-2.6.32.48/block/scsi_ioctl.c 2011-11-12 12:44:28.000000000 -0500
6821 -+++ linux-2.6.32.48/block/scsi_ioctl.c 2011-11-12 12:46:42.000000000 -0500
6822 +diff -urNp linux-2.6.32.46/block/scsi_ioctl.c linux-2.6.32.46/block/scsi_ioctl.c
6823 +--- linux-2.6.32.46/block/scsi_ioctl.c 2011-03-27 14:31:47.000000000 -0400
6824 ++++ linux-2.6.32.46/block/scsi_ioctl.c 2011-04-23 13:28:22.000000000 -0400
6825 @@ -220,8 +220,20 @@ EXPORT_SYMBOL(blk_verify_command);
6826 static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
6827 struct sg_io_hdr *hdr, fmode_t mode)
6828 @@ -25099,9 +25099,9 @@ diff -urNp linux-2.6.32.48/block/scsi_ioctl.c linux-2.6.32.48/block/scsi_ioctl.c
6829 if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
6830 goto error;
6831
6832 -diff -urNp linux-2.6.32.48/crypto/cryptd.c linux-2.6.32.48/crypto/cryptd.c
6833 ---- linux-2.6.32.48/crypto/cryptd.c 2009-12-02 22:51:21.000000000 -0500
6834 -+++ linux-2.6.32.48/crypto/cryptd.c 2011-11-12 12:46:42.000000000 -0500
6835 +diff -urNp linux-2.6.32.46/crypto/cryptd.c linux-2.6.32.46/crypto/cryptd.c
6836 +--- linux-2.6.32.46/crypto/cryptd.c 2011-03-27 14:31:47.000000000 -0400
6837 ++++ linux-2.6.32.46/crypto/cryptd.c 2011-08-23 21:22:32.000000000 -0400
6838 @@ -50,7 +50,7 @@ struct cryptd_blkcipher_ctx {
6839
6840 struct cryptd_blkcipher_request_ctx {
6841 @@ -25111,9 +25111,9 @@ diff -urNp linux-2.6.32.48/crypto/cryptd.c linux-2.6.32.48/crypto/cryptd.c
6842
6843 struct cryptd_hash_ctx {
6844 struct crypto_shash *child;
6845 -diff -urNp linux-2.6.32.48/crypto/gf128mul.c linux-2.6.32.48/crypto/gf128mul.c
6846 ---- linux-2.6.32.48/crypto/gf128mul.c 2009-12-02 22:51:21.000000000 -0500
6847 -+++ linux-2.6.32.48/crypto/gf128mul.c 2011-11-12 12:46:42.000000000 -0500
6848 +diff -urNp linux-2.6.32.46/crypto/gf128mul.c linux-2.6.32.46/crypto/gf128mul.c
6849 +--- linux-2.6.32.46/crypto/gf128mul.c 2011-03-27 14:31:47.000000000 -0400
6850 ++++ linux-2.6.32.46/crypto/gf128mul.c 2011-07-06 19:53:33.000000000 -0400
6851 @@ -182,7 +182,7 @@ void gf128mul_lle(be128 *r, const be128
6852 for (i = 0; i < 7; ++i)
6853 gf128mul_x_lle(&p[i + 1], &p[i]);
6854 @@ -25132,9 +25132,9 @@ diff -urNp linux-2.6.32.48/crypto/gf128mul.c linux-2.6.32.48/crypto/gf128mul.c
6855 for (i = 0;;) {
6856 u8 ch = ((u8 *)b)[i];
6857
6858 -diff -urNp linux-2.6.32.48/crypto/serpent.c linux-2.6.32.48/crypto/serpent.c
6859 ---- linux-2.6.32.48/crypto/serpent.c 2009-12-02 22:51:21.000000000 -0500
6860 -+++ linux-2.6.32.48/crypto/serpent.c 2011-11-12 12:46:42.000000000 -0500
6861 +diff -urNp linux-2.6.32.46/crypto/serpent.c linux-2.6.32.46/crypto/serpent.c
6862 +--- linux-2.6.32.46/crypto/serpent.c 2011-03-27 14:31:47.000000000 -0400
6863 ++++ linux-2.6.32.46/crypto/serpent.c 2011-08-18 23:59:56.000000000 -0400
6864 @@ -21,6 +21,7 @@
6865 #include <asm/byteorder.h>
6866 #include <linux/crypto.h>
6867 @@ -25152,9 +25152,9 @@ diff -urNp linux-2.6.32.48/crypto/serpent.c linux-2.6.32.48/crypto/serpent.c
6868 /* Copy key, add padding */
6869
6870 for (i = 0; i < keylen; ++i)
6871 -diff -urNp linux-2.6.32.48/Documentation/dontdiff linux-2.6.32.48/Documentation/dontdiff
6872 ---- linux-2.6.32.48/Documentation/dontdiff 2009-12-02 22:51:21.000000000 -0500
6873 -+++ linux-2.6.32.48/Documentation/dontdiff 2011-11-12 12:46:42.000000000 -0500
6874 +diff -urNp linux-2.6.32.46/Documentation/dontdiff linux-2.6.32.46/Documentation/dontdiff
6875 +--- linux-2.6.32.46/Documentation/dontdiff 2011-03-27 14:31:47.000000000 -0400
6876 ++++ linux-2.6.32.46/Documentation/dontdiff 2011-08-21 18:59:02.000000000 -0400
6877 @@ -1,13 +1,16 @@
6878 *.a
6879 *.aux
6880 @@ -25290,9 +25290,9 @@ diff -urNp linux-2.6.32.48/Documentation/dontdiff linux-2.6.32.48/Documentation/
6881 zImage*
6882 zconf.hash.c
6883 +zoffset.h
6884 -diff -urNp linux-2.6.32.48/Documentation/kernel-parameters.txt linux-2.6.32.48/Documentation/kernel-parameters.txt
6885 ---- linux-2.6.32.48/Documentation/kernel-parameters.txt 2011-11-12 12:44:28.000000000 -0500
6886 -+++ linux-2.6.32.48/Documentation/kernel-parameters.txt 2011-11-12 12:46:42.000000000 -0500
6887 +diff -urNp linux-2.6.32.46/Documentation/kernel-parameters.txt linux-2.6.32.46/Documentation/kernel-parameters.txt
6888 +--- linux-2.6.32.46/Documentation/kernel-parameters.txt 2011-03-27 14:31:47.000000000 -0400
6889 ++++ linux-2.6.32.46/Documentation/kernel-parameters.txt 2011-04-17 15:56:45.000000000 -0400
6890 @@ -1837,6 +1837,13 @@ and is between 256 and 4096 characters.
6891 the specified number of seconds. This is to be used if
6892 your oopses keep scrolling off the screen.
6893 @@ -25307,9 +25307,9 @@ diff -urNp linux-2.6.32.48/Documentation/kernel-parameters.txt linux-2.6.32.48/D
6894 pcbit= [HW,ISDN]
6895
6896 pcd. [PARIDE]
6897 -diff -urNp linux-2.6.32.48/drivers/acpi/acpi_pad.c linux-2.6.32.48/drivers/acpi/acpi_pad.c
6898 ---- linux-2.6.32.48/drivers/acpi/acpi_pad.c 2009-12-02 22:51:21.000000000 -0500
6899 -+++ linux-2.6.32.48/drivers/acpi/acpi_pad.c 2011-11-12 12:46:42.000000000 -0500
6900 +diff -urNp linux-2.6.32.46/drivers/acpi/acpi_pad.c linux-2.6.32.46/drivers/acpi/acpi_pad.c
6901 +--- linux-2.6.32.46/drivers/acpi/acpi_pad.c 2011-03-27 14:31:47.000000000 -0400
6902 ++++ linux-2.6.32.46/drivers/acpi/acpi_pad.c 2011-04-17 15:56:46.000000000 -0400
6903 @@ -30,7 +30,7 @@
6904 #include <acpi/acpi_bus.h>
6905 #include <acpi/acpi_drivers.h>
6906 @@ -25319,9 +25319,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/acpi_pad.c linux-2.6.32.48/drivers/acpi/
6907 #define ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME "Processor Aggregator"
6908 #define ACPI_PROCESSOR_AGGREGATOR_NOTIFY 0x80
6909 static DEFINE_MUTEX(isolated_cpus_lock);
6910 -diff -urNp linux-2.6.32.48/drivers/acpi/battery.c linux-2.6.32.48/drivers/acpi/battery.c
6911 ---- linux-2.6.32.48/drivers/acpi/battery.c 2009-12-02 22:51:21.000000000 -0500
6912 -+++ linux-2.6.32.48/drivers/acpi/battery.c 2011-11-12 12:46:42.000000000 -0500
6913 +diff -urNp linux-2.6.32.46/drivers/acpi/battery.c linux-2.6.32.46/drivers/acpi/battery.c
6914 +--- linux-2.6.32.46/drivers/acpi/battery.c 2011-03-27 14:31:47.000000000 -0400
6915 ++++ linux-2.6.32.46/drivers/acpi/battery.c 2011-04-17 15:56:46.000000000 -0400
6916 @@ -763,7 +763,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
6917 }
6918
6919 @@ -25331,9 +25331,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/battery.c linux-2.6.32.48/drivers/acpi/b
6920 mode_t mode;
6921 const char *name;
6922 } acpi_battery_file[] = {
6923 -diff -urNp linux-2.6.32.48/drivers/acpi/dock.c linux-2.6.32.48/drivers/acpi/dock.c
6924 ---- linux-2.6.32.48/drivers/acpi/dock.c 2009-12-02 22:51:21.000000000 -0500
6925 -+++ linux-2.6.32.48/drivers/acpi/dock.c 2011-11-12 12:46:42.000000000 -0500
6926 +diff -urNp linux-2.6.32.46/drivers/acpi/dock.c linux-2.6.32.46/drivers/acpi/dock.c
6927 +--- linux-2.6.32.46/drivers/acpi/dock.c 2011-03-27 14:31:47.000000000 -0400
6928 ++++ linux-2.6.32.46/drivers/acpi/dock.c 2011-04-17 15:56:46.000000000 -0400
6929 @@ -77,7 +77,7 @@ struct dock_dependent_device {
6930 struct list_head list;
6931 struct list_head hotplug_list;
6932 @@ -25352,9 +25352,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/dock.c linux-2.6.32.48/drivers/acpi/dock
6933 void *context)
6934 {
6935 struct dock_dependent_device *dd;
6936 -diff -urNp linux-2.6.32.48/drivers/acpi/osl.c linux-2.6.32.48/drivers/acpi/osl.c
6937 ---- linux-2.6.32.48/drivers/acpi/osl.c 2009-12-02 22:51:21.000000000 -0500
6938 -+++ linux-2.6.32.48/drivers/acpi/osl.c 2011-11-12 12:46:42.000000000 -0500
6939 +diff -urNp linux-2.6.32.46/drivers/acpi/osl.c linux-2.6.32.46/drivers/acpi/osl.c
6940 +--- linux-2.6.32.46/drivers/acpi/osl.c 2011-03-27 14:31:47.000000000 -0400
6941 ++++ linux-2.6.32.46/drivers/acpi/osl.c 2011-04-17 15:56:46.000000000 -0400
6942 @@ -523,6 +523,8 @@ acpi_os_read_memory(acpi_physical_addres
6943 void __iomem *virt_addr;
6944
6945 @@ -25373,9 +25373,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/osl.c linux-2.6.32.48/drivers/acpi/osl.c
6946
6947 switch (width) {
6948 case 8:
6949 -diff -urNp linux-2.6.32.48/drivers/acpi/power_meter.c linux-2.6.32.48/drivers/acpi/power_meter.c
6950 ---- linux-2.6.32.48/drivers/acpi/power_meter.c 2011-11-12 12:44:28.000000000 -0500
6951 -+++ linux-2.6.32.48/drivers/acpi/power_meter.c 2011-11-12 12:46:42.000000000 -0500
6952 +diff -urNp linux-2.6.32.46/drivers/acpi/power_meter.c linux-2.6.32.46/drivers/acpi/power_meter.c
6953 +--- linux-2.6.32.46/drivers/acpi/power_meter.c 2011-03-27 14:31:47.000000000 -0400
6954 ++++ linux-2.6.32.46/drivers/acpi/power_meter.c 2011-04-17 15:56:46.000000000 -0400
6955 @@ -315,8 +315,6 @@ static ssize_t set_trip(struct device *d
6956 return res;
6957
6958 @@ -25385,9 +25385,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/power_meter.c linux-2.6.32.48/drivers/ac
6959
6960 mutex_lock(&resource->lock);
6961 resource->trip[attr->index - 7] = temp;
6962 -diff -urNp linux-2.6.32.48/drivers/acpi/proc.c linux-2.6.32.48/drivers/acpi/proc.c
6963 ---- linux-2.6.32.48/drivers/acpi/proc.c 2009-12-02 22:51:21.000000000 -0500
6964 -+++ linux-2.6.32.48/drivers/acpi/proc.c 2011-11-12 12:46:42.000000000 -0500
6965 +diff -urNp linux-2.6.32.46/drivers/acpi/proc.c linux-2.6.32.46/drivers/acpi/proc.c
6966 +--- linux-2.6.32.46/drivers/acpi/proc.c 2011-03-27 14:31:47.000000000 -0400
6967 ++++ linux-2.6.32.46/drivers/acpi/proc.c 2011-04-17 15:56:46.000000000 -0400
6968 @@ -391,20 +391,15 @@ acpi_system_write_wakeup_device(struct f
6969 size_t count, loff_t * ppos)
6970 {
6971 @@ -25423,9 +25423,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/proc.c linux-2.6.32.48/drivers/acpi/proc
6972 dev->wakeup.state.enabled =
6973 dev->wakeup.state.enabled ? 0 : 1;
6974 found_dev = dev;
6975 -diff -urNp linux-2.6.32.48/drivers/acpi/processor_core.c linux-2.6.32.48/drivers/acpi/processor_core.c
6976 ---- linux-2.6.32.48/drivers/acpi/processor_core.c 2011-11-12 12:44:28.000000000 -0500
6977 -+++ linux-2.6.32.48/drivers/acpi/processor_core.c 2011-11-12 12:46:42.000000000 -0500
6978 +diff -urNp linux-2.6.32.46/drivers/acpi/processor_core.c linux-2.6.32.46/drivers/acpi/processor_core.c
6979 +--- linux-2.6.32.46/drivers/acpi/processor_core.c 2011-03-27 14:31:47.000000000 -0400
6980 ++++ linux-2.6.32.46/drivers/acpi/processor_core.c 2011-04-17 15:56:46.000000000 -0400
6981 @@ -790,7 +790,7 @@ static int __cpuinit acpi_processor_add(
6982 return 0;
6983 }
6984 @@ -25435,9 +25435,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/processor_core.c linux-2.6.32.48/drivers
6985
6986 /*
6987 * Buggy BIOS check
6988 -diff -urNp linux-2.6.32.48/drivers/acpi/sbshc.c linux-2.6.32.48/drivers/acpi/sbshc.c
6989 ---- linux-2.6.32.48/drivers/acpi/sbshc.c 2009-12-02 22:51:21.000000000 -0500
6990 -+++ linux-2.6.32.48/drivers/acpi/sbshc.c 2011-11-12 12:46:42.000000000 -0500
6991 +diff -urNp linux-2.6.32.46/drivers/acpi/sbshc.c linux-2.6.32.46/drivers/acpi/sbshc.c
6992 +--- linux-2.6.32.46/drivers/acpi/sbshc.c 2011-03-27 14:31:47.000000000 -0400
6993 ++++ linux-2.6.32.46/drivers/acpi/sbshc.c 2011-04-17 15:56:46.000000000 -0400
6994 @@ -17,7 +17,7 @@
6995
6996 #define PREFIX "ACPI: "
6997 @@ -25447,9 +25447,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/sbshc.c linux-2.6.32.48/drivers/acpi/sbs
6998 #define ACPI_SMB_HC_DEVICE_NAME "ACPI SMBus HC"
6999
7000 struct acpi_smb_hc {
7001 -diff -urNp linux-2.6.32.48/drivers/acpi/sleep.c linux-2.6.32.48/drivers/acpi/sleep.c
7002 ---- linux-2.6.32.48/drivers/acpi/sleep.c 2011-11-12 12:44:28.000000000 -0500
7003 -+++ linux-2.6.32.48/drivers/acpi/sleep.c 2011-11-12 12:46:42.000000000 -0500
7004 +diff -urNp linux-2.6.32.46/drivers/acpi/sleep.c linux-2.6.32.46/drivers/acpi/sleep.c
7005 +--- linux-2.6.32.46/drivers/acpi/sleep.c 2011-03-27 14:31:47.000000000 -0400
7006 ++++ linux-2.6.32.46/drivers/acpi/sleep.c 2011-04-17 15:56:46.000000000 -0400
7007 @@ -283,7 +283,7 @@ static int acpi_suspend_state_valid(susp
7008 }
7009 }
7010 @@ -25486,9 +25486,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/sleep.c linux-2.6.32.48/drivers/acpi/sle
7011 .begin = acpi_hibernation_begin_old,
7012 .end = acpi_pm_end,
7013 .pre_snapshot = acpi_hibernation_pre_snapshot_old,
7014 -diff -urNp linux-2.6.32.48/drivers/acpi/video.c linux-2.6.32.48/drivers/acpi/video.c
7015 ---- linux-2.6.32.48/drivers/acpi/video.c 2009-12-02 22:51:21.000000000 -0500
7016 -+++ linux-2.6.32.48/drivers/acpi/video.c 2011-11-12 12:46:42.000000000 -0500
7017 +diff -urNp linux-2.6.32.46/drivers/acpi/video.c linux-2.6.32.46/drivers/acpi/video.c
7018 +--- linux-2.6.32.46/drivers/acpi/video.c 2011-03-27 14:31:47.000000000 -0400
7019 ++++ linux-2.6.32.46/drivers/acpi/video.c 2011-04-17 15:56:46.000000000 -0400
7020 @@ -359,7 +359,7 @@ static int acpi_video_set_brightness(str
7021 vd->brightness->levels[request_level]);
7022 }
7023 @@ -25498,9 +25498,9 @@ diff -urNp linux-2.6.32.48/drivers/acpi/video.c linux-2.6.32.48/drivers/acpi/vid
7024 .get_brightness = acpi_video_get_brightness,
7025 .update_status = acpi_video_set_brightness,
7026 };
7027 -diff -urNp linux-2.6.32.48/drivers/ata/ahci.c linux-2.6.32.48/drivers/ata/ahci.c
7028 ---- linux-2.6.32.48/drivers/ata/ahci.c 2011-11-12 12:44:28.000000000 -0500
7029 -+++ linux-2.6.32.48/drivers/ata/ahci.c 2011-11-12 12:46:42.000000000 -0500
7030 +diff -urNp linux-2.6.32.46/drivers/ata/ahci.c linux-2.6.32.46/drivers/ata/ahci.c
7031 +--- linux-2.6.32.46/drivers/ata/ahci.c 2011-03-27 14:31:47.000000000 -0400
7032 ++++ linux-2.6.32.46/drivers/ata/ahci.c 2011-04-23 12:56:10.000000000 -0400
7033 @@ -387,7 +387,7 @@ static struct scsi_host_template ahci_sh
7034 .sdev_attrs = ahci_sdev_attrs,
7035 };
7036 @@ -25531,9 +25531,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/ahci.c linux-2.6.32.48/drivers/ata/ahci.c
7037 .inherits = &ahci_ops,
7038 .softreset = ahci_sb600_softreset,
7039 .pmp_softreset = ahci_sb600_softreset,
7040 -diff -urNp linux-2.6.32.48/drivers/ata/ata_generic.c linux-2.6.32.48/drivers/ata/ata_generic.c
7041 ---- linux-2.6.32.48/drivers/ata/ata_generic.c 2011-11-12 12:44:28.000000000 -0500
7042 -+++ linux-2.6.32.48/drivers/ata/ata_generic.c 2011-11-12 12:46:42.000000000 -0500
7043 +diff -urNp linux-2.6.32.46/drivers/ata/ata_generic.c linux-2.6.32.46/drivers/ata/ata_generic.c
7044 +--- linux-2.6.32.46/drivers/ata/ata_generic.c 2011-03-27 14:31:47.000000000 -0400
7045 ++++ linux-2.6.32.46/drivers/ata/ata_generic.c 2011-04-17 15:56:46.000000000 -0400
7046 @@ -104,7 +104,7 @@ static struct scsi_host_template generic
7047 ATA_BMDMA_SHT(DRV_NAME),
7048 };
7049 @@ -25543,9 +25543,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/ata_generic.c linux-2.6.32.48/drivers/ata
7050 .inherits = &ata_bmdma_port_ops,
7051 .cable_detect = ata_cable_unknown,
7052 .set_mode = generic_set_mode,
7053 -diff -urNp linux-2.6.32.48/drivers/ata/ata_piix.c linux-2.6.32.48/drivers/ata/ata_piix.c
7054 ---- linux-2.6.32.48/drivers/ata/ata_piix.c 2011-11-12 12:44:28.000000000 -0500
7055 -+++ linux-2.6.32.48/drivers/ata/ata_piix.c 2011-11-12 12:46:42.000000000 -0500
7056 +diff -urNp linux-2.6.32.46/drivers/ata/ata_piix.c linux-2.6.32.46/drivers/ata/ata_piix.c
7057 +--- linux-2.6.32.46/drivers/ata/ata_piix.c 2011-03-27 14:31:47.000000000 -0400
7058 ++++ linux-2.6.32.46/drivers/ata/ata_piix.c 2011-04-23 12:56:10.000000000 -0400
7059 @@ -318,7 +318,7 @@ static struct scsi_host_template piix_sh
7060 ATA_BMDMA_SHT(DRV_NAME),
7061 };
7062 @@ -25582,9 +25582,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/ata_piix.c linux-2.6.32.48/drivers/ata/at
7063 .inherits = &piix_sata_ops,
7064 .hardreset = sata_std_hardreset,
7065 .scr_read = piix_sidpr_scr_read,
7066 -diff -urNp linux-2.6.32.48/drivers/ata/libata-acpi.c linux-2.6.32.48/drivers/ata/libata-acpi.c
7067 ---- linux-2.6.32.48/drivers/ata/libata-acpi.c 2009-12-02 22:51:21.000000000 -0500
7068 -+++ linux-2.6.32.48/drivers/ata/libata-acpi.c 2011-11-12 12:46:42.000000000 -0500
7069 +diff -urNp linux-2.6.32.46/drivers/ata/libata-acpi.c linux-2.6.32.46/drivers/ata/libata-acpi.c
7070 +--- linux-2.6.32.46/drivers/ata/libata-acpi.c 2011-03-27 14:31:47.000000000 -0400
7071 ++++ linux-2.6.32.46/drivers/ata/libata-acpi.c 2011-04-17 15:56:46.000000000 -0400
7072 @@ -223,12 +223,12 @@ static void ata_acpi_dev_uevent(acpi_han
7073 ata_acpi_uevent(dev->link->ap, dev, event);
7074 }
7075 @@ -25600,9 +25600,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-acpi.c linux-2.6.32.48/drivers/ata
7076 .handler = ata_acpi_ap_notify_dock,
7077 .uevent = ata_acpi_ap_uevent,
7078 };
7079 -diff -urNp linux-2.6.32.48/drivers/ata/libata-core.c linux-2.6.32.48/drivers/ata/libata-core.c
7080 ---- linux-2.6.32.48/drivers/ata/libata-core.c 2011-11-12 12:44:28.000000000 -0500
7081 -+++ linux-2.6.32.48/drivers/ata/libata-core.c 2011-11-12 12:46:42.000000000 -0500
7082 +diff -urNp linux-2.6.32.46/drivers/ata/libata-core.c linux-2.6.32.46/drivers/ata/libata-core.c
7083 +--- linux-2.6.32.46/drivers/ata/libata-core.c 2011-03-27 14:31:47.000000000 -0400
7084 ++++ linux-2.6.32.46/drivers/ata/libata-core.c 2011-08-05 20:33:55.000000000 -0400
7085 @@ -4954,7 +4954,7 @@ void ata_qc_free(struct ata_queued_cmd *
7086 struct ata_port *ap;
7087 unsigned int tag;
7088 @@ -25667,9 +25667,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-core.c linux-2.6.32.48/drivers/ata
7089 .qc_prep = ata_noop_qc_prep,
7090 .qc_issue = ata_dummy_qc_issue,
7091 .error_handler = ata_dummy_error_handler,
7092 -diff -urNp linux-2.6.32.48/drivers/ata/libata-eh.c linux-2.6.32.48/drivers/ata/libata-eh.c
7093 ---- linux-2.6.32.48/drivers/ata/libata-eh.c 2011-11-12 12:44:28.000000000 -0500
7094 -+++ linux-2.6.32.48/drivers/ata/libata-eh.c 2011-11-12 12:46:42.000000000 -0500
7095 +diff -urNp linux-2.6.32.46/drivers/ata/libata-eh.c linux-2.6.32.46/drivers/ata/libata-eh.c
7096 +--- linux-2.6.32.46/drivers/ata/libata-eh.c 2011-08-09 18:35:28.000000000 -0400
7097 ++++ linux-2.6.32.46/drivers/ata/libata-eh.c 2011-08-09 18:33:59.000000000 -0400
7098 @@ -2423,6 +2423,8 @@ void ata_eh_report(struct ata_port *ap)
7099 {
7100 struct ata_link *link;
7101 @@ -25688,9 +25688,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-eh.c linux-2.6.32.48/drivers/ata/l
7102 ata_reset_fn_t hardreset = ops->hardreset;
7103
7104 /* ignore built-in hardreset if SCR access is not available */
7105 -diff -urNp linux-2.6.32.48/drivers/ata/libata-pmp.c linux-2.6.32.48/drivers/ata/libata-pmp.c
7106 ---- linux-2.6.32.48/drivers/ata/libata-pmp.c 2009-12-02 22:51:21.000000000 -0500
7107 -+++ linux-2.6.32.48/drivers/ata/libata-pmp.c 2011-11-12 12:46:42.000000000 -0500
7108 +diff -urNp linux-2.6.32.46/drivers/ata/libata-pmp.c linux-2.6.32.46/drivers/ata/libata-pmp.c
7109 +--- linux-2.6.32.46/drivers/ata/libata-pmp.c 2011-03-27 14:31:47.000000000 -0400
7110 ++++ linux-2.6.32.46/drivers/ata/libata-pmp.c 2011-04-17 15:56:46.000000000 -0400
7111 @@ -841,7 +841,7 @@ static int sata_pmp_handle_link_fail(str
7112 */
7113 static int sata_pmp_eh_recover(struct ata_port *ap)
7114 @@ -25700,9 +25700,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-pmp.c linux-2.6.32.48/drivers/ata/
7115 int pmp_tries, link_tries[SATA_PMP_MAX_PORTS];
7116 struct ata_link *pmp_link = &ap->link;
7117 struct ata_device *pmp_dev = pmp_link->device;
7118 -diff -urNp linux-2.6.32.48/drivers/ata/pata_acpi.c linux-2.6.32.48/drivers/ata/pata_acpi.c
7119 ---- linux-2.6.32.48/drivers/ata/pata_acpi.c 2009-12-02 22:51:21.000000000 -0500
7120 -+++ linux-2.6.32.48/drivers/ata/pata_acpi.c 2011-11-12 12:46:42.000000000 -0500
7121 +diff -urNp linux-2.6.32.46/drivers/ata/pata_acpi.c linux-2.6.32.46/drivers/ata/pata_acpi.c
7122 +--- linux-2.6.32.46/drivers/ata/pata_acpi.c 2011-03-27 14:31:47.000000000 -0400
7123 ++++ linux-2.6.32.46/drivers/ata/pata_acpi.c 2011-04-17 15:56:46.000000000 -0400
7124 @@ -215,7 +215,7 @@ static struct scsi_host_template pacpi_s
7125 ATA_BMDMA_SHT(DRV_NAME),
7126 };
7127 @@ -25712,9 +25712,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_acpi.c linux-2.6.32.48/drivers/ata/p
7128 .inherits = &ata_bmdma_port_ops,
7129 .qc_issue = pacpi_qc_issue,
7130 .cable_detect = pacpi_cable_detect,
7131 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ali.c linux-2.6.32.48/drivers/ata/pata_ali.c
7132 ---- linux-2.6.32.48/drivers/ata/pata_ali.c 2011-11-12 12:44:28.000000000 -0500
7133 -+++ linux-2.6.32.48/drivers/ata/pata_ali.c 2011-11-12 12:46:42.000000000 -0500
7134 +diff -urNp linux-2.6.32.46/drivers/ata/pata_ali.c linux-2.6.32.46/drivers/ata/pata_ali.c
7135 +--- linux-2.6.32.46/drivers/ata/pata_ali.c 2011-03-27 14:31:47.000000000 -0400
7136 ++++ linux-2.6.32.46/drivers/ata/pata_ali.c 2011-04-17 15:56:46.000000000 -0400
7137 @@ -365,7 +365,7 @@ static struct scsi_host_template ali_sht
7138 * Port operations for PIO only ALi
7139 */
7140 @@ -25760,9 +25760,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_ali.c linux-2.6.32.48/drivers/ata/pa
7141 .inherits = &ali_dma_base_ops,
7142 .check_atapi_dma = ali_check_atapi_dma,
7143 .dev_config = ali_warn_atapi_dma,
7144 -diff -urNp linux-2.6.32.48/drivers/ata/pata_amd.c linux-2.6.32.48/drivers/ata/pata_amd.c
7145 ---- linux-2.6.32.48/drivers/ata/pata_amd.c 2009-12-02 22:51:21.000000000 -0500
7146 -+++ linux-2.6.32.48/drivers/ata/pata_amd.c 2011-11-12 12:46:42.000000000 -0500
7147 +diff -urNp linux-2.6.32.46/drivers/ata/pata_amd.c linux-2.6.32.46/drivers/ata/pata_amd.c
7148 +--- linux-2.6.32.46/drivers/ata/pata_amd.c 2011-03-27 14:31:47.000000000 -0400
7149 ++++ linux-2.6.32.46/drivers/ata/pata_amd.c 2011-04-17 15:56:46.000000000 -0400
7150 @@ -397,28 +397,28 @@ static const struct ata_port_operations
7151 .prereset = amd_pre_reset,
7152 };
7153 @@ -25812,9 +25812,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_amd.c linux-2.6.32.48/drivers/ata/pa
7154 .inherits = &nv_base_port_ops,
7155 .set_piomode = nv133_set_piomode,
7156 .set_dmamode = nv133_set_dmamode,
7157 -diff -urNp linux-2.6.32.48/drivers/ata/pata_artop.c linux-2.6.32.48/drivers/ata/pata_artop.c
7158 ---- linux-2.6.32.48/drivers/ata/pata_artop.c 2009-12-02 22:51:21.000000000 -0500
7159 -+++ linux-2.6.32.48/drivers/ata/pata_artop.c 2011-11-12 12:46:42.000000000 -0500
7160 +diff -urNp linux-2.6.32.46/drivers/ata/pata_artop.c linux-2.6.32.46/drivers/ata/pata_artop.c
7161 +--- linux-2.6.32.46/drivers/ata/pata_artop.c 2011-03-27 14:31:47.000000000 -0400
7162 ++++ linux-2.6.32.46/drivers/ata/pata_artop.c 2011-04-17 15:56:46.000000000 -0400
7163 @@ -311,7 +311,7 @@ static struct scsi_host_template artop_s
7164 ATA_BMDMA_SHT(DRV_NAME),
7165 };
7166 @@ -25833,9 +25833,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_artop.c linux-2.6.32.48/drivers/ata/
7167 .inherits = &ata_bmdma_port_ops,
7168 .cable_detect = artop6260_cable_detect,
7169 .set_piomode = artop6260_set_piomode,
7170 -diff -urNp linux-2.6.32.48/drivers/ata/pata_at32.c linux-2.6.32.48/drivers/ata/pata_at32.c
7171 ---- linux-2.6.32.48/drivers/ata/pata_at32.c 2009-12-02 22:51:21.000000000 -0500
7172 -+++ linux-2.6.32.48/drivers/ata/pata_at32.c 2011-11-12 12:46:42.000000000 -0500
7173 +diff -urNp linux-2.6.32.46/drivers/ata/pata_at32.c linux-2.6.32.46/drivers/ata/pata_at32.c
7174 +--- linux-2.6.32.46/drivers/ata/pata_at32.c 2011-03-27 14:31:47.000000000 -0400
7175 ++++ linux-2.6.32.46/drivers/ata/pata_at32.c 2011-04-17 15:56:46.000000000 -0400
7176 @@ -172,7 +172,7 @@ static struct scsi_host_template at32_sh
7177 ATA_PIO_SHT(DRV_NAME),
7178 };
7179 @@ -25845,9 +25845,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_at32.c linux-2.6.32.48/drivers/ata/p
7180 .inherits = &ata_sff_port_ops,
7181 .cable_detect = ata_cable_40wire,
7182 .set_piomode = pata_at32_set_piomode,
7183 -diff -urNp linux-2.6.32.48/drivers/ata/pata_at91.c linux-2.6.32.48/drivers/ata/pata_at91.c
7184 ---- linux-2.6.32.48/drivers/ata/pata_at91.c 2009-12-02 22:51:21.000000000 -0500
7185 -+++ linux-2.6.32.48/drivers/ata/pata_at91.c 2011-11-12 12:46:42.000000000 -0500
7186 +diff -urNp linux-2.6.32.46/drivers/ata/pata_at91.c linux-2.6.32.46/drivers/ata/pata_at91.c
7187 +--- linux-2.6.32.46/drivers/ata/pata_at91.c 2011-03-27 14:31:47.000000000 -0400
7188 ++++ linux-2.6.32.46/drivers/ata/pata_at91.c 2011-04-17 15:56:46.000000000 -0400
7189 @@ -195,7 +195,7 @@ static struct scsi_host_template pata_at
7190 ATA_PIO_SHT(DRV_NAME),
7191 };
7192 @@ -25857,9 +25857,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_at91.c linux-2.6.32.48/drivers/ata/p
7193 .inherits = &ata_sff_port_ops,
7194
7195 .sff_data_xfer = pata_at91_data_xfer_noirq,
7196 -diff -urNp linux-2.6.32.48/drivers/ata/pata_atiixp.c linux-2.6.32.48/drivers/ata/pata_atiixp.c
7197 ---- linux-2.6.32.48/drivers/ata/pata_atiixp.c 2009-12-02 22:51:21.000000000 -0500
7198 -+++ linux-2.6.32.48/drivers/ata/pata_atiixp.c 2011-11-12 12:46:42.000000000 -0500
7199 +diff -urNp linux-2.6.32.46/drivers/ata/pata_atiixp.c linux-2.6.32.46/drivers/ata/pata_atiixp.c
7200 +--- linux-2.6.32.46/drivers/ata/pata_atiixp.c 2011-03-27 14:31:47.000000000 -0400
7201 ++++ linux-2.6.32.46/drivers/ata/pata_atiixp.c 2011-04-17 15:56:46.000000000 -0400
7202 @@ -205,7 +205,7 @@ static struct scsi_host_template atiixp_
7203 .sg_tablesize = LIBATA_DUMB_MAX_PRD,
7204 };
7205 @@ -25869,9 +25869,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_atiixp.c linux-2.6.32.48/drivers/ata
7206 .inherits = &ata_bmdma_port_ops,
7207
7208 .qc_prep = ata_sff_dumb_qc_prep,
7209 -diff -urNp linux-2.6.32.48/drivers/ata/pata_atp867x.c linux-2.6.32.48/drivers/ata/pata_atp867x.c
7210 ---- linux-2.6.32.48/drivers/ata/pata_atp867x.c 2009-12-02 22:51:21.000000000 -0500
7211 -+++ linux-2.6.32.48/drivers/ata/pata_atp867x.c 2011-11-12 12:46:42.000000000 -0500
7212 +diff -urNp linux-2.6.32.46/drivers/ata/pata_atp867x.c linux-2.6.32.46/drivers/ata/pata_atp867x.c
7213 +--- linux-2.6.32.46/drivers/ata/pata_atp867x.c 2011-03-27 14:31:47.000000000 -0400
7214 ++++ linux-2.6.32.46/drivers/ata/pata_atp867x.c 2011-04-17 15:56:46.000000000 -0400
7215 @@ -274,7 +274,7 @@ static struct scsi_host_template atp867x
7216 ATA_BMDMA_SHT(DRV_NAME),
7217 };
7218 @@ -25881,9 +25881,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_atp867x.c linux-2.6.32.48/drivers/at
7219 .inherits = &ata_bmdma_port_ops,
7220 .cable_detect = atp867x_cable_detect,
7221 .set_piomode = atp867x_set_piomode,
7222 -diff -urNp linux-2.6.32.48/drivers/ata/pata_bf54x.c linux-2.6.32.48/drivers/ata/pata_bf54x.c
7223 ---- linux-2.6.32.48/drivers/ata/pata_bf54x.c 2009-12-02 22:51:21.000000000 -0500
7224 -+++ linux-2.6.32.48/drivers/ata/pata_bf54x.c 2011-11-12 12:46:42.000000000 -0500
7225 +diff -urNp linux-2.6.32.46/drivers/ata/pata_bf54x.c linux-2.6.32.46/drivers/ata/pata_bf54x.c
7226 +--- linux-2.6.32.46/drivers/ata/pata_bf54x.c 2011-03-27 14:31:47.000000000 -0400
7227 ++++ linux-2.6.32.46/drivers/ata/pata_bf54x.c 2011-04-17 15:56:46.000000000 -0400
7228 @@ -1464,7 +1464,7 @@ static struct scsi_host_template bfin_sh
7229 .dma_boundary = ATA_DMA_BOUNDARY,
7230 };
7231 @@ -25893,9 +25893,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_bf54x.c linux-2.6.32.48/drivers/ata/
7232 .inherits = &ata_sff_port_ops,
7233
7234 .set_piomode = bfin_set_piomode,
7235 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cmd640.c linux-2.6.32.48/drivers/ata/pata_cmd640.c
7236 ---- linux-2.6.32.48/drivers/ata/pata_cmd640.c 2009-12-02 22:51:21.000000000 -0500
7237 -+++ linux-2.6.32.48/drivers/ata/pata_cmd640.c 2011-11-12 12:46:42.000000000 -0500
7238 +diff -urNp linux-2.6.32.46/drivers/ata/pata_cmd640.c linux-2.6.32.46/drivers/ata/pata_cmd640.c
7239 +--- linux-2.6.32.46/drivers/ata/pata_cmd640.c 2011-03-27 14:31:47.000000000 -0400
7240 ++++ linux-2.6.32.46/drivers/ata/pata_cmd640.c 2011-04-17 15:56:46.000000000 -0400
7241 @@ -168,7 +168,7 @@ static struct scsi_host_template cmd640_
7242 ATA_BMDMA_SHT(DRV_NAME),
7243 };
7244 @@ -25905,9 +25905,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_cmd640.c linux-2.6.32.48/drivers/ata
7245 .inherits = &ata_bmdma_port_ops,
7246 /* In theory xfer_noirq is not needed once we kill the prefetcher */
7247 .sff_data_xfer = ata_sff_data_xfer_noirq,
7248 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cmd64x.c linux-2.6.32.48/drivers/ata/pata_cmd64x.c
7249 ---- linux-2.6.32.48/drivers/ata/pata_cmd64x.c 2011-11-12 12:44:28.000000000 -0500
7250 -+++ linux-2.6.32.48/drivers/ata/pata_cmd64x.c 2011-11-12 12:46:42.000000000 -0500
7251 +diff -urNp linux-2.6.32.46/drivers/ata/pata_cmd64x.c linux-2.6.32.46/drivers/ata/pata_cmd64x.c
7252 +--- linux-2.6.32.46/drivers/ata/pata_cmd64x.c 2011-06-25 12:55:34.000000000 -0400
7253 ++++ linux-2.6.32.46/drivers/ata/pata_cmd64x.c 2011-06-25 12:56:37.000000000 -0400
7254 @@ -271,18 +271,18 @@ static const struct ata_port_operations
7255 .set_dmamode = cmd64x_set_dmamode,
7256 };
7257 @@ -25930,9 +25930,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_cmd64x.c linux-2.6.32.48/drivers/ata
7258 .inherits = &cmd64x_base_ops,
7259 .bmdma_stop = cmd648_bmdma_stop,
7260 .cable_detect = cmd648_cable_detect,
7261 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5520.c linux-2.6.32.48/drivers/ata/pata_cs5520.c
7262 ---- linux-2.6.32.48/drivers/ata/pata_cs5520.c 2009-12-02 22:51:21.000000000 -0500
7263 -+++ linux-2.6.32.48/drivers/ata/pata_cs5520.c 2011-11-12 12:46:42.000000000 -0500
7264 +diff -urNp linux-2.6.32.46/drivers/ata/pata_cs5520.c linux-2.6.32.46/drivers/ata/pata_cs5520.c
7265 +--- linux-2.6.32.46/drivers/ata/pata_cs5520.c 2011-03-27 14:31:47.000000000 -0400
7266 ++++ linux-2.6.32.46/drivers/ata/pata_cs5520.c 2011-04-17 15:56:46.000000000 -0400
7267 @@ -144,7 +144,7 @@ static struct scsi_host_template cs5520_
7268 .sg_tablesize = LIBATA_DUMB_MAX_PRD,
7269 };
7270 @@ -25942,9 +25942,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5520.c linux-2.6.32.48/drivers/ata
7271 .inherits = &ata_bmdma_port_ops,
7272 .qc_prep = ata_sff_dumb_qc_prep,
7273 .cable_detect = ata_cable_40wire,
7274 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5530.c linux-2.6.32.48/drivers/ata/pata_cs5530.c
7275 ---- linux-2.6.32.48/drivers/ata/pata_cs5530.c 2009-12-02 22:51:21.000000000 -0500
7276 -+++ linux-2.6.32.48/drivers/ata/pata_cs5530.c 2011-11-12 12:46:42.000000000 -0500
7277 +diff -urNp linux-2.6.32.46/drivers/ata/pata_cs5530.c linux-2.6.32.46/drivers/ata/pata_cs5530.c
7278 +--- linux-2.6.32.46/drivers/ata/pata_cs5530.c 2011-03-27 14:31:47.000000000 -0400
7279 ++++ linux-2.6.32.46/drivers/ata/pata_cs5530.c 2011-04-17 15:56:46.000000000 -0400
7280 @@ -164,7 +164,7 @@ static struct scsi_host_template cs5530_
7281 .sg_tablesize = LIBATA_DUMB_MAX_PRD,
7282 };
7283 @@ -25954,9 +25954,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5530.c linux-2.6.32.48/drivers/ata
7284 .inherits = &ata_bmdma_port_ops,
7285
7286 .qc_prep = ata_sff_dumb_qc_prep,
7287 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5535.c linux-2.6.32.48/drivers/ata/pata_cs5535.c
7288 ---- linux-2.6.32.48/drivers/ata/pata_cs5535.c 2009-12-02 22:51:21.000000000 -0500
7289 -+++ linux-2.6.32.48/drivers/ata/pata_cs5535.c 2011-11-12 12:46:42.000000000 -0500
7290 +diff -urNp linux-2.6.32.46/drivers/ata/pata_cs5535.c linux-2.6.32.46/drivers/ata/pata_cs5535.c
7291 +--- linux-2.6.32.46/drivers/ata/pata_cs5535.c 2011-03-27 14:31:47.000000000 -0400
7292 ++++ linux-2.6.32.46/drivers/ata/pata_cs5535.c 2011-04-17 15:56:46.000000000 -0400
7293 @@ -160,7 +160,7 @@ static struct scsi_host_template cs5535_
7294 ATA_BMDMA_SHT(DRV_NAME),
7295 };
7296 @@ -25966,9 +25966,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5535.c linux-2.6.32.48/drivers/ata
7297 .inherits = &ata_bmdma_port_ops,
7298 .cable_detect = cs5535_cable_detect,
7299 .set_piomode = cs5535_set_piomode,
7300 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5536.c linux-2.6.32.48/drivers/ata/pata_cs5536.c
7301 ---- linux-2.6.32.48/drivers/ata/pata_cs5536.c 2009-12-02 22:51:21.000000000 -0500
7302 -+++ linux-2.6.32.48/drivers/ata/pata_cs5536.c 2011-11-12 12:46:42.000000000 -0500
7303 +diff -urNp linux-2.6.32.46/drivers/ata/pata_cs5536.c linux-2.6.32.46/drivers/ata/pata_cs5536.c
7304 +--- linux-2.6.32.46/drivers/ata/pata_cs5536.c 2011-03-27 14:31:47.000000000 -0400
7305 ++++ linux-2.6.32.46/drivers/ata/pata_cs5536.c 2011-04-17 15:56:46.000000000 -0400
7306 @@ -223,7 +223,7 @@ static struct scsi_host_template cs5536_
7307 ATA_BMDMA_SHT(DRV_NAME),
7308 };
7309 @@ -25978,9 +25978,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5536.c linux-2.6.32.48/drivers/ata
7310 .inherits = &ata_bmdma_port_ops,
7311 .cable_detect = cs5536_cable_detect,
7312 .set_piomode = cs5536_set_piomode,
7313 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cypress.c linux-2.6.32.48/drivers/ata/pata_cypress.c
7314 ---- linux-2.6.32.48/drivers/ata/pata_cypress.c 2009-12-02 22:51:21.000000000 -0500
7315 -+++ linux-2.6.32.48/drivers/ata/pata_cypress.c 2011-11-12 12:46:42.000000000 -0500
7316 +diff -urNp linux-2.6.32.46/drivers/ata/pata_cypress.c linux-2.6.32.46/drivers/ata/pata_cypress.c
7317 +--- linux-2.6.32.46/drivers/ata/pata_cypress.c 2011-03-27 14:31:47.000000000 -0400
7318 ++++ linux-2.6.32.46/drivers/ata/pata_cypress.c 2011-04-17 15:56:46.000000000 -0400
7319 @@ -113,7 +113,7 @@ static struct scsi_host_template cy82c69
7320 ATA_BMDMA_SHT(DRV_NAME),
7321 };
7322 @@ -25990,9 +25990,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_cypress.c linux-2.6.32.48/drivers/at
7323 .inherits = &ata_bmdma_port_ops,
7324 .cable_detect = ata_cable_40wire,
7325 .set_piomode = cy82c693_set_piomode,
7326 -diff -urNp linux-2.6.32.48/drivers/ata/pata_efar.c linux-2.6.32.48/drivers/ata/pata_efar.c
7327 ---- linux-2.6.32.48/drivers/ata/pata_efar.c 2009-12-02 22:51:21.000000000 -0500
7328 -+++ linux-2.6.32.48/drivers/ata/pata_efar.c 2011-11-12 12:46:42.000000000 -0500
7329 +diff -urNp linux-2.6.32.46/drivers/ata/pata_efar.c linux-2.6.32.46/drivers/ata/pata_efar.c
7330 +--- linux-2.6.32.46/drivers/ata/pata_efar.c 2011-03-27 14:31:47.000000000 -0400
7331 ++++ linux-2.6.32.46/drivers/ata/pata_efar.c 2011-04-17 15:56:46.000000000 -0400
7332 @@ -222,7 +222,7 @@ static struct scsi_host_template efar_sh
7333 ATA_BMDMA_SHT(DRV_NAME),
7334 };
7335 @@ -26002,9 +26002,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_efar.c linux-2.6.32.48/drivers/ata/p
7336 .inherits = &ata_bmdma_port_ops,
7337 .cable_detect = efar_cable_detect,
7338 .set_piomode = efar_set_piomode,
7339 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt366.c linux-2.6.32.48/drivers/ata/pata_hpt366.c
7340 ---- linux-2.6.32.48/drivers/ata/pata_hpt366.c 2011-11-12 12:44:28.000000000 -0500
7341 -+++ linux-2.6.32.48/drivers/ata/pata_hpt366.c 2011-11-12 12:46:42.000000000 -0500
7342 +diff -urNp linux-2.6.32.46/drivers/ata/pata_hpt366.c linux-2.6.32.46/drivers/ata/pata_hpt366.c
7343 +--- linux-2.6.32.46/drivers/ata/pata_hpt366.c 2011-06-25 12:55:34.000000000 -0400
7344 ++++ linux-2.6.32.46/drivers/ata/pata_hpt366.c 2011-06-25 12:56:37.000000000 -0400
7345 @@ -282,7 +282,7 @@ static struct scsi_host_template hpt36x_
7346 * Configuration for HPT366/68
7347 */
7348 @@ -26014,9 +26014,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt366.c linux-2.6.32.48/drivers/ata
7349 .inherits = &ata_bmdma_port_ops,
7350 .cable_detect = hpt36x_cable_detect,
7351 .mode_filter = hpt366_filter,
7352 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt37x.c linux-2.6.32.48/drivers/ata/pata_hpt37x.c
7353 ---- linux-2.6.32.48/drivers/ata/pata_hpt37x.c 2011-11-12 12:44:28.000000000 -0500
7354 -+++ linux-2.6.32.48/drivers/ata/pata_hpt37x.c 2011-11-12 12:46:42.000000000 -0500
7355 +diff -urNp linux-2.6.32.46/drivers/ata/pata_hpt37x.c linux-2.6.32.46/drivers/ata/pata_hpt37x.c
7356 +--- linux-2.6.32.46/drivers/ata/pata_hpt37x.c 2011-06-25 12:55:34.000000000 -0400
7357 ++++ linux-2.6.32.46/drivers/ata/pata_hpt37x.c 2011-06-25 12:56:37.000000000 -0400
7358 @@ -576,7 +576,7 @@ static struct scsi_host_template hpt37x_
7359 * Configuration for HPT370
7360 */
7361 @@ -26053,9 +26053,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt37x.c linux-2.6.32.48/drivers/ata
7362 .inherits = &hpt372_port_ops,
7363 .prereset = hpt374_fn1_pre_reset,
7364 };
7365 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c
7366 ---- linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c 2011-11-12 12:44:28.000000000 -0500
7367 -+++ linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c 2011-11-12 12:46:42.000000000 -0500
7368 +diff -urNp linux-2.6.32.46/drivers/ata/pata_hpt3x2n.c linux-2.6.32.46/drivers/ata/pata_hpt3x2n.c
7369 +--- linux-2.6.32.46/drivers/ata/pata_hpt3x2n.c 2011-06-25 12:55:34.000000000 -0400
7370 ++++ linux-2.6.32.46/drivers/ata/pata_hpt3x2n.c 2011-06-25 12:56:37.000000000 -0400
7371 @@ -337,7 +337,7 @@ static struct scsi_host_template hpt3x2n
7372 * Configuration for HPT3x2n.
7373 */
7374 @@ -26065,9 +26065,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c linux-2.6.32.48/drivers/at
7375 .inherits = &ata_bmdma_port_ops,
7376
7377 .bmdma_stop = hpt3x2n_bmdma_stop,
7378 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt3x3.c linux-2.6.32.48/drivers/ata/pata_hpt3x3.c
7379 ---- linux-2.6.32.48/drivers/ata/pata_hpt3x3.c 2009-12-02 22:51:21.000000000 -0500
7380 -+++ linux-2.6.32.48/drivers/ata/pata_hpt3x3.c 2011-11-12 12:46:42.000000000 -0500
7381 +diff -urNp linux-2.6.32.46/drivers/ata/pata_hpt3x3.c linux-2.6.32.46/drivers/ata/pata_hpt3x3.c
7382 +--- linux-2.6.32.46/drivers/ata/pata_hpt3x3.c 2011-03-27 14:31:47.000000000 -0400
7383 ++++ linux-2.6.32.46/drivers/ata/pata_hpt3x3.c 2011-04-17 15:56:46.000000000 -0400
7384 @@ -141,7 +141,7 @@ static struct scsi_host_template hpt3x3_
7385 ATA_BMDMA_SHT(DRV_NAME),
7386 };
7387 @@ -26077,9 +26077,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt3x3.c linux-2.6.32.48/drivers/ata
7388 .inherits = &ata_bmdma_port_ops,
7389 .cable_detect = ata_cable_40wire,
7390 .set_piomode = hpt3x3_set_piomode,
7391 -diff -urNp linux-2.6.32.48/drivers/ata/pata_icside.c linux-2.6.32.48/drivers/ata/pata_icside.c
7392 ---- linux-2.6.32.48/drivers/ata/pata_icside.c 2009-12-02 22:51:21.000000000 -0500
7393 -+++ linux-2.6.32.48/drivers/ata/pata_icside.c 2011-11-12 12:46:42.000000000 -0500
7394 +diff -urNp linux-2.6.32.46/drivers/ata/pata_icside.c linux-2.6.32.46/drivers/ata/pata_icside.c
7395 +--- linux-2.6.32.46/drivers/ata/pata_icside.c 2011-03-27 14:31:47.000000000 -0400
7396 ++++ linux-2.6.32.46/drivers/ata/pata_icside.c 2011-04-17 15:56:46.000000000 -0400
7397 @@ -319,7 +319,7 @@ static void pata_icside_postreset(struct
7398 }
7399 }
7400 @@ -26089,9 +26089,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_icside.c linux-2.6.32.48/drivers/ata
7401 .inherits = &ata_sff_port_ops,
7402 /* no need to build any PRD tables for DMA */
7403 .qc_prep = ata_noop_qc_prep,
7404 -diff -urNp linux-2.6.32.48/drivers/ata/pata_isapnp.c linux-2.6.32.48/drivers/ata/pata_isapnp.c
7405 ---- linux-2.6.32.48/drivers/ata/pata_isapnp.c 2009-12-02 22:51:21.000000000 -0500
7406 -+++ linux-2.6.32.48/drivers/ata/pata_isapnp.c 2011-11-12 12:46:42.000000000 -0500
7407 +diff -urNp linux-2.6.32.46/drivers/ata/pata_isapnp.c linux-2.6.32.46/drivers/ata/pata_isapnp.c
7408 +--- linux-2.6.32.46/drivers/ata/pata_isapnp.c 2011-03-27 14:31:47.000000000 -0400
7409 ++++ linux-2.6.32.46/drivers/ata/pata_isapnp.c 2011-04-17 15:56:46.000000000 -0400
7410 @@ -23,12 +23,12 @@ static struct scsi_host_template isapnp_
7411 ATA_PIO_SHT(DRV_NAME),
7412 };
7413 @@ -26107,9 +26107,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_isapnp.c linux-2.6.32.48/drivers/ata
7414 .inherits = &ata_sff_port_ops,
7415 .cable_detect = ata_cable_40wire,
7416 /* No altstatus so we don't want to use the lost interrupt poll */
7417 -diff -urNp linux-2.6.32.48/drivers/ata/pata_it8213.c linux-2.6.32.48/drivers/ata/pata_it8213.c
7418 ---- linux-2.6.32.48/drivers/ata/pata_it8213.c 2009-12-02 22:51:21.000000000 -0500
7419 -+++ linux-2.6.32.48/drivers/ata/pata_it8213.c 2011-11-12 12:46:42.000000000 -0500
7420 +diff -urNp linux-2.6.32.46/drivers/ata/pata_it8213.c linux-2.6.32.46/drivers/ata/pata_it8213.c
7421 +--- linux-2.6.32.46/drivers/ata/pata_it8213.c 2011-03-27 14:31:47.000000000 -0400
7422 ++++ linux-2.6.32.46/drivers/ata/pata_it8213.c 2011-04-17 15:56:46.000000000 -0400
7423 @@ -234,7 +234,7 @@ static struct scsi_host_template it8213_
7424 };
7425
7426 @@ -26119,9 +26119,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_it8213.c linux-2.6.32.48/drivers/ata
7427 .inherits = &ata_bmdma_port_ops,
7428 .cable_detect = it8213_cable_detect,
7429 .set_piomode = it8213_set_piomode,
7430 -diff -urNp linux-2.6.32.48/drivers/ata/pata_it821x.c linux-2.6.32.48/drivers/ata/pata_it821x.c
7431 ---- linux-2.6.32.48/drivers/ata/pata_it821x.c 2009-12-02 22:51:21.000000000 -0500
7432 -+++ linux-2.6.32.48/drivers/ata/pata_it821x.c 2011-11-12 12:46:42.000000000 -0500
7433 +diff -urNp linux-2.6.32.46/drivers/ata/pata_it821x.c linux-2.6.32.46/drivers/ata/pata_it821x.c
7434 +--- linux-2.6.32.46/drivers/ata/pata_it821x.c 2011-03-27 14:31:47.000000000 -0400
7435 ++++ linux-2.6.32.46/drivers/ata/pata_it821x.c 2011-04-17 15:56:46.000000000 -0400
7436 @@ -800,7 +800,7 @@ static struct scsi_host_template it821x_
7437 ATA_BMDMA_SHT(DRV_NAME),
7438 };
7439 @@ -26149,9 +26149,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_it821x.c linux-2.6.32.48/drivers/ata
7440 .inherits = &ata_bmdma_port_ops,
7441
7442 .check_atapi_dma= it821x_check_atapi_dma,
7443 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c
7444 ---- linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c 2009-12-02 22:51:21.000000000 -0500
7445 -+++ linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c 2011-11-12 12:46:42.000000000 -0500
7446 +diff -urNp linux-2.6.32.46/drivers/ata/pata_ixp4xx_cf.c linux-2.6.32.46/drivers/ata/pata_ixp4xx_cf.c
7447 +--- linux-2.6.32.46/drivers/ata/pata_ixp4xx_cf.c 2011-03-27 14:31:47.000000000 -0400
7448 ++++ linux-2.6.32.46/drivers/ata/pata_ixp4xx_cf.c 2011-04-17 15:56:46.000000000 -0400
7449 @@ -89,7 +89,7 @@ static struct scsi_host_template ixp4xx_
7450 ATA_PIO_SHT(DRV_NAME),
7451 };
7452 @@ -26161,9 +26161,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c linux-2.6.32.48/drivers/
7453 .inherits = &ata_sff_port_ops,
7454 .sff_data_xfer = ixp4xx_mmio_data_xfer,
7455 .cable_detect = ata_cable_40wire,
7456 -diff -urNp linux-2.6.32.48/drivers/ata/pata_jmicron.c linux-2.6.32.48/drivers/ata/pata_jmicron.c
7457 ---- linux-2.6.32.48/drivers/ata/pata_jmicron.c 2009-12-02 22:51:21.000000000 -0500
7458 -+++ linux-2.6.32.48/drivers/ata/pata_jmicron.c 2011-11-12 12:46:42.000000000 -0500
7459 +diff -urNp linux-2.6.32.46/drivers/ata/pata_jmicron.c linux-2.6.32.46/drivers/ata/pata_jmicron.c
7460 +--- linux-2.6.32.46/drivers/ata/pata_jmicron.c 2011-03-27 14:31:47.000000000 -0400
7461 ++++ linux-2.6.32.46/drivers/ata/pata_jmicron.c 2011-04-17 15:56:46.000000000 -0400
7462 @@ -111,7 +111,7 @@ static struct scsi_host_template jmicron
7463 ATA_BMDMA_SHT(DRV_NAME),
7464 };
7465 @@ -26173,9 +26173,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_jmicron.c linux-2.6.32.48/drivers/at
7466 .inherits = &ata_bmdma_port_ops,
7467 .prereset = jmicron_pre_reset,
7468 };
7469 -diff -urNp linux-2.6.32.48/drivers/ata/pata_legacy.c linux-2.6.32.48/drivers/ata/pata_legacy.c
7470 ---- linux-2.6.32.48/drivers/ata/pata_legacy.c 2009-12-02 22:51:21.000000000 -0500
7471 -+++ linux-2.6.32.48/drivers/ata/pata_legacy.c 2011-11-12 12:46:42.000000000 -0500
7472 +diff -urNp linux-2.6.32.46/drivers/ata/pata_legacy.c linux-2.6.32.46/drivers/ata/pata_legacy.c
7473 +--- linux-2.6.32.46/drivers/ata/pata_legacy.c 2011-03-27 14:31:47.000000000 -0400
7474 ++++ linux-2.6.32.46/drivers/ata/pata_legacy.c 2011-04-17 15:56:46.000000000 -0400
7475 @@ -106,7 +106,7 @@ struct legacy_probe {
7476
7477 struct legacy_controller {
7478 @@ -26287,9 +26287,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_legacy.c linux-2.6.32.48/drivers/ata
7479 struct legacy_data *ld = &legacy_data[probe->slot];
7480 struct ata_host *host = NULL;
7481 struct ata_port *ap;
7482 -diff -urNp linux-2.6.32.48/drivers/ata/pata_marvell.c linux-2.6.32.48/drivers/ata/pata_marvell.c
7483 ---- linux-2.6.32.48/drivers/ata/pata_marvell.c 2009-12-02 22:51:21.000000000 -0500
7484 -+++ linux-2.6.32.48/drivers/ata/pata_marvell.c 2011-11-12 12:46:42.000000000 -0500
7485 +diff -urNp linux-2.6.32.46/drivers/ata/pata_marvell.c linux-2.6.32.46/drivers/ata/pata_marvell.c
7486 +--- linux-2.6.32.46/drivers/ata/pata_marvell.c 2011-03-27 14:31:47.000000000 -0400
7487 ++++ linux-2.6.32.46/drivers/ata/pata_marvell.c 2011-04-17 15:56:46.000000000 -0400
7488 @@ -100,7 +100,7 @@ static struct scsi_host_template marvell
7489 ATA_BMDMA_SHT(DRV_NAME),
7490 };
7491 @@ -26299,9 +26299,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_marvell.c linux-2.6.32.48/drivers/at
7492 .inherits = &ata_bmdma_port_ops,
7493 .cable_detect = marvell_cable_detect,
7494 .prereset = marvell_pre_reset,
7495 -diff -urNp linux-2.6.32.48/drivers/ata/pata_mpc52xx.c linux-2.6.32.48/drivers/ata/pata_mpc52xx.c
7496 ---- linux-2.6.32.48/drivers/ata/pata_mpc52xx.c 2011-11-12 12:44:28.000000000 -0500
7497 -+++ linux-2.6.32.48/drivers/ata/pata_mpc52xx.c 2011-11-12 12:46:42.000000000 -0500
7498 +diff -urNp linux-2.6.32.46/drivers/ata/pata_mpc52xx.c linux-2.6.32.46/drivers/ata/pata_mpc52xx.c
7499 +--- linux-2.6.32.46/drivers/ata/pata_mpc52xx.c 2011-03-27 14:31:47.000000000 -0400
7500 ++++ linux-2.6.32.46/drivers/ata/pata_mpc52xx.c 2011-04-17 15:56:46.000000000 -0400
7501 @@ -609,7 +609,7 @@ static struct scsi_host_template mpc52xx
7502 ATA_PIO_SHT(DRV_NAME),
7503 };
7504 @@ -26311,9 +26311,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_mpc52xx.c linux-2.6.32.48/drivers/at
7505 .inherits = &ata_bmdma_port_ops,
7506 .sff_dev_select = mpc52xx_ata_dev_select,
7507 .set_piomode = mpc52xx_ata_set_piomode,
7508 -diff -urNp linux-2.6.32.48/drivers/ata/pata_mpiix.c linux-2.6.32.48/drivers/ata/pata_mpiix.c
7509 ---- linux-2.6.32.48/drivers/ata/pata_mpiix.c 2009-12-02 22:51:21.000000000 -0500
7510 -+++ linux-2.6.32.48/drivers/ata/pata_mpiix.c 2011-11-12 12:46:42.000000000 -0500
7511 +diff -urNp linux-2.6.32.46/drivers/ata/pata_mpiix.c linux-2.6.32.46/drivers/ata/pata_mpiix.c
7512 +--- linux-2.6.32.46/drivers/ata/pata_mpiix.c 2011-03-27 14:31:47.000000000 -0400
7513 ++++ linux-2.6.32.46/drivers/ata/pata_mpiix.c 2011-04-17 15:56:46.000000000 -0400
7514 @@ -140,7 +140,7 @@ static struct scsi_host_template mpiix_s
7515 ATA_PIO_SHT(DRV_NAME),
7516 };
7517 @@ -26323,9 +26323,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_mpiix.c linux-2.6.32.48/drivers/ata/
7518 .inherits = &ata_sff_port_ops,
7519 .qc_issue = mpiix_qc_issue,
7520 .cable_detect = ata_cable_40wire,
7521 -diff -urNp linux-2.6.32.48/drivers/ata/pata_netcell.c linux-2.6.32.48/drivers/ata/pata_netcell.c
7522 ---- linux-2.6.32.48/drivers/ata/pata_netcell.c 2009-12-02 22:51:21.000000000 -0500
7523 -+++ linux-2.6.32.48/drivers/ata/pata_netcell.c 2011-11-12 12:46:42.000000000 -0500
7524 +diff -urNp linux-2.6.32.46/drivers/ata/pata_netcell.c linux-2.6.32.46/drivers/ata/pata_netcell.c
7525 +--- linux-2.6.32.46/drivers/ata/pata_netcell.c 2011-03-27 14:31:47.000000000 -0400
7526 ++++ linux-2.6.32.46/drivers/ata/pata_netcell.c 2011-04-17 15:56:46.000000000 -0400
7527 @@ -34,7 +34,7 @@ static struct scsi_host_template netcell
7528 ATA_BMDMA_SHT(DRV_NAME),
7529 };
7530 @@ -26335,9 +26335,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_netcell.c linux-2.6.32.48/drivers/at
7531 .inherits = &ata_bmdma_port_ops,
7532 .cable_detect = ata_cable_80wire,
7533 .read_id = netcell_read_id,
7534 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ninja32.c linux-2.6.32.48/drivers/ata/pata_ninja32.c
7535 ---- linux-2.6.32.48/drivers/ata/pata_ninja32.c 2009-12-02 22:51:21.000000000 -0500
7536 -+++ linux-2.6.32.48/drivers/ata/pata_ninja32.c 2011-11-12 12:46:42.000000000 -0500
7537 +diff -urNp linux-2.6.32.46/drivers/ata/pata_ninja32.c linux-2.6.32.46/drivers/ata/pata_ninja32.c
7538 +--- linux-2.6.32.46/drivers/ata/pata_ninja32.c 2011-03-27 14:31:47.000000000 -0400
7539 ++++ linux-2.6.32.46/drivers/ata/pata_ninja32.c 2011-04-17 15:56:46.000000000 -0400
7540 @@ -81,7 +81,7 @@ static struct scsi_host_template ninja32
7541 ATA_BMDMA_SHT(DRV_NAME),
7542 };
7543 @@ -26347,9 +26347,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_ninja32.c linux-2.6.32.48/drivers/at
7544 .inherits = &ata_bmdma_port_ops,
7545 .sff_dev_select = ninja32_dev_select,
7546 .cable_detect = ata_cable_40wire,
7547 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ns87410.c linux-2.6.32.48/drivers/ata/pata_ns87410.c
7548 ---- linux-2.6.32.48/drivers/ata/pata_ns87410.c 2009-12-02 22:51:21.000000000 -0500
7549 -+++ linux-2.6.32.48/drivers/ata/pata_ns87410.c 2011-11-12 12:46:42.000000000 -0500
7550 +diff -urNp linux-2.6.32.46/drivers/ata/pata_ns87410.c linux-2.6.32.46/drivers/ata/pata_ns87410.c
7551 +--- linux-2.6.32.46/drivers/ata/pata_ns87410.c 2011-03-27 14:31:47.000000000 -0400
7552 ++++ linux-2.6.32.46/drivers/ata/pata_ns87410.c 2011-04-17 15:56:46.000000000 -0400
7553 @@ -132,7 +132,7 @@ static struct scsi_host_template ns87410
7554 ATA_PIO_SHT(DRV_NAME),
7555 };
7556 @@ -26359,9 +26359,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_ns87410.c linux-2.6.32.48/drivers/at
7557 .inherits = &ata_sff_port_ops,
7558 .qc_issue = ns87410_qc_issue,
7559 .cable_detect = ata_cable_40wire,
7560 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ns87415.c linux-2.6.32.48/drivers/ata/pata_ns87415.c
7561 ---- linux-2.6.32.48/drivers/ata/pata_ns87415.c 2009-12-02 22:51:21.000000000 -0500
7562 -+++ linux-2.6.32.48/drivers/ata/pata_ns87415.c 2011-11-12 12:46:42.000000000 -0500
7563 +diff -urNp linux-2.6.32.46/drivers/ata/pata_ns87415.c linux-2.6.32.46/drivers/ata/pata_ns87415.c
7564 +--- linux-2.6.32.46/drivers/ata/pata_ns87415.c 2011-03-27 14:31:47.000000000 -0400
7565 ++++ linux-2.6.32.46/drivers/ata/pata_ns87415.c 2011-04-17 15:56:46.000000000 -0400
7566 @@ -299,7 +299,7 @@ static u8 ns87560_bmdma_status(struct at
7567 }
7568 #endif /* 87560 SuperIO Support */
7569 @@ -26380,9 +26380,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_ns87415.c linux-2.6.32.48/drivers/at
7570 .inherits = &ns87415_pata_ops,
7571 .sff_tf_read = ns87560_tf_read,
7572 .sff_check_status = ns87560_check_status,
7573 -diff -urNp linux-2.6.32.48/drivers/ata/pata_octeon_cf.c linux-2.6.32.48/drivers/ata/pata_octeon_cf.c
7574 ---- linux-2.6.32.48/drivers/ata/pata_octeon_cf.c 2009-12-02 22:51:21.000000000 -0500
7575 -+++ linux-2.6.32.48/drivers/ata/pata_octeon_cf.c 2011-11-12 12:46:42.000000000 -0500
7576 +diff -urNp linux-2.6.32.46/drivers/ata/pata_octeon_cf.c linux-2.6.32.46/drivers/ata/pata_octeon_cf.c
7577 +--- linux-2.6.32.46/drivers/ata/pata_octeon_cf.c 2011-03-27 14:31:47.000000000 -0400
7578 ++++ linux-2.6.32.46/drivers/ata/pata_octeon_cf.c 2011-04-17 15:56:46.000000000 -0400
7579 @@ -801,6 +801,7 @@ static unsigned int octeon_cf_qc_issue(s
7580 return 0;
7581 }
7582 @@ -26391,9 +26391,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_octeon_cf.c linux-2.6.32.48/drivers/
7583 static struct ata_port_operations octeon_cf_ops = {
7584 .inherits = &ata_sff_port_ops,
7585 .check_atapi_dma = octeon_cf_check_atapi_dma,
7586 -diff -urNp linux-2.6.32.48/drivers/ata/pata_oldpiix.c linux-2.6.32.48/drivers/ata/pata_oldpiix.c
7587 ---- linux-2.6.32.48/drivers/ata/pata_oldpiix.c 2009-12-02 22:51:21.000000000 -0500
7588 -+++ linux-2.6.32.48/drivers/ata/pata_oldpiix.c 2011-11-12 12:46:42.000000000 -0500
7589 +diff -urNp linux-2.6.32.46/drivers/ata/pata_oldpiix.c linux-2.6.32.46/drivers/ata/pata_oldpiix.c
7590 +--- linux-2.6.32.46/drivers/ata/pata_oldpiix.c 2011-03-27 14:31:47.000000000 -0400
7591 ++++ linux-2.6.32.46/drivers/ata/pata_oldpiix.c 2011-04-17 15:56:46.000000000 -0400
7592 @@ -208,7 +208,7 @@ static struct scsi_host_template oldpiix
7593 ATA_BMDMA_SHT(DRV_NAME),
7594 };
7595 @@ -26403,9 +26403,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_oldpiix.c linux-2.6.32.48/drivers/at
7596 .inherits = &ata_bmdma_port_ops,
7597 .qc_issue = oldpiix_qc_issue,
7598 .cable_detect = ata_cable_40wire,
7599 -diff -urNp linux-2.6.32.48/drivers/ata/pata_opti.c linux-2.6.32.48/drivers/ata/pata_opti.c
7600 ---- linux-2.6.32.48/drivers/ata/pata_opti.c 2009-12-02 22:51:21.000000000 -0500
7601 -+++ linux-2.6.32.48/drivers/ata/pata_opti.c 2011-11-12 12:46:42.000000000 -0500
7602 +diff -urNp linux-2.6.32.46/drivers/ata/pata_opti.c linux-2.6.32.46/drivers/ata/pata_opti.c
7603 +--- linux-2.6.32.46/drivers/ata/pata_opti.c 2011-03-27 14:31:47.000000000 -0400
7604 ++++ linux-2.6.32.46/drivers/ata/pata_opti.c 2011-04-17 15:56:46.000000000 -0400
7605 @@ -152,7 +152,7 @@ static struct scsi_host_template opti_sh
7606 ATA_PIO_SHT(DRV_NAME),
7607 };
7608 @@ -26415,9 +26415,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_opti.c linux-2.6.32.48/drivers/ata/p
7609 .inherits = &ata_sff_port_ops,
7610 .cable_detect = ata_cable_40wire,
7611 .set_piomode = opti_set_piomode,
7612 -diff -urNp linux-2.6.32.48/drivers/ata/pata_optidma.c linux-2.6.32.48/drivers/ata/pata_optidma.c
7613 ---- linux-2.6.32.48/drivers/ata/pata_optidma.c 2009-12-02 22:51:21.000000000 -0500
7614 -+++ linux-2.6.32.48/drivers/ata/pata_optidma.c 2011-11-12 12:46:42.000000000 -0500
7615 +diff -urNp linux-2.6.32.46/drivers/ata/pata_optidma.c linux-2.6.32.46/drivers/ata/pata_optidma.c
7616 +--- linux-2.6.32.46/drivers/ata/pata_optidma.c 2011-03-27 14:31:47.000000000 -0400
7617 ++++ linux-2.6.32.46/drivers/ata/pata_optidma.c 2011-04-17 15:56:46.000000000 -0400
7618 @@ -337,7 +337,7 @@ static struct scsi_host_template optidma
7619 ATA_BMDMA_SHT(DRV_NAME),
7620 };
7621 @@ -26436,9 +26436,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_optidma.c linux-2.6.32.48/drivers/at
7622 .inherits = &optidma_port_ops,
7623 .set_piomode = optiplus_set_pio_mode,
7624 .set_dmamode = optiplus_set_dma_mode,
7625 -diff -urNp linux-2.6.32.48/drivers/ata/pata_palmld.c linux-2.6.32.48/drivers/ata/pata_palmld.c
7626 ---- linux-2.6.32.48/drivers/ata/pata_palmld.c 2009-12-02 22:51:21.000000000 -0500
7627 -+++ linux-2.6.32.48/drivers/ata/pata_palmld.c 2011-11-12 12:46:42.000000000 -0500
7628 +diff -urNp linux-2.6.32.46/drivers/ata/pata_palmld.c linux-2.6.32.46/drivers/ata/pata_palmld.c
7629 +--- linux-2.6.32.46/drivers/ata/pata_palmld.c 2011-03-27 14:31:47.000000000 -0400
7630 ++++ linux-2.6.32.46/drivers/ata/pata_palmld.c 2011-04-17 15:56:46.000000000 -0400
7631 @@ -37,7 +37,7 @@ static struct scsi_host_template palmld_
7632 ATA_PIO_SHT(DRV_NAME),
7633 };
7634 @@ -26448,9 +26448,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_palmld.c linux-2.6.32.48/drivers/ata
7635 .inherits = &ata_sff_port_ops,
7636 .sff_data_xfer = ata_sff_data_xfer_noirq,
7637 .cable_detect = ata_cable_40wire,
7638 -diff -urNp linux-2.6.32.48/drivers/ata/pata_pcmcia.c linux-2.6.32.48/drivers/ata/pata_pcmcia.c
7639 ---- linux-2.6.32.48/drivers/ata/pata_pcmcia.c 2009-12-02 22:51:21.000000000 -0500
7640 -+++ linux-2.6.32.48/drivers/ata/pata_pcmcia.c 2011-11-12 12:46:42.000000000 -0500
7641 +diff -urNp linux-2.6.32.46/drivers/ata/pata_pcmcia.c linux-2.6.32.46/drivers/ata/pata_pcmcia.c
7642 +--- linux-2.6.32.46/drivers/ata/pata_pcmcia.c 2011-03-27 14:31:47.000000000 -0400
7643 ++++ linux-2.6.32.46/drivers/ata/pata_pcmcia.c 2011-04-17 15:56:46.000000000 -0400
7644 @@ -162,14 +162,14 @@ static struct scsi_host_template pcmcia_
7645 ATA_PIO_SHT(DRV_NAME),
7646 };
7647 @@ -26477,9 +26477,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_pcmcia.c linux-2.6.32.48/drivers/ata
7648
7649 info = kzalloc(sizeof(*info), GFP_KERNEL);
7650 if (info == NULL)
7651 -diff -urNp linux-2.6.32.48/drivers/ata/pata_pdc2027x.c linux-2.6.32.48/drivers/ata/pata_pdc2027x.c
7652 ---- linux-2.6.32.48/drivers/ata/pata_pdc2027x.c 2009-12-02 22:51:21.000000000 -0500
7653 -+++ linux-2.6.32.48/drivers/ata/pata_pdc2027x.c 2011-11-12 12:46:42.000000000 -0500
7654 +diff -urNp linux-2.6.32.46/drivers/ata/pata_pdc2027x.c linux-2.6.32.46/drivers/ata/pata_pdc2027x.c
7655 +--- linux-2.6.32.46/drivers/ata/pata_pdc2027x.c 2011-03-27 14:31:47.000000000 -0400
7656 ++++ linux-2.6.32.46/drivers/ata/pata_pdc2027x.c 2011-04-17 15:56:46.000000000 -0400
7657 @@ -132,14 +132,14 @@ static struct scsi_host_template pdc2027
7658 ATA_BMDMA_SHT(DRV_NAME),
7659 };
7660 @@ -26497,9 +26497,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_pdc2027x.c linux-2.6.32.48/drivers/a
7661 .inherits = &pdc2027x_pata100_ops,
7662 .mode_filter = pdc2027x_mode_filter,
7663 .set_piomode = pdc2027x_set_piomode,
7664 -diff -urNp linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c
7665 ---- linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c 2011-11-12 12:44:28.000000000 -0500
7666 -+++ linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c 2011-11-12 12:46:42.000000000 -0500
7667 +diff -urNp linux-2.6.32.46/drivers/ata/pata_pdc202xx_old.c linux-2.6.32.46/drivers/ata/pata_pdc202xx_old.c
7668 +--- linux-2.6.32.46/drivers/ata/pata_pdc202xx_old.c 2011-03-27 14:31:47.000000000 -0400
7669 ++++ linux-2.6.32.46/drivers/ata/pata_pdc202xx_old.c 2011-04-17 15:56:46.000000000 -0400
7670 @@ -274,7 +274,7 @@ static struct scsi_host_template pdc202x
7671 ATA_BMDMA_SHT(DRV_NAME),
7672 };
7673 @@ -26518,9 +26518,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c linux-2.6.32.48/drive
7674 .inherits = &pdc2024x_port_ops,
7675
7676 .check_atapi_dma = pdc2026x_check_atapi_dma,
7677 -diff -urNp linux-2.6.32.48/drivers/ata/pata_platform.c linux-2.6.32.48/drivers/ata/pata_platform.c
7678 ---- linux-2.6.32.48/drivers/ata/pata_platform.c 2009-12-02 22:51:21.000000000 -0500
7679 -+++ linux-2.6.32.48/drivers/ata/pata_platform.c 2011-11-12 12:46:42.000000000 -0500
7680 +diff -urNp linux-2.6.32.46/drivers/ata/pata_platform.c linux-2.6.32.46/drivers/ata/pata_platform.c
7681 +--- linux-2.6.32.46/drivers/ata/pata_platform.c 2011-03-27 14:31:47.000000000 -0400
7682 ++++ linux-2.6.32.46/drivers/ata/pata_platform.c 2011-04-17 15:56:46.000000000 -0400
7683 @@ -48,7 +48,7 @@ static struct scsi_host_template pata_pl
7684 ATA_PIO_SHT(DRV_NAME),
7685 };
7686 @@ -26530,9 +26530,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_platform.c linux-2.6.32.48/drivers/a
7687 .inherits = &ata_sff_port_ops,
7688 .sff_data_xfer = ata_sff_data_xfer_noirq,
7689 .cable_detect = ata_cable_unknown,
7690 -diff -urNp linux-2.6.32.48/drivers/ata/pata_qdi.c linux-2.6.32.48/drivers/ata/pata_qdi.c
7691 ---- linux-2.6.32.48/drivers/ata/pata_qdi.c 2009-12-02 22:51:21.000000000 -0500
7692 -+++ linux-2.6.32.48/drivers/ata/pata_qdi.c 2011-11-12 12:46:42.000000000 -0500
7693 +diff -urNp linux-2.6.32.46/drivers/ata/pata_qdi.c linux-2.6.32.46/drivers/ata/pata_qdi.c
7694 +--- linux-2.6.32.46/drivers/ata/pata_qdi.c 2011-03-27 14:31:47.000000000 -0400
7695 ++++ linux-2.6.32.46/drivers/ata/pata_qdi.c 2011-04-17 15:56:46.000000000 -0400
7696 @@ -157,7 +157,7 @@ static struct scsi_host_template qdi_sht
7697 ATA_PIO_SHT(DRV_NAME),
7698 };
7699 @@ -26551,9 +26551,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_qdi.c linux-2.6.32.48/drivers/ata/pa
7700 .inherits = &qdi6500_port_ops,
7701 .set_piomode = qdi6580_set_piomode,
7702 };
7703 -diff -urNp linux-2.6.32.48/drivers/ata/pata_radisys.c linux-2.6.32.48/drivers/ata/pata_radisys.c
7704 ---- linux-2.6.32.48/drivers/ata/pata_radisys.c 2009-12-02 22:51:21.000000000 -0500
7705 -+++ linux-2.6.32.48/drivers/ata/pata_radisys.c 2011-11-12 12:46:42.000000000 -0500
7706 +diff -urNp linux-2.6.32.46/drivers/ata/pata_radisys.c linux-2.6.32.46/drivers/ata/pata_radisys.c
7707 +--- linux-2.6.32.46/drivers/ata/pata_radisys.c 2011-03-27 14:31:47.000000000 -0400
7708 ++++ linux-2.6.32.46/drivers/ata/pata_radisys.c 2011-04-17 15:56:46.000000000 -0400
7709 @@ -187,7 +187,7 @@ static struct scsi_host_template radisys
7710 ATA_BMDMA_SHT(DRV_NAME),
7711 };
7712 @@ -26563,9 +26563,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_radisys.c linux-2.6.32.48/drivers/at
7713 .inherits = &ata_bmdma_port_ops,
7714 .qc_issue = radisys_qc_issue,
7715 .cable_detect = ata_cable_unknown,
7716 -diff -urNp linux-2.6.32.48/drivers/ata/pata_rb532_cf.c linux-2.6.32.48/drivers/ata/pata_rb532_cf.c
7717 ---- linux-2.6.32.48/drivers/ata/pata_rb532_cf.c 2009-12-02 22:51:21.000000000 -0500
7718 -+++ linux-2.6.32.48/drivers/ata/pata_rb532_cf.c 2011-11-12 12:46:42.000000000 -0500
7719 +diff -urNp linux-2.6.32.46/drivers/ata/pata_rb532_cf.c linux-2.6.32.46/drivers/ata/pata_rb532_cf.c
7720 +--- linux-2.6.32.46/drivers/ata/pata_rb532_cf.c 2011-03-27 14:31:47.000000000 -0400
7721 ++++ linux-2.6.32.46/drivers/ata/pata_rb532_cf.c 2011-04-17 15:56:46.000000000 -0400
7722 @@ -68,7 +68,7 @@ static irqreturn_t rb532_pata_irq_handle
7723 return IRQ_HANDLED;
7724 }
7725 @@ -26575,9 +26575,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_rb532_cf.c linux-2.6.32.48/drivers/a
7726 .inherits = &ata_sff_port_ops,
7727 .sff_data_xfer = ata_sff_data_xfer32,
7728 };
7729 -diff -urNp linux-2.6.32.48/drivers/ata/pata_rdc.c linux-2.6.32.48/drivers/ata/pata_rdc.c
7730 ---- linux-2.6.32.48/drivers/ata/pata_rdc.c 2009-12-02 22:51:21.000000000 -0500
7731 -+++ linux-2.6.32.48/drivers/ata/pata_rdc.c 2011-11-12 12:46:42.000000000 -0500
7732 +diff -urNp linux-2.6.32.46/drivers/ata/pata_rdc.c linux-2.6.32.46/drivers/ata/pata_rdc.c
7733 +--- linux-2.6.32.46/drivers/ata/pata_rdc.c 2011-03-27 14:31:47.000000000 -0400
7734 ++++ linux-2.6.32.46/drivers/ata/pata_rdc.c 2011-04-17 15:56:46.000000000 -0400
7735 @@ -272,7 +272,7 @@ static void rdc_set_dmamode(struct ata_p
7736 pci_write_config_byte(dev, 0x48, udma_enable);
7737 }
7738 @@ -26587,9 +26587,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_rdc.c linux-2.6.32.48/drivers/ata/pa
7739 .inherits = &ata_bmdma32_port_ops,
7740 .cable_detect = rdc_pata_cable_detect,
7741 .set_piomode = rdc_set_piomode,
7742 -diff -urNp linux-2.6.32.48/drivers/ata/pata_rz1000.c linux-2.6.32.48/drivers/ata/pata_rz1000.c
7743 ---- linux-2.6.32.48/drivers/ata/pata_rz1000.c 2009-12-02 22:51:21.000000000 -0500
7744 -+++ linux-2.6.32.48/drivers/ata/pata_rz1000.c 2011-11-12 12:46:42.000000000 -0500
7745 +diff -urNp linux-2.6.32.46/drivers/ata/pata_rz1000.c linux-2.6.32.46/drivers/ata/pata_rz1000.c
7746 +--- linux-2.6.32.46/drivers/ata/pata_rz1000.c 2011-03-27 14:31:47.000000000 -0400
7747 ++++ linux-2.6.32.46/drivers/ata/pata_rz1000.c 2011-04-17 15:56:46.000000000 -0400
7748 @@ -54,7 +54,7 @@ static struct scsi_host_template rz1000_
7749 ATA_PIO_SHT(DRV_NAME),
7750 };
7751 @@ -26599,9 +26599,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_rz1000.c linux-2.6.32.48/drivers/ata
7752 .inherits = &ata_sff_port_ops,
7753 .cable_detect = ata_cable_40wire,
7754 .set_mode = rz1000_set_mode,
7755 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sc1200.c linux-2.6.32.48/drivers/ata/pata_sc1200.c
7756 ---- linux-2.6.32.48/drivers/ata/pata_sc1200.c 2009-12-02 22:51:21.000000000 -0500
7757 -+++ linux-2.6.32.48/drivers/ata/pata_sc1200.c 2011-11-12 12:46:42.000000000 -0500
7758 +diff -urNp linux-2.6.32.46/drivers/ata/pata_sc1200.c linux-2.6.32.46/drivers/ata/pata_sc1200.c
7759 +--- linux-2.6.32.46/drivers/ata/pata_sc1200.c 2011-03-27 14:31:47.000000000 -0400
7760 ++++ linux-2.6.32.46/drivers/ata/pata_sc1200.c 2011-04-17 15:56:46.000000000 -0400
7761 @@ -207,7 +207,7 @@ static struct scsi_host_template sc1200_
7762 .sg_tablesize = LIBATA_DUMB_MAX_PRD,
7763 };
7764 @@ -26611,9 +26611,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_sc1200.c linux-2.6.32.48/drivers/ata
7765 .inherits = &ata_bmdma_port_ops,
7766 .qc_prep = ata_sff_dumb_qc_prep,
7767 .qc_issue = sc1200_qc_issue,
7768 -diff -urNp linux-2.6.32.48/drivers/ata/pata_scc.c linux-2.6.32.48/drivers/ata/pata_scc.c
7769 ---- linux-2.6.32.48/drivers/ata/pata_scc.c 2009-12-02 22:51:21.000000000 -0500
7770 -+++ linux-2.6.32.48/drivers/ata/pata_scc.c 2011-11-12 12:46:42.000000000 -0500
7771 +diff -urNp linux-2.6.32.46/drivers/ata/pata_scc.c linux-2.6.32.46/drivers/ata/pata_scc.c
7772 +--- linux-2.6.32.46/drivers/ata/pata_scc.c 2011-03-27 14:31:47.000000000 -0400
7773 ++++ linux-2.6.32.46/drivers/ata/pata_scc.c 2011-04-17 15:56:46.000000000 -0400
7774 @@ -965,7 +965,7 @@ static struct scsi_host_template scc_sht
7775 ATA_BMDMA_SHT(DRV_NAME),
7776 };
7777 @@ -26623,9 +26623,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_scc.c linux-2.6.32.48/drivers/ata/pa
7778 .inherits = &ata_bmdma_port_ops,
7779
7780 .set_piomode = scc_set_piomode,
7781 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sch.c linux-2.6.32.48/drivers/ata/pata_sch.c
7782 ---- linux-2.6.32.48/drivers/ata/pata_sch.c 2009-12-02 22:51:21.000000000 -0500
7783 -+++ linux-2.6.32.48/drivers/ata/pata_sch.c 2011-11-12 12:46:42.000000000 -0500
7784 +diff -urNp linux-2.6.32.46/drivers/ata/pata_sch.c linux-2.6.32.46/drivers/ata/pata_sch.c
7785 +--- linux-2.6.32.46/drivers/ata/pata_sch.c 2011-03-27 14:31:47.000000000 -0400
7786 ++++ linux-2.6.32.46/drivers/ata/pata_sch.c 2011-04-17 15:56:46.000000000 -0400
7787 @@ -75,7 +75,7 @@ static struct scsi_host_template sch_sht
7788 ATA_BMDMA_SHT(DRV_NAME),
7789 };
7790 @@ -26635,9 +26635,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_sch.c linux-2.6.32.48/drivers/ata/pa
7791 .inherits = &ata_bmdma_port_ops,
7792 .cable_detect = ata_cable_unknown,
7793 .set_piomode = sch_set_piomode,
7794 -diff -urNp linux-2.6.32.48/drivers/ata/pata_serverworks.c linux-2.6.32.48/drivers/ata/pata_serverworks.c
7795 ---- linux-2.6.32.48/drivers/ata/pata_serverworks.c 2009-12-02 22:51:21.000000000 -0500
7796 -+++ linux-2.6.32.48/drivers/ata/pata_serverworks.c 2011-11-12 12:46:42.000000000 -0500
7797 +diff -urNp linux-2.6.32.46/drivers/ata/pata_serverworks.c linux-2.6.32.46/drivers/ata/pata_serverworks.c
7798 +--- linux-2.6.32.46/drivers/ata/pata_serverworks.c 2011-03-27 14:31:47.000000000 -0400
7799 ++++ linux-2.6.32.46/drivers/ata/pata_serverworks.c 2011-04-17 15:56:46.000000000 -0400
7800 @@ -299,7 +299,7 @@ static struct scsi_host_template serverw
7801 ATA_BMDMA_SHT(DRV_NAME),
7802 };
7803 @@ -26656,9 +26656,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_serverworks.c linux-2.6.32.48/driver
7804 .inherits = &serverworks_osb4_port_ops,
7805 .mode_filter = serverworks_csb_filter,
7806 };
7807 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sil680.c linux-2.6.32.48/drivers/ata/pata_sil680.c
7808 ---- linux-2.6.32.48/drivers/ata/pata_sil680.c 2011-11-12 12:44:28.000000000 -0500
7809 -+++ linux-2.6.32.48/drivers/ata/pata_sil680.c 2011-11-12 12:46:42.000000000 -0500
7810 +diff -urNp linux-2.6.32.46/drivers/ata/pata_sil680.c linux-2.6.32.46/drivers/ata/pata_sil680.c
7811 +--- linux-2.6.32.46/drivers/ata/pata_sil680.c 2011-06-25 12:55:34.000000000 -0400
7812 ++++ linux-2.6.32.46/drivers/ata/pata_sil680.c 2011-06-25 12:56:37.000000000 -0400
7813 @@ -194,7 +194,7 @@ static struct scsi_host_template sil680_
7814 ATA_BMDMA_SHT(DRV_NAME),
7815 };
7816 @@ -26668,9 +26668,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_sil680.c linux-2.6.32.48/drivers/ata
7817 .inherits = &ata_bmdma32_port_ops,
7818 .cable_detect = sil680_cable_detect,
7819 .set_piomode = sil680_set_piomode,
7820 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sis.c linux-2.6.32.48/drivers/ata/pata_sis.c
7821 ---- linux-2.6.32.48/drivers/ata/pata_sis.c 2009-12-02 22:51:21.000000000 -0500
7822 -+++ linux-2.6.32.48/drivers/ata/pata_sis.c 2011-11-12 12:46:42.000000000 -0500
7823 +diff -urNp linux-2.6.32.46/drivers/ata/pata_sis.c linux-2.6.32.46/drivers/ata/pata_sis.c
7824 +--- linux-2.6.32.46/drivers/ata/pata_sis.c 2011-03-27 14:31:47.000000000 -0400
7825 ++++ linux-2.6.32.46/drivers/ata/pata_sis.c 2011-04-17 15:56:46.000000000 -0400
7826 @@ -503,47 +503,47 @@ static struct scsi_host_template sis_sht
7827 ATA_BMDMA_SHT(DRV_NAME),
7828 };
7829 @@ -26726,9 +26726,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_sis.c linux-2.6.32.48/drivers/ata/pa
7830 .inherits = &sis_base_ops,
7831 .set_piomode = sis_old_set_piomode,
7832 .set_dmamode = sis_old_set_dmamode,
7833 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sl82c105.c linux-2.6.32.48/drivers/ata/pata_sl82c105.c
7834 ---- linux-2.6.32.48/drivers/ata/pata_sl82c105.c 2009-12-02 22:51:21.000000000 -0500
7835 -+++ linux-2.6.32.48/drivers/ata/pata_sl82c105.c 2011-11-12 12:46:42.000000000 -0500
7836 +diff -urNp linux-2.6.32.46/drivers/ata/pata_sl82c105.c linux-2.6.32.46/drivers/ata/pata_sl82c105.c
7837 +--- linux-2.6.32.46/drivers/ata/pata_sl82c105.c 2011-03-27 14:31:47.000000000 -0400
7838 ++++ linux-2.6.32.46/drivers/ata/pata_sl82c105.c 2011-04-17 15:56:46.000000000 -0400
7839 @@ -231,7 +231,7 @@ static struct scsi_host_template sl82c10
7840 ATA_BMDMA_SHT(DRV_NAME),
7841 };
7842 @@ -26738,9 +26738,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_sl82c105.c linux-2.6.32.48/drivers/a
7843 .inherits = &ata_bmdma_port_ops,
7844 .qc_defer = sl82c105_qc_defer,
7845 .bmdma_start = sl82c105_bmdma_start,
7846 -diff -urNp linux-2.6.32.48/drivers/ata/pata_triflex.c linux-2.6.32.48/drivers/ata/pata_triflex.c
7847 ---- linux-2.6.32.48/drivers/ata/pata_triflex.c 2009-12-02 22:51:21.000000000 -0500
7848 -+++ linux-2.6.32.48/drivers/ata/pata_triflex.c 2011-11-12 12:46:42.000000000 -0500
7849 +diff -urNp linux-2.6.32.46/drivers/ata/pata_triflex.c linux-2.6.32.46/drivers/ata/pata_triflex.c
7850 +--- linux-2.6.32.46/drivers/ata/pata_triflex.c 2011-03-27 14:31:47.000000000 -0400
7851 ++++ linux-2.6.32.46/drivers/ata/pata_triflex.c 2011-04-17 15:56:46.000000000 -0400
7852 @@ -178,7 +178,7 @@ static struct scsi_host_template triflex
7853 ATA_BMDMA_SHT(DRV_NAME),
7854 };
7855 @@ -26750,9 +26750,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_triflex.c linux-2.6.32.48/drivers/at
7856 .inherits = &ata_bmdma_port_ops,
7857 .bmdma_start = triflex_bmdma_start,
7858 .bmdma_stop = triflex_bmdma_stop,
7859 -diff -urNp linux-2.6.32.48/drivers/ata/pata_via.c linux-2.6.32.48/drivers/ata/pata_via.c
7860 ---- linux-2.6.32.48/drivers/ata/pata_via.c 2011-11-12 12:44:28.000000000 -0500
7861 -+++ linux-2.6.32.48/drivers/ata/pata_via.c 2011-11-12 12:46:42.000000000 -0500
7862 +diff -urNp linux-2.6.32.46/drivers/ata/pata_via.c linux-2.6.32.46/drivers/ata/pata_via.c
7863 +--- linux-2.6.32.46/drivers/ata/pata_via.c 2011-03-27 14:31:47.000000000 -0400
7864 ++++ linux-2.6.32.46/drivers/ata/pata_via.c 2011-04-17 15:56:46.000000000 -0400
7865 @@ -419,7 +419,7 @@ static struct scsi_host_template via_sht
7866 ATA_BMDMA_SHT(DRV_NAME),
7867 };
7868 @@ -26771,9 +26771,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_via.c linux-2.6.32.48/drivers/ata/pa
7869 .inherits = &via_port_ops,
7870 .sff_data_xfer = ata_sff_data_xfer_noirq,
7871 };
7872 -diff -urNp linux-2.6.32.48/drivers/ata/pata_winbond.c linux-2.6.32.48/drivers/ata/pata_winbond.c
7873 ---- linux-2.6.32.48/drivers/ata/pata_winbond.c 2009-12-02 22:51:21.000000000 -0500
7874 -+++ linux-2.6.32.48/drivers/ata/pata_winbond.c 2011-11-12 12:46:42.000000000 -0500
7875 +diff -urNp linux-2.6.32.46/drivers/ata/pata_winbond.c linux-2.6.32.46/drivers/ata/pata_winbond.c
7876 +--- linux-2.6.32.46/drivers/ata/pata_winbond.c 2011-03-27 14:31:47.000000000 -0400
7877 ++++ linux-2.6.32.46/drivers/ata/pata_winbond.c 2011-04-17 15:56:46.000000000 -0400
7878 @@ -125,7 +125,7 @@ static struct scsi_host_template winbond
7879 ATA_PIO_SHT(DRV_NAME),
7880 };
7881 @@ -26783,9 +26783,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pata_winbond.c linux-2.6.32.48/drivers/at
7882 .inherits = &ata_sff_port_ops,
7883 .sff_data_xfer = winbond_data_xfer,
7884 .cable_detect = ata_cable_40wire,
7885 -diff -urNp linux-2.6.32.48/drivers/ata/pdc_adma.c linux-2.6.32.48/drivers/ata/pdc_adma.c
7886 ---- linux-2.6.32.48/drivers/ata/pdc_adma.c 2009-12-02 22:51:21.000000000 -0500
7887 -+++ linux-2.6.32.48/drivers/ata/pdc_adma.c 2011-11-12 12:46:42.000000000 -0500
7888 +diff -urNp linux-2.6.32.46/drivers/ata/pdc_adma.c linux-2.6.32.46/drivers/ata/pdc_adma.c
7889 +--- linux-2.6.32.46/drivers/ata/pdc_adma.c 2011-03-27 14:31:47.000000000 -0400
7890 ++++ linux-2.6.32.46/drivers/ata/pdc_adma.c 2011-04-17 15:56:46.000000000 -0400
7891 @@ -145,7 +145,7 @@ static struct scsi_host_template adma_at
7892 .dma_boundary = ADMA_DMA_BOUNDARY,
7893 };
7894 @@ -26795,9 +26795,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/pdc_adma.c linux-2.6.32.48/drivers/ata/pd
7895 .inherits = &ata_sff_port_ops,
7896
7897 .lost_interrupt = ATA_OP_NULL,
7898 -diff -urNp linux-2.6.32.48/drivers/ata/sata_fsl.c linux-2.6.32.48/drivers/ata/sata_fsl.c
7899 ---- linux-2.6.32.48/drivers/ata/sata_fsl.c 2009-12-02 22:51:21.000000000 -0500
7900 -+++ linux-2.6.32.48/drivers/ata/sata_fsl.c 2011-11-12 12:46:42.000000000 -0500
7901 +diff -urNp linux-2.6.32.46/drivers/ata/sata_fsl.c linux-2.6.32.46/drivers/ata/sata_fsl.c
7902 +--- linux-2.6.32.46/drivers/ata/sata_fsl.c 2011-03-27 14:31:47.000000000 -0400
7903 ++++ linux-2.6.32.46/drivers/ata/sata_fsl.c 2011-04-17 15:56:46.000000000 -0400
7904 @@ -1258,7 +1258,7 @@ static struct scsi_host_template sata_fs
7905 .dma_boundary = ATA_DMA_BOUNDARY,
7906 };
7907 @@ -26807,9 +26807,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_fsl.c linux-2.6.32.48/drivers/ata/sa
7908 .inherits = &sata_pmp_port_ops,
7909
7910 .qc_defer = ata_std_qc_defer,
7911 -diff -urNp linux-2.6.32.48/drivers/ata/sata_inic162x.c linux-2.6.32.48/drivers/ata/sata_inic162x.c
7912 ---- linux-2.6.32.48/drivers/ata/sata_inic162x.c 2009-12-02 22:51:21.000000000 -0500
7913 -+++ linux-2.6.32.48/drivers/ata/sata_inic162x.c 2011-11-12 12:46:42.000000000 -0500
7914 +diff -urNp linux-2.6.32.46/drivers/ata/sata_inic162x.c linux-2.6.32.46/drivers/ata/sata_inic162x.c
7915 +--- linux-2.6.32.46/drivers/ata/sata_inic162x.c 2011-03-27 14:31:47.000000000 -0400
7916 ++++ linux-2.6.32.46/drivers/ata/sata_inic162x.c 2011-04-17 15:56:46.000000000 -0400
7917 @@ -721,7 +721,7 @@ static int inic_port_start(struct ata_po
7918 return 0;
7919 }
7920 @@ -26819,9 +26819,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_inic162x.c linux-2.6.32.48/drivers/a
7921 .inherits = &sata_port_ops,
7922
7923 .check_atapi_dma = inic_check_atapi_dma,
7924 -diff -urNp linux-2.6.32.48/drivers/ata/sata_mv.c linux-2.6.32.48/drivers/ata/sata_mv.c
7925 ---- linux-2.6.32.48/drivers/ata/sata_mv.c 2011-11-12 12:44:28.000000000 -0500
7926 -+++ linux-2.6.32.48/drivers/ata/sata_mv.c 2011-11-12 12:46:42.000000000 -0500
7927 +diff -urNp linux-2.6.32.46/drivers/ata/sata_mv.c linux-2.6.32.46/drivers/ata/sata_mv.c
7928 +--- linux-2.6.32.46/drivers/ata/sata_mv.c 2011-03-27 14:31:47.000000000 -0400
7929 ++++ linux-2.6.32.46/drivers/ata/sata_mv.c 2011-04-17 15:56:46.000000000 -0400
7930 @@ -656,7 +656,7 @@ static struct scsi_host_template mv6_sht
7931 .dma_boundary = MV_DMA_BOUNDARY,
7932 };
7933 @@ -26849,9 +26849,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_mv.c linux-2.6.32.48/drivers/ata/sat
7934 .inherits = &mv6_ops,
7935 .dev_config = ATA_OP_NULL,
7936 .qc_prep = mv_qc_prep_iie,
7937 -diff -urNp linux-2.6.32.48/drivers/ata/sata_nv.c linux-2.6.32.48/drivers/ata/sata_nv.c
7938 ---- linux-2.6.32.48/drivers/ata/sata_nv.c 2011-11-12 12:44:28.000000000 -0500
7939 -+++ linux-2.6.32.48/drivers/ata/sata_nv.c 2011-11-12 12:46:42.000000000 -0500
7940 +diff -urNp linux-2.6.32.46/drivers/ata/sata_nv.c linux-2.6.32.46/drivers/ata/sata_nv.c
7941 +--- linux-2.6.32.46/drivers/ata/sata_nv.c 2011-03-27 14:31:47.000000000 -0400
7942 ++++ linux-2.6.32.46/drivers/ata/sata_nv.c 2011-04-17 15:56:46.000000000 -0400
7943 @@ -464,7 +464,7 @@ static struct scsi_host_template nv_swnc
7944 * cases. Define nv_hardreset() which only kicks in for post-boot
7945 * probing and use it for all variants.
7946 @@ -26894,9 +26894,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_nv.c linux-2.6.32.48/drivers/ata/sat
7947 .inherits = &nv_generic_ops,
7948
7949 .qc_defer = ata_std_qc_defer,
7950 -diff -urNp linux-2.6.32.48/drivers/ata/sata_promise.c linux-2.6.32.48/drivers/ata/sata_promise.c
7951 ---- linux-2.6.32.48/drivers/ata/sata_promise.c 2009-12-02 22:51:21.000000000 -0500
7952 -+++ linux-2.6.32.48/drivers/ata/sata_promise.c 2011-11-12 12:46:42.000000000 -0500
7953 +diff -urNp linux-2.6.32.46/drivers/ata/sata_promise.c linux-2.6.32.46/drivers/ata/sata_promise.c
7954 +--- linux-2.6.32.46/drivers/ata/sata_promise.c 2011-03-27 14:31:47.000000000 -0400
7955 ++++ linux-2.6.32.46/drivers/ata/sata_promise.c 2011-04-17 15:56:46.000000000 -0400
7956 @@ -195,7 +195,7 @@ static const struct ata_port_operations
7957 .error_handler = pdc_error_handler,
7958 };
7959 @@ -26923,9 +26923,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_promise.c linux-2.6.32.48/drivers/at
7960 .inherits = &pdc_common_ops,
7961 .cable_detect = pdc_pata_cable_detect,
7962 .freeze = pdc_freeze,
7963 -diff -urNp linux-2.6.32.48/drivers/ata/sata_qstor.c linux-2.6.32.48/drivers/ata/sata_qstor.c
7964 ---- linux-2.6.32.48/drivers/ata/sata_qstor.c 2009-12-02 22:51:21.000000000 -0500
7965 -+++ linux-2.6.32.48/drivers/ata/sata_qstor.c 2011-11-12 12:46:42.000000000 -0500
7966 +diff -urNp linux-2.6.32.46/drivers/ata/sata_qstor.c linux-2.6.32.46/drivers/ata/sata_qstor.c
7967 +--- linux-2.6.32.46/drivers/ata/sata_qstor.c 2011-03-27 14:31:47.000000000 -0400
7968 ++++ linux-2.6.32.46/drivers/ata/sata_qstor.c 2011-04-17 15:56:46.000000000 -0400
7969 @@ -132,7 +132,7 @@ static struct scsi_host_template qs_ata_
7970 .dma_boundary = QS_DMA_BOUNDARY,
7971 };
7972 @@ -26935,9 +26935,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_qstor.c linux-2.6.32.48/drivers/ata/
7973 .inherits = &ata_sff_port_ops,
7974
7975 .check_atapi_dma = qs_check_atapi_dma,
7976 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sil24.c linux-2.6.32.48/drivers/ata/sata_sil24.c
7977 ---- linux-2.6.32.48/drivers/ata/sata_sil24.c 2009-12-02 22:51:21.000000000 -0500
7978 -+++ linux-2.6.32.48/drivers/ata/sata_sil24.c 2011-11-12 12:46:42.000000000 -0500
7979 +diff -urNp linux-2.6.32.46/drivers/ata/sata_sil24.c linux-2.6.32.46/drivers/ata/sata_sil24.c
7980 +--- linux-2.6.32.46/drivers/ata/sata_sil24.c 2011-03-27 14:31:47.000000000 -0400
7981 ++++ linux-2.6.32.46/drivers/ata/sata_sil24.c 2011-04-17 15:56:46.000000000 -0400
7982 @@ -388,7 +388,7 @@ static struct scsi_host_template sil24_s
7983 .dma_boundary = ATA_DMA_BOUNDARY,
7984 };
7985 @@ -26947,9 +26947,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_sil24.c linux-2.6.32.48/drivers/ata/
7986 .inherits = &sata_pmp_port_ops,
7987
7988 .qc_defer = sil24_qc_defer,
7989 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sil.c linux-2.6.32.48/drivers/ata/sata_sil.c
7990 ---- linux-2.6.32.48/drivers/ata/sata_sil.c 2009-12-02 22:51:21.000000000 -0500
7991 -+++ linux-2.6.32.48/drivers/ata/sata_sil.c 2011-11-12 12:46:42.000000000 -0500
7992 +diff -urNp linux-2.6.32.46/drivers/ata/sata_sil.c linux-2.6.32.46/drivers/ata/sata_sil.c
7993 +--- linux-2.6.32.46/drivers/ata/sata_sil.c 2011-03-27 14:31:47.000000000 -0400
7994 ++++ linux-2.6.32.46/drivers/ata/sata_sil.c 2011-04-17 15:56:46.000000000 -0400
7995 @@ -182,7 +182,7 @@ static struct scsi_host_template sil_sht
7996 .sg_tablesize = ATA_MAX_PRD
7997 };
7998 @@ -26959,9 +26959,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_sil.c linux-2.6.32.48/drivers/ata/sa
7999 .inherits = &ata_bmdma32_port_ops,
8000 .dev_config = sil_dev_config,
8001 .set_mode = sil_set_mode,
8002 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sis.c linux-2.6.32.48/drivers/ata/sata_sis.c
8003 ---- linux-2.6.32.48/drivers/ata/sata_sis.c 2009-12-02 22:51:21.000000000 -0500
8004 -+++ linux-2.6.32.48/drivers/ata/sata_sis.c 2011-11-12 12:46:42.000000000 -0500
8005 +diff -urNp linux-2.6.32.46/drivers/ata/sata_sis.c linux-2.6.32.46/drivers/ata/sata_sis.c
8006 +--- linux-2.6.32.46/drivers/ata/sata_sis.c 2011-03-27 14:31:47.000000000 -0400
8007 ++++ linux-2.6.32.46/drivers/ata/sata_sis.c 2011-04-17 15:56:46.000000000 -0400
8008 @@ -89,7 +89,7 @@ static struct scsi_host_template sis_sht
8009 ATA_BMDMA_SHT(DRV_NAME),
8010 };
8011 @@ -26971,9 +26971,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_sis.c linux-2.6.32.48/drivers/ata/sa
8012 .inherits = &ata_bmdma_port_ops,
8013 .scr_read = sis_scr_read,
8014 .scr_write = sis_scr_write,
8015 -diff -urNp linux-2.6.32.48/drivers/ata/sata_svw.c linux-2.6.32.48/drivers/ata/sata_svw.c
8016 ---- linux-2.6.32.48/drivers/ata/sata_svw.c 2009-12-02 22:51:21.000000000 -0500
8017 -+++ linux-2.6.32.48/drivers/ata/sata_svw.c 2011-11-12 12:46:42.000000000 -0500
8018 +diff -urNp linux-2.6.32.46/drivers/ata/sata_svw.c linux-2.6.32.46/drivers/ata/sata_svw.c
8019 +--- linux-2.6.32.46/drivers/ata/sata_svw.c 2011-03-27 14:31:47.000000000 -0400
8020 ++++ linux-2.6.32.46/drivers/ata/sata_svw.c 2011-04-17 15:56:46.000000000 -0400
8021 @@ -344,7 +344,7 @@ static struct scsi_host_template k2_sata
8022 };
8023
8024 @@ -26983,9 +26983,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_svw.c linux-2.6.32.48/drivers/ata/sa
8025 .inherits = &ata_bmdma_port_ops,
8026 .sff_tf_load = k2_sata_tf_load,
8027 .sff_tf_read = k2_sata_tf_read,
8028 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sx4.c linux-2.6.32.48/drivers/ata/sata_sx4.c
8029 ---- linux-2.6.32.48/drivers/ata/sata_sx4.c 2009-12-02 22:51:21.000000000 -0500
8030 -+++ linux-2.6.32.48/drivers/ata/sata_sx4.c 2011-11-12 12:46:42.000000000 -0500
8031 +diff -urNp linux-2.6.32.46/drivers/ata/sata_sx4.c linux-2.6.32.46/drivers/ata/sata_sx4.c
8032 +--- linux-2.6.32.46/drivers/ata/sata_sx4.c 2011-03-27 14:31:47.000000000 -0400
8033 ++++ linux-2.6.32.46/drivers/ata/sata_sx4.c 2011-04-17 15:56:46.000000000 -0400
8034 @@ -248,7 +248,7 @@ static struct scsi_host_template pdc_sat
8035 };
8036
8037 @@ -26995,9 +26995,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_sx4.c linux-2.6.32.48/drivers/ata/sa
8038 .inherits = &ata_sff_port_ops,
8039
8040 .check_atapi_dma = pdc_check_atapi_dma,
8041 -diff -urNp linux-2.6.32.48/drivers/ata/sata_uli.c linux-2.6.32.48/drivers/ata/sata_uli.c
8042 ---- linux-2.6.32.48/drivers/ata/sata_uli.c 2009-12-02 22:51:21.000000000 -0500
8043 -+++ linux-2.6.32.48/drivers/ata/sata_uli.c 2011-11-12 12:46:42.000000000 -0500
8044 +diff -urNp linux-2.6.32.46/drivers/ata/sata_uli.c linux-2.6.32.46/drivers/ata/sata_uli.c
8045 +--- linux-2.6.32.46/drivers/ata/sata_uli.c 2011-03-27 14:31:47.000000000 -0400
8046 ++++ linux-2.6.32.46/drivers/ata/sata_uli.c 2011-04-17 15:56:46.000000000 -0400
8047 @@ -79,7 +79,7 @@ static struct scsi_host_template uli_sht
8048 ATA_BMDMA_SHT(DRV_NAME),
8049 };
8050 @@ -27007,9 +27007,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_uli.c linux-2.6.32.48/drivers/ata/sa
8051 .inherits = &ata_bmdma_port_ops,
8052 .scr_read = uli_scr_read,
8053 .scr_write = uli_scr_write,
8054 -diff -urNp linux-2.6.32.48/drivers/ata/sata_via.c linux-2.6.32.48/drivers/ata/sata_via.c
8055 ---- linux-2.6.32.48/drivers/ata/sata_via.c 2011-11-12 12:44:28.000000000 -0500
8056 -+++ linux-2.6.32.48/drivers/ata/sata_via.c 2011-11-12 12:46:42.000000000 -0500
8057 +diff -urNp linux-2.6.32.46/drivers/ata/sata_via.c linux-2.6.32.46/drivers/ata/sata_via.c
8058 +--- linux-2.6.32.46/drivers/ata/sata_via.c 2011-05-10 22:12:01.000000000 -0400
8059 ++++ linux-2.6.32.46/drivers/ata/sata_via.c 2011-05-10 22:15:08.000000000 -0400
8060 @@ -115,32 +115,32 @@ static struct scsi_host_template svia_sh
8061 ATA_BMDMA_SHT(DRV_NAME),
8062 };
8063 @@ -27048,9 +27048,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_via.c linux-2.6.32.48/drivers/ata/sa
8064 .inherits = &svia_base_ops,
8065 .hardreset = sata_std_hardreset,
8066 .scr_read = vt8251_scr_read,
8067 -diff -urNp linux-2.6.32.48/drivers/ata/sata_vsc.c linux-2.6.32.48/drivers/ata/sata_vsc.c
8068 ---- linux-2.6.32.48/drivers/ata/sata_vsc.c 2009-12-02 22:51:21.000000000 -0500
8069 -+++ linux-2.6.32.48/drivers/ata/sata_vsc.c 2011-11-12 12:46:42.000000000 -0500
8070 +diff -urNp linux-2.6.32.46/drivers/ata/sata_vsc.c linux-2.6.32.46/drivers/ata/sata_vsc.c
8071 +--- linux-2.6.32.46/drivers/ata/sata_vsc.c 2011-03-27 14:31:47.000000000 -0400
8072 ++++ linux-2.6.32.46/drivers/ata/sata_vsc.c 2011-04-17 15:56:46.000000000 -0400
8073 @@ -306,7 +306,7 @@ static struct scsi_host_template vsc_sat
8074 };
8075
8076 @@ -27060,9 +27060,9 @@ diff -urNp linux-2.6.32.48/drivers/ata/sata_vsc.c linux-2.6.32.48/drivers/ata/sa
8077 .inherits = &ata_bmdma_port_ops,
8078 /* The IRQ handling is not quite standard SFF behaviour so we
8079 cannot use the default lost interrupt handler */
8080 -diff -urNp linux-2.6.32.48/drivers/atm/adummy.c linux-2.6.32.48/drivers/atm/adummy.c
8081 ---- linux-2.6.32.48/drivers/atm/adummy.c 2009-12-02 22:51:21.000000000 -0500
8082 -+++ linux-2.6.32.48/drivers/atm/adummy.c 2011-11-12 12:46:42.000000000 -0500
8083 +diff -urNp linux-2.6.32.46/drivers/atm/adummy.c linux-2.6.32.46/drivers/atm/adummy.c
8084 +--- linux-2.6.32.46/drivers/atm/adummy.c 2011-03-27 14:31:47.000000000 -0400
8085 ++++ linux-2.6.32.46/drivers/atm/adummy.c 2011-04-17 15:56:46.000000000 -0400
8086 @@ -77,7 +77,7 @@ adummy_send(struct atm_vcc *vcc, struct
8087 vcc->pop(vcc, skb);
8088 else
8089 @@ -27072,9 +27072,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/adummy.c linux-2.6.32.48/drivers/atm/adum
8090
8091 return 0;
8092 }
8093 -diff -urNp linux-2.6.32.48/drivers/atm/ambassador.c linux-2.6.32.48/drivers/atm/ambassador.c
8094 ---- linux-2.6.32.48/drivers/atm/ambassador.c 2009-12-02 22:51:21.000000000 -0500
8095 -+++ linux-2.6.32.48/drivers/atm/ambassador.c 2011-11-12 12:46:42.000000000 -0500
8096 +diff -urNp linux-2.6.32.46/drivers/atm/ambassador.c linux-2.6.32.46/drivers/atm/ambassador.c
8097 +--- linux-2.6.32.46/drivers/atm/ambassador.c 2011-03-27 14:31:47.000000000 -0400
8098 ++++ linux-2.6.32.46/drivers/atm/ambassador.c 2011-04-17 15:56:46.000000000 -0400
8099 @@ -453,7 +453,7 @@ static void tx_complete (amb_dev * dev,
8100 PRINTD (DBG_FLOW|DBG_TX, "tx_complete %p %p", dev, tx);
8101
8102 @@ -27111,9 +27111,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/ambassador.c linux-2.6.32.48/drivers/atm/
8103 return -ENOMEM; // ?
8104 }
8105
8106 -diff -urNp linux-2.6.32.48/drivers/atm/atmtcp.c linux-2.6.32.48/drivers/atm/atmtcp.c
8107 ---- linux-2.6.32.48/drivers/atm/atmtcp.c 2009-12-02 22:51:21.000000000 -0500
8108 -+++ linux-2.6.32.48/drivers/atm/atmtcp.c 2011-11-12 12:46:42.000000000 -0500
8109 +diff -urNp linux-2.6.32.46/drivers/atm/atmtcp.c linux-2.6.32.46/drivers/atm/atmtcp.c
8110 +--- linux-2.6.32.46/drivers/atm/atmtcp.c 2011-03-27 14:31:47.000000000 -0400
8111 ++++ linux-2.6.32.46/drivers/atm/atmtcp.c 2011-04-17 15:56:46.000000000 -0400
8112 @@ -206,7 +206,7 @@ static int atmtcp_v_send(struct atm_vcc
8113 if (vcc->pop) vcc->pop(vcc,skb);
8114 else dev_kfree_skb(skb);
8115 @@ -27163,9 +27163,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/atmtcp.c linux-2.6.32.48/drivers/atm/atmt
8116 done:
8117 if (vcc->pop) vcc->pop(vcc,skb);
8118 else dev_kfree_skb(skb);
8119 -diff -urNp linux-2.6.32.48/drivers/atm/eni.c linux-2.6.32.48/drivers/atm/eni.c
8120 ---- linux-2.6.32.48/drivers/atm/eni.c 2009-12-02 22:51:21.000000000 -0500
8121 -+++ linux-2.6.32.48/drivers/atm/eni.c 2011-11-12 12:46:42.000000000 -0500
8122 +diff -urNp linux-2.6.32.46/drivers/atm/eni.c linux-2.6.32.46/drivers/atm/eni.c
8123 +--- linux-2.6.32.46/drivers/atm/eni.c 2011-03-27 14:31:47.000000000 -0400
8124 ++++ linux-2.6.32.46/drivers/atm/eni.c 2011-04-17 15:56:46.000000000 -0400
8125 @@ -525,7 +525,7 @@ static int rx_aal0(struct atm_vcc *vcc)
8126 DPRINTK(DEV_LABEL "(itf %d): trashing empty cell\n",
8127 vcc->dev->number);
8128 @@ -27211,9 +27211,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/eni.c linux-2.6.32.48/drivers/atm/eni.c
8129 wake_up(&eni_dev->tx_wait);
8130 dma_complete++;
8131 }
8132 -diff -urNp linux-2.6.32.48/drivers/atm/firestream.c linux-2.6.32.48/drivers/atm/firestream.c
8133 ---- linux-2.6.32.48/drivers/atm/firestream.c 2009-12-02 22:51:21.000000000 -0500
8134 -+++ linux-2.6.32.48/drivers/atm/firestream.c 2011-11-12 12:46:42.000000000 -0500
8135 +diff -urNp linux-2.6.32.46/drivers/atm/firestream.c linux-2.6.32.46/drivers/atm/firestream.c
8136 +--- linux-2.6.32.46/drivers/atm/firestream.c 2011-03-27 14:31:47.000000000 -0400
8137 ++++ linux-2.6.32.46/drivers/atm/firestream.c 2011-04-17 15:56:46.000000000 -0400
8138 @@ -748,7 +748,7 @@ static void process_txdone_queue (struct
8139 }
8140 }
8141 @@ -27247,9 +27247,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/firestream.c linux-2.6.32.48/drivers/atm/
8142 break;
8143 default: /* Hmm. Haven't written the code to handle the others yet... -- REW */
8144 printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n",
8145 -diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fore200e.c
8146 ---- linux-2.6.32.48/drivers/atm/fore200e.c 2009-12-02 22:51:21.000000000 -0500
8147 -+++ linux-2.6.32.48/drivers/atm/fore200e.c 2011-11-12 12:46:42.000000000 -0500
8148 +diff -urNp linux-2.6.32.46/drivers/atm/fore200e.c linux-2.6.32.46/drivers/atm/fore200e.c
8149 +--- linux-2.6.32.46/drivers/atm/fore200e.c 2011-03-27 14:31:47.000000000 -0400
8150 ++++ linux-2.6.32.46/drivers/atm/fore200e.c 2011-04-17 15:56:46.000000000 -0400
8151 @@ -931,9 +931,9 @@ fore200e_tx_irq(struct fore200e* fore200
8152 #endif
8153 /* check error condition */
8154 @@ -27306,9 +27306,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fo
8155
8156 fore200e->tx_sat++;
8157 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n",
8158 -diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
8159 ---- linux-2.6.32.48/drivers/atm/he.c 2009-12-02 22:51:21.000000000 -0500
8160 -+++ linux-2.6.32.48/drivers/atm/he.c 2011-11-12 12:46:42.000000000 -0500
8161 +diff -urNp linux-2.6.32.46/drivers/atm/he.c linux-2.6.32.46/drivers/atm/he.c
8162 +--- linux-2.6.32.46/drivers/atm/he.c 2011-03-27 14:31:47.000000000 -0400
8163 ++++ linux-2.6.32.46/drivers/atm/he.c 2011-04-17 15:56:46.000000000 -0400
8164 @@ -1769,7 +1769,7 @@ he_service_rbrq(struct he_dev *he_dev, i
8165
8166 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) {
8167 @@ -27390,9 +27390,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
8168
8169 return 0;
8170 }
8171 -diff -urNp linux-2.6.32.48/drivers/atm/horizon.c linux-2.6.32.48/drivers/atm/horizon.c
8172 ---- linux-2.6.32.48/drivers/atm/horizon.c 2009-12-02 22:51:21.000000000 -0500
8173 -+++ linux-2.6.32.48/drivers/atm/horizon.c 2011-11-12 12:46:42.000000000 -0500
8174 +diff -urNp linux-2.6.32.46/drivers/atm/horizon.c linux-2.6.32.46/drivers/atm/horizon.c
8175 +--- linux-2.6.32.46/drivers/atm/horizon.c 2011-03-27 14:31:47.000000000 -0400
8176 ++++ linux-2.6.32.46/drivers/atm/horizon.c 2011-04-17 15:56:46.000000000 -0400
8177 @@ -1033,7 +1033,7 @@ static void rx_schedule (hrz_dev * dev,
8178 {
8179 struct atm_vcc * vcc = ATM_SKB(skb)->vcc;
8180 @@ -27411,9 +27411,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/horizon.c linux-2.6.32.48/drivers/atm/hor
8181
8182 // free the skb
8183 hrz_kfree_skb (skb);
8184 -diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/idt77252.c
8185 ---- linux-2.6.32.48/drivers/atm/idt77252.c 2009-12-02 22:51:21.000000000 -0500
8186 -+++ linux-2.6.32.48/drivers/atm/idt77252.c 2011-11-12 12:46:42.000000000 -0500
8187 +diff -urNp linux-2.6.32.46/drivers/atm/idt77252.c linux-2.6.32.46/drivers/atm/idt77252.c
8188 +--- linux-2.6.32.46/drivers/atm/idt77252.c 2011-03-27 14:31:47.000000000 -0400
8189 ++++ linux-2.6.32.46/drivers/atm/idt77252.c 2011-04-17 15:56:46.000000000 -0400
8190 @@ -810,7 +810,7 @@ drain_scq(struct idt77252_dev *card, str
8191 else
8192 dev_kfree_skb(skb);
8193 @@ -27568,9 +27568,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
8194 return -ENOMEM;
8195 }
8196 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
8197 -diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/iphase.c
8198 ---- linux-2.6.32.48/drivers/atm/iphase.c 2009-12-02 22:51:21.000000000 -0500
8199 -+++ linux-2.6.32.48/drivers/atm/iphase.c 2011-11-12 12:46:42.000000000 -0500
8200 +diff -urNp linux-2.6.32.46/drivers/atm/iphase.c linux-2.6.32.46/drivers/atm/iphase.c
8201 +--- linux-2.6.32.46/drivers/atm/iphase.c 2011-03-27 14:31:47.000000000 -0400
8202 ++++ linux-2.6.32.46/drivers/atm/iphase.c 2011-04-17 15:56:46.000000000 -0400
8203 @@ -1123,7 +1123,7 @@ static int rx_pkt(struct atm_dev *dev)
8204 status = (u_short) (buf_desc_ptr->desc_mode);
8205 if (status & (RX_CER | RX_PTE | RX_OFL))
8206 @@ -27667,9 +27667,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
8207 if (iavcc->vc_desc_cnt > 10) {
8208 vcc->tx_quota = vcc->tx_quota * 3 / 4;
8209 printk("Tx1: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
8210 -diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai.c
8211 ---- linux-2.6.32.48/drivers/atm/lanai.c 2009-12-02 22:51:21.000000000 -0500
8212 -+++ linux-2.6.32.48/drivers/atm/lanai.c 2011-11-12 12:46:42.000000000 -0500
8213 +diff -urNp linux-2.6.32.46/drivers/atm/lanai.c linux-2.6.32.46/drivers/atm/lanai.c
8214 +--- linux-2.6.32.46/drivers/atm/lanai.c 2011-03-27 14:31:47.000000000 -0400
8215 ++++ linux-2.6.32.46/drivers/atm/lanai.c 2011-04-17 15:56:46.000000000 -0400
8216 @@ -1305,7 +1305,7 @@ static void lanai_send_one_aal5(struct l
8217 vcc_tx_add_aal5_trailer(lvcc, skb->len, 0, 0);
8218 lanai_endtx(lanai, lvcc);
8219 @@ -27724,9 +27724,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai
8220 lvcc->stats.x.aal5.service_rxcrc++;
8221 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4];
8222 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr);
8223 -diff -urNp linux-2.6.32.48/drivers/atm/nicstar.c linux-2.6.32.48/drivers/atm/nicstar.c
8224 ---- linux-2.6.32.48/drivers/atm/nicstar.c 2009-12-02 22:51:21.000000000 -0500
8225 -+++ linux-2.6.32.48/drivers/atm/nicstar.c 2011-11-12 12:46:42.000000000 -0500
8226 +diff -urNp linux-2.6.32.46/drivers/atm/nicstar.c linux-2.6.32.46/drivers/atm/nicstar.c
8227 +--- linux-2.6.32.46/drivers/atm/nicstar.c 2011-03-27 14:31:47.000000000 -0400
8228 ++++ linux-2.6.32.46/drivers/atm/nicstar.c 2011-04-17 15:56:46.000000000 -0400
8229 @@ -1723,7 +1723,7 @@ static int ns_send(struct atm_vcc *vcc,
8230 if ((vc = (vc_map *) vcc->dev_data) == NULL)
8231 {
8232 @@ -27929,9 +27929,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/nicstar.c linux-2.6.32.48/drivers/atm/nic
8233 }
8234 }
8235
8236 -diff -urNp linux-2.6.32.48/drivers/atm/solos-pci.c linux-2.6.32.48/drivers/atm/solos-pci.c
8237 ---- linux-2.6.32.48/drivers/atm/solos-pci.c 2011-11-12 12:44:28.000000000 -0500
8238 -+++ linux-2.6.32.48/drivers/atm/solos-pci.c 2011-11-12 12:46:42.000000000 -0500
8239 +diff -urNp linux-2.6.32.46/drivers/atm/solos-pci.c linux-2.6.32.46/drivers/atm/solos-pci.c
8240 +--- linux-2.6.32.46/drivers/atm/solos-pci.c 2011-04-17 17:00:52.000000000 -0400
8241 ++++ linux-2.6.32.46/drivers/atm/solos-pci.c 2011-05-16 21:46:57.000000000 -0400
8242 @@ -708,7 +708,7 @@ void solos_bh(unsigned long card_arg)
8243 }
8244 atm_charge(vcc, skb->truesize);
8245 @@ -27959,9 +27959,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/solos-pci.c linux-2.6.32.48/drivers/atm/s
8246 solos_pop(vcc, oldskb);
8247 } else
8248 dev_kfree_skb_irq(oldskb);
8249 -diff -urNp linux-2.6.32.48/drivers/atm/suni.c linux-2.6.32.48/drivers/atm/suni.c
8250 ---- linux-2.6.32.48/drivers/atm/suni.c 2009-12-02 22:51:21.000000000 -0500
8251 -+++ linux-2.6.32.48/drivers/atm/suni.c 2011-11-12 12:46:42.000000000 -0500
8252 +diff -urNp linux-2.6.32.46/drivers/atm/suni.c linux-2.6.32.46/drivers/atm/suni.c
8253 +--- linux-2.6.32.46/drivers/atm/suni.c 2011-03-27 14:31:47.000000000 -0400
8254 ++++ linux-2.6.32.46/drivers/atm/suni.c 2011-04-17 15:56:46.000000000 -0400
8255 @@ -49,8 +49,8 @@ static DEFINE_SPINLOCK(sunis_lock);
8256
8257
8258 @@ -27973,9 +27973,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/suni.c linux-2.6.32.48/drivers/atm/suni.c
8259
8260
8261 static void suni_hz(unsigned long from_timer)
8262 -diff -urNp linux-2.6.32.48/drivers/atm/uPD98402.c linux-2.6.32.48/drivers/atm/uPD98402.c
8263 ---- linux-2.6.32.48/drivers/atm/uPD98402.c 2009-12-02 22:51:21.000000000 -0500
8264 -+++ linux-2.6.32.48/drivers/atm/uPD98402.c 2011-11-12 12:46:42.000000000 -0500
8265 +diff -urNp linux-2.6.32.46/drivers/atm/uPD98402.c linux-2.6.32.46/drivers/atm/uPD98402.c
8266 +--- linux-2.6.32.46/drivers/atm/uPD98402.c 2011-03-27 14:31:47.000000000 -0400
8267 ++++ linux-2.6.32.46/drivers/atm/uPD98402.c 2011-04-17 15:56:46.000000000 -0400
8268 @@ -41,7 +41,7 @@ static int fetch_stats(struct atm_dev *d
8269 struct sonet_stats tmp;
8270 int error = 0;
8271 @@ -28020,9 +28020,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/uPD98402.c linux-2.6.32.48/drivers/atm/uP
8272 return 0;
8273 }
8274
8275 -diff -urNp linux-2.6.32.48/drivers/atm/zatm.c linux-2.6.32.48/drivers/atm/zatm.c
8276 ---- linux-2.6.32.48/drivers/atm/zatm.c 2009-12-02 22:51:21.000000000 -0500
8277 -+++ linux-2.6.32.48/drivers/atm/zatm.c 2011-11-12 12:46:42.000000000 -0500
8278 +diff -urNp linux-2.6.32.46/drivers/atm/zatm.c linux-2.6.32.46/drivers/atm/zatm.c
8279 +--- linux-2.6.32.46/drivers/atm/zatm.c 2011-03-27 14:31:47.000000000 -0400
8280 ++++ linux-2.6.32.46/drivers/atm/zatm.c 2011-04-17 15:56:46.000000000 -0400
8281 @@ -458,7 +458,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
8282 }
8283 if (!size) {
8284 @@ -28050,9 +28050,9 @@ diff -urNp linux-2.6.32.48/drivers/atm/zatm.c linux-2.6.32.48/drivers/atm/zatm.c
8285 wake_up(&zatm_vcc->tx_wait);
8286 }
8287
8288 -diff -urNp linux-2.6.32.48/drivers/base/bus.c linux-2.6.32.48/drivers/base/bus.c
8289 ---- linux-2.6.32.48/drivers/base/bus.c 2009-12-02 22:51:21.000000000 -0500
8290 -+++ linux-2.6.32.48/drivers/base/bus.c 2011-11-12 12:46:42.000000000 -0500
8291 +diff -urNp linux-2.6.32.46/drivers/base/bus.c linux-2.6.32.46/drivers/base/bus.c
8292 +--- linux-2.6.32.46/drivers/base/bus.c 2011-03-27 14:31:47.000000000 -0400
8293 ++++ linux-2.6.32.46/drivers/base/bus.c 2011-04-17 15:56:46.000000000 -0400
8294 @@ -70,7 +70,7 @@ static ssize_t drv_attr_store(struct kob
8295 return ret;
8296 }
8297 @@ -28080,9 +28080,9 @@ diff -urNp linux-2.6.32.48/drivers/base/bus.c linux-2.6.32.48/drivers/base/bus.c
8298 .filter = bus_uevent_filter,
8299 };
8300
8301 -diff -urNp linux-2.6.32.48/drivers/base/class.c linux-2.6.32.48/drivers/base/class.c
8302 ---- linux-2.6.32.48/drivers/base/class.c 2011-11-12 12:44:28.000000000 -0500
8303 -+++ linux-2.6.32.48/drivers/base/class.c 2011-11-12 12:46:42.000000000 -0500
8304 +diff -urNp linux-2.6.32.46/drivers/base/class.c linux-2.6.32.46/drivers/base/class.c
8305 +--- linux-2.6.32.46/drivers/base/class.c 2011-03-27 14:31:47.000000000 -0400
8306 ++++ linux-2.6.32.46/drivers/base/class.c 2011-04-17 15:56:46.000000000 -0400
8307 @@ -63,7 +63,7 @@ static void class_release(struct kobject
8308 kfree(cp);
8309 }
8310 @@ -28092,9 +28092,9 @@ diff -urNp linux-2.6.32.48/drivers/base/class.c linux-2.6.32.48/drivers/base/cla
8311 .show = class_attr_show,
8312 .store = class_attr_store,
8313 };
8314 -diff -urNp linux-2.6.32.48/drivers/base/core.c linux-2.6.32.48/drivers/base/core.c
8315 ---- linux-2.6.32.48/drivers/base/core.c 2011-11-12 12:44:28.000000000 -0500
8316 -+++ linux-2.6.32.48/drivers/base/core.c 2011-11-12 12:46:42.000000000 -0500
8317 +diff -urNp linux-2.6.32.46/drivers/base/core.c linux-2.6.32.46/drivers/base/core.c
8318 +--- linux-2.6.32.46/drivers/base/core.c 2011-03-27 14:31:47.000000000 -0400
8319 ++++ linux-2.6.32.46/drivers/base/core.c 2011-04-17 15:56:46.000000000 -0400
8320 @@ -100,7 +100,7 @@ static ssize_t dev_attr_store(struct kob
8321 return ret;
8322 }
8323 @@ -28113,9 +28113,9 @@ diff -urNp linux-2.6.32.48/drivers/base/core.c linux-2.6.32.48/drivers/base/core
8324 .filter = dev_uevent_filter,
8325 .name = dev_uevent_name,
8326 .uevent = dev_uevent,
8327 -diff -urNp linux-2.6.32.48/drivers/base/memory.c linux-2.6.32.48/drivers/base/memory.c
8328 ---- linux-2.6.32.48/drivers/base/memory.c 2009-12-02 22:51:21.000000000 -0500
8329 -+++ linux-2.6.32.48/drivers/base/memory.c 2011-11-12 12:46:42.000000000 -0500
8330 +diff -urNp linux-2.6.32.46/drivers/base/memory.c linux-2.6.32.46/drivers/base/memory.c
8331 +--- linux-2.6.32.46/drivers/base/memory.c 2011-03-27 14:31:47.000000000 -0400
8332 ++++ linux-2.6.32.46/drivers/base/memory.c 2011-04-17 15:56:46.000000000 -0400
8333 @@ -44,7 +44,7 @@ static int memory_uevent(struct kset *ks
8334 return retval;
8335 }
8336 @@ -28125,9 +28125,9 @@ diff -urNp linux-2.6.32.48/drivers/base/memory.c linux-2.6.32.48/drivers/base/me
8337 .name = memory_uevent_name,
8338 .uevent = memory_uevent,
8339 };
8340 -diff -urNp linux-2.6.32.48/drivers/base/sys.c linux-2.6.32.48/drivers/base/sys.c
8341 ---- linux-2.6.32.48/drivers/base/sys.c 2009-12-02 22:51:21.000000000 -0500
8342 -+++ linux-2.6.32.48/drivers/base/sys.c 2011-11-12 12:46:42.000000000 -0500
8343 +diff -urNp linux-2.6.32.46/drivers/base/sys.c linux-2.6.32.46/drivers/base/sys.c
8344 +--- linux-2.6.32.46/drivers/base/sys.c 2011-03-27 14:31:47.000000000 -0400
8345 ++++ linux-2.6.32.46/drivers/base/sys.c 2011-04-17 15:56:46.000000000 -0400
8346 @@ -54,7 +54,7 @@ sysdev_store(struct kobject *kobj, struc
8347 return -EIO;
8348 }
8349 @@ -28146,9 +28146,9 @@ diff -urNp linux-2.6.32.48/drivers/base/sys.c linux-2.6.32.48/drivers/base/sys.c
8350 .show = sysdev_class_show,
8351 .store = sysdev_class_store,
8352 };
8353 -diff -urNp linux-2.6.32.48/drivers/block/cciss.c linux-2.6.32.48/drivers/block/cciss.c
8354 ---- linux-2.6.32.48/drivers/block/cciss.c 2011-11-12 12:44:28.000000000 -0500
8355 -+++ linux-2.6.32.48/drivers/block/cciss.c 2011-11-12 12:46:42.000000000 -0500
8356 +diff -urNp linux-2.6.32.46/drivers/block/cciss.c linux-2.6.32.46/drivers/block/cciss.c
8357 +--- linux-2.6.32.46/drivers/block/cciss.c 2011-03-27 14:31:47.000000000 -0400
8358 ++++ linux-2.6.32.46/drivers/block/cciss.c 2011-08-05 20:33:55.000000000 -0400
8359 @@ -1011,6 +1011,8 @@ static int cciss_ioctl32_passthru(struct
8360 int err;
8361 u32 cp;
8362 @@ -28258,9 +28258,9 @@ diff -urNp linux-2.6.32.48/drivers/block/cciss.c linux-2.6.32.48/drivers/block/c
8363
8364 /* Get the firmware version */
8365 inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
8366 -diff -urNp linux-2.6.32.48/drivers/block/cciss.h linux-2.6.32.48/drivers/block/cciss.h
8367 ---- linux-2.6.32.48/drivers/block/cciss.h 2011-11-12 12:44:28.000000000 -0500
8368 -+++ linux-2.6.32.48/drivers/block/cciss.h 2011-11-12 12:46:42.000000000 -0500
8369 +diff -urNp linux-2.6.32.46/drivers/block/cciss.h linux-2.6.32.46/drivers/block/cciss.h
8370 +--- linux-2.6.32.46/drivers/block/cciss.h 2011-08-09 18:35:28.000000000 -0400
8371 ++++ linux-2.6.32.46/drivers/block/cciss.h 2011-08-09 18:33:59.000000000 -0400
8372 @@ -90,7 +90,7 @@ struct ctlr_info
8373 // information about each logical volume
8374 drive_info_struct *drv[CISS_MAX_LUN];
8375 @@ -28270,9 +28270,9 @@ diff -urNp linux-2.6.32.48/drivers/block/cciss.h linux-2.6.32.48/drivers/block/c
8376
8377 /* queue and queue Info */
8378 struct hlist_head reqQ;
8379 -diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/block/cpqarray.c
8380 ---- linux-2.6.32.48/drivers/block/cpqarray.c 2009-12-02 22:51:21.000000000 -0500
8381 -+++ linux-2.6.32.48/drivers/block/cpqarray.c 2011-11-12 12:46:42.000000000 -0500
8382 +diff -urNp linux-2.6.32.46/drivers/block/cpqarray.c linux-2.6.32.46/drivers/block/cpqarray.c
8383 +--- linux-2.6.32.46/drivers/block/cpqarray.c 2011-03-27 14:31:47.000000000 -0400
8384 ++++ linux-2.6.32.46/drivers/block/cpqarray.c 2011-08-05 20:33:55.000000000 -0400
8385 @@ -402,7 +402,7 @@ static int __init cpqarray_register_ctlr
8386 if (register_blkdev(COMPAQ_SMART2_MAJOR+i, hba[i]->devname)) {
8387 goto Enomem4;
8388 @@ -28398,9 +28398,9 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
8389 if (done == 0) {
8390 udelay(10); /* a short fixed delay */
8391 } else
8392 -diff -urNp linux-2.6.32.48/drivers/block/cpqarray.h linux-2.6.32.48/drivers/block/cpqarray.h
8393 ---- linux-2.6.32.48/drivers/block/cpqarray.h 2009-12-02 22:51:21.000000000 -0500
8394 -+++ linux-2.6.32.48/drivers/block/cpqarray.h 2011-11-12 12:46:42.000000000 -0500
8395 +diff -urNp linux-2.6.32.46/drivers/block/cpqarray.h linux-2.6.32.46/drivers/block/cpqarray.h
8396 +--- linux-2.6.32.46/drivers/block/cpqarray.h 2011-03-27 14:31:47.000000000 -0400
8397 ++++ linux-2.6.32.46/drivers/block/cpqarray.h 2011-08-05 20:33:55.000000000 -0400
8398 @@ -99,7 +99,7 @@ struct ctlr_info {
8399 drv_info_t drv[NWD];
8400 struct proc_dir_entry *proc;
8401 @@ -28410,9 +28410,9 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.h linux-2.6.32.48/drivers/bloc
8402
8403 cmdlist_t *reqQ;
8404 cmdlist_t *cmpQ;
8405 -diff -urNp linux-2.6.32.48/drivers/block/DAC960.c linux-2.6.32.48/drivers/block/DAC960.c
8406 ---- linux-2.6.32.48/drivers/block/DAC960.c 2009-12-02 22:51:21.000000000 -0500
8407 -+++ linux-2.6.32.48/drivers/block/DAC960.c 2011-11-12 12:46:42.000000000 -0500
8408 +diff -urNp linux-2.6.32.46/drivers/block/DAC960.c linux-2.6.32.46/drivers/block/DAC960.c
8409 +--- linux-2.6.32.46/drivers/block/DAC960.c 2011-03-27 14:31:47.000000000 -0400
8410 ++++ linux-2.6.32.46/drivers/block/DAC960.c 2011-05-16 21:46:57.000000000 -0400
8411 @@ -1973,6 +1973,8 @@ static bool DAC960_V1_ReadDeviceConfigur
8412 unsigned long flags;
8413 int Channel, TargetID;
8414 @@ -28422,9 +28422,9 @@ diff -urNp linux-2.6.32.48/drivers/block/DAC960.c linux-2.6.32.48/drivers/block/
8415 if (!init_dma_loaf(Controller->PCIDevice, &local_dma,
8416 DAC960_V1_MaxChannels*(sizeof(DAC960_V1_DCDB_T) +
8417 sizeof(DAC960_SCSI_Inquiry_T) +
8418 -diff -urNp linux-2.6.32.48/drivers/block/loop.c linux-2.6.32.48/drivers/block/loop.c
8419 ---- linux-2.6.32.48/drivers/block/loop.c 2011-11-12 12:44:28.000000000 -0500
8420 -+++ linux-2.6.32.48/drivers/block/loop.c 2011-11-12 12:46:42.000000000 -0500
8421 +diff -urNp linux-2.6.32.46/drivers/block/loop.c linux-2.6.32.46/drivers/block/loop.c
8422 +--- linux-2.6.32.46/drivers/block/loop.c 2011-06-25 12:55:34.000000000 -0400
8423 ++++ linux-2.6.32.46/drivers/block/loop.c 2011-10-06 09:37:14.000000000 -0400
8424 @@ -282,7 +282,7 @@ static int __do_lo_send_write(struct fil
8425 mm_segment_t old_fs = get_fs();
8426
8427 @@ -28434,9 +28434,9 @@ diff -urNp linux-2.6.32.48/drivers/block/loop.c linux-2.6.32.48/drivers/block/lo
8428 set_fs(old_fs);
8429 if (likely(bw == len))
8430 return 0;
8431 -diff -urNp linux-2.6.32.48/drivers/block/nbd.c linux-2.6.32.48/drivers/block/nbd.c
8432 ---- linux-2.6.32.48/drivers/block/nbd.c 2011-11-12 12:44:28.000000000 -0500
8433 -+++ linux-2.6.32.48/drivers/block/nbd.c 2011-11-12 12:46:42.000000000 -0500
8434 +diff -urNp linux-2.6.32.46/drivers/block/nbd.c linux-2.6.32.46/drivers/block/nbd.c
8435 +--- linux-2.6.32.46/drivers/block/nbd.c 2011-06-25 12:55:34.000000000 -0400
8436 ++++ linux-2.6.32.46/drivers/block/nbd.c 2011-06-25 12:56:37.000000000 -0400
8437 @@ -155,6 +155,8 @@ static int sock_xmit(struct nbd_device *
8438 struct kvec iov;
8439 sigset_t blocked, oldset;
8440 @@ -28455,9 +28455,9 @@ diff -urNp linux-2.6.32.48/drivers/block/nbd.c linux-2.6.32.48/drivers/block/nbd
8441 switch (cmd) {
8442 case NBD_DISCONNECT: {
8443 struct request sreq;
8444 -diff -urNp linux-2.6.32.48/drivers/block/pktcdvd.c linux-2.6.32.48/drivers/block/pktcdvd.c
8445 ---- linux-2.6.32.48/drivers/block/pktcdvd.c 2011-11-12 12:44:28.000000000 -0500
8446 -+++ linux-2.6.32.48/drivers/block/pktcdvd.c 2011-11-12 12:46:42.000000000 -0500
8447 +diff -urNp linux-2.6.32.46/drivers/block/pktcdvd.c linux-2.6.32.46/drivers/block/pktcdvd.c
8448 +--- linux-2.6.32.46/drivers/block/pktcdvd.c 2011-03-27 14:31:47.000000000 -0400
8449 ++++ linux-2.6.32.46/drivers/block/pktcdvd.c 2011-04-17 15:56:46.000000000 -0400
8450 @@ -284,7 +284,7 @@ static ssize_t kobj_pkt_store(struct kob
8451 return len;
8452 }
8453 @@ -28467,9 +28467,9 @@ diff -urNp linux-2.6.32.48/drivers/block/pktcdvd.c linux-2.6.32.48/drivers/block
8454 .show = kobj_pkt_show,
8455 .store = kobj_pkt_store
8456 };
8457 -diff -urNp linux-2.6.32.48/drivers/char/agp/frontend.c linux-2.6.32.48/drivers/char/agp/frontend.c
8458 ---- linux-2.6.32.48/drivers/char/agp/frontend.c 2009-12-02 22:51:21.000000000 -0500
8459 -+++ linux-2.6.32.48/drivers/char/agp/frontend.c 2011-11-12 12:46:42.000000000 -0500
8460 +diff -urNp linux-2.6.32.46/drivers/char/agp/frontend.c linux-2.6.32.46/drivers/char/agp/frontend.c
8461 +--- linux-2.6.32.46/drivers/char/agp/frontend.c 2011-03-27 14:31:47.000000000 -0400
8462 ++++ linux-2.6.32.46/drivers/char/agp/frontend.c 2011-04-17 15:56:46.000000000 -0400
8463 @@ -824,7 +824,7 @@ static int agpioc_reserve_wrap(struct ag
8464 if (copy_from_user(&reserve, arg, sizeof(struct agp_region)))
8465 return -EFAULT;
8466 @@ -28479,9 +28479,9 @@ diff -urNp linux-2.6.32.48/drivers/char/agp/frontend.c linux-2.6.32.48/drivers/c
8467 return -EFAULT;
8468
8469 client = agp_find_client_by_pid(reserve.pid);
8470 -diff -urNp linux-2.6.32.48/drivers/char/briq_panel.c linux-2.6.32.48/drivers/char/briq_panel.c
8471 ---- linux-2.6.32.48/drivers/char/briq_panel.c 2009-12-02 22:51:21.000000000 -0500
8472 -+++ linux-2.6.32.48/drivers/char/briq_panel.c 2011-11-12 12:46:42.000000000 -0500
8473 +diff -urNp linux-2.6.32.46/drivers/char/briq_panel.c linux-2.6.32.46/drivers/char/briq_panel.c
8474 +--- linux-2.6.32.46/drivers/char/briq_panel.c 2011-03-27 14:31:47.000000000 -0400
8475 ++++ linux-2.6.32.46/drivers/char/briq_panel.c 2011-04-18 19:48:57.000000000 -0400
8476 @@ -10,6 +10,7 @@
8477 #include <linux/types.h>
8478 #include <linux/errno.h>
8479 @@ -28523,9 +28523,9 @@ diff -urNp linux-2.6.32.48/drivers/char/briq_panel.c linux-2.6.32.48/drivers/cha
8480
8481 return len;
8482 }
8483 -diff -urNp linux-2.6.32.48/drivers/char/genrtc.c linux-2.6.32.48/drivers/char/genrtc.c
8484 ---- linux-2.6.32.48/drivers/char/genrtc.c 2009-12-02 22:51:21.000000000 -0500
8485 -+++ linux-2.6.32.48/drivers/char/genrtc.c 2011-11-12 12:46:42.000000000 -0500
8486 +diff -urNp linux-2.6.32.46/drivers/char/genrtc.c linux-2.6.32.46/drivers/char/genrtc.c
8487 +--- linux-2.6.32.46/drivers/char/genrtc.c 2011-03-27 14:31:47.000000000 -0400
8488 ++++ linux-2.6.32.46/drivers/char/genrtc.c 2011-04-18 19:45:42.000000000 -0400
8489 @@ -272,6 +272,7 @@ static int gen_rtc_ioctl(struct inode *i
8490 switch (cmd) {
8491
8492 @@ -28534,9 +28534,9 @@ diff -urNp linux-2.6.32.48/drivers/char/genrtc.c linux-2.6.32.48/drivers/char/ge
8493 if (get_rtc_pll(&pll))
8494 return -EINVAL;
8495 else
8496 -diff -urNp linux-2.6.32.48/drivers/char/hpet.c linux-2.6.32.48/drivers/char/hpet.c
8497 ---- linux-2.6.32.48/drivers/char/hpet.c 2011-11-12 12:44:28.000000000 -0500
8498 -+++ linux-2.6.32.48/drivers/char/hpet.c 2011-11-12 12:46:42.000000000 -0500
8499 +diff -urNp linux-2.6.32.46/drivers/char/hpet.c linux-2.6.32.46/drivers/char/hpet.c
8500 +--- linux-2.6.32.46/drivers/char/hpet.c 2011-03-27 14:31:47.000000000 -0400
8501 ++++ linux-2.6.32.46/drivers/char/hpet.c 2011-04-23 12:56:11.000000000 -0400
8502 @@ -430,7 +430,7 @@ static int hpet_release(struct inode *in
8503 return 0;
8504 }
8505 @@ -28569,9 +28569,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hpet.c linux-2.6.32.48/drivers/char/hpet
8506 info.hi_flags =
8507 readq(&timer->hpet_config) & Tn_PER_INT_CAP_MASK;
8508 info.hi_hpet = hpetp->hp_which;
8509 -diff -urNp linux-2.6.32.48/drivers/char/hvc_beat.c linux-2.6.32.48/drivers/char/hvc_beat.c
8510 ---- linux-2.6.32.48/drivers/char/hvc_beat.c 2009-12-02 22:51:21.000000000 -0500
8511 -+++ linux-2.6.32.48/drivers/char/hvc_beat.c 2011-11-12 12:46:42.000000000 -0500
8512 +diff -urNp linux-2.6.32.46/drivers/char/hvc_beat.c linux-2.6.32.46/drivers/char/hvc_beat.c
8513 +--- linux-2.6.32.46/drivers/char/hvc_beat.c 2011-03-27 14:31:47.000000000 -0400
8514 ++++ linux-2.6.32.46/drivers/char/hvc_beat.c 2011-04-17 15:56:46.000000000 -0400
8515 @@ -84,7 +84,7 @@ static int hvc_beat_put_chars(uint32_t v
8516 return cnt;
8517 }
8518 @@ -28581,9 +28581,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_beat.c linux-2.6.32.48/drivers/char/
8519 .get_chars = hvc_beat_get_chars,
8520 .put_chars = hvc_beat_put_chars,
8521 };
8522 -diff -urNp linux-2.6.32.48/drivers/char/hvc_console.c linux-2.6.32.48/drivers/char/hvc_console.c
8523 ---- linux-2.6.32.48/drivers/char/hvc_console.c 2011-11-12 12:44:28.000000000 -0500
8524 -+++ linux-2.6.32.48/drivers/char/hvc_console.c 2011-11-12 12:46:42.000000000 -0500
8525 +diff -urNp linux-2.6.32.46/drivers/char/hvc_console.c linux-2.6.32.46/drivers/char/hvc_console.c
8526 +--- linux-2.6.32.46/drivers/char/hvc_console.c 2011-03-27 14:31:47.000000000 -0400
8527 ++++ linux-2.6.32.46/drivers/char/hvc_console.c 2011-04-17 15:56:46.000000000 -0400
8528 @@ -125,7 +125,7 @@ static struct hvc_struct *hvc_get_by_ind
8529 * console interfaces but can still be used as a tty device. This has to be
8530 * static because kmalloc will not work during early console init.
8531 @@ -28593,7 +28593,7 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_console.c linux-2.6.32.48/drivers/ch
8532 static uint32_t vtermnos[MAX_NR_HVC_CONSOLES] =
8533 {[0 ... MAX_NR_HVC_CONSOLES - 1] = -1};
8534
8535 -@@ -249,7 +249,7 @@ static void destroy_hvc_struct(struct kr
8536 +@@ -247,7 +247,7 @@ static void destroy_hvc_struct(struct kr
8537 * vty adapters do NOT get an hvc_instantiate() callback since they
8538 * appear after early console init.
8539 */
8540 @@ -28602,7 +28602,7 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_console.c linux-2.6.32.48/drivers/ch
8541 {
8542 struct hvc_struct *hp;
8543
8544 -@@ -758,7 +758,7 @@ static const struct tty_operations hvc_o
8545 +@@ -756,7 +756,7 @@ static const struct tty_operations hvc_o
8546 };
8547
8548 struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int data,
8549 @@ -28611,9 +28611,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_console.c linux-2.6.32.48/drivers/ch
8550 {
8551 struct hvc_struct *hp;
8552 int i;
8553 -diff -urNp linux-2.6.32.48/drivers/char/hvc_console.h linux-2.6.32.48/drivers/char/hvc_console.h
8554 ---- linux-2.6.32.48/drivers/char/hvc_console.h 2009-12-02 22:51:21.000000000 -0500
8555 -+++ linux-2.6.32.48/drivers/char/hvc_console.h 2011-11-12 12:46:42.000000000 -0500
8556 +diff -urNp linux-2.6.32.46/drivers/char/hvc_console.h linux-2.6.32.46/drivers/char/hvc_console.h
8557 +--- linux-2.6.32.46/drivers/char/hvc_console.h 2011-03-27 14:31:47.000000000 -0400
8558 ++++ linux-2.6.32.46/drivers/char/hvc_console.h 2011-04-17 15:56:46.000000000 -0400
8559 @@ -55,7 +55,7 @@ struct hvc_struct {
8560 int outbuf_size;
8561 int n_outbuf;
8562 @@ -28637,9 +28637,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_console.h linux-2.6.32.48/drivers/ch
8563 /* remove a vterm from hvc tty operation (module_exit or hotplug remove) */
8564 extern int hvc_remove(struct hvc_struct *hp);
8565
8566 -diff -urNp linux-2.6.32.48/drivers/char/hvc_iseries.c linux-2.6.32.48/drivers/char/hvc_iseries.c
8567 ---- linux-2.6.32.48/drivers/char/hvc_iseries.c 2009-12-02 22:51:21.000000000 -0500
8568 -+++ linux-2.6.32.48/drivers/char/hvc_iseries.c 2011-11-12 12:46:42.000000000 -0500
8569 +diff -urNp linux-2.6.32.46/drivers/char/hvc_iseries.c linux-2.6.32.46/drivers/char/hvc_iseries.c
8570 +--- linux-2.6.32.46/drivers/char/hvc_iseries.c 2011-03-27 14:31:47.000000000 -0400
8571 ++++ linux-2.6.32.46/drivers/char/hvc_iseries.c 2011-04-17 15:56:46.000000000 -0400
8572 @@ -197,7 +197,7 @@ done:
8573 return sent;
8574 }
8575 @@ -28649,9 +28649,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_iseries.c linux-2.6.32.48/drivers/ch
8576 .get_chars = get_chars,
8577 .put_chars = put_chars,
8578 .notifier_add = notifier_add_irq,
8579 -diff -urNp linux-2.6.32.48/drivers/char/hvc_iucv.c linux-2.6.32.48/drivers/char/hvc_iucv.c
8580 ---- linux-2.6.32.48/drivers/char/hvc_iucv.c 2011-11-12 12:44:28.000000000 -0500
8581 -+++ linux-2.6.32.48/drivers/char/hvc_iucv.c 2011-11-12 12:46:42.000000000 -0500
8582 +diff -urNp linux-2.6.32.46/drivers/char/hvc_iucv.c linux-2.6.32.46/drivers/char/hvc_iucv.c
8583 +--- linux-2.6.32.46/drivers/char/hvc_iucv.c 2011-03-27 14:31:47.000000000 -0400
8584 ++++ linux-2.6.32.46/drivers/char/hvc_iucv.c 2011-04-17 15:56:46.000000000 -0400
8585 @@ -924,7 +924,7 @@ static int hvc_iucv_pm_restore_thaw(stru
8586
8587
8588 @@ -28661,9 +28661,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_iucv.c linux-2.6.32.48/drivers/char/
8589 .get_chars = hvc_iucv_get_chars,
8590 .put_chars = hvc_iucv_put_chars,
8591 .notifier_add = hvc_iucv_notifier_add,
8592 -diff -urNp linux-2.6.32.48/drivers/char/hvc_rtas.c linux-2.6.32.48/drivers/char/hvc_rtas.c
8593 ---- linux-2.6.32.48/drivers/char/hvc_rtas.c 2009-12-02 22:51:21.000000000 -0500
8594 -+++ linux-2.6.32.48/drivers/char/hvc_rtas.c 2011-11-12 12:46:42.000000000 -0500
8595 +diff -urNp linux-2.6.32.46/drivers/char/hvc_rtas.c linux-2.6.32.46/drivers/char/hvc_rtas.c
8596 +--- linux-2.6.32.46/drivers/char/hvc_rtas.c 2011-03-27 14:31:47.000000000 -0400
8597 ++++ linux-2.6.32.46/drivers/char/hvc_rtas.c 2011-04-17 15:56:46.000000000 -0400
8598 @@ -71,7 +71,7 @@ static int hvc_rtas_read_console(uint32_
8599 return i;
8600 }
8601 @@ -28673,9 +28673,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_rtas.c linux-2.6.32.48/drivers/char/
8602 .get_chars = hvc_rtas_read_console,
8603 .put_chars = hvc_rtas_write_console,
8604 };
8605 -diff -urNp linux-2.6.32.48/drivers/char/hvcs.c linux-2.6.32.48/drivers/char/hvcs.c
8606 ---- linux-2.6.32.48/drivers/char/hvcs.c 2009-12-02 22:51:21.000000000 -0500
8607 -+++ linux-2.6.32.48/drivers/char/hvcs.c 2011-11-12 12:46:42.000000000 -0500
8608 +diff -urNp linux-2.6.32.46/drivers/char/hvcs.c linux-2.6.32.46/drivers/char/hvcs.c
8609 +--- linux-2.6.32.46/drivers/char/hvcs.c 2011-03-27 14:31:47.000000000 -0400
8610 ++++ linux-2.6.32.46/drivers/char/hvcs.c 2011-04-17 15:56:46.000000000 -0400
8611 @@ -82,6 +82,7 @@
8612 #include <asm/hvcserver.h>
8613 #include <asm/uaccess.h>
8614 @@ -28778,9 +28778,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvcs.c linux-2.6.32.48/drivers/char/hvcs
8615 return 0;
8616
8617 return HVCS_BUFF_LEN - hvcsd->chars_in_buffer;
8618 -diff -urNp linux-2.6.32.48/drivers/char/hvc_udbg.c linux-2.6.32.48/drivers/char/hvc_udbg.c
8619 ---- linux-2.6.32.48/drivers/char/hvc_udbg.c 2009-12-02 22:51:21.000000000 -0500
8620 -+++ linux-2.6.32.48/drivers/char/hvc_udbg.c 2011-11-12 12:46:42.000000000 -0500
8621 +diff -urNp linux-2.6.32.46/drivers/char/hvc_udbg.c linux-2.6.32.46/drivers/char/hvc_udbg.c
8622 +--- linux-2.6.32.46/drivers/char/hvc_udbg.c 2011-03-27 14:31:47.000000000 -0400
8623 ++++ linux-2.6.32.46/drivers/char/hvc_udbg.c 2011-04-17 15:56:46.000000000 -0400
8624 @@ -58,7 +58,7 @@ static int hvc_udbg_get(uint32_t vtermno
8625 return i;
8626 }
8627 @@ -28790,9 +28790,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_udbg.c linux-2.6.32.48/drivers/char/
8628 .get_chars = hvc_udbg_get,
8629 .put_chars = hvc_udbg_put,
8630 };
8631 -diff -urNp linux-2.6.32.48/drivers/char/hvc_vio.c linux-2.6.32.48/drivers/char/hvc_vio.c
8632 ---- linux-2.6.32.48/drivers/char/hvc_vio.c 2009-12-02 22:51:21.000000000 -0500
8633 -+++ linux-2.6.32.48/drivers/char/hvc_vio.c 2011-11-12 12:46:42.000000000 -0500
8634 +diff -urNp linux-2.6.32.46/drivers/char/hvc_vio.c linux-2.6.32.46/drivers/char/hvc_vio.c
8635 +--- linux-2.6.32.46/drivers/char/hvc_vio.c 2011-03-27 14:31:47.000000000 -0400
8636 ++++ linux-2.6.32.46/drivers/char/hvc_vio.c 2011-04-17 15:56:46.000000000 -0400
8637 @@ -77,7 +77,7 @@ static int filtered_get_chars(uint32_t v
8638 return got;
8639 }
8640 @@ -28802,9 +28802,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_vio.c linux-2.6.32.48/drivers/char/h
8641 .get_chars = filtered_get_chars,
8642 .put_chars = hvc_put_chars,
8643 .notifier_add = notifier_add_irq,
8644 -diff -urNp linux-2.6.32.48/drivers/char/hvc_xen.c linux-2.6.32.48/drivers/char/hvc_xen.c
8645 ---- linux-2.6.32.48/drivers/char/hvc_xen.c 2009-12-02 22:51:21.000000000 -0500
8646 -+++ linux-2.6.32.48/drivers/char/hvc_xen.c 2011-11-12 12:46:42.000000000 -0500
8647 +diff -urNp linux-2.6.32.46/drivers/char/hvc_xen.c linux-2.6.32.46/drivers/char/hvc_xen.c
8648 +--- linux-2.6.32.46/drivers/char/hvc_xen.c 2011-03-27 14:31:47.000000000 -0400
8649 ++++ linux-2.6.32.46/drivers/char/hvc_xen.c 2011-04-17 15:56:46.000000000 -0400
8650 @@ -120,7 +120,7 @@ static int read_console(uint32_t vtermno
8651 return recv;
8652 }
8653 @@ -28814,9 +28814,9 @@ diff -urNp linux-2.6.32.48/drivers/char/hvc_xen.c linux-2.6.32.48/drivers/char/h
8654 .get_chars = read_console,
8655 .put_chars = write_console,
8656 .notifier_add = notifier_add_irq,
8657 -diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c
8658 ---- linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c 2009-12-02 22:51:21.000000000 -0500
8659 -+++ linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c 2011-11-12 12:46:42.000000000 -0500
8660 +diff -urNp linux-2.6.32.46/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.46/drivers/char/ipmi/ipmi_msghandler.c
8661 +--- linux-2.6.32.46/drivers/char/ipmi/ipmi_msghandler.c 2011-03-27 14:31:47.000000000 -0400
8662 ++++ linux-2.6.32.46/drivers/char/ipmi/ipmi_msghandler.c 2011-05-16 21:46:57.000000000 -0400
8663 @@ -414,7 +414,7 @@ struct ipmi_smi {
8664 struct proc_dir_entry *proc_dir;
8665 char proc_dir_name[10];
8666 @@ -28856,9 +28856,9 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.48/d
8667 si = (struct ipmi_system_interface_addr *) &addr;
8668 si->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
8669 si->channel = IPMI_BMC_CHANNEL;
8670 -diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c
8671 ---- linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c 2011-11-12 12:44:28.000000000 -0500
8672 -+++ linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c 2011-11-12 12:46:42.000000000 -0500
8673 +diff -urNp linux-2.6.32.46/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.32.46/drivers/char/ipmi/ipmi_si_intf.c
8674 +--- linux-2.6.32.46/drivers/char/ipmi/ipmi_si_intf.c 2011-03-27 14:31:47.000000000 -0400
8675 ++++ linux-2.6.32.46/drivers/char/ipmi/ipmi_si_intf.c 2011-04-17 15:56:46.000000000 -0400
8676 @@ -277,7 +277,7 @@ struct smi_info {
8677 unsigned char slave_addr;
8678
8679 @@ -28889,9 +28889,9 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.32.48/driv
8680
8681 new_smi->interrupt_disabled = 0;
8682 atomic_set(&new_smi->stop_operation, 0);
8683 -diff -urNp linux-2.6.32.48/drivers/char/istallion.c linux-2.6.32.48/drivers/char/istallion.c
8684 ---- linux-2.6.32.48/drivers/char/istallion.c 2009-12-02 22:51:21.000000000 -0500
8685 -+++ linux-2.6.32.48/drivers/char/istallion.c 2011-11-12 12:46:42.000000000 -0500
8686 +diff -urNp linux-2.6.32.46/drivers/char/istallion.c linux-2.6.32.46/drivers/char/istallion.c
8687 +--- linux-2.6.32.46/drivers/char/istallion.c 2011-03-27 14:31:47.000000000 -0400
8688 ++++ linux-2.6.32.46/drivers/char/istallion.c 2011-05-16 21:46:57.000000000 -0400
8689 @@ -187,7 +187,6 @@ static struct ktermios stli_deftermios
8690 * re-used for each stats call.
8691 */
8692 @@ -28926,9 +28926,9 @@ diff -urNp linux-2.6.32.48/drivers/char/istallion.c linux-2.6.32.48/drivers/char
8693 if (copy_from_user(&stli_dummybrd, arg, sizeof(struct stlibrd)))
8694 return -EFAULT;
8695 if (stli_dummybrd.brdnr >= STL_MAXBRDS)
8696 -diff -urNp linux-2.6.32.48/drivers/char/Kconfig linux-2.6.32.48/drivers/char/Kconfig
8697 ---- linux-2.6.32.48/drivers/char/Kconfig 2009-12-02 22:51:21.000000000 -0500
8698 -+++ linux-2.6.32.48/drivers/char/Kconfig 2011-11-12 12:46:42.000000000 -0500
8699 +diff -urNp linux-2.6.32.46/drivers/char/Kconfig linux-2.6.32.46/drivers/char/Kconfig
8700 +--- linux-2.6.32.46/drivers/char/Kconfig 2011-03-27 14:31:47.000000000 -0400
8701 ++++ linux-2.6.32.46/drivers/char/Kconfig 2011-04-18 19:20:15.000000000 -0400
8702 @@ -90,7 +90,8 @@ config VT_HW_CONSOLE_BINDING
8703
8704 config DEVKMEM
8705 @@ -28947,9 +28947,9 @@ diff -urNp linux-2.6.32.48/drivers/char/Kconfig linux-2.6.32.48/drivers/char/Kco
8706 default y
8707
8708 source "drivers/s390/char/Kconfig"
8709 -diff -urNp linux-2.6.32.48/drivers/char/keyboard.c linux-2.6.32.48/drivers/char/keyboard.c
8710 ---- linux-2.6.32.48/drivers/char/keyboard.c 2009-12-02 22:51:21.000000000 -0500
8711 -+++ linux-2.6.32.48/drivers/char/keyboard.c 2011-11-12 12:46:42.000000000 -0500
8712 +diff -urNp linux-2.6.32.46/drivers/char/keyboard.c linux-2.6.32.46/drivers/char/keyboard.c
8713 +--- linux-2.6.32.46/drivers/char/keyboard.c 2011-03-27 14:31:47.000000000 -0400
8714 ++++ linux-2.6.32.46/drivers/char/keyboard.c 2011-04-17 15:56:46.000000000 -0400
8715 @@ -635,6 +635,16 @@ static void k_spec(struct vc_data *vc, u
8716 kbd->kbdmode == VC_MEDIUMRAW) &&
8717 value != KVAL(K_SAK))
8718 @@ -28976,9 +28976,9 @@ diff -urNp linux-2.6.32.48/drivers/char/keyboard.c linux-2.6.32.48/drivers/char/
8719 };
8720
8721 MODULE_DEVICE_TABLE(input, kbd_ids);
8722 -diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
8723 ---- linux-2.6.32.48/drivers/char/mem.c 2011-11-12 12:44:28.000000000 -0500
8724 -+++ linux-2.6.32.48/drivers/char/mem.c 2011-11-12 12:46:42.000000000 -0500
8725 +diff -urNp linux-2.6.32.46/drivers/char/mem.c linux-2.6.32.46/drivers/char/mem.c
8726 +--- linux-2.6.32.46/drivers/char/mem.c 2011-03-27 14:31:47.000000000 -0400
8727 ++++ linux-2.6.32.46/drivers/char/mem.c 2011-04-17 15:56:46.000000000 -0400
8728 @@ -18,6 +18,7 @@
8729 #include <linux/raw.h>
8730 #include <linux/tty.h>
8731 @@ -29120,9 +29120,9 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
8732 };
8733
8734 static int memory_open(struct inode *inode, struct file *filp)
8735 -diff -urNp linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c
8736 ---- linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c 2009-12-02 22:51:21.000000000 -0500
8737 -+++ linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c 2011-11-12 12:46:42.000000000 -0500
8738 +diff -urNp linux-2.6.32.46/drivers/char/pcmcia/ipwireless/tty.c linux-2.6.32.46/drivers/char/pcmcia/ipwireless/tty.c
8739 +--- linux-2.6.32.46/drivers/char/pcmcia/ipwireless/tty.c 2011-03-27 14:31:47.000000000 -0400
8740 ++++ linux-2.6.32.46/drivers/char/pcmcia/ipwireless/tty.c 2011-04-17 15:56:46.000000000 -0400
8741 @@ -29,6 +29,7 @@
8742 #include <linux/tty_driver.h>
8743 #include <linux/tty_flip.h>
8744 @@ -29245,9 +29245,9 @@ diff -urNp linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c linux-2.6.32.48/
8745 do_ipw_close(ttyj);
8746 ipwireless_disassociate_network_ttys(network,
8747 ttyj->channel_idx);
8748 -diff -urNp linux-2.6.32.48/drivers/char/pty.c linux-2.6.32.48/drivers/char/pty.c
8749 ---- linux-2.6.32.48/drivers/char/pty.c 2009-12-02 22:51:21.000000000 -0500
8750 -+++ linux-2.6.32.48/drivers/char/pty.c 2011-11-12 12:46:42.000000000 -0500
8751 +diff -urNp linux-2.6.32.46/drivers/char/pty.c linux-2.6.32.46/drivers/char/pty.c
8752 +--- linux-2.6.32.46/drivers/char/pty.c 2011-03-27 14:31:47.000000000 -0400
8753 ++++ linux-2.6.32.46/drivers/char/pty.c 2011-08-05 20:33:55.000000000 -0400
8754 @@ -736,8 +736,10 @@ static void __init unix98_pty_init(void)
8755 register_sysctl_table(pty_root_table);
8756
8757 @@ -29260,9 +29260,9 @@ diff -urNp linux-2.6.32.48/drivers/char/pty.c linux-2.6.32.48/drivers/char/pty.c
8758
8759 cdev_init(&ptmx_cdev, &ptmx_fops);
8760 if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
8761 -diff -urNp linux-2.6.32.48/drivers/char/random.c linux-2.6.32.48/drivers/char/random.c
8762 ---- linux-2.6.32.48/drivers/char/random.c 2011-11-12 12:44:28.000000000 -0500
8763 -+++ linux-2.6.32.48/drivers/char/random.c 2011-11-12 12:46:42.000000000 -0500
8764 +diff -urNp linux-2.6.32.46/drivers/char/random.c linux-2.6.32.46/drivers/char/random.c
8765 +--- linux-2.6.32.46/drivers/char/random.c 2011-08-16 20:37:25.000000000 -0400
8766 ++++ linux-2.6.32.46/drivers/char/random.c 2011-08-16 20:43:23.000000000 -0400
8767 @@ -254,8 +254,13 @@
8768 /*
8769 * Configuration information
8770 @@ -29304,9 +29304,9 @@ diff -urNp linux-2.6.32.48/drivers/char/random.c linux-2.6.32.48/drivers/char/ra
8771 static int max_write_thresh = INPUT_POOL_WORDS * 32;
8772 static char sysctl_bootid[16];
8773
8774 -diff -urNp linux-2.6.32.48/drivers/char/rocket.c linux-2.6.32.48/drivers/char/rocket.c
8775 ---- linux-2.6.32.48/drivers/char/rocket.c 2009-12-02 22:51:21.000000000 -0500
8776 -+++ linux-2.6.32.48/drivers/char/rocket.c 2011-11-12 12:46:42.000000000 -0500
8777 +diff -urNp linux-2.6.32.46/drivers/char/rocket.c linux-2.6.32.46/drivers/char/rocket.c
8778 +--- linux-2.6.32.46/drivers/char/rocket.c 2011-03-27 14:31:47.000000000 -0400
8779 ++++ linux-2.6.32.46/drivers/char/rocket.c 2011-05-16 21:46:57.000000000 -0400
8780 @@ -1266,6 +1266,8 @@ static int get_ports(struct r_port *info
8781 struct rocket_ports tmp;
8782 int board;
8783 @@ -29316,9 +29316,9 @@ diff -urNp linux-2.6.32.48/drivers/char/rocket.c linux-2.6.32.48/drivers/char/ro
8784 if (!retports)
8785 return -EFAULT;
8786 memset(&tmp, 0, sizeof (tmp));
8787 -diff -urNp linux-2.6.32.48/drivers/char/sonypi.c linux-2.6.32.48/drivers/char/sonypi.c
8788 ---- linux-2.6.32.48/drivers/char/sonypi.c 2009-12-02 22:51:21.000000000 -0500
8789 -+++ linux-2.6.32.48/drivers/char/sonypi.c 2011-11-12 12:46:42.000000000 -0500
8790 +diff -urNp linux-2.6.32.46/drivers/char/sonypi.c linux-2.6.32.46/drivers/char/sonypi.c
8791 +--- linux-2.6.32.46/drivers/char/sonypi.c 2011-03-27 14:31:47.000000000 -0400
8792 ++++ linux-2.6.32.46/drivers/char/sonypi.c 2011-04-17 15:56:46.000000000 -0400
8793 @@ -55,6 +55,7 @@
8794 #include <asm/uaccess.h>
8795 #include <asm/io.h>
8796 @@ -29357,9 +29357,9 @@ diff -urNp linux-2.6.32.48/drivers/char/sonypi.c linux-2.6.32.48/drivers/char/so
8797 mutex_unlock(&sonypi_device.lock);
8798 unlock_kernel();
8799 return 0;
8800 -diff -urNp linux-2.6.32.48/drivers/char/stallion.c linux-2.6.32.48/drivers/char/stallion.c
8801 ---- linux-2.6.32.48/drivers/char/stallion.c 2009-12-02 22:51:21.000000000 -0500
8802 -+++ linux-2.6.32.48/drivers/char/stallion.c 2011-11-12 12:46:42.000000000 -0500
8803 +diff -urNp linux-2.6.32.46/drivers/char/stallion.c linux-2.6.32.46/drivers/char/stallion.c
8804 +--- linux-2.6.32.46/drivers/char/stallion.c 2011-03-27 14:31:47.000000000 -0400
8805 ++++ linux-2.6.32.46/drivers/char/stallion.c 2011-05-16 21:46:57.000000000 -0400
8806 @@ -2448,6 +2448,8 @@ static int stl_getportstruct(struct stlp
8807 struct stlport stl_dummyport;
8808 struct stlport *portp;
8809 @@ -29369,9 +29369,9 @@ diff -urNp linux-2.6.32.48/drivers/char/stallion.c linux-2.6.32.48/drivers/char/
8810 if (copy_from_user(&stl_dummyport, arg, sizeof(struct stlport)))
8811 return -EFAULT;
8812 portp = stl_getport(stl_dummyport.brdnr, stl_dummyport.panelnr,
8813 -diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm_bios.c linux-2.6.32.48/drivers/char/tpm/tpm_bios.c
8814 ---- linux-2.6.32.48/drivers/char/tpm/tpm_bios.c 2009-12-02 22:51:21.000000000 -0500
8815 -+++ linux-2.6.32.48/drivers/char/tpm/tpm_bios.c 2011-11-12 12:46:42.000000000 -0500
8816 +diff -urNp linux-2.6.32.46/drivers/char/tpm/tpm_bios.c linux-2.6.32.46/drivers/char/tpm/tpm_bios.c
8817 +--- linux-2.6.32.46/drivers/char/tpm/tpm_bios.c 2011-03-27 14:31:47.000000000 -0400
8818 ++++ linux-2.6.32.46/drivers/char/tpm/tpm_bios.c 2011-10-06 09:37:08.000000000 -0400
8819 @@ -172,7 +172,7 @@ static void *tpm_bios_measurements_start
8820 event = addr;
8821
8822 @@ -29415,10 +29415,20 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm_bios.c linux-2.6.32.48/drivers/c
8823
8824 acpi_os_unmap_memory(virt, len);
8825 return 0;
8826 -diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm.c linux-2.6.32.48/drivers/char/tpm/tpm.c
8827 ---- linux-2.6.32.48/drivers/char/tpm/tpm.c 2011-11-12 12:44:28.000000000 -0500
8828 -+++ linux-2.6.32.48/drivers/char/tpm/tpm.c 2011-11-12 12:51:33.000000000 -0500
8829 -@@ -405,7 +405,7 @@ static ssize_t tpm_transmit(struct tpm_c
8830 +diff -urNp linux-2.6.32.46/drivers/char/tpm/tpm.c linux-2.6.32.46/drivers/char/tpm/tpm.c
8831 +--- linux-2.6.32.46/drivers/char/tpm/tpm.c 2011-04-17 17:00:52.000000000 -0400
8832 ++++ linux-2.6.32.46/drivers/char/tpm/tpm.c 2011-10-17 02:49:00.000000000 -0400
8833 +@@ -374,6 +374,9 @@ static ssize_t tpm_transmit(struct tpm_c
8834 + u32 count, ordinal;
8835 + unsigned long stop;
8836 +
8837 ++ if (bufsiz > TPM_BUFSIZE)
8838 ++ bufsiz = TPM_BUFSIZE;
8839 ++
8840 + count = be32_to_cpu(*((__be32 *) (buf + 2)));
8841 + ordinal = be32_to_cpu(*((__be32 *) (buf + 6)));
8842 + if (count == 0)
8843 +@@ -402,7 +405,7 @@ static ssize_t tpm_transmit(struct tpm_c
8844 chip->vendor.req_complete_val)
8845 goto out_recv;
8846
8847 @@ -29427,7 +29437,7 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm.c linux-2.6.32.48/drivers/char/t
8848 dev_err(chip->dev, "Operation Canceled\n");
8849 rc = -ECANCELED;
8850 goto out;
8851 -@@ -824,6 +824,8 @@ ssize_t tpm_show_pubek(struct device *de
8852 +@@ -821,6 +824,8 @@ ssize_t tpm_show_pubek(struct device *de
8853
8854 struct tpm_chip *chip = dev_get_drvdata(dev);
8855
8856 @@ -29436,18 +29446,31 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm.c linux-2.6.32.48/drivers/char/t
8857 tpm_cmd.header.in = tpm_readpubek_header;
8858 err = transmit_cmd(chip, &tpm_cmd, READ_PUBEK_RESULT_SIZE,
8859 "attempting to read the PUBEK");
8860 -diff -urNp linux-2.6.32.48/drivers/char/tty_io.c linux-2.6.32.48/drivers/char/tty_io.c
8861 ---- linux-2.6.32.48/drivers/char/tty_io.c 2011-11-12 12:44:28.000000000 -0500
8862 -+++ linux-2.6.32.48/drivers/char/tty_io.c 2011-11-12 12:50:08.000000000 -0500
8863 -@@ -1773,6 +1773,7 @@ got_driver:
8864 -
8865 - if (IS_ERR(tty)) {
8866 - mutex_unlock(&tty_mutex);
8867 -+ tty_driver_kref_put(driver);
8868 - return PTR_ERR(tty);
8869 - }
8870 +@@ -1041,6 +1046,7 @@ ssize_t tpm_read(struct file *file, char
8871 + {
8872 + struct tpm_chip *chip = file->private_data;
8873 + ssize_t ret_size;
8874 ++ int rc;
8875 +
8876 + del_singleshot_timer_sync(&chip->user_read_timer);
8877 + flush_scheduled_work();
8878 +@@ -1051,8 +1057,11 @@ ssize_t tpm_read(struct file *file, char
8879 + ret_size = size;
8880 +
8881 + mutex_lock(&chip->buffer_mutex);
8882 +- if (copy_to_user(buf, chip->data_buffer, ret_size))
8883 ++ rc = copy_to_user(buf, chip->data_buffer, ret_size);
8884 ++ memset(chip->data_buffer, 0, ret_size);
8885 ++ if (rc)
8886 + ret_size = -EFAULT;
8887 ++
8888 + mutex_unlock(&chip->buffer_mutex);
8889 }
8890 -@@ -2582,8 +2583,10 @@ long tty_ioctl(struct file *file, unsign
8891 +
8892 +diff -urNp linux-2.6.32.46/drivers/char/tty_io.c linux-2.6.32.46/drivers/char/tty_io.c
8893 +--- linux-2.6.32.46/drivers/char/tty_io.c 2011-03-27 14:31:47.000000000 -0400
8894 ++++ linux-2.6.32.46/drivers/char/tty_io.c 2011-08-05 20:33:55.000000000 -0400
8895 +@@ -2582,8 +2582,10 @@ long tty_ioctl(struct file *file, unsign
8896 return retval;
8897 }
8898
8899 @@ -29459,7 +29482,7 @@ diff -urNp linux-2.6.32.48/drivers/char/tty_io.c linux-2.6.32.48/drivers/char/tt
8900 unsigned long arg)
8901 {
8902 struct inode *inode = file->f_dentry->d_inode;
8903 -@@ -2607,6 +2610,8 @@ static long tty_compat_ioctl(struct file
8904 +@@ -2607,6 +2609,8 @@ static long tty_compat_ioctl(struct file
8905
8906 return retval;
8907 }
8908 @@ -29468,7 +29491,7 @@ diff -urNp linux-2.6.32.48/drivers/char/tty_io.c linux-2.6.32.48/drivers/char/tt
8909 #endif
8910
8911 /*
8912 -@@ -3052,7 +3057,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
8913 +@@ -3052,7 +3056,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
8914
8915 void tty_default_fops(struct file_operations *fops)
8916 {
8917 @@ -29477,9 +29500,9 @@ diff -urNp linux-2.6.32.48/drivers/char/tty_io.c linux-2.6.32.48/drivers/char/tt
8918 }
8919
8920 /*
8921 -diff -urNp linux-2.6.32.48/drivers/char/tty_ldisc.c linux-2.6.32.48/drivers/char/tty_ldisc.c
8922 ---- linux-2.6.32.48/drivers/char/tty_ldisc.c 2011-11-12 12:44:28.000000000 -0500
8923 -+++ linux-2.6.32.48/drivers/char/tty_ldisc.c 2011-11-12 12:46:45.000000000 -0500
8924 +diff -urNp linux-2.6.32.46/drivers/char/tty_ldisc.c linux-2.6.32.46/drivers/char/tty_ldisc.c
8925 +--- linux-2.6.32.46/drivers/char/tty_ldisc.c 2011-07-13 17:23:04.000000000 -0400
8926 ++++ linux-2.6.32.46/drivers/char/tty_ldisc.c 2011-07-13 17:23:18.000000000 -0400
8927 @@ -74,7 +74,7 @@ static void put_ldisc(struct tty_ldisc *
8928 if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
8929 struct tty_ldisc_ops *ldo = ld->ops;
8930 @@ -29525,9 +29548,9 @@ diff -urNp linux-2.6.32.48/drivers/char/tty_ldisc.c linux-2.6.32.48/drivers/char
8931 module_put(ldops->owner);
8932 spin_unlock_irqrestore(&tty_ldisc_lock, flags);
8933 }
8934 -diff -urNp linux-2.6.32.48/drivers/char/virtio_console.c linux-2.6.32.48/drivers/char/virtio_console.c
8935 ---- linux-2.6.32.48/drivers/char/virtio_console.c 2009-12-02 22:51:21.000000000 -0500
8936 -+++ linux-2.6.32.48/drivers/char/virtio_console.c 2011-11-12 12:46:45.000000000 -0500
8937 +diff -urNp linux-2.6.32.46/drivers/char/virtio_console.c linux-2.6.32.46/drivers/char/virtio_console.c
8938 +--- linux-2.6.32.46/drivers/char/virtio_console.c 2011-03-27 14:31:47.000000000 -0400
8939 ++++ linux-2.6.32.46/drivers/char/virtio_console.c 2011-08-05 20:33:55.000000000 -0400
8940 @@ -133,7 +133,9 @@ static int get_chars(u32 vtermno, char *
8941 * virtqueue, so we let the drivers do some boutique early-output thing. */
8942 int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int))
8943 @@ -29558,9 +29581,9 @@ diff -urNp linux-2.6.32.48/drivers/char/virtio_console.c linux-2.6.32.48/drivers
8944
8945 /* The first argument of hvc_alloc() is the virtual console number, so
8946 * we use zero. The second argument is the parameter for the
8947 -diff -urNp linux-2.6.32.48/drivers/char/vt.c linux-2.6.32.48/drivers/char/vt.c
8948 ---- linux-2.6.32.48/drivers/char/vt.c 2009-12-02 22:51:21.000000000 -0500
8949 -+++ linux-2.6.32.48/drivers/char/vt.c 2011-11-12 12:46:45.000000000 -0500
8950 +diff -urNp linux-2.6.32.46/drivers/char/vt.c linux-2.6.32.46/drivers/char/vt.c
8951 +--- linux-2.6.32.46/drivers/char/vt.c 2011-03-27 14:31:47.000000000 -0400
8952 ++++ linux-2.6.32.46/drivers/char/vt.c 2011-04-17 15:56:46.000000000 -0400
8953 @@ -243,7 +243,7 @@ EXPORT_SYMBOL_GPL(unregister_vt_notifier
8954
8955 static void notify_write(struct vc_data *vc, unsigned int unicode)
8956 @@ -29570,9 +29593,9 @@ diff -urNp linux-2.6.32.48/drivers/char/vt.c linux-2.6.32.48/drivers/char/vt.c
8957 atomic_notifier_call_chain(&vt_notifier_list, VT_WRITE, &param);
8958 }
8959
8960 -diff -urNp linux-2.6.32.48/drivers/char/vt_ioctl.c linux-2.6.32.48/drivers/char/vt_ioctl.c
8961 ---- linux-2.6.32.48/drivers/char/vt_ioctl.c 2011-11-12 12:44:28.000000000 -0500
8962 -+++ linux-2.6.32.48/drivers/char/vt_ioctl.c 2011-11-12 12:46:45.000000000 -0500
8963 +diff -urNp linux-2.6.32.46/drivers/char/vt_ioctl.c linux-2.6.32.46/drivers/char/vt_ioctl.c
8964 +--- linux-2.6.32.46/drivers/char/vt_ioctl.c 2011-03-27 14:31:47.000000000 -0400
8965 ++++ linux-2.6.32.46/drivers/char/vt_ioctl.c 2011-04-17 15:56:46.000000000 -0400
8966 @@ -210,9 +210,6 @@ do_kdsk_ioctl(int cmd, struct kbentry __
8967 if (copy_from_user(&tmp, user_kbe, sizeof(struct kbentry)))
8968 return -EFAULT;
8969 @@ -29616,9 +29639,9 @@ diff -urNp linux-2.6.32.48/drivers/char/vt_ioctl.c linux-2.6.32.48/drivers/char/
8970 if (!perm) {
8971 ret = -EPERM;
8972 goto reterr;
8973 -diff -urNp linux-2.6.32.48/drivers/cpufreq/cpufreq.c linux-2.6.32.48/drivers/cpufreq/cpufreq.c
8974 ---- linux-2.6.32.48/drivers/cpufreq/cpufreq.c 2011-11-12 12:44:28.000000000 -0500
8975 -+++ linux-2.6.32.48/drivers/cpufreq/cpufreq.c 2011-11-12 12:46:45.000000000 -0500
8976 +diff -urNp linux-2.6.32.46/drivers/cpufreq/cpufreq.c linux-2.6.32.46/drivers/cpufreq/cpufreq.c
8977 +--- linux-2.6.32.46/drivers/cpufreq/cpufreq.c 2011-06-25 12:55:34.000000000 -0400
8978 ++++ linux-2.6.32.46/drivers/cpufreq/cpufreq.c 2011-06-25 12:56:37.000000000 -0400
8979 @@ -750,7 +750,7 @@ static void cpufreq_sysfs_release(struct
8980 complete(&policy->kobj_unregister);
8981 }
8982 @@ -29628,9 +29651,9 @@ diff -urNp linux-2.6.32.48/drivers/cpufreq/cpufreq.c linux-2.6.32.48/drivers/cpu
8983 .show = show,
8984 .store = store,
8985 };
8986 -diff -urNp linux-2.6.32.48/drivers/cpuidle/sysfs.c linux-2.6.32.48/drivers/cpuidle/sysfs.c
8987 ---- linux-2.6.32.48/drivers/cpuidle/sysfs.c 2009-12-02 22:51:21.000000000 -0500
8988 -+++ linux-2.6.32.48/drivers/cpuidle/sysfs.c 2011-11-12 12:46:45.000000000 -0500
8989 +diff -urNp linux-2.6.32.46/drivers/cpuidle/sysfs.c linux-2.6.32.46/drivers/cpuidle/sysfs.c
8990 +--- linux-2.6.32.46/drivers/cpuidle/sysfs.c 2011-03-27 14:31:47.000000000 -0400
8991 ++++ linux-2.6.32.46/drivers/cpuidle/sysfs.c 2011-04-17 15:56:46.000000000 -0400
8992 @@ -191,7 +191,7 @@ static ssize_t cpuidle_store(struct kobj
8993 return ret;
8994 }
8995 @@ -29658,9 +29681,9 @@ diff -urNp linux-2.6.32.48/drivers/cpuidle/sysfs.c linux-2.6.32.48/drivers/cpuid
8996 {
8997 kobject_put(&device->kobjs[i]->kobj);
8998 wait_for_completion(&device->kobjs[i]->kobj_unregister);
8999 -diff -urNp linux-2.6.32.48/drivers/crypto/hifn_795x.c linux-2.6.32.48/drivers/crypto/hifn_795x.c
9000 ---- linux-2.6.32.48/drivers/crypto/hifn_795x.c 2009-12-02 22:51:21.000000000 -0500
9001 -+++ linux-2.6.32.48/drivers/crypto/hifn_795x.c 2011-11-12 12:46:45.000000000 -0500
9002 +diff -urNp linux-2.6.32.46/drivers/crypto/hifn_795x.c linux-2.6.32.46/drivers/crypto/hifn_795x.c
9003 +--- linux-2.6.32.46/drivers/crypto/hifn_795x.c 2011-03-27 14:31:47.000000000 -0400
9004 ++++ linux-2.6.32.46/drivers/crypto/hifn_795x.c 2011-05-16 21:46:57.000000000 -0400
9005 @@ -1655,6 +1655,8 @@ static int hifn_test(struct hifn_device
9006 0xCA, 0x34, 0x2B, 0x2E};
9007 struct scatterlist sg;
9008 @@ -29670,9 +29693,9 @@ diff -urNp linux-2.6.32.48/drivers/crypto/hifn_795x.c linux-2.6.32.48/drivers/cr
9009 memset(src, 0, sizeof(src));
9010 memset(ctx.key, 0, sizeof(ctx.key));
9011
9012 -diff -urNp linux-2.6.32.48/drivers/crypto/padlock-aes.c linux-2.6.32.48/drivers/crypto/padlock-aes.c
9013 ---- linux-2.6.32.48/drivers/crypto/padlock-aes.c 2011-11-12 12:44:28.000000000 -0500
9014 -+++ linux-2.6.32.48/drivers/crypto/padlock-aes.c 2011-11-12 12:46:45.000000000 -0500
9015 +diff -urNp linux-2.6.32.46/drivers/crypto/padlock-aes.c linux-2.6.32.46/drivers/crypto/padlock-aes.c
9016 +--- linux-2.6.32.46/drivers/crypto/padlock-aes.c 2011-03-27 14:31:47.000000000 -0400
9017 ++++ linux-2.6.32.46/drivers/crypto/padlock-aes.c 2011-05-16 21:46:57.000000000 -0400
9018 @@ -108,6 +108,8 @@ static int aes_set_key(struct crypto_tfm
9019 struct crypto_aes_ctx gen_aes;
9020 int cpu;
9021 @@ -29682,9 +29705,9 @@ diff -urNp linux-2.6.32.48/drivers/crypto/padlock-aes.c linux-2.6.32.48/drivers/
9022 if (key_len % 8) {
9023 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
9024 return -EINVAL;
9025 -diff -urNp linux-2.6.32.48/drivers/dma/ioat/dma.c linux-2.6.32.48/drivers/dma/ioat/dma.c
9026 ---- linux-2.6.32.48/drivers/dma/ioat/dma.c 2011-11-12 12:44:28.000000000 -0500
9027 -+++ linux-2.6.32.48/drivers/dma/ioat/dma.c 2011-11-12 12:46:45.000000000 -0500
9028 +diff -urNp linux-2.6.32.46/drivers/dma/ioat/dma.c linux-2.6.32.46/drivers/dma/ioat/dma.c
9029 +--- linux-2.6.32.46/drivers/dma/ioat/dma.c 2011-03-27 14:31:47.000000000 -0400
9030 ++++ linux-2.6.32.46/drivers/dma/ioat/dma.c 2011-04-17 15:56:46.000000000 -0400
9031 @@ -1146,7 +1146,7 @@ ioat_attr_show(struct kobject *kobj, str
9032 return entry->show(&chan->common, page);
9033 }
9034 @@ -29694,9 +29717,9 @@ diff -urNp linux-2.6.32.48/drivers/dma/ioat/dma.c linux-2.6.32.48/drivers/dma/io
9035 .show = ioat_attr_show,
9036 };
9037
9038 -diff -urNp linux-2.6.32.48/drivers/dma/ioat/dma.h linux-2.6.32.48/drivers/dma/ioat/dma.h
9039 ---- linux-2.6.32.48/drivers/dma/ioat/dma.h 2011-11-12 12:44:28.000000000 -0500
9040 -+++ linux-2.6.32.48/drivers/dma/ioat/dma.h 2011-11-12 12:46:45.000000000 -0500
9041 +diff -urNp linux-2.6.32.46/drivers/dma/ioat/dma.h linux-2.6.32.46/drivers/dma/ioat/dma.h
9042 +--- linux-2.6.32.46/drivers/dma/ioat/dma.h 2011-03-27 14:31:47.000000000 -0400
9043 ++++ linux-2.6.32.46/drivers/dma/ioat/dma.h 2011-04-17 15:56:46.000000000 -0400
9044 @@ -347,7 +347,7 @@ bool ioat_cleanup_preamble(struct ioat_c
9045 unsigned long *phys_complete);
9046 void ioat_kobject_add(struct ioatdma_device *device, struct kobj_type *type);
9047 @@ -29706,9 +29729,9 @@ diff -urNp linux-2.6.32.48/drivers/dma/ioat/dma.h linux-2.6.32.48/drivers/dma/io
9048 extern struct ioat_sysfs_entry ioat_version_attr;
9049 extern struct ioat_sysfs_entry ioat_cap_attr;
9050 #endif /* IOATDMA_H */
9051 -diff -urNp linux-2.6.32.48/drivers/edac/edac_device_sysfs.c linux-2.6.32.48/drivers/edac/edac_device_sysfs.c
9052 ---- linux-2.6.32.48/drivers/edac/edac_device_sysfs.c 2009-12-02 22:51:21.000000000 -0500
9053 -+++ linux-2.6.32.48/drivers/edac/edac_device_sysfs.c 2011-11-12 12:46:45.000000000 -0500
9054 +diff -urNp linux-2.6.32.46/drivers/edac/edac_device_sysfs.c linux-2.6.32.46/drivers/edac/edac_device_sysfs.c
9055 +--- linux-2.6.32.46/drivers/edac/edac_device_sysfs.c 2011-03-27 14:31:47.000000000 -0400
9056 ++++ linux-2.6.32.46/drivers/edac/edac_device_sysfs.c 2011-04-17 15:56:46.000000000 -0400
9057 @@ -137,7 +137,7 @@ static ssize_t edac_dev_ctl_info_store(s
9058 }
9059
9060 @@ -29736,9 +29759,9 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_device_sysfs.c linux-2.6.32.48/driv
9061 .show = edac_dev_block_show,
9062 .store = edac_dev_block_store
9063 };
9064 -diff -urNp linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c
9065 ---- linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c 2009-12-02 22:51:21.000000000 -0500
9066 -+++ linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c 2011-11-12 12:46:45.000000000 -0500
9067 +diff -urNp linux-2.6.32.46/drivers/edac/edac_mc_sysfs.c linux-2.6.32.46/drivers/edac/edac_mc_sysfs.c
9068 +--- linux-2.6.32.46/drivers/edac/edac_mc_sysfs.c 2011-03-27 14:31:47.000000000 -0400
9069 ++++ linux-2.6.32.46/drivers/edac/edac_mc_sysfs.c 2011-04-17 15:56:46.000000000 -0400
9070 @@ -245,7 +245,7 @@ static ssize_t csrowdev_store(struct kob
9071 return -EIO;
9072 }
9073 @@ -29757,9 +29780,9 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c linux-2.6.32.48/drivers/
9074 .show = mcidev_show,
9075 .store = mcidev_store
9076 };
9077 -diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c
9078 ---- linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c 2009-12-02 22:51:21.000000000 -0500
9079 -+++ linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c 2011-11-12 12:46:45.000000000 -0500
9080 +diff -urNp linux-2.6.32.46/drivers/edac/edac_pci_sysfs.c linux-2.6.32.46/drivers/edac/edac_pci_sysfs.c
9081 +--- linux-2.6.32.46/drivers/edac/edac_pci_sysfs.c 2011-03-27 14:31:47.000000000 -0400
9082 ++++ linux-2.6.32.46/drivers/edac/edac_pci_sysfs.c 2011-05-04 17:56:20.000000000 -0400
9083 @@ -25,8 +25,8 @@ static int edac_pci_log_pe = 1; /* log
9084 static int edac_pci_log_npe = 1; /* log PCI non-parity error errors */
9085 static int edac_pci_poll_msec = 1000; /* one second workq period */
9086 @@ -29861,9 +29884,9 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
9087 panic("EDAC: PCI Parity Error");
9088 }
9089 }
9090 -diff -urNp linux-2.6.32.48/drivers/firewire/core-card.c linux-2.6.32.48/drivers/firewire/core-card.c
9091 ---- linux-2.6.32.48/drivers/firewire/core-card.c 2011-11-12 12:44:28.000000000 -0500
9092 -+++ linux-2.6.32.48/drivers/firewire/core-card.c 2011-11-12 12:46:45.000000000 -0500
9093 +diff -urNp linux-2.6.32.46/drivers/firewire/core-card.c linux-2.6.32.46/drivers/firewire/core-card.c
9094 +--- linux-2.6.32.46/drivers/firewire/core-card.c 2011-03-27 14:31:47.000000000 -0400
9095 ++++ linux-2.6.32.46/drivers/firewire/core-card.c 2011-08-23 21:22:32.000000000 -0400
9096 @@ -558,7 +558,7 @@ void fw_card_release(struct kref *kref)
9097
9098 void fw_core_remove_card(struct fw_card *card)
9099 @@ -29873,9 +29896,9 @@ diff -urNp linux-2.6.32.48/drivers/firewire/core-card.c linux-2.6.32.48/drivers/
9100
9101 card->driver->update_phy_reg(card, 4,
9102 PHY_LINK_ACTIVE | PHY_CONTENDER, 0);
9103 -diff -urNp linux-2.6.32.48/drivers/firewire/core-cdev.c linux-2.6.32.48/drivers/firewire/core-cdev.c
9104 ---- linux-2.6.32.48/drivers/firewire/core-cdev.c 2011-11-12 12:44:28.000000000 -0500
9105 -+++ linux-2.6.32.48/drivers/firewire/core-cdev.c 2011-11-12 12:46:45.000000000 -0500
9106 +diff -urNp linux-2.6.32.46/drivers/firewire/core-cdev.c linux-2.6.32.46/drivers/firewire/core-cdev.c
9107 +--- linux-2.6.32.46/drivers/firewire/core-cdev.c 2011-03-27 14:31:47.000000000 -0400
9108 ++++ linux-2.6.32.46/drivers/firewire/core-cdev.c 2011-04-17 15:56:46.000000000 -0400
9109 @@ -1141,8 +1141,7 @@ static int init_iso_resource(struct clie
9110 int ret;
9111
9112 @@ -29886,9 +29909,9 @@ diff -urNp linux-2.6.32.48/drivers/firewire/core-cdev.c linux-2.6.32.48/drivers/
9113 return -EINVAL;
9114
9115 r = kmalloc(sizeof(*r), GFP_KERNEL);
9116 -diff -urNp linux-2.6.32.48/drivers/firewire/core.h linux-2.6.32.48/drivers/firewire/core.h
9117 ---- linux-2.6.32.48/drivers/firewire/core.h 2009-12-02 22:51:21.000000000 -0500
9118 -+++ linux-2.6.32.48/drivers/firewire/core.h 2011-11-12 12:46:45.000000000 -0500
9119 +diff -urNp linux-2.6.32.46/drivers/firewire/core.h linux-2.6.32.46/drivers/firewire/core.h
9120 +--- linux-2.6.32.46/drivers/firewire/core.h 2011-03-27 14:31:47.000000000 -0400
9121 ++++ linux-2.6.32.46/drivers/firewire/core.h 2011-08-23 20:24:26.000000000 -0400
9122 @@ -86,6 +86,7 @@ struct fw_card_driver {
9123
9124 int (*stop_iso)(struct fw_iso_context *ctx);
9125 @@ -29897,9 +29920,9 @@ diff -urNp linux-2.6.32.48/drivers/firewire/core.h linux-2.6.32.48/drivers/firew
9126
9127 void fw_card_initialize(struct fw_card *card,
9128 const struct fw_card_driver *driver, struct device *device);
9129 -diff -urNp linux-2.6.32.48/drivers/firewire/core-transaction.c linux-2.6.32.48/drivers/firewire/core-transaction.c
9130 ---- linux-2.6.32.48/drivers/firewire/core-transaction.c 2009-12-02 22:51:21.000000000 -0500
9131 -+++ linux-2.6.32.48/drivers/firewire/core-transaction.c 2011-11-12 12:46:45.000000000 -0500
9132 +diff -urNp linux-2.6.32.46/drivers/firewire/core-transaction.c linux-2.6.32.46/drivers/firewire/core-transaction.c
9133 +--- linux-2.6.32.46/drivers/firewire/core-transaction.c 2011-03-27 14:31:47.000000000 -0400
9134 ++++ linux-2.6.32.46/drivers/firewire/core-transaction.c 2011-05-16 21:46:57.000000000 -0400
9135 @@ -36,6 +36,7 @@
9136 #include <linux/string.h>
9137 #include <linux/timer.h>
9138 @@ -29917,9 +29940,9 @@ diff -urNp linux-2.6.32.48/drivers/firewire/core-transaction.c linux-2.6.32.48/d
9139 init_completion(&d.done);
9140 d.payload = payload;
9141 fw_send_request(card, &t, tcode, destination_id, generation, speed,
9142 -diff -urNp linux-2.6.32.48/drivers/firmware/dmi_scan.c linux-2.6.32.48/drivers/firmware/dmi_scan.c
9143 ---- linux-2.6.32.48/drivers/firmware/dmi_scan.c 2011-11-12 12:44:28.000000000 -0500
9144 -+++ linux-2.6.32.48/drivers/firmware/dmi_scan.c 2011-11-12 12:46:45.000000000 -0500
9145 +diff -urNp linux-2.6.32.46/drivers/firmware/dmi_scan.c linux-2.6.32.46/drivers/firmware/dmi_scan.c
9146 +--- linux-2.6.32.46/drivers/firmware/dmi_scan.c 2011-03-27 14:31:47.000000000 -0400
9147 ++++ linux-2.6.32.46/drivers/firmware/dmi_scan.c 2011-10-06 09:37:08.000000000 -0400
9148 @@ -391,11 +391,6 @@ void __init dmi_scan_machine(void)
9149 }
9150 }
9151 @@ -29941,9 +29964,9 @@ diff -urNp linux-2.6.32.48/drivers/firmware/dmi_scan.c linux-2.6.32.48/drivers/f
9152
9153 iounmap(buf);
9154 return 0;
9155 -diff -urNp linux-2.6.32.48/drivers/firmware/edd.c linux-2.6.32.48/drivers/firmware/edd.c
9156 ---- linux-2.6.32.48/drivers/firmware/edd.c 2009-12-02 22:51:21.000000000 -0500
9157 -+++ linux-2.6.32.48/drivers/firmware/edd.c 2011-11-12 12:46:45.000000000 -0500
9158 +diff -urNp linux-2.6.32.46/drivers/firmware/edd.c linux-2.6.32.46/drivers/firmware/edd.c
9159 +--- linux-2.6.32.46/drivers/firmware/edd.c 2011-03-27 14:31:47.000000000 -0400
9160 ++++ linux-2.6.32.46/drivers/firmware/edd.c 2011-04-17 15:56:46.000000000 -0400
9161 @@ -122,7 +122,7 @@ edd_attr_show(struct kobject * kobj, str
9162 return ret;
9163 }
9164 @@ -29953,9 +29976,9 @@ diff -urNp linux-2.6.32.48/drivers/firmware/edd.c linux-2.6.32.48/drivers/firmwa
9165 .show = edd_attr_show,
9166 };
9167
9168 -diff -urNp linux-2.6.32.48/drivers/firmware/efivars.c linux-2.6.32.48/drivers/firmware/efivars.c
9169 ---- linux-2.6.32.48/drivers/firmware/efivars.c 2009-12-02 22:51:21.000000000 -0500
9170 -+++ linux-2.6.32.48/drivers/firmware/efivars.c 2011-11-12 12:46:45.000000000 -0500
9171 +diff -urNp linux-2.6.32.46/drivers/firmware/efivars.c linux-2.6.32.46/drivers/firmware/efivars.c
9172 +--- linux-2.6.32.46/drivers/firmware/efivars.c 2011-03-27 14:31:47.000000000 -0400
9173 ++++ linux-2.6.32.46/drivers/firmware/efivars.c 2011-04-17 15:56:46.000000000 -0400
9174 @@ -362,7 +362,7 @@ static ssize_t efivar_attr_store(struct
9175 return ret;
9176 }
9177 @@ -29965,9 +29988,9 @@ diff -urNp linux-2.6.32.48/drivers/firmware/efivars.c linux-2.6.32.48/drivers/fi
9178 .show = efivar_attr_show,
9179 .store = efivar_attr_store,
9180 };
9181 -diff -urNp linux-2.6.32.48/drivers/firmware/iscsi_ibft.c linux-2.6.32.48/drivers/firmware/iscsi_ibft.c
9182 ---- linux-2.6.32.48/drivers/firmware/iscsi_ibft.c 2009-12-02 22:51:21.000000000 -0500
9183 -+++ linux-2.6.32.48/drivers/firmware/iscsi_ibft.c 2011-11-12 12:46:45.000000000 -0500
9184 +diff -urNp linux-2.6.32.46/drivers/firmware/iscsi_ibft.c linux-2.6.32.46/drivers/firmware/iscsi_ibft.c
9185 +--- linux-2.6.32.46/drivers/firmware/iscsi_ibft.c 2011-03-27 14:31:47.000000000 -0400
9186 ++++ linux-2.6.32.46/drivers/firmware/iscsi_ibft.c 2011-04-17 15:56:46.000000000 -0400
9187 @@ -525,7 +525,7 @@ static ssize_t ibft_show_attribute(struc
9188 return ret;
9189 }
9190 @@ -29977,9 +30000,9 @@ diff -urNp linux-2.6.32.48/drivers/firmware/iscsi_ibft.c linux-2.6.32.48/drivers
9191 .show = ibft_show_attribute,
9192 };
9193
9194 -diff -urNp linux-2.6.32.48/drivers/firmware/memmap.c linux-2.6.32.48/drivers/firmware/memmap.c
9195 ---- linux-2.6.32.48/drivers/firmware/memmap.c 2009-12-02 22:51:21.000000000 -0500
9196 -+++ linux-2.6.32.48/drivers/firmware/memmap.c 2011-11-12 12:46:45.000000000 -0500
9197 +diff -urNp linux-2.6.32.46/drivers/firmware/memmap.c linux-2.6.32.46/drivers/firmware/memmap.c
9198 +--- linux-2.6.32.46/drivers/firmware/memmap.c 2011-03-27 14:31:47.000000000 -0400
9199 ++++ linux-2.6.32.46/drivers/firmware/memmap.c 2011-04-17 15:56:46.000000000 -0400
9200 @@ -74,7 +74,7 @@ static struct attribute *def_attrs[] = {
9201 NULL
9202 };
9203 @@ -29989,9 +30012,9 @@ diff -urNp linux-2.6.32.48/drivers/firmware/memmap.c linux-2.6.32.48/drivers/fir
9204 .show = memmap_attr_show,
9205 };
9206
9207 -diff -urNp linux-2.6.32.48/drivers/gpio/vr41xx_giu.c linux-2.6.32.48/drivers/gpio/vr41xx_giu.c
9208 ---- linux-2.6.32.48/drivers/gpio/vr41xx_giu.c 2009-12-02 22:51:21.000000000 -0500
9209 -+++ linux-2.6.32.48/drivers/gpio/vr41xx_giu.c 2011-11-12 12:46:45.000000000 -0500
9210 +diff -urNp linux-2.6.32.46/drivers/gpio/vr41xx_giu.c linux-2.6.32.46/drivers/gpio/vr41xx_giu.c
9211 +--- linux-2.6.32.46/drivers/gpio/vr41xx_giu.c 2011-03-27 14:31:47.000000000 -0400
9212 ++++ linux-2.6.32.46/drivers/gpio/vr41xx_giu.c 2011-05-04 17:56:28.000000000 -0400
9213 @@ -204,7 +204,7 @@ static int giu_get_irq(unsigned int irq)
9214 printk(KERN_ERR "spurious GIU interrupt: %04x(%04x),%04x(%04x)\n",
9215 maskl, pendl, maskh, pendh);
9216 @@ -30001,9 +30024,9 @@ diff -urNp linux-2.6.32.48/drivers/gpio/vr41xx_giu.c linux-2.6.32.48/drivers/gpi
9217
9218 return -EINVAL;
9219 }
9220 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c
9221 ---- linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c 2011-11-12 12:44:28.000000000 -0500
9222 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c 2011-11-12 12:46:45.000000000 -0500
9223 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_crtc.c linux-2.6.32.46/drivers/gpu/drm/drm_crtc.c
9224 +--- linux-2.6.32.46/drivers/gpu/drm/drm_crtc.c 2011-03-27 14:31:47.000000000 -0400
9225 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_crtc.c 2011-10-06 09:37:14.000000000 -0400
9226 @@ -1323,7 +1323,7 @@ int drm_mode_getconnector(struct drm_dev
9227 */
9228 if ((out_resp->count_modes >= mode_count) && mode_count) {
9229 @@ -30078,9 +30101,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
9230 if (copy_to_user(blob_ptr, blob->data, blob->length)){
9231 ret = -EFAULT;
9232 goto done;
9233 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c
9234 ---- linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c 2011-11-12 12:44:28.000000000 -0500
9235 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c 2011-11-12 12:46:45.000000000 -0500
9236 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_crtc_helper.c linux-2.6.32.46/drivers/gpu/drm/drm_crtc_helper.c
9237 +--- linux-2.6.32.46/drivers/gpu/drm/drm_crtc_helper.c 2011-03-27 14:31:47.000000000 -0400
9238 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_crtc_helper.c 2011-05-16 21:46:57.000000000 -0400
9239 @@ -573,7 +573,7 @@ static bool drm_encoder_crtc_ok(struct d
9240 struct drm_crtc *tmp;
9241 int crtc_mask = 1;
9242 @@ -30099,9 +30122,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c linux-2.6.32.48/dri
9243 crtc->enabled = drm_helper_crtc_in_use(crtc);
9244
9245 if (!crtc->enabled)
9246 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_drv.c linux-2.6.32.48/drivers/gpu/drm/drm_drv.c
9247 ---- linux-2.6.32.48/drivers/gpu/drm/drm_drv.c 2011-11-12 12:44:28.000000000 -0500
9248 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_drv.c 2011-11-12 12:46:45.000000000 -0500
9249 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_drv.c linux-2.6.32.46/drivers/gpu/drm/drm_drv.c
9250 +--- linux-2.6.32.46/drivers/gpu/drm/drm_drv.c 2011-03-27 14:31:47.000000000 -0400
9251 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_drv.c 2011-04-17 15:56:46.000000000 -0400
9252 @@ -417,7 +417,7 @@ int drm_ioctl(struct inode *inode, struc
9253 char *kdata = NULL;
9254
9255 @@ -30111,9 +30134,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_drv.c linux-2.6.32.48/drivers/gpu
9256 ++file_priv->ioctl_count;
9257
9258 DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n",
9259 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_fops.c linux-2.6.32.48/drivers/gpu/drm/drm_fops.c
9260 ---- linux-2.6.32.48/drivers/gpu/drm/drm_fops.c 2011-11-12 12:44:28.000000000 -0500
9261 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_fops.c 2011-11-12 12:46:45.000000000 -0500
9262 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_fops.c linux-2.6.32.46/drivers/gpu/drm/drm_fops.c
9263 +--- linux-2.6.32.46/drivers/gpu/drm/drm_fops.c 2011-03-27 14:31:47.000000000 -0400
9264 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_fops.c 2011-04-17 15:56:46.000000000 -0400
9265 @@ -66,7 +66,7 @@ static int drm_setup(struct drm_device *
9266 }
9267
9268 @@ -30165,9 +30188,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_fops.c linux-2.6.32.48/drivers/gp
9269 if (atomic_read(&dev->ioctl_count)) {
9270 DRM_ERROR("Device busy: %d\n",
9271 atomic_read(&dev->ioctl_count));
9272 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_gem.c linux-2.6.32.48/drivers/gpu/drm/drm_gem.c
9273 ---- linux-2.6.32.48/drivers/gpu/drm/drm_gem.c 2011-11-12 12:44:28.000000000 -0500
9274 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_gem.c 2011-11-12 12:46:45.000000000 -0500
9275 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_gem.c linux-2.6.32.46/drivers/gpu/drm/drm_gem.c
9276 +--- linux-2.6.32.46/drivers/gpu/drm/drm_gem.c 2011-03-27 14:31:47.000000000 -0400
9277 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_gem.c 2011-04-17 15:56:46.000000000 -0400
9278 @@ -83,11 +83,11 @@ drm_gem_init(struct drm_device *dev)
9279 spin_lock_init(&dev->object_name_lock);
9280 idr_init(&dev->object_name_idr);
9281 @@ -30201,9 +30224,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_gem.c linux-2.6.32.48/drivers/gpu
9282 kfree(obj);
9283 }
9284 EXPORT_SYMBOL(drm_gem_object_free);
9285 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_info.c linux-2.6.32.48/drivers/gpu/drm/drm_info.c
9286 ---- linux-2.6.32.48/drivers/gpu/drm/drm_info.c 2009-12-02 22:51:21.000000000 -0500
9287 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_info.c 2011-11-12 12:46:45.000000000 -0500
9288 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_info.c linux-2.6.32.46/drivers/gpu/drm/drm_info.c
9289 +--- linux-2.6.32.46/drivers/gpu/drm/drm_info.c 2011-03-27 14:31:47.000000000 -0400
9290 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_info.c 2011-04-17 15:56:46.000000000 -0400
9291 @@ -75,10 +75,14 @@ int drm_vm_info(struct seq_file *m, void
9292 struct drm_local_map *map;
9293 struct drm_map_list *r_list;
9294 @@ -30283,9 +30306,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_info.c linux-2.6.32.48/drivers/gp
9295
9296 #if defined(__i386__)
9297 pgprot = pgprot_val(vma->vm_page_prot);
9298 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c
9299 ---- linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c 2009-12-02 22:51:21.000000000 -0500
9300 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c 2011-11-12 12:46:45.000000000 -0500
9301 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_ioc32.c linux-2.6.32.46/drivers/gpu/drm/drm_ioc32.c
9302 +--- linux-2.6.32.46/drivers/gpu/drm/drm_ioc32.c 2011-03-27 14:31:47.000000000 -0400
9303 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_ioc32.c 2011-10-06 09:37:14.000000000 -0400
9304 @@ -463,7 +463,7 @@ static int compat_drm_infobufs(struct fi
9305 request = compat_alloc_user_space(nbytes);
9306 if (!access_ok(VERIFY_WRITE, request, nbytes))
9307 @@ -30304,9 +30327,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c linux-2.6.32.48/drivers/g
9308
9309 if (__put_user(count, &request->count)
9310 || __put_user(list, &request->list))
9311 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c
9312 ---- linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c 2009-12-02 22:51:21.000000000 -0500
9313 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c 2011-11-12 12:46:45.000000000 -0500
9314 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_ioctl.c linux-2.6.32.46/drivers/gpu/drm/drm_ioctl.c
9315 +--- linux-2.6.32.46/drivers/gpu/drm/drm_ioctl.c 2011-03-27 14:31:47.000000000 -0400
9316 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_ioctl.c 2011-04-17 15:56:46.000000000 -0400
9317 @@ -283,7 +283,7 @@ int drm_getstats(struct drm_device *dev,
9318 stats->data[i].value =
9319 (file_priv->master->lock.hw_lock ? file_priv->master->lock.hw_lock->lock : 0);
9320 @@ -30316,9 +30339,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c linux-2.6.32.48/drivers/g
9321 stats->data[i].type = dev->types[i];
9322 }
9323
9324 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_lock.c linux-2.6.32.48/drivers/gpu/drm/drm_lock.c
9325 ---- linux-2.6.32.48/drivers/gpu/drm/drm_lock.c 2009-12-02 22:51:21.000000000 -0500
9326 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_lock.c 2011-11-12 12:46:45.000000000 -0500
9327 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/drm_lock.c linux-2.6.32.46/drivers/gpu/drm/drm_lock.c
9328 +--- linux-2.6.32.46/drivers/gpu/drm/drm_lock.c 2011-03-27 14:31:47.000000000 -0400
9329 ++++ linux-2.6.32.46/drivers/gpu/drm/drm_lock.c 2011-04-17 15:56:46.000000000 -0400
9330 @@ -87,7 +87,7 @@ int drm_lock(struct drm_device *dev, voi
9331 if (drm_lock_take(&master->lock, lock->context)) {
9332 master->lock.file_priv = file_priv;
9333 @@ -30337,9 +30360,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_lock.c linux-2.6.32.48/drivers/gp
9334
9335 /* kernel_context_switch isn't used by any of the x86 drm
9336 * modules but is required by the Sparc driver.
9337 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c
9338 ---- linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c 2009-12-02 22:51:21.000000000 -0500
9339 -+++ linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c 2011-11-12 12:46:45.000000000 -0500
9340 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i810/i810_dma.c linux-2.6.32.46/drivers/gpu/drm/i810/i810_dma.c
9341 +--- linux-2.6.32.46/drivers/gpu/drm/i810/i810_dma.c 2011-03-27 14:31:47.000000000 -0400
9342 ++++ linux-2.6.32.46/drivers/gpu/drm/i810/i810_dma.c 2011-04-17 15:56:46.000000000 -0400
9343 @@ -952,8 +952,8 @@ static int i810_dma_vertex(struct drm_de
9344 dma->buflist[vertex->idx],
9345 vertex->discard, vertex->used);
9346 @@ -30362,9 +30385,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c linux-2.6.32.48/drive
9347 sarea_priv->last_enqueue = dev_priv->counter - 1;
9348 sarea_priv->last_dispatch = (int)hw_status[5];
9349
9350 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h
9351 ---- linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h 2009-12-02 22:51:21.000000000 -0500
9352 -+++ linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h 2011-11-12 12:46:45.000000000 -0500
9353 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i810/i810_drv.h linux-2.6.32.46/drivers/gpu/drm/i810/i810_drv.h
9354 +--- linux-2.6.32.46/drivers/gpu/drm/i810/i810_drv.h 2011-03-27 14:31:47.000000000 -0400
9355 ++++ linux-2.6.32.46/drivers/gpu/drm/i810/i810_drv.h 2011-05-04 17:56:28.000000000 -0400
9356 @@ -108,8 +108,8 @@ typedef struct drm_i810_private {
9357 int page_flipping;
9358
9359 @@ -30376,9 +30399,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h linux-2.6.32.48/drive
9360
9361 int front_offset;
9362 } drm_i810_private_t;
9363 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h
9364 ---- linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h 2009-12-02 22:51:21.000000000 -0500
9365 -+++ linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h 2011-11-12 12:46:45.000000000 -0500
9366 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i830/i830_drv.h linux-2.6.32.46/drivers/gpu/drm/i830/i830_drv.h
9367 +--- linux-2.6.32.46/drivers/gpu/drm/i830/i830_drv.h 2011-03-27 14:31:47.000000000 -0400
9368 ++++ linux-2.6.32.46/drivers/gpu/drm/i830/i830_drv.h 2011-05-04 17:56:28.000000000 -0400
9369 @@ -115,8 +115,8 @@ typedef struct drm_i830_private {
9370 int page_flipping;
9371
9372 @@ -30390,9 +30413,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h linux-2.6.32.48/drive
9373
9374 int use_mi_batchbuffer_start;
9375
9376 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c
9377 ---- linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c 2009-12-02 22:51:21.000000000 -0500
9378 -+++ linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c 2011-11-12 12:46:45.000000000 -0500
9379 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i830/i830_irq.c linux-2.6.32.46/drivers/gpu/drm/i830/i830_irq.c
9380 +--- linux-2.6.32.46/drivers/gpu/drm/i830/i830_irq.c 2011-03-27 14:31:47.000000000 -0400
9381 ++++ linux-2.6.32.46/drivers/gpu/drm/i830/i830_irq.c 2011-05-04 17:56:28.000000000 -0400
9382 @@ -47,7 +47,7 @@ irqreturn_t i830_driver_irq_handler(DRM_
9383
9384 I830_WRITE16(I830REG_INT_IDENTITY_R, temp);
9385 @@ -30448,9 +30471,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c linux-2.6.32.48/drive
9386 init_waitqueue_head(&dev_priv->irq_queue);
9387 }
9388
9389 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c
9390 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c 2009-12-02 22:51:21.000000000 -0500
9391 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c 2011-11-12 12:46:45.000000000 -0500
9392 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7017.c linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7017.c
9393 +--- linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7017.c 2011-03-27 14:31:47.000000000 -0400
9394 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7017.c 2011-04-17 15:56:46.000000000 -0400
9395 @@ -443,7 +443,7 @@ static void ch7017_destroy(struct intel_
9396 }
9397 }
9398 @@ -30460,9 +30483,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c linux-2.6.32.48/dri
9399 .init = ch7017_init,
9400 .detect = ch7017_detect,
9401 .mode_valid = ch7017_mode_valid,
9402 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c
9403 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c 2009-12-02 22:51:21.000000000 -0500
9404 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c 2011-11-12 12:46:45.000000000 -0500
9405 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7xxx.c linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7xxx.c
9406 +--- linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7xxx.c 2011-03-27 14:31:47.000000000 -0400
9407 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ch7xxx.c 2011-04-17 15:56:46.000000000 -0400
9408 @@ -356,7 +356,7 @@ static void ch7xxx_destroy(struct intel_
9409 }
9410 }
9411 @@ -30472,9 +30495,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c linux-2.6.32.48/dri
9412 .init = ch7xxx_init,
9413 .detect = ch7xxx_detect,
9414 .mode_valid = ch7xxx_mode_valid,
9415 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h
9416 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h 2009-12-02 22:51:21.000000000 -0500
9417 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h 2011-11-12 12:46:45.000000000 -0500
9418 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/dvo.h linux-2.6.32.46/drivers/gpu/drm/i915/dvo.h
9419 +--- linux-2.6.32.46/drivers/gpu/drm/i915/dvo.h 2011-03-27 14:31:47.000000000 -0400
9420 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/dvo.h 2011-04-17 15:56:46.000000000 -0400
9421 @@ -135,23 +135,23 @@ struct intel_dvo_dev_ops {
9422 *
9423 * \return singly-linked list of modes or NULL if no modes found.
9424 @@ -30507,9 +30530,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h linux-2.6.32.48/drivers/gp
9425 +extern const struct intel_dvo_dev_ops ch7017_ops;
9426
9427 #endif /* _INTEL_DVO_H */
9428 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c
9429 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c 2009-12-02 22:51:21.000000000 -0500
9430 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c 2011-11-12 12:46:45.000000000 -0500
9431 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ivch.c linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ivch.c
9432 +--- linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ivch.c 2011-03-27 14:31:47.000000000 -0400
9433 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/dvo_ivch.c 2011-04-17 15:56:46.000000000 -0400
9434 @@ -430,7 +430,7 @@ static void ivch_destroy(struct intel_dv
9435 }
9436 }
9437 @@ -30519,9 +30542,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c linux-2.6.32.48/drive
9438 .init = ivch_init,
9439 .dpms = ivch_dpms,
9440 .save = ivch_save,
9441 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c
9442 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c 2009-12-02 22:51:21.000000000 -0500
9443 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c 2011-11-12 12:46:45.000000000 -0500
9444 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/dvo_sil164.c linux-2.6.32.46/drivers/gpu/drm/i915/dvo_sil164.c
9445 +--- linux-2.6.32.46/drivers/gpu/drm/i915/dvo_sil164.c 2011-03-27 14:31:47.000000000 -0400
9446 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/dvo_sil164.c 2011-04-17 15:56:46.000000000 -0400
9447 @@ -290,7 +290,7 @@ static void sil164_destroy(struct intel_
9448 }
9449 }
9450 @@ -30531,9 +30554,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c linux-2.6.32.48/dri
9451 .init = sil164_init,
9452 .detect = sil164_detect,
9453 .mode_valid = sil164_mode_valid,
9454 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c
9455 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c 2011-11-12 12:44:28.000000000 -0500
9456 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c 2011-11-12 12:46:45.000000000 -0500
9457 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/dvo_tfp410.c linux-2.6.32.46/drivers/gpu/drm/i915/dvo_tfp410.c
9458 +--- linux-2.6.32.46/drivers/gpu/drm/i915/dvo_tfp410.c 2011-03-27 14:31:47.000000000 -0400
9459 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/dvo_tfp410.c 2011-04-17 15:56:46.000000000 -0400
9460 @@ -323,7 +323,7 @@ static void tfp410_destroy(struct intel_
9461 }
9462 }
9463 @@ -30543,9 +30566,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c linux-2.6.32.48/dri
9464 .init = tfp410_init,
9465 .detect = tfp410_detect,
9466 .mode_valid = tfp410_mode_valid,
9467 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c
9468 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-12 12:44:28.000000000 -0500
9469 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-12 12:46:45.000000000 -0500
9470 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/i915_debugfs.c linux-2.6.32.46/drivers/gpu/drm/i915/i915_debugfs.c
9471 +--- linux-2.6.32.46/drivers/gpu/drm/i915/i915_debugfs.c 2011-03-27 14:31:47.000000000 -0400
9472 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/i915_debugfs.c 2011-05-04 17:56:28.000000000 -0400
9473 @@ -192,7 +192,7 @@ static int i915_interrupt_info(struct se
9474 I915_READ(GTIMR));
9475 }
9476 @@ -30555,9 +30578,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c linux-2.6.32.48/d
9477 if (dev_priv->hw_status_page != NULL) {
9478 seq_printf(m, "Current sequence: %d\n",
9479 i915_get_gem_seqno(dev));
9480 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c
9481 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c 2011-11-12 12:44:28.000000000 -0500
9482 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c 2011-11-12 12:46:45.000000000 -0500
9483 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.c linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.c
9484 +--- linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.c 2011-03-27 14:31:47.000000000 -0400
9485 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.c 2011-04-17 15:56:46.000000000 -0400
9486 @@ -285,7 +285,7 @@ i915_pci_resume(struct pci_dev *pdev)
9487 return i915_resume(dev);
9488 }
9489 @@ -30567,9 +30590,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c linux-2.6.32.48/drive
9490 .fault = i915_gem_fault,
9491 .open = drm_gem_vm_open,
9492 .close = drm_gem_vm_close,
9493 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h
9494 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h 2011-11-12 12:44:28.000000000 -0500
9495 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h 2011-11-12 12:46:45.000000000 -0500
9496 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.h linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.h
9497 +--- linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.h 2011-03-27 14:31:47.000000000 -0400
9498 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/i915_drv.h 2011-08-05 20:33:55.000000000 -0400
9499 @@ -168,7 +168,7 @@ struct drm_i915_display_funcs {
9500 /* display clock increase/decrease */
9501 /* pll clock increase/decrease */
9502 @@ -30588,9 +30611,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h linux-2.6.32.48/drive
9503 /** Protects user_irq_refcount and irq_mask_reg */
9504 spinlock_t user_irq_lock;
9505 /** Refcount for i915_user_irq_get() versus i915_user_irq_put(). */
9506 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c
9507 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c 2011-11-12 12:44:28.000000000 -0500
9508 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c 2011-11-12 12:46:45.000000000 -0500
9509 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/i915_gem.c linux-2.6.32.46/drivers/gpu/drm/i915/i915_gem.c
9510 +--- linux-2.6.32.46/drivers/gpu/drm/i915/i915_gem.c 2011-03-27 14:31:47.000000000 -0400
9511 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/i915_gem.c 2011-04-17 15:56:46.000000000 -0400
9512 @@ -102,7 +102,7 @@ i915_gem_get_aperture_ioctl(struct drm_d
9513
9514 args->aper_size = dev->gtt_total;
9515 @@ -30673,9 +30696,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c linux-2.6.32.48/drive
9516 }
9517 i915_verify_inactive(dev, __FILE__, __LINE__);
9518 }
9519 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c
9520 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c 2011-11-12 12:44:28.000000000 -0500
9521 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c 2011-11-12 12:46:45.000000000 -0500
9522 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/i915_irq.c linux-2.6.32.46/drivers/gpu/drm/i915/i915_irq.c
9523 +--- linux-2.6.32.46/drivers/gpu/drm/i915/i915_irq.c 2011-03-27 14:31:47.000000000 -0400
9524 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/i915_irq.c 2011-05-04 17:56:28.000000000 -0400
9525 @@ -528,7 +528,7 @@ irqreturn_t i915_driver_irq_handler(DRM_
9526 int irq_received;
9527 int ret = IRQ_NONE;
9528 @@ -30694,9 +30717,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c linux-2.6.32.48/drive
9529
9530 INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
9531 INIT_WORK(&dev_priv->error_work, i915_error_work_func);
9532 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c
9533 ---- linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c 2011-11-12 12:44:28.000000000 -0500
9534 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c 2011-11-12 12:46:45.000000000 -0500
9535 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/i915/intel_sdvo.c linux-2.6.32.46/drivers/gpu/drm/i915/intel_sdvo.c
9536 +--- linux-2.6.32.46/drivers/gpu/drm/i915/intel_sdvo.c 2011-03-27 14:31:47.000000000 -0400
9537 ++++ linux-2.6.32.46/drivers/gpu/drm/i915/intel_sdvo.c 2011-08-05 20:33:55.000000000 -0400
9538 @@ -2795,7 +2795,9 @@ bool intel_sdvo_init(struct drm_device *
9539 sdvo_priv->slave_addr = intel_sdvo_get_slave_addr(dev, output_device);
9540
9541 @@ -30708,9 +30731,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c linux-2.6.32.48/dri
9542
9543 /* Read the regs to test if we can talk to the device */
9544 for (i = 0; i < 0x40; i++) {
9545 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h
9546 ---- linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h 2009-12-02 22:51:21.000000000 -0500
9547 -+++ linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h 2011-11-12 12:46:45.000000000 -0500
9548 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/mga/mga_drv.h linux-2.6.32.46/drivers/gpu/drm/mga/mga_drv.h
9549 +--- linux-2.6.32.46/drivers/gpu/drm/mga/mga_drv.h 2011-03-27 14:31:47.000000000 -0400
9550 ++++ linux-2.6.32.46/drivers/gpu/drm/mga/mga_drv.h 2011-05-04 17:56:28.000000000 -0400
9551 @@ -120,9 +120,9 @@ typedef struct drm_mga_private {
9552 u32 clear_cmd;
9553 u32 maccess;
9554 @@ -30723,9 +30746,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h linux-2.6.32.48/drivers
9555 u32 next_fence_to_post;
9556
9557 unsigned int fb_cpp;
9558 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c
9559 ---- linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c 2009-12-02 22:51:21.000000000 -0500
9560 -+++ linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c 2011-11-12 12:46:45.000000000 -0500
9561 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/mga/mga_irq.c linux-2.6.32.46/drivers/gpu/drm/mga/mga_irq.c
9562 +--- linux-2.6.32.46/drivers/gpu/drm/mga/mga_irq.c 2011-03-27 14:31:47.000000000 -0400
9563 ++++ linux-2.6.32.46/drivers/gpu/drm/mga/mga_irq.c 2011-05-04 17:56:28.000000000 -0400
9564 @@ -44,7 +44,7 @@ u32 mga_get_vblank_counter(struct drm_de
9565 if (crtc != 0)
9566 return 0;
9567 @@ -30762,9 +30785,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c linux-2.6.32.48/drivers
9568 - *sequence) <= (1 << 23)));
9569
9570 *sequence = cur_fence;
9571 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c
9572 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c 2009-12-02 22:51:21.000000000 -0500
9573 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c 2011-11-12 12:46:45.000000000 -0500
9574 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/r128/r128_cce.c linux-2.6.32.46/drivers/gpu/drm/r128/r128_cce.c
9575 +--- linux-2.6.32.46/drivers/gpu/drm/r128/r128_cce.c 2011-03-27 14:31:47.000000000 -0400
9576 ++++ linux-2.6.32.46/drivers/gpu/drm/r128/r128_cce.c 2011-05-04 17:56:28.000000000 -0400
9577 @@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_d
9578
9579 /* GH: Simple idle check.
9580 @@ -30774,9 +30797,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c linux-2.6.32.48/drive
9581
9582 /* We don't support anything other than bus-mastering ring mode,
9583 * but the ring can be in either AGP or PCI space for the ring
9584 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h
9585 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h 2009-12-02 22:51:21.000000000 -0500
9586 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h 2011-11-12 12:46:45.000000000 -0500
9587 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/r128/r128_drv.h linux-2.6.32.46/drivers/gpu/drm/r128/r128_drv.h
9588 +--- linux-2.6.32.46/drivers/gpu/drm/r128/r128_drv.h 2011-03-27 14:31:47.000000000 -0400
9589 ++++ linux-2.6.32.46/drivers/gpu/drm/r128/r128_drv.h 2011-05-04 17:56:28.000000000 -0400
9590 @@ -90,14 +90,14 @@ typedef struct drm_r128_private {
9591 int is_pci;
9592 unsigned long cce_buffers_offset;
9593 @@ -30794,9 +30817,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h linux-2.6.32.48/drive
9594
9595 u32 color_fmt;
9596 unsigned int front_offset;
9597 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c
9598 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c 2009-12-02 22:51:21.000000000 -0500
9599 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c 2011-11-12 12:46:45.000000000 -0500
9600 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/r128/r128_irq.c linux-2.6.32.46/drivers/gpu/drm/r128/r128_irq.c
9601 +--- linux-2.6.32.46/drivers/gpu/drm/r128/r128_irq.c 2011-03-27 14:31:47.000000000 -0400
9602 ++++ linux-2.6.32.46/drivers/gpu/drm/r128/r128_irq.c 2011-05-04 17:56:28.000000000 -0400
9603 @@ -42,7 +42,7 @@ u32 r128_get_vblank_counter(struct drm_d
9604 if (crtc != 0)
9605 return 0;
9606 @@ -30815,9 +30838,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c linux-2.6.32.48/drive
9607 drm_handle_vblank(dev, 0);
9608 return IRQ_HANDLED;
9609 }
9610 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c
9611 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c 2009-12-02 22:51:21.000000000 -0500
9612 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c 2011-11-12 12:46:45.000000000 -0500
9613 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/r128/r128_state.c linux-2.6.32.46/drivers/gpu/drm/r128/r128_state.c
9614 +--- linux-2.6.32.46/drivers/gpu/drm/r128/r128_state.c 2011-03-27 14:31:47.000000000 -0400
9615 ++++ linux-2.6.32.46/drivers/gpu/drm/r128/r128_state.c 2011-05-04 17:56:28.000000000 -0400
9616 @@ -323,10 +323,10 @@ static void r128_clear_box(drm_r128_priv
9617
9618 static void r128_cce_performance_boxes(drm_r128_private_t * dev_priv)
9619 @@ -30831,9 +30854,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c linux-2.6.32.48/dri
9620 }
9621 }
9622
9623 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c
9624 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c 2011-11-12 12:44:28.000000000 -0500
9625 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c 2011-11-12 12:46:45.000000000 -0500
9626 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/atom.c linux-2.6.32.46/drivers/gpu/drm/radeon/atom.c
9627 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/atom.c 2011-05-10 22:12:01.000000000 -0400
9628 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/atom.c 2011-05-16 21:46:57.000000000 -0400
9629 @@ -1115,6 +1115,8 @@ struct atom_context *atom_parse(struct c
9630 char name[512];
9631 int i;
9632 @@ -30843,9 +30866,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c linux-2.6.32.48/drivers
9633 ctx->card = card;
9634 ctx->bios = bios;
9635
9636 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c
9637 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c 2009-12-02 22:51:21.000000000 -0500
9638 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c 2011-11-12 12:46:45.000000000 -0500
9639 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/mkregtable.c linux-2.6.32.46/drivers/gpu/drm/radeon/mkregtable.c
9640 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/mkregtable.c 2011-03-27 14:31:47.000000000 -0400
9641 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/mkregtable.c 2011-04-17 15:56:46.000000000 -0400
9642 @@ -637,14 +637,14 @@ static int parser_auth(struct table *t,
9643 regex_t mask_rex;
9644 regmatch_t match[4];
9645 @@ -30863,9 +30886,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c linux-2.6.32.48/d
9646
9647 if (regcomp
9648 (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
9649 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c
9650 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-12 12:44:28.000000000 -0500
9651 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-12 12:46:45.000000000 -0500
9652 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_atombios.c linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_atombios.c
9653 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_atombios.c 2011-03-27 14:31:47.000000000 -0400
9654 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_atombios.c 2011-05-16 21:46:57.000000000 -0400
9655 @@ -275,6 +275,8 @@ bool radeon_get_atom_connector_info_from
9656 bool linkb;
9657 struct radeon_i2c_bus_rec ddc_bus;
9658 @@ -30899,9 +30922,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c linux-2.6.32
9659
9660 atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset);
9661
9662 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c
9663 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c 2011-11-12 12:44:28.000000000 -0500
9664 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c 2011-11-12 12:46:45.000000000 -0500
9665 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_display.c linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_display.c
9666 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_display.c 2011-03-27 14:31:47.000000000 -0400
9667 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_display.c 2011-04-17 15:56:46.000000000 -0400
9668 @@ -482,7 +482,7 @@ void radeon_compute_pll(struct radeon_pl
9669
9670 if (flags & RADEON_PLL_PREFER_CLOSEST_LOWER) {
9671 @@ -30911,9 +30934,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c linux-2.6.32.
9672 } else
9673 error = abs(current_freq - freq);
9674 vco_diff = abs(vco - best_vco);
9675 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h
9676 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-12 12:44:28.000000000 -0500
9677 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-12 12:46:45.000000000 -0500
9678 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_drv.h linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_drv.h
9679 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_drv.h 2011-03-27 14:31:47.000000000 -0400
9680 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_drv.h 2011-05-04 17:56:28.000000000 -0400
9681 @@ -253,7 +253,7 @@ typedef struct drm_radeon_private {
9682
9683 /* SW interrupt */
9684 @@ -30923,9 +30946,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h linux-2.6.32.48/d
9685 int vblank_crtc;
9686 uint32_t irq_enable_reg;
9687 uint32_t r500_disp_irq_reg;
9688 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c
9689 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c 2009-12-02 22:51:21.000000000 -0500
9690 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c 2011-11-12 12:46:45.000000000 -0500
9691 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_fence.c linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_fence.c
9692 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_fence.c 2011-03-27 14:31:47.000000000 -0400
9693 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_fence.c 2011-05-04 17:56:28.000000000 -0400
9694 @@ -47,7 +47,7 @@ int radeon_fence_emit(struct radeon_devi
9695 write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
9696 return 0;
9697 @@ -30944,9 +30967,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c linux-2.6.32.48
9698 INIT_LIST_HEAD(&rdev->fence_drv.created);
9699 INIT_LIST_HEAD(&rdev->fence_drv.emited);
9700 INIT_LIST_HEAD(&rdev->fence_drv.signaled);
9701 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h
9702 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h 2011-11-12 12:44:28.000000000 -0500
9703 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h 2011-11-12 12:46:45.000000000 -0500
9704 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon.h linux-2.6.32.46/drivers/gpu/drm/radeon/radeon.h
9705 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon.h 2011-03-27 14:31:47.000000000 -0400
9706 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon.h 2011-08-05 20:33:55.000000000 -0400
9707 @@ -149,7 +149,7 @@ int radeon_pm_init(struct radeon_device
9708 */
9709 struct radeon_fence_driver {
9710 @@ -30965,9 +30988,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h linux-2.6.32.48/drive
9711
9712 /*
9713 * Asic structures
9714 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c
9715 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c 2009-12-02 22:51:21.000000000 -0500
9716 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-11-12 12:46:45.000000000 -0500
9717 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ioc32.c linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ioc32.c
9718 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-03-27 14:31:47.000000000 -0400
9719 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-04-23 13:57:24.000000000 -0400
9720 @@ -368,7 +368,7 @@ static int compat_radeon_cp_setparam(str
9721 request = compat_alloc_user_space(sizeof(*request));
9722 if (!access_ok(VERIFY_WRITE, request, sizeof(*request))
9723 @@ -30977,9 +31000,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c linux-2.6.32.48
9724 &request->value))
9725 return -EFAULT;
9726
9727 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c
9728 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c 2009-12-02 22:51:21.000000000 -0500
9729 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c 2011-11-12 12:46:45.000000000 -0500
9730 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_irq.c linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_irq.c
9731 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_irq.c 2011-03-27 14:31:47.000000000 -0400
9732 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_irq.c 2011-05-04 17:56:28.000000000 -0400
9733 @@ -225,8 +225,8 @@ static int radeon_emit_irq(struct drm_de
9734 unsigned int ret;
9735 RING_LOCALS;
9736 @@ -31000,9 +31023,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c linux-2.6.32.48/d
9737 DRM_INIT_WAITQUEUE(&dev_priv->swi_queue);
9738
9739 dev->max_vblank_count = 0x001fffff;
9740 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c
9741 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c 2011-11-12 12:44:28.000000000 -0500
9742 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c 2011-11-12 12:46:45.000000000 -0500
9743 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_state.c linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_state.c
9744 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_state.c 2011-03-27 14:31:47.000000000 -0400
9745 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_state.c 2011-04-17 15:56:46.000000000 -0400
9746 @@ -3021,7 +3021,7 @@ static int radeon_cp_getparam(struct drm
9747 {
9748 drm_radeon_private_t *dev_priv = dev->dev_private;
9749 @@ -31012,9 +31035,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c linux-2.6.32.48
9750
9751 DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
9752
9753 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c
9754 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c 2009-12-02 22:51:21.000000000 -0500
9755 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c 2011-11-12 12:46:45.000000000 -0500
9756 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ttm.c linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ttm.c
9757 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ttm.c 2011-03-27 14:31:47.000000000 -0400
9758 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/radeon_ttm.c 2011-04-17 15:56:46.000000000 -0400
9759 @@ -535,27 +535,10 @@ void radeon_ttm_fini(struct radeon_devic
9760 DRM_INFO("radeon: ttm finalized\n");
9761 }
9762 @@ -31066,9 +31089,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c linux-2.6.32.48/d
9763 }
9764
9765
9766 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c
9767 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c 2011-11-12 12:44:28.000000000 -0500
9768 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c 2011-11-12 12:46:45.000000000 -0500
9769 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/radeon/rs690.c linux-2.6.32.46/drivers/gpu/drm/radeon/rs690.c
9770 +--- linux-2.6.32.46/drivers/gpu/drm/radeon/rs690.c 2011-03-27 14:31:47.000000000 -0400
9771 ++++ linux-2.6.32.46/drivers/gpu/drm/radeon/rs690.c 2011-04-17 15:56:46.000000000 -0400
9772 @@ -302,9 +302,11 @@ void rs690_crtc_bandwidth_compute(struct
9773 if (rdev->pm.max_bandwidth.full > rdev->pm.sideport_bandwidth.full &&
9774 rdev->pm.sideport_bandwidth.full)
9775 @@ -31082,9 +31105,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c linux-2.6.32.48/driver
9776 } else {
9777 if (rdev->pm.max_bandwidth.full > rdev->pm.k8_bandwidth.full &&
9778 rdev->pm.k8_bandwidth.full)
9779 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c
9780 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c 2011-11-12 12:44:28.000000000 -0500
9781 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c 2011-11-12 12:46:45.000000000 -0500
9782 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo.c linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo.c
9783 +--- linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo.c 2011-08-29 22:24:44.000000000 -0400
9784 ++++ linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo.c 2011-08-29 22:25:07.000000000 -0400
9785 @@ -67,7 +67,7 @@ static struct attribute *ttm_bo_global_a
9786 NULL
9787 };
9788 @@ -31094,9 +31117,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c linux-2.6.32.48/drivers/
9789 .show = &ttm_bo_global_show
9790 };
9791
9792 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c
9793 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c 2009-12-02 22:51:21.000000000 -0500
9794 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c 2011-11-12 12:46:45.000000000 -0500
9795 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo_vm.c linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo_vm.c
9796 +--- linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo_vm.c 2011-03-27 14:31:47.000000000 -0400
9797 ++++ linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_bo_vm.c 2011-04-17 15:56:46.000000000 -0400
9798 @@ -73,7 +73,7 @@ static int ttm_bo_vm_fault(struct vm_are
9799 {
9800 struct ttm_buffer_object *bo = (struct ttm_buffer_object *)
9801 @@ -31117,9 +31140,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c linux-2.6.32.48/drive
9802 /*
9803 * Work around locking order reversal in fault / nopfn
9804 * between mmap_sem and bo_reserve: Perform a trylock operation
9805 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c
9806 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c 2009-12-02 22:51:21.000000000 -0500
9807 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c 2011-11-12 12:46:45.000000000 -0500
9808 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_global.c linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_global.c
9809 +--- linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_global.c 2011-03-27 14:31:47.000000000 -0400
9810 ++++ linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_global.c 2011-04-17 15:56:46.000000000 -0400
9811 @@ -36,7 +36,7 @@
9812 struct ttm_global_item {
9813 struct mutex mutex;
9814 @@ -31177,9 +31200,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c linux-2.6.32.48/driv
9815 ref->release(ref);
9816 item->object = NULL;
9817 }
9818 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c
9819 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c 2009-12-02 22:51:21.000000000 -0500
9820 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c 2011-11-12 12:46:45.000000000 -0500
9821 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_memory.c linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_memory.c
9822 +--- linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_memory.c 2011-03-27 14:31:47.000000000 -0400
9823 ++++ linux-2.6.32.46/drivers/gpu/drm/ttm/ttm_memory.c 2011-04-17 15:56:46.000000000 -0400
9824 @@ -152,7 +152,7 @@ static struct attribute *ttm_mem_zone_at
9825 NULL
9826 };
9827 @@ -31189,9 +31212,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c linux-2.6.32.48/driv
9828 .show = &ttm_mem_zone_show,
9829 .store = &ttm_mem_zone_store
9830 };
9831 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h
9832 ---- linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h 2009-12-02 22:51:21.000000000 -0500
9833 -+++ linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h 2011-11-12 12:46:45.000000000 -0500
9834 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/via/via_drv.h linux-2.6.32.46/drivers/gpu/drm/via/via_drv.h
9835 +--- linux-2.6.32.46/drivers/gpu/drm/via/via_drv.h 2011-03-27 14:31:47.000000000 -0400
9836 ++++ linux-2.6.32.46/drivers/gpu/drm/via/via_drv.h 2011-05-04 17:56:28.000000000 -0400
9837 @@ -51,7 +51,7 @@ typedef struct drm_via_ring_buffer {
9838 typedef uint32_t maskarray_t[5];
9839
9840 @@ -31210,9 +31233,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h linux-2.6.32.48/drivers
9841 drm_via_state_t hc_state;
9842 char pci_buf[VIA_PCI_BUF_SIZE];
9843 const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE];
9844 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c
9845 ---- linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c 2009-12-02 22:51:21.000000000 -0500
9846 -+++ linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c 2011-11-12 12:46:45.000000000 -0500
9847 +diff -urNp linux-2.6.32.46/drivers/gpu/drm/via/via_irq.c linux-2.6.32.46/drivers/gpu/drm/via/via_irq.c
9848 +--- linux-2.6.32.46/drivers/gpu/drm/via/via_irq.c 2011-03-27 14:31:47.000000000 -0400
9849 ++++ linux-2.6.32.46/drivers/gpu/drm/via/via_irq.c 2011-05-04 17:56:28.000000000 -0400
9850 @@ -102,7 +102,7 @@ u32 via_get_vblank_counter(struct drm_de
9851 if (crtc != 0)
9852 return 0;
9853 @@ -31283,9 +31306,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c linux-2.6.32.48/drivers
9854 irqwait->request.type &= ~_DRM_VBLANK_RELATIVE;
9855 case VIA_IRQ_ABSOLUTE:
9856 break;
9857 -diff -urNp linux-2.6.32.48/drivers/hid/hid-core.c linux-2.6.32.48/drivers/hid/hid-core.c
9858 ---- linux-2.6.32.48/drivers/hid/hid-core.c 2011-11-12 12:44:28.000000000 -0500
9859 -+++ linux-2.6.32.48/drivers/hid/hid-core.c 2011-11-12 12:46:45.000000000 -0500
9860 +diff -urNp linux-2.6.32.46/drivers/hid/hid-core.c linux-2.6.32.46/drivers/hid/hid-core.c
9861 +--- linux-2.6.32.46/drivers/hid/hid-core.c 2011-05-10 22:12:01.000000000 -0400
9862 ++++ linux-2.6.32.46/drivers/hid/hid-core.c 2011-05-10 22:12:32.000000000 -0400
9863 @@ -1752,7 +1752,7 @@ static bool hid_ignore(struct hid_device
9864
9865 int hid_add_device(struct hid_device *hdev)
9866 @@ -31304,9 +31327,9 @@ diff -urNp linux-2.6.32.48/drivers/hid/hid-core.c linux-2.6.32.48/drivers/hid/hi
9867
9868 ret = device_add(&hdev->dev);
9869 if (!ret)
9870 -diff -urNp linux-2.6.32.48/drivers/hid/usbhid/hiddev.c linux-2.6.32.48/drivers/hid/usbhid/hiddev.c
9871 ---- linux-2.6.32.48/drivers/hid/usbhid/hiddev.c 2009-12-02 22:51:21.000000000 -0500
9872 -+++ linux-2.6.32.48/drivers/hid/usbhid/hiddev.c 2011-11-12 12:46:45.000000000 -0500
9873 +diff -urNp linux-2.6.32.46/drivers/hid/usbhid/hiddev.c linux-2.6.32.46/drivers/hid/usbhid/hiddev.c
9874 +--- linux-2.6.32.46/drivers/hid/usbhid/hiddev.c 2011-03-27 14:31:47.000000000 -0400
9875 ++++ linux-2.6.32.46/drivers/hid/usbhid/hiddev.c 2011-04-17 15:56:46.000000000 -0400
9876 @@ -617,7 +617,7 @@ static long hiddev_ioctl(struct file *fi
9877 return put_user(HID_VERSION, (int __user *)arg);
9878
9879 @@ -31316,9 +31339,9 @@ diff -urNp linux-2.6.32.48/drivers/hid/usbhid/hiddev.c linux-2.6.32.48/drivers/h
9880 return -EINVAL;
9881
9882 for (i = 0; i < hid->maxcollection; i++)
9883 -diff -urNp linux-2.6.32.48/drivers/hwmon/lis3lv02d.c linux-2.6.32.48/drivers/hwmon/lis3lv02d.c
9884 ---- linux-2.6.32.48/drivers/hwmon/lis3lv02d.c 2011-11-12 12:44:28.000000000 -0500
9885 -+++ linux-2.6.32.48/drivers/hwmon/lis3lv02d.c 2011-11-12 12:46:45.000000000 -0500
9886 +diff -urNp linux-2.6.32.46/drivers/hwmon/lis3lv02d.c linux-2.6.32.46/drivers/hwmon/lis3lv02d.c
9887 +--- linux-2.6.32.46/drivers/hwmon/lis3lv02d.c 2011-03-27 14:31:47.000000000 -0400
9888 ++++ linux-2.6.32.46/drivers/hwmon/lis3lv02d.c 2011-05-04 17:56:28.000000000 -0400
9889 @@ -146,7 +146,7 @@ static irqreturn_t lis302dl_interrupt(in
9890 * the lid is closed. This leads to interrupts as soon as a little move
9891 * is done.
9892 @@ -31355,9 +31378,9 @@ diff -urNp linux-2.6.32.48/drivers/hwmon/lis3lv02d.c linux-2.6.32.48/drivers/hwm
9893 return POLLIN | POLLRDNORM;
9894 return 0;
9895 }
9896 -diff -urNp linux-2.6.32.48/drivers/hwmon/lis3lv02d.h linux-2.6.32.48/drivers/hwmon/lis3lv02d.h
9897 ---- linux-2.6.32.48/drivers/hwmon/lis3lv02d.h 2011-11-12 12:44:28.000000000 -0500
9898 -+++ linux-2.6.32.48/drivers/hwmon/lis3lv02d.h 2011-11-12 12:46:45.000000000 -0500
9899 +diff -urNp linux-2.6.32.46/drivers/hwmon/lis3lv02d.h linux-2.6.32.46/drivers/hwmon/lis3lv02d.h
9900 +--- linux-2.6.32.46/drivers/hwmon/lis3lv02d.h 2011-03-27 14:31:47.000000000 -0400
9901 ++++ linux-2.6.32.46/drivers/hwmon/lis3lv02d.h 2011-05-04 17:56:28.000000000 -0400
9902 @@ -201,7 +201,7 @@ struct lis3lv02d {
9903
9904 struct input_polled_dev *idev; /* input device */
9905 @@ -31367,9 +31390,9 @@ diff -urNp linux-2.6.32.48/drivers/hwmon/lis3lv02d.h linux-2.6.32.48/drivers/hwm
9906 int xcalib; /* calibrated null value for x */
9907 int ycalib; /* calibrated null value for y */
9908 int zcalib; /* calibrated null value for z */
9909 -diff -urNp linux-2.6.32.48/drivers/hwmon/sht15.c linux-2.6.32.48/drivers/hwmon/sht15.c
9910 ---- linux-2.6.32.48/drivers/hwmon/sht15.c 2011-11-12 12:44:29.000000000 -0500
9911 -+++ linux-2.6.32.48/drivers/hwmon/sht15.c 2011-11-12 12:46:45.000000000 -0500
9912 +diff -urNp linux-2.6.32.46/drivers/hwmon/sht15.c linux-2.6.32.46/drivers/hwmon/sht15.c
9913 +--- linux-2.6.32.46/drivers/hwmon/sht15.c 2011-03-27 14:31:47.000000000 -0400
9914 ++++ linux-2.6.32.46/drivers/hwmon/sht15.c 2011-05-04 17:56:28.000000000 -0400
9915 @@ -112,7 +112,7 @@ struct sht15_data {
9916 int supply_uV;
9917 int supply_uV_valid;
9918 @@ -31418,9 +31441,9 @@ diff -urNp linux-2.6.32.48/drivers/hwmon/sht15.c linux-2.6.32.48/drivers/hwmon/s
9919 return;
9920 }
9921 /* Read the data back from the device */
9922 -diff -urNp linux-2.6.32.48/drivers/hwmon/w83791d.c linux-2.6.32.48/drivers/hwmon/w83791d.c
9923 ---- linux-2.6.32.48/drivers/hwmon/w83791d.c 2009-12-02 22:51:21.000000000 -0500
9924 -+++ linux-2.6.32.48/drivers/hwmon/w83791d.c 2011-11-12 12:46:45.000000000 -0500
9925 +diff -urNp linux-2.6.32.46/drivers/hwmon/w83791d.c linux-2.6.32.46/drivers/hwmon/w83791d.c
9926 +--- linux-2.6.32.46/drivers/hwmon/w83791d.c 2011-03-27 14:31:47.000000000 -0400
9927 ++++ linux-2.6.32.46/drivers/hwmon/w83791d.c 2011-04-17 15:56:46.000000000 -0400
9928 @@ -330,8 +330,8 @@ static int w83791d_detect(struct i2c_cli
9929 struct i2c_board_info *info);
9930 static int w83791d_remove(struct i2c_client *client);
9931 @@ -31432,9 +31455,9 @@ diff -urNp linux-2.6.32.48/drivers/hwmon/w83791d.c linux-2.6.32.48/drivers/hwmon
9932 static struct w83791d_data *w83791d_update_device(struct device *dev);
9933
9934 #ifdef DEBUG
9935 -diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c
9936 ---- linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c 2009-12-02 22:51:21.000000000 -0500
9937 -+++ linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c 2011-11-12 12:46:45.000000000 -0500
9938 +diff -urNp linux-2.6.32.46/drivers/i2c/busses/i2c-amd756-s4882.c linux-2.6.32.46/drivers/i2c/busses/i2c-amd756-s4882.c
9939 +--- linux-2.6.32.46/drivers/i2c/busses/i2c-amd756-s4882.c 2011-03-27 14:31:47.000000000 -0400
9940 ++++ linux-2.6.32.46/drivers/i2c/busses/i2c-amd756-s4882.c 2011-08-23 21:22:32.000000000 -0400
9941 @@ -43,7 +43,7 @@
9942 extern struct i2c_adapter amd756_smbus;
9943
9944 @@ -31444,9 +31467,9 @@ diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c linux-2.6.32.48
9945
9946 /* Wrapper access functions for multiplexed SMBus */
9947 static DEFINE_MUTEX(amd756_lock);
9948 -diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c
9949 ---- linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c 2009-12-02 22:51:21.000000000 -0500
9950 -+++ linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-11-12 12:46:45.000000000 -0500
9951 +diff -urNp linux-2.6.32.46/drivers/i2c/busses/i2c-nforce2-s4985.c linux-2.6.32.46/drivers/i2c/busses/i2c-nforce2-s4985.c
9952 +--- linux-2.6.32.46/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-03-27 14:31:47.000000000 -0400
9953 ++++ linux-2.6.32.46/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-08-23 21:22:32.000000000 -0400
9954 @@ -41,7 +41,7 @@
9955 extern struct i2c_adapter *nforce2_smbus;
9956
9957 @@ -31456,9 +31479,9 @@ diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c linux-2.6.32.4
9958
9959 /* Wrapper access functions for multiplexed SMBus */
9960 static DEFINE_MUTEX(nforce2_lock);
9961 -diff -urNp linux-2.6.32.48/drivers/ide/ide-cd.c linux-2.6.32.48/drivers/ide/ide-cd.c
9962 ---- linux-2.6.32.48/drivers/ide/ide-cd.c 2011-11-12 12:44:29.000000000 -0500
9963 -+++ linux-2.6.32.48/drivers/ide/ide-cd.c 2011-11-12 12:46:45.000000000 -0500
9964 +diff -urNp linux-2.6.32.46/drivers/ide/ide-cd.c linux-2.6.32.46/drivers/ide/ide-cd.c
9965 +--- linux-2.6.32.46/drivers/ide/ide-cd.c 2011-03-27 14:31:47.000000000 -0400
9966 ++++ linux-2.6.32.46/drivers/ide/ide-cd.c 2011-04-17 15:56:46.000000000 -0400
9967 @@ -774,7 +774,7 @@ static void cdrom_do_block_pc(ide_drive_
9968 alignment = queue_dma_alignment(q) | q->dma_pad_mask;
9969 if ((unsigned long)buf & alignment
9970 @@ -31468,9 +31491,9 @@ diff -urNp linux-2.6.32.48/drivers/ide/ide-cd.c linux-2.6.32.48/drivers/ide/ide-
9971 drive->dma = 0;
9972 }
9973 }
9974 -diff -urNp linux-2.6.32.48/drivers/ide/ide-floppy.c linux-2.6.32.48/drivers/ide/ide-floppy.c
9975 ---- linux-2.6.32.48/drivers/ide/ide-floppy.c 2009-12-02 22:51:21.000000000 -0500
9976 -+++ linux-2.6.32.48/drivers/ide/ide-floppy.c 2011-11-12 12:46:45.000000000 -0500
9977 +diff -urNp linux-2.6.32.46/drivers/ide/ide-floppy.c linux-2.6.32.46/drivers/ide/ide-floppy.c
9978 +--- linux-2.6.32.46/drivers/ide/ide-floppy.c 2011-03-27 14:31:47.000000000 -0400
9979 ++++ linux-2.6.32.46/drivers/ide/ide-floppy.c 2011-05-16 21:46:57.000000000 -0400
9980 @@ -373,6 +373,8 @@ static int ide_floppy_get_capacity(ide_d
9981 u8 pc_buf[256], header_len, desc_cnt;
9982 int i, rc = 1, blocks, length;
9983 @@ -31480,9 +31503,9 @@ diff -urNp linux-2.6.32.48/drivers/ide/ide-floppy.c linux-2.6.32.48/drivers/ide/
9984 ide_debug_log(IDE_DBG_FUNC, "enter");
9985
9986 drive->bios_cyl = 0;
9987 -diff -urNp linux-2.6.32.48/drivers/ide/setup-pci.c linux-2.6.32.48/drivers/ide/setup-pci.c
9988 ---- linux-2.6.32.48/drivers/ide/setup-pci.c 2009-12-02 22:51:21.000000000 -0500
9989 -+++ linux-2.6.32.48/drivers/ide/setup-pci.c 2011-11-12 12:46:45.000000000 -0500
9990 +diff -urNp linux-2.6.32.46/drivers/ide/setup-pci.c linux-2.6.32.46/drivers/ide/setup-pci.c
9991 +--- linux-2.6.32.46/drivers/ide/setup-pci.c 2011-03-27 14:31:47.000000000 -0400
9992 ++++ linux-2.6.32.46/drivers/ide/setup-pci.c 2011-05-16 21:46:57.000000000 -0400
9993 @@ -542,6 +542,8 @@ int ide_pci_init_two(struct pci_dev *dev
9994 int ret, i, n_ports = dev2 ? 4 : 2;
9995 struct ide_hw hw[4], *hws[] = { NULL, NULL, NULL, NULL };
9996 @@ -31492,9 +31515,9 @@ diff -urNp linux-2.6.32.48/drivers/ide/setup-pci.c linux-2.6.32.48/drivers/ide/s
9997 for (i = 0; i < n_ports / 2; i++) {
9998 ret = ide_setup_pci_controller(pdev[i], d, !i);
9999 if (ret < 0)
10000 -diff -urNp linux-2.6.32.48/drivers/ieee1394/dv1394.c linux-2.6.32.48/drivers/ieee1394/dv1394.c
10001 ---- linux-2.6.32.48/drivers/ieee1394/dv1394.c 2009-12-02 22:51:21.000000000 -0500
10002 -+++ linux-2.6.32.48/drivers/ieee1394/dv1394.c 2011-11-12 12:46:45.000000000 -0500
10003 +diff -urNp linux-2.6.32.46/drivers/ieee1394/dv1394.c linux-2.6.32.46/drivers/ieee1394/dv1394.c
10004 +--- linux-2.6.32.46/drivers/ieee1394/dv1394.c 2011-03-27 14:31:47.000000000 -0400
10005 ++++ linux-2.6.32.46/drivers/ieee1394/dv1394.c 2011-04-23 12:56:11.000000000 -0400
10006 @@ -739,7 +739,7 @@ static void frame_prepare(struct video_c
10007 based upon DIF section and sequence
10008 */
10009 @@ -31504,9 +31527,9 @@ diff -urNp linux-2.6.32.48/drivers/ieee1394/dv1394.c linux-2.6.32.48/drivers/iee
10010 frame_put_packet (struct frame *f, struct packet *p)
10011 {
10012 int section_type = p->data[0] >> 5; /* section type is in bits 5 - 7 */
10013 -diff -urNp linux-2.6.32.48/drivers/ieee1394/hosts.c linux-2.6.32.48/drivers/ieee1394/hosts.c
10014 ---- linux-2.6.32.48/drivers/ieee1394/hosts.c 2009-12-02 22:51:21.000000000 -0500
10015 -+++ linux-2.6.32.48/drivers/ieee1394/hosts.c 2011-11-12 12:46:45.000000000 -0500
10016 +diff -urNp linux-2.6.32.46/drivers/ieee1394/hosts.c linux-2.6.32.46/drivers/ieee1394/hosts.c
10017 +--- linux-2.6.32.46/drivers/ieee1394/hosts.c 2011-03-27 14:31:47.000000000 -0400
10018 ++++ linux-2.6.32.46/drivers/ieee1394/hosts.c 2011-04-17 15:56:46.000000000 -0400
10019 @@ -78,6 +78,7 @@ static int dummy_isoctl(struct hpsb_iso
10020 }
10021
10022 @@ -31515,9 +31538,9 @@ diff -urNp linux-2.6.32.48/drivers/ieee1394/hosts.c linux-2.6.32.48/drivers/ieee
10023 .transmit_packet = dummy_transmit_packet,
10024 .devctl = dummy_devctl,
10025 .isoctl = dummy_isoctl
10026 -diff -urNp linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c
10027 ---- linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c 2009-12-02 22:51:21.000000000 -0500
10028 -+++ linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c 2011-11-12 12:46:45.000000000 -0500
10029 +diff -urNp linux-2.6.32.46/drivers/ieee1394/init_ohci1394_dma.c linux-2.6.32.46/drivers/ieee1394/init_ohci1394_dma.c
10030 +--- linux-2.6.32.46/drivers/ieee1394/init_ohci1394_dma.c 2011-03-27 14:31:47.000000000 -0400
10031 ++++ linux-2.6.32.46/drivers/ieee1394/init_ohci1394_dma.c 2011-04-17 15:56:46.000000000 -0400
10032 @@ -257,7 +257,7 @@ void __init init_ohci1394_dma_on_all_con
10033 for (func = 0; func < 8; func++) {
10034 u32 class = read_pci_config(num,slot,func,
10035 @@ -31527,9 +31550,9 @@ diff -urNp linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c linux-2.6.32.48/
10036 continue; /* No device at this func */
10037
10038 if (class>>8 != PCI_CLASS_SERIAL_FIREWIRE_OHCI)
10039 -diff -urNp linux-2.6.32.48/drivers/ieee1394/ohci1394.c linux-2.6.32.48/drivers/ieee1394/ohci1394.c
10040 ---- linux-2.6.32.48/drivers/ieee1394/ohci1394.c 2009-12-02 22:51:21.000000000 -0500
10041 -+++ linux-2.6.32.48/drivers/ieee1394/ohci1394.c 2011-11-12 12:46:45.000000000 -0500
10042 +diff -urNp linux-2.6.32.46/drivers/ieee1394/ohci1394.c linux-2.6.32.46/drivers/ieee1394/ohci1394.c
10043 +--- linux-2.6.32.46/drivers/ieee1394/ohci1394.c 2011-03-27 14:31:47.000000000 -0400
10044 ++++ linux-2.6.32.46/drivers/ieee1394/ohci1394.c 2011-04-23 12:56:11.000000000 -0400
10045 @@ -147,9 +147,9 @@ printk(level "%s: " fmt "\n" , OHCI1394_
10046 printk(level "%s: fw-host%d: " fmt "\n" , OHCI1394_DRIVER_NAME, ohci->host->id , ## args)
10047
10048 @@ -31542,9 +31565,9 @@ diff -urNp linux-2.6.32.48/drivers/ieee1394/ohci1394.c linux-2.6.32.48/drivers/i
10049
10050 static void dma_trm_tasklet(unsigned long data);
10051 static void dma_trm_reset(struct dma_trm_ctx *d);
10052 -diff -urNp linux-2.6.32.48/drivers/ieee1394/sbp2.c linux-2.6.32.48/drivers/ieee1394/sbp2.c
10053 ---- linux-2.6.32.48/drivers/ieee1394/sbp2.c 2009-12-02 22:51:21.000000000 -0500
10054 -+++ linux-2.6.32.48/drivers/ieee1394/sbp2.c 2011-11-12 12:46:45.000000000 -0500
10055 +diff -urNp linux-2.6.32.46/drivers/ieee1394/sbp2.c linux-2.6.32.46/drivers/ieee1394/sbp2.c
10056 +--- linux-2.6.32.46/drivers/ieee1394/sbp2.c 2011-03-27 14:31:47.000000000 -0400
10057 ++++ linux-2.6.32.46/drivers/ieee1394/sbp2.c 2011-04-23 12:56:11.000000000 -0400
10058 @@ -2111,7 +2111,7 @@ MODULE_DESCRIPTION("IEEE-1394 SBP-2 prot
10059 MODULE_SUPPORTED_DEVICE(SBP2_DEVICE_NAME);
10060 MODULE_LICENSE("GPL");
10061 @@ -31554,9 +31577,9 @@ diff -urNp linux-2.6.32.48/drivers/ieee1394/sbp2.c linux-2.6.32.48/drivers/ieee1
10062 {
10063 int ret;
10064
10065 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/infiniband/core/cm.c
10066 ---- linux-2.6.32.48/drivers/infiniband/core/cm.c 2011-11-12 12:44:29.000000000 -0500
10067 -+++ linux-2.6.32.48/drivers/infiniband/core/cm.c 2011-11-12 12:46:45.000000000 -0500
10068 +diff -urNp linux-2.6.32.46/drivers/infiniband/core/cm.c linux-2.6.32.46/drivers/infiniband/core/cm.c
10069 +--- linux-2.6.32.46/drivers/infiniband/core/cm.c 2011-03-27 14:31:47.000000000 -0400
10070 ++++ linux-2.6.32.46/drivers/infiniband/core/cm.c 2011-04-17 15:56:46.000000000 -0400
10071 @@ -112,7 +112,7 @@ static char const counter_group_names[CM
10072
10073 struct cm_counter_group {
10074 @@ -31700,9 +31723,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
10075 .show = cm_show_counter
10076 };
10077
10078 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c
10079 ---- linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c 2009-12-02 22:51:21.000000000 -0500
10080 -+++ linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c 2011-11-12 12:46:45.000000000 -0500
10081 +diff -urNp linux-2.6.32.46/drivers/infiniband/core/fmr_pool.c linux-2.6.32.46/drivers/infiniband/core/fmr_pool.c
10082 +--- linux-2.6.32.46/drivers/infiniband/core/fmr_pool.c 2011-03-27 14:31:47.000000000 -0400
10083 ++++ linux-2.6.32.46/drivers/infiniband/core/fmr_pool.c 2011-05-04 17:56:28.000000000 -0400
10084 @@ -97,8 +97,8 @@ struct ib_fmr_pool {
10085
10086 struct task_struct *thread;
10087 @@ -31770,9 +31793,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c linux-2.6.32.48/dr
10088 wake_up_process(pool->thread);
10089 }
10090 }
10091 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/sysfs.c linux-2.6.32.48/drivers/infiniband/core/sysfs.c
10092 ---- linux-2.6.32.48/drivers/infiniband/core/sysfs.c 2009-12-02 22:51:21.000000000 -0500
10093 -+++ linux-2.6.32.48/drivers/infiniband/core/sysfs.c 2011-11-12 12:46:45.000000000 -0500
10094 +diff -urNp linux-2.6.32.46/drivers/infiniband/core/sysfs.c linux-2.6.32.46/drivers/infiniband/core/sysfs.c
10095 +--- linux-2.6.32.46/drivers/infiniband/core/sysfs.c 2011-03-27 14:31:47.000000000 -0400
10096 ++++ linux-2.6.32.46/drivers/infiniband/core/sysfs.c 2011-04-17 15:56:46.000000000 -0400
10097 @@ -79,7 +79,7 @@ static ssize_t port_attr_show(struct kob
10098 return port_attr->show(p, port_attr, buf);
10099 }
10100 @@ -31782,9 +31805,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/sysfs.c linux-2.6.32.48/drive
10101 .show = port_attr_show
10102 };
10103
10104 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c
10105 ---- linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c 2009-12-02 22:51:21.000000000 -0500
10106 -+++ linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c 2011-11-12 12:46:45.000000000 -0500
10107 +diff -urNp linux-2.6.32.46/drivers/infiniband/core/uverbs_marshall.c linux-2.6.32.46/drivers/infiniband/core/uverbs_marshall.c
10108 +--- linux-2.6.32.46/drivers/infiniband/core/uverbs_marshall.c 2011-03-27 14:31:47.000000000 -0400
10109 ++++ linux-2.6.32.46/drivers/infiniband/core/uverbs_marshall.c 2011-04-17 15:56:46.000000000 -0400
10110 @@ -40,18 +40,21 @@ void ib_copy_ah_attr_to_user(struct ib_u
10111 dst->grh.sgid_index = src->grh.sgid_index;
10112 dst->grh.hop_limit = src->grh.hop_limit;
10113 @@ -31815,9 +31838,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c linux-2.6.3
10114 }
10115 EXPORT_SYMBOL(ib_copy_qp_attr_to_user);
10116
10117 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c
10118 ---- linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-12 12:44:29.000000000 -0500
10119 -+++ linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-12 12:46:45.000000000 -0500
10120 +diff -urNp linux-2.6.32.46/drivers/infiniband/hw/ipath/ipath_fs.c linux-2.6.32.46/drivers/infiniband/hw/ipath/ipath_fs.c
10121 +--- linux-2.6.32.46/drivers/infiniband/hw/ipath/ipath_fs.c 2011-03-27 14:31:47.000000000 -0400
10122 ++++ linux-2.6.32.46/drivers/infiniband/hw/ipath/ipath_fs.c 2011-05-16 21:46:57.000000000 -0400
10123 @@ -110,6 +110,8 @@ static ssize_t atomic_counters_read(stru
10124 struct infinipath_counters counters;
10125 struct ipath_devdata *dd;
10126 @@ -31827,9 +31850,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c linux-2.6.32.4
10127 dd = file->f_path.dentry->d_inode->i_private;
10128 dd->ipath_f_read_counters(dd, &counters);
10129
10130 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c
10131 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c 2009-12-02 22:51:21.000000000 -0500
10132 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c 2011-11-12 12:46:45.000000000 -0500
10133 +diff -urNp linux-2.6.32.46/drivers/infiniband/hw/nes/nes.c linux-2.6.32.46/drivers/infiniband/hw/nes/nes.c
10134 +--- linux-2.6.32.46/drivers/infiniband/hw/nes/nes.c 2011-03-27 14:31:47.000000000 -0400
10135 ++++ linux-2.6.32.46/drivers/infiniband/hw/nes/nes.c 2011-05-04 17:56:28.000000000 -0400
10136 @@ -102,7 +102,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limi
10137 LIST_HEAD(nes_adapter_list);
10138 static LIST_HEAD(nes_dev_list);
10139 @@ -31848,9 +31871,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c linux-2.6.32.48/drive
10140
10141 /* Free the control structures */
10142
10143 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c
10144 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c 2009-12-02 22:51:21.000000000 -0500
10145 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c 2011-11-12 12:46:45.000000000 -0500
10146 +diff -urNp linux-2.6.32.46/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.46/drivers/infiniband/hw/nes/nes_cm.c
10147 +--- linux-2.6.32.46/drivers/infiniband/hw/nes/nes_cm.c 2011-03-27 14:31:47.000000000 -0400
10148 ++++ linux-2.6.32.46/drivers/infiniband/hw/nes/nes_cm.c 2011-05-04 17:56:28.000000000 -0400
10149 @@ -69,11 +69,11 @@ u32 cm_packets_received;
10150 u32 cm_listens_created;
10151 u32 cm_listens_destroyed;
10152 @@ -32024,9 +32047,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
10153 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
10154 cm_node, cm_id, jiffies);
10155
10156 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h
10157 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h 2009-12-02 22:51:21.000000000 -0500
10158 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h 2011-11-12 12:46:45.000000000 -0500
10159 +diff -urNp linux-2.6.32.46/drivers/infiniband/hw/nes/nes.h linux-2.6.32.46/drivers/infiniband/hw/nes/nes.h
10160 +--- linux-2.6.32.46/drivers/infiniband/hw/nes/nes.h 2011-03-27 14:31:47.000000000 -0400
10161 ++++ linux-2.6.32.46/drivers/infiniband/hw/nes/nes.h 2011-05-04 17:56:28.000000000 -0400
10162 @@ -174,17 +174,17 @@ extern unsigned int nes_debug_level;
10163 extern unsigned int wqm_quanta;
10164 extern struct list_head nes_adapter_list;
10165 @@ -32073,9 +32096,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h linux-2.6.32.48/drive
10166
10167 extern u32 int_mod_timer_init;
10168 extern u32 int_mod_cq_depth_256;
10169 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c
10170 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c 2009-12-02 22:51:21.000000000 -0500
10171 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c 2011-11-12 12:46:45.000000000 -0500
10172 +diff -urNp linux-2.6.32.46/drivers/infiniband/hw/nes/nes_nic.c linux-2.6.32.46/drivers/infiniband/hw/nes/nes_nic.c
10173 +--- linux-2.6.32.46/drivers/infiniband/hw/nes/nes_nic.c 2011-03-27 14:31:47.000000000 -0400
10174 ++++ linux-2.6.32.46/drivers/infiniband/hw/nes/nes_nic.c 2011-05-04 17:56:28.000000000 -0400
10175 @@ -1210,17 +1210,17 @@ static void nes_netdev_get_ethtool_stats
10176 target_stat_values[++index] = mh_detected;
10177 target_stat_values[++index] = mh_pauses_sent;
10178 @@ -32122,9 +32145,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c linux-2.6.32.48/d
10179 target_stat_values[++index] = int_mod_timer_init;
10180 target_stat_values[++index] = int_mod_cq_depth_1;
10181 target_stat_values[++index] = int_mod_cq_depth_4;
10182 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c
10183 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c 2009-12-02 22:51:21.000000000 -0500
10184 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c 2011-11-12 12:46:45.000000000 -0500
10185 +diff -urNp linux-2.6.32.46/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.32.46/drivers/infiniband/hw/nes/nes_verbs.c
10186 +--- linux-2.6.32.46/drivers/infiniband/hw/nes/nes_verbs.c 2011-03-27 14:31:47.000000000 -0400
10187 ++++ linux-2.6.32.46/drivers/infiniband/hw/nes/nes_verbs.c 2011-05-04 17:56:28.000000000 -0400
10188 @@ -45,9 +45,9 @@
10189
10190 #include <rdma/ib_umem.h>
10191 @@ -32156,9 +32179,9 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.32.48
10192 nesqp->destroyed = 1;
10193
10194 /* Blow away the connection if it exists. */
10195 -diff -urNp linux-2.6.32.48/drivers/input/gameport/gameport.c linux-2.6.32.48/drivers/input/gameport/gameport.c
10196 ---- linux-2.6.32.48/drivers/input/gameport/gameport.c 2009-12-02 22:51:21.000000000 -0500
10197 -+++ linux-2.6.32.48/drivers/input/gameport/gameport.c 2011-11-12 12:46:45.000000000 -0500
10198 +diff -urNp linux-2.6.32.46/drivers/input/gameport/gameport.c linux-2.6.32.46/drivers/input/gameport/gameport.c
10199 +--- linux-2.6.32.46/drivers/input/gameport/gameport.c 2011-03-27 14:31:47.000000000 -0400
10200 ++++ linux-2.6.32.46/drivers/input/gameport/gameport.c 2011-05-04 17:56:28.000000000 -0400
10201 @@ -515,13 +515,13 @@ EXPORT_SYMBOL(gameport_set_phys);
10202 */
10203 static void gameport_init_port(struct gameport *gameport)
10204 @@ -32175,9 +32198,9 @@ diff -urNp linux-2.6.32.48/drivers/input/gameport/gameport.c linux-2.6.32.48/dri
10205 gameport->dev.bus = &gameport_bus;
10206 gameport->dev.release = gameport_release_port;
10207 if (gameport->parent)
10208 -diff -urNp linux-2.6.32.48/drivers/input/input.c linux-2.6.32.48/drivers/input/input.c
10209 ---- linux-2.6.32.48/drivers/input/input.c 2011-11-12 12:44:29.000000000 -0500
10210 -+++ linux-2.6.32.48/drivers/input/input.c 2011-11-12 12:46:45.000000000 -0500
10211 +diff -urNp linux-2.6.32.46/drivers/input/input.c linux-2.6.32.46/drivers/input/input.c
10212 +--- linux-2.6.32.46/drivers/input/input.c 2011-03-27 14:31:47.000000000 -0400
10213 ++++ linux-2.6.32.46/drivers/input/input.c 2011-05-04 17:56:28.000000000 -0400
10214 @@ -1558,7 +1558,7 @@ EXPORT_SYMBOL(input_set_capability);
10215 */
10216 int input_register_device(struct input_dev *dev)
10217 @@ -32196,9 +32219,9 @@ diff -urNp linux-2.6.32.48/drivers/input/input.c linux-2.6.32.48/drivers/input/i
10218
10219 error = device_add(&dev->dev);
10220 if (error)
10221 -diff -urNp linux-2.6.32.48/drivers/input/joystick/sidewinder.c linux-2.6.32.48/drivers/input/joystick/sidewinder.c
10222 ---- linux-2.6.32.48/drivers/input/joystick/sidewinder.c 2009-12-02 22:51:21.000000000 -0500
10223 -+++ linux-2.6.32.48/drivers/input/joystick/sidewinder.c 2011-11-12 12:46:45.000000000 -0500
10224 +diff -urNp linux-2.6.32.46/drivers/input/joystick/sidewinder.c linux-2.6.32.46/drivers/input/joystick/sidewinder.c
10225 +--- linux-2.6.32.46/drivers/input/joystick/sidewinder.c 2011-03-27 14:31:47.000000000 -0400
10226 ++++ linux-2.6.32.46/drivers/input/joystick/sidewinder.c 2011-05-18 20:09:36.000000000 -0400
10227 @@ -30,6 +30,7 @@
10228 #include <linux/kernel.h>
10229 #include <linux/module.h>
10230 @@ -32216,9 +32239,9 @@ diff -urNp linux-2.6.32.48/drivers/input/joystick/sidewinder.c linux-2.6.32.48/d
10231 i = sw_read_packet(sw->gameport, buf, sw->length, 0);
10232
10233 if (sw->type == SW_ID_3DP && sw->length == 66 && i != 66) { /* Broken packet, try to fix */
10234 -diff -urNp linux-2.6.32.48/drivers/input/joystick/xpad.c linux-2.6.32.48/drivers/input/joystick/xpad.c
10235 ---- linux-2.6.32.48/drivers/input/joystick/xpad.c 2009-12-02 22:51:21.000000000 -0500
10236 -+++ linux-2.6.32.48/drivers/input/joystick/xpad.c 2011-11-12 12:46:45.000000000 -0500
10237 +diff -urNp linux-2.6.32.46/drivers/input/joystick/xpad.c linux-2.6.32.46/drivers/input/joystick/xpad.c
10238 +--- linux-2.6.32.46/drivers/input/joystick/xpad.c 2011-03-27 14:31:47.000000000 -0400
10239 ++++ linux-2.6.32.46/drivers/input/joystick/xpad.c 2011-05-04 17:56:28.000000000 -0400
10240 @@ -621,7 +621,7 @@ static void xpad_led_set(struct led_clas
10241
10242 static int xpad_led_probe(struct usb_xpad *xpad)
10243 @@ -32237,9 +32260,9 @@ diff -urNp linux-2.6.32.48/drivers/input/joystick/xpad.c linux-2.6.32.48/drivers
10244
10245 snprintf(led->name, sizeof(led->name), "xpad%ld", led_no);
10246 led->xpad = xpad;
10247 -diff -urNp linux-2.6.32.48/drivers/input/serio/serio.c linux-2.6.32.48/drivers/input/serio/serio.c
10248 ---- linux-2.6.32.48/drivers/input/serio/serio.c 2009-12-02 22:51:21.000000000 -0500
10249 -+++ linux-2.6.32.48/drivers/input/serio/serio.c 2011-11-12 12:46:45.000000000 -0500
10250 +diff -urNp linux-2.6.32.46/drivers/input/serio/serio.c linux-2.6.32.46/drivers/input/serio/serio.c
10251 +--- linux-2.6.32.46/drivers/input/serio/serio.c 2011-03-27 14:31:47.000000000 -0400
10252 ++++ linux-2.6.32.46/drivers/input/serio/serio.c 2011-05-04 17:56:28.000000000 -0400
10253 @@ -527,7 +527,7 @@ static void serio_release_port(struct de
10254 */
10255 static void serio_init_port(struct serio *serio)
10256 @@ -32258,9 +32281,9 @@ diff -urNp linux-2.6.32.48/drivers/input/serio/serio.c linux-2.6.32.48/drivers/i
10257 serio->dev.bus = &serio_bus;
10258 serio->dev.release = serio_release_port;
10259 if (serio->parent) {
10260 -diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/common.c linux-2.6.32.48/drivers/isdn/gigaset/common.c
10261 ---- linux-2.6.32.48/drivers/isdn/gigaset/common.c 2009-12-02 22:51:21.000000000 -0500
10262 -+++ linux-2.6.32.48/drivers/isdn/gigaset/common.c 2011-11-12 12:46:45.000000000 -0500
10263 +diff -urNp linux-2.6.32.46/drivers/isdn/gigaset/common.c linux-2.6.32.46/drivers/isdn/gigaset/common.c
10264 +--- linux-2.6.32.46/drivers/isdn/gigaset/common.c 2011-03-27 14:31:47.000000000 -0400
10265 ++++ linux-2.6.32.46/drivers/isdn/gigaset/common.c 2011-04-17 15:56:46.000000000 -0400
10266 @@ -712,7 +712,7 @@ struct cardstate *gigaset_initcs(struct
10267 cs->commands_pending = 0;
10268 cs->cur_at_seq = 0;
10269 @@ -32270,9 +32293,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/common.c linux-2.6.32.48/drivers
10270 cs->dev = NULL;
10271 cs->tty = NULL;
10272 cs->tty_dev = NULL;
10273 -diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h
10274 ---- linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h 2009-12-02 22:51:21.000000000 -0500
10275 -+++ linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h 2011-11-12 12:46:45.000000000 -0500
10276 +diff -urNp linux-2.6.32.46/drivers/isdn/gigaset/gigaset.h linux-2.6.32.46/drivers/isdn/gigaset/gigaset.h
10277 +--- linux-2.6.32.46/drivers/isdn/gigaset/gigaset.h 2011-03-27 14:31:47.000000000 -0400
10278 ++++ linux-2.6.32.46/drivers/isdn/gigaset/gigaset.h 2011-04-17 15:56:46.000000000 -0400
10279 @@ -34,6 +34,7 @@
10280 #include <linux/tty_driver.h>
10281 #include <linux/list.h>
10282 @@ -32290,9 +32313,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h linux-2.6.32.48/driver
10283 struct tty_struct *tty;
10284 struct tasklet_struct if_wake_tasklet;
10285 unsigned control_state;
10286 -diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/drivers/isdn/gigaset/interface.c
10287 ---- linux-2.6.32.48/drivers/isdn/gigaset/interface.c 2011-11-12 12:44:29.000000000 -0500
10288 -+++ linux-2.6.32.48/drivers/isdn/gigaset/interface.c 2011-11-12 12:46:45.000000000 -0500
10289 +diff -urNp linux-2.6.32.46/drivers/isdn/gigaset/interface.c linux-2.6.32.46/drivers/isdn/gigaset/interface.c
10290 +--- linux-2.6.32.46/drivers/isdn/gigaset/interface.c 2011-03-27 14:31:47.000000000 -0400
10291 ++++ linux-2.6.32.46/drivers/isdn/gigaset/interface.c 2011-04-17 15:56:46.000000000 -0400
10292 @@ -165,9 +165,7 @@ static int if_open(struct tty_struct *tt
10293 return -ERESTARTSYS; // FIXME -EINTR?
10294 tty->driver_data = cs;
10295 @@ -32380,9 +32403,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/driv
10296 dev_warn(cs->dev, "%s: device not opened\n", __func__);
10297 goto out;
10298 }
10299 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c
10300 ---- linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c 2009-12-02 22:51:21.000000000 -0500
10301 -+++ linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c 2011-11-12 12:46:45.000000000 -0500
10302 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/avm/b1.c linux-2.6.32.46/drivers/isdn/hardware/avm/b1.c
10303 +--- linux-2.6.32.46/drivers/isdn/hardware/avm/b1.c 2011-03-27 14:31:47.000000000 -0400
10304 ++++ linux-2.6.32.46/drivers/isdn/hardware/avm/b1.c 2011-04-17 15:56:46.000000000 -0400
10305 @@ -173,7 +173,7 @@ int b1_load_t4file(avmcard *card, capilo
10306 }
10307 if (left) {
10308 @@ -32401,9 +32424,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c linux-2.6.32.48/driver
10309 return -EFAULT;
10310 } else {
10311 memcpy(buf, dp, left);
10312 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c
10313 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c 2009-12-02 22:51:21.000000000 -0500
10314 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c 2011-11-12 12:46:45.000000000 -0500
10315 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/capidtmf.c linux-2.6.32.46/drivers/isdn/hardware/eicon/capidtmf.c
10316 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/capidtmf.c 2011-03-27 14:31:47.000000000 -0400
10317 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/capidtmf.c 2011-05-16 21:46:57.000000000 -0400
10318 @@ -498,6 +498,7 @@ void capidtmf_recv_block (t_capidtmf_sta
10319 byte goertzel_result_buffer[CAPIDTMF_RECV_TOTAL_FREQUENCY_COUNT];
10320 short windowed_sample_buffer[CAPIDTMF_RECV_WINDOWED_SAMPLES];
10321 @@ -32412,9 +32435,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c linux-2.6.32.4
10322
10323 if (p_state->recv.state & CAPIDTMF_RECV_STATE_DTMF_ACTIVE)
10324 {
10325 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c
10326 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c 2009-12-02 22:51:21.000000000 -0500
10327 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c 2011-11-12 12:46:45.000000000 -0500
10328 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/capifunc.c linux-2.6.32.46/drivers/isdn/hardware/eicon/capifunc.c
10329 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/capifunc.c 2011-03-27 14:31:47.000000000 -0400
10330 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/capifunc.c 2011-05-16 21:46:57.000000000 -0400
10331 @@ -1055,6 +1055,8 @@ static int divacapi_connect_didd(void)
10332 IDI_SYNC_REQ req;
10333 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
10334 @@ -32424,9 +32447,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c linux-2.6.32.4
10335 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
10336
10337 for (x = 0; x < MAX_DESCRIPTORS; x++) {
10338 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c
10339 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c 2009-12-02 22:51:21.000000000 -0500
10340 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c 2011-11-12 12:46:45.000000000 -0500
10341 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/diddfunc.c linux-2.6.32.46/drivers/isdn/hardware/eicon/diddfunc.c
10342 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/diddfunc.c 2011-03-27 14:31:47.000000000 -0400
10343 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/diddfunc.c 2011-05-16 21:46:57.000000000 -0400
10344 @@ -54,6 +54,8 @@ static int DIVA_INIT_FUNCTION connect_di
10345 IDI_SYNC_REQ req;
10346 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
10347 @@ -32436,9 +32459,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c linux-2.6.32.4
10348 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
10349
10350 for (x = 0; x < MAX_DESCRIPTORS; x++) {
10351 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c
10352 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c 2009-12-02 22:51:21.000000000 -0500
10353 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c 2011-11-12 12:46:45.000000000 -0500
10354 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/divasfunc.c linux-2.6.32.46/drivers/isdn/hardware/eicon/divasfunc.c
10355 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/divasfunc.c 2011-03-27 14:31:47.000000000 -0400
10356 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/divasfunc.c 2011-05-16 21:46:57.000000000 -0400
10357 @@ -161,6 +161,8 @@ static int DIVA_INIT_FUNCTION connect_di
10358 IDI_SYNC_REQ req;
10359 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
10360 @@ -32448,9 +32471,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c linux-2.6.32.
10361 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
10362
10363 for (x = 0; x < MAX_DESCRIPTORS; x++) {
10364 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h
10365 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h 2009-12-02 22:51:21.000000000 -0500
10366 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h 2011-11-12 12:46:45.000000000 -0500
10367 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/divasync.h linux-2.6.32.46/drivers/isdn/hardware/eicon/divasync.h
10368 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/divasync.h 2011-03-27 14:31:47.000000000 -0400
10369 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/divasync.h 2011-08-05 20:33:55.000000000 -0400
10370 @@ -146,7 +146,7 @@ typedef struct _diva_didd_add_adapter {
10371 } diva_didd_add_adapter_t;
10372 typedef struct _diva_didd_remove_adapter {
10373 @@ -32460,9 +32483,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h linux-2.6.32.4
10374 typedef struct _diva_didd_read_adapter_array {
10375 void * buffer;
10376 dword length;
10377 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c
10378 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c 2009-12-02 22:51:21.000000000 -0500
10379 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c 2011-11-12 12:46:45.000000000 -0500
10380 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/idifunc.c linux-2.6.32.46/drivers/isdn/hardware/eicon/idifunc.c
10381 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/idifunc.c 2011-03-27 14:31:47.000000000 -0400
10382 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/idifunc.c 2011-05-16 21:46:57.000000000 -0400
10383 @@ -188,6 +188,8 @@ static int DIVA_INIT_FUNCTION connect_di
10384 IDI_SYNC_REQ req;
10385 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
10386 @@ -32472,9 +32495,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c linux-2.6.32.48
10387 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
10388
10389 for (x = 0; x < MAX_DESCRIPTORS; x++) {
10390 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c
10391 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c 2009-12-02 22:51:21.000000000 -0500
10392 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c 2011-11-12 12:46:45.000000000 -0500
10393 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/message.c linux-2.6.32.46/drivers/isdn/hardware/eicon/message.c
10394 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/message.c 2011-03-27 14:31:47.000000000 -0400
10395 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/message.c 2011-05-16 21:46:57.000000000 -0400
10396 @@ -4889,6 +4889,8 @@ static void sig_ind(PLCI *plci)
10397 dword d;
10398 word w;
10399 @@ -32511,9 +32534,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c linux-2.6.32.48
10400 set_group_ind_mask (plci); /* all APPLs within this inc. call are allowed to dial in */
10401
10402 if(!a->group_optimization_enabled)
10403 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c
10404 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c 2009-12-02 22:51:21.000000000 -0500
10405 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c 2011-11-12 12:46:45.000000000 -0500
10406 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/mntfunc.c linux-2.6.32.46/drivers/isdn/hardware/eicon/mntfunc.c
10407 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/mntfunc.c 2011-03-27 14:31:47.000000000 -0400
10408 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/mntfunc.c 2011-05-16 21:46:57.000000000 -0400
10409 @@ -79,6 +79,8 @@ static int DIVA_INIT_FUNCTION connect_di
10410 IDI_SYNC_REQ req;
10411 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
10412 @@ -32523,9 +32546,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c linux-2.6.32.48
10413 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
10414
10415 for (x = 0; x < MAX_DESCRIPTORS; x++) {
10416 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h
10417 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h 2009-12-02 22:51:21.000000000 -0500
10418 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-11-12 12:46:45.000000000 -0500
10419 +diff -urNp linux-2.6.32.46/drivers/isdn/hardware/eicon/xdi_adapter.h linux-2.6.32.46/drivers/isdn/hardware/eicon/xdi_adapter.h
10420 +--- linux-2.6.32.46/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-03-27 14:31:47.000000000 -0400
10421 ++++ linux-2.6.32.46/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-08-05 20:33:55.000000000 -0400
10422 @@ -44,7 +44,7 @@ typedef struct _xdi_mbox_t {
10423 typedef struct _diva_os_idi_adapter_interface {
10424 diva_init_card_proc_t cleanup_adapter_proc;
10425 @@ -32535,9 +32558,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h linux-2.6.3
10426
10427 typedef struct _diva_os_xdi_adapter {
10428 struct list_head link;
10429 -diff -urNp linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c
10430 ---- linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c 2009-12-02 22:51:21.000000000 -0500
10431 -+++ linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c 2011-11-12 12:46:45.000000000 -0500
10432 +diff -urNp linux-2.6.32.46/drivers/isdn/i4l/isdn_common.c linux-2.6.32.46/drivers/isdn/i4l/isdn_common.c
10433 +--- linux-2.6.32.46/drivers/isdn/i4l/isdn_common.c 2011-03-27 14:31:47.000000000 -0400
10434 ++++ linux-2.6.32.46/drivers/isdn/i4l/isdn_common.c 2011-05-16 21:46:57.000000000 -0400
10435 @@ -1290,6 +1290,8 @@ isdn_ioctl(struct inode *inode, struct f
10436 } iocpar;
10437 void __user *argp = (void __user *)arg;
10438 @@ -32547,9 +32570,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c linux-2.6.32.48/driver
10439 #define name iocpar.name
10440 #define bname iocpar.bname
10441 #define iocts iocpar.iocts
10442 -diff -urNp linux-2.6.32.48/drivers/isdn/icn/icn.c linux-2.6.32.48/drivers/isdn/icn/icn.c
10443 ---- linux-2.6.32.48/drivers/isdn/icn/icn.c 2009-12-02 22:51:21.000000000 -0500
10444 -+++ linux-2.6.32.48/drivers/isdn/icn/icn.c 2011-11-12 12:46:45.000000000 -0500
10445 +diff -urNp linux-2.6.32.46/drivers/isdn/icn/icn.c linux-2.6.32.46/drivers/isdn/icn/icn.c
10446 +--- linux-2.6.32.46/drivers/isdn/icn/icn.c 2011-03-27 14:31:47.000000000 -0400
10447 ++++ linux-2.6.32.46/drivers/isdn/icn/icn.c 2011-04-17 15:56:46.000000000 -0400
10448 @@ -1044,7 +1044,7 @@ icn_writecmd(const u_char * buf, int len
10449 if (count > len)
10450 count = len;
10451 @@ -32559,9 +32582,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/icn/icn.c linux-2.6.32.48/drivers/isdn/i
10452 return -EFAULT;
10453 } else
10454 memcpy(msg, buf, count);
10455 -diff -urNp linux-2.6.32.48/drivers/isdn/mISDN/socket.c linux-2.6.32.48/drivers/isdn/mISDN/socket.c
10456 ---- linux-2.6.32.48/drivers/isdn/mISDN/socket.c 2009-12-02 22:51:21.000000000 -0500
10457 -+++ linux-2.6.32.48/drivers/isdn/mISDN/socket.c 2011-11-12 12:46:45.000000000 -0500
10458 +diff -urNp linux-2.6.32.46/drivers/isdn/mISDN/socket.c linux-2.6.32.46/drivers/isdn/mISDN/socket.c
10459 +--- linux-2.6.32.46/drivers/isdn/mISDN/socket.c 2011-03-27 14:31:47.000000000 -0400
10460 ++++ linux-2.6.32.46/drivers/isdn/mISDN/socket.c 2011-04-17 15:56:46.000000000 -0400
10461 @@ -391,6 +391,7 @@ data_sock_ioctl(struct socket *sock, uns
10462 if (dev) {
10463 struct mISDN_devinfo di;
10464 @@ -32578,9 +32601,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/mISDN/socket.c linux-2.6.32.48/drivers/i
10465 di.id = dev->id;
10466 di.Dprotocols = dev->Dprotocols;
10467 di.Bprotocols = dev->Bprotocols | get_all_Bprotocols();
10468 -diff -urNp linux-2.6.32.48/drivers/isdn/sc/interrupt.c linux-2.6.32.48/drivers/isdn/sc/interrupt.c
10469 ---- linux-2.6.32.48/drivers/isdn/sc/interrupt.c 2009-12-02 22:51:21.000000000 -0500
10470 -+++ linux-2.6.32.48/drivers/isdn/sc/interrupt.c 2011-11-12 12:46:45.000000000 -0500
10471 +diff -urNp linux-2.6.32.46/drivers/isdn/sc/interrupt.c linux-2.6.32.46/drivers/isdn/sc/interrupt.c
10472 +--- linux-2.6.32.46/drivers/isdn/sc/interrupt.c 2011-03-27 14:31:47.000000000 -0400
10473 ++++ linux-2.6.32.46/drivers/isdn/sc/interrupt.c 2011-04-17 15:56:46.000000000 -0400
10474 @@ -112,11 +112,19 @@ irqreturn_t interrupt_handler(int dummy,
10475 }
10476 else if(callid>=0x0000 && callid<=0x7FFF)
10477 @@ -32615,9 +32638,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/sc/interrupt.c linux-2.6.32.48/drivers/i
10478 continue;
10479 }
10480
10481 -diff -urNp linux-2.6.32.48/drivers/lguest/core.c linux-2.6.32.48/drivers/lguest/core.c
10482 ---- linux-2.6.32.48/drivers/lguest/core.c 2009-12-02 22:51:21.000000000 -0500
10483 -+++ linux-2.6.32.48/drivers/lguest/core.c 2011-11-12 12:46:45.000000000 -0500
10484 +diff -urNp linux-2.6.32.46/drivers/lguest/core.c linux-2.6.32.46/drivers/lguest/core.c
10485 +--- linux-2.6.32.46/drivers/lguest/core.c 2011-03-27 14:31:47.000000000 -0400
10486 ++++ linux-2.6.32.46/drivers/lguest/core.c 2011-04-17 15:56:46.000000000 -0400
10487 @@ -91,9 +91,17 @@ static __init int map_switcher(void)
10488 * it's worked so far. The end address needs +1 because __get_vm_area
10489 * allocates an extra guard page, so we need space for that.
10490 @@ -32645,9 +32668,9 @@ diff -urNp linux-2.6.32.48/drivers/lguest/core.c linux-2.6.32.48/drivers/lguest/
10491 end_switcher_text - start_switcher_text);
10492
10493 printk(KERN_INFO "lguest: mapped switcher at %p\n",
10494 -diff -urNp linux-2.6.32.48/drivers/lguest/x86/core.c linux-2.6.32.48/drivers/lguest/x86/core.c
10495 ---- linux-2.6.32.48/drivers/lguest/x86/core.c 2009-12-02 22:51:21.000000000 -0500
10496 -+++ linux-2.6.32.48/drivers/lguest/x86/core.c 2011-11-12 12:46:45.000000000 -0500
10497 +diff -urNp linux-2.6.32.46/drivers/lguest/x86/core.c linux-2.6.32.46/drivers/lguest/x86/core.c
10498 +--- linux-2.6.32.46/drivers/lguest/x86/core.c 2011-03-27 14:31:47.000000000 -0400
10499 ++++ linux-2.6.32.46/drivers/lguest/x86/core.c 2011-04-17 15:56:46.000000000 -0400
10500 @@ -59,7 +59,7 @@ static struct {
10501 /* Offset from where switcher.S was compiled to where we've copied it */
10502 static unsigned long switcher_offset(void)
10503 @@ -32689,9 +32712,9 @@ diff -urNp linux-2.6.32.48/drivers/lguest/x86/core.c linux-2.6.32.48/drivers/lgu
10504 lguest_entry.segment = LGUEST_CS;
10505
10506 /*
10507 -diff -urNp linux-2.6.32.48/drivers/lguest/x86/switcher_32.S linux-2.6.32.48/drivers/lguest/x86/switcher_32.S
10508 ---- linux-2.6.32.48/drivers/lguest/x86/switcher_32.S 2009-12-02 22:51:21.000000000 -0500
10509 -+++ linux-2.6.32.48/drivers/lguest/x86/switcher_32.S 2011-11-12 12:46:45.000000000 -0500
10510 +diff -urNp linux-2.6.32.46/drivers/lguest/x86/switcher_32.S linux-2.6.32.46/drivers/lguest/x86/switcher_32.S
10511 +--- linux-2.6.32.46/drivers/lguest/x86/switcher_32.S 2011-03-27 14:31:47.000000000 -0400
10512 ++++ linux-2.6.32.46/drivers/lguest/x86/switcher_32.S 2011-04-17 15:56:46.000000000 -0400
10513 @@ -87,6 +87,7 @@
10514 #include <asm/page.h>
10515 #include <asm/segment.h>
10516 @@ -32750,9 +32773,9 @@ diff -urNp linux-2.6.32.48/drivers/lguest/x86/switcher_32.S linux-2.6.32.48/driv
10517
10518 // Every interrupt can come to us here
10519 // But we must truly tell each apart.
10520 -diff -urNp linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c
10521 ---- linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c 2009-12-02 22:51:21.000000000 -0500
10522 -+++ linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c 2011-11-12 12:46:45.000000000 -0500
10523 +diff -urNp linux-2.6.32.46/drivers/macintosh/via-pmu-backlight.c linux-2.6.32.46/drivers/macintosh/via-pmu-backlight.c
10524 +--- linux-2.6.32.46/drivers/macintosh/via-pmu-backlight.c 2011-03-27 14:31:47.000000000 -0400
10525 ++++ linux-2.6.32.46/drivers/macintosh/via-pmu-backlight.c 2011-04-17 15:56:46.000000000 -0400
10526 @@ -15,7 +15,7 @@
10527
10528 #define MAX_PMU_LEVEL 0xFF
10529 @@ -32771,9 +32794,9 @@ diff -urNp linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c linux-2.6.32.48
10530 .get_brightness = pmu_backlight_get_brightness,
10531 .update_status = pmu_backlight_update_status,
10532
10533 -diff -urNp linux-2.6.32.48/drivers/macintosh/via-pmu.c linux-2.6.32.48/drivers/macintosh/via-pmu.c
10534 ---- linux-2.6.32.48/drivers/macintosh/via-pmu.c 2009-12-02 22:51:21.000000000 -0500
10535 -+++ linux-2.6.32.48/drivers/macintosh/via-pmu.c 2011-11-12 12:46:45.000000000 -0500
10536 +diff -urNp linux-2.6.32.46/drivers/macintosh/via-pmu.c linux-2.6.32.46/drivers/macintosh/via-pmu.c
10537 +--- linux-2.6.32.46/drivers/macintosh/via-pmu.c 2011-03-27 14:31:47.000000000 -0400
10538 ++++ linux-2.6.32.46/drivers/macintosh/via-pmu.c 2011-04-17 15:56:46.000000000 -0400
10539 @@ -2232,7 +2232,7 @@ static int pmu_sleep_valid(suspend_state
10540 && (pmac_call_feature(PMAC_FTR_SLEEP_STATE, NULL, 0, -1) >= 0);
10541 }
10542 @@ -32783,9 +32806,9 @@ diff -urNp linux-2.6.32.48/drivers/macintosh/via-pmu.c linux-2.6.32.48/drivers/m
10543 .enter = powerbook_sleep,
10544 .valid = pmu_sleep_valid,
10545 };
10546 -diff -urNp linux-2.6.32.48/drivers/md/dm.c linux-2.6.32.48/drivers/md/dm.c
10547 ---- linux-2.6.32.48/drivers/md/dm.c 2011-11-12 12:44:29.000000000 -0500
10548 -+++ linux-2.6.32.48/drivers/md/dm.c 2011-11-12 12:46:45.000000000 -0500
10549 +diff -urNp linux-2.6.32.46/drivers/md/dm.c linux-2.6.32.46/drivers/md/dm.c
10550 +--- linux-2.6.32.46/drivers/md/dm.c 2011-08-09 18:35:29.000000000 -0400
10551 ++++ linux-2.6.32.46/drivers/md/dm.c 2011-08-09 18:33:59.000000000 -0400
10552 @@ -165,9 +165,9 @@ struct mapped_device {
10553 /*
10554 * Event handling.
10555 @@ -32840,9 +32863,9 @@ diff -urNp linux-2.6.32.48/drivers/md/dm.c linux-2.6.32.48/drivers/md/dm.c
10556 }
10557
10558 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
10559 -diff -urNp linux-2.6.32.48/drivers/md/dm-ioctl.c linux-2.6.32.48/drivers/md/dm-ioctl.c
10560 ---- linux-2.6.32.48/drivers/md/dm-ioctl.c 2011-11-12 12:44:29.000000000 -0500
10561 -+++ linux-2.6.32.48/drivers/md/dm-ioctl.c 2011-11-12 12:46:45.000000000 -0500
10562 +diff -urNp linux-2.6.32.46/drivers/md/dm-ioctl.c linux-2.6.32.46/drivers/md/dm-ioctl.c
10563 +--- linux-2.6.32.46/drivers/md/dm-ioctl.c 2011-03-27 14:31:47.000000000 -0400
10564 ++++ linux-2.6.32.46/drivers/md/dm-ioctl.c 2011-04-17 15:56:46.000000000 -0400
10565 @@ -1437,7 +1437,7 @@ static int validate_params(uint cmd, str
10566 cmd == DM_LIST_VERSIONS_CMD)
10567 return 0;
10568 @@ -32852,9 +32875,9 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-ioctl.c linux-2.6.32.48/drivers/md/dm-i
10569 if (!*param->name) {
10570 DMWARN("name not supplied when creating device");
10571 return -EINVAL;
10572 -diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-raid1.c
10573 ---- linux-2.6.32.48/drivers/md/dm-raid1.c 2011-11-12 12:44:29.000000000 -0500
10574 -+++ linux-2.6.32.48/drivers/md/dm-raid1.c 2011-11-12 12:46:45.000000000 -0500
10575 +diff -urNp linux-2.6.32.46/drivers/md/dm-raid1.c linux-2.6.32.46/drivers/md/dm-raid1.c
10576 +--- linux-2.6.32.46/drivers/md/dm-raid1.c 2011-03-27 14:31:47.000000000 -0400
10577 ++++ linux-2.6.32.46/drivers/md/dm-raid1.c 2011-05-04 17:56:28.000000000 -0400
10578 @@ -41,7 +41,7 @@ enum dm_raid1_error {
10579
10580 struct mirror {
10581 @@ -32927,9 +32950,9 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
10582 return 'A';
10583
10584 return (test_bit(DM_RAID1_WRITE_ERROR, &(m->error_type))) ? 'D' :
10585 -diff -urNp linux-2.6.32.48/drivers/md/dm-stripe.c linux-2.6.32.48/drivers/md/dm-stripe.c
10586 ---- linux-2.6.32.48/drivers/md/dm-stripe.c 2011-11-12 12:44:29.000000000 -0500
10587 -+++ linux-2.6.32.48/drivers/md/dm-stripe.c 2011-11-12 12:46:45.000000000 -0500
10588 +diff -urNp linux-2.6.32.46/drivers/md/dm-stripe.c linux-2.6.32.46/drivers/md/dm-stripe.c
10589 +--- linux-2.6.32.46/drivers/md/dm-stripe.c 2011-03-27 14:31:47.000000000 -0400
10590 ++++ linux-2.6.32.46/drivers/md/dm-stripe.c 2011-05-04 17:56:28.000000000 -0400
10591 @@ -20,7 +20,7 @@ struct stripe {
10592 struct dm_dev *dev;
10593 sector_t physical_start;
10594 @@ -32968,9 +32991,9 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-stripe.c linux-2.6.32.48/drivers/md/dm-
10595 DM_IO_ERROR_THRESHOLD)
10596 queue_work(kstriped, &sc->kstriped_ws);
10597 }
10598 -diff -urNp linux-2.6.32.48/drivers/md/dm-sysfs.c linux-2.6.32.48/drivers/md/dm-sysfs.c
10599 ---- linux-2.6.32.48/drivers/md/dm-sysfs.c 2009-12-02 22:51:21.000000000 -0500
10600 -+++ linux-2.6.32.48/drivers/md/dm-sysfs.c 2011-11-12 12:46:45.000000000 -0500
10601 +diff -urNp linux-2.6.32.46/drivers/md/dm-sysfs.c linux-2.6.32.46/drivers/md/dm-sysfs.c
10602 +--- linux-2.6.32.46/drivers/md/dm-sysfs.c 2011-03-27 14:31:47.000000000 -0400
10603 ++++ linux-2.6.32.46/drivers/md/dm-sysfs.c 2011-04-17 15:56:46.000000000 -0400
10604 @@ -75,7 +75,7 @@ static struct attribute *dm_attrs[] = {
10605 NULL,
10606 };
10607 @@ -32980,9 +33003,9 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-sysfs.c linux-2.6.32.48/drivers/md/dm-s
10608 .show = dm_attr_show,
10609 };
10610
10611 -diff -urNp linux-2.6.32.48/drivers/md/dm-table.c linux-2.6.32.48/drivers/md/dm-table.c
10612 ---- linux-2.6.32.48/drivers/md/dm-table.c 2011-11-12 12:44:29.000000000 -0500
10613 -+++ linux-2.6.32.48/drivers/md/dm-table.c 2011-11-12 12:46:45.000000000 -0500
10614 +diff -urNp linux-2.6.32.46/drivers/md/dm-table.c linux-2.6.32.46/drivers/md/dm-table.c
10615 +--- linux-2.6.32.46/drivers/md/dm-table.c 2011-06-25 12:55:34.000000000 -0400
10616 ++++ linux-2.6.32.46/drivers/md/dm-table.c 2011-06-25 12:56:37.000000000 -0400
10617 @@ -376,7 +376,7 @@ static int device_area_is_invalid(struct
10618 if (!dev_size)
10619 return 0;
10620 @@ -32992,9 +33015,9 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-table.c linux-2.6.32.48/drivers/md/dm-t
10621 DMWARN("%s: %s too small for target: "
10622 "start=%llu, len=%llu, dev_size=%llu",
10623 dm_device_name(ti->table->md), bdevname(bdev, b),
10624 -diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10625 ---- linux-2.6.32.48/drivers/md/md.c 2011-11-12 12:44:29.000000000 -0500
10626 -+++ linux-2.6.32.48/drivers/md/md.c 2011-11-12 12:46:45.000000000 -0500
10627 +diff -urNp linux-2.6.32.46/drivers/md/md.c linux-2.6.32.46/drivers/md/md.c
10628 +--- linux-2.6.32.46/drivers/md/md.c 2011-07-13 17:23:04.000000000 -0400
10629 ++++ linux-2.6.32.46/drivers/md/md.c 2011-07-13 17:23:18.000000000 -0400
10630 @@ -153,10 +153,10 @@ static int start_readonly;
10631 * start build, activate spare
10632 */
10633 @@ -33017,7 +33040,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10634 wake_up(&md_event_waiters);
10635 }
10636
10637 -@@ -1226,7 +1226,7 @@ static int super_1_load(mdk_rdev_t *rdev
10638 +@@ -1218,7 +1218,7 @@ static int super_1_load(mdk_rdev_t *rdev
10639
10640 rdev->preferred_minor = 0xffff;
10641 rdev->data_offset = le64_to_cpu(sb->data_offset);
10642 @@ -33026,7 +33049,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10643
10644 rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
10645 bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
10646 -@@ -1400,7 +1400,7 @@ static void super_1_sync(mddev_t *mddev,
10647 +@@ -1392,7 +1392,7 @@ static void super_1_sync(mddev_t *mddev,
10648 else
10649 sb->resync_offset = cpu_to_le64(0);
10650
10651 @@ -33035,7 +33058,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10652
10653 sb->raid_disks = cpu_to_le32(mddev->raid_disks);
10654 sb->size = cpu_to_le64(mddev->dev_sectors);
10655 -@@ -2222,7 +2222,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_sho
10656 +@@ -2214,7 +2214,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_sho
10657 static ssize_t
10658 errors_show(mdk_rdev_t *rdev, char *page)
10659 {
10660 @@ -33044,7 +33067,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10661 }
10662
10663 static ssize_t
10664 -@@ -2231,7 +2231,7 @@ errors_store(mdk_rdev_t *rdev, const cha
10665 +@@ -2223,7 +2223,7 @@ errors_store(mdk_rdev_t *rdev, const cha
10666 char *e;
10667 unsigned long n = simple_strtoul(buf, &e, 10);
10668 if (*buf && (*e == 0 || *e == '\n')) {
10669 @@ -33053,7 +33076,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10670 return len;
10671 }
10672 return -EINVAL;
10673 -@@ -2525,7 +2525,7 @@ static void rdev_free(struct kobject *ko
10674 +@@ -2517,7 +2517,7 @@ static void rdev_free(struct kobject *ko
10675 mdk_rdev_t *rdev = container_of(ko, mdk_rdev_t, kobj);
10676 kfree(rdev);
10677 }
10678 @@ -33062,7 +33085,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10679 .show = rdev_attr_show,
10680 .store = rdev_attr_store,
10681 };
10682 -@@ -2574,8 +2574,8 @@ static mdk_rdev_t *md_import_device(dev_
10683 +@@ -2566,8 +2566,8 @@ static mdk_rdev_t *md_import_device(dev_
10684 rdev->data_offset = 0;
10685 rdev->sb_events = 0;
10686 atomic_set(&rdev->nr_pending, 0);
10687 @@ -33073,7 +33096,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10688
10689 size = rdev->bdev->bd_inode->i_size >> BLOCK_SIZE_BITS;
10690 if (!size) {
10691 -@@ -3895,7 +3895,7 @@ static void md_free(struct kobject *ko)
10692 +@@ -3887,7 +3887,7 @@ static void md_free(struct kobject *ko)
10693 kfree(mddev);
10694 }
10695
10696 @@ -33082,7 +33105,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10697 .show = md_attr_show,
10698 .store = md_attr_store,
10699 };
10700 -@@ -4482,7 +4482,8 @@ out:
10701 +@@ -4474,7 +4474,8 @@ out:
10702 err = 0;
10703 blk_integrity_unregister(disk);
10704 md_new_event(mddev);
10705 @@ -33092,7 +33115,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10706 return err;
10707 }
10708
10709 -@@ -5962,7 +5963,7 @@ static int md_seq_show(struct seq_file *
10710 +@@ -5954,7 +5955,7 @@ static int md_seq_show(struct seq_file *
10711
10712 spin_unlock(&pers_lock);
10713 seq_printf(seq, "\n");
10714 @@ -33101,7 +33124,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10715 return 0;
10716 }
10717 if (v == (void*)2) {
10718 -@@ -6051,7 +6052,7 @@ static int md_seq_show(struct seq_file *
10719 +@@ -6043,7 +6044,7 @@ static int md_seq_show(struct seq_file *
10720 chunk_kb ? "KB" : "B");
10721 if (bitmap->file) {
10722 seq_printf(seq, ", file: ");
10723 @@ -33110,7 +33133,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10724 }
10725
10726 seq_printf(seq, "\n");
10727 -@@ -6085,7 +6086,7 @@ static int md_seq_open(struct inode *ino
10728 +@@ -6077,7 +6078,7 @@ static int md_seq_open(struct inode *ino
10729 else {
10730 struct seq_file *p = file->private_data;
10731 p->private = mi;
10732 @@ -33119,7 +33142,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10733 }
10734 return error;
10735 }
10736 -@@ -6101,7 +6102,7 @@ static unsigned int mdstat_poll(struct f
10737 +@@ -6093,7 +6094,7 @@ static unsigned int mdstat_poll(struct f
10738 /* always allow read */
10739 mask = POLLIN | POLLRDNORM;
10740
10741 @@ -33128,7 +33151,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10742 mask |= POLLERR | POLLPRI;
10743 return mask;
10744 }
10745 -@@ -6145,7 +6146,7 @@ static int is_mddev_idle(mddev_t *mddev,
10746 +@@ -6137,7 +6138,7 @@ static int is_mddev_idle(mddev_t *mddev,
10747 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
10748 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
10749 (int)part_stat_read(&disk->part0, sectors[1]) -
10750 @@ -33137,9 +33160,9 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
10751 /* sync IO will cause sync_io to increase before the disk_stats
10752 * as sync_io is counted when a request starts, and
10753 * disk_stats is counted when it completes.
10754 -diff -urNp linux-2.6.32.48/drivers/md/md.h linux-2.6.32.48/drivers/md/md.h
10755 ---- linux-2.6.32.48/drivers/md/md.h 2011-11-12 12:44:29.000000000 -0500
10756 -+++ linux-2.6.32.48/drivers/md/md.h 2011-11-12 12:46:45.000000000 -0500
10757 +diff -urNp linux-2.6.32.46/drivers/md/md.h linux-2.6.32.46/drivers/md/md.h
10758 +--- linux-2.6.32.46/drivers/md/md.h 2011-03-27 14:31:47.000000000 -0400
10759 ++++ linux-2.6.32.46/drivers/md/md.h 2011-05-04 17:56:20.000000000 -0400
10760 @@ -94,10 +94,10 @@ struct mdk_rdev_s
10761 * only maintained for arrays that
10762 * support hot removal
10763 @@ -33162,9 +33185,9 @@ diff -urNp linux-2.6.32.48/drivers/md/md.h linux-2.6.32.48/drivers/md/md.h
10764 }
10765
10766 struct mdk_personality
10767 -diff -urNp linux-2.6.32.48/drivers/md/raid10.c linux-2.6.32.48/drivers/md/raid10.c
10768 ---- linux-2.6.32.48/drivers/md/raid10.c 2011-11-12 12:44:29.000000000 -0500
10769 -+++ linux-2.6.32.48/drivers/md/raid10.c 2011-11-12 12:46:45.000000000 -0500
10770 +diff -urNp linux-2.6.32.46/drivers/md/raid10.c linux-2.6.32.46/drivers/md/raid10.c
10771 +--- linux-2.6.32.46/drivers/md/raid10.c 2011-03-27 14:31:47.000000000 -0400
10772 ++++ linux-2.6.32.46/drivers/md/raid10.c 2011-05-04 17:56:28.000000000 -0400
10773 @@ -1255,7 +1255,7 @@ static void end_sync_read(struct bio *bi
10774 if (test_bit(BIO_UPTODATE, &bio->bi_flags))
10775 set_bit(R10BIO_Uptodate, &r10_bio->state);
10776 @@ -33183,9 +33206,9 @@ diff -urNp linux-2.6.32.48/drivers/md/raid10.c linux-2.6.32.48/drivers/md/raid10
10777 if (sync_page_io(rdev->bdev,
10778 r10_bio->devs[sl].addr +
10779 sect + rdev->data_offset,
10780 -diff -urNp linux-2.6.32.48/drivers/md/raid1.c linux-2.6.32.48/drivers/md/raid1.c
10781 ---- linux-2.6.32.48/drivers/md/raid1.c 2011-11-12 12:44:29.000000000 -0500
10782 -+++ linux-2.6.32.48/drivers/md/raid1.c 2011-11-12 12:46:45.000000000 -0500
10783 +diff -urNp linux-2.6.32.46/drivers/md/raid1.c linux-2.6.32.46/drivers/md/raid1.c
10784 +--- linux-2.6.32.46/drivers/md/raid1.c 2011-03-27 14:31:47.000000000 -0400
10785 ++++ linux-2.6.32.46/drivers/md/raid1.c 2011-05-04 17:56:28.000000000 -0400
10786 @@ -1415,7 +1415,7 @@ static void sync_request_write(mddev_t *
10787 if (r1_bio->bios[d]->bi_end_io != end_sync_read)
10788 continue;
10789 @@ -33204,9 +33227,9 @@ diff -urNp linux-2.6.32.48/drivers/md/raid1.c linux-2.6.32.48/drivers/md/raid1.c
10790 printk(KERN_INFO
10791 "raid1:%s: read error corrected "
10792 "(%d sectors at %llu on %s)\n",
10793 -diff -urNp linux-2.6.32.48/drivers/md/raid5.c linux-2.6.32.48/drivers/md/raid5.c
10794 ---- linux-2.6.32.48/drivers/md/raid5.c 2011-11-12 12:44:29.000000000 -0500
10795 -+++ linux-2.6.32.48/drivers/md/raid5.c 2011-11-12 12:46:45.000000000 -0500
10796 +diff -urNp linux-2.6.32.46/drivers/md/raid5.c linux-2.6.32.46/drivers/md/raid5.c
10797 +--- linux-2.6.32.46/drivers/md/raid5.c 2011-06-25 12:55:34.000000000 -0400
10798 ++++ linux-2.6.32.46/drivers/md/raid5.c 2011-06-25 12:58:39.000000000 -0400
10799 @@ -482,7 +482,7 @@ static void ops_run_io(struct stripe_hea
10800 bi->bi_next = NULL;
10801 if ((rw & WRITE) &&
10802 @@ -33252,9 +33275,9 @@ diff -urNp linux-2.6.32.48/drivers/md/raid5.c linux-2.6.32.48/drivers/md/raid5.c
10803
10804 chunk_offset = sector_div(new_sector, sectors_per_chunk);
10805 stripe = new_sector;
10806 -diff -urNp linux-2.6.32.48/drivers/media/common/saa7146_hlp.c linux-2.6.32.48/drivers/media/common/saa7146_hlp.c
10807 ---- linux-2.6.32.48/drivers/media/common/saa7146_hlp.c 2009-12-02 22:51:21.000000000 -0500
10808 -+++ linux-2.6.32.48/drivers/media/common/saa7146_hlp.c 2011-11-12 12:46:45.000000000 -0500
10809 +diff -urNp linux-2.6.32.46/drivers/media/common/saa7146_hlp.c linux-2.6.32.46/drivers/media/common/saa7146_hlp.c
10810 +--- linux-2.6.32.46/drivers/media/common/saa7146_hlp.c 2011-03-27 14:31:47.000000000 -0400
10811 ++++ linux-2.6.32.46/drivers/media/common/saa7146_hlp.c 2011-05-16 21:46:57.000000000 -0400
10812 @@ -353,6 +353,8 @@ static void calculate_clipping_registers
10813
10814 int x[32], y[32], w[32], h[32];
10815 @@ -33264,9 +33287,9 @@ diff -urNp linux-2.6.32.48/drivers/media/common/saa7146_hlp.c linux-2.6.32.48/dr
10816 /* clear out memory */
10817 memset(&line_list[0], 0x00, sizeof(u32)*32);
10818 memset(&pixel_list[0], 0x00, sizeof(u32)*32);
10819 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
10820 ---- linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2009-12-02 22:51:21.000000000 -0500
10821 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-11-12 12:46:45.000000000 -0500
10822 +diff -urNp linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
10823 +--- linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-03-27 14:31:47.000000000 -0400
10824 ++++ linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-05-16 21:46:57.000000000 -0400
10825 @@ -590,6 +590,8 @@ static int dvb_ca_en50221_read_data(stru
10826 u8 buf[HOST_LINK_BUF_SIZE];
10827 int i;
10828 @@ -33285,9 +33308,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-2.6
10829 dprintk("%s\n", __func__);
10830
10831 /* Incoming packet has a 2 byte header. hdr[0] = slot_id, hdr[1] = connection_id */
10832 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h
10833 ---- linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h 2009-12-02 22:51:21.000000000 -0500
10834 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h 2011-11-12 12:46:45.000000000 -0500
10835 +diff -urNp linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_demux.h linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_demux.h
10836 +--- linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_demux.h 2011-03-27 14:31:47.000000000 -0400
10837 ++++ linux-2.6.32.46/drivers/media/dvb/dvb-core/dvb_demux.h 2011-08-05 20:33:55.000000000 -0400
10838 @@ -71,7 +71,7 @@ struct dvb_demux_feed {
10839 union {
10840 dmx_ts_cb ts;
10841 @@ -33297,9 +33320,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h linux-2.6.32.4
10842
10843 struct dvb_demux *demux;
10844 void *priv;
10845 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c
10846 ---- linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c 2009-12-02 22:51:21.000000000 -0500
10847 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c 2011-11-12 12:46:45.000000000 -0500
10848 +diff -urNp linux-2.6.32.46/drivers/media/dvb/dvb-core/dvbdev.c linux-2.6.32.46/drivers/media/dvb/dvb-core/dvbdev.c
10849 +--- linux-2.6.32.46/drivers/media/dvb/dvb-core/dvbdev.c 2011-03-27 14:31:47.000000000 -0400
10850 ++++ linux-2.6.32.46/drivers/media/dvb/dvb-core/dvbdev.c 2011-08-23 21:22:32.000000000 -0400
10851 @@ -191,7 +191,7 @@ int dvb_register_device(struct dvb_adapt
10852 const struct dvb_device *template, void *priv, int type)
10853 {
10854 @@ -33309,9 +33332,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c linux-2.6.32.48/d
10855 struct device *clsdev;
10856 int minor;
10857 int id;
10858 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c
10859 ---- linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c 2009-12-02 22:51:21.000000000 -0500
10860 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c 2011-11-12 12:46:45.000000000 -0500
10861 +diff -urNp linux-2.6.32.46/drivers/media/dvb/dvb-usb/cxusb.c linux-2.6.32.46/drivers/media/dvb/dvb-usb/cxusb.c
10862 +--- linux-2.6.32.46/drivers/media/dvb/dvb-usb/cxusb.c 2011-03-27 14:31:47.000000000 -0400
10863 ++++ linux-2.6.32.46/drivers/media/dvb/dvb-usb/cxusb.c 2011-08-05 20:33:55.000000000 -0400
10864 @@ -1040,7 +1040,7 @@ static struct dib0070_config dib7070p_di
10865 struct dib0700_adapter_state {
10866 int (*set_param_save) (struct dvb_frontend *,
10867 @@ -33321,9 +33344,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c linux-2.6.32.48/dri
10868
10869 static int dib7070_set_param_override(struct dvb_frontend *fe,
10870 struct dvb_frontend_parameters *fep)
10871 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c
10872 ---- linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c 2009-12-02 22:51:21.000000000 -0500
10873 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-11-12 12:46:45.000000000 -0500
10874 +diff -urNp linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_core.c linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_core.c
10875 +--- linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-03-27 14:31:47.000000000 -0400
10876 ++++ linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-05-16 21:46:57.000000000 -0400
10877 @@ -332,6 +332,8 @@ int dib0700_download_firmware(struct usb
10878
10879 u8 buf[260];
10880 @@ -33333,9 +33356,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c linux-2.6.32
10881 while ((ret = dvb_usb_get_hexline(fw, &hx, &pos)) > 0) {
10882 deb_fwdata("writing to address 0x%08x (buffer: 0x%02x %02x)\n",hx.addr, hx.len, hx.chk);
10883
10884 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c
10885 ---- linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-11-12 12:44:29.000000000 -0500
10886 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-11-12 12:46:45.000000000 -0500
10887 +diff -urNp linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_devices.c linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_devices.c
10888 +--- linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-05-10 22:12:01.000000000 -0400
10889 ++++ linux-2.6.32.46/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-08-05 20:33:55.000000000 -0400
10890 @@ -28,7 +28,7 @@ MODULE_PARM_DESC(force_lna_activation, "
10891
10892 struct dib0700_adapter_state {
10893 @@ -33345,9 +33368,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c linux-2.6
10894
10895 /* Hauppauge Nova-T 500 (aka Bristol)
10896 * has a LNA on GPIO0 which is enabled by setting 1 */
10897 -diff -urNp linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h
10898 ---- linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h 2009-12-02 22:51:21.000000000 -0500
10899 -+++ linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h 2011-11-12 12:46:45.000000000 -0500
10900 +diff -urNp linux-2.6.32.46/drivers/media/dvb/frontends/dib3000.h linux-2.6.32.46/drivers/media/dvb/frontends/dib3000.h
10901 +--- linux-2.6.32.46/drivers/media/dvb/frontends/dib3000.h 2011-03-27 14:31:47.000000000 -0400
10902 ++++ linux-2.6.32.46/drivers/media/dvb/frontends/dib3000.h 2011-08-05 20:33:55.000000000 -0400
10903 @@ -39,7 +39,7 @@ struct dib_fe_xfer_ops
10904 int (*fifo_ctrl)(struct dvb_frontend *fe, int onoff);
10905 int (*pid_ctrl)(struct dvb_frontend *fe, int index, int pid, int onoff);
10906 @@ -33357,9 +33380,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h linux-2.6.32.48
10907
10908 #if defined(CONFIG_DVB_DIB3000MB) || (defined(CONFIG_DVB_DIB3000MB_MODULE) && defined(MODULE))
10909 extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
10910 -diff -urNp linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c
10911 ---- linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c 2009-12-02 22:51:21.000000000 -0500
10912 -+++ linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c 2011-11-12 12:46:45.000000000 -0500
10913 +diff -urNp linux-2.6.32.46/drivers/media/dvb/frontends/or51211.c linux-2.6.32.46/drivers/media/dvb/frontends/or51211.c
10914 +--- linux-2.6.32.46/drivers/media/dvb/frontends/or51211.c 2011-03-27 14:31:47.000000000 -0400
10915 ++++ linux-2.6.32.46/drivers/media/dvb/frontends/or51211.c 2011-05-16 21:46:57.000000000 -0400
10916 @@ -113,6 +113,8 @@ static int or51211_load_firmware (struct
10917 u8 tudata[585];
10918 int i;
10919 @@ -33369,9 +33392,9 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c linux-2.6.32.48
10920 dprintk("Firmware is %zd bytes\n",fw->size);
10921
10922 /* Get eprom data */
10923 -diff -urNp linux-2.6.32.48/drivers/media/radio/radio-cadet.c linux-2.6.32.48/drivers/media/radio/radio-cadet.c
10924 ---- linux-2.6.32.48/drivers/media/radio/radio-cadet.c 2009-12-02 22:51:21.000000000 -0500
10925 -+++ linux-2.6.32.48/drivers/media/radio/radio-cadet.c 2011-11-12 12:46:45.000000000 -0500
10926 +diff -urNp linux-2.6.32.46/drivers/media/radio/radio-cadet.c linux-2.6.32.46/drivers/media/radio/radio-cadet.c
10927 +--- linux-2.6.32.46/drivers/media/radio/radio-cadet.c 2011-03-27 14:31:47.000000000 -0400
10928 ++++ linux-2.6.32.46/drivers/media/radio/radio-cadet.c 2011-04-17 15:56:46.000000000 -0400
10929 @@ -347,7 +347,7 @@ static ssize_t cadet_read(struct file *f
10930 while (i < count && dev->rdsin != dev->rdsout)
10931 readbuf[i++] = dev->rdsbuf[dev->rdsout++];
10932 @@ -33381,9 +33404,9 @@ diff -urNp linux-2.6.32.48/drivers/media/radio/radio-cadet.c linux-2.6.32.48/dri
10933 return -EFAULT;
10934 return i;
10935 }
10936 -diff -urNp linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c
10937 ---- linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c 2009-12-02 22:51:21.000000000 -0500
10938 -+++ linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c 2011-11-12 12:46:45.000000000 -0500
10939 +diff -urNp linux-2.6.32.46/drivers/media/video/cx18/cx18-driver.c linux-2.6.32.46/drivers/media/video/cx18/cx18-driver.c
10940 +--- linux-2.6.32.46/drivers/media/video/cx18/cx18-driver.c 2011-03-27 14:31:47.000000000 -0400
10941 ++++ linux-2.6.32.46/drivers/media/video/cx18/cx18-driver.c 2011-05-16 21:46:57.000000000 -0400
10942 @@ -56,7 +56,7 @@ static struct pci_device_id cx18_pci_tbl
10943
10944 MODULE_DEVICE_TABLE(pci, cx18_pci_tbl);
10945 @@ -33411,9 +33434,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c linux-2.6.32.4
10946 if (i >= CX18_MAX_CARDS) {
10947 printk(KERN_ERR "cx18: cannot manage card %d, driver has a "
10948 "limit of 0 - %d\n", i, CX18_MAX_CARDS - 1);
10949 -diff -urNp linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c
10950 ---- linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c 2009-12-02 22:51:21.000000000 -0500
10951 -+++ linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c 2011-11-12 12:46:45.000000000 -0500
10952 +diff -urNp linux-2.6.32.46/drivers/media/video/ivtv/ivtv-driver.c linux-2.6.32.46/drivers/media/video/ivtv/ivtv-driver.c
10953 +--- linux-2.6.32.46/drivers/media/video/ivtv/ivtv-driver.c 2011-03-27 14:31:47.000000000 -0400
10954 ++++ linux-2.6.32.46/drivers/media/video/ivtv/ivtv-driver.c 2011-05-04 17:56:28.000000000 -0400
10955 @@ -79,7 +79,7 @@ static struct pci_device_id ivtv_pci_tbl
10956 MODULE_DEVICE_TABLE(pci,ivtv_pci_tbl);
10957
10958 @@ -33423,9 +33446,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c linux-2.6.32.4
10959
10960 /* Parameter declarations */
10961 static int cardtype[IVTV_MAX_CARDS];
10962 -diff -urNp linux-2.6.32.48/drivers/media/video/omap24xxcam.c linux-2.6.32.48/drivers/media/video/omap24xxcam.c
10963 ---- linux-2.6.32.48/drivers/media/video/omap24xxcam.c 2009-12-02 22:51:21.000000000 -0500
10964 -+++ linux-2.6.32.48/drivers/media/video/omap24xxcam.c 2011-11-12 12:46:45.000000000 -0500
10965 +diff -urNp linux-2.6.32.46/drivers/media/video/omap24xxcam.c linux-2.6.32.46/drivers/media/video/omap24xxcam.c
10966 +--- linux-2.6.32.46/drivers/media/video/omap24xxcam.c 2011-03-27 14:31:47.000000000 -0400
10967 ++++ linux-2.6.32.46/drivers/media/video/omap24xxcam.c 2011-05-04 17:56:28.000000000 -0400
10968 @@ -401,7 +401,7 @@ static void omap24xxcam_vbq_complete(str
10969 spin_unlock_irqrestore(&cam->core_enable_disable_lock, flags);
10970
10971 @@ -33435,9 +33458,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/omap24xxcam.c linux-2.6.32.48/dri
10972 if (csr & csr_error) {
10973 vb->state = VIDEOBUF_ERROR;
10974 if (!atomic_read(&fh->cam->in_reset)) {
10975 -diff -urNp linux-2.6.32.48/drivers/media/video/omap24xxcam.h linux-2.6.32.48/drivers/media/video/omap24xxcam.h
10976 ---- linux-2.6.32.48/drivers/media/video/omap24xxcam.h 2009-12-02 22:51:21.000000000 -0500
10977 -+++ linux-2.6.32.48/drivers/media/video/omap24xxcam.h 2011-11-12 12:46:45.000000000 -0500
10978 +diff -urNp linux-2.6.32.46/drivers/media/video/omap24xxcam.h linux-2.6.32.46/drivers/media/video/omap24xxcam.h
10979 +--- linux-2.6.32.46/drivers/media/video/omap24xxcam.h 2011-03-27 14:31:47.000000000 -0400
10980 ++++ linux-2.6.32.46/drivers/media/video/omap24xxcam.h 2011-05-04 17:56:28.000000000 -0400
10981 @@ -533,7 +533,7 @@ struct omap24xxcam_fh {
10982 spinlock_t vbq_lock; /* spinlock for the videobuf queue */
10983 struct videobuf_queue vbq;
10984 @@ -33447,9 +33470,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/omap24xxcam.h linux-2.6.32.48/dri
10985 /* accessing cam here doesn't need serialisation: it's constant */
10986 struct omap24xxcam_device *cam;
10987 };
10988 -diff -urNp linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
10989 ---- linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2009-12-02 22:51:21.000000000 -0500
10990 -+++ linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-11-12 12:46:45.000000000 -0500
10991 +diff -urNp linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
10992 +--- linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-03-27 14:31:47.000000000 -0400
10993 ++++ linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-05-16 21:46:57.000000000 -0400
10994 @@ -119,6 +119,8 @@ int pvr2_eeprom_analyze(struct pvr2_hdw
10995 u8 *eeprom;
10996 struct tveeprom tvdata;
10997 @@ -33459,9 +33482,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-2.
10998 memset(&tvdata,0,sizeof(tvdata));
10999
11000 eeprom = pvr2_eeprom_fetch(hdw);
11001 -diff -urNp linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
11002 ---- linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2009-12-02 22:51:21.000000000 -0500
11003 -+++ linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2011-11-12 12:46:45.000000000 -0500
11004 +diff -urNp linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
11005 +--- linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2011-03-27 14:31:47.000000000 -0400
11006 ++++ linux-2.6.32.46/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2011-08-23 21:22:38.000000000 -0400
11007 @@ -195,7 +195,7 @@ struct pvr2_hdw {
11008
11009 /* I2C stuff */
11010 @@ -33471,9 +33494,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h li
11011 pvr2_i2c_func i2c_func[PVR2_I2C_FUNC_CNT];
11012 int i2c_cx25840_hack_state;
11013 int i2c_linked;
11014 -diff -urNp linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c
11015 ---- linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c 2009-12-02 22:51:21.000000000 -0500
11016 -+++ linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c 2011-11-12 12:46:45.000000000 -0500
11017 +diff -urNp linux-2.6.32.46/drivers/media/video/saa7134/saa6752hs.c linux-2.6.32.46/drivers/media/video/saa7134/saa6752hs.c
11018 +--- linux-2.6.32.46/drivers/media/video/saa7134/saa6752hs.c 2011-03-27 14:31:47.000000000 -0400
11019 ++++ linux-2.6.32.46/drivers/media/video/saa7134/saa6752hs.c 2011-05-16 21:46:57.000000000 -0400
11020 @@ -683,6 +683,8 @@ static int saa6752hs_init(struct v4l2_su
11021 unsigned char localPAT[256];
11022 unsigned char localPMT[256];
11023 @@ -33483,9 +33506,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c linux-2.6.32.
11024 /* Set video format - must be done first as it resets other settings */
11025 set_reg8(client, 0x41, h->video_format);
11026
11027 -diff -urNp linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c
11028 ---- linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c 2009-12-02 22:51:21.000000000 -0500
11029 -+++ linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c 2011-11-12 12:46:45.000000000 -0500
11030 +diff -urNp linux-2.6.32.46/drivers/media/video/saa7164/saa7164-cmd.c linux-2.6.32.46/drivers/media/video/saa7164/saa7164-cmd.c
11031 +--- linux-2.6.32.46/drivers/media/video/saa7164/saa7164-cmd.c 2011-03-27 14:31:47.000000000 -0400
11032 ++++ linux-2.6.32.46/drivers/media/video/saa7164/saa7164-cmd.c 2011-05-16 21:46:57.000000000 -0400
11033 @@ -87,6 +87,8 @@ int saa7164_irq_dequeue(struct saa7164_d
11034 wait_queue_head_t *q = 0;
11035 dprintk(DBGLVL_CMD, "%s()\n", __func__);
11036 @@ -33504,9 +33527,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c linux-2.6.3
11037 while (loop) {
11038
11039 tmComResInfo_t tRsp = { 0, 0, 0, 0, 0, 0 };
11040 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c
11041 ---- linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c 2009-12-02 22:51:21.000000000 -0500
11042 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c 2011-11-12 12:46:45.000000000 -0500
11043 +diff -urNp linux-2.6.32.46/drivers/media/video/usbvideo/ibmcam.c linux-2.6.32.46/drivers/media/video/usbvideo/ibmcam.c
11044 +--- linux-2.6.32.46/drivers/media/video/usbvideo/ibmcam.c 2011-03-27 14:31:47.000000000 -0400
11045 ++++ linux-2.6.32.46/drivers/media/video/usbvideo/ibmcam.c 2011-08-05 20:33:55.000000000 -0400
11046 @@ -3947,15 +3947,15 @@ static struct usb_device_id id_table[] =
11047 static int __init ibmcam_init(void)
11048 {
11049 @@ -33532,9 +33555,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c linux-2.6.32.48
11050 return usbvideo_register(
11051 &cams,
11052 MAX_IBMCAM,
11053 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c
11054 ---- linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c 2009-12-02 22:51:21.000000000 -0500
11055 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c 2011-11-12 12:46:45.000000000 -0500
11056 +diff -urNp linux-2.6.32.46/drivers/media/video/usbvideo/konicawc.c linux-2.6.32.46/drivers/media/video/usbvideo/konicawc.c
11057 +--- linux-2.6.32.46/drivers/media/video/usbvideo/konicawc.c 2011-03-27 14:31:47.000000000 -0400
11058 ++++ linux-2.6.32.46/drivers/media/video/usbvideo/konicawc.c 2011-08-05 20:33:55.000000000 -0400
11059 @@ -225,7 +225,7 @@ static void konicawc_register_input(stru
11060 int error;
11061
11062 @@ -33571,9 +33594,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c linux-2.6.32.
11063 return usbvideo_register(
11064 &cams,
11065 MAX_CAMERAS,
11066 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c
11067 ---- linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c 2009-12-02 22:51:21.000000000 -0500
11068 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c 2011-11-12 12:46:45.000000000 -0500
11069 +diff -urNp linux-2.6.32.46/drivers/media/video/usbvideo/quickcam_messenger.c linux-2.6.32.46/drivers/media/video/usbvideo/quickcam_messenger.c
11070 +--- linux-2.6.32.46/drivers/media/video/usbvideo/quickcam_messenger.c 2011-03-27 14:31:47.000000000 -0400
11071 ++++ linux-2.6.32.46/drivers/media/video/usbvideo/quickcam_messenger.c 2011-04-17 15:56:46.000000000 -0400
11072 @@ -89,7 +89,7 @@ static void qcm_register_input(struct qc
11073 int error;
11074
11075 @@ -33583,9 +33606,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c lin
11076
11077 cam->input = input_dev = input_allocate_device();
11078 if (!input_dev) {
11079 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c
11080 ---- linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c 2009-12-02 22:51:21.000000000 -0500
11081 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c 2011-11-12 12:46:45.000000000 -0500
11082 +diff -urNp linux-2.6.32.46/drivers/media/video/usbvideo/ultracam.c linux-2.6.32.46/drivers/media/video/usbvideo/ultracam.c
11083 +--- linux-2.6.32.46/drivers/media/video/usbvideo/ultracam.c 2011-03-27 14:31:47.000000000 -0400
11084 ++++ linux-2.6.32.46/drivers/media/video/usbvideo/ultracam.c 2011-08-05 20:33:55.000000000 -0400
11085 @@ -655,14 +655,14 @@ static int __init ultracam_init(void)
11086 {
11087 struct usbvideo_cb cbTbl;
11088 @@ -33609,9 +33632,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c linux-2.6.32.
11089 return usbvideo_register(
11090 &cams,
11091 MAX_CAMERAS,
11092 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c
11093 ---- linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c 2009-12-02 22:51:21.000000000 -0500
11094 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c 2011-11-12 12:46:45.000000000 -0500
11095 +diff -urNp linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.c linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.c
11096 +--- linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.c 2011-03-27 14:31:47.000000000 -0400
11097 ++++ linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.c 2011-08-05 20:33:55.000000000 -0400
11098 @@ -697,15 +697,15 @@ int usbvideo_register(
11099 __func__, cams, base_size, num_cams);
11100
11101 @@ -33633,9 +33656,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c linux-2.6.32.
11102
11103 cams->num_cameras = num_cams;
11104 cams->cam = (struct uvd *) &cams[1];
11105 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h
11106 ---- linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h 2009-12-02 22:51:21.000000000 -0500
11107 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h 2011-11-12 12:46:45.000000000 -0500
11108 +diff -urNp linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.h linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.h
11109 +--- linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.h 2011-03-27 14:31:47.000000000 -0400
11110 ++++ linux-2.6.32.46/drivers/media/video/usbvideo/usbvideo.h 2011-08-30 18:20:06.000000000 -0400
11111 @@ -268,7 +268,7 @@ struct usbvideo_cb {
11112 int (*startDataPump)(struct uvd *uvd);
11113 void (*stopDataPump)(struct uvd *uvd);
11114 @@ -33645,9 +33668,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h linux-2.6.32.
11115
11116 struct usbvideo {
11117 int num_cameras; /* As allocated */
11118 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c
11119 ---- linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c 2009-12-02 22:51:21.000000000 -0500
11120 -+++ linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c 2011-11-12 12:46:45.000000000 -0500
11121 +diff -urNp linux-2.6.32.46/drivers/media/video/usbvision/usbvision-core.c linux-2.6.32.46/drivers/media/video/usbvision/usbvision-core.c
11122 +--- linux-2.6.32.46/drivers/media/video/usbvision/usbvision-core.c 2011-03-27 14:31:47.000000000 -0400
11123 ++++ linux-2.6.32.46/drivers/media/video/usbvision/usbvision-core.c 2011-05-16 21:46:57.000000000 -0400
11124 @@ -820,6 +820,8 @@ static enum ParseState usbvision_parse_c
11125 unsigned char rv, gv, bv;
11126 static unsigned char *Y, *U, *V;
11127 @@ -33657,9 +33680,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c linux-
11128 frame = usbvision->curFrame;
11129 imageSize = frame->frmwidth * frame->frmheight;
11130 if ( (frame->v4l2_format.format == V4L2_PIX_FMT_YUV422P) ||
11131 -diff -urNp linux-2.6.32.48/drivers/media/video/v4l2-device.c linux-2.6.32.48/drivers/media/video/v4l2-device.c
11132 ---- linux-2.6.32.48/drivers/media/video/v4l2-device.c 2009-12-02 22:51:21.000000000 -0500
11133 -+++ linux-2.6.32.48/drivers/media/video/v4l2-device.c 2011-11-12 12:46:45.000000000 -0500
11134 +diff -urNp linux-2.6.32.46/drivers/media/video/v4l2-device.c linux-2.6.32.46/drivers/media/video/v4l2-device.c
11135 +--- linux-2.6.32.46/drivers/media/video/v4l2-device.c 2011-03-27 14:31:47.000000000 -0400
11136 ++++ linux-2.6.32.46/drivers/media/video/v4l2-device.c 2011-05-04 17:56:28.000000000 -0400
11137 @@ -50,9 +50,9 @@ int v4l2_device_register(struct device *
11138 EXPORT_SYMBOL_GPL(v4l2_device_register);
11139
11140 @@ -33672,9 +33695,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/v4l2-device.c linux-2.6.32.48/dri
11141 int len = strlen(basename);
11142
11143 if (basename[len - 1] >= '0' && basename[len - 1] <= '9')
11144 -diff -urNp linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c
11145 ---- linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c 2009-12-02 22:51:21.000000000 -0500
11146 -+++ linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c 2011-11-12 12:46:45.000000000 -0500
11147 +diff -urNp linux-2.6.32.46/drivers/media/video/videobuf-dma-sg.c linux-2.6.32.46/drivers/media/video/videobuf-dma-sg.c
11148 +--- linux-2.6.32.46/drivers/media/video/videobuf-dma-sg.c 2011-03-27 14:31:47.000000000 -0400
11149 ++++ linux-2.6.32.46/drivers/media/video/videobuf-dma-sg.c 2011-05-16 21:46:57.000000000 -0400
11150 @@ -693,6 +693,8 @@ void *videobuf_sg_alloc(size_t size)
11151 {
11152 struct videobuf_queue q;
11153 @@ -33684,9 +33707,9 @@ diff -urNp linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c linux-2.6.32.48
11154 /* Required to make generic handler to call __videobuf_alloc */
11155 q.int_ops = &sg_ops;
11156
11157 -diff -urNp linux-2.6.32.48/drivers/message/fusion/mptbase.c linux-2.6.32.48/drivers/message/fusion/mptbase.c
11158 ---- linux-2.6.32.48/drivers/message/fusion/mptbase.c 2011-11-12 12:44:29.000000000 -0500
11159 -+++ linux-2.6.32.48/drivers/message/fusion/mptbase.c 2011-11-12 12:46:45.000000000 -0500
11160 +diff -urNp linux-2.6.32.46/drivers/message/fusion/mptbase.c linux-2.6.32.46/drivers/message/fusion/mptbase.c
11161 +--- linux-2.6.32.46/drivers/message/fusion/mptbase.c 2011-03-27 14:31:47.000000000 -0400
11162 ++++ linux-2.6.32.46/drivers/message/fusion/mptbase.c 2011-04-17 15:56:46.000000000 -0400
11163 @@ -6709,8 +6709,14 @@ procmpt_iocinfo_read(char *buf, char **s
11164 len += sprintf(buf+len, " MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
11165 len += sprintf(buf+len, " MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
11166 @@ -33702,9 +33725,9 @@ diff -urNp linux-2.6.32.48/drivers/message/fusion/mptbase.c linux-2.6.32.48/driv
11167 /*
11168 * Rounding UP to nearest 4-kB boundary here...
11169 */
11170 -diff -urNp linux-2.6.32.48/drivers/message/fusion/mptsas.c linux-2.6.32.48/drivers/message/fusion/mptsas.c
11171 ---- linux-2.6.32.48/drivers/message/fusion/mptsas.c 2009-12-02 22:51:21.000000000 -0500
11172 -+++ linux-2.6.32.48/drivers/message/fusion/mptsas.c 2011-11-12 12:46:45.000000000 -0500
11173 +diff -urNp linux-2.6.32.46/drivers/message/fusion/mptsas.c linux-2.6.32.46/drivers/message/fusion/mptsas.c
11174 +--- linux-2.6.32.46/drivers/message/fusion/mptsas.c 2011-03-27 14:31:47.000000000 -0400
11175 ++++ linux-2.6.32.46/drivers/message/fusion/mptsas.c 2011-04-17 15:56:46.000000000 -0400
11176 @@ -436,6 +436,23 @@ mptsas_is_end_device(struct mptsas_devin
11177 return 0;
11178 }
11179 @@ -33753,9 +33776,9 @@ diff -urNp linux-2.6.32.48/drivers/message/fusion/mptsas.c linux-2.6.32.48/drive
11180 static inline struct sas_port *
11181 mptsas_get_port(struct mptsas_phyinfo *phy_info)
11182 {
11183 -diff -urNp linux-2.6.32.48/drivers/message/fusion/mptscsih.c linux-2.6.32.48/drivers/message/fusion/mptscsih.c
11184 ---- linux-2.6.32.48/drivers/message/fusion/mptscsih.c 2011-11-12 12:44:29.000000000 -0500
11185 -+++ linux-2.6.32.48/drivers/message/fusion/mptscsih.c 2011-11-12 12:46:45.000000000 -0500
11186 +diff -urNp linux-2.6.32.46/drivers/message/fusion/mptscsih.c linux-2.6.32.46/drivers/message/fusion/mptscsih.c
11187 +--- linux-2.6.32.46/drivers/message/fusion/mptscsih.c 2011-03-27 14:31:47.000000000 -0400
11188 ++++ linux-2.6.32.46/drivers/message/fusion/mptscsih.c 2011-04-17 15:56:46.000000000 -0400
11189 @@ -1248,15 +1248,16 @@ mptscsih_info(struct Scsi_Host *SChost)
11190
11191 h = shost_priv(SChost);
11192 @@ -33781,9 +33804,9 @@ diff -urNp linux-2.6.32.48/drivers/message/fusion/mptscsih.c linux-2.6.32.48/dri
11193
11194 return h->info_kbuf;
11195 }
11196 -diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_config.c linux-2.6.32.48/drivers/message/i2o/i2o_config.c
11197 ---- linux-2.6.32.48/drivers/message/i2o/i2o_config.c 2009-12-02 22:51:21.000000000 -0500
11198 -+++ linux-2.6.32.48/drivers/message/i2o/i2o_config.c 2011-11-12 12:46:45.000000000 -0500
11199 +diff -urNp linux-2.6.32.46/drivers/message/i2o/i2o_config.c linux-2.6.32.46/drivers/message/i2o/i2o_config.c
11200 +--- linux-2.6.32.46/drivers/message/i2o/i2o_config.c 2011-03-27 14:31:47.000000000 -0400
11201 ++++ linux-2.6.32.46/drivers/message/i2o/i2o_config.c 2011-05-16 21:46:57.000000000 -0400
11202 @@ -787,6 +787,8 @@ static int i2o_cfg_passthru(unsigned lon
11203 struct i2o_message *msg;
11204 unsigned int iop;
11205 @@ -33793,9 +33816,9 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_config.c linux-2.6.32.48/driv
11206 if (get_user(iop, &cmd->iop) || get_user(user_msg, &cmd->msg))
11207 return -EFAULT;
11208
11209 -diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/drivers/message/i2o/i2o_proc.c
11210 ---- linux-2.6.32.48/drivers/message/i2o/i2o_proc.c 2009-12-02 22:51:21.000000000 -0500
11211 -+++ linux-2.6.32.48/drivers/message/i2o/i2o_proc.c 2011-11-12 12:46:45.000000000 -0500
11212 +diff -urNp linux-2.6.32.46/drivers/message/i2o/i2o_proc.c linux-2.6.32.46/drivers/message/i2o/i2o_proc.c
11213 +--- linux-2.6.32.46/drivers/message/i2o/i2o_proc.c 2011-03-27 14:31:47.000000000 -0400
11214 ++++ linux-2.6.32.46/drivers/message/i2o/i2o_proc.c 2011-04-17 15:56:46.000000000 -0400
11215 @@ -259,13 +259,6 @@ static char *scsi_devices[] = {
11216 "Array Controller Device"
11217 };
11218 @@ -33882,9 +33905,9 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/driver
11219
11220 return 0;
11221 }
11222 -diff -urNp linux-2.6.32.48/drivers/message/i2o/iop.c linux-2.6.32.48/drivers/message/i2o/iop.c
11223 ---- linux-2.6.32.48/drivers/message/i2o/iop.c 2009-12-02 22:51:21.000000000 -0500
11224 -+++ linux-2.6.32.48/drivers/message/i2o/iop.c 2011-11-12 12:46:45.000000000 -0500
11225 +diff -urNp linux-2.6.32.46/drivers/message/i2o/iop.c linux-2.6.32.46/drivers/message/i2o/iop.c
11226 +--- linux-2.6.32.46/drivers/message/i2o/iop.c 2011-03-27 14:31:47.000000000 -0400
11227 ++++ linux-2.6.32.46/drivers/message/i2o/iop.c 2011-05-04 17:56:28.000000000 -0400
11228 @@ -110,10 +110,10 @@ u32 i2o_cntxt_list_add(struct i2o_contro
11229
11230 spin_lock_irqsave(&c->context_list_lock, flags);
11231 @@ -33908,9 +33931,9 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/iop.c linux-2.6.32.48/drivers/mes
11232 INIT_LIST_HEAD(&c->context_list);
11233 #endif
11234
11235 -diff -urNp linux-2.6.32.48/drivers/mfd/wm8350-i2c.c linux-2.6.32.48/drivers/mfd/wm8350-i2c.c
11236 ---- linux-2.6.32.48/drivers/mfd/wm8350-i2c.c 2009-12-02 22:51:21.000000000 -0500
11237 -+++ linux-2.6.32.48/drivers/mfd/wm8350-i2c.c 2011-11-12 12:46:45.000000000 -0500
11238 +diff -urNp linux-2.6.32.46/drivers/mfd/wm8350-i2c.c linux-2.6.32.46/drivers/mfd/wm8350-i2c.c
11239 +--- linux-2.6.32.46/drivers/mfd/wm8350-i2c.c 2011-03-27 14:31:47.000000000 -0400
11240 ++++ linux-2.6.32.46/drivers/mfd/wm8350-i2c.c 2011-05-16 21:46:57.000000000 -0400
11241 @@ -43,6 +43,8 @@ static int wm8350_i2c_write_device(struc
11242 u8 msg[(WM8350_MAX_REGISTER << 1) + 1];
11243 int ret;
11244 @@ -33920,9 +33943,9 @@ diff -urNp linux-2.6.32.48/drivers/mfd/wm8350-i2c.c linux-2.6.32.48/drivers/mfd/
11245 if (bytes > ((WM8350_MAX_REGISTER << 1) + 1))
11246 return -EINVAL;
11247
11248 -diff -urNp linux-2.6.32.48/drivers/misc/kgdbts.c linux-2.6.32.48/drivers/misc/kgdbts.c
11249 ---- linux-2.6.32.48/drivers/misc/kgdbts.c 2009-12-02 22:51:21.000000000 -0500
11250 -+++ linux-2.6.32.48/drivers/misc/kgdbts.c 2011-11-12 12:46:45.000000000 -0500
11251 +diff -urNp linux-2.6.32.46/drivers/misc/kgdbts.c linux-2.6.32.46/drivers/misc/kgdbts.c
11252 +--- linux-2.6.32.46/drivers/misc/kgdbts.c 2011-03-27 14:31:47.000000000 -0400
11253 ++++ linux-2.6.32.46/drivers/misc/kgdbts.c 2011-04-17 15:56:46.000000000 -0400
11254 @@ -118,7 +118,7 @@
11255 } while (0)
11256 #define MAX_CONFIG_LEN 40
11257 @@ -33941,9 +33964,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/kgdbts.c linux-2.6.32.48/drivers/misc/kg
11258 .name = "kgdbts",
11259 .read_char = kgdbts_get_char,
11260 .write_char = kgdbts_put_char,
11261 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c
11262 ---- linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c 2009-12-02 22:51:21.000000000 -0500
11263 -+++ linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c 2011-11-12 12:46:45.000000000 -0500
11264 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-gru/gruhandles.c linux-2.6.32.46/drivers/misc/sgi-gru/gruhandles.c
11265 +--- linux-2.6.32.46/drivers/misc/sgi-gru/gruhandles.c 2011-03-27 14:31:47.000000000 -0400
11266 ++++ linux-2.6.32.46/drivers/misc/sgi-gru/gruhandles.c 2011-04-17 15:56:46.000000000 -0400
11267 @@ -39,8 +39,8 @@ struct mcs_op_statistic mcs_op_statistic
11268
11269 static void update_mcs_stats(enum mcs_op op, unsigned long clks)
11270 @@ -33955,9 +33978,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c linux-2.6.32.48/dri
11271 if (mcs_op_statistics[op].max < clks)
11272 mcs_op_statistics[op].max = clks;
11273 }
11274 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c
11275 ---- linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c 2009-12-02 22:51:21.000000000 -0500
11276 -+++ linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c 2011-11-12 12:46:45.000000000 -0500
11277 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-gru/gruprocfs.c linux-2.6.32.46/drivers/misc/sgi-gru/gruprocfs.c
11278 +--- linux-2.6.32.46/drivers/misc/sgi-gru/gruprocfs.c 2011-03-27 14:31:47.000000000 -0400
11279 ++++ linux-2.6.32.46/drivers/misc/sgi-gru/gruprocfs.c 2011-04-17 15:56:46.000000000 -0400
11280 @@ -32,9 +32,9 @@
11281
11282 #define printstat(s, f) printstat_val(s, &gru_stats.f, #f)
11283 @@ -33981,9 +34004,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c linux-2.6.32.48/driv
11284 max = mcs_op_statistics[op].max;
11285 seq_printf(s, "%-20s%12ld%12ld%12ld\n", id[op], count,
11286 count ? total / count : 0, max);
11287 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h
11288 ---- linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h 2009-12-02 22:51:21.000000000 -0500
11289 -+++ linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h 2011-11-12 12:46:45.000000000 -0500
11290 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-gru/grutables.h linux-2.6.32.46/drivers/misc/sgi-gru/grutables.h
11291 +--- linux-2.6.32.46/drivers/misc/sgi-gru/grutables.h 2011-03-27 14:31:47.000000000 -0400
11292 ++++ linux-2.6.32.46/drivers/misc/sgi-gru/grutables.h 2011-04-17 15:56:46.000000000 -0400
11293 @@ -167,84 +167,84 @@ extern unsigned int gru_max_gids;
11294 * GRU statistics.
11295 */
11296 @@ -34167,9 +34190,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
11297 } while (0)
11298
11299 #ifdef CONFIG_SGI_GRU_DEBUG
11300 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h
11301 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h 2009-12-02 22:51:21.000000000 -0500
11302 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h 2011-11-12 12:46:45.000000000 -0500
11303 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-xp/xpc.h linux-2.6.32.46/drivers/misc/sgi-xp/xpc.h
11304 +--- linux-2.6.32.46/drivers/misc/sgi-xp/xpc.h 2011-03-27 14:31:47.000000000 -0400
11305 ++++ linux-2.6.32.46/drivers/misc/sgi-xp/xpc.h 2011-08-05 20:33:55.000000000 -0400
11306 @@ -876,7 +876,7 @@ extern struct xpc_registration xpc_regis
11307 /* found in xpc_main.c */
11308 extern struct device *xpc_part;
11309 @@ -34179,9 +34202,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h linux-2.6.32.48/drivers/mis
11310 extern int xpc_disengage_timelimit;
11311 extern int xpc_disengage_timedout;
11312 extern int xpc_activate_IRQ_rcvd;
11313 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c
11314 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c 2009-12-02 22:51:21.000000000 -0500
11315 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c 2011-11-12 12:46:45.000000000 -0500
11316 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-xp/xpc_main.c linux-2.6.32.46/drivers/misc/sgi-xp/xpc_main.c
11317 +--- linux-2.6.32.46/drivers/misc/sgi-xp/xpc_main.c 2011-03-27 14:31:47.000000000 -0400
11318 ++++ linux-2.6.32.46/drivers/misc/sgi-xp/xpc_main.c 2011-08-05 20:33:55.000000000 -0400
11319 @@ -169,7 +169,7 @@ static struct notifier_block xpc_die_not
11320 .notifier_call = xpc_system_die,
11321 };
11322 @@ -34191,9 +34214,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c linux-2.6.32.48/driver
11323
11324 /*
11325 * Timer function to enforce the timelimit on the partition disengage.
11326 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c
11327 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c 2009-12-02 22:51:21.000000000 -0500
11328 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c 2011-11-12 12:46:45.000000000 -0500
11329 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-xp/xpc_sn2.c linux-2.6.32.46/drivers/misc/sgi-xp/xpc_sn2.c
11330 +--- linux-2.6.32.46/drivers/misc/sgi-xp/xpc_sn2.c 2011-03-27 14:31:47.000000000 -0400
11331 ++++ linux-2.6.32.46/drivers/misc/sgi-xp/xpc_sn2.c 2011-08-05 20:33:55.000000000 -0400
11332 @@ -2350,7 +2350,7 @@ xpc_received_payload_sn2(struct xpc_chan
11333 xpc_acknowledge_msgs_sn2(ch, get, msg->flags);
11334 }
11335 @@ -34214,9 +34237,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c linux-2.6.32.48/drivers
11336
11337 if (offsetof(struct xpc_msg_sn2, payload) > XPC_MSG_HDR_MAX_SIZE) {
11338 dev_err(xpc_part, "header portion of struct xpc_msg_sn2 is "
11339 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c
11340 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c 2011-11-12 12:44:29.000000000 -0500
11341 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c 2011-11-12 12:46:45.000000000 -0500
11342 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-xp/xpc_uv.c linux-2.6.32.46/drivers/misc/sgi-xp/xpc_uv.c
11343 +--- linux-2.6.32.46/drivers/misc/sgi-xp/xpc_uv.c 2011-03-27 14:31:47.000000000 -0400
11344 ++++ linux-2.6.32.46/drivers/misc/sgi-xp/xpc_uv.c 2011-08-05 20:33:55.000000000 -0400
11345 @@ -1669,7 +1669,7 @@ xpc_received_payload_uv(struct xpc_chann
11346 XPC_DEACTIVATE_PARTITION(&xpc_partitions[ch->partid], ret);
11347 }
11348 @@ -34237,9 +34260,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c linux-2.6.32.48/drivers/
11349
11350 if (sizeof(struct xpc_notify_mq_msghdr_uv) > XPC_MSG_HDR_MAX_SIZE) {
11351 dev_err(xpc_part, "xpc_notify_mq_msghdr_uv is larger than %d\n",
11352 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xp.h linux-2.6.32.48/drivers/misc/sgi-xp/xp.h
11353 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xp.h 2009-12-02 22:51:21.000000000 -0500
11354 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xp.h 2011-11-12 12:46:45.000000000 -0500
11355 +diff -urNp linux-2.6.32.46/drivers/misc/sgi-xp/xp.h linux-2.6.32.46/drivers/misc/sgi-xp/xp.h
11356 +--- linux-2.6.32.46/drivers/misc/sgi-xp/xp.h 2011-03-27 14:31:47.000000000 -0400
11357 ++++ linux-2.6.32.46/drivers/misc/sgi-xp/xp.h 2011-08-05 20:33:55.000000000 -0400
11358 @@ -289,7 +289,7 @@ struct xpc_interface {
11359 xpc_notify_func, void *);
11360 void (*received) (short, int, void *);
11361 @@ -34249,9 +34272,9 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xp.h linux-2.6.32.48/drivers/misc
11362
11363 extern struct xpc_interface xpc_interface;
11364
11365 -diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c
11366 ---- linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c 2009-12-02 22:51:21.000000000 -0500
11367 -+++ linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c 2011-11-12 12:46:45.000000000 -0500
11368 +diff -urNp linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0001.c
11369 +--- linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0001.c 2011-03-27 14:31:47.000000000 -0400
11370 ++++ linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0001.c 2011-05-16 21:46:57.000000000 -0400
11371 @@ -743,6 +743,8 @@ static int chip_ready (struct map_info *
11372 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
11373 unsigned long timeo = jiffies + HZ;
11374 @@ -34279,9 +34302,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.48/d
11375 adr += chip->start;
11376
11377 retry:
11378 -diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c
11379 ---- linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c 2009-12-02 22:51:21.000000000 -0500
11380 -+++ linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c 2011-11-12 12:46:45.000000000 -0500
11381 +diff -urNp linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0020.c
11382 +--- linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0020.c 2011-03-27 14:31:47.000000000 -0400
11383 ++++ linux-2.6.32.46/drivers/mtd/chips/cfi_cmdset_0020.c 2011-05-16 21:46:57.000000000 -0400
11384 @@ -255,6 +255,8 @@ static inline int do_read_onechip(struct
11385 unsigned long cmd_addr;
11386 struct cfi_private *cfi = map->fldrv_priv;
11387 @@ -34327,9 +34350,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/d
11388 adr += chip->start;
11389
11390 /* Let's determine this according to the interleave only once */
11391 -diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2000.c linux-2.6.32.48/drivers/mtd/devices/doc2000.c
11392 ---- linux-2.6.32.48/drivers/mtd/devices/doc2000.c 2009-12-02 22:51:21.000000000 -0500
11393 -+++ linux-2.6.32.48/drivers/mtd/devices/doc2000.c 2011-11-12 12:46:45.000000000 -0500
11394 +diff -urNp linux-2.6.32.46/drivers/mtd/devices/doc2000.c linux-2.6.32.46/drivers/mtd/devices/doc2000.c
11395 +--- linux-2.6.32.46/drivers/mtd/devices/doc2000.c 2011-03-27 14:31:47.000000000 -0400
11396 ++++ linux-2.6.32.46/drivers/mtd/devices/doc2000.c 2011-04-17 15:56:46.000000000 -0400
11397 @@ -776,7 +776,7 @@ static int doc_write(struct mtd_info *mt
11398
11399 /* The ECC will not be calculated correctly if less than 512 is written */
11400 @@ -34339,9 +34362,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2000.c linux-2.6.32.48/drivers
11401 printk(KERN_WARNING
11402 "ECC needs a full sector write (adr: %lx size %lx)\n",
11403 (long) to, (long) len);
11404 -diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2001.c linux-2.6.32.48/drivers/mtd/devices/doc2001.c
11405 ---- linux-2.6.32.48/drivers/mtd/devices/doc2001.c 2009-12-02 22:51:21.000000000 -0500
11406 -+++ linux-2.6.32.48/drivers/mtd/devices/doc2001.c 2011-11-12 12:46:45.000000000 -0500
11407 +diff -urNp linux-2.6.32.46/drivers/mtd/devices/doc2001.c linux-2.6.32.46/drivers/mtd/devices/doc2001.c
11408 +--- linux-2.6.32.46/drivers/mtd/devices/doc2001.c 2011-03-27 14:31:47.000000000 -0400
11409 ++++ linux-2.6.32.46/drivers/mtd/devices/doc2001.c 2011-04-17 15:56:46.000000000 -0400
11410 @@ -393,7 +393,7 @@ static int doc_read (struct mtd_info *mt
11411 struct Nand *mychip = &this->chips[from >> (this->chipshift)];
11412
11413 @@ -34351,9 +34374,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2001.c linux-2.6.32.48/drivers
11414 return -EINVAL;
11415
11416 /* Don't allow a single read to cross a 512-byte block boundary */
11417 -diff -urNp linux-2.6.32.48/drivers/mtd/ftl.c linux-2.6.32.48/drivers/mtd/ftl.c
11418 ---- linux-2.6.32.48/drivers/mtd/ftl.c 2009-12-02 22:51:21.000000000 -0500
11419 -+++ linux-2.6.32.48/drivers/mtd/ftl.c 2011-11-12 12:46:45.000000000 -0500
11420 +diff -urNp linux-2.6.32.46/drivers/mtd/ftl.c linux-2.6.32.46/drivers/mtd/ftl.c
11421 +--- linux-2.6.32.46/drivers/mtd/ftl.c 2011-03-27 14:31:47.000000000 -0400
11422 ++++ linux-2.6.32.46/drivers/mtd/ftl.c 2011-05-16 21:46:57.000000000 -0400
11423 @@ -474,6 +474,8 @@ static int copy_erase_unit(partition_t *
11424 loff_t offset;
11425 uint16_t srcunitswap = cpu_to_le16(srcunit);
11426 @@ -34363,9 +34386,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/ftl.c linux-2.6.32.48/drivers/mtd/ftl.c
11427 eun = &part->EUNInfo[srcunit];
11428 xfer = &part->XferInfo[xferunit];
11429 DEBUG(2, "ftl_cs: copying block 0x%x to 0x%x\n",
11430 -diff -urNp linux-2.6.32.48/drivers/mtd/inftlcore.c linux-2.6.32.48/drivers/mtd/inftlcore.c
11431 ---- linux-2.6.32.48/drivers/mtd/inftlcore.c 2009-12-02 22:51:21.000000000 -0500
11432 -+++ linux-2.6.32.48/drivers/mtd/inftlcore.c 2011-11-12 12:46:45.000000000 -0500
11433 +diff -urNp linux-2.6.32.46/drivers/mtd/inftlcore.c linux-2.6.32.46/drivers/mtd/inftlcore.c
11434 +--- linux-2.6.32.46/drivers/mtd/inftlcore.c 2011-03-27 14:31:47.000000000 -0400
11435 ++++ linux-2.6.32.46/drivers/mtd/inftlcore.c 2011-05-16 21:46:57.000000000 -0400
11436 @@ -260,6 +260,8 @@ static u16 INFTL_foldchain(struct INFTLr
11437 struct inftl_oob oob;
11438 size_t retlen;
11439 @@ -34375,9 +34398,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/inftlcore.c linux-2.6.32.48/drivers/mtd/i
11440 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: INFTL_foldchain(inftl=%p,thisVUC=%d,"
11441 "pending=%d)\n", inftl, thisVUC, pendingblock);
11442
11443 -diff -urNp linux-2.6.32.48/drivers/mtd/inftlmount.c linux-2.6.32.48/drivers/mtd/inftlmount.c
11444 ---- linux-2.6.32.48/drivers/mtd/inftlmount.c 2009-12-02 22:51:21.000000000 -0500
11445 -+++ linux-2.6.32.48/drivers/mtd/inftlmount.c 2011-11-12 12:46:45.000000000 -0500
11446 +diff -urNp linux-2.6.32.46/drivers/mtd/inftlmount.c linux-2.6.32.46/drivers/mtd/inftlmount.c
11447 +--- linux-2.6.32.46/drivers/mtd/inftlmount.c 2011-03-27 14:31:47.000000000 -0400
11448 ++++ linux-2.6.32.46/drivers/mtd/inftlmount.c 2011-05-16 21:46:57.000000000 -0400
11449 @@ -54,6 +54,8 @@ static int find_boot_record(struct INFTL
11450 struct INFTLPartition *ip;
11451 size_t retlen;
11452 @@ -34387,9 +34410,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/inftlmount.c linux-2.6.32.48/drivers/mtd/
11453 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: find_boot_record(inftl=%p)\n", inftl);
11454
11455 /*
11456 -diff -urNp linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c
11457 ---- linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c 2009-12-02 22:51:21.000000000 -0500
11458 -+++ linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c 2011-11-12 12:46:45.000000000 -0500
11459 +diff -urNp linux-2.6.32.46/drivers/mtd/lpddr/qinfo_probe.c linux-2.6.32.46/drivers/mtd/lpddr/qinfo_probe.c
11460 +--- linux-2.6.32.46/drivers/mtd/lpddr/qinfo_probe.c 2011-03-27 14:31:47.000000000 -0400
11461 ++++ linux-2.6.32.46/drivers/mtd/lpddr/qinfo_probe.c 2011-05-16 21:46:57.000000000 -0400
11462 @@ -106,6 +106,8 @@ static int lpddr_pfow_present(struct map
11463 {
11464 map_word pfow_val[4];
11465 @@ -34399,9 +34422,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c linux-2.6.32.48/drive
11466 /* Check identification string */
11467 pfow_val[0] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_P);
11468 pfow_val[1] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_F);
11469 -diff -urNp linux-2.6.32.48/drivers/mtd/mtdchar.c linux-2.6.32.48/drivers/mtd/mtdchar.c
11470 ---- linux-2.6.32.48/drivers/mtd/mtdchar.c 2009-12-02 22:51:21.000000000 -0500
11471 -+++ linux-2.6.32.48/drivers/mtd/mtdchar.c 2011-11-12 12:46:45.000000000 -0500
11472 +diff -urNp linux-2.6.32.46/drivers/mtd/mtdchar.c linux-2.6.32.46/drivers/mtd/mtdchar.c
11473 +--- linux-2.6.32.46/drivers/mtd/mtdchar.c 2011-03-27 14:31:47.000000000 -0400
11474 ++++ linux-2.6.32.46/drivers/mtd/mtdchar.c 2011-05-16 21:46:57.000000000 -0400
11475 @@ -460,6 +460,8 @@ static int mtd_ioctl(struct inode *inode
11476 u_long size;
11477 struct mtd_info_user info;
11478 @@ -34411,9 +34434,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/mtdchar.c linux-2.6.32.48/drivers/mtd/mtd
11479 DEBUG(MTD_DEBUG_LEVEL0, "MTD_ioctl\n");
11480
11481 size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT;
11482 -diff -urNp linux-2.6.32.48/drivers/mtd/nftlcore.c linux-2.6.32.48/drivers/mtd/nftlcore.c
11483 ---- linux-2.6.32.48/drivers/mtd/nftlcore.c 2009-12-02 22:51:21.000000000 -0500
11484 -+++ linux-2.6.32.48/drivers/mtd/nftlcore.c 2011-11-12 12:46:45.000000000 -0500
11485 +diff -urNp linux-2.6.32.46/drivers/mtd/nftlcore.c linux-2.6.32.46/drivers/mtd/nftlcore.c
11486 +--- linux-2.6.32.46/drivers/mtd/nftlcore.c 2011-03-27 14:31:47.000000000 -0400
11487 ++++ linux-2.6.32.46/drivers/mtd/nftlcore.c 2011-05-16 21:46:57.000000000 -0400
11488 @@ -254,6 +254,8 @@ static u16 NFTL_foldchain (struct NFTLre
11489 int inplace = 1;
11490 size_t retlen;
11491 @@ -34423,9 +34446,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/nftlcore.c linux-2.6.32.48/drivers/mtd/nf
11492 memset(BlockMap, 0xff, sizeof(BlockMap));
11493 memset(BlockFreeFound, 0, sizeof(BlockFreeFound));
11494
11495 -diff -urNp linux-2.6.32.48/drivers/mtd/nftlmount.c linux-2.6.32.48/drivers/mtd/nftlmount.c
11496 ---- linux-2.6.32.48/drivers/mtd/nftlmount.c 2009-12-02 22:51:21.000000000 -0500
11497 -+++ linux-2.6.32.48/drivers/mtd/nftlmount.c 2011-11-12 12:46:45.000000000 -0500
11498 +diff -urNp linux-2.6.32.46/drivers/mtd/nftlmount.c linux-2.6.32.46/drivers/mtd/nftlmount.c
11499 +--- linux-2.6.32.46/drivers/mtd/nftlmount.c 2011-03-27 14:31:47.000000000 -0400
11500 ++++ linux-2.6.32.46/drivers/mtd/nftlmount.c 2011-05-18 20:09:37.000000000 -0400
11501 @@ -23,6 +23,7 @@
11502 #include <asm/errno.h>
11503 #include <linux/delay.h>
11504 @@ -34443,9 +34466,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/nftlmount.c linux-2.6.32.48/drivers/mtd/n
11505 /* Assume logical EraseSize == physical erasesize for starting the scan.
11506 We'll sort it out later if we find a MediaHeader which says otherwise */
11507 /* Actually, we won't. The new DiskOnChip driver has already scanned
11508 -diff -urNp linux-2.6.32.48/drivers/mtd/ubi/build.c linux-2.6.32.48/drivers/mtd/ubi/build.c
11509 ---- linux-2.6.32.48/drivers/mtd/ubi/build.c 2009-12-02 22:51:21.000000000 -0500
11510 -+++ linux-2.6.32.48/drivers/mtd/ubi/build.c 2011-11-12 12:46:45.000000000 -0500
11511 +diff -urNp linux-2.6.32.46/drivers/mtd/ubi/build.c linux-2.6.32.46/drivers/mtd/ubi/build.c
11512 +--- linux-2.6.32.46/drivers/mtd/ubi/build.c 2011-03-27 14:31:47.000000000 -0400
11513 ++++ linux-2.6.32.46/drivers/mtd/ubi/build.c 2011-04-17 15:56:46.000000000 -0400
11514 @@ -1255,7 +1255,7 @@ module_exit(ubi_exit);
11515 static int __init bytes_str_to_int(const char *str)
11516 {
11517 @@ -34485,9 +34508,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/ubi/build.c linux-2.6.32.48/drivers/mtd/u
11518 }
11519
11520 /**
11521 -diff -urNp linux-2.6.32.48/drivers/net/bnx2.c linux-2.6.32.48/drivers/net/bnx2.c
11522 ---- linux-2.6.32.48/drivers/net/bnx2.c 2011-11-12 12:44:29.000000000 -0500
11523 -+++ linux-2.6.32.48/drivers/net/bnx2.c 2011-11-12 12:46:45.000000000 -0500
11524 +diff -urNp linux-2.6.32.46/drivers/net/bnx2.c linux-2.6.32.46/drivers/net/bnx2.c
11525 +--- linux-2.6.32.46/drivers/net/bnx2.c 2011-03-27 14:31:47.000000000 -0400
11526 ++++ linux-2.6.32.46/drivers/net/bnx2.c 2011-05-16 21:46:57.000000000 -0400
11527 @@ -5809,6 +5809,8 @@ bnx2_test_nvram(struct bnx2 *bp)
11528 int rc = 0;
11529 u32 magic, csum;
11530 @@ -34497,9 +34520,9 @@ diff -urNp linux-2.6.32.48/drivers/net/bnx2.c linux-2.6.32.48/drivers/net/bnx2.c
11531 if ((rc = bnx2_nvram_read(bp, 0, data, 4)) != 0)
11532 goto test_nvram_done;
11533
11534 -diff -urNp linux-2.6.32.48/drivers/net/cxgb3/l2t.h linux-2.6.32.48/drivers/net/cxgb3/l2t.h
11535 ---- linux-2.6.32.48/drivers/net/cxgb3/l2t.h 2009-12-02 22:51:21.000000000 -0500
11536 -+++ linux-2.6.32.48/drivers/net/cxgb3/l2t.h 2011-11-12 12:46:45.000000000 -0500
11537 +diff -urNp linux-2.6.32.46/drivers/net/cxgb3/l2t.h linux-2.6.32.46/drivers/net/cxgb3/l2t.h
11538 +--- linux-2.6.32.46/drivers/net/cxgb3/l2t.h 2011-03-27 14:31:47.000000000 -0400
11539 ++++ linux-2.6.32.46/drivers/net/cxgb3/l2t.h 2011-08-05 20:33:55.000000000 -0400
11540 @@ -86,7 +86,7 @@ typedef void (*arp_failure_handler_func)
11541 */
11542 struct l2t_skb_cb {
11543 @@ -34509,9 +34532,9 @@ diff -urNp linux-2.6.32.48/drivers/net/cxgb3/l2t.h linux-2.6.32.48/drivers/net/c
11544
11545 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
11546
11547 -diff -urNp linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c
11548 ---- linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c 2009-12-02 22:51:21.000000000 -0500
11549 -+++ linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c 2011-11-12 12:46:45.000000000 -0500
11550 +diff -urNp linux-2.6.32.46/drivers/net/cxgb3/t3_hw.c linux-2.6.32.46/drivers/net/cxgb3/t3_hw.c
11551 +--- linux-2.6.32.46/drivers/net/cxgb3/t3_hw.c 2011-03-27 14:31:47.000000000 -0400
11552 ++++ linux-2.6.32.46/drivers/net/cxgb3/t3_hw.c 2011-05-16 21:46:57.000000000 -0400
11553 @@ -699,6 +699,8 @@ static int get_vpd_params(struct adapter
11554 int i, addr, ret;
11555 struct t3_vpd vpd;
11556 @@ -34521,9 +34544,9 @@ diff -urNp linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c linux-2.6.32.48/drivers/net
11557 /*
11558 * Card information is normally at VPD_BASE but some early cards had
11559 * it at 0.
11560 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/82571.c linux-2.6.32.48/drivers/net/e1000e/82571.c
11561 ---- linux-2.6.32.48/drivers/net/e1000e/82571.c 2009-12-02 22:51:21.000000000 -0500
11562 -+++ linux-2.6.32.48/drivers/net/e1000e/82571.c 2011-11-12 12:46:45.000000000 -0500
11563 +diff -urNp linux-2.6.32.46/drivers/net/e1000e/82571.c linux-2.6.32.46/drivers/net/e1000e/82571.c
11564 +--- linux-2.6.32.46/drivers/net/e1000e/82571.c 2011-03-27 14:31:47.000000000 -0400
11565 ++++ linux-2.6.32.46/drivers/net/e1000e/82571.c 2011-08-23 21:22:32.000000000 -0400
11566 @@ -212,7 +212,7 @@ static s32 e1000_init_mac_params_82571(s
11567 {
11568 struct e1000_hw *hw = &adapter->hw;
11569 @@ -34578,9 +34601,9 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/82571.c linux-2.6.32.48/drivers/ne
11570 .acquire_nvm = e1000_acquire_nvm_82571,
11571 .read_nvm = e1000e_read_nvm_eerd,
11572 .release_nvm = e1000_release_nvm_82571,
11573 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/e1000.h linux-2.6.32.48/drivers/net/e1000e/e1000.h
11574 ---- linux-2.6.32.48/drivers/net/e1000e/e1000.h 2011-11-12 12:44:29.000000000 -0500
11575 -+++ linux-2.6.32.48/drivers/net/e1000e/e1000.h 2011-11-12 12:46:45.000000000 -0500
11576 +diff -urNp linux-2.6.32.46/drivers/net/e1000e/e1000.h linux-2.6.32.46/drivers/net/e1000e/e1000.h
11577 +--- linux-2.6.32.46/drivers/net/e1000e/e1000.h 2011-03-27 14:31:47.000000000 -0400
11578 ++++ linux-2.6.32.46/drivers/net/e1000e/e1000.h 2011-04-17 15:56:46.000000000 -0400
11579 @@ -375,9 +375,9 @@ struct e1000_info {
11580 u32 pba;
11581 u32 max_hw_frame_size;
11582 @@ -34594,9 +34617,9 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/e1000.h linux-2.6.32.48/drivers/ne
11583 };
11584
11585 /* hardware capability, feature, and workaround flags */
11586 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/es2lan.c linux-2.6.32.48/drivers/net/e1000e/es2lan.c
11587 ---- linux-2.6.32.48/drivers/net/e1000e/es2lan.c 2009-12-02 22:51:21.000000000 -0500
11588 -+++ linux-2.6.32.48/drivers/net/e1000e/es2lan.c 2011-11-12 12:46:45.000000000 -0500
11589 +diff -urNp linux-2.6.32.46/drivers/net/e1000e/es2lan.c linux-2.6.32.46/drivers/net/e1000e/es2lan.c
11590 +--- linux-2.6.32.46/drivers/net/e1000e/es2lan.c 2011-03-27 14:31:47.000000000 -0400
11591 ++++ linux-2.6.32.46/drivers/net/e1000e/es2lan.c 2011-08-23 21:22:32.000000000 -0400
11592 @@ -207,7 +207,7 @@ static s32 e1000_init_mac_params_80003es
11593 {
11594 struct e1000_hw *hw = &adapter->hw;
11595 @@ -34633,9 +34656,9 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/es2lan.c linux-2.6.32.48/drivers/n
11596 .acquire_nvm = e1000_acquire_nvm_80003es2lan,
11597 .read_nvm = e1000e_read_nvm_eerd,
11598 .release_nvm = e1000_release_nvm_80003es2lan,
11599 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/hw.h linux-2.6.32.48/drivers/net/e1000e/hw.h
11600 ---- linux-2.6.32.48/drivers/net/e1000e/hw.h 2011-11-12 12:44:29.000000000 -0500
11601 -+++ linux-2.6.32.48/drivers/net/e1000e/hw.h 2011-11-12 12:46:45.000000000 -0500
11602 +diff -urNp linux-2.6.32.46/drivers/net/e1000e/hw.h linux-2.6.32.46/drivers/net/e1000e/hw.h
11603 +--- linux-2.6.32.46/drivers/net/e1000e/hw.h 2011-03-27 14:31:47.000000000 -0400
11604 ++++ linux-2.6.32.46/drivers/net/e1000e/hw.h 2011-08-23 21:27:38.000000000 -0400
11605 @@ -753,6 +753,7 @@ struct e1000_mac_operations {
11606 s32 (*setup_physical_interface)(struct e1000_hw *);
11607 s32 (*setup_led)(struct e1000_hw *);
11608 @@ -34682,9 +34705,9 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/hw.h linux-2.6.32.48/drivers/net/e
11609
11610 enum e1000_nvm_type type;
11611 enum e1000_nvm_override override;
11612 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/ich8lan.c linux-2.6.32.48/drivers/net/e1000e/ich8lan.c
11613 ---- linux-2.6.32.48/drivers/net/e1000e/ich8lan.c 2011-11-12 12:44:29.000000000 -0500
11614 -+++ linux-2.6.32.48/drivers/net/e1000e/ich8lan.c 2011-11-12 12:46:45.000000000 -0500
11615 +diff -urNp linux-2.6.32.46/drivers/net/e1000e/ich8lan.c linux-2.6.32.46/drivers/net/e1000e/ich8lan.c
11616 +--- linux-2.6.32.46/drivers/net/e1000e/ich8lan.c 2011-05-10 22:12:01.000000000 -0400
11617 ++++ linux-2.6.32.46/drivers/net/e1000e/ich8lan.c 2011-08-23 21:22:32.000000000 -0400
11618 @@ -3463,7 +3463,7 @@ static void e1000_clear_hw_cntrs_ich8lan
11619 }
11620 }
11621 @@ -34712,9 +34735,9 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/ich8lan.c linux-2.6.32.48/drivers/
11622 .acquire_nvm = e1000_acquire_nvm_ich8lan,
11623 .read_nvm = e1000_read_nvm_ich8lan,
11624 .release_nvm = e1000_release_nvm_ich8lan,
11625 -diff -urNp linux-2.6.32.48/drivers/net/hamradio/6pack.c linux-2.6.32.48/drivers/net/hamradio/6pack.c
11626 ---- linux-2.6.32.48/drivers/net/hamradio/6pack.c 2011-11-12 12:44:29.000000000 -0500
11627 -+++ linux-2.6.32.48/drivers/net/hamradio/6pack.c 2011-11-12 12:46:45.000000000 -0500
11628 +diff -urNp linux-2.6.32.46/drivers/net/hamradio/6pack.c linux-2.6.32.46/drivers/net/hamradio/6pack.c
11629 +--- linux-2.6.32.46/drivers/net/hamradio/6pack.c 2011-07-13 17:23:04.000000000 -0400
11630 ++++ linux-2.6.32.46/drivers/net/hamradio/6pack.c 2011-07-13 17:23:18.000000000 -0400
11631 @@ -461,6 +461,8 @@ static void sixpack_receive_buf(struct t
11632 unsigned char buf[512];
11633 int count1;
11634 @@ -34724,9 +34747,9 @@ diff -urNp linux-2.6.32.48/drivers/net/hamradio/6pack.c linux-2.6.32.48/drivers/
11635 if (!count)
11636 return;
11637
11638 -diff -urNp linux-2.6.32.48/drivers/net/ibmveth.c linux-2.6.32.48/drivers/net/ibmveth.c
11639 ---- linux-2.6.32.48/drivers/net/ibmveth.c 2009-12-02 22:51:21.000000000 -0500
11640 -+++ linux-2.6.32.48/drivers/net/ibmveth.c 2011-11-12 12:46:45.000000000 -0500
11641 +diff -urNp linux-2.6.32.46/drivers/net/ibmveth.c linux-2.6.32.46/drivers/net/ibmveth.c
11642 +--- linux-2.6.32.46/drivers/net/ibmveth.c 2011-03-27 14:31:47.000000000 -0400
11643 ++++ linux-2.6.32.46/drivers/net/ibmveth.c 2011-04-17 15:56:46.000000000 -0400
11644 @@ -1577,7 +1577,7 @@ static struct attribute * veth_pool_attr
11645 NULL,
11646 };
11647 @@ -34736,9 +34759,9 @@ diff -urNp linux-2.6.32.48/drivers/net/ibmveth.c linux-2.6.32.48/drivers/net/ibm
11648 .show = veth_pool_show,
11649 .store = veth_pool_store,
11650 };
11651 -diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_82575.c linux-2.6.32.48/drivers/net/igb/e1000_82575.c
11652 ---- linux-2.6.32.48/drivers/net/igb/e1000_82575.c 2011-11-12 12:44:29.000000000 -0500
11653 -+++ linux-2.6.32.48/drivers/net/igb/e1000_82575.c 2011-11-12 12:46:45.000000000 -0500
11654 +diff -urNp linux-2.6.32.46/drivers/net/igb/e1000_82575.c linux-2.6.32.46/drivers/net/igb/e1000_82575.c
11655 +--- linux-2.6.32.46/drivers/net/igb/e1000_82575.c 2011-08-29 22:24:44.000000000 -0400
11656 ++++ linux-2.6.32.46/drivers/net/igb/e1000_82575.c 2011-08-29 22:25:07.000000000 -0400
11657 @@ -1411,7 +1411,7 @@ void igb_vmdq_set_replication_pf(struct
11658 wr32(E1000_VT_CTL, vt_ctl);
11659 }
11660 @@ -34764,9 +34787,9 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_82575.c linux-2.6.32.48/drivers
11661 .acquire = igb_acquire_nvm_82575,
11662 .read = igb_read_nvm_eerd,
11663 .release = igb_release_nvm_82575,
11664 -diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/net/igb/e1000_hw.h
11665 ---- linux-2.6.32.48/drivers/net/igb/e1000_hw.h 2011-11-12 12:44:29.000000000 -0500
11666 -+++ linux-2.6.32.48/drivers/net/igb/e1000_hw.h 2011-11-12 12:46:45.000000000 -0500
11667 +diff -urNp linux-2.6.32.46/drivers/net/igb/e1000_hw.h linux-2.6.32.46/drivers/net/igb/e1000_hw.h
11668 +--- linux-2.6.32.46/drivers/net/igb/e1000_hw.h 2011-03-27 14:31:47.000000000 -0400
11669 ++++ linux-2.6.32.46/drivers/net/igb/e1000_hw.h 2011-08-23 21:28:01.000000000 -0400
11670 @@ -288,6 +288,7 @@ struct e1000_mac_operations {
11671 s32 (*read_mac_addr)(struct e1000_hw *);
11672 s32 (*get_speed_and_duplex)(struct e1000_hw *, u16 *, u16 *);
11673 @@ -34835,9 +34858,9 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/ne
11674 struct e1000_mbx_stats stats;
11675 u32 timeout;
11676 u32 usec_delay;
11677 -diff -urNp linux-2.6.32.48/drivers/net/igbvf/vf.h linux-2.6.32.48/drivers/net/igbvf/vf.h
11678 ---- linux-2.6.32.48/drivers/net/igbvf/vf.h 2009-12-02 22:51:21.000000000 -0500
11679 -+++ linux-2.6.32.48/drivers/net/igbvf/vf.h 2011-11-12 12:46:45.000000000 -0500
11680 +diff -urNp linux-2.6.32.46/drivers/net/igbvf/vf.h linux-2.6.32.46/drivers/net/igbvf/vf.h
11681 +--- linux-2.6.32.46/drivers/net/igbvf/vf.h 2011-03-27 14:31:47.000000000 -0400
11682 ++++ linux-2.6.32.46/drivers/net/igbvf/vf.h 2011-08-23 21:22:38.000000000 -0400
11683 @@ -187,9 +187,10 @@ struct e1000_mac_operations {
11684 s32 (*read_mac_addr)(struct e1000_hw *);
11685 s32 (*set_vfta)(struct e1000_hw *, u16, bool);
11686 @@ -34867,9 +34890,9 @@ diff -urNp linux-2.6.32.48/drivers/net/igbvf/vf.h linux-2.6.32.48/drivers/net/ig
11687 struct e1000_mbx_stats stats;
11688 u32 timeout;
11689 u32 usec_delay;
11690 -diff -urNp linux-2.6.32.48/drivers/net/iseries_veth.c linux-2.6.32.48/drivers/net/iseries_veth.c
11691 ---- linux-2.6.32.48/drivers/net/iseries_veth.c 2009-12-02 22:51:21.000000000 -0500
11692 -+++ linux-2.6.32.48/drivers/net/iseries_veth.c 2011-11-12 12:46:45.000000000 -0500
11693 +diff -urNp linux-2.6.32.46/drivers/net/iseries_veth.c linux-2.6.32.46/drivers/net/iseries_veth.c
11694 +--- linux-2.6.32.46/drivers/net/iseries_veth.c 2011-03-27 14:31:47.000000000 -0400
11695 ++++ linux-2.6.32.46/drivers/net/iseries_veth.c 2011-04-17 15:56:46.000000000 -0400
11696 @@ -384,7 +384,7 @@ static struct attribute *veth_cnx_defaul
11697 NULL
11698 };
11699 @@ -34888,9 +34911,9 @@ diff -urNp linux-2.6.32.48/drivers/net/iseries_veth.c linux-2.6.32.48/drivers/ne
11700 .show = veth_port_attribute_show
11701 };
11702
11703 -diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c
11704 ---- linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c 2009-12-02 22:51:21.000000000 -0500
11705 -+++ linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c 2011-11-12 12:46:45.000000000 -0500
11706 +diff -urNp linux-2.6.32.46/drivers/net/ixgb/ixgb_main.c linux-2.6.32.46/drivers/net/ixgb/ixgb_main.c
11707 +--- linux-2.6.32.46/drivers/net/ixgb/ixgb_main.c 2011-03-27 14:31:47.000000000 -0400
11708 ++++ linux-2.6.32.46/drivers/net/ixgb/ixgb_main.c 2011-05-16 21:46:57.000000000 -0400
11709 @@ -1052,6 +1052,8 @@ ixgb_set_multi(struct net_device *netdev
11710 u32 rctl;
11711 int i;
11712 @@ -34900,9 +34923,9 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c linux-2.6.32.48/drivers/
11713 /* Check for Promiscuous and All Multicast modes */
11714
11715 rctl = IXGB_READ_REG(hw, RCTL);
11716 -diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c
11717 ---- linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c 2009-12-02 22:51:21.000000000 -0500
11718 -+++ linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c 2011-11-12 12:46:45.000000000 -0500
11719 +diff -urNp linux-2.6.32.46/drivers/net/ixgb/ixgb_param.c linux-2.6.32.46/drivers/net/ixgb/ixgb_param.c
11720 +--- linux-2.6.32.46/drivers/net/ixgb/ixgb_param.c 2011-03-27 14:31:47.000000000 -0400
11721 ++++ linux-2.6.32.46/drivers/net/ixgb/ixgb_param.c 2011-05-16 21:46:57.000000000 -0400
11722 @@ -260,6 +260,9 @@ void __devinit
11723 ixgb_check_options(struct ixgb_adapter *adapter)
11724 {
11725 @@ -34913,9 +34936,9 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c linux-2.6.32.48/drivers
11726 if (bd >= IXGB_MAX_NIC) {
11727 printk(KERN_NOTICE
11728 "Warning: no configuration for board #%i\n", bd);
11729 -diff -urNp linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h
11730 ---- linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h 2011-11-12 12:44:29.000000000 -0500
11731 -+++ linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h 2011-11-12 12:46:45.000000000 -0500
11732 +diff -urNp linux-2.6.32.46/drivers/net/ixgbe/ixgbe_type.h linux-2.6.32.46/drivers/net/ixgbe/ixgbe_type.h
11733 +--- linux-2.6.32.46/drivers/net/ixgbe/ixgbe_type.h 2011-03-27 14:31:47.000000000 -0400
11734 ++++ linux-2.6.32.46/drivers/net/ixgbe/ixgbe_type.h 2011-08-23 21:22:38.000000000 -0400
11735 @@ -2327,6 +2327,7 @@ struct ixgbe_eeprom_operations {
11736 s32 (*validate_checksum)(struct ixgbe_hw *, u16 *);
11737 s32 (*update_checksum)(struct ixgbe_hw *);
11738 @@ -34962,9 +34985,9 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h linux-2.6.32.48/driver
11739 struct mdio_if_info mdio;
11740 enum ixgbe_phy_type type;
11741 u32 id;
11742 -diff -urNp linux-2.6.32.48/drivers/net/mlx4/main.c linux-2.6.32.48/drivers/net/mlx4/main.c
11743 ---- linux-2.6.32.48/drivers/net/mlx4/main.c 2009-12-02 22:51:21.000000000 -0500
11744 -+++ linux-2.6.32.48/drivers/net/mlx4/main.c 2011-11-12 12:46:45.000000000 -0500
11745 +diff -urNp linux-2.6.32.46/drivers/net/mlx4/main.c linux-2.6.32.46/drivers/net/mlx4/main.c
11746 +--- linux-2.6.32.46/drivers/net/mlx4/main.c 2011-03-27 14:31:47.000000000 -0400
11747 ++++ linux-2.6.32.46/drivers/net/mlx4/main.c 2011-05-18 20:09:37.000000000 -0400
11748 @@ -38,6 +38,7 @@
11749 #include <linux/errno.h>
11750 #include <linux/pci.h>
11751 @@ -34982,9 +35005,9 @@ diff -urNp linux-2.6.32.48/drivers/net/mlx4/main.c linux-2.6.32.48/drivers/net/m
11752 err = mlx4_QUERY_FW(dev);
11753 if (err) {
11754 if (err == -EACCES)
11755 -diff -urNp linux-2.6.32.48/drivers/net/niu.c linux-2.6.32.48/drivers/net/niu.c
11756 ---- linux-2.6.32.48/drivers/net/niu.c 2011-11-12 12:44:29.000000000 -0500
11757 -+++ linux-2.6.32.48/drivers/net/niu.c 2011-11-12 12:46:45.000000000 -0500
11758 +diff -urNp linux-2.6.32.46/drivers/net/niu.c linux-2.6.32.46/drivers/net/niu.c
11759 +--- linux-2.6.32.46/drivers/net/niu.c 2011-05-10 22:12:01.000000000 -0400
11760 ++++ linux-2.6.32.46/drivers/net/niu.c 2011-05-16 21:46:57.000000000 -0400
11761 @@ -9128,6 +9128,8 @@ static void __devinit niu_try_msix(struc
11762 int i, num_irqs, err;
11763 u8 first_ldg;
11764 @@ -34994,9 +35017,9 @@ diff -urNp linux-2.6.32.48/drivers/net/niu.c linux-2.6.32.48/drivers/net/niu.c
11765 first_ldg = (NIU_NUM_LDG / parent->num_ports) * np->port;
11766 for (i = 0; i < (NIU_NUM_LDG / parent->num_ports); i++)
11767 ldg_num_map[i] = first_ldg + i;
11768 -diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcnet32.c
11769 ---- linux-2.6.32.48/drivers/net/pcnet32.c 2009-12-02 22:51:21.000000000 -0500
11770 -+++ linux-2.6.32.48/drivers/net/pcnet32.c 2011-11-12 12:46:45.000000000 -0500
11771 +diff -urNp linux-2.6.32.46/drivers/net/pcnet32.c linux-2.6.32.46/drivers/net/pcnet32.c
11772 +--- linux-2.6.32.46/drivers/net/pcnet32.c 2011-03-27 14:31:47.000000000 -0400
11773 ++++ linux-2.6.32.46/drivers/net/pcnet32.c 2011-08-05 20:33:55.000000000 -0400
11774 @@ -79,7 +79,7 @@ static int cards_found;
11775 /*
11776 * VLB I/O addresses
11777 @@ -35633,9 +35656,9 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
11778 }
11779 } else {
11780 if (netif_msg_link(lp))
11781 -diff -urNp linux-2.6.32.48/drivers/net/tg3.h linux-2.6.32.48/drivers/net/tg3.h
11782 ---- linux-2.6.32.48/drivers/net/tg3.h 2011-11-12 12:44:29.000000000 -0500
11783 -+++ linux-2.6.32.48/drivers/net/tg3.h 2011-11-12 12:46:45.000000000 -0500
11784 +diff -urNp linux-2.6.32.46/drivers/net/tg3.h linux-2.6.32.46/drivers/net/tg3.h
11785 +--- linux-2.6.32.46/drivers/net/tg3.h 2011-03-27 14:31:47.000000000 -0400
11786 ++++ linux-2.6.32.46/drivers/net/tg3.h 2011-04-17 15:56:46.000000000 -0400
11787 @@ -95,6 +95,7 @@
11788 #define CHIPREV_ID_5750_A0 0x4000
11789 #define CHIPREV_ID_5750_A1 0x4001
11790 @@ -35644,9 +35667,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tg3.h linux-2.6.32.48/drivers/net/tg3.h
11791 #define CHIPREV_ID_5750_C2 0x4202
11792 #define CHIPREV_ID_5752_A0_HW 0x5000
11793 #define CHIPREV_ID_5752_A0 0x6000
11794 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/abyss.c linux-2.6.32.48/drivers/net/tokenring/abyss.c
11795 ---- linux-2.6.32.48/drivers/net/tokenring/abyss.c 2009-12-02 22:51:21.000000000 -0500
11796 -+++ linux-2.6.32.48/drivers/net/tokenring/abyss.c 2011-11-12 12:46:45.000000000 -0500
11797 +diff -urNp linux-2.6.32.46/drivers/net/tokenring/abyss.c linux-2.6.32.46/drivers/net/tokenring/abyss.c
11798 +--- linux-2.6.32.46/drivers/net/tokenring/abyss.c 2011-03-27 14:31:47.000000000 -0400
11799 ++++ linux-2.6.32.46/drivers/net/tokenring/abyss.c 2011-08-05 20:33:55.000000000 -0400
11800 @@ -451,10 +451,12 @@ static struct pci_driver abyss_driver =
11801
11802 static int __init abyss_init (void)
11803 @@ -35663,9 +35686,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/abyss.c linux-2.6.32.48/drivers
11804
11805 return pci_register_driver(&abyss_driver);
11806 }
11807 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/madgemc.c linux-2.6.32.48/drivers/net/tokenring/madgemc.c
11808 ---- linux-2.6.32.48/drivers/net/tokenring/madgemc.c 2009-12-02 22:51:21.000000000 -0500
11809 -+++ linux-2.6.32.48/drivers/net/tokenring/madgemc.c 2011-11-12 12:46:45.000000000 -0500
11810 +diff -urNp linux-2.6.32.46/drivers/net/tokenring/madgemc.c linux-2.6.32.46/drivers/net/tokenring/madgemc.c
11811 +--- linux-2.6.32.46/drivers/net/tokenring/madgemc.c 2011-03-27 14:31:47.000000000 -0400
11812 ++++ linux-2.6.32.46/drivers/net/tokenring/madgemc.c 2011-08-05 20:33:55.000000000 -0400
11813 @@ -755,9 +755,11 @@ static struct mca_driver madgemc_driver
11814
11815 static int __init madgemc_init (void)
11816 @@ -35681,9 +35704,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/madgemc.c linux-2.6.32.48/drive
11817
11818 return mca_register_driver (&madgemc_driver);
11819 }
11820 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/proteon.c linux-2.6.32.48/drivers/net/tokenring/proteon.c
11821 ---- linux-2.6.32.48/drivers/net/tokenring/proteon.c 2009-12-02 22:51:21.000000000 -0500
11822 -+++ linux-2.6.32.48/drivers/net/tokenring/proteon.c 2011-11-12 12:46:45.000000000 -0500
11823 +diff -urNp linux-2.6.32.46/drivers/net/tokenring/proteon.c linux-2.6.32.46/drivers/net/tokenring/proteon.c
11824 +--- linux-2.6.32.46/drivers/net/tokenring/proteon.c 2011-03-27 14:31:47.000000000 -0400
11825 ++++ linux-2.6.32.46/drivers/net/tokenring/proteon.c 2011-08-05 20:33:55.000000000 -0400
11826 @@ -353,9 +353,11 @@ static int __init proteon_init(void)
11827 struct platform_device *pdev;
11828 int i, num = 0, err = 0;
11829 @@ -35699,9 +35722,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/proteon.c linux-2.6.32.48/drive
11830
11831 err = platform_driver_register(&proteon_driver);
11832 if (err)
11833 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/skisa.c linux-2.6.32.48/drivers/net/tokenring/skisa.c
11834 ---- linux-2.6.32.48/drivers/net/tokenring/skisa.c 2009-12-02 22:51:21.000000000 -0500
11835 -+++ linux-2.6.32.48/drivers/net/tokenring/skisa.c 2011-11-12 12:46:45.000000000 -0500
11836 +diff -urNp linux-2.6.32.46/drivers/net/tokenring/skisa.c linux-2.6.32.46/drivers/net/tokenring/skisa.c
11837 +--- linux-2.6.32.46/drivers/net/tokenring/skisa.c 2011-03-27 14:31:47.000000000 -0400
11838 ++++ linux-2.6.32.46/drivers/net/tokenring/skisa.c 2011-08-05 20:33:55.000000000 -0400
11839 @@ -363,9 +363,11 @@ static int __init sk_isa_init(void)
11840 struct platform_device *pdev;
11841 int i, num = 0, err = 0;
11842 @@ -35717,9 +35740,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/skisa.c linux-2.6.32.48/drivers
11843
11844 err = platform_driver_register(&sk_isa_driver);
11845 if (err)
11846 -diff -urNp linux-2.6.32.48/drivers/net/tulip/de2104x.c linux-2.6.32.48/drivers/net/tulip/de2104x.c
11847 ---- linux-2.6.32.48/drivers/net/tulip/de2104x.c 2009-12-02 22:51:21.000000000 -0500
11848 -+++ linux-2.6.32.48/drivers/net/tulip/de2104x.c 2011-11-12 12:46:45.000000000 -0500
11849 +diff -urNp linux-2.6.32.46/drivers/net/tulip/de2104x.c linux-2.6.32.46/drivers/net/tulip/de2104x.c
11850 +--- linux-2.6.32.46/drivers/net/tulip/de2104x.c 2011-03-27 14:31:47.000000000 -0400
11851 ++++ linux-2.6.32.46/drivers/net/tulip/de2104x.c 2011-05-16 21:46:57.000000000 -0400
11852 @@ -1785,6 +1785,8 @@ static void __devinit de21041_get_srom_i
11853 struct de_srom_info_leaf *il;
11854 void *bufp;
11855 @@ -35729,9 +35752,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tulip/de2104x.c linux-2.6.32.48/drivers/n
11856 /* download entire eeprom */
11857 for (i = 0; i < DE_EEPROM_WORDS; i++)
11858 ((__le16 *)ee_data)[i] =
11859 -diff -urNp linux-2.6.32.48/drivers/net/tulip/de4x5.c linux-2.6.32.48/drivers/net/tulip/de4x5.c
11860 ---- linux-2.6.32.48/drivers/net/tulip/de4x5.c 2009-12-02 22:51:21.000000000 -0500
11861 -+++ linux-2.6.32.48/drivers/net/tulip/de4x5.c 2011-11-12 12:46:45.000000000 -0500
11862 +diff -urNp linux-2.6.32.46/drivers/net/tulip/de4x5.c linux-2.6.32.46/drivers/net/tulip/de4x5.c
11863 +--- linux-2.6.32.46/drivers/net/tulip/de4x5.c 2011-03-27 14:31:47.000000000 -0400
11864 ++++ linux-2.6.32.46/drivers/net/tulip/de4x5.c 2011-04-17 15:56:46.000000000 -0400
11865 @@ -5472,7 +5472,7 @@ de4x5_ioctl(struct net_device *dev, stru
11866 for (i=0; i<ETH_ALEN; i++) {
11867 tmp.addr[i] = dev->dev_addr[i];
11868 @@ -35750,9 +35773,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tulip/de4x5.c linux-2.6.32.48/drivers/net
11869 return -EFAULT;
11870 break;
11871 }
11872 -diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb/hso.c
11873 ---- linux-2.6.32.48/drivers/net/usb/hso.c 2011-11-12 12:44:29.000000000 -0500
11874 -+++ linux-2.6.32.48/drivers/net/usb/hso.c 2011-11-12 12:46:45.000000000 -0500
11875 +diff -urNp linux-2.6.32.46/drivers/net/usb/hso.c linux-2.6.32.46/drivers/net/usb/hso.c
11876 +--- linux-2.6.32.46/drivers/net/usb/hso.c 2011-03-27 14:31:47.000000000 -0400
11877 ++++ linux-2.6.32.46/drivers/net/usb/hso.c 2011-04-17 15:56:46.000000000 -0400
11878 @@ -71,7 +71,7 @@
11879 #include <asm/byteorder.h>
11880 #include <linux/serial_core.h>
11881 @@ -35840,9 +35863,9 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
11882 result =
11883 hso_start_serial_device(serial_table[i], GFP_NOIO);
11884 hso_kick_transmit(dev2ser(serial_table[i]));
11885 -diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-config.h linux-2.6.32.48/drivers/net/vxge/vxge-config.h
11886 ---- linux-2.6.32.48/drivers/net/vxge/vxge-config.h 2009-12-02 22:51:21.000000000 -0500
11887 -+++ linux-2.6.32.48/drivers/net/vxge/vxge-config.h 2011-11-12 12:46:45.000000000 -0500
11888 +diff -urNp linux-2.6.32.46/drivers/net/vxge/vxge-config.h linux-2.6.32.46/drivers/net/vxge/vxge-config.h
11889 +--- linux-2.6.32.46/drivers/net/vxge/vxge-config.h 2011-03-27 14:31:47.000000000 -0400
11890 ++++ linux-2.6.32.46/drivers/net/vxge/vxge-config.h 2011-08-05 20:33:55.000000000 -0400
11891 @@ -474,7 +474,7 @@ struct vxge_hw_uld_cbs {
11892 void (*link_down)(struct __vxge_hw_device *devh);
11893 void (*crit_err)(struct __vxge_hw_device *devh,
11894 @@ -35852,9 +35875,9 @@ diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-config.h linux-2.6.32.48/driver
11895
11896 /*
11897 * struct __vxge_hw_blockpool_entry - Block private data structure
11898 -diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-main.c linux-2.6.32.48/drivers/net/vxge/vxge-main.c
11899 ---- linux-2.6.32.48/drivers/net/vxge/vxge-main.c 2009-12-02 22:51:21.000000000 -0500
11900 -+++ linux-2.6.32.48/drivers/net/vxge/vxge-main.c 2011-11-12 12:46:45.000000000 -0500
11901 +diff -urNp linux-2.6.32.46/drivers/net/vxge/vxge-main.c linux-2.6.32.46/drivers/net/vxge/vxge-main.c
11902 +--- linux-2.6.32.46/drivers/net/vxge/vxge-main.c 2011-03-27 14:31:47.000000000 -0400
11903 ++++ linux-2.6.32.46/drivers/net/vxge/vxge-main.c 2011-05-16 21:46:57.000000000 -0400
11904 @@ -93,6 +93,8 @@ static inline void VXGE_COMPLETE_VPATH_T
11905 struct sk_buff *completed[NR_SKB_COMPLETED];
11906 int more;
11907 @@ -35873,9 +35896,9 @@ diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-main.c linux-2.6.32.48/drivers/
11908 /*
11909 * Filling
11910 * - itable with bucket numbers
11911 -diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h
11912 ---- linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h 2009-12-02 22:51:21.000000000 -0500
11913 -+++ linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h 2011-11-12 12:46:45.000000000 -0500
11914 +diff -urNp linux-2.6.32.46/drivers/net/vxge/vxge-traffic.h linux-2.6.32.46/drivers/net/vxge/vxge-traffic.h
11915 +--- linux-2.6.32.46/drivers/net/vxge/vxge-traffic.h 2011-03-27 14:31:47.000000000 -0400
11916 ++++ linux-2.6.32.46/drivers/net/vxge/vxge-traffic.h 2011-08-05 20:33:55.000000000 -0400
11917 @@ -2123,7 +2123,7 @@ struct vxge_hw_mempool_cbs {
11918 struct vxge_hw_mempool_dma *dma_object,
11919 u32 index,
11920 @@ -35885,9 +35908,9 @@ diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h linux-2.6.32.48/drive
11921
11922 void
11923 __vxge_hw_mempool_destroy(
11924 -diff -urNp linux-2.6.32.48/drivers/net/wan/cycx_x25.c linux-2.6.32.48/drivers/net/wan/cycx_x25.c
11925 ---- linux-2.6.32.48/drivers/net/wan/cycx_x25.c 2009-12-02 22:51:21.000000000 -0500
11926 -+++ linux-2.6.32.48/drivers/net/wan/cycx_x25.c 2011-11-12 12:46:45.000000000 -0500
11927 +diff -urNp linux-2.6.32.46/drivers/net/wan/cycx_x25.c linux-2.6.32.46/drivers/net/wan/cycx_x25.c
11928 +--- linux-2.6.32.46/drivers/net/wan/cycx_x25.c 2011-03-27 14:31:47.000000000 -0400
11929 ++++ linux-2.6.32.46/drivers/net/wan/cycx_x25.c 2011-05-16 21:46:57.000000000 -0400
11930 @@ -1017,6 +1017,8 @@ static void hex_dump(char *msg, unsigned
11931 unsigned char hex[1024],
11932 * phex = hex;
11933 @@ -35897,9 +35920,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wan/cycx_x25.c linux-2.6.32.48/drivers/ne
11934 if (len >= (sizeof(hex) / 2))
11935 len = (sizeof(hex) / 2) - 1;
11936
11937 -diff -urNp linux-2.6.32.48/drivers/net/wan/hdlc_x25.c linux-2.6.32.48/drivers/net/wan/hdlc_x25.c
11938 ---- linux-2.6.32.48/drivers/net/wan/hdlc_x25.c 2009-12-02 22:51:21.000000000 -0500
11939 -+++ linux-2.6.32.48/drivers/net/wan/hdlc_x25.c 2011-11-12 12:46:45.000000000 -0500
11940 +diff -urNp linux-2.6.32.46/drivers/net/wan/hdlc_x25.c linux-2.6.32.46/drivers/net/wan/hdlc_x25.c
11941 +--- linux-2.6.32.46/drivers/net/wan/hdlc_x25.c 2011-03-27 14:31:47.000000000 -0400
11942 ++++ linux-2.6.32.46/drivers/net/wan/hdlc_x25.c 2011-08-05 20:33:55.000000000 -0400
11943 @@ -136,16 +136,16 @@ static netdev_tx_t x25_xmit(struct sk_bu
11944
11945 static int x25_open(struct net_device *dev)
11946 @@ -35925,9 +35948,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wan/hdlc_x25.c linux-2.6.32.48/drivers/ne
11947 result = lapb_register(dev, &cb);
11948 if (result != LAPB_OK)
11949 return result;
11950 -diff -urNp linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c
11951 ---- linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c 2009-12-02 22:51:21.000000000 -0500
11952 -+++ linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c 2011-11-12 12:46:45.000000000 -0500
11953 +diff -urNp linux-2.6.32.46/drivers/net/wimax/i2400m/usb-fw.c linux-2.6.32.46/drivers/net/wimax/i2400m/usb-fw.c
11954 +--- linux-2.6.32.46/drivers/net/wimax/i2400m/usb-fw.c 2011-03-27 14:31:47.000000000 -0400
11955 ++++ linux-2.6.32.46/drivers/net/wimax/i2400m/usb-fw.c 2011-05-16 21:46:57.000000000 -0400
11956 @@ -263,6 +263,8 @@ ssize_t i2400mu_bus_bm_wait_for_ack(stru
11957 int do_autopm = 1;
11958 DECLARE_COMPLETION_ONSTACK(notif_completion);
11959 @@ -35937,9 +35960,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c linux-2.6.32.48/dri
11960 d_fnstart(8, dev, "(i2400m %p ack %p size %zu)\n",
11961 i2400m, ack, ack_size);
11962 BUG_ON(_ack == i2400m->bm_ack_buf);
11963 -diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/net/wireless/airo.c
11964 ---- linux-2.6.32.48/drivers/net/wireless/airo.c 2011-11-12 12:44:29.000000000 -0500
11965 -+++ linux-2.6.32.48/drivers/net/wireless/airo.c 2011-11-12 12:46:45.000000000 -0500
11966 +diff -urNp linux-2.6.32.46/drivers/net/wireless/airo.c linux-2.6.32.46/drivers/net/wireless/airo.c
11967 +--- linux-2.6.32.46/drivers/net/wireless/airo.c 2011-03-27 14:31:47.000000000 -0400
11968 ++++ linux-2.6.32.46/drivers/net/wireless/airo.c 2011-05-16 21:46:57.000000000 -0400
11969 @@ -3003,6 +3003,8 @@ static void airo_process_scan_results (s
11970 BSSListElement * loop_net;
11971 BSSListElement * tmp_net;
11972 @@ -35994,9 +36017,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/n
11973 /* Get stats out of the card */
11974 clear_bit(JOB_WSTATS, &local->jobs);
11975 if (local->power.event) {
11976 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c
11977 ---- linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c 2009-12-02 22:51:21.000000000 -0500
11978 -+++ linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c 2011-11-12 12:46:45.000000000 -0500
11979 +diff -urNp linux-2.6.32.46/drivers/net/wireless/ath/ath5k/debug.c linux-2.6.32.46/drivers/net/wireless/ath/ath5k/debug.c
11980 +--- linux-2.6.32.46/drivers/net/wireless/ath/ath5k/debug.c 2011-03-27 14:31:47.000000000 -0400
11981 ++++ linux-2.6.32.46/drivers/net/wireless/ath/ath5k/debug.c 2011-05-16 21:46:57.000000000 -0400
11982 @@ -205,6 +205,8 @@ static ssize_t read_file_beacon(struct f
11983 unsigned int v;
11984 u64 tsf;
11985 @@ -36015,9 +36038,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c linux-2.6.32.4
11986 len += snprintf(buf+len, sizeof(buf)-len,
11987 "DEBUG LEVEL: 0x%08x\n\n", sc->debug.level);
11988
11989 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c
11990 ---- linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c 2009-12-02 22:51:21.000000000 -0500
11991 -+++ linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c 2011-11-12 12:46:45.000000000 -0500
11992 +diff -urNp linux-2.6.32.46/drivers/net/wireless/ath/ath9k/debug.c linux-2.6.32.46/drivers/net/wireless/ath/ath9k/debug.c
11993 +--- linux-2.6.32.46/drivers/net/wireless/ath/ath9k/debug.c 2011-03-27 14:31:47.000000000 -0400
11994 ++++ linux-2.6.32.46/drivers/net/wireless/ath/ath9k/debug.c 2011-05-16 21:46:57.000000000 -0400
11995 @@ -220,6 +220,8 @@ static ssize_t read_file_interrupt(struc
11996 char buf[512];
11997 unsigned int len = 0;
11998 @@ -36036,9 +36059,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c linux-2.6.32.4
11999 len += snprintf(buf + len, sizeof(buf) - len,
12000 "primary: %s (%s chan=%d ht=%d)\n",
12001 wiphy_name(sc->pri_wiphy->hw->wiphy),
12002 -diff -urNp linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c
12003 ---- linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c 2009-12-02 22:51:21.000000000 -0500
12004 -+++ linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c 2011-11-12 12:46:45.000000000 -0500
12005 +diff -urNp linux-2.6.32.46/drivers/net/wireless/b43/debugfs.c linux-2.6.32.46/drivers/net/wireless/b43/debugfs.c
12006 +--- linux-2.6.32.46/drivers/net/wireless/b43/debugfs.c 2011-03-27 14:31:47.000000000 -0400
12007 ++++ linux-2.6.32.46/drivers/net/wireless/b43/debugfs.c 2011-04-17 15:56:46.000000000 -0400
12008 @@ -43,7 +43,7 @@ static struct dentry *rootdir;
12009 struct b43_debugfs_fops {
12010 ssize_t (*read)(struct b43_wldev *dev, char *buf, size_t bufsize);
12011 @@ -36048,9 +36071,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c linux-2.6.32.48/dr
12012 /* Offset of struct b43_dfs_file in struct b43_dfsentry */
12013 size_t file_struct_offset;
12014 };
12015 -diff -urNp linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c
12016 ---- linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c 2009-12-02 22:51:21.000000000 -0500
12017 -+++ linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c 2011-11-12 12:46:45.000000000 -0500
12018 +diff -urNp linux-2.6.32.46/drivers/net/wireless/b43legacy/debugfs.c linux-2.6.32.46/drivers/net/wireless/b43legacy/debugfs.c
12019 +--- linux-2.6.32.46/drivers/net/wireless/b43legacy/debugfs.c 2011-03-27 14:31:47.000000000 -0400
12020 ++++ linux-2.6.32.46/drivers/net/wireless/b43legacy/debugfs.c 2011-04-17 15:56:46.000000000 -0400
12021 @@ -44,7 +44,7 @@ static struct dentry *rootdir;
12022 struct b43legacy_debugfs_fops {
12023 ssize_t (*read)(struct b43legacy_wldev *dev, char *buf, size_t bufsize);
12024 @@ -36060,9 +36083,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c linux-2.6.32
12025 /* Offset of struct b43legacy_dfs_file in struct b43legacy_dfsentry */
12026 size_t file_struct_offset;
12027 /* Take wl->irq_lock before calling read/write? */
12028 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c
12029 ---- linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-12 12:44:29.000000000 -0500
12030 -+++ linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-12 12:46:45.000000000 -0500
12031 +diff -urNp linux-2.6.32.46/drivers/net/wireless/ipw2x00/ipw2100.c linux-2.6.32.46/drivers/net/wireless/ipw2x00/ipw2100.c
12032 +--- linux-2.6.32.46/drivers/net/wireless/ipw2x00/ipw2100.c 2011-03-27 14:31:47.000000000 -0400
12033 ++++ linux-2.6.32.46/drivers/net/wireless/ipw2x00/ipw2100.c 2011-05-16 21:46:57.000000000 -0400
12034 @@ -2014,6 +2014,8 @@ static int ipw2100_set_essid(struct ipw2
12035 int err;
12036 DECLARE_SSID_BUF(ssid);
12037 @@ -36081,9 +36104,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c linux-2.6.32.4
12038 IPW_DEBUG_HC("WEP_KEY_INFO: index = %d, len = %d/%d\n",
12039 idx, keylen, len);
12040
12041 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c
12042 ---- linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c 2009-12-02 22:51:21.000000000 -0500
12043 -+++ linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-11-12 12:46:45.000000000 -0500
12044 +diff -urNp linux-2.6.32.46/drivers/net/wireless/ipw2x00/libipw_rx.c linux-2.6.32.46/drivers/net/wireless/ipw2x00/libipw_rx.c
12045 +--- linux-2.6.32.46/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-03-27 14:31:47.000000000 -0400
12046 ++++ linux-2.6.32.46/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-05-16 21:46:57.000000000 -0400
12047 @@ -1566,6 +1566,8 @@ static void libipw_process_probe_respons
12048 unsigned long flags;
12049 DECLARE_SSID_BUF(ssid);
12050 @@ -36093,9 +36116,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c linux-2.6.32
12051 LIBIPW_DEBUG_SCAN("'%s' (%pM"
12052 "): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\n",
12053 print_ssid(ssid, info_element->data, info_element->len),
12054 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c
12055 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c 2009-12-02 22:51:21.000000000 -0500
12056 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c 2011-11-12 12:46:45.000000000 -0500
12057 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-1000.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-1000.c
12058 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-1000.c 2011-03-27 14:31:47.000000000 -0400
12059 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-1000.c 2011-04-17 15:56:46.000000000 -0400
12060 @@ -137,7 +137,7 @@ static struct iwl_lib_ops iwl1000_lib =
12061 },
12062 };
12063 @@ -36105,9 +36128,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c linux-2.6.32.
12064 .ucode = &iwl5000_ucode,
12065 .lib = &iwl1000_lib,
12066 .hcmd = &iwl5000_hcmd,
12067 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c
12068 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-11-12 12:44:29.000000000 -0500
12069 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-11-12 12:46:45.000000000 -0500
12070 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl3945-base.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl3945-base.c
12071 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-03-27 14:31:47.000000000 -0400
12072 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-08-05 20:33:55.000000000 -0400
12073 @@ -3927,7 +3927,9 @@ static int iwl3945_pci_probe(struct pci_
12074 */
12075 if (iwl3945_mod_params.disable_hw_scan) {
12076 @@ -36119,9 +36142,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c linux-2.6
12077 }
12078
12079
12080 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c
12081 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-11-12 12:44:29.000000000 -0500
12082 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-11-12 12:46:45.000000000 -0500
12083 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-3945.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-3945.c
12084 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-03-27 14:31:47.000000000 -0400
12085 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-04-17 15:56:46.000000000 -0400
12086 @@ -2874,7 +2874,7 @@ static struct iwl_hcmd_utils_ops iwl3945
12087 .build_addsta_hcmd = iwl3945_build_addsta_hcmd,
12088 };
12089 @@ -36131,9 +36154,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c linux-2.6.32.
12090 .ucode = &iwl3945_ucode,
12091 .lib = &iwl3945_lib,
12092 .hcmd = &iwl3945_hcmd,
12093 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c
12094 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c 2011-11-12 12:44:29.000000000 -0500
12095 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c 2011-11-12 12:46:45.000000000 -0500
12096 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-4965.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-4965.c
12097 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-4965.c 2011-03-27 14:31:47.000000000 -0400
12098 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-4965.c 2011-04-17 15:56:46.000000000 -0400
12099 @@ -2345,7 +2345,7 @@ static struct iwl_lib_ops iwl4965_lib =
12100 },
12101 };
12102 @@ -36143,9 +36166,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c linux-2.6.32.
12103 .ucode = &iwl4965_ucode,
12104 .lib = &iwl4965_lib,
12105 .hcmd = &iwl4965_hcmd,
12106 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c
12107 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c 2011-11-12 12:44:29.000000000 -0500
12108 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c 2011-11-12 12:46:45.000000000 -0500
12109 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-5000.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-5000.c
12110 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-5000.c 2011-06-25 12:55:34.000000000 -0400
12111 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-5000.c 2011-06-25 12:56:37.000000000 -0400
12112 @@ -1633,14 +1633,14 @@ static struct iwl_lib_ops iwl5150_lib =
12113 },
12114 };
12115 @@ -36163,9 +36186,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c linux-2.6.32.
12116 .ucode = &iwl5000_ucode,
12117 .lib = &iwl5150_lib,
12118 .hcmd = &iwl5000_hcmd,
12119 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c
12120 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c 2009-12-02 22:51:21.000000000 -0500
12121 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c 2011-11-12 12:46:45.000000000 -0500
12122 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-6000.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-6000.c
12123 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-6000.c 2011-03-27 14:31:47.000000000 -0400
12124 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-6000.c 2011-04-17 15:56:46.000000000 -0400
12125 @@ -146,7 +146,7 @@ static struct iwl_hcmd_utils_ops iwl6000
12126 .calc_rssi = iwl5000_calc_rssi,
12127 };
12128 @@ -36175,9 +36198,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c linux-2.6.32.
12129 .ucode = &iwl5000_ucode,
12130 .lib = &iwl6000_lib,
12131 .hcmd = &iwl5000_hcmd,
12132 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c
12133 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-11-12 12:44:29.000000000 -0500
12134 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-11-12 12:46:45.000000000 -0500
12135 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn.c
12136 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-03-27 14:31:47.000000000 -0400
12137 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-08-05 20:33:55.000000000 -0400
12138 @@ -2911,7 +2911,9 @@ static int iwl_pci_probe(struct pci_dev
12139 if (iwl_debug_level & IWL_DL_INFO)
12140 dev_printk(KERN_DEBUG, &(pdev->dev),
12141 @@ -36189,9 +36212,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c linux-2.6.32.4
12142 }
12143
12144 hw = iwl_alloc_all(cfg, &iwl_hw_ops);
12145 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
12146 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-12 12:44:29.000000000 -0500
12147 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-12 12:46:45.000000000 -0500
12148 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
12149 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-03-27 14:31:47.000000000 -0400
12150 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-05-16 21:46:57.000000000 -0400
12151 @@ -857,6 +857,8 @@ static void rs_tx_status(void *priv_r, s
12152 u8 active_index = 0;
12153 s32 tpt = 0;
12154 @@ -36210,9 +36233,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-2.6.3
12155 /* Override starting rate (index 0) if needed for debug purposes */
12156 rs_dbgfs_set_mcs(lq_sta, &new_rate, index);
12157
12158 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c
12159 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2009-12-02 22:51:21.000000000 -0500
12160 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-11-12 12:46:45.000000000 -0500
12161 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debugfs.c
12162 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-03-27 14:31:47.000000000 -0400
12163 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-05-16 21:46:57.000000000 -0400
12164 @@ -524,6 +524,8 @@ static ssize_t iwl_dbgfs_status_read(str
12165 int pos = 0;
12166 const size_t bufsz = sizeof(buf);
12167 @@ -36231,9 +36254,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-2.6.
12168 for (i = 0; i < AC_NUM; i++) {
12169 pos += scnprintf(buf + pos, bufsz - pos,
12170 "\tcw_min\tcw_max\taifsn\ttxop\n");
12171 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h
12172 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h 2009-12-02 22:51:21.000000000 -0500
12173 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-11-12 12:46:45.000000000 -0500
12174 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debug.h linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debug.h
12175 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-03-27 14:31:47.000000000 -0400
12176 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-04-17 15:56:46.000000000 -0400
12177 @@ -118,8 +118,8 @@ void iwl_dbgfs_unregister(struct iwl_pri
12178 #endif
12179
12180 @@ -36245,9 +36268,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h linux-2.6.32
12181 static inline void iwl_print_hex_dump(struct iwl_priv *priv, int level,
12182 void *p, u32 len)
12183 {}
12184 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h
12185 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h 2011-11-12 12:44:29.000000000 -0500
12186 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h 2011-11-12 12:46:45.000000000 -0500
12187 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-dev.h linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-dev.h
12188 +--- linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-dev.h 2011-03-27 14:31:47.000000000 -0400
12189 ++++ linux-2.6.32.46/drivers/net/wireless/iwlwifi/iwl-dev.h 2011-04-17 15:56:46.000000000 -0400
12190 @@ -68,7 +68,7 @@ struct iwl_tx_queue;
12191
12192 /* shared structures from iwl-5000.c */
12193 @@ -36257,9 +36280,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h linux-2.6.32.4
12194 extern struct iwl_ucode_ops iwl5000_ucode;
12195 extern struct iwl_lib_ops iwl5000_lib;
12196 extern struct iwl_hcmd_ops iwl5000_hcmd;
12197 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c
12198 ---- linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c 2009-12-02 22:51:21.000000000 -0500
12199 -+++ linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-11-12 12:46:45.000000000 -0500
12200 +diff -urNp linux-2.6.32.46/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-2.6.32.46/drivers/net/wireless/iwmc3200wifi/debugfs.c
12201 +--- linux-2.6.32.46/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-03-27 14:31:47.000000000 -0400
12202 ++++ linux-2.6.32.46/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-05-16 21:46:57.000000000 -0400
12203 @@ -299,6 +299,8 @@ static ssize_t iwm_debugfs_fw_err_read(s
12204 int buf_len = 512;
12205 size_t len = 0;
12206 @@ -36269,9 +36292,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-2.6
12207 if (*ppos != 0)
12208 return 0;
12209 if (count < sizeof(buf))
12210 -diff -urNp linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c
12211 ---- linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c 2009-12-02 22:51:21.000000000 -0500
12212 -+++ linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c 2011-11-12 12:46:45.000000000 -0500
12213 +diff -urNp linux-2.6.32.46/drivers/net/wireless/libertas/debugfs.c linux-2.6.32.46/drivers/net/wireless/libertas/debugfs.c
12214 +--- linux-2.6.32.46/drivers/net/wireless/libertas/debugfs.c 2011-03-27 14:31:47.000000000 -0400
12215 ++++ linux-2.6.32.46/drivers/net/wireless/libertas/debugfs.c 2011-04-17 15:56:46.000000000 -0400
12216 @@ -708,7 +708,7 @@ out_unlock:
12217 struct lbs_debugfs_files {
12218 const char *name;
12219 @@ -36281,9 +36304,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c linux-2.6.32.
12220 };
12221
12222 static const struct lbs_debugfs_files debugfs_files[] = {
12223 -diff -urNp linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c
12224 ---- linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c 2011-11-12 12:44:29.000000000 -0500
12225 -+++ linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c 2011-11-12 12:46:45.000000000 -0500
12226 +diff -urNp linux-2.6.32.46/drivers/net/wireless/rndis_wlan.c linux-2.6.32.46/drivers/net/wireless/rndis_wlan.c
12227 +--- linux-2.6.32.46/drivers/net/wireless/rndis_wlan.c 2011-03-27 14:31:47.000000000 -0400
12228 ++++ linux-2.6.32.46/drivers/net/wireless/rndis_wlan.c 2011-04-17 15:56:46.000000000 -0400
12229 @@ -1176,7 +1176,7 @@ static int set_rts_threshold(struct usbn
12230
12231 devdbg(usbdev, "set_rts_threshold %i", rts_threshold);
12232 @@ -36293,9 +36316,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c linux-2.6.32.48/dri
12233 rts_threshold = 2347;
12234
12235 tmp = cpu_to_le32(rts_threshold);
12236 -diff -urNp linux-2.6.32.48/drivers/oprofile/buffer_sync.c linux-2.6.32.48/drivers/oprofile/buffer_sync.c
12237 ---- linux-2.6.32.48/drivers/oprofile/buffer_sync.c 2011-11-12 12:44:29.000000000 -0500
12238 -+++ linux-2.6.32.48/drivers/oprofile/buffer_sync.c 2011-11-12 12:46:45.000000000 -0500
12239 +diff -urNp linux-2.6.32.46/drivers/oprofile/buffer_sync.c linux-2.6.32.46/drivers/oprofile/buffer_sync.c
12240 +--- linux-2.6.32.46/drivers/oprofile/buffer_sync.c 2011-03-27 14:31:47.000000000 -0400
12241 ++++ linux-2.6.32.46/drivers/oprofile/buffer_sync.c 2011-04-17 15:56:46.000000000 -0400
12242 @@ -341,7 +341,7 @@ static void add_data(struct op_entry *en
12243 if (cookie == NO_COOKIE)
12244 offset = pc;
12245 @@ -36331,9 +36354,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/buffer_sync.c linux-2.6.32.48/driver
12246 }
12247 }
12248 release_mm(mm);
12249 -diff -urNp linux-2.6.32.48/drivers/oprofile/event_buffer.c linux-2.6.32.48/drivers/oprofile/event_buffer.c
12250 ---- linux-2.6.32.48/drivers/oprofile/event_buffer.c 2009-12-02 22:51:21.000000000 -0500
12251 -+++ linux-2.6.32.48/drivers/oprofile/event_buffer.c 2011-11-12 12:46:45.000000000 -0500
12252 +diff -urNp linux-2.6.32.46/drivers/oprofile/event_buffer.c linux-2.6.32.46/drivers/oprofile/event_buffer.c
12253 +--- linux-2.6.32.46/drivers/oprofile/event_buffer.c 2011-03-27 14:31:47.000000000 -0400
12254 ++++ linux-2.6.32.46/drivers/oprofile/event_buffer.c 2011-04-17 15:56:46.000000000 -0400
12255 @@ -53,7 +53,7 @@ void add_event_entry(unsigned long value
12256 }
12257
12258 @@ -36343,9 +36366,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/event_buffer.c linux-2.6.32.48/drive
12259 return;
12260 }
12261
12262 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprof.c linux-2.6.32.48/drivers/oprofile/oprof.c
12263 ---- linux-2.6.32.48/drivers/oprofile/oprof.c 2009-12-02 22:51:21.000000000 -0500
12264 -+++ linux-2.6.32.48/drivers/oprofile/oprof.c 2011-11-12 12:46:45.000000000 -0500
12265 +diff -urNp linux-2.6.32.46/drivers/oprofile/oprof.c linux-2.6.32.46/drivers/oprofile/oprof.c
12266 +--- linux-2.6.32.46/drivers/oprofile/oprof.c 2011-03-27 14:31:47.000000000 -0400
12267 ++++ linux-2.6.32.46/drivers/oprofile/oprof.c 2011-04-17 15:56:46.000000000 -0400
12268 @@ -110,7 +110,7 @@ static void switch_worker(struct work_st
12269 if (oprofile_ops.switch_events())
12270 return;
12271 @@ -36355,9 +36378,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/oprof.c linux-2.6.32.48/drivers/opro
12272 start_switch_worker();
12273 }
12274
12275 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprofilefs.c linux-2.6.32.48/drivers/oprofile/oprofilefs.c
12276 ---- linux-2.6.32.48/drivers/oprofile/oprofilefs.c 2009-12-02 22:51:21.000000000 -0500
12277 -+++ linux-2.6.32.48/drivers/oprofile/oprofilefs.c 2011-11-12 12:46:45.000000000 -0500
12278 +diff -urNp linux-2.6.32.46/drivers/oprofile/oprofilefs.c linux-2.6.32.46/drivers/oprofile/oprofilefs.c
12279 +--- linux-2.6.32.46/drivers/oprofile/oprofilefs.c 2011-03-27 14:31:47.000000000 -0400
12280 ++++ linux-2.6.32.46/drivers/oprofile/oprofilefs.c 2011-04-17 15:56:46.000000000 -0400
12281 @@ -187,7 +187,7 @@ static const struct file_operations atom
12282
12283
12284 @@ -36367,9 +36390,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/oprofilefs.c linux-2.6.32.48/drivers
12285 {
12286 struct dentry *d = __oprofilefs_create_file(sb, root, name,
12287 &atomic_ro_fops, 0444);
12288 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.c linux-2.6.32.48/drivers/oprofile/oprofile_stats.c
12289 ---- linux-2.6.32.48/drivers/oprofile/oprofile_stats.c 2009-12-02 22:51:21.000000000 -0500
12290 -+++ linux-2.6.32.48/drivers/oprofile/oprofile_stats.c 2011-11-12 12:46:45.000000000 -0500
12291 +diff -urNp linux-2.6.32.46/drivers/oprofile/oprofile_stats.c linux-2.6.32.46/drivers/oprofile/oprofile_stats.c
12292 +--- linux-2.6.32.46/drivers/oprofile/oprofile_stats.c 2011-03-27 14:31:47.000000000 -0400
12293 ++++ linux-2.6.32.46/drivers/oprofile/oprofile_stats.c 2011-04-17 15:56:46.000000000 -0400
12294 @@ -30,11 +30,11 @@ void oprofile_reset_stats(void)
12295 cpu_buf->sample_invalid_eip = 0;
12296 }
12297 @@ -36387,9 +36410,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.c linux-2.6.32.48/dri
12298 }
12299
12300
12301 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.h linux-2.6.32.48/drivers/oprofile/oprofile_stats.h
12302 ---- linux-2.6.32.48/drivers/oprofile/oprofile_stats.h 2009-12-02 22:51:21.000000000 -0500
12303 -+++ linux-2.6.32.48/drivers/oprofile/oprofile_stats.h 2011-11-12 12:46:45.000000000 -0500
12304 +diff -urNp linux-2.6.32.46/drivers/oprofile/oprofile_stats.h linux-2.6.32.46/drivers/oprofile/oprofile_stats.h
12305 +--- linux-2.6.32.46/drivers/oprofile/oprofile_stats.h 2011-03-27 14:31:47.000000000 -0400
12306 ++++ linux-2.6.32.46/drivers/oprofile/oprofile_stats.h 2011-04-17 15:56:46.000000000 -0400
12307 @@ -13,11 +13,11 @@
12308 #include <asm/atomic.h>
12309
12310 @@ -36407,9 +36430,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.h linux-2.6.32.48/dri
12311 };
12312
12313 extern struct oprofile_stat_struct oprofile_stats;
12314 -diff -urNp linux-2.6.32.48/drivers/parisc/pdc_stable.c linux-2.6.32.48/drivers/parisc/pdc_stable.c
12315 ---- linux-2.6.32.48/drivers/parisc/pdc_stable.c 2009-12-02 22:51:21.000000000 -0500
12316 -+++ linux-2.6.32.48/drivers/parisc/pdc_stable.c 2011-11-12 12:46:45.000000000 -0500
12317 +diff -urNp linux-2.6.32.46/drivers/parisc/pdc_stable.c linux-2.6.32.46/drivers/parisc/pdc_stable.c
12318 +--- linux-2.6.32.46/drivers/parisc/pdc_stable.c 2011-03-27 14:31:47.000000000 -0400
12319 ++++ linux-2.6.32.46/drivers/parisc/pdc_stable.c 2011-04-17 15:56:46.000000000 -0400
12320 @@ -481,7 +481,7 @@ pdcspath_attr_store(struct kobject *kobj
12321 return ret;
12322 }
12323 @@ -36419,9 +36442,9 @@ diff -urNp linux-2.6.32.48/drivers/parisc/pdc_stable.c linux-2.6.32.48/drivers/p
12324 .show = pdcspath_attr_show,
12325 .store = pdcspath_attr_store,
12326 };
12327 -diff -urNp linux-2.6.32.48/drivers/parport/procfs.c linux-2.6.32.48/drivers/parport/procfs.c
12328 ---- linux-2.6.32.48/drivers/parport/procfs.c 2009-12-02 22:51:21.000000000 -0500
12329 -+++ linux-2.6.32.48/drivers/parport/procfs.c 2011-11-12 12:46:45.000000000 -0500
12330 +diff -urNp linux-2.6.32.46/drivers/parport/procfs.c linux-2.6.32.46/drivers/parport/procfs.c
12331 +--- linux-2.6.32.46/drivers/parport/procfs.c 2011-03-27 14:31:47.000000000 -0400
12332 ++++ linux-2.6.32.46/drivers/parport/procfs.c 2011-04-17 15:56:46.000000000 -0400
12333 @@ -64,7 +64,7 @@ static int do_active_device(ctl_table *t
12334
12335 *ppos += len;
12336 @@ -36440,9 +36463,9 @@ diff -urNp linux-2.6.32.48/drivers/parport/procfs.c linux-2.6.32.48/drivers/parp
12337 }
12338 #endif /* IEEE1284.3 support. */
12339
12340 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c
12341 ---- linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c 2011-11-12 12:44:29.000000000 -0500
12342 -+++ linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c 2011-11-12 12:46:45.000000000 -0500
12343 +diff -urNp linux-2.6.32.46/drivers/pci/hotplug/acpiphp_glue.c linux-2.6.32.46/drivers/pci/hotplug/acpiphp_glue.c
12344 +--- linux-2.6.32.46/drivers/pci/hotplug/acpiphp_glue.c 2011-03-27 14:31:47.000000000 -0400
12345 ++++ linux-2.6.32.46/drivers/pci/hotplug/acpiphp_glue.c 2011-04-17 15:56:46.000000000 -0400
12346 @@ -111,7 +111,7 @@ static int post_dock_fixups(struct notif
12347 }
12348
12349 @@ -36452,9 +36475,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c linux-2.6.32.48/dr
12350 .handler = handle_hotplug_event_func,
12351 };
12352
12353 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h
12354 ---- linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h 2009-12-02 22:51:21.000000000 -0500
12355 -+++ linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h 2011-11-12 12:46:45.000000000 -0500
12356 +diff -urNp linux-2.6.32.46/drivers/pci/hotplug/cpci_hotplug.h linux-2.6.32.46/drivers/pci/hotplug/cpci_hotplug.h
12357 +--- linux-2.6.32.46/drivers/pci/hotplug/cpci_hotplug.h 2011-03-27 14:31:47.000000000 -0400
12358 ++++ linux-2.6.32.46/drivers/pci/hotplug/cpci_hotplug.h 2011-08-05 20:33:55.000000000 -0400
12359 @@ -59,7 +59,7 @@ struct cpci_hp_controller_ops {
12360 int (*hardware_test) (struct slot* slot, u32 value);
12361 u8 (*get_power) (struct slot* slot);
12362 @@ -36464,9 +36487,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h linux-2.6.32.48/dr
12363
12364 struct cpci_hp_controller {
12365 unsigned int irq;
12366 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c
12367 ---- linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c 2009-12-02 22:51:21.000000000 -0500
12368 -+++ linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c 2011-11-12 12:46:45.000000000 -0500
12369 +diff -urNp linux-2.6.32.46/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.32.46/drivers/pci/hotplug/cpqphp_nvram.c
12370 +--- linux-2.6.32.46/drivers/pci/hotplug/cpqphp_nvram.c 2011-03-27 14:31:47.000000000 -0400
12371 ++++ linux-2.6.32.46/drivers/pci/hotplug/cpqphp_nvram.c 2011-04-17 15:56:46.000000000 -0400
12372 @@ -428,9 +428,13 @@ static u32 store_HRT (void __iomem *rom_
12373
12374 void compaq_nvram_init (void __iomem *rom_start)
12375 @@ -36481,9 +36504,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.32.48/dr
12376 dbg("int15 entry = %p\n", compaq_int15_entry_point);
12377
12378 /* initialize our int15 lock */
12379 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/fakephp.c linux-2.6.32.48/drivers/pci/hotplug/fakephp.c
12380 ---- linux-2.6.32.48/drivers/pci/hotplug/fakephp.c 2009-12-02 22:51:21.000000000 -0500
12381 -+++ linux-2.6.32.48/drivers/pci/hotplug/fakephp.c 2011-11-12 12:46:45.000000000 -0500
12382 +diff -urNp linux-2.6.32.46/drivers/pci/hotplug/fakephp.c linux-2.6.32.46/drivers/pci/hotplug/fakephp.c
12383 +--- linux-2.6.32.46/drivers/pci/hotplug/fakephp.c 2011-03-27 14:31:47.000000000 -0400
12384 ++++ linux-2.6.32.46/drivers/pci/hotplug/fakephp.c 2011-04-17 15:56:46.000000000 -0400
12385 @@ -73,7 +73,7 @@ static void legacy_release(struct kobjec
12386 }
12387
12388 @@ -36493,9 +36516,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/hotplug/fakephp.c linux-2.6.32.48/drivers
12389 .store = legacy_store, .show = legacy_show
12390 },
12391 .release = &legacy_release,
12392 -diff -urNp linux-2.6.32.48/drivers/pci/intel-iommu.c linux-2.6.32.48/drivers/pci/intel-iommu.c
12393 ---- linux-2.6.32.48/drivers/pci/intel-iommu.c 2011-11-12 12:44:29.000000000 -0500
12394 -+++ linux-2.6.32.48/drivers/pci/intel-iommu.c 2011-11-12 12:46:45.000000000 -0500
12395 +diff -urNp linux-2.6.32.46/drivers/pci/intel-iommu.c linux-2.6.32.46/drivers/pci/intel-iommu.c
12396 +--- linux-2.6.32.46/drivers/pci/intel-iommu.c 2011-05-10 22:12:01.000000000 -0400
12397 ++++ linux-2.6.32.46/drivers/pci/intel-iommu.c 2011-05-10 22:12:33.000000000 -0400
12398 @@ -2643,7 +2643,7 @@ error:
12399 return 0;
12400 }
12401 @@ -36565,9 +36588,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/intel-iommu.c linux-2.6.32.48/drivers/pci
12402 .alloc_coherent = intel_alloc_coherent,
12403 .free_coherent = intel_free_coherent,
12404 .map_sg = intel_map_sg,
12405 -diff -urNp linux-2.6.32.48/drivers/pci/pcie/aspm.c linux-2.6.32.48/drivers/pci/pcie/aspm.c
12406 ---- linux-2.6.32.48/drivers/pci/pcie/aspm.c 2009-12-02 22:51:21.000000000 -0500
12407 -+++ linux-2.6.32.48/drivers/pci/pcie/aspm.c 2011-11-12 12:46:45.000000000 -0500
12408 +diff -urNp linux-2.6.32.46/drivers/pci/pcie/aspm.c linux-2.6.32.46/drivers/pci/pcie/aspm.c
12409 +--- linux-2.6.32.46/drivers/pci/pcie/aspm.c 2011-03-27 14:31:47.000000000 -0400
12410 ++++ linux-2.6.32.46/drivers/pci/pcie/aspm.c 2011-04-17 15:56:46.000000000 -0400
12411 @@ -27,9 +27,9 @@
12412 #define MODULE_PARAM_PREFIX "pcie_aspm."
12413
12414 @@ -36581,9 +36604,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/pcie/aspm.c linux-2.6.32.48/drivers/pci/p
12415 #define ASPM_STATE_L0S (ASPM_STATE_L0S_UP | ASPM_STATE_L0S_DW)
12416 #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1)
12417
12418 -diff -urNp linux-2.6.32.48/drivers/pci/probe.c linux-2.6.32.48/drivers/pci/probe.c
12419 ---- linux-2.6.32.48/drivers/pci/probe.c 2009-12-02 22:51:21.000000000 -0500
12420 -+++ linux-2.6.32.48/drivers/pci/probe.c 2011-11-12 12:46:45.000000000 -0500
12421 +diff -urNp linux-2.6.32.46/drivers/pci/probe.c linux-2.6.32.46/drivers/pci/probe.c
12422 +--- linux-2.6.32.46/drivers/pci/probe.c 2011-03-27 14:31:47.000000000 -0400
12423 ++++ linux-2.6.32.46/drivers/pci/probe.c 2011-04-17 15:56:46.000000000 -0400
12424 @@ -62,14 +62,14 @@ static ssize_t pci_bus_show_cpuaffinity(
12425 return ret;
12426 }
12427 @@ -36601,9 +36624,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/probe.c linux-2.6.32.48/drivers/pci/probe
12428 struct device_attribute *attr,
12429 char *buf)
12430 {
12431 -diff -urNp linux-2.6.32.48/drivers/pci/proc.c linux-2.6.32.48/drivers/pci/proc.c
12432 ---- linux-2.6.32.48/drivers/pci/proc.c 2011-11-12 12:44:29.000000000 -0500
12433 -+++ linux-2.6.32.48/drivers/pci/proc.c 2011-11-12 12:46:45.000000000 -0500
12434 +diff -urNp linux-2.6.32.46/drivers/pci/proc.c linux-2.6.32.46/drivers/pci/proc.c
12435 +--- linux-2.6.32.46/drivers/pci/proc.c 2011-03-27 14:31:47.000000000 -0400
12436 ++++ linux-2.6.32.46/drivers/pci/proc.c 2011-04-17 15:56:46.000000000 -0400
12437 @@ -480,7 +480,16 @@ static const struct file_operations proc
12438 static int __init pci_proc_init(void)
12439 {
12440 @@ -36621,9 +36644,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/proc.c linux-2.6.32.48/drivers/pci/proc.c
12441 proc_create("devices", 0, proc_bus_pci_dir,
12442 &proc_bus_pci_dev_operations);
12443 proc_initialized = 1;
12444 -diff -urNp linux-2.6.32.48/drivers/pci/slot.c linux-2.6.32.48/drivers/pci/slot.c
12445 ---- linux-2.6.32.48/drivers/pci/slot.c 2009-12-02 22:51:21.000000000 -0500
12446 -+++ linux-2.6.32.48/drivers/pci/slot.c 2011-11-12 12:46:45.000000000 -0500
12447 +diff -urNp linux-2.6.32.46/drivers/pci/slot.c linux-2.6.32.46/drivers/pci/slot.c
12448 +--- linux-2.6.32.46/drivers/pci/slot.c 2011-03-27 14:31:47.000000000 -0400
12449 ++++ linux-2.6.32.46/drivers/pci/slot.c 2011-04-17 15:56:46.000000000 -0400
12450 @@ -29,7 +29,7 @@ static ssize_t pci_slot_attr_store(struc
12451 return attribute->store ? attribute->store(slot, buf, len) : -EIO;
12452 }
12453 @@ -36633,9 +36656,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/slot.c linux-2.6.32.48/drivers/pci/slot.c
12454 .show = pci_slot_attr_show,
12455 .store = pci_slot_attr_store,
12456 };
12457 -diff -urNp linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c
12458 ---- linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c 2009-12-02 22:51:21.000000000 -0500
12459 -+++ linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c 2011-11-12 12:46:45.000000000 -0500
12460 +diff -urNp linux-2.6.32.46/drivers/pcmcia/pcmcia_ioctl.c linux-2.6.32.46/drivers/pcmcia/pcmcia_ioctl.c
12461 +--- linux-2.6.32.46/drivers/pcmcia/pcmcia_ioctl.c 2011-03-27 14:31:47.000000000 -0400
12462 ++++ linux-2.6.32.46/drivers/pcmcia/pcmcia_ioctl.c 2011-04-17 15:56:46.000000000 -0400
12463 @@ -819,7 +819,7 @@ static int ds_ioctl(struct inode * inode
12464 return -EFAULT;
12465 }
12466 @@ -36645,9 +36668,9 @@ diff -urNp linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c linux-2.6.32.48/drivers
12467 if (!buf)
12468 return -ENOMEM;
12469
12470 -diff -urNp linux-2.6.32.48/drivers/platform/x86/acer-wmi.c linux-2.6.32.48/drivers/platform/x86/acer-wmi.c
12471 ---- linux-2.6.32.48/drivers/platform/x86/acer-wmi.c 2011-11-12 12:44:29.000000000 -0500
12472 -+++ linux-2.6.32.48/drivers/platform/x86/acer-wmi.c 2011-11-12 12:46:45.000000000 -0500
12473 +diff -urNp linux-2.6.32.46/drivers/platform/x86/acer-wmi.c linux-2.6.32.46/drivers/platform/x86/acer-wmi.c
12474 +--- linux-2.6.32.46/drivers/platform/x86/acer-wmi.c 2011-03-27 14:31:47.000000000 -0400
12475 ++++ linux-2.6.32.46/drivers/platform/x86/acer-wmi.c 2011-04-17 15:56:46.000000000 -0400
12476 @@ -918,7 +918,7 @@ static int update_bl_status(struct backl
12477 return 0;
12478 }
12479 @@ -36657,9 +36680,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/acer-wmi.c linux-2.6.32.48/drive
12480 .get_brightness = read_brightness,
12481 .update_status = update_bl_status,
12482 };
12483 -diff -urNp linux-2.6.32.48/drivers/platform/x86/asus_acpi.c linux-2.6.32.48/drivers/platform/x86/asus_acpi.c
12484 ---- linux-2.6.32.48/drivers/platform/x86/asus_acpi.c 2011-11-12 12:44:29.000000000 -0500
12485 -+++ linux-2.6.32.48/drivers/platform/x86/asus_acpi.c 2011-11-12 12:46:45.000000000 -0500
12486 +diff -urNp linux-2.6.32.46/drivers/platform/x86/asus_acpi.c linux-2.6.32.46/drivers/platform/x86/asus_acpi.c
12487 +--- linux-2.6.32.46/drivers/platform/x86/asus_acpi.c 2011-03-27 14:31:47.000000000 -0400
12488 ++++ linux-2.6.32.46/drivers/platform/x86/asus_acpi.c 2011-04-17 15:56:46.000000000 -0400
12489 @@ -1396,7 +1396,7 @@ static int asus_hotk_remove(struct acpi_
12490 return 0;
12491 }
12492 @@ -36669,9 +36692,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/asus_acpi.c linux-2.6.32.48/driv
12493 .get_brightness = read_brightness,
12494 .update_status = set_brightness_status,
12495 };
12496 -diff -urNp linux-2.6.32.48/drivers/platform/x86/asus-laptop.c linux-2.6.32.48/drivers/platform/x86/asus-laptop.c
12497 ---- linux-2.6.32.48/drivers/platform/x86/asus-laptop.c 2011-11-12 12:44:29.000000000 -0500
12498 -+++ linux-2.6.32.48/drivers/platform/x86/asus-laptop.c 2011-11-12 12:46:45.000000000 -0500
12499 +diff -urNp linux-2.6.32.46/drivers/platform/x86/asus-laptop.c linux-2.6.32.46/drivers/platform/x86/asus-laptop.c
12500 +--- linux-2.6.32.46/drivers/platform/x86/asus-laptop.c 2011-03-27 14:31:47.000000000 -0400
12501 ++++ linux-2.6.32.46/drivers/platform/x86/asus-laptop.c 2011-04-17 15:56:46.000000000 -0400
12502 @@ -250,7 +250,7 @@ static struct backlight_device *asus_bac
12503 */
12504 static int read_brightness(struct backlight_device *bd);
12505 @@ -36681,9 +36704,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/asus-laptop.c linux-2.6.32.48/dr
12506 .get_brightness = read_brightness,
12507 .update_status = update_bl_status,
12508 };
12509 -diff -urNp linux-2.6.32.48/drivers/platform/x86/compal-laptop.c linux-2.6.32.48/drivers/platform/x86/compal-laptop.c
12510 ---- linux-2.6.32.48/drivers/platform/x86/compal-laptop.c 2009-12-02 22:51:21.000000000 -0500
12511 -+++ linux-2.6.32.48/drivers/platform/x86/compal-laptop.c 2011-11-12 12:46:45.000000000 -0500
12512 +diff -urNp linux-2.6.32.46/drivers/platform/x86/compal-laptop.c linux-2.6.32.46/drivers/platform/x86/compal-laptop.c
12513 +--- linux-2.6.32.46/drivers/platform/x86/compal-laptop.c 2011-03-27 14:31:47.000000000 -0400
12514 ++++ linux-2.6.32.46/drivers/platform/x86/compal-laptop.c 2011-04-17 15:56:46.000000000 -0400
12515 @@ -163,7 +163,7 @@ static int bl_update_status(struct backl
12516 return set_lcd_level(b->props.brightness);
12517 }
12518 @@ -36693,9 +36716,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/compal-laptop.c linux-2.6.32.48/
12519 .get_brightness = bl_get_brightness,
12520 .update_status = bl_update_status,
12521 };
12522 -diff -urNp linux-2.6.32.48/drivers/platform/x86/dell-laptop.c linux-2.6.32.48/drivers/platform/x86/dell-laptop.c
12523 ---- linux-2.6.32.48/drivers/platform/x86/dell-laptop.c 2011-11-12 12:44:29.000000000 -0500
12524 -+++ linux-2.6.32.48/drivers/platform/x86/dell-laptop.c 2011-11-12 12:46:45.000000000 -0500
12525 +diff -urNp linux-2.6.32.46/drivers/platform/x86/dell-laptop.c linux-2.6.32.46/drivers/platform/x86/dell-laptop.c
12526 +--- linux-2.6.32.46/drivers/platform/x86/dell-laptop.c 2011-05-10 22:12:01.000000000 -0400
12527 ++++ linux-2.6.32.46/drivers/platform/x86/dell-laptop.c 2011-05-10 22:12:33.000000000 -0400
12528 @@ -318,7 +318,7 @@ static int dell_get_intensity(struct bac
12529 return buffer.output[1];
12530 }
12531 @@ -36705,9 +36728,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/dell-laptop.c linux-2.6.32.48/dr
12532 .get_brightness = dell_get_intensity,
12533 .update_status = dell_send_intensity,
12534 };
12535 -diff -urNp linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c
12536 ---- linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c 2011-11-12 12:44:29.000000000 -0500
12537 -+++ linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c 2011-11-12 12:46:45.000000000 -0500
12538 +diff -urNp linux-2.6.32.46/drivers/platform/x86/eeepc-laptop.c linux-2.6.32.46/drivers/platform/x86/eeepc-laptop.c
12539 +--- linux-2.6.32.46/drivers/platform/x86/eeepc-laptop.c 2011-03-27 14:31:47.000000000 -0400
12540 ++++ linux-2.6.32.46/drivers/platform/x86/eeepc-laptop.c 2011-04-17 15:56:46.000000000 -0400
12541 @@ -245,7 +245,7 @@ static struct device *eeepc_hwmon_device
12542 */
12543 static int read_brightness(struct backlight_device *bd);
12544 @@ -36717,9 +36740,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c linux-2.6.32.48/d
12545 .get_brightness = read_brightness,
12546 .update_status = update_bl_status,
12547 };
12548 -diff -urNp linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c
12549 ---- linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c 2009-12-02 22:51:21.000000000 -0500
12550 -+++ linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c 2011-11-12 12:46:45.000000000 -0500
12551 +diff -urNp linux-2.6.32.46/drivers/platform/x86/fujitsu-laptop.c linux-2.6.32.46/drivers/platform/x86/fujitsu-laptop.c
12552 +--- linux-2.6.32.46/drivers/platform/x86/fujitsu-laptop.c 2011-03-27 14:31:47.000000000 -0400
12553 ++++ linux-2.6.32.46/drivers/platform/x86/fujitsu-laptop.c 2011-04-17 15:56:46.000000000 -0400
12554 @@ -436,7 +436,7 @@ static int bl_update_status(struct backl
12555 return ret;
12556 }
12557 @@ -36729,9 +36752,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c linux-2.6.32.48
12558 .get_brightness = bl_get_brightness,
12559 .update_status = bl_update_status,
12560 };
12561 -diff -urNp linux-2.6.32.48/drivers/platform/x86/msi-laptop.c linux-2.6.32.48/drivers/platform/x86/msi-laptop.c
12562 ---- linux-2.6.32.48/drivers/platform/x86/msi-laptop.c 2009-12-02 22:51:21.000000000 -0500
12563 -+++ linux-2.6.32.48/drivers/platform/x86/msi-laptop.c 2011-11-12 12:46:45.000000000 -0500
12564 +diff -urNp linux-2.6.32.46/drivers/platform/x86/msi-laptop.c linux-2.6.32.46/drivers/platform/x86/msi-laptop.c
12565 +--- linux-2.6.32.46/drivers/platform/x86/msi-laptop.c 2011-03-27 14:31:47.000000000 -0400
12566 ++++ linux-2.6.32.46/drivers/platform/x86/msi-laptop.c 2011-04-17 15:56:46.000000000 -0400
12567 @@ -161,7 +161,7 @@ static int bl_update_status(struct backl
12568 return set_lcd_level(b->props.brightness);
12569 }
12570 @@ -36741,9 +36764,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/msi-laptop.c linux-2.6.32.48/dri
12571 .get_brightness = bl_get_brightness,
12572 .update_status = bl_update_status,
12573 };
12574 -diff -urNp linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c
12575 ---- linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c 2009-12-02 22:51:21.000000000 -0500
12576 -+++ linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c 2011-11-12 12:46:45.000000000 -0500
12577 +diff -urNp linux-2.6.32.46/drivers/platform/x86/panasonic-laptop.c linux-2.6.32.46/drivers/platform/x86/panasonic-laptop.c
12578 +--- linux-2.6.32.46/drivers/platform/x86/panasonic-laptop.c 2011-03-27 14:31:47.000000000 -0400
12579 ++++ linux-2.6.32.46/drivers/platform/x86/panasonic-laptop.c 2011-04-17 15:56:46.000000000 -0400
12580 @@ -352,7 +352,7 @@ static int bl_set_status(struct backligh
12581 return acpi_pcc_write_sset(pcc, SINF_DC_CUR_BRIGHT, bright);
12582 }
12583 @@ -36753,9 +36776,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c linux-2.6.32.
12584 .get_brightness = bl_get,
12585 .update_status = bl_set_status,
12586 };
12587 -diff -urNp linux-2.6.32.48/drivers/platform/x86/sony-laptop.c linux-2.6.32.48/drivers/platform/x86/sony-laptop.c
12588 ---- linux-2.6.32.48/drivers/platform/x86/sony-laptop.c 2009-12-02 22:51:21.000000000 -0500
12589 -+++ linux-2.6.32.48/drivers/platform/x86/sony-laptop.c 2011-11-12 12:46:45.000000000 -0500
12590 +diff -urNp linux-2.6.32.46/drivers/platform/x86/sony-laptop.c linux-2.6.32.46/drivers/platform/x86/sony-laptop.c
12591 +--- linux-2.6.32.46/drivers/platform/x86/sony-laptop.c 2011-03-27 14:31:47.000000000 -0400
12592 ++++ linux-2.6.32.46/drivers/platform/x86/sony-laptop.c 2011-04-17 15:56:46.000000000 -0400
12593 @@ -850,7 +850,7 @@ static int sony_backlight_get_brightness
12594 }
12595
12596 @@ -36765,10 +36788,10 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/sony-laptop.c linux-2.6.32.48/dr
12597 .update_status = sony_backlight_update_status,
12598 .get_brightness = sony_backlight_get_brightness,
12599 };
12600 -diff -urNp linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c
12601 ---- linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c 2011-11-12 12:44:29.000000000 -0500
12602 -+++ linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c 2011-11-12 12:46:45.000000000 -0500
12603 -@@ -2139,7 +2139,7 @@ static int hotkey_mask_get(void)
12604 +diff -urNp linux-2.6.32.46/drivers/platform/x86/thinkpad_acpi.c linux-2.6.32.46/drivers/platform/x86/thinkpad_acpi.c
12605 +--- linux-2.6.32.46/drivers/platform/x86/thinkpad_acpi.c 2011-03-27 14:31:47.000000000 -0400
12606 ++++ linux-2.6.32.46/drivers/platform/x86/thinkpad_acpi.c 2011-08-05 20:33:55.000000000 -0400
12607 +@@ -2137,7 +2137,7 @@ static int hotkey_mask_get(void)
12608 return 0;
12609 }
12610
12611 @@ -36777,7 +36800,7 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c linux-2.6.32.48/
12612 {
12613 /* log only what the user can fix... */
12614 const u32 wantedmask = hotkey_driver_mask &
12615 -@@ -6125,7 +6125,7 @@ static void tpacpi_brightness_notify_cha
12616 +@@ -6122,7 +6122,7 @@ static void tpacpi_brightness_notify_cha
12617 BACKLIGHT_UPDATE_HOTKEY);
12618 }
12619
12620 @@ -36786,9 +36809,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c linux-2.6.32.48/
12621 .get_brightness = brightness_get,
12622 .update_status = brightness_update_status,
12623 };
12624 -diff -urNp linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c
12625 ---- linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c 2009-12-02 22:51:21.000000000 -0500
12626 -+++ linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c 2011-11-12 12:46:45.000000000 -0500
12627 +diff -urNp linux-2.6.32.46/drivers/platform/x86/toshiba_acpi.c linux-2.6.32.46/drivers/platform/x86/toshiba_acpi.c
12628 +--- linux-2.6.32.46/drivers/platform/x86/toshiba_acpi.c 2011-03-27 14:31:47.000000000 -0400
12629 ++++ linux-2.6.32.46/drivers/platform/x86/toshiba_acpi.c 2011-04-17 15:56:46.000000000 -0400
12630 @@ -671,7 +671,7 @@ static acpi_status remove_device(void)
12631 return AE_OK;
12632 }
12633 @@ -36798,9 +36821,9 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c linux-2.6.32.48/d
12634 .get_brightness = get_lcd,
12635 .update_status = set_lcd_status,
12636 };
12637 -diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c
12638 ---- linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c 2009-12-02 22:51:21.000000000 -0500
12639 -+++ linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c 2011-11-12 12:46:45.000000000 -0500
12640 +diff -urNp linux-2.6.32.46/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.46/drivers/pnp/pnpbios/bioscalls.c
12641 +--- linux-2.6.32.46/drivers/pnp/pnpbios/bioscalls.c 2011-03-27 14:31:47.000000000 -0400
12642 ++++ linux-2.6.32.46/drivers/pnp/pnpbios/bioscalls.c 2011-04-17 15:56:46.000000000 -0400
12643 @@ -60,7 +60,7 @@ do { \
12644 set_desc_limit(&gdt[(selname) >> 3], (size) - 1); \
12645 } while(0)
12646 @@ -36857,9 +36880,9 @@ diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drive
12647 +
12648 + pax_close_kernel();
12649 }
12650 -diff -urNp linux-2.6.32.48/drivers/pnp/resource.c linux-2.6.32.48/drivers/pnp/resource.c
12651 ---- linux-2.6.32.48/drivers/pnp/resource.c 2009-12-02 22:51:21.000000000 -0500
12652 -+++ linux-2.6.32.48/drivers/pnp/resource.c 2011-11-12 12:46:45.000000000 -0500
12653 +diff -urNp linux-2.6.32.46/drivers/pnp/resource.c linux-2.6.32.46/drivers/pnp/resource.c
12654 +--- linux-2.6.32.46/drivers/pnp/resource.c 2011-03-27 14:31:47.000000000 -0400
12655 ++++ linux-2.6.32.46/drivers/pnp/resource.c 2011-04-17 15:56:46.000000000 -0400
12656 @@ -355,7 +355,7 @@ int pnp_check_irq(struct pnp_dev *dev, s
12657 return 1;
12658
12659 @@ -36878,9 +36901,9 @@ diff -urNp linux-2.6.32.48/drivers/pnp/resource.c linux-2.6.32.48/drivers/pnp/re
12660 return 0;
12661
12662 /* check if the resource is reserved */
12663 -diff -urNp linux-2.6.32.48/drivers/power/bq27x00_battery.c linux-2.6.32.48/drivers/power/bq27x00_battery.c
12664 ---- linux-2.6.32.48/drivers/power/bq27x00_battery.c 2009-12-02 22:51:21.000000000 -0500
12665 -+++ linux-2.6.32.48/drivers/power/bq27x00_battery.c 2011-11-12 12:46:45.000000000 -0500
12666 +diff -urNp linux-2.6.32.46/drivers/power/bq27x00_battery.c linux-2.6.32.46/drivers/power/bq27x00_battery.c
12667 +--- linux-2.6.32.46/drivers/power/bq27x00_battery.c 2011-03-27 14:31:47.000000000 -0400
12668 ++++ linux-2.6.32.46/drivers/power/bq27x00_battery.c 2011-08-05 20:33:55.000000000 -0400
12669 @@ -44,7 +44,7 @@ struct bq27x00_device_info;
12670 struct bq27x00_access_methods {
12671 int (*read)(u8 reg, int *rt_value, int b_single,
12672 @@ -36890,9 +36913,9 @@ diff -urNp linux-2.6.32.48/drivers/power/bq27x00_battery.c linux-2.6.32.48/drive
12673
12674 struct bq27x00_device_info {
12675 struct device *dev;
12676 -diff -urNp linux-2.6.32.48/drivers/rtc/rtc-dev.c linux-2.6.32.48/drivers/rtc/rtc-dev.c
12677 ---- linux-2.6.32.48/drivers/rtc/rtc-dev.c 2009-12-02 22:51:21.000000000 -0500
12678 -+++ linux-2.6.32.48/drivers/rtc/rtc-dev.c 2011-11-12 12:46:45.000000000 -0500
12679 +diff -urNp linux-2.6.32.46/drivers/rtc/rtc-dev.c linux-2.6.32.46/drivers/rtc/rtc-dev.c
12680 +--- linux-2.6.32.46/drivers/rtc/rtc-dev.c 2011-03-27 14:31:47.000000000 -0400
12681 ++++ linux-2.6.32.46/drivers/rtc/rtc-dev.c 2011-04-17 15:56:46.000000000 -0400
12682 @@ -14,6 +14,7 @@
12683 #include <linux/module.h>
12684 #include <linux/rtc.h>
12685 @@ -36910,9 +36933,9 @@ diff -urNp linux-2.6.32.48/drivers/rtc/rtc-dev.c linux-2.6.32.48/drivers/rtc/rtc
12686 return rtc_set_time(rtc, &tm);
12687
12688 case RTC_PIE_ON:
12689 -diff -urNp linux-2.6.32.48/drivers/s390/cio/qdio_perf.c linux-2.6.32.48/drivers/s390/cio/qdio_perf.c
12690 ---- linux-2.6.32.48/drivers/s390/cio/qdio_perf.c 2009-12-02 22:51:21.000000000 -0500
12691 -+++ linux-2.6.32.48/drivers/s390/cio/qdio_perf.c 2011-11-12 12:46:45.000000000 -0500
12692 +diff -urNp linux-2.6.32.46/drivers/s390/cio/qdio_perf.c linux-2.6.32.46/drivers/s390/cio/qdio_perf.c
12693 +--- linux-2.6.32.46/drivers/s390/cio/qdio_perf.c 2011-03-27 14:31:47.000000000 -0400
12694 ++++ linux-2.6.32.46/drivers/s390/cio/qdio_perf.c 2011-04-17 15:56:46.000000000 -0400
12695 @@ -31,51 +31,51 @@ static struct proc_dir_entry *qdio_perf_
12696 static int qdio_perf_proc_show(struct seq_file *m, void *v)
12697 {
12698 @@ -36988,9 +37011,9 @@ diff -urNp linux-2.6.32.48/drivers/s390/cio/qdio_perf.c linux-2.6.32.48/drivers/
12699 seq_printf(m, "\n");
12700 return 0;
12701 }
12702 -diff -urNp linux-2.6.32.48/drivers/s390/cio/qdio_perf.h linux-2.6.32.48/drivers/s390/cio/qdio_perf.h
12703 ---- linux-2.6.32.48/drivers/s390/cio/qdio_perf.h 2009-12-02 22:51:21.000000000 -0500
12704 -+++ linux-2.6.32.48/drivers/s390/cio/qdio_perf.h 2011-11-12 12:46:45.000000000 -0500
12705 +diff -urNp linux-2.6.32.46/drivers/s390/cio/qdio_perf.h linux-2.6.32.46/drivers/s390/cio/qdio_perf.h
12706 +--- linux-2.6.32.46/drivers/s390/cio/qdio_perf.h 2011-03-27 14:31:47.000000000 -0400
12707 ++++ linux-2.6.32.46/drivers/s390/cio/qdio_perf.h 2011-04-17 15:56:46.000000000 -0400
12708 @@ -13,46 +13,46 @@
12709
12710 struct qdio_perf_stats {
12711 @@ -37063,9 +37086,9 @@ diff -urNp linux-2.6.32.48/drivers/s390/cio/qdio_perf.h linux-2.6.32.48/drivers/
12712 }
12713
12714 int qdio_setup_perf_stats(void);
12715 -diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h
12716 ---- linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h 2009-12-02 22:51:21.000000000 -0500
12717 -+++ linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h 2011-11-12 12:46:45.000000000 -0500
12718 +diff -urNp linux-2.6.32.46/drivers/scsi/aacraid/aacraid.h linux-2.6.32.46/drivers/scsi/aacraid/aacraid.h
12719 +--- linux-2.6.32.46/drivers/scsi/aacraid/aacraid.h 2011-03-27 14:31:47.000000000 -0400
12720 ++++ linux-2.6.32.46/drivers/scsi/aacraid/aacraid.h 2011-08-05 20:33:55.000000000 -0400
12721 @@ -471,7 +471,7 @@ struct adapter_ops
12722 int (*adapter_scsi)(struct fib * fib, struct scsi_cmnd * cmd);
12723 /* Administrative operations */
12724 @@ -37075,9 +37098,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h linux-2.6.32.48/driver
12725
12726 /*
12727 * Define which interrupt handler needs to be installed
12728 -diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c
12729 ---- linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c 2011-11-12 12:44:29.000000000 -0500
12730 -+++ linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c 2011-11-12 12:46:45.000000000 -0500
12731 +diff -urNp linux-2.6.32.46/drivers/scsi/aacraid/commctrl.c linux-2.6.32.46/drivers/scsi/aacraid/commctrl.c
12732 +--- linux-2.6.32.46/drivers/scsi/aacraid/commctrl.c 2011-03-27 14:31:47.000000000 -0400
12733 ++++ linux-2.6.32.46/drivers/scsi/aacraid/commctrl.c 2011-05-16 21:46:57.000000000 -0400
12734 @@ -481,6 +481,7 @@ static int aac_send_raw_srb(struct aac_d
12735 u32 actual_fibsize64, actual_fibsize = 0;
12736 int i;
12737 @@ -37086,9 +37109,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c linux-2.6.32.48/drive
12738
12739 if (dev->in_reset) {
12740 dprintk((KERN_DEBUG"aacraid: send raw srb -EBUSY\n"));
12741 -diff -urNp linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c
12742 ---- linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c 2009-12-02 22:51:21.000000000 -0500
12743 -+++ linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c 2011-11-12 12:46:45.000000000 -0500
12744 +diff -urNp linux-2.6.32.46/drivers/scsi/aic94xx/aic94xx_init.c linux-2.6.32.46/drivers/scsi/aic94xx/aic94xx_init.c
12745 +--- linux-2.6.32.46/drivers/scsi/aic94xx/aic94xx_init.c 2011-03-27 14:31:47.000000000 -0400
12746 ++++ linux-2.6.32.46/drivers/scsi/aic94xx/aic94xx_init.c 2011-04-17 15:56:46.000000000 -0400
12747 @@ -485,7 +485,7 @@ static ssize_t asd_show_update_bios(stru
12748 flash_error_table[i].reason);
12749 }
12750 @@ -37098,9 +37121,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c linux-2.6.32.48/d
12751 asd_show_update_bios, asd_store_update_bios);
12752
12753 static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
12754 -diff -urNp linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h
12755 ---- linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h 2009-12-02 22:51:21.000000000 -0500
12756 -+++ linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h 2011-11-12 12:46:45.000000000 -0500
12757 +diff -urNp linux-2.6.32.46/drivers/scsi/bfa/bfa_iocfc.h linux-2.6.32.46/drivers/scsi/bfa/bfa_iocfc.h
12758 +--- linux-2.6.32.46/drivers/scsi/bfa/bfa_iocfc.h 2011-03-27 14:31:47.000000000 -0400
12759 ++++ linux-2.6.32.46/drivers/scsi/bfa/bfa_iocfc.h 2011-08-05 20:33:55.000000000 -0400
12760 @@ -61,7 +61,7 @@ struct bfa_hwif_s {
12761 void (*hw_isr_mode_set)(struct bfa_s *bfa, bfa_boolean_t msix);
12762 void (*hw_msix_getvecs)(struct bfa_s *bfa, u32 *vecmap,
12763 @@ -37110,9 +37133,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h linux-2.6.32.48/drivers/
12764 typedef void (*bfa_cb_iocfc_t) (void *cbarg, enum bfa_status status);
12765
12766 struct bfa_iocfc_s {
12767 -diff -urNp linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h
12768 ---- linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h 2009-12-02 22:51:21.000000000 -0500
12769 -+++ linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h 2011-11-12 12:46:45.000000000 -0500
12770 +diff -urNp linux-2.6.32.46/drivers/scsi/bfa/bfa_ioc.h linux-2.6.32.46/drivers/scsi/bfa/bfa_ioc.h
12771 +--- linux-2.6.32.46/drivers/scsi/bfa/bfa_ioc.h 2011-03-27 14:31:47.000000000 -0400
12772 ++++ linux-2.6.32.46/drivers/scsi/bfa/bfa_ioc.h 2011-08-05 20:33:55.000000000 -0400
12773 @@ -127,7 +127,7 @@ struct bfa_ioc_cbfn_s {
12774 bfa_ioc_disable_cbfn_t disable_cbfn;
12775 bfa_ioc_hbfail_cbfn_t hbfail_cbfn;
12776 @@ -37122,9 +37145,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h linux-2.6.32.48/drivers/sc
12777
12778 /**
12779 * Heartbeat failure notification queue element.
12780 -diff -urNp linux-2.6.32.48/drivers/scsi/BusLogic.c linux-2.6.32.48/drivers/scsi/BusLogic.c
12781 ---- linux-2.6.32.48/drivers/scsi/BusLogic.c 2009-12-02 22:51:21.000000000 -0500
12782 -+++ linux-2.6.32.48/drivers/scsi/BusLogic.c 2011-11-12 12:46:45.000000000 -0500
12783 +diff -urNp linux-2.6.32.46/drivers/scsi/BusLogic.c linux-2.6.32.46/drivers/scsi/BusLogic.c
12784 +--- linux-2.6.32.46/drivers/scsi/BusLogic.c 2011-03-27 14:31:47.000000000 -0400
12785 ++++ linux-2.6.32.46/drivers/scsi/BusLogic.c 2011-05-16 21:46:57.000000000 -0400
12786 @@ -961,6 +961,8 @@ static int __init BusLogic_InitializeFla
12787 static void __init BusLogic_InitializeProbeInfoList(struct BusLogic_HostAdapter
12788 *PrototypeHostAdapter)
12789 @@ -37134,9 +37157,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/BusLogic.c linux-2.6.32.48/drivers/scsi/
12790 /*
12791 If a PCI BIOS is present, interrogate it for MultiMaster and FlashPoint
12792 Host Adapters; otherwise, default to the standard ISA MultiMaster probe.
12793 -diff -urNp linux-2.6.32.48/drivers/scsi/dpt_i2o.c linux-2.6.32.48/drivers/scsi/dpt_i2o.c
12794 ---- linux-2.6.32.48/drivers/scsi/dpt_i2o.c 2009-12-02 22:51:21.000000000 -0500
12795 -+++ linux-2.6.32.48/drivers/scsi/dpt_i2o.c 2011-11-12 12:46:45.000000000 -0500
12796 +diff -urNp linux-2.6.32.46/drivers/scsi/dpt_i2o.c linux-2.6.32.46/drivers/scsi/dpt_i2o.c
12797 +--- linux-2.6.32.46/drivers/scsi/dpt_i2o.c 2011-03-27 14:31:47.000000000 -0400
12798 ++++ linux-2.6.32.46/drivers/scsi/dpt_i2o.c 2011-05-16 21:46:57.000000000 -0400
12799 @@ -1804,6 +1804,8 @@ static int adpt_i2o_passthru(adpt_hba* p
12800 dma_addr_t addr;
12801 ulong flags = 0;
12802 @@ -37155,9 +37178,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/dpt_i2o.c linux-2.6.32.48/drivers/scsi/d
12803 memset(msg, 0 , sizeof(msg));
12804 len = scsi_bufflen(cmd);
12805 direction = 0x00000000;
12806 -diff -urNp linux-2.6.32.48/drivers/scsi/eata.c linux-2.6.32.48/drivers/scsi/eata.c
12807 ---- linux-2.6.32.48/drivers/scsi/eata.c 2009-12-02 22:51:21.000000000 -0500
12808 -+++ linux-2.6.32.48/drivers/scsi/eata.c 2011-11-12 12:46:45.000000000 -0500
12809 +diff -urNp linux-2.6.32.46/drivers/scsi/eata.c linux-2.6.32.46/drivers/scsi/eata.c
12810 +--- linux-2.6.32.46/drivers/scsi/eata.c 2011-03-27 14:31:47.000000000 -0400
12811 ++++ linux-2.6.32.46/drivers/scsi/eata.c 2011-05-16 21:46:57.000000000 -0400
12812 @@ -1087,6 +1087,8 @@ static int port_detect(unsigned long por
12813 struct hostdata *ha;
12814 char name[16];
12815 @@ -37167,9 +37190,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/eata.c linux-2.6.32.48/drivers/scsi/eata
12816 sprintf(name, "%s%d", driver_name, j);
12817
12818 if (!request_region(port_base, REGION_SIZE, driver_name)) {
12819 -diff -urNp linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c
12820 ---- linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c 2009-12-02 22:51:21.000000000 -0500
12821 -+++ linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c 2011-11-12 12:46:45.000000000 -0500
12822 +diff -urNp linux-2.6.32.46/drivers/scsi/fcoe/libfcoe.c linux-2.6.32.46/drivers/scsi/fcoe/libfcoe.c
12823 +--- linux-2.6.32.46/drivers/scsi/fcoe/libfcoe.c 2011-03-27 14:31:47.000000000 -0400
12824 ++++ linux-2.6.32.46/drivers/scsi/fcoe/libfcoe.c 2011-05-16 21:46:57.000000000 -0400
12825 @@ -809,6 +809,8 @@ static void fcoe_ctlr_recv_els(struct fc
12826 size_t rlen;
12827 size_t dlen;
12828 @@ -37179,9 +37202,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c linux-2.6.32.48/drivers/s
12829 fiph = (struct fip_header *)skb->data;
12830 sub = fiph->fip_subcode;
12831 if (sub != FIP_SC_REQ && sub != FIP_SC_REP)
12832 -diff -urNp linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c
12833 ---- linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c 2009-12-02 22:51:21.000000000 -0500
12834 -+++ linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c 2011-11-12 12:46:45.000000000 -0500
12835 +diff -urNp linux-2.6.32.46/drivers/scsi/fnic/fnic_main.c linux-2.6.32.46/drivers/scsi/fnic/fnic_main.c
12836 +--- linux-2.6.32.46/drivers/scsi/fnic/fnic_main.c 2011-03-27 14:31:47.000000000 -0400
12837 ++++ linux-2.6.32.46/drivers/scsi/fnic/fnic_main.c 2011-08-05 20:33:55.000000000 -0400
12838 @@ -669,7 +669,7 @@ static int __devinit fnic_probe(struct p
12839 /* Start local port initiatialization */
12840
12841 @@ -37191,9 +37214,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c linux-2.6.32.48/drivers
12842
12843 lp->max_retry_count = fnic->config.flogi_retries;
12844 lp->max_rport_retry_count = fnic->config.plogi_retries;
12845 -diff -urNp linux-2.6.32.48/drivers/scsi/gdth.c linux-2.6.32.48/drivers/scsi/gdth.c
12846 ---- linux-2.6.32.48/drivers/scsi/gdth.c 2011-11-12 12:44:29.000000000 -0500
12847 -+++ linux-2.6.32.48/drivers/scsi/gdth.c 2011-11-12 12:46:45.000000000 -0500
12848 +diff -urNp linux-2.6.32.46/drivers/scsi/gdth.c linux-2.6.32.46/drivers/scsi/gdth.c
12849 +--- linux-2.6.32.46/drivers/scsi/gdth.c 2011-03-27 14:31:47.000000000 -0400
12850 ++++ linux-2.6.32.46/drivers/scsi/gdth.c 2011-05-16 21:46:57.000000000 -0400
12851 @@ -4102,6 +4102,8 @@ static int ioc_lockdrv(void __user *arg)
12852 ulong flags;
12853 gdth_ha_str *ha;
12854 @@ -37231,9 +37254,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/gdth.c linux-2.6.32.48/drivers/scsi/gdth
12855 memset(cmnd, 0xff, MAX_COMMAND_SIZE);
12856
12857 TRACE2(("gdth_flush() hanum %d\n", ha->hanum));
12858 -diff -urNp linux-2.6.32.48/drivers/scsi/gdth_proc.c linux-2.6.32.48/drivers/scsi/gdth_proc.c
12859 ---- linux-2.6.32.48/drivers/scsi/gdth_proc.c 2009-12-02 22:51:21.000000000 -0500
12860 -+++ linux-2.6.32.48/drivers/scsi/gdth_proc.c 2011-11-12 12:46:45.000000000 -0500
12861 +diff -urNp linux-2.6.32.46/drivers/scsi/gdth_proc.c linux-2.6.32.46/drivers/scsi/gdth_proc.c
12862 +--- linux-2.6.32.46/drivers/scsi/gdth_proc.c 2011-03-27 14:31:47.000000000 -0400
12863 ++++ linux-2.6.32.46/drivers/scsi/gdth_proc.c 2011-05-16 21:46:57.000000000 -0400
12864 @@ -46,6 +46,9 @@ static int gdth_set_asc_info(struct Scsi
12865 ulong64 paddr;
12866
12867 @@ -37253,9 +37276,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/gdth_proc.c linux-2.6.32.48/drivers/scsi
12868 gdtcmd = kmalloc(sizeof(*gdtcmd), GFP_KERNEL);
12869 estr = kmalloc(sizeof(*estr), GFP_KERNEL);
12870 if (!gdtcmd || !estr)
12871 -diff -urNp linux-2.6.32.48/drivers/scsi/hosts.c linux-2.6.32.48/drivers/scsi/hosts.c
12872 ---- linux-2.6.32.48/drivers/scsi/hosts.c 2011-11-12 12:44:29.000000000 -0500
12873 -+++ linux-2.6.32.48/drivers/scsi/hosts.c 2011-11-12 12:46:45.000000000 -0500
12874 +diff -urNp linux-2.6.32.46/drivers/scsi/hosts.c linux-2.6.32.46/drivers/scsi/hosts.c
12875 +--- linux-2.6.32.46/drivers/scsi/hosts.c 2011-03-27 14:31:47.000000000 -0400
12876 ++++ linux-2.6.32.46/drivers/scsi/hosts.c 2011-05-04 17:56:28.000000000 -0400
12877 @@ -40,7 +40,7 @@
12878 #include "scsi_logging.h"
12879
12880 @@ -37274,9 +37297,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/hosts.c linux-2.6.32.48/drivers/scsi/hos
12881 shost->dma_channel = 0xff;
12882
12883 /* These three are default values which can be overridden */
12884 -diff -urNp linux-2.6.32.48/drivers/scsi/ipr.c linux-2.6.32.48/drivers/scsi/ipr.c
12885 ---- linux-2.6.32.48/drivers/scsi/ipr.c 2011-11-12 12:44:29.000000000 -0500
12886 -+++ linux-2.6.32.48/drivers/scsi/ipr.c 2011-11-12 12:46:45.000000000 -0500
12887 +diff -urNp linux-2.6.32.46/drivers/scsi/ipr.c linux-2.6.32.46/drivers/scsi/ipr.c
12888 +--- linux-2.6.32.46/drivers/scsi/ipr.c 2011-03-27 14:31:47.000000000 -0400
12889 ++++ linux-2.6.32.46/drivers/scsi/ipr.c 2011-04-17 15:56:46.000000000 -0400
12890 @@ -5286,7 +5286,7 @@ static bool ipr_qc_fill_rtf(struct ata_q
12891 return true;
12892 }
12893 @@ -37286,9 +37309,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/ipr.c linux-2.6.32.48/drivers/scsi/ipr.c
12894 .phy_reset = ipr_ata_phy_reset,
12895 .hardreset = ipr_sata_reset,
12896 .post_internal_cmd = ipr_ata_post_internal,
12897 -diff -urNp linux-2.6.32.48/drivers/scsi/ips.h linux-2.6.32.48/drivers/scsi/ips.h
12898 ---- linux-2.6.32.48/drivers/scsi/ips.h 2009-12-02 22:51:21.000000000 -0500
12899 -+++ linux-2.6.32.48/drivers/scsi/ips.h 2011-11-12 12:46:45.000000000 -0500
12900 +diff -urNp linux-2.6.32.46/drivers/scsi/ips.h linux-2.6.32.46/drivers/scsi/ips.h
12901 +--- linux-2.6.32.46/drivers/scsi/ips.h 2011-03-27 14:31:47.000000000 -0400
12902 ++++ linux-2.6.32.46/drivers/scsi/ips.h 2011-08-05 20:33:55.000000000 -0400
12903 @@ -1027,7 +1027,7 @@ typedef struct {
12904 int (*intr)(struct ips_ha *);
12905 void (*enableint)(struct ips_ha *);
12906 @@ -37298,9 +37321,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/ips.h linux-2.6.32.48/drivers/scsi/ips.h
12907
12908 typedef struct ips_ha {
12909 uint8_t ha_id[IPS_MAX_CHANNELS+1];
12910 -diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c
12911 ---- linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c 2009-12-02 22:51:21.000000000 -0500
12912 -+++ linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c 2011-11-12 12:46:45.000000000 -0500
12913 +diff -urNp linux-2.6.32.46/drivers/scsi/libfc/fc_exch.c linux-2.6.32.46/drivers/scsi/libfc/fc_exch.c
12914 +--- linux-2.6.32.46/drivers/scsi/libfc/fc_exch.c 2011-03-27 14:31:47.000000000 -0400
12915 ++++ linux-2.6.32.46/drivers/scsi/libfc/fc_exch.c 2011-08-23 21:22:32.000000000 -0400
12916 @@ -86,12 +86,12 @@ struct fc_exch_mgr {
12917 * all together if not used XXX
12918 */
12919 @@ -37422,9 +37445,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
12920
12921 fc_frame_free(fp);
12922 }
12923 -diff -urNp linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c
12924 ---- linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c 2011-11-12 12:44:29.000000000 -0500
12925 -+++ linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c 2011-11-12 12:46:45.000000000 -0500
12926 +diff -urNp linux-2.6.32.46/drivers/scsi/libsas/sas_ata.c linux-2.6.32.46/drivers/scsi/libsas/sas_ata.c
12927 +--- linux-2.6.32.46/drivers/scsi/libsas/sas_ata.c 2011-03-27 14:31:47.000000000 -0400
12928 ++++ linux-2.6.32.46/drivers/scsi/libsas/sas_ata.c 2011-04-23 12:56:11.000000000 -0400
12929 @@ -343,7 +343,7 @@ static int sas_ata_scr_read(struct ata_l
12930 }
12931 }
12932 @@ -37434,9 +37457,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c linux-2.6.32.48/drivers
12933 .phy_reset = sas_ata_phy_reset,
12934 .post_internal_cmd = sas_ata_post_internal,
12935 .qc_defer = ata_std_qc_defer,
12936 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c
12937 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c 2009-12-02 22:51:21.000000000 -0500
12938 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c 2011-11-12 12:46:45.000000000 -0500
12939 +diff -urNp linux-2.6.32.46/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.46/drivers/scsi/lpfc/lpfc_debugfs.c
12940 +--- linux-2.6.32.46/drivers/scsi/lpfc/lpfc_debugfs.c 2011-03-27 14:31:47.000000000 -0400
12941 ++++ linux-2.6.32.46/drivers/scsi/lpfc/lpfc_debugfs.c 2011-05-16 21:46:57.000000000 -0400
12942 @@ -124,7 +124,7 @@ struct lpfc_debug {
12943 int len;
12944 };
12945 @@ -37525,9 +37548,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
12946
12947 snprintf(name, sizeof(name), "discovery_trace");
12948 vport->debug_disc_trc =
12949 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h
12950 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h 2009-12-02 22:51:21.000000000 -0500
12951 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h 2011-11-12 12:46:45.000000000 -0500
12952 +diff -urNp linux-2.6.32.46/drivers/scsi/lpfc/lpfc.h linux-2.6.32.46/drivers/scsi/lpfc/lpfc.h
12953 +--- linux-2.6.32.46/drivers/scsi/lpfc/lpfc.h 2011-03-27 14:31:47.000000000 -0400
12954 ++++ linux-2.6.32.46/drivers/scsi/lpfc/lpfc.h 2011-05-04 17:56:28.000000000 -0400
12955 @@ -400,7 +400,7 @@ struct lpfc_vport {
12956 struct dentry *debug_nodelist;
12957 struct dentry *vport_debugfs_root;
12958 @@ -37557,9 +37580,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h linux-2.6.32.48/drivers/scsi
12959 #endif
12960
12961 /* Used for deferred freeing of ELS data buffers */
12962 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c
12963 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c 2011-11-12 12:44:29.000000000 -0500
12964 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c 2011-11-12 12:46:45.000000000 -0500
12965 +diff -urNp linux-2.6.32.46/drivers/scsi/lpfc/lpfc_init.c linux-2.6.32.46/drivers/scsi/lpfc/lpfc_init.c
12966 +--- linux-2.6.32.46/drivers/scsi/lpfc/lpfc_init.c 2011-03-27 14:31:47.000000000 -0400
12967 ++++ linux-2.6.32.46/drivers/scsi/lpfc/lpfc_init.c 2011-08-05 20:33:55.000000000 -0400
12968 @@ -8021,8 +8021,10 @@ lpfc_init(void)
12969 printk(LPFC_COPYRIGHT "\n");
12970
12971 @@ -37573,9 +37596,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c linux-2.6.32.48/drivers
12972 }
12973 lpfc_transport_template =
12974 fc_attach_transport(&lpfc_transport_functions);
12975 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c
12976 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c 2009-12-02 22:51:21.000000000 -0500
12977 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c 2011-11-12 12:46:45.000000000 -0500
12978 +diff -urNp linux-2.6.32.46/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.46/drivers/scsi/lpfc/lpfc_scsi.c
12979 +--- linux-2.6.32.46/drivers/scsi/lpfc/lpfc_scsi.c 2011-03-27 14:31:47.000000000 -0400
12980 ++++ linux-2.6.32.46/drivers/scsi/lpfc/lpfc_scsi.c 2011-05-04 17:56:28.000000000 -0400
12981 @@ -259,7 +259,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hb
12982 uint32_t evt_posted;
12983
12984 @@ -37627,9 +37650,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers
12985 }
12986
12987 /**
12988 -diff -urNp linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c
12989 ---- linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c 2009-12-02 22:51:21.000000000 -0500
12990 -+++ linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c 2011-11-12 12:46:45.000000000 -0500
12991 +diff -urNp linux-2.6.32.46/drivers/scsi/megaraid/megaraid_mbox.c linux-2.6.32.46/drivers/scsi/megaraid/megaraid_mbox.c
12992 +--- linux-2.6.32.46/drivers/scsi/megaraid/megaraid_mbox.c 2011-03-27 14:31:47.000000000 -0400
12993 ++++ linux-2.6.32.46/drivers/scsi/megaraid/megaraid_mbox.c 2011-05-16 21:46:57.000000000 -0400
12994 @@ -3503,6 +3503,8 @@ megaraid_cmm_register(adapter_t *adapter
12995 int rval;
12996 int i;
12997 @@ -37639,9 +37662,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c linux-2.6.32.48
12998 // Allocate memory for the base list of scb for management module.
12999 adapter->uscb_list = kcalloc(MBOX_MAX_USER_CMDS, sizeof(scb_t), GFP_KERNEL);
13000
13001 -diff -urNp linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c
13002 ---- linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c 2009-12-02 22:51:21.000000000 -0500
13003 -+++ linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c 2011-11-12 12:46:45.000000000 -0500
13004 +diff -urNp linux-2.6.32.46/drivers/scsi/osd/osd_initiator.c linux-2.6.32.46/drivers/scsi/osd/osd_initiator.c
13005 +--- linux-2.6.32.46/drivers/scsi/osd/osd_initiator.c 2011-03-27 14:31:47.000000000 -0400
13006 ++++ linux-2.6.32.46/drivers/scsi/osd/osd_initiator.c 2011-05-16 21:46:57.000000000 -0400
13007 @@ -94,6 +94,8 @@ static int _osd_print_system_info(struct
13008 int nelem = ARRAY_SIZE(get_attrs), a = 0;
13009 int ret;
13010 @@ -37651,9 +37674,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c linux-2.6.32.48/driv
13011 or = osd_start_request(od, GFP_KERNEL);
13012 if (!or)
13013 return -ENOMEM;
13014 -diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.c linux-2.6.32.48/drivers/scsi/pmcraid.c
13015 ---- linux-2.6.32.48/drivers/scsi/pmcraid.c 2011-11-12 12:44:29.000000000 -0500
13016 -+++ linux-2.6.32.48/drivers/scsi/pmcraid.c 2011-11-12 12:46:45.000000000 -0500
13017 +diff -urNp linux-2.6.32.46/drivers/scsi/pmcraid.c linux-2.6.32.46/drivers/scsi/pmcraid.c
13018 +--- linux-2.6.32.46/drivers/scsi/pmcraid.c 2011-08-09 18:35:29.000000000 -0400
13019 ++++ linux-2.6.32.46/drivers/scsi/pmcraid.c 2011-08-09 18:33:59.000000000 -0400
13020 @@ -189,8 +189,8 @@ static int pmcraid_slave_alloc(struct sc
13021 res->scsi_dev = scsi_dev;
13022 scsi_dev->hostdata = res;
13023 @@ -37704,9 +37727,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.c linux-2.6.32.48/drivers/scsi/p
13024 schedule_work(&pinstance->worker_q);
13025 return rc;
13026
13027 -diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.h linux-2.6.32.48/drivers/scsi/pmcraid.h
13028 ---- linux-2.6.32.48/drivers/scsi/pmcraid.h 2009-12-02 22:51:21.000000000 -0500
13029 -+++ linux-2.6.32.48/drivers/scsi/pmcraid.h 2011-11-12 12:46:45.000000000 -0500
13030 +diff -urNp linux-2.6.32.46/drivers/scsi/pmcraid.h linux-2.6.32.46/drivers/scsi/pmcraid.h
13031 +--- linux-2.6.32.46/drivers/scsi/pmcraid.h 2011-03-27 14:31:47.000000000 -0400
13032 ++++ linux-2.6.32.46/drivers/scsi/pmcraid.h 2011-05-04 17:56:28.000000000 -0400
13033 @@ -690,7 +690,7 @@ struct pmcraid_instance {
13034 atomic_t outstanding_cmds;
13035
13036 @@ -37727,9 +37750,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.h linux-2.6.32.48/drivers/scsi/p
13037
13038 /* To indicate add/delete/modify during CCN */
13039 u8 change_detected;
13040 -diff -urNp linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h
13041 ---- linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h 2009-12-02 22:51:21.000000000 -0500
13042 -+++ linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h 2011-11-12 12:46:45.000000000 -0500
13043 +diff -urNp linux-2.6.32.46/drivers/scsi/qla2xxx/qla_def.h linux-2.6.32.46/drivers/scsi/qla2xxx/qla_def.h
13044 +--- linux-2.6.32.46/drivers/scsi/qla2xxx/qla_def.h 2011-03-27 14:31:47.000000000 -0400
13045 ++++ linux-2.6.32.46/drivers/scsi/qla2xxx/qla_def.h 2011-08-05 20:33:55.000000000 -0400
13046 @@ -2089,7 +2089,7 @@ struct isp_operations {
13047
13048 int (*get_flash_version) (struct scsi_qla_host *, void *);
13049 @@ -37739,9 +37762,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h linux-2.6.32.48/driver
13050
13051 /* MSI-X Support *************************************************************/
13052
13053 -diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h
13054 ---- linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h 2009-12-02 22:51:21.000000000 -0500
13055 -+++ linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h 2011-11-12 12:46:45.000000000 -0500
13056 +diff -urNp linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_def.h linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_def.h
13057 +--- linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_def.h 2011-03-27 14:31:47.000000000 -0400
13058 ++++ linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_def.h 2011-05-04 17:56:28.000000000 -0400
13059 @@ -240,7 +240,7 @@ struct ddb_entry {
13060 atomic_t retry_relogin_timer; /* Min Time between relogins
13061 * (4000 only) */
13062 @@ -37751,9 +37774,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h linux-2.6.32.48/driver
13063 * retried */
13064
13065 uint16_t port;
13066 -diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c
13067 ---- linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c 2009-12-02 22:51:21.000000000 -0500
13068 -+++ linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c 2011-11-12 12:46:45.000000000 -0500
13069 +diff -urNp linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_init.c linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_init.c
13070 +--- linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_init.c 2011-03-27 14:31:47.000000000 -0400
13071 ++++ linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_init.c 2011-05-04 17:56:28.000000000 -0400
13072 @@ -482,7 +482,7 @@ static struct ddb_entry * qla4xxx_alloc_
13073 atomic_set(&ddb_entry->port_down_timer, ha->port_down_retry_count);
13074 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
13075 @@ -37772,9 +37795,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c linux-2.6.32.48/drive
13076 atomic_set(&ddb_entry->relogin_timer, 0);
13077 clear_bit(DF_RELOGIN, &ddb_entry->flags);
13078 clear_bit(DF_NO_RELOGIN, &ddb_entry->flags);
13079 -diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c
13080 ---- linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c 2009-12-02 22:51:21.000000000 -0500
13081 -+++ linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c 2011-11-12 12:46:45.000000000 -0500
13082 +diff -urNp linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_os.c linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_os.c
13083 +--- linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_os.c 2011-03-27 14:31:47.000000000 -0400
13084 ++++ linux-2.6.32.46/drivers/scsi/qla4xxx/ql4_os.c 2011-05-04 17:56:28.000000000 -0400
13085 @@ -641,13 +641,13 @@ static void qla4xxx_timer(struct scsi_ql
13086 ddb_entry->fw_ddb_device_state ==
13087 DDB_DS_SESSION_FAILED) {
13088 @@ -37791,9 +37814,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c linux-2.6.32.48/drivers
13089 relogin_retry_count))
13090 );
13091 start_dpc++;
13092 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi.c linux-2.6.32.48/drivers/scsi/scsi.c
13093 ---- linux-2.6.32.48/drivers/scsi/scsi.c 2009-12-02 22:51:21.000000000 -0500
13094 -+++ linux-2.6.32.48/drivers/scsi/scsi.c 2011-11-12 12:46:45.000000000 -0500
13095 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi.c linux-2.6.32.46/drivers/scsi/scsi.c
13096 +--- linux-2.6.32.46/drivers/scsi/scsi.c 2011-03-27 14:31:47.000000000 -0400
13097 ++++ linux-2.6.32.46/drivers/scsi/scsi.c 2011-05-04 17:56:28.000000000 -0400
13098 @@ -652,7 +652,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *
13099 unsigned long timeout;
13100 int rtn = 0;
13101 @@ -37803,9 +37826,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi.c linux-2.6.32.48/drivers/scsi/scsi
13102
13103 /* check if the device is still usable */
13104 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
13105 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_debug.c linux-2.6.32.48/drivers/scsi/scsi_debug.c
13106 ---- linux-2.6.32.48/drivers/scsi/scsi_debug.c 2011-11-12 12:44:29.000000000 -0500
13107 -+++ linux-2.6.32.48/drivers/scsi/scsi_debug.c 2011-11-12 12:46:45.000000000 -0500
13108 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi_debug.c linux-2.6.32.46/drivers/scsi/scsi_debug.c
13109 +--- linux-2.6.32.46/drivers/scsi/scsi_debug.c 2011-03-27 14:31:47.000000000 -0400
13110 ++++ linux-2.6.32.46/drivers/scsi/scsi_debug.c 2011-05-16 21:46:57.000000000 -0400
13111 @@ -1395,6 +1395,8 @@ static int resp_mode_select(struct scsi_
13112 unsigned char arr[SDEBUG_MAX_MSELECT_SZ];
13113 unsigned char *cmd = (unsigned char *)scp->cmnd;
13114 @@ -37824,9 +37847,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_debug.c linux-2.6.32.48/drivers/scs
13115 if ((errsts = check_readiness(scp, 1, devip)))
13116 return errsts;
13117 memset(arr, 0, sizeof(arr));
13118 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_lib.c linux-2.6.32.48/drivers/scsi/scsi_lib.c
13119 ---- linux-2.6.32.48/drivers/scsi/scsi_lib.c 2011-11-12 12:44:29.000000000 -0500
13120 -+++ linux-2.6.32.48/drivers/scsi/scsi_lib.c 2011-11-12 12:46:45.000000000 -0500
13121 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi_lib.c linux-2.6.32.46/drivers/scsi/scsi_lib.c
13122 +--- linux-2.6.32.46/drivers/scsi/scsi_lib.c 2011-05-10 22:12:01.000000000 -0400
13123 ++++ linux-2.6.32.46/drivers/scsi/scsi_lib.c 2011-05-10 22:12:33.000000000 -0400
13124 @@ -1384,7 +1384,7 @@ static void scsi_kill_request(struct req
13125
13126 scsi_init_cmd_errh(cmd);
13127 @@ -37848,9 +37871,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_lib.c linux-2.6.32.48/drivers/scsi/
13128
13129 disposition = scsi_decide_disposition(cmd);
13130 if (disposition != SUCCESS &&
13131 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_sysfs.c linux-2.6.32.48/drivers/scsi/scsi_sysfs.c
13132 ---- linux-2.6.32.48/drivers/scsi/scsi_sysfs.c 2011-11-12 12:44:29.000000000 -0500
13133 -+++ linux-2.6.32.48/drivers/scsi/scsi_sysfs.c 2011-11-12 12:46:45.000000000 -0500
13134 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi_sysfs.c linux-2.6.32.46/drivers/scsi/scsi_sysfs.c
13135 +--- linux-2.6.32.46/drivers/scsi/scsi_sysfs.c 2011-06-25 12:55:34.000000000 -0400
13136 ++++ linux-2.6.32.46/drivers/scsi/scsi_sysfs.c 2011-06-25 12:56:37.000000000 -0400
13137 @@ -662,7 +662,7 @@ show_iostat_##field(struct device *dev,
13138 char *buf) \
13139 { \
13140 @@ -37860,9 +37883,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_sysfs.c linux-2.6.32.48/drivers/scs
13141 return snprintf(buf, 20, "0x%llx\n", count); \
13142 } \
13143 static DEVICE_ATTR(field, S_IRUGO, show_iostat_##field, NULL)
13144 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c
13145 ---- linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c 2009-12-02 22:51:21.000000000 -0500
13146 -+++ linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c 2011-11-12 12:46:45.000000000 -0500
13147 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi_tgt_lib.c linux-2.6.32.46/drivers/scsi/scsi_tgt_lib.c
13148 +--- linux-2.6.32.46/drivers/scsi/scsi_tgt_lib.c 2011-03-27 14:31:47.000000000 -0400
13149 ++++ linux-2.6.32.46/drivers/scsi/scsi_tgt_lib.c 2011-10-06 09:37:14.000000000 -0400
13150 @@ -362,7 +362,7 @@ static int scsi_map_user_pages(struct sc
13151 int err;
13152
13153 @@ -37872,9 +37895,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c linux-2.6.32.48/drivers/s
13154 if (err) {
13155 /*
13156 * TODO: need to fixup sg_tablesize, max_segment_size,
13157 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c
13158 ---- linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c 2011-11-12 12:44:29.000000000 -0500
13159 -+++ linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c 2011-11-12 12:46:45.000000000 -0500
13160 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi_transport_fc.c linux-2.6.32.46/drivers/scsi/scsi_transport_fc.c
13161 +--- linux-2.6.32.46/drivers/scsi/scsi_transport_fc.c 2011-03-27 14:31:47.000000000 -0400
13162 ++++ linux-2.6.32.46/drivers/scsi/scsi_transport_fc.c 2011-05-04 17:56:28.000000000 -0400
13163 @@ -480,7 +480,7 @@ MODULE_PARM_DESC(dev_loss_tmo,
13164 * Netlink Infrastructure
13165 */
13166 @@ -37902,9 +37925,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c linux-2.6.32.48/driv
13167
13168 error = transport_class_register(&fc_host_class);
13169 if (error)
13170 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c
13171 ---- linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c 2011-11-12 12:44:29.000000000 -0500
13172 -+++ linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c 2011-11-12 12:46:45.000000000 -0500
13173 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi_transport_iscsi.c linux-2.6.32.46/drivers/scsi/scsi_transport_iscsi.c
13174 +--- linux-2.6.32.46/drivers/scsi/scsi_transport_iscsi.c 2011-03-27 14:31:47.000000000 -0400
13175 ++++ linux-2.6.32.46/drivers/scsi/scsi_transport_iscsi.c 2011-05-04 17:56:28.000000000 -0400
13176 @@ -81,7 +81,7 @@ struct iscsi_internal {
13177 struct device_attribute *session_attrs[ISCSI_SESSION_ATTRS + 1];
13178 };
13179 @@ -37932,9 +37955,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c linux-2.6.32.48/d
13180
13181 err = class_register(&iscsi_transport_class);
13182 if (err)
13183 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c
13184 ---- linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c 2009-12-02 22:51:21.000000000 -0500
13185 -+++ linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c 2011-11-12 12:46:45.000000000 -0500
13186 +diff -urNp linux-2.6.32.46/drivers/scsi/scsi_transport_srp.c linux-2.6.32.46/drivers/scsi/scsi_transport_srp.c
13187 +--- linux-2.6.32.46/drivers/scsi/scsi_transport_srp.c 2011-03-27 14:31:47.000000000 -0400
13188 ++++ linux-2.6.32.46/drivers/scsi/scsi_transport_srp.c 2011-05-04 17:56:28.000000000 -0400
13189 @@ -33,7 +33,7 @@
13190 #include "scsi_transport_srp_internal.h"
13191
13192 @@ -37962,9 +37985,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c linux-2.6.32.48/dri
13193 dev_set_name(&rport->dev, "port-%d:%d", shost->host_no, id);
13194
13195 transport_setup_device(&rport->dev);
13196 -diff -urNp linux-2.6.32.48/drivers/scsi/sg.c linux-2.6.32.48/drivers/scsi/sg.c
13197 ---- linux-2.6.32.48/drivers/scsi/sg.c 2009-12-02 22:51:21.000000000 -0500
13198 -+++ linux-2.6.32.48/drivers/scsi/sg.c 2011-11-12 12:46:45.000000000 -0500
13199 +diff -urNp linux-2.6.32.46/drivers/scsi/sg.c linux-2.6.32.46/drivers/scsi/sg.c
13200 +--- linux-2.6.32.46/drivers/scsi/sg.c 2011-03-27 14:31:47.000000000 -0400
13201 ++++ linux-2.6.32.46/drivers/scsi/sg.c 2011-10-06 09:37:08.000000000 -0400
13202 @@ -1064,7 +1064,7 @@ sg_ioctl(struct inode *inode, struct fil
13203 sdp->disk->disk_name,
13204 MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
13205 @@ -37992,9 +38015,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/sg.c linux-2.6.32.48/drivers/scsi/sg.c
13206
13207 sg_proc_sgp = proc_mkdir(sg_proc_sg_dirname, NULL);
13208 if (!sg_proc_sgp)
13209 -diff -urNp linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c
13210 ---- linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c 2009-12-02 22:51:21.000000000 -0500
13211 -+++ linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-11-12 12:46:45.000000000 -0500
13212 +diff -urNp linux-2.6.32.46/drivers/scsi/sym53c8xx_2/sym_glue.c linux-2.6.32.46/drivers/scsi/sym53c8xx_2/sym_glue.c
13213 +--- linux-2.6.32.46/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-03-27 14:31:47.000000000 -0400
13214 ++++ linux-2.6.32.46/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-05-16 21:46:57.000000000 -0400
13215 @@ -1754,6 +1754,8 @@ static int __devinit sym2_probe(struct p
13216 int do_iounmap = 0;
13217 int do_disable_device = 1;
13218 @@ -38004,9 +38027,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c linux-2.6.32.48/d
13219 memset(&sym_dev, 0, sizeof(sym_dev));
13220 memset(&nvram, 0, sizeof(nvram));
13221 sym_dev.pdev = pdev;
13222 -diff -urNp linux-2.6.32.48/drivers/serial/kgdboc.c linux-2.6.32.48/drivers/serial/kgdboc.c
13223 ---- linux-2.6.32.48/drivers/serial/kgdboc.c 2009-12-02 22:51:21.000000000 -0500
13224 -+++ linux-2.6.32.48/drivers/serial/kgdboc.c 2011-11-12 12:46:45.000000000 -0500
13225 +diff -urNp linux-2.6.32.46/drivers/serial/kgdboc.c linux-2.6.32.46/drivers/serial/kgdboc.c
13226 +--- linux-2.6.32.46/drivers/serial/kgdboc.c 2011-03-27 14:31:47.000000000 -0400
13227 ++++ linux-2.6.32.46/drivers/serial/kgdboc.c 2011-04-17 15:56:46.000000000 -0400
13228 @@ -18,7 +18,7 @@
13229
13230 #define MAX_CONFIG_LEN 40
13231 @@ -38025,9 +38048,9 @@ diff -urNp linux-2.6.32.48/drivers/serial/kgdboc.c linux-2.6.32.48/drivers/seria
13232 .name = "kgdboc",
13233 .read_char = kgdboc_get_char,
13234 .write_char = kgdboc_put_char,
13235 -diff -urNp linux-2.6.32.48/drivers/spi/spi.c linux-2.6.32.48/drivers/spi/spi.c
13236 ---- linux-2.6.32.48/drivers/spi/spi.c 2009-12-02 22:51:21.000000000 -0500
13237 -+++ linux-2.6.32.48/drivers/spi/spi.c 2011-11-12 12:46:45.000000000 -0500
13238 +diff -urNp linux-2.6.32.46/drivers/spi/spi.c linux-2.6.32.46/drivers/spi/spi.c
13239 +--- linux-2.6.32.46/drivers/spi/spi.c 2011-03-27 14:31:47.000000000 -0400
13240 ++++ linux-2.6.32.46/drivers/spi/spi.c 2011-05-04 17:56:28.000000000 -0400
13241 @@ -774,7 +774,7 @@ int spi_sync(struct spi_device *spi, str
13242 EXPORT_SYMBOL_GPL(spi_sync);
13243
13244 @@ -38037,9 +38060,9 @@ diff -urNp linux-2.6.32.48/drivers/spi/spi.c linux-2.6.32.48/drivers/spi/spi.c
13245
13246 static u8 *buf;
13247
13248 -diff -urNp linux-2.6.32.48/drivers/staging/android/binder.c linux-2.6.32.48/drivers/staging/android/binder.c
13249 ---- linux-2.6.32.48/drivers/staging/android/binder.c 2009-12-02 22:51:21.000000000 -0500
13250 -+++ linux-2.6.32.48/drivers/staging/android/binder.c 2011-11-12 12:46:45.000000000 -0500
13251 +diff -urNp linux-2.6.32.46/drivers/staging/android/binder.c linux-2.6.32.46/drivers/staging/android/binder.c
13252 +--- linux-2.6.32.46/drivers/staging/android/binder.c 2011-03-27 14:31:47.000000000 -0400
13253 ++++ linux-2.6.32.46/drivers/staging/android/binder.c 2011-04-17 15:56:46.000000000 -0400
13254 @@ -2756,7 +2756,7 @@ static void binder_vma_close(struct vm_a
13255 binder_defer_work(proc, BINDER_DEFERRED_PUT_FILES);
13256 }
13257 @@ -38049,9 +38072,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/android/binder.c linux-2.6.32.48/driv
13258 .open = binder_vma_open,
13259 .close = binder_vma_close,
13260 };
13261 -diff -urNp linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c
13262 ---- linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c 2009-12-02 22:51:21.000000000 -0500
13263 -+++ linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c 2011-11-12 12:46:45.000000000 -0500
13264 +diff -urNp linux-2.6.32.46/drivers/staging/b3dfg/b3dfg.c linux-2.6.32.46/drivers/staging/b3dfg/b3dfg.c
13265 +--- linux-2.6.32.46/drivers/staging/b3dfg/b3dfg.c 2011-03-27 14:31:47.000000000 -0400
13266 ++++ linux-2.6.32.46/drivers/staging/b3dfg/b3dfg.c 2011-04-17 15:56:46.000000000 -0400
13267 @@ -455,7 +455,7 @@ static int b3dfg_vma_fault(struct vm_are
13268 return VM_FAULT_NOPAGE;
13269 }
13270 @@ -38070,9 +38093,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c linux-2.6.32.48/drivers
13271 .owner = THIS_MODULE,
13272 .open = b3dfg_open,
13273 .release = b3dfg_release,
13274 -diff -urNp linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c
13275 ---- linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c 2011-11-12 12:44:29.000000000 -0500
13276 -+++ linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c 2011-11-12 12:46:45.000000000 -0500
13277 +diff -urNp linux-2.6.32.46/drivers/staging/comedi/comedi_fops.c linux-2.6.32.46/drivers/staging/comedi/comedi_fops.c
13278 +--- linux-2.6.32.46/drivers/staging/comedi/comedi_fops.c 2011-08-09 18:35:29.000000000 -0400
13279 ++++ linux-2.6.32.46/drivers/staging/comedi/comedi_fops.c 2011-08-09 18:34:00.000000000 -0400
13280 @@ -1389,7 +1389,7 @@ void comedi_unmap(struct vm_area_struct
13281 mutex_unlock(&dev->mutex);
13282 }
13283 @@ -38082,9 +38105,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c linux-2.6.32.48/
13284 .close = comedi_unmap,
13285 };
13286
13287 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c
13288 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c 2009-12-02 22:51:21.000000000 -0500
13289 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c 2011-11-12 12:46:45.000000000 -0500
13290 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/adsp_driver.c linux-2.6.32.46/drivers/staging/dream/qdsp5/adsp_driver.c
13291 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/adsp_driver.c 2011-03-27 14:31:47.000000000 -0400
13292 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/adsp_driver.c 2011-04-17 15:56:46.000000000 -0400
13293 @@ -576,7 +576,7 @@ static struct adsp_device *inode_to_devi
13294 static dev_t adsp_devno;
13295 static struct class *adsp_class;
13296 @@ -38094,9 +38117,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c linux-2.6.3
13297 .owner = THIS_MODULE,
13298 .open = adsp_open,
13299 .unlocked_ioctl = adsp_ioctl,
13300 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c
13301 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c 2009-12-02 22:51:21.000000000 -0500
13302 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c 2011-11-12 12:46:45.000000000 -0500
13303 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_aac.c linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_aac.c
13304 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_aac.c 2011-03-27 14:31:47.000000000 -0400
13305 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_aac.c 2011-04-17 15:56:46.000000000 -0400
13306 @@ -1022,7 +1022,7 @@ done:
13307 return rc;
13308 }
13309 @@ -38106,9 +38129,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c linux-2.6.32.
13310 .owner = THIS_MODULE,
13311 .open = audio_open,
13312 .release = audio_release,
13313 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c
13314 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c 2009-12-02 22:51:21.000000000 -0500
13315 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c 2011-11-12 12:46:45.000000000 -0500
13316 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_amrnb.c linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_amrnb.c
13317 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_amrnb.c 2011-03-27 14:31:47.000000000 -0400
13318 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_amrnb.c 2011-04-17 15:56:46.000000000 -0400
13319 @@ -833,7 +833,7 @@ done:
13320 return rc;
13321 }
13322 @@ -38118,9 +38141,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c linux-2.6.3
13323 .owner = THIS_MODULE,
13324 .open = audamrnb_open,
13325 .release = audamrnb_release,
13326 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c
13327 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c 2009-12-02 22:51:21.000000000 -0500
13328 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c 2011-11-12 12:46:45.000000000 -0500
13329 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_evrc.c linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_evrc.c
13330 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_evrc.c 2011-03-27 14:31:47.000000000 -0400
13331 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_evrc.c 2011-04-17 15:56:46.000000000 -0400
13332 @@ -805,7 +805,7 @@ dma_fail:
13333 return rc;
13334 }
13335 @@ -38130,9 +38153,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c linux-2.6.32
13336 .owner = THIS_MODULE,
13337 .open = audevrc_open,
13338 .release = audevrc_release,
13339 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c
13340 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c 2009-12-02 22:51:21.000000000 -0500
13341 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c 2011-11-12 12:46:45.000000000 -0500
13342 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_in.c linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_in.c
13343 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_in.c 2011-03-27 14:31:47.000000000 -0400
13344 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_in.c 2011-04-17 15:56:46.000000000 -0400
13345 @@ -913,7 +913,7 @@ static int audpre_open(struct inode *ino
13346 return 0;
13347 }
13348 @@ -38151,9 +38174,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c linux-2.6.32.4
13349 .owner = THIS_MODULE,
13350 .open = audpre_open,
13351 .unlocked_ioctl = audpre_ioctl,
13352 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c
13353 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c 2009-12-02 22:51:21.000000000 -0500
13354 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c 2011-11-12 12:46:45.000000000 -0500
13355 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_mp3.c linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_mp3.c
13356 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_mp3.c 2011-03-27 14:31:47.000000000 -0400
13357 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_mp3.c 2011-04-17 15:56:46.000000000 -0400
13358 @@ -941,7 +941,7 @@ done:
13359 return rc;
13360 }
13361 @@ -38163,9 +38186,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c linux-2.6.32.
13362 .owner = THIS_MODULE,
13363 .open = audio_open,
13364 .release = audio_release,
13365 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c
13366 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c 2009-12-02 22:51:21.000000000 -0500
13367 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c 2011-11-12 12:46:45.000000000 -0500
13368 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_out.c linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_out.c
13369 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_out.c 2011-03-27 14:31:47.000000000 -0400
13370 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_out.c 2011-04-17 15:56:46.000000000 -0400
13371 @@ -810,7 +810,7 @@ static int audpp_open(struct inode *inod
13372 return 0;
13373 }
13374 @@ -38184,9 +38207,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c linux-2.6.32.
13375 .owner = THIS_MODULE,
13376 .open = audpp_open,
13377 .unlocked_ioctl = audpp_ioctl,
13378 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c
13379 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c 2009-12-02 22:51:21.000000000 -0500
13380 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c 2011-11-12 12:46:45.000000000 -0500
13381 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_qcelp.c linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_qcelp.c
13382 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_qcelp.c 2011-03-27 14:31:47.000000000 -0400
13383 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/audio_qcelp.c 2011-04-17 15:56:46.000000000 -0400
13384 @@ -816,7 +816,7 @@ err:
13385 return rc;
13386 }
13387 @@ -38196,9 +38219,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c linux-2.6.3
13388 .owner = THIS_MODULE,
13389 .open = audqcelp_open,
13390 .release = audqcelp_release,
13391 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c
13392 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c 2009-12-02 22:51:21.000000000 -0500
13393 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c 2011-11-12 12:46:45.000000000 -0500
13394 +diff -urNp linux-2.6.32.46/drivers/staging/dream/qdsp5/snd.c linux-2.6.32.46/drivers/staging/dream/qdsp5/snd.c
13395 +--- linux-2.6.32.46/drivers/staging/dream/qdsp5/snd.c 2011-03-27 14:31:47.000000000 -0400
13396 ++++ linux-2.6.32.46/drivers/staging/dream/qdsp5/snd.c 2011-04-17 15:56:46.000000000 -0400
13397 @@ -242,7 +242,7 @@ err:
13398 return rc;
13399 }
13400 @@ -38208,9 +38231,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c linux-2.6.32.48/dri
13401 .owner = THIS_MODULE,
13402 .open = snd_open,
13403 .release = snd_release,
13404 -diff -urNp linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c
13405 ---- linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c 2009-12-02 22:51:21.000000000 -0500
13406 -+++ linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c 2011-11-12 12:46:45.000000000 -0500
13407 +diff -urNp linux-2.6.32.46/drivers/staging/dream/smd/smd_qmi.c linux-2.6.32.46/drivers/staging/dream/smd/smd_qmi.c
13408 +--- linux-2.6.32.46/drivers/staging/dream/smd/smd_qmi.c 2011-03-27 14:31:47.000000000 -0400
13409 ++++ linux-2.6.32.46/drivers/staging/dream/smd/smd_qmi.c 2011-04-17 15:56:46.000000000 -0400
13410 @@ -793,7 +793,7 @@ static int qmi_release(struct inode *ip,
13411 return 0;
13412 }
13413 @@ -38220,9 +38243,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c linux-2.6.32.48/d
13414 .owner = THIS_MODULE,
13415 .read = qmi_read,
13416 .write = qmi_write,
13417 -diff -urNp linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c
13418 ---- linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c 2009-12-02 22:51:21.000000000 -0500
13419 -+++ linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c 2011-11-12 12:46:45.000000000 -0500
13420 +diff -urNp linux-2.6.32.46/drivers/staging/dream/smd/smd_rpcrouter_device.c linux-2.6.32.46/drivers/staging/dream/smd/smd_rpcrouter_device.c
13421 +--- linux-2.6.32.46/drivers/staging/dream/smd/smd_rpcrouter_device.c 2011-03-27 14:31:47.000000000 -0400
13422 ++++ linux-2.6.32.46/drivers/staging/dream/smd/smd_rpcrouter_device.c 2011-04-17 15:56:46.000000000 -0400
13423 @@ -214,7 +214,7 @@ static long rpcrouter_ioctl(struct file
13424 return rc;
13425 }
13426 @@ -38241,9 +38264,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c linu
13427 .owner = THIS_MODULE,
13428 .open = rpcrouter_open,
13429 .release = rpcrouter_release,
13430 -diff -urNp linux-2.6.32.48/drivers/staging/dst/dcore.c linux-2.6.32.48/drivers/staging/dst/dcore.c
13431 ---- linux-2.6.32.48/drivers/staging/dst/dcore.c 2009-12-02 22:51:21.000000000 -0500
13432 -+++ linux-2.6.32.48/drivers/staging/dst/dcore.c 2011-11-12 12:46:45.000000000 -0500
13433 +diff -urNp linux-2.6.32.46/drivers/staging/dst/dcore.c linux-2.6.32.46/drivers/staging/dst/dcore.c
13434 +--- linux-2.6.32.46/drivers/staging/dst/dcore.c 2011-03-27 14:31:47.000000000 -0400
13435 ++++ linux-2.6.32.46/drivers/staging/dst/dcore.c 2011-04-17 15:56:46.000000000 -0400
13436 @@ -149,7 +149,7 @@ static int dst_bdev_release(struct gendi
13437 return 0;
13438 }
13439 @@ -38262,9 +38285,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dst/dcore.c linux-2.6.32.48/drivers/s
13440 snprintf(n->name, sizeof(n->name), "%s", ctl->name);
13441
13442 err = dst_node_sysfs_init(n);
13443 -diff -urNp linux-2.6.32.48/drivers/staging/dst/trans.c linux-2.6.32.48/drivers/staging/dst/trans.c
13444 ---- linux-2.6.32.48/drivers/staging/dst/trans.c 2009-12-02 22:51:21.000000000 -0500
13445 -+++ linux-2.6.32.48/drivers/staging/dst/trans.c 2011-11-12 12:46:45.000000000 -0500
13446 +diff -urNp linux-2.6.32.46/drivers/staging/dst/trans.c linux-2.6.32.46/drivers/staging/dst/trans.c
13447 +--- linux-2.6.32.46/drivers/staging/dst/trans.c 2011-03-27 14:31:47.000000000 -0400
13448 ++++ linux-2.6.32.46/drivers/staging/dst/trans.c 2011-04-17 15:56:46.000000000 -0400
13449 @@ -169,7 +169,7 @@ int dst_process_bio(struct dst_node *n,
13450 t->error = 0;
13451 t->retries = 0;
13452 @@ -38274,9 +38297,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/dst/trans.c linux-2.6.32.48/drivers/s
13453
13454 t->enc = bio_data_dir(bio);
13455 dst_bio_to_cmd(bio, &t->cmd, DST_IO, t->gen);
13456 -diff -urNp linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c
13457 ---- linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c 2009-12-02 22:51:21.000000000 -0500
13458 -+++ linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c 2011-11-12 12:46:45.000000000 -0500
13459 +diff -urNp linux-2.6.32.46/drivers/staging/et131x/et1310_tx.c linux-2.6.32.46/drivers/staging/et131x/et1310_tx.c
13460 +--- linux-2.6.32.46/drivers/staging/et131x/et1310_tx.c 2011-03-27 14:31:47.000000000 -0400
13461 ++++ linux-2.6.32.46/drivers/staging/et131x/et1310_tx.c 2011-05-04 17:56:28.000000000 -0400
13462 @@ -710,11 +710,11 @@ inline void et131x_free_send_packet(stru
13463 struct net_device_stats *stats = &etdev->net_stats;
13464
13465 @@ -38292,9 +38315,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c linux-2.6.32.48/dr
13466
13467 if (pMpTcb->Packet) {
13468 stats->tx_bytes += pMpTcb->Packet->len;
13469 -diff -urNp linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h
13470 ---- linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h 2009-12-02 22:51:21.000000000 -0500
13471 -+++ linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h 2011-11-12 12:46:45.000000000 -0500
13472 +diff -urNp linux-2.6.32.46/drivers/staging/et131x/et131x_adapter.h linux-2.6.32.46/drivers/staging/et131x/et131x_adapter.h
13473 +--- linux-2.6.32.46/drivers/staging/et131x/et131x_adapter.h 2011-03-27 14:31:47.000000000 -0400
13474 ++++ linux-2.6.32.46/drivers/staging/et131x/et131x_adapter.h 2011-05-04 17:56:28.000000000 -0400
13475 @@ -145,11 +145,11 @@ typedef struct _ce_stats_t {
13476 * operations
13477 */
13478 @@ -38310,9 +38333,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h linux-2.6.32.
13479 u32 norcvbuf; /* # Rx packets discarded */
13480 u32 noxmtbuf; /* # Tx packets discarded */
13481
13482 -diff -urNp linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c
13483 ---- linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c 2009-12-02 22:51:21.000000000 -0500
13484 -+++ linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c 2011-11-12 12:46:45.000000000 -0500
13485 +diff -urNp linux-2.6.32.46/drivers/staging/go7007/go7007-v4l2.c linux-2.6.32.46/drivers/staging/go7007/go7007-v4l2.c
13486 +--- linux-2.6.32.46/drivers/staging/go7007/go7007-v4l2.c 2011-03-27 14:31:47.000000000 -0400
13487 ++++ linux-2.6.32.46/drivers/staging/go7007/go7007-v4l2.c 2011-04-17 15:56:46.000000000 -0400
13488 @@ -1700,7 +1700,7 @@ static int go7007_vm_fault(struct vm_are
13489 return 0;
13490 }
13491 @@ -38322,9 +38345,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c linux-2.6.32.48/
13492 .open = go7007_vm_open,
13493 .close = go7007_vm_close,
13494 .fault = go7007_vm_fault,
13495 -diff -urNp linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c
13496 ---- linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c 2011-11-12 12:44:29.000000000 -0500
13497 -+++ linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c 2011-11-12 12:46:45.000000000 -0500
13498 +diff -urNp linux-2.6.32.46/drivers/staging/hv/blkvsc_drv.c linux-2.6.32.46/drivers/staging/hv/blkvsc_drv.c
13499 +--- linux-2.6.32.46/drivers/staging/hv/blkvsc_drv.c 2011-03-27 14:31:47.000000000 -0400
13500 ++++ linux-2.6.32.46/drivers/staging/hv/blkvsc_drv.c 2011-04-17 15:56:46.000000000 -0400
13501 @@ -153,7 +153,7 @@ static int blkvsc_ringbuffer_size = BLKV
13502 /* The one and only one */
13503 static struct blkvsc_driver_context g_blkvsc_drv;
13504 @@ -38334,9 +38357,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c linux-2.6.32.48/drive
13505 .owner = THIS_MODULE,
13506 .open = blkvsc_open,
13507 .release = blkvsc_release,
13508 -diff -urNp linux-2.6.32.48/drivers/staging/hv/Channel.c linux-2.6.32.48/drivers/staging/hv/Channel.c
13509 ---- linux-2.6.32.48/drivers/staging/hv/Channel.c 2011-11-12 12:44:29.000000000 -0500
13510 -+++ linux-2.6.32.48/drivers/staging/hv/Channel.c 2011-11-12 12:46:45.000000000 -0500
13511 +diff -urNp linux-2.6.32.46/drivers/staging/hv/Channel.c linux-2.6.32.46/drivers/staging/hv/Channel.c
13512 +--- linux-2.6.32.46/drivers/staging/hv/Channel.c 2011-04-17 17:00:52.000000000 -0400
13513 ++++ linux-2.6.32.46/drivers/staging/hv/Channel.c 2011-05-04 17:56:28.000000000 -0400
13514 @@ -464,8 +464,8 @@ int VmbusChannelEstablishGpadl(struct vm
13515
13516 DPRINT_ENTER(VMBUS);
13517 @@ -38348,9 +38371,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/hv/Channel.c linux-2.6.32.48/drivers/
13518
13519 VmbusChannelCreateGpadlHeader(Kbuffer, Size, &msgInfo, &msgCount);
13520 ASSERT(msgInfo != NULL);
13521 -diff -urNp linux-2.6.32.48/drivers/staging/hv/Hv.c linux-2.6.32.48/drivers/staging/hv/Hv.c
13522 ---- linux-2.6.32.48/drivers/staging/hv/Hv.c 2011-11-12 12:44:29.000000000 -0500
13523 -+++ linux-2.6.32.48/drivers/staging/hv/Hv.c 2011-11-12 12:46:45.000000000 -0500
13524 +diff -urNp linux-2.6.32.46/drivers/staging/hv/Hv.c linux-2.6.32.46/drivers/staging/hv/Hv.c
13525 +--- linux-2.6.32.46/drivers/staging/hv/Hv.c 2011-03-27 14:31:47.000000000 -0400
13526 ++++ linux-2.6.32.46/drivers/staging/hv/Hv.c 2011-04-17 15:56:46.000000000 -0400
13527 @@ -161,7 +161,7 @@ static u64 HvDoHypercall(u64 Control, vo
13528 u64 outputAddress = (Output) ? virt_to_phys(Output) : 0;
13529 u32 outputAddressHi = outputAddress >> 32;
13530 @@ -38360,9 +38383,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/hv/Hv.c linux-2.6.32.48/drivers/stagi
13531
13532 DPRINT_DBG(VMBUS, "Hypercall <control %llx input %p output %p>",
13533 Control, Input, Output);
13534 -diff -urNp linux-2.6.32.48/drivers/staging/hv/VmbusApi.h linux-2.6.32.48/drivers/staging/hv/VmbusApi.h
13535 ---- linux-2.6.32.48/drivers/staging/hv/VmbusApi.h 2009-12-02 22:51:21.000000000 -0500
13536 -+++ linux-2.6.32.48/drivers/staging/hv/VmbusApi.h 2011-11-12 12:46:45.000000000 -0500
13537 +diff -urNp linux-2.6.32.46/drivers/staging/hv/VmbusApi.h linux-2.6.32.46/drivers/staging/hv/VmbusApi.h
13538 +--- linux-2.6.32.46/drivers/staging/hv/VmbusApi.h 2011-03-27 14:31:47.000000000 -0400
13539 ++++ linux-2.6.32.46/drivers/staging/hv/VmbusApi.h 2011-08-29 22:32:57.000000000 -0400
13540 @@ -109,7 +109,7 @@ struct vmbus_channel_interface {
13541 u32 *GpadlHandle);
13542 int (*TeardownGpadl)(struct hv_device *device, u32 GpadlHandle);
13543 @@ -38372,9 +38395,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/hv/VmbusApi.h linux-2.6.32.48/drivers
13544
13545 /* Base driver object */
13546 struct hv_driver {
13547 -diff -urNp linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c
13548 ---- linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c 2011-11-12 12:44:29.000000000 -0500
13549 -+++ linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c 2011-11-12 12:46:45.000000000 -0500
13550 +diff -urNp linux-2.6.32.46/drivers/staging/hv/vmbus_drv.c linux-2.6.32.46/drivers/staging/hv/vmbus_drv.c
13551 +--- linux-2.6.32.46/drivers/staging/hv/vmbus_drv.c 2011-03-27 14:31:47.000000000 -0400
13552 ++++ linux-2.6.32.46/drivers/staging/hv/vmbus_drv.c 2011-05-04 17:56:28.000000000 -0400
13553 @@ -532,7 +532,7 @@ static int vmbus_child_device_register(s
13554 to_device_context(root_device_obj);
13555 struct device_context *child_device_ctx =
13556 @@ -38393,9 +38416,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c linux-2.6.32.48/driver
13557
13558 /* The new device belongs to this bus */
13559 child_device_ctx->device.bus = &g_vmbus_drv.bus; /* device->dev.bus; */
13560 -diff -urNp linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h
13561 ---- linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h 2011-11-12 12:44:29.000000000 -0500
13562 -+++ linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h 2011-11-12 12:46:45.000000000 -0500
13563 +diff -urNp linux-2.6.32.46/drivers/staging/hv/VmbusPrivate.h linux-2.6.32.46/drivers/staging/hv/VmbusPrivate.h
13564 +--- linux-2.6.32.46/drivers/staging/hv/VmbusPrivate.h 2011-04-17 17:00:52.000000000 -0400
13565 ++++ linux-2.6.32.46/drivers/staging/hv/VmbusPrivate.h 2011-05-04 17:56:28.000000000 -0400
13566 @@ -59,7 +59,7 @@ enum VMBUS_CONNECT_STATE {
13567 struct VMBUS_CONNECTION {
13568 enum VMBUS_CONNECT_STATE ConnectState;
13569 @@ -38405,9 +38428,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h linux-2.6.32.48/dri
13570
13571 /*
13572 * Represents channel interrupts. Each bit position represents a
13573 -diff -urNp linux-2.6.32.48/drivers/staging/iio/ring_generic.h linux-2.6.32.48/drivers/staging/iio/ring_generic.h
13574 ---- linux-2.6.32.48/drivers/staging/iio/ring_generic.h 2009-12-02 22:51:21.000000000 -0500
13575 -+++ linux-2.6.32.48/drivers/staging/iio/ring_generic.h 2011-11-12 12:46:45.000000000 -0500
13576 +diff -urNp linux-2.6.32.46/drivers/staging/iio/ring_generic.h linux-2.6.32.46/drivers/staging/iio/ring_generic.h
13577 +--- linux-2.6.32.46/drivers/staging/iio/ring_generic.h 2011-03-27 14:31:47.000000000 -0400
13578 ++++ linux-2.6.32.46/drivers/staging/iio/ring_generic.h 2011-08-23 20:24:26.000000000 -0400
13579 @@ -87,7 +87,7 @@ struct iio_ring_access_funcs {
13580
13581 int (*is_enabled)(struct iio_ring_buffer *ring);
13582 @@ -38417,9 +38440,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/iio/ring_generic.h linux-2.6.32.48/dr
13583
13584 /**
13585 * struct iio_ring_buffer - general ring buffer structure
13586 -diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet.c linux-2.6.32.48/drivers/staging/octeon/ethernet.c
13587 ---- linux-2.6.32.48/drivers/staging/octeon/ethernet.c 2009-12-02 22:51:21.000000000 -0500
13588 -+++ linux-2.6.32.48/drivers/staging/octeon/ethernet.c 2011-11-12 12:46:45.000000000 -0500
13589 +diff -urNp linux-2.6.32.46/drivers/staging/octeon/ethernet.c linux-2.6.32.46/drivers/staging/octeon/ethernet.c
13590 +--- linux-2.6.32.46/drivers/staging/octeon/ethernet.c 2011-03-27 14:31:47.000000000 -0400
13591 ++++ linux-2.6.32.46/drivers/staging/octeon/ethernet.c 2011-05-04 17:56:28.000000000 -0400
13592 @@ -294,11 +294,11 @@ static struct net_device_stats *cvm_oct_
13593 * since the RX tasklet also increments it.
13594 */
13595 @@ -38436,9 +38459,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet.c linux-2.6.32.48/dri
13596 #endif
13597 }
13598
13599 -diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c
13600 ---- linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c 2009-12-02 22:51:21.000000000 -0500
13601 -+++ linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c 2011-11-12 12:46:45.000000000 -0500
13602 +diff -urNp linux-2.6.32.46/drivers/staging/octeon/ethernet-rx.c linux-2.6.32.46/drivers/staging/octeon/ethernet-rx.c
13603 +--- linux-2.6.32.46/drivers/staging/octeon/ethernet-rx.c 2011-03-27 14:31:47.000000000 -0400
13604 ++++ linux-2.6.32.46/drivers/staging/octeon/ethernet-rx.c 2011-05-04 17:56:28.000000000 -0400
13605 @@ -406,11 +406,11 @@ void cvm_oct_tasklet_rx(unsigned long un
13606 /* Increment RX stats for virtual ports */
13607 if (work->ipprt >= CVMX_PIP_NUM_INPUT_PORTS) {
13608 @@ -38467,9 +38490,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c linux-2.6.32.48/
13609 #endif
13610 dev_kfree_skb_irq(skb);
13611 }
13612 -diff -urNp linux-2.6.32.48/drivers/staging/panel/panel.c linux-2.6.32.48/drivers/staging/panel/panel.c
13613 ---- linux-2.6.32.48/drivers/staging/panel/panel.c 2011-11-12 12:44:29.000000000 -0500
13614 -+++ linux-2.6.32.48/drivers/staging/panel/panel.c 2011-11-12 12:46:45.000000000 -0500
13615 +diff -urNp linux-2.6.32.46/drivers/staging/panel/panel.c linux-2.6.32.46/drivers/staging/panel/panel.c
13616 +--- linux-2.6.32.46/drivers/staging/panel/panel.c 2011-03-27 14:31:47.000000000 -0400
13617 ++++ linux-2.6.32.46/drivers/staging/panel/panel.c 2011-04-17 15:56:46.000000000 -0400
13618 @@ -1305,7 +1305,7 @@ static int lcd_release(struct inode *ino
13619 return 0;
13620 }
13621 @@ -38488,9 +38511,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/panel/panel.c linux-2.6.32.48/drivers
13622 .read = keypad_read, /* read */
13623 .open = keypad_open, /* open */
13624 .release = keypad_release, /* close */
13625 -diff -urNp linux-2.6.32.48/drivers/staging/phison/phison.c linux-2.6.32.48/drivers/staging/phison/phison.c
13626 ---- linux-2.6.32.48/drivers/staging/phison/phison.c 2009-12-02 22:51:21.000000000 -0500
13627 -+++ linux-2.6.32.48/drivers/staging/phison/phison.c 2011-11-12 12:46:45.000000000 -0500
13628 +diff -urNp linux-2.6.32.46/drivers/staging/phison/phison.c linux-2.6.32.46/drivers/staging/phison/phison.c
13629 +--- linux-2.6.32.46/drivers/staging/phison/phison.c 2011-03-27 14:31:47.000000000 -0400
13630 ++++ linux-2.6.32.46/drivers/staging/phison/phison.c 2011-04-17 15:56:46.000000000 -0400
13631 @@ -43,7 +43,7 @@ static struct scsi_host_template phison_
13632 ATA_BMDMA_SHT(DRV_NAME),
13633 };
13634 @@ -38500,9 +38523,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/phison/phison.c linux-2.6.32.48/drive
13635 .inherits = &ata_bmdma_port_ops,
13636 .prereset = phison_pre_reset,
13637 };
13638 -diff -urNp linux-2.6.32.48/drivers/staging/poch/poch.c linux-2.6.32.48/drivers/staging/poch/poch.c
13639 ---- linux-2.6.32.48/drivers/staging/poch/poch.c 2009-12-02 22:51:21.000000000 -0500
13640 -+++ linux-2.6.32.48/drivers/staging/poch/poch.c 2011-11-12 12:46:45.000000000 -0500
13641 +diff -urNp linux-2.6.32.46/drivers/staging/poch/poch.c linux-2.6.32.46/drivers/staging/poch/poch.c
13642 +--- linux-2.6.32.46/drivers/staging/poch/poch.c 2011-03-27 14:31:47.000000000 -0400
13643 ++++ linux-2.6.32.46/drivers/staging/poch/poch.c 2011-04-17 15:56:46.000000000 -0400
13644 @@ -1057,7 +1057,7 @@ static int poch_ioctl(struct inode *inod
13645 return 0;
13646 }
13647 @@ -38512,9 +38535,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/poch/poch.c linux-2.6.32.48/drivers/s
13648 .owner = THIS_MODULE,
13649 .open = poch_open,
13650 .release = poch_release,
13651 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/inode.c linux-2.6.32.48/drivers/staging/pohmelfs/inode.c
13652 ---- linux-2.6.32.48/drivers/staging/pohmelfs/inode.c 2009-12-02 22:51:21.000000000 -0500
13653 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/inode.c 2011-11-12 12:46:45.000000000 -0500
13654 +diff -urNp linux-2.6.32.46/drivers/staging/pohmelfs/inode.c linux-2.6.32.46/drivers/staging/pohmelfs/inode.c
13655 +--- linux-2.6.32.46/drivers/staging/pohmelfs/inode.c 2011-03-27 14:31:47.000000000 -0400
13656 ++++ linux-2.6.32.46/drivers/staging/pohmelfs/inode.c 2011-05-04 17:56:20.000000000 -0400
13657 @@ -1850,7 +1850,7 @@ static int pohmelfs_fill_super(struct su
13658 mutex_init(&psb->mcache_lock);
13659 psb->mcache_root = RB_ROOT;
13660 @@ -38533,9 +38556,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/inode.c linux-2.6.32.48/driv
13661 atomic_long_set(&psb->total_inodes, 0);
13662
13663 mutex_init(&psb->state_lock);
13664 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c
13665 ---- linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c 2009-12-02 22:51:21.000000000 -0500
13666 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c 2011-11-12 12:46:45.000000000 -0500
13667 +diff -urNp linux-2.6.32.46/drivers/staging/pohmelfs/mcache.c linux-2.6.32.46/drivers/staging/pohmelfs/mcache.c
13668 +--- linux-2.6.32.46/drivers/staging/pohmelfs/mcache.c 2011-03-27 14:31:47.000000000 -0400
13669 ++++ linux-2.6.32.46/drivers/staging/pohmelfs/mcache.c 2011-04-17 15:56:46.000000000 -0400
13670 @@ -121,7 +121,7 @@ struct pohmelfs_mcache *pohmelfs_mcache_
13671 m->data = data;
13672 m->start = start;
13673 @@ -38545,9 +38568,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c linux-2.6.32.48/dri
13674
13675 mutex_lock(&psb->mcache_lock);
13676 err = pohmelfs_mcache_insert(psb, m);
13677 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h
13678 ---- linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h 2009-12-02 22:51:21.000000000 -0500
13679 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h 2011-11-12 12:46:45.000000000 -0500
13680 +diff -urNp linux-2.6.32.46/drivers/staging/pohmelfs/netfs.h linux-2.6.32.46/drivers/staging/pohmelfs/netfs.h
13681 +--- linux-2.6.32.46/drivers/staging/pohmelfs/netfs.h 2011-03-27 14:31:47.000000000 -0400
13682 ++++ linux-2.6.32.46/drivers/staging/pohmelfs/netfs.h 2011-05-04 17:56:20.000000000 -0400
13683 @@ -570,14 +570,14 @@ struct pohmelfs_config;
13684 struct pohmelfs_sb {
13685 struct rb_root mcache_root;
13686 @@ -38565,9 +38588,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h linux-2.6.32.48/driv
13687
13688 unsigned int crypto_attached_size;
13689 unsigned int crypto_align_size;
13690 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/trans.c linux-2.6.32.48/drivers/staging/pohmelfs/trans.c
13691 ---- linux-2.6.32.48/drivers/staging/pohmelfs/trans.c 2009-12-02 22:51:21.000000000 -0500
13692 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/trans.c 2011-11-12 12:46:45.000000000 -0500
13693 +diff -urNp linux-2.6.32.46/drivers/staging/pohmelfs/trans.c linux-2.6.32.46/drivers/staging/pohmelfs/trans.c
13694 +--- linux-2.6.32.46/drivers/staging/pohmelfs/trans.c 2011-03-27 14:31:47.000000000 -0400
13695 ++++ linux-2.6.32.46/drivers/staging/pohmelfs/trans.c 2011-05-04 17:56:28.000000000 -0400
13696 @@ -492,7 +492,7 @@ int netfs_trans_finish(struct netfs_tran
13697 int err;
13698 struct netfs_cmd *cmd = t->iovec.iov_base;
13699 @@ -38577,9 +38600,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/trans.c linux-2.6.32.48/driv
13700
13701 cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) +
13702 t->attached_size + t->attached_pages * sizeof(struct netfs_cmd);
13703 -diff -urNp linux-2.6.32.48/drivers/staging/sep/sep_driver.c linux-2.6.32.48/drivers/staging/sep/sep_driver.c
13704 ---- linux-2.6.32.48/drivers/staging/sep/sep_driver.c 2009-12-02 22:51:21.000000000 -0500
13705 -+++ linux-2.6.32.48/drivers/staging/sep/sep_driver.c 2011-11-12 12:46:45.000000000 -0500
13706 +diff -urNp linux-2.6.32.46/drivers/staging/sep/sep_driver.c linux-2.6.32.46/drivers/staging/sep/sep_driver.c
13707 +--- linux-2.6.32.46/drivers/staging/sep/sep_driver.c 2011-03-27 14:31:47.000000000 -0400
13708 ++++ linux-2.6.32.46/drivers/staging/sep/sep_driver.c 2011-04-17 15:56:46.000000000 -0400
13709 @@ -2603,7 +2603,7 @@ static struct pci_driver sep_pci_driver
13710 static dev_t sep_devno;
13711
13712 @@ -38589,9 +38612,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/sep/sep_driver.c linux-2.6.32.48/driv
13713 .owner = THIS_MODULE,
13714 .ioctl = sep_ioctl,
13715 .poll = sep_poll,
13716 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/usbip_common.h linux-2.6.32.48/drivers/staging/usbip/usbip_common.h
13717 ---- linux-2.6.32.48/drivers/staging/usbip/usbip_common.h 2011-11-12 12:44:29.000000000 -0500
13718 -+++ linux-2.6.32.48/drivers/staging/usbip/usbip_common.h 2011-11-12 12:46:45.000000000 -0500
13719 +diff -urNp linux-2.6.32.46/drivers/staging/usbip/usbip_common.h linux-2.6.32.46/drivers/staging/usbip/usbip_common.h
13720 +--- linux-2.6.32.46/drivers/staging/usbip/usbip_common.h 2011-04-17 17:00:52.000000000 -0400
13721 ++++ linux-2.6.32.46/drivers/staging/usbip/usbip_common.h 2011-08-23 20:24:26.000000000 -0400
13722 @@ -374,7 +374,7 @@ struct usbip_device {
13723 void (*shutdown)(struct usbip_device *);
13724 void (*reset)(struct usbip_device *);
13725 @@ -38601,9 +38624,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/usbip/usbip_common.h linux-2.6.32.48/
13726 };
13727
13728
13729 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci.h linux-2.6.32.48/drivers/staging/usbip/vhci.h
13730 ---- linux-2.6.32.48/drivers/staging/usbip/vhci.h 2011-11-12 12:44:29.000000000 -0500
13731 -+++ linux-2.6.32.48/drivers/staging/usbip/vhci.h 2011-11-12 12:46:45.000000000 -0500
13732 +diff -urNp linux-2.6.32.46/drivers/staging/usbip/vhci.h linux-2.6.32.46/drivers/staging/usbip/vhci.h
13733 +--- linux-2.6.32.46/drivers/staging/usbip/vhci.h 2011-03-27 14:31:47.000000000 -0400
13734 ++++ linux-2.6.32.46/drivers/staging/usbip/vhci.h 2011-05-04 17:56:28.000000000 -0400
13735 @@ -92,7 +92,7 @@ struct vhci_hcd {
13736 unsigned resuming:1;
13737 unsigned long re_timeout;
13738 @@ -38613,9 +38636,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci.h linux-2.6.32.48/drivers/
13739
13740 /*
13741 * NOTE:
13742 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c
13743 ---- linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c 2011-11-12 12:44:29.000000000 -0500
13744 -+++ linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c 2011-11-12 12:46:45.000000000 -0500
13745 +diff -urNp linux-2.6.32.46/drivers/staging/usbip/vhci_hcd.c linux-2.6.32.46/drivers/staging/usbip/vhci_hcd.c
13746 +--- linux-2.6.32.46/drivers/staging/usbip/vhci_hcd.c 2011-05-10 22:12:01.000000000 -0400
13747 ++++ linux-2.6.32.46/drivers/staging/usbip/vhci_hcd.c 2011-05-10 22:12:33.000000000 -0400
13748 @@ -534,7 +534,7 @@ static void vhci_tx_urb(struct urb *urb)
13749 return;
13750 }
13751 @@ -38643,9 +38666,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c linux-2.6.32.48/driv
13752 spin_lock_init(&vhci->lock);
13753
13754
13755 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c
13756 ---- linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c 2011-11-12 12:44:29.000000000 -0500
13757 -+++ linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c 2011-11-12 12:46:45.000000000 -0500
13758 +diff -urNp linux-2.6.32.46/drivers/staging/usbip/vhci_rx.c linux-2.6.32.46/drivers/staging/usbip/vhci_rx.c
13759 +--- linux-2.6.32.46/drivers/staging/usbip/vhci_rx.c 2011-04-17 17:00:52.000000000 -0400
13760 ++++ linux-2.6.32.46/drivers/staging/usbip/vhci_rx.c 2011-05-04 17:56:28.000000000 -0400
13761 @@ -78,7 +78,7 @@ static void vhci_recv_ret_submit(struct
13762 usbip_uerr("cannot find a urb of seqnum %u\n",
13763 pdu->base.seqnum);
13764 @@ -38655,9 +38678,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c linux-2.6.32.48/drive
13765 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
13766 return;
13767 }
13768 -diff -urNp linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c
13769 ---- linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c 2009-12-02 22:51:21.000000000 -0500
13770 -+++ linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c 2011-11-12 12:46:45.000000000 -0500
13771 +diff -urNp linux-2.6.32.46/drivers/staging/vme/devices/vme_user.c linux-2.6.32.46/drivers/staging/vme/devices/vme_user.c
13772 +--- linux-2.6.32.46/drivers/staging/vme/devices/vme_user.c 2011-03-27 14:31:47.000000000 -0400
13773 ++++ linux-2.6.32.46/drivers/staging/vme/devices/vme_user.c 2011-04-17 15:56:46.000000000 -0400
13774 @@ -136,7 +136,7 @@ static int vme_user_ioctl(struct inode *
13775 static int __init vme_user_probe(struct device *, int, int);
13776 static int __exit vme_user_remove(struct device *, int, int);
13777 @@ -38667,9 +38690,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c linux-2.6.32.4
13778 .open = vme_user_open,
13779 .release = vme_user_release,
13780 .read = vme_user_read,
13781 -diff -urNp linux-2.6.32.48/drivers/staging/vt6655/hostap.c linux-2.6.32.48/drivers/staging/vt6655/hostap.c
13782 ---- linux-2.6.32.48/drivers/staging/vt6655/hostap.c 2009-12-02 22:51:21.000000000 -0500
13783 -+++ linux-2.6.32.48/drivers/staging/vt6655/hostap.c 2011-11-12 12:46:45.000000000 -0500
13784 +diff -urNp linux-2.6.32.46/drivers/staging/vt6655/hostap.c linux-2.6.32.46/drivers/staging/vt6655/hostap.c
13785 +--- linux-2.6.32.46/drivers/staging/vt6655/hostap.c 2011-03-27 14:31:47.000000000 -0400
13786 ++++ linux-2.6.32.46/drivers/staging/vt6655/hostap.c 2011-09-14 09:51:07.000000000 -0400
13787 @@ -84,7 +84,7 @@ static int hostap_enable_hostapd(PSDevic
13788 PSDevice apdev_priv;
13789 struct net_device *dev = pDevice->dev;
13790 @@ -38679,9 +38702,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/vt6655/hostap.c linux-2.6.32.48/drive
13791 .ndo_start_xmit = pDevice->tx_80211,
13792 };
13793
13794 -diff -urNp linux-2.6.32.48/drivers/staging/vt6656/hostap.c linux-2.6.32.48/drivers/staging/vt6656/hostap.c
13795 ---- linux-2.6.32.48/drivers/staging/vt6656/hostap.c 2009-12-02 22:51:21.000000000 -0500
13796 -+++ linux-2.6.32.48/drivers/staging/vt6656/hostap.c 2011-11-12 12:46:45.000000000 -0500
13797 +diff -urNp linux-2.6.32.46/drivers/staging/vt6656/hostap.c linux-2.6.32.46/drivers/staging/vt6656/hostap.c
13798 +--- linux-2.6.32.46/drivers/staging/vt6656/hostap.c 2011-03-27 14:31:47.000000000 -0400
13799 ++++ linux-2.6.32.46/drivers/staging/vt6656/hostap.c 2011-09-14 09:49:53.000000000 -0400
13800 @@ -86,7 +86,7 @@ static int hostap_enable_hostapd(PSDevic
13801 PSDevice apdev_priv;
13802 struct net_device *dev = pDevice->dev;
13803 @@ -38691,9 +38714,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/vt6656/hostap.c linux-2.6.32.48/drive
13804 .ndo_start_xmit = pDevice->tx_80211,
13805 };
13806
13807 -diff -urNp linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c
13808 ---- linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c 2009-12-02 22:51:21.000000000 -0500
13809 -+++ linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c 2011-11-12 12:46:45.000000000 -0500
13810 +diff -urNp linux-2.6.32.46/drivers/staging/wlan-ng/hfa384x_usb.c linux-2.6.32.46/drivers/staging/wlan-ng/hfa384x_usb.c
13811 +--- linux-2.6.32.46/drivers/staging/wlan-ng/hfa384x_usb.c 2011-03-27 14:31:47.000000000 -0400
13812 ++++ linux-2.6.32.46/drivers/staging/wlan-ng/hfa384x_usb.c 2011-08-23 20:24:26.000000000 -0400
13813 @@ -205,7 +205,7 @@ static void unlocked_usbctlx_complete(hf
13814
13815 struct usbctlx_completor {
13816 @@ -38703,9 +38726,9 @@ diff -urNp linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c linux-2.6.32.48
13817 typedef struct usbctlx_completor usbctlx_completor_t;
13818
13819 static int
13820 -diff -urNp linux-2.6.32.48/drivers/telephony/ixj.c linux-2.6.32.48/drivers/telephony/ixj.c
13821 ---- linux-2.6.32.48/drivers/telephony/ixj.c 2009-12-02 22:51:21.000000000 -0500
13822 -+++ linux-2.6.32.48/drivers/telephony/ixj.c 2011-11-12 12:46:45.000000000 -0500
13823 +diff -urNp linux-2.6.32.46/drivers/telephony/ixj.c linux-2.6.32.46/drivers/telephony/ixj.c
13824 +--- linux-2.6.32.46/drivers/telephony/ixj.c 2011-03-27 14:31:47.000000000 -0400
13825 ++++ linux-2.6.32.46/drivers/telephony/ixj.c 2011-05-16 21:46:57.000000000 -0400
13826 @@ -4976,6 +4976,8 @@ static int ixj_daa_cid_read(IXJ *j)
13827 bool mContinue;
13828 char *pIn, *pOut;
13829 @@ -38715,9 +38738,9 @@ diff -urNp linux-2.6.32.48/drivers/telephony/ixj.c linux-2.6.32.48/drivers/telep
13830 if (!SCI_Prepare(j))
13831 return 0;
13832
13833 -diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
13834 ---- linux-2.6.32.48/drivers/uio/uio.c 2009-12-02 22:51:21.000000000 -0500
13835 -+++ linux-2.6.32.48/drivers/uio/uio.c 2011-11-12 12:46:45.000000000 -0500
13836 +diff -urNp linux-2.6.32.46/drivers/uio/uio.c linux-2.6.32.46/drivers/uio/uio.c
13837 +--- linux-2.6.32.46/drivers/uio/uio.c 2011-03-27 14:31:47.000000000 -0400
13838 ++++ linux-2.6.32.46/drivers/uio/uio.c 2011-05-04 17:56:20.000000000 -0400
13839 @@ -23,6 +23,7 @@
13840 #include <linux/string.h>
13841 #include <linux/kobject.h>
13842 @@ -38827,9 +38850,9 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
13843
13844 ret = uio_get_minor(idev);
13845 if (ret)
13846 -diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/atm/usbatm.c
13847 ---- linux-2.6.32.48/drivers/usb/atm/usbatm.c 2009-12-02 22:51:21.000000000 -0500
13848 -+++ linux-2.6.32.48/drivers/usb/atm/usbatm.c 2011-11-12 12:46:45.000000000 -0500
13849 +diff -urNp linux-2.6.32.46/drivers/usb/atm/usbatm.c linux-2.6.32.46/drivers/usb/atm/usbatm.c
13850 +--- linux-2.6.32.46/drivers/usb/atm/usbatm.c 2011-03-27 14:31:47.000000000 -0400
13851 ++++ linux-2.6.32.46/drivers/usb/atm/usbatm.c 2011-04-17 15:56:46.000000000 -0400
13852 @@ -333,7 +333,7 @@ static void usbatm_extract_one_cell(stru
13853 if (printk_ratelimit())
13854 atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n",
13855 @@ -38909,9 +38932,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
13856
13857 if (!left--) {
13858 if (instance->disconnected)
13859 -diff -urNp linux-2.6.32.48/drivers/usb/class/cdc-wdm.c linux-2.6.32.48/drivers/usb/class/cdc-wdm.c
13860 ---- linux-2.6.32.48/drivers/usb/class/cdc-wdm.c 2009-12-02 22:51:21.000000000 -0500
13861 -+++ linux-2.6.32.48/drivers/usb/class/cdc-wdm.c 2011-11-12 12:46:45.000000000 -0500
13862 +diff -urNp linux-2.6.32.46/drivers/usb/class/cdc-wdm.c linux-2.6.32.46/drivers/usb/class/cdc-wdm.c
13863 +--- linux-2.6.32.46/drivers/usb/class/cdc-wdm.c 2011-03-27 14:31:47.000000000 -0400
13864 ++++ linux-2.6.32.46/drivers/usb/class/cdc-wdm.c 2011-04-17 15:56:46.000000000 -0400
13865 @@ -314,7 +314,7 @@ static ssize_t wdm_write
13866 if (r < 0)
13867 goto outnp;
13868 @@ -38921,9 +38944,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/class/cdc-wdm.c linux-2.6.32.48/drivers/u
13869 r = wait_event_interruptible(desc->wait, !test_bit(WDM_IN_USE,
13870 &desc->flags));
13871 else
13872 -diff -urNp linux-2.6.32.48/drivers/usb/core/hcd.c linux-2.6.32.48/drivers/usb/core/hcd.c
13873 ---- linux-2.6.32.48/drivers/usb/core/hcd.c 2011-11-12 12:44:29.000000000 -0500
13874 -+++ linux-2.6.32.48/drivers/usb/core/hcd.c 2011-11-12 12:46:45.000000000 -0500
13875 +diff -urNp linux-2.6.32.46/drivers/usb/core/hcd.c linux-2.6.32.46/drivers/usb/core/hcd.c
13876 +--- linux-2.6.32.46/drivers/usb/core/hcd.c 2011-03-27 14:31:47.000000000 -0400
13877 ++++ linux-2.6.32.46/drivers/usb/core/hcd.c 2011-04-17 15:56:46.000000000 -0400
13878 @@ -2216,7 +2216,7 @@ EXPORT_SYMBOL_GPL(usb_hcd_platform_shutd
13879
13880 #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
13881 @@ -38942,9 +38965,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/core/hcd.c linux-2.6.32.48/drivers/usb/co
13882 {
13883
13884 if (mon_ops)
13885 -diff -urNp linux-2.6.32.48/drivers/usb/core/hcd.h linux-2.6.32.48/drivers/usb/core/hcd.h
13886 ---- linux-2.6.32.48/drivers/usb/core/hcd.h 2011-11-12 12:44:29.000000000 -0500
13887 -+++ linux-2.6.32.48/drivers/usb/core/hcd.h 2011-11-12 12:46:45.000000000 -0500
13888 +diff -urNp linux-2.6.32.46/drivers/usb/core/hcd.h linux-2.6.32.46/drivers/usb/core/hcd.h
13889 +--- linux-2.6.32.46/drivers/usb/core/hcd.h 2011-03-27 14:31:47.000000000 -0400
13890 ++++ linux-2.6.32.46/drivers/usb/core/hcd.h 2011-04-17 15:56:46.000000000 -0400
13891 @@ -486,13 +486,13 @@ static inline void usbfs_cleanup(void) {
13892 #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
13893
13894 @@ -38972,9 +38995,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/core/hcd.h linux-2.6.32.48/drivers/usb/co
13895 void usb_mon_deregister(void);
13896
13897 #else
13898 -diff -urNp linux-2.6.32.48/drivers/usb/core/message.c linux-2.6.32.48/drivers/usb/core/message.c
13899 ---- linux-2.6.32.48/drivers/usb/core/message.c 2011-11-12 12:44:29.000000000 -0500
13900 -+++ linux-2.6.32.48/drivers/usb/core/message.c 2011-11-12 12:46:45.000000000 -0500
13901 +diff -urNp linux-2.6.32.46/drivers/usb/core/message.c linux-2.6.32.46/drivers/usb/core/message.c
13902 +--- linux-2.6.32.46/drivers/usb/core/message.c 2011-03-27 14:31:47.000000000 -0400
13903 ++++ linux-2.6.32.46/drivers/usb/core/message.c 2011-04-17 15:56:46.000000000 -0400
13904 @@ -914,8 +914,8 @@ char *usb_cache_string(struct usb_device
13905 buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO);
13906 if (buf) {
13907 @@ -38986,9 +39009,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/core/message.c linux-2.6.32.48/drivers/us
13908 if (!smallbuf)
13909 return buf;
13910 memcpy(smallbuf, buf, len);
13911 -diff -urNp linux-2.6.32.48/drivers/usb/misc/appledisplay.c linux-2.6.32.48/drivers/usb/misc/appledisplay.c
13912 ---- linux-2.6.32.48/drivers/usb/misc/appledisplay.c 2011-11-12 12:44:29.000000000 -0500
13913 -+++ linux-2.6.32.48/drivers/usb/misc/appledisplay.c 2011-11-12 12:46:45.000000000 -0500
13914 +diff -urNp linux-2.6.32.46/drivers/usb/misc/appledisplay.c linux-2.6.32.46/drivers/usb/misc/appledisplay.c
13915 +--- linux-2.6.32.46/drivers/usb/misc/appledisplay.c 2011-03-27 14:31:47.000000000 -0400
13916 ++++ linux-2.6.32.46/drivers/usb/misc/appledisplay.c 2011-04-17 15:56:46.000000000 -0400
13917 @@ -178,7 +178,7 @@ static int appledisplay_bl_get_brightnes
13918 return pdata->msgdata[1];
13919 }
13920 @@ -38998,9 +39021,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/misc/appledisplay.c linux-2.6.32.48/drive
13921 .get_brightness = appledisplay_bl_get_brightness,
13922 .update_status = appledisplay_bl_update_status,
13923 };
13924 -diff -urNp linux-2.6.32.48/drivers/usb/mon/mon_main.c linux-2.6.32.48/drivers/usb/mon/mon_main.c
13925 ---- linux-2.6.32.48/drivers/usb/mon/mon_main.c 2009-12-02 22:51:21.000000000 -0500
13926 -+++ linux-2.6.32.48/drivers/usb/mon/mon_main.c 2011-11-12 12:46:45.000000000 -0500
13927 +diff -urNp linux-2.6.32.46/drivers/usb/mon/mon_main.c linux-2.6.32.46/drivers/usb/mon/mon_main.c
13928 +--- linux-2.6.32.46/drivers/usb/mon/mon_main.c 2011-03-27 14:31:47.000000000 -0400
13929 ++++ linux-2.6.32.46/drivers/usb/mon/mon_main.c 2011-04-17 15:56:46.000000000 -0400
13930 @@ -238,7 +238,7 @@ static struct notifier_block mon_nb = {
13931 /*
13932 * Ops
13933 @@ -39010,9 +39033,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/mon/mon_main.c linux-2.6.32.48/drivers/us
13934 .urb_submit = mon_submit,
13935 .urb_submit_error = mon_submit_error,
13936 .urb_complete = mon_complete,
13937 -diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h
13938 ---- linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h 2009-12-02 22:51:21.000000000 -0500
13939 -+++ linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h 2011-11-12 12:46:45.000000000 -0500
13940 +diff -urNp linux-2.6.32.46/drivers/usb/wusbcore/wa-hc.h linux-2.6.32.46/drivers/usb/wusbcore/wa-hc.h
13941 +--- linux-2.6.32.46/drivers/usb/wusbcore/wa-hc.h 2011-03-27 14:31:47.000000000 -0400
13942 ++++ linux-2.6.32.46/drivers/usb/wusbcore/wa-hc.h 2011-05-04 17:56:28.000000000 -0400
13943 @@ -192,7 +192,7 @@ struct wahc {
13944 struct list_head xfer_delayed_list;
13945 spinlock_t xfer_list_lock;
13946 @@ -39031,9 +39054,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h linux-2.6.32.48/drivers/
13947 }
13948
13949 /**
13950 -diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c
13951 ---- linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c 2009-12-02 22:51:21.000000000 -0500
13952 -+++ linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c 2011-11-12 12:46:45.000000000 -0500
13953 +diff -urNp linux-2.6.32.46/drivers/usb/wusbcore/wa-xfer.c linux-2.6.32.46/drivers/usb/wusbcore/wa-xfer.c
13954 +--- linux-2.6.32.46/drivers/usb/wusbcore/wa-xfer.c 2011-03-27 14:31:47.000000000 -0400
13955 ++++ linux-2.6.32.46/drivers/usb/wusbcore/wa-xfer.c 2011-05-04 17:56:28.000000000 -0400
13956 @@ -293,7 +293,7 @@ out:
13957 */
13958 static void wa_xfer_id_init(struct wa_xfer *xfer)
13959 @@ -39043,9 +39066,9 @@ diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c linux-2.6.32.48/driver
13960 }
13961
13962 /*
13963 -diff -urNp linux-2.6.32.48/drivers/uwb/wlp/messages.c linux-2.6.32.48/drivers/uwb/wlp/messages.c
13964 ---- linux-2.6.32.48/drivers/uwb/wlp/messages.c 2009-12-02 22:51:21.000000000 -0500
13965 -+++ linux-2.6.32.48/drivers/uwb/wlp/messages.c 2011-11-12 12:46:45.000000000 -0500
13966 +diff -urNp linux-2.6.32.46/drivers/uwb/wlp/messages.c linux-2.6.32.46/drivers/uwb/wlp/messages.c
13967 +--- linux-2.6.32.46/drivers/uwb/wlp/messages.c 2011-03-27 14:31:47.000000000 -0400
13968 ++++ linux-2.6.32.46/drivers/uwb/wlp/messages.c 2011-04-17 15:56:46.000000000 -0400
13969 @@ -903,7 +903,7 @@ int wlp_parse_f0(struct wlp *wlp, struct
13970 size_t len = skb->len;
13971 size_t used;
13972 @@ -39055,9 +39078,9 @@ diff -urNp linux-2.6.32.48/drivers/uwb/wlp/messages.c linux-2.6.32.48/drivers/uw
13973 enum wlp_assc_error assc_err;
13974 char enonce_buf[WLP_WSS_NONCE_STRSIZE];
13975 char rnonce_buf[WLP_WSS_NONCE_STRSIZE];
13976 -diff -urNp linux-2.6.32.48/drivers/uwb/wlp/sysfs.c linux-2.6.32.48/drivers/uwb/wlp/sysfs.c
13977 ---- linux-2.6.32.48/drivers/uwb/wlp/sysfs.c 2009-12-02 22:51:21.000000000 -0500
13978 -+++ linux-2.6.32.48/drivers/uwb/wlp/sysfs.c 2011-11-12 12:46:45.000000000 -0500
13979 +diff -urNp linux-2.6.32.46/drivers/uwb/wlp/sysfs.c linux-2.6.32.46/drivers/uwb/wlp/sysfs.c
13980 +--- linux-2.6.32.46/drivers/uwb/wlp/sysfs.c 2011-03-27 14:31:47.000000000 -0400
13981 ++++ linux-2.6.32.46/drivers/uwb/wlp/sysfs.c 2011-04-17 15:56:46.000000000 -0400
13982 @@ -615,8 +615,7 @@ ssize_t wlp_wss_attr_store(struct kobjec
13983 return ret;
13984 }
13985 @@ -39068,9 +39091,9 @@ diff -urNp linux-2.6.32.48/drivers/uwb/wlp/sysfs.c linux-2.6.32.48/drivers/uwb/w
13986 .show = wlp_wss_attr_show,
13987 .store = wlp_wss_attr_store,
13988 };
13989 -diff -urNp linux-2.6.32.48/drivers/video/atmel_lcdfb.c linux-2.6.32.48/drivers/video/atmel_lcdfb.c
13990 ---- linux-2.6.32.48/drivers/video/atmel_lcdfb.c 2009-12-02 22:51:21.000000000 -0500
13991 -+++ linux-2.6.32.48/drivers/video/atmel_lcdfb.c 2011-11-12 12:46:45.000000000 -0500
13992 +diff -urNp linux-2.6.32.46/drivers/video/atmel_lcdfb.c linux-2.6.32.46/drivers/video/atmel_lcdfb.c
13993 +--- linux-2.6.32.46/drivers/video/atmel_lcdfb.c 2011-03-27 14:31:47.000000000 -0400
13994 ++++ linux-2.6.32.46/drivers/video/atmel_lcdfb.c 2011-04-17 15:56:46.000000000 -0400
13995 @@ -110,7 +110,7 @@ static int atmel_bl_get_brightness(struc
13996 return lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_VAL);
13997 }
13998 @@ -39080,9 +39103,9 @@ diff -urNp linux-2.6.32.48/drivers/video/atmel_lcdfb.c linux-2.6.32.48/drivers/v
13999 .update_status = atmel_bl_update_status,
14000 .get_brightness = atmel_bl_get_brightness,
14001 };
14002 -diff -urNp linux-2.6.32.48/drivers/video/aty/aty128fb.c linux-2.6.32.48/drivers/video/aty/aty128fb.c
14003 ---- linux-2.6.32.48/drivers/video/aty/aty128fb.c 2009-12-02 22:51:21.000000000 -0500
14004 -+++ linux-2.6.32.48/drivers/video/aty/aty128fb.c 2011-11-12 12:46:45.000000000 -0500
14005 +diff -urNp linux-2.6.32.46/drivers/video/aty/aty128fb.c linux-2.6.32.46/drivers/video/aty/aty128fb.c
14006 +--- linux-2.6.32.46/drivers/video/aty/aty128fb.c 2011-03-27 14:31:47.000000000 -0400
14007 ++++ linux-2.6.32.46/drivers/video/aty/aty128fb.c 2011-04-17 15:56:46.000000000 -0400
14008 @@ -1787,7 +1787,7 @@ static int aty128_bl_get_brightness(stru
14009 return bd->props.brightness;
14010 }
14011 @@ -39092,9 +39115,9 @@ diff -urNp linux-2.6.32.48/drivers/video/aty/aty128fb.c linux-2.6.32.48/drivers/
14012 .get_brightness = aty128_bl_get_brightness,
14013 .update_status = aty128_bl_update_status,
14014 };
14015 -diff -urNp linux-2.6.32.48/drivers/video/aty/atyfb_base.c linux-2.6.32.48/drivers/video/aty/atyfb_base.c
14016 ---- linux-2.6.32.48/drivers/video/aty/atyfb_base.c 2009-12-02 22:51:21.000000000 -0500
14017 -+++ linux-2.6.32.48/drivers/video/aty/atyfb_base.c 2011-11-12 12:46:45.000000000 -0500
14018 +diff -urNp linux-2.6.32.46/drivers/video/aty/atyfb_base.c linux-2.6.32.46/drivers/video/aty/atyfb_base.c
14019 +--- linux-2.6.32.46/drivers/video/aty/atyfb_base.c 2011-03-27 14:31:47.000000000 -0400
14020 ++++ linux-2.6.32.46/drivers/video/aty/atyfb_base.c 2011-04-17 15:56:46.000000000 -0400
14021 @@ -2225,7 +2225,7 @@ static int aty_bl_get_brightness(struct
14022 return bd->props.brightness;
14023 }
14024 @@ -39104,9 +39127,9 @@ diff -urNp linux-2.6.32.48/drivers/video/aty/atyfb_base.c linux-2.6.32.48/driver
14025 .get_brightness = aty_bl_get_brightness,
14026 .update_status = aty_bl_update_status,
14027 };
14028 -diff -urNp linux-2.6.32.48/drivers/video/aty/radeon_backlight.c linux-2.6.32.48/drivers/video/aty/radeon_backlight.c
14029 ---- linux-2.6.32.48/drivers/video/aty/radeon_backlight.c 2009-12-02 22:51:21.000000000 -0500
14030 -+++ linux-2.6.32.48/drivers/video/aty/radeon_backlight.c 2011-11-12 12:46:45.000000000 -0500
14031 +diff -urNp linux-2.6.32.46/drivers/video/aty/radeon_backlight.c linux-2.6.32.46/drivers/video/aty/radeon_backlight.c
14032 +--- linux-2.6.32.46/drivers/video/aty/radeon_backlight.c 2011-03-27 14:31:47.000000000 -0400
14033 ++++ linux-2.6.32.46/drivers/video/aty/radeon_backlight.c 2011-04-17 15:56:46.000000000 -0400
14034 @@ -127,7 +127,7 @@ static int radeon_bl_get_brightness(stru
14035 return bd->props.brightness;
14036 }
14037 @@ -39116,9 +39139,9 @@ diff -urNp linux-2.6.32.48/drivers/video/aty/radeon_backlight.c linux-2.6.32.48/
14038 .get_brightness = radeon_bl_get_brightness,
14039 .update_status = radeon_bl_update_status,
14040 };
14041 -diff -urNp linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c
14042 ---- linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c 2009-12-02 22:51:21.000000000 -0500
14043 -+++ linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c 2011-11-12 12:46:45.000000000 -0500
14044 +diff -urNp linux-2.6.32.46/drivers/video/backlight/adp5520_bl.c linux-2.6.32.46/drivers/video/backlight/adp5520_bl.c
14045 +--- linux-2.6.32.46/drivers/video/backlight/adp5520_bl.c 2011-03-27 14:31:47.000000000 -0400
14046 ++++ linux-2.6.32.46/drivers/video/backlight/adp5520_bl.c 2011-04-17 15:56:46.000000000 -0400
14047 @@ -84,7 +84,7 @@ static int adp5520_bl_get_brightness(str
14048 return error ? data->current_brightness : reg_val;
14049 }
14050 @@ -39128,9 +39151,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c linux-2.6.32.48/
14051 .update_status = adp5520_bl_update_status,
14052 .get_brightness = adp5520_bl_get_brightness,
14053 };
14054 -diff -urNp linux-2.6.32.48/drivers/video/backlight/adx_bl.c linux-2.6.32.48/drivers/video/backlight/adx_bl.c
14055 ---- linux-2.6.32.48/drivers/video/backlight/adx_bl.c 2009-12-02 22:51:21.000000000 -0500
14056 -+++ linux-2.6.32.48/drivers/video/backlight/adx_bl.c 2011-11-12 12:46:45.000000000 -0500
14057 +diff -urNp linux-2.6.32.46/drivers/video/backlight/adx_bl.c linux-2.6.32.46/drivers/video/backlight/adx_bl.c
14058 +--- linux-2.6.32.46/drivers/video/backlight/adx_bl.c 2011-03-27 14:31:47.000000000 -0400
14059 ++++ linux-2.6.32.46/drivers/video/backlight/adx_bl.c 2011-04-17 15:56:46.000000000 -0400
14060 @@ -61,7 +61,7 @@ static int adx_backlight_check_fb(struct
14061 return 1;
14062 }
14063 @@ -39140,9 +39163,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/adx_bl.c linux-2.6.32.48/driv
14064 .options = 0,
14065 .update_status = adx_backlight_update_status,
14066 .get_brightness = adx_backlight_get_brightness,
14067 -diff -urNp linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c
14068 ---- linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c 2009-12-02 22:51:21.000000000 -0500
14069 -+++ linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c 2011-11-12 12:46:45.000000000 -0500
14070 +diff -urNp linux-2.6.32.46/drivers/video/backlight/atmel-pwm-bl.c linux-2.6.32.46/drivers/video/backlight/atmel-pwm-bl.c
14071 +--- linux-2.6.32.46/drivers/video/backlight/atmel-pwm-bl.c 2011-03-27 14:31:47.000000000 -0400
14072 ++++ linux-2.6.32.46/drivers/video/backlight/atmel-pwm-bl.c 2011-04-17 15:56:46.000000000 -0400
14073 @@ -113,7 +113,7 @@ static int atmel_pwm_bl_init_pwm(struct
14074 return pwm_channel_enable(&pwmbl->pwmc);
14075 }
14076 @@ -39152,9 +39175,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c linux-2.6.32.4
14077 .get_brightness = atmel_pwm_bl_get_intensity,
14078 .update_status = atmel_pwm_bl_set_intensity,
14079 };
14080 -diff -urNp linux-2.6.32.48/drivers/video/backlight/backlight.c linux-2.6.32.48/drivers/video/backlight/backlight.c
14081 ---- linux-2.6.32.48/drivers/video/backlight/backlight.c 2011-11-12 12:44:30.000000000 -0500
14082 -+++ linux-2.6.32.48/drivers/video/backlight/backlight.c 2011-11-12 12:46:45.000000000 -0500
14083 +diff -urNp linux-2.6.32.46/drivers/video/backlight/backlight.c linux-2.6.32.46/drivers/video/backlight/backlight.c
14084 +--- linux-2.6.32.46/drivers/video/backlight/backlight.c 2011-03-27 14:31:47.000000000 -0400
14085 ++++ linux-2.6.32.46/drivers/video/backlight/backlight.c 2011-04-17 15:56:46.000000000 -0400
14086 @@ -269,7 +269,7 @@ EXPORT_SYMBOL(backlight_force_update);
14087 * ERR_PTR() or a pointer to the newly allocated device.
14088 */
14089 @@ -39164,9 +39187,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/backlight.c linux-2.6.32.48/d
14090 {
14091 struct backlight_device *new_bd;
14092 int rc;
14093 -diff -urNp linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c
14094 ---- linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c 2009-12-02 22:51:21.000000000 -0500
14095 -+++ linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c 2011-11-12 12:46:45.000000000 -0500
14096 +diff -urNp linux-2.6.32.46/drivers/video/backlight/corgi_lcd.c linux-2.6.32.46/drivers/video/backlight/corgi_lcd.c
14097 +--- linux-2.6.32.46/drivers/video/backlight/corgi_lcd.c 2011-03-27 14:31:47.000000000 -0400
14098 ++++ linux-2.6.32.46/drivers/video/backlight/corgi_lcd.c 2011-04-17 15:56:46.000000000 -0400
14099 @@ -451,7 +451,7 @@ void corgi_lcd_limit_intensity(int limit
14100 }
14101 EXPORT_SYMBOL(corgi_lcd_limit_intensity);
14102 @@ -39176,9 +39199,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c linux-2.6.32.48/d
14103 .get_brightness = corgi_bl_get_intensity,
14104 .update_status = corgi_bl_update_status,
14105 };
14106 -diff -urNp linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c
14107 ---- linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c 2009-12-02 22:51:21.000000000 -0500
14108 -+++ linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c 2011-11-12 12:46:45.000000000 -0500
14109 +diff -urNp linux-2.6.32.46/drivers/video/backlight/cr_bllcd.c linux-2.6.32.46/drivers/video/backlight/cr_bllcd.c
14110 +--- linux-2.6.32.46/drivers/video/backlight/cr_bllcd.c 2011-03-27 14:31:47.000000000 -0400
14111 ++++ linux-2.6.32.46/drivers/video/backlight/cr_bllcd.c 2011-04-17 15:56:46.000000000 -0400
14112 @@ -108,7 +108,7 @@ static int cr_backlight_get_intensity(st
14113 return intensity;
14114 }
14115 @@ -39188,9 +39211,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c linux-2.6.32.48/dr
14116 .get_brightness = cr_backlight_get_intensity,
14117 .update_status = cr_backlight_set_intensity,
14118 };
14119 -diff -urNp linux-2.6.32.48/drivers/video/backlight/da903x_bl.c linux-2.6.32.48/drivers/video/backlight/da903x_bl.c
14120 ---- linux-2.6.32.48/drivers/video/backlight/da903x_bl.c 2009-12-02 22:51:21.000000000 -0500
14121 -+++ linux-2.6.32.48/drivers/video/backlight/da903x_bl.c 2011-11-12 12:46:45.000000000 -0500
14122 +diff -urNp linux-2.6.32.46/drivers/video/backlight/da903x_bl.c linux-2.6.32.46/drivers/video/backlight/da903x_bl.c
14123 +--- linux-2.6.32.46/drivers/video/backlight/da903x_bl.c 2011-03-27 14:31:47.000000000 -0400
14124 ++++ linux-2.6.32.46/drivers/video/backlight/da903x_bl.c 2011-04-17 15:56:46.000000000 -0400
14125 @@ -94,7 +94,7 @@ static int da903x_backlight_get_brightne
14126 return data->current_brightness;
14127 }
14128 @@ -39200,9 +39223,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/da903x_bl.c linux-2.6.32.48/d
14129 .update_status = da903x_backlight_update_status,
14130 .get_brightness = da903x_backlight_get_brightness,
14131 };
14132 -diff -urNp linux-2.6.32.48/drivers/video/backlight/generic_bl.c linux-2.6.32.48/drivers/video/backlight/generic_bl.c
14133 ---- linux-2.6.32.48/drivers/video/backlight/generic_bl.c 2009-12-02 22:51:21.000000000 -0500
14134 -+++ linux-2.6.32.48/drivers/video/backlight/generic_bl.c 2011-11-12 12:46:45.000000000 -0500
14135 +diff -urNp linux-2.6.32.46/drivers/video/backlight/generic_bl.c linux-2.6.32.46/drivers/video/backlight/generic_bl.c
14136 +--- linux-2.6.32.46/drivers/video/backlight/generic_bl.c 2011-03-27 14:31:47.000000000 -0400
14137 ++++ linux-2.6.32.46/drivers/video/backlight/generic_bl.c 2011-04-17 15:56:46.000000000 -0400
14138 @@ -70,7 +70,7 @@ void corgibl_limit_intensity(int limit)
14139 }
14140 EXPORT_SYMBOL(corgibl_limit_intensity);
14141 @@ -39212,9 +39235,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/generic_bl.c linux-2.6.32.48/
14142 .options = BL_CORE_SUSPENDRESUME,
14143 .get_brightness = genericbl_get_intensity,
14144 .update_status = genericbl_send_intensity,
14145 -diff -urNp linux-2.6.32.48/drivers/video/backlight/hp680_bl.c linux-2.6.32.48/drivers/video/backlight/hp680_bl.c
14146 ---- linux-2.6.32.48/drivers/video/backlight/hp680_bl.c 2009-12-02 22:51:21.000000000 -0500
14147 -+++ linux-2.6.32.48/drivers/video/backlight/hp680_bl.c 2011-11-12 12:46:45.000000000 -0500
14148 +diff -urNp linux-2.6.32.46/drivers/video/backlight/hp680_bl.c linux-2.6.32.46/drivers/video/backlight/hp680_bl.c
14149 +--- linux-2.6.32.46/drivers/video/backlight/hp680_bl.c 2011-03-27 14:31:47.000000000 -0400
14150 ++++ linux-2.6.32.46/drivers/video/backlight/hp680_bl.c 2011-04-17 15:56:46.000000000 -0400
14151 @@ -98,7 +98,7 @@ static int hp680bl_get_intensity(struct
14152 return current_intensity;
14153 }
14154 @@ -39224,9 +39247,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/hp680_bl.c linux-2.6.32.48/dr
14155 .get_brightness = hp680bl_get_intensity,
14156 .update_status = hp680bl_set_intensity,
14157 };
14158 -diff -urNp linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c
14159 ---- linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c 2009-12-02 22:51:21.000000000 -0500
14160 -+++ linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c 2011-11-12 12:46:45.000000000 -0500
14161 +diff -urNp linux-2.6.32.46/drivers/video/backlight/jornada720_bl.c linux-2.6.32.46/drivers/video/backlight/jornada720_bl.c
14162 +--- linux-2.6.32.46/drivers/video/backlight/jornada720_bl.c 2011-03-27 14:31:47.000000000 -0400
14163 ++++ linux-2.6.32.46/drivers/video/backlight/jornada720_bl.c 2011-04-17 15:56:46.000000000 -0400
14164 @@ -93,7 +93,7 @@ out:
14165 return ret;
14166 }
14167 @@ -39236,9 +39259,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c linux-2.6.32.
14168 .get_brightness = jornada_bl_get_brightness,
14169 .update_status = jornada_bl_update_status,
14170 .options = BL_CORE_SUSPENDRESUME,
14171 -diff -urNp linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c
14172 ---- linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c 2009-12-02 22:51:21.000000000 -0500
14173 -+++ linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c 2011-11-12 12:46:45.000000000 -0500
14174 +diff -urNp linux-2.6.32.46/drivers/video/backlight/kb3886_bl.c linux-2.6.32.46/drivers/video/backlight/kb3886_bl.c
14175 +--- linux-2.6.32.46/drivers/video/backlight/kb3886_bl.c 2011-03-27 14:31:47.000000000 -0400
14176 ++++ linux-2.6.32.46/drivers/video/backlight/kb3886_bl.c 2011-04-17 15:56:46.000000000 -0400
14177 @@ -134,7 +134,7 @@ static int kb3886bl_get_intensity(struct
14178 return kb3886bl_intensity;
14179 }
14180 @@ -39248,9 +39271,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c linux-2.6.32.48/d
14181 .get_brightness = kb3886bl_get_intensity,
14182 .update_status = kb3886bl_send_intensity,
14183 };
14184 -diff -urNp linux-2.6.32.48/drivers/video/backlight/locomolcd.c linux-2.6.32.48/drivers/video/backlight/locomolcd.c
14185 ---- linux-2.6.32.48/drivers/video/backlight/locomolcd.c 2009-12-02 22:51:21.000000000 -0500
14186 -+++ linux-2.6.32.48/drivers/video/backlight/locomolcd.c 2011-11-12 12:46:45.000000000 -0500
14187 +diff -urNp linux-2.6.32.46/drivers/video/backlight/locomolcd.c linux-2.6.32.46/drivers/video/backlight/locomolcd.c
14188 +--- linux-2.6.32.46/drivers/video/backlight/locomolcd.c 2011-03-27 14:31:47.000000000 -0400
14189 ++++ linux-2.6.32.46/drivers/video/backlight/locomolcd.c 2011-04-17 15:56:46.000000000 -0400
14190 @@ -141,7 +141,7 @@ static int locomolcd_get_intensity(struc
14191 return current_intensity;
14192 }
14193 @@ -39260,9 +39283,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/locomolcd.c linux-2.6.32.48/d
14194 .get_brightness = locomolcd_get_intensity,
14195 .update_status = locomolcd_set_intensity,
14196 };
14197 -diff -urNp linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c
14198 ---- linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c 2011-11-12 12:44:30.000000000 -0500
14199 -+++ linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c 2011-11-12 12:46:45.000000000 -0500
14200 +diff -urNp linux-2.6.32.46/drivers/video/backlight/mbp_nvidia_bl.c linux-2.6.32.46/drivers/video/backlight/mbp_nvidia_bl.c
14201 +--- linux-2.6.32.46/drivers/video/backlight/mbp_nvidia_bl.c 2011-05-10 22:12:01.000000000 -0400
14202 ++++ linux-2.6.32.46/drivers/video/backlight/mbp_nvidia_bl.c 2011-05-10 22:12:33.000000000 -0400
14203 @@ -33,7 +33,7 @@ struct dmi_match_data {
14204 unsigned long iostart;
14205 unsigned long iolen;
14206 @@ -39272,9 +39295,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c linux-2.6.32.
14207 };
14208
14209 /* Module parameters. */
14210 -diff -urNp linux-2.6.32.48/drivers/video/backlight/omap1_bl.c linux-2.6.32.48/drivers/video/backlight/omap1_bl.c
14211 ---- linux-2.6.32.48/drivers/video/backlight/omap1_bl.c 2009-12-02 22:51:21.000000000 -0500
14212 -+++ linux-2.6.32.48/drivers/video/backlight/omap1_bl.c 2011-11-12 12:46:45.000000000 -0500
14213 +diff -urNp linux-2.6.32.46/drivers/video/backlight/omap1_bl.c linux-2.6.32.46/drivers/video/backlight/omap1_bl.c
14214 +--- linux-2.6.32.46/drivers/video/backlight/omap1_bl.c 2011-03-27 14:31:47.000000000 -0400
14215 ++++ linux-2.6.32.46/drivers/video/backlight/omap1_bl.c 2011-04-17 15:56:46.000000000 -0400
14216 @@ -125,7 +125,7 @@ static int omapbl_get_intensity(struct b
14217 return bl->current_intensity;
14218 }
14219 @@ -39284,9 +39307,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/omap1_bl.c linux-2.6.32.48/dr
14220 .get_brightness = omapbl_get_intensity,
14221 .update_status = omapbl_update_status,
14222 };
14223 -diff -urNp linux-2.6.32.48/drivers/video/backlight/progear_bl.c linux-2.6.32.48/drivers/video/backlight/progear_bl.c
14224 ---- linux-2.6.32.48/drivers/video/backlight/progear_bl.c 2009-12-02 22:51:21.000000000 -0500
14225 -+++ linux-2.6.32.48/drivers/video/backlight/progear_bl.c 2011-11-12 12:46:45.000000000 -0500
14226 +diff -urNp linux-2.6.32.46/drivers/video/backlight/progear_bl.c linux-2.6.32.46/drivers/video/backlight/progear_bl.c
14227 +--- linux-2.6.32.46/drivers/video/backlight/progear_bl.c 2011-03-27 14:31:47.000000000 -0400
14228 ++++ linux-2.6.32.46/drivers/video/backlight/progear_bl.c 2011-04-17 15:56:46.000000000 -0400
14229 @@ -54,7 +54,7 @@ static int progearbl_get_intensity(struc
14230 return intensity - HW_LEVEL_MIN;
14231 }
14232 @@ -39296,9 +39319,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/progear_bl.c linux-2.6.32.48/
14233 .get_brightness = progearbl_get_intensity,
14234 .update_status = progearbl_set_intensity,
14235 };
14236 -diff -urNp linux-2.6.32.48/drivers/video/backlight/pwm_bl.c linux-2.6.32.48/drivers/video/backlight/pwm_bl.c
14237 ---- linux-2.6.32.48/drivers/video/backlight/pwm_bl.c 2009-12-02 22:51:21.000000000 -0500
14238 -+++ linux-2.6.32.48/drivers/video/backlight/pwm_bl.c 2011-11-12 12:46:45.000000000 -0500
14239 +diff -urNp linux-2.6.32.46/drivers/video/backlight/pwm_bl.c linux-2.6.32.46/drivers/video/backlight/pwm_bl.c
14240 +--- linux-2.6.32.46/drivers/video/backlight/pwm_bl.c 2011-03-27 14:31:47.000000000 -0400
14241 ++++ linux-2.6.32.46/drivers/video/backlight/pwm_bl.c 2011-04-17 15:56:46.000000000 -0400
14242 @@ -56,7 +56,7 @@ static int pwm_backlight_get_brightness(
14243 return bl->props.brightness;
14244 }
14245 @@ -39308,9 +39331,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/pwm_bl.c linux-2.6.32.48/driv
14246 .update_status = pwm_backlight_update_status,
14247 .get_brightness = pwm_backlight_get_brightness,
14248 };
14249 -diff -urNp linux-2.6.32.48/drivers/video/backlight/tosa_bl.c linux-2.6.32.48/drivers/video/backlight/tosa_bl.c
14250 ---- linux-2.6.32.48/drivers/video/backlight/tosa_bl.c 2009-12-02 22:51:21.000000000 -0500
14251 -+++ linux-2.6.32.48/drivers/video/backlight/tosa_bl.c 2011-11-12 12:46:45.000000000 -0500
14252 +diff -urNp linux-2.6.32.46/drivers/video/backlight/tosa_bl.c linux-2.6.32.46/drivers/video/backlight/tosa_bl.c
14253 +--- linux-2.6.32.46/drivers/video/backlight/tosa_bl.c 2011-03-27 14:31:47.000000000 -0400
14254 ++++ linux-2.6.32.46/drivers/video/backlight/tosa_bl.c 2011-04-17 15:56:46.000000000 -0400
14255 @@ -72,7 +72,7 @@ static int tosa_bl_get_brightness(struct
14256 return props->brightness;
14257 }
14258 @@ -39320,9 +39343,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/tosa_bl.c linux-2.6.32.48/dri
14259 .get_brightness = tosa_bl_get_brightness,
14260 .update_status = tosa_bl_update_status,
14261 };
14262 -diff -urNp linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c
14263 ---- linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c 2009-12-02 22:51:21.000000000 -0500
14264 -+++ linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c 2011-11-12 12:46:45.000000000 -0500
14265 +diff -urNp linux-2.6.32.46/drivers/video/backlight/wm831x_bl.c linux-2.6.32.46/drivers/video/backlight/wm831x_bl.c
14266 +--- linux-2.6.32.46/drivers/video/backlight/wm831x_bl.c 2011-03-27 14:31:47.000000000 -0400
14267 ++++ linux-2.6.32.46/drivers/video/backlight/wm831x_bl.c 2011-04-17 15:56:46.000000000 -0400
14268 @@ -112,7 +112,7 @@ static int wm831x_backlight_get_brightne
14269 return data->current_brightness;
14270 }
14271 @@ -39332,9 +39355,9 @@ diff -urNp linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c linux-2.6.32.48/d
14272 .options = BL_CORE_SUSPENDRESUME,
14273 .update_status = wm831x_backlight_update_status,
14274 .get_brightness = wm831x_backlight_get_brightness,
14275 -diff -urNp linux-2.6.32.48/drivers/video/bf54x-lq043fb.c linux-2.6.32.48/drivers/video/bf54x-lq043fb.c
14276 ---- linux-2.6.32.48/drivers/video/bf54x-lq043fb.c 2009-12-02 22:51:21.000000000 -0500
14277 -+++ linux-2.6.32.48/drivers/video/bf54x-lq043fb.c 2011-11-12 12:46:45.000000000 -0500
14278 +diff -urNp linux-2.6.32.46/drivers/video/bf54x-lq043fb.c linux-2.6.32.46/drivers/video/bf54x-lq043fb.c
14279 +--- linux-2.6.32.46/drivers/video/bf54x-lq043fb.c 2011-03-27 14:31:47.000000000 -0400
14280 ++++ linux-2.6.32.46/drivers/video/bf54x-lq043fb.c 2011-04-17 15:56:46.000000000 -0400
14281 @@ -463,7 +463,7 @@ static int bl_get_brightness(struct back
14282 return 0;
14283 }
14284 @@ -39344,9 +39367,9 @@ diff -urNp linux-2.6.32.48/drivers/video/bf54x-lq043fb.c linux-2.6.32.48/drivers
14285 .get_brightness = bl_get_brightness,
14286 };
14287
14288 -diff -urNp linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c
14289 ---- linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c 2011-11-12 12:44:30.000000000 -0500
14290 -+++ linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c 2011-11-12 12:46:45.000000000 -0500
14291 +diff -urNp linux-2.6.32.46/drivers/video/bfin-t350mcqb-fb.c linux-2.6.32.46/drivers/video/bfin-t350mcqb-fb.c
14292 +--- linux-2.6.32.46/drivers/video/bfin-t350mcqb-fb.c 2011-03-27 14:31:47.000000000 -0400
14293 ++++ linux-2.6.32.46/drivers/video/bfin-t350mcqb-fb.c 2011-04-17 15:56:46.000000000 -0400
14294 @@ -381,7 +381,7 @@ static int bl_get_brightness(struct back
14295 return 0;
14296 }
14297 @@ -39356,9 +39379,9 @@ diff -urNp linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c linux-2.6.32.48/driv
14298 .get_brightness = bl_get_brightness,
14299 };
14300
14301 -diff -urNp linux-2.6.32.48/drivers/video/fbcmap.c linux-2.6.32.48/drivers/video/fbcmap.c
14302 ---- linux-2.6.32.48/drivers/video/fbcmap.c 2009-12-02 22:51:21.000000000 -0500
14303 -+++ linux-2.6.32.48/drivers/video/fbcmap.c 2011-11-12 12:46:45.000000000 -0500
14304 +diff -urNp linux-2.6.32.46/drivers/video/fbcmap.c linux-2.6.32.46/drivers/video/fbcmap.c
14305 +--- linux-2.6.32.46/drivers/video/fbcmap.c 2011-03-27 14:31:47.000000000 -0400
14306 ++++ linux-2.6.32.46/drivers/video/fbcmap.c 2011-04-17 15:56:46.000000000 -0400
14307 @@ -266,8 +266,7 @@ int fb_set_user_cmap(struct fb_cmap_user
14308 rc = -ENODEV;
14309 goto out;
14310 @@ -39369,9 +39392,9 @@ diff -urNp linux-2.6.32.48/drivers/video/fbcmap.c linux-2.6.32.48/drivers/video/
14311 rc = -EINVAL;
14312 goto out1;
14313 }
14314 -diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/fbmem.c
14315 ---- linux-2.6.32.48/drivers/video/fbmem.c 2009-12-02 22:51:21.000000000 -0500
14316 -+++ linux-2.6.32.48/drivers/video/fbmem.c 2011-11-12 12:46:45.000000000 -0500
14317 +diff -urNp linux-2.6.32.46/drivers/video/fbmem.c linux-2.6.32.46/drivers/video/fbmem.c
14318 +--- linux-2.6.32.46/drivers/video/fbmem.c 2011-03-27 14:31:47.000000000 -0400
14319 ++++ linux-2.6.32.46/drivers/video/fbmem.c 2011-05-16 21:46:57.000000000 -0400
14320 @@ -403,7 +403,7 @@ static void fb_do_show_logo(struct fb_in
14321 image->dx += image->width + 8;
14322 }
14323 @@ -39417,9 +39440,9 @@ diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/f
14324 return -EINVAL;
14325 if (!registered_fb[con2fb.framebuffer])
14326 request_module("fb%d", con2fb.framebuffer);
14327 -diff -urNp linux-2.6.32.48/drivers/video/i810/i810_accel.c linux-2.6.32.48/drivers/video/i810/i810_accel.c
14328 ---- linux-2.6.32.48/drivers/video/i810/i810_accel.c 2009-12-02 22:51:21.000000000 -0500
14329 -+++ linux-2.6.32.48/drivers/video/i810/i810_accel.c 2011-11-12 12:46:45.000000000 -0500
14330 +diff -urNp linux-2.6.32.46/drivers/video/i810/i810_accel.c linux-2.6.32.46/drivers/video/i810/i810_accel.c
14331 +--- linux-2.6.32.46/drivers/video/i810/i810_accel.c 2011-03-27 14:31:47.000000000 -0400
14332 ++++ linux-2.6.32.46/drivers/video/i810/i810_accel.c 2011-04-17 15:56:46.000000000 -0400
14333 @@ -73,6 +73,7 @@ static inline int wait_for_space(struct
14334 }
14335 }
14336 @@ -39428,9 +39451,9 @@ diff -urNp linux-2.6.32.48/drivers/video/i810/i810_accel.c linux-2.6.32.48/drive
14337 i810_report_error(mmio);
14338 par->dev_flags |= LOCKUP;
14339 info->pixmap.scan_align = 1;
14340 -diff -urNp linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm
14341 ---- linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm 2009-12-02 22:51:21.000000000 -0500
14342 -+++ linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm 2011-11-12 12:46:45.000000000 -0500
14343 +diff -urNp linux-2.6.32.46/drivers/video/logo/logo_linux_clut224.ppm linux-2.6.32.46/drivers/video/logo/logo_linux_clut224.ppm
14344 +--- linux-2.6.32.46/drivers/video/logo/logo_linux_clut224.ppm 2011-03-27 14:31:47.000000000 -0400
14345 ++++ linux-2.6.32.46/drivers/video/logo/logo_linux_clut224.ppm 2011-08-29 23:49:24.000000000 -0400
14346 @@ -1,1604 +1,1123 @@
14347 P3
14348 -# Standard 224-color Linux logo
14349 @@ -42156,9 +42179,9 @@ diff -urNp linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm linux-2.6.3
14350 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
14351 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
14352 +4 4 4 4 4 4
14353 -diff -urNp linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c
14354 ---- linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c 2009-12-02 22:51:21.000000000 -0500
14355 -+++ linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c 2011-11-12 12:46:45.000000000 -0500
14356 +diff -urNp linux-2.6.32.46/drivers/video/nvidia/nv_backlight.c linux-2.6.32.46/drivers/video/nvidia/nv_backlight.c
14357 +--- linux-2.6.32.46/drivers/video/nvidia/nv_backlight.c 2011-03-27 14:31:47.000000000 -0400
14358 ++++ linux-2.6.32.46/drivers/video/nvidia/nv_backlight.c 2011-04-17 15:56:46.000000000 -0400
14359 @@ -87,7 +87,7 @@ static int nvidia_bl_get_brightness(stru
14360 return bd->props.brightness;
14361 }
14362 @@ -42168,9 +42191,9 @@ diff -urNp linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c linux-2.6.32.48/d
14363 .get_brightness = nvidia_bl_get_brightness,
14364 .update_status = nvidia_bl_update_status,
14365 };
14366 -diff -urNp linux-2.6.32.48/drivers/video/riva/fbdev.c linux-2.6.32.48/drivers/video/riva/fbdev.c
14367 ---- linux-2.6.32.48/drivers/video/riva/fbdev.c 2009-12-02 22:51:21.000000000 -0500
14368 -+++ linux-2.6.32.48/drivers/video/riva/fbdev.c 2011-11-12 12:46:45.000000000 -0500
14369 +diff -urNp linux-2.6.32.46/drivers/video/riva/fbdev.c linux-2.6.32.46/drivers/video/riva/fbdev.c
14370 +--- linux-2.6.32.46/drivers/video/riva/fbdev.c 2011-03-27 14:31:47.000000000 -0400
14371 ++++ linux-2.6.32.46/drivers/video/riva/fbdev.c 2011-04-17 15:56:46.000000000 -0400
14372 @@ -331,7 +331,7 @@ static int riva_bl_get_brightness(struct
14373 return bd->props.brightness;
14374 }
14375 @@ -42180,9 +42203,9 @@ diff -urNp linux-2.6.32.48/drivers/video/riva/fbdev.c linux-2.6.32.48/drivers/vi
14376 .get_brightness = riva_bl_get_brightness,
14377 .update_status = riva_bl_update_status,
14378 };
14379 -diff -urNp linux-2.6.32.48/drivers/video/uvesafb.c linux-2.6.32.48/drivers/video/uvesafb.c
14380 ---- linux-2.6.32.48/drivers/video/uvesafb.c 2009-12-02 22:51:21.000000000 -0500
14381 -+++ linux-2.6.32.48/drivers/video/uvesafb.c 2011-11-12 12:46:45.000000000 -0500
14382 +diff -urNp linux-2.6.32.46/drivers/video/uvesafb.c linux-2.6.32.46/drivers/video/uvesafb.c
14383 +--- linux-2.6.32.46/drivers/video/uvesafb.c 2011-03-27 14:31:47.000000000 -0400
14384 ++++ linux-2.6.32.46/drivers/video/uvesafb.c 2011-04-17 15:56:46.000000000 -0400
14385 @@ -18,6 +18,7 @@
14386 #include <linux/fb.h>
14387 #include <linux/io.h>
14388 @@ -42258,9 +42281,9 @@ diff -urNp linux-2.6.32.48/drivers/video/uvesafb.c linux-2.6.32.48/drivers/video
14389 }
14390
14391 framebuffer_release(info);
14392 -diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/vesafb.c
14393 ---- linux-2.6.32.48/drivers/video/vesafb.c 2009-12-02 22:51:21.000000000 -0500
14394 -+++ linux-2.6.32.48/drivers/video/vesafb.c 2011-11-12 12:46:45.000000000 -0500
14395 +diff -urNp linux-2.6.32.46/drivers/video/vesafb.c linux-2.6.32.46/drivers/video/vesafb.c
14396 +--- linux-2.6.32.46/drivers/video/vesafb.c 2011-03-27 14:31:47.000000000 -0400
14397 ++++ linux-2.6.32.46/drivers/video/vesafb.c 2011-08-05 20:33:55.000000000 -0400
14398 @@ -9,6 +9,7 @@
14399 */
14400
14401 @@ -42363,9 +42386,9 @@ diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/
14402 if (info->screen_base)
14403 iounmap(info->screen_base);
14404 framebuffer_release(info);
14405 -diff -urNp linux-2.6.32.48/drivers/xen/sys-hypervisor.c linux-2.6.32.48/drivers/xen/sys-hypervisor.c
14406 ---- linux-2.6.32.48/drivers/xen/sys-hypervisor.c 2009-12-02 22:51:21.000000000 -0500
14407 -+++ linux-2.6.32.48/drivers/xen/sys-hypervisor.c 2011-11-12 12:46:45.000000000 -0500
14408 +diff -urNp linux-2.6.32.46/drivers/xen/sys-hypervisor.c linux-2.6.32.46/drivers/xen/sys-hypervisor.c
14409 +--- linux-2.6.32.46/drivers/xen/sys-hypervisor.c 2011-03-27 14:31:47.000000000 -0400
14410 ++++ linux-2.6.32.46/drivers/xen/sys-hypervisor.c 2011-04-17 15:56:46.000000000 -0400
14411 @@ -425,7 +425,7 @@ static ssize_t hyp_sysfs_store(struct ko
14412 return 0;
14413 }
14414 @@ -42375,9 +42398,9 @@ diff -urNp linux-2.6.32.48/drivers/xen/sys-hypervisor.c linux-2.6.32.48/drivers/
14415 .show = hyp_sysfs_show,
14416 .store = hyp_sysfs_store,
14417 };
14418 -diff -urNp linux-2.6.32.48/fs/9p/vfs_inode.c linux-2.6.32.48/fs/9p/vfs_inode.c
14419 ---- linux-2.6.32.48/fs/9p/vfs_inode.c 2009-12-02 22:51:21.000000000 -0500
14420 -+++ linux-2.6.32.48/fs/9p/vfs_inode.c 2011-11-12 12:46:45.000000000 -0500
14421 +diff -urNp linux-2.6.32.46/fs/9p/vfs_inode.c linux-2.6.32.46/fs/9p/vfs_inode.c
14422 +--- linux-2.6.32.46/fs/9p/vfs_inode.c 2011-03-27 14:31:47.000000000 -0400
14423 ++++ linux-2.6.32.46/fs/9p/vfs_inode.c 2011-04-17 15:56:46.000000000 -0400
14424 @@ -1079,7 +1079,7 @@ static void *v9fs_vfs_follow_link(struct
14425 static void
14426 v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
14427 @@ -42387,9 +42410,9 @@ diff -urNp linux-2.6.32.48/fs/9p/vfs_inode.c linux-2.6.32.48/fs/9p/vfs_inode.c
14428
14429 P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name,
14430 IS_ERR(s) ? "<error>" : s);
14431 -diff -urNp linux-2.6.32.48/fs/aio.c linux-2.6.32.48/fs/aio.c
14432 ---- linux-2.6.32.48/fs/aio.c 2011-11-12 12:44:30.000000000 -0500
14433 -+++ linux-2.6.32.48/fs/aio.c 2011-11-12 12:46:45.000000000 -0500
14434 +diff -urNp linux-2.6.32.46/fs/aio.c linux-2.6.32.46/fs/aio.c
14435 +--- linux-2.6.32.46/fs/aio.c 2011-03-27 14:31:47.000000000 -0400
14436 ++++ linux-2.6.32.46/fs/aio.c 2011-06-04 20:40:21.000000000 -0400
14437 @@ -115,7 +115,7 @@ static int aio_setup_ring(struct kioctx
14438 size += sizeof(struct io_event) * nr_events;
14439 nr_pages = (size + PAGE_SIZE-1) >> PAGE_SHIFT;
14440 @@ -42428,9 +42451,9 @@ diff -urNp linux-2.6.32.48/fs/aio.c linux-2.6.32.48/fs/aio.c
14441 kiocb->ki_nr_segs = kiocb->ki_nbytes;
14442 kiocb->ki_cur_seg = 0;
14443 /* ki_nbytes/left now reflect bytes instead of segs */
14444 -diff -urNp linux-2.6.32.48/fs/attr.c linux-2.6.32.48/fs/attr.c
14445 ---- linux-2.6.32.48/fs/attr.c 2009-12-02 22:51:21.000000000 -0500
14446 -+++ linux-2.6.32.48/fs/attr.c 2011-11-12 12:46:45.000000000 -0500
14447 +diff -urNp linux-2.6.32.46/fs/attr.c linux-2.6.32.46/fs/attr.c
14448 +--- linux-2.6.32.46/fs/attr.c 2011-03-27 14:31:47.000000000 -0400
14449 ++++ linux-2.6.32.46/fs/attr.c 2011-04-17 15:56:46.000000000 -0400
14450 @@ -83,6 +83,7 @@ int inode_newsize_ok(const struct inode
14451 unsigned long limit;
14452
14453 @@ -42439,9 +42462,9 @@ diff -urNp linux-2.6.32.48/fs/attr.c linux-2.6.32.48/fs/attr.c
14454 if (limit != RLIM_INFINITY && offset > limit)
14455 goto out_sig;
14456 if (offset > inode->i_sb->s_maxbytes)
14457 -diff -urNp linux-2.6.32.48/fs/autofs/root.c linux-2.6.32.48/fs/autofs/root.c
14458 ---- linux-2.6.32.48/fs/autofs/root.c 2009-12-02 22:51:21.000000000 -0500
14459 -+++ linux-2.6.32.48/fs/autofs/root.c 2011-11-12 12:46:45.000000000 -0500
14460 +diff -urNp linux-2.6.32.46/fs/autofs/root.c linux-2.6.32.46/fs/autofs/root.c
14461 +--- linux-2.6.32.46/fs/autofs/root.c 2011-03-27 14:31:47.000000000 -0400
14462 ++++ linux-2.6.32.46/fs/autofs/root.c 2011-04-17 15:56:46.000000000 -0400
14463 @@ -299,7 +299,8 @@ static int autofs_root_symlink(struct in
14464 set_bit(n,sbi->symlink_bitmap);
14465 sl = &sbi->symlink[n];
14466 @@ -42452,9 +42475,9 @@ diff -urNp linux-2.6.32.48/fs/autofs/root.c linux-2.6.32.48/fs/autofs/root.c
14467 if (!sl->data) {
14468 clear_bit(n,sbi->symlink_bitmap);
14469 unlock_kernel();
14470 -diff -urNp linux-2.6.32.48/fs/autofs4/symlink.c linux-2.6.32.48/fs/autofs4/symlink.c
14471 ---- linux-2.6.32.48/fs/autofs4/symlink.c 2009-12-02 22:51:21.000000000 -0500
14472 -+++ linux-2.6.32.48/fs/autofs4/symlink.c 2011-11-12 12:46:45.000000000 -0500
14473 +diff -urNp linux-2.6.32.46/fs/autofs4/symlink.c linux-2.6.32.46/fs/autofs4/symlink.c
14474 +--- linux-2.6.32.46/fs/autofs4/symlink.c 2011-03-27 14:31:47.000000000 -0400
14475 ++++ linux-2.6.32.46/fs/autofs4/symlink.c 2011-04-17 15:56:46.000000000 -0400
14476 @@ -15,7 +15,7 @@
14477 static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd)
14478 {
14479 @@ -42464,9 +42487,9 @@ diff -urNp linux-2.6.32.48/fs/autofs4/symlink.c linux-2.6.32.48/fs/autofs4/symli
14480 return NULL;
14481 }
14482
14483 -diff -urNp linux-2.6.32.48/fs/autofs4/waitq.c linux-2.6.32.48/fs/autofs4/waitq.c
14484 ---- linux-2.6.32.48/fs/autofs4/waitq.c 2009-12-02 22:51:21.000000000 -0500
14485 -+++ linux-2.6.32.48/fs/autofs4/waitq.c 2011-11-12 12:46:45.000000000 -0500
14486 +diff -urNp linux-2.6.32.46/fs/autofs4/waitq.c linux-2.6.32.46/fs/autofs4/waitq.c
14487 +--- linux-2.6.32.46/fs/autofs4/waitq.c 2011-03-27 14:31:47.000000000 -0400
14488 ++++ linux-2.6.32.46/fs/autofs4/waitq.c 2011-10-06 09:37:14.000000000 -0400
14489 @@ -60,7 +60,7 @@ static int autofs4_write(struct file *fi
14490 {
14491 unsigned long sigpipe, flags;
14492 @@ -42476,9 +42499,9 @@ diff -urNp linux-2.6.32.48/fs/autofs4/waitq.c linux-2.6.32.48/fs/autofs4/waitq.c
14493 ssize_t wr = 0;
14494
14495 /** WARNING: this is not safe for writing more than PIPE_BUF bytes! **/
14496 -diff -urNp linux-2.6.32.48/fs/befs/linuxvfs.c linux-2.6.32.48/fs/befs/linuxvfs.c
14497 ---- linux-2.6.32.48/fs/befs/linuxvfs.c 2011-11-12 12:44:30.000000000 -0500
14498 -+++ linux-2.6.32.48/fs/befs/linuxvfs.c 2011-11-12 12:46:45.000000000 -0500
14499 +diff -urNp linux-2.6.32.46/fs/befs/linuxvfs.c linux-2.6.32.46/fs/befs/linuxvfs.c
14500 +--- linux-2.6.32.46/fs/befs/linuxvfs.c 2011-08-29 22:24:44.000000000 -0400
14501 ++++ linux-2.6.32.46/fs/befs/linuxvfs.c 2011-08-29 22:25:07.000000000 -0400
14502 @@ -498,7 +498,7 @@ static void befs_put_link(struct dentry
14503 {
14504 befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
14505 @@ -42488,9 +42511,9 @@ diff -urNp linux-2.6.32.48/fs/befs/linuxvfs.c linux-2.6.32.48/fs/befs/linuxvfs.c
14506 if (!IS_ERR(link))
14507 kfree(link);
14508 }
14509 -diff -urNp linux-2.6.32.48/fs/binfmt_aout.c linux-2.6.32.48/fs/binfmt_aout.c
14510 ---- linux-2.6.32.48/fs/binfmt_aout.c 2011-11-12 12:44:30.000000000 -0500
14511 -+++ linux-2.6.32.48/fs/binfmt_aout.c 2011-11-12 12:46:45.000000000 -0500
14512 +diff -urNp linux-2.6.32.46/fs/binfmt_aout.c linux-2.6.32.46/fs/binfmt_aout.c
14513 +--- linux-2.6.32.46/fs/binfmt_aout.c 2011-03-27 14:31:47.000000000 -0400
14514 ++++ linux-2.6.32.46/fs/binfmt_aout.c 2011-04-17 15:56:46.000000000 -0400
14515 @@ -16,6 +16,7 @@
14516 #include <linux/string.h>
14517 #include <linux/fs.h>
14518 @@ -42578,9 +42601,9 @@ diff -urNp linux-2.6.32.48/fs/binfmt_aout.c linux-2.6.32.48/fs/binfmt_aout.c
14519 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
14520 fd_offset + ex.a_text);
14521 up_write(&current->mm->mmap_sem);
14522 -diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
14523 ---- linux-2.6.32.48/fs/binfmt_elf.c 2011-11-12 12:44:30.000000000 -0500
14524 -+++ linux-2.6.32.48/fs/binfmt_elf.c 2011-11-12 12:46:45.000000000 -0500
14525 +diff -urNp linux-2.6.32.46/fs/binfmt_elf.c linux-2.6.32.46/fs/binfmt_elf.c
14526 +--- linux-2.6.32.46/fs/binfmt_elf.c 2011-03-27 14:31:47.000000000 -0400
14527 ++++ linux-2.6.32.46/fs/binfmt_elf.c 2011-05-16 21:46:57.000000000 -0400
14528 @@ -50,6 +50,10 @@ static int elf_core_dump(long signr, str
14529 #define elf_core_dump NULL
14530 #endif
14531 @@ -43254,9 +43277,9 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
14532 static int __init init_elf_binfmt(void)
14533 {
14534 return register_binfmt(&elf_format);
14535 -diff -urNp linux-2.6.32.48/fs/binfmt_flat.c linux-2.6.32.48/fs/binfmt_flat.c
14536 ---- linux-2.6.32.48/fs/binfmt_flat.c 2011-11-12 12:44:30.000000000 -0500
14537 -+++ linux-2.6.32.48/fs/binfmt_flat.c 2011-11-12 12:46:45.000000000 -0500
14538 +diff -urNp linux-2.6.32.46/fs/binfmt_flat.c linux-2.6.32.46/fs/binfmt_flat.c
14539 +--- linux-2.6.32.46/fs/binfmt_flat.c 2011-03-27 14:31:47.000000000 -0400
14540 ++++ linux-2.6.32.46/fs/binfmt_flat.c 2011-04-17 15:56:46.000000000 -0400
14541 @@ -564,7 +564,9 @@ static int load_flat_file(struct linux_b
14542 realdatastart = (unsigned long) -ENOMEM;
14543 printk("Unable to allocate RAM for process data, errno %d\n",
14544 @@ -43289,9 +43312,9 @@ diff -urNp linux-2.6.32.48/fs/binfmt_flat.c linux-2.6.32.48/fs/binfmt_flat.c
14545 ret = result;
14546 goto err;
14547 }
14548 -diff -urNp linux-2.6.32.48/fs/bio.c linux-2.6.32.48/fs/bio.c
14549 ---- linux-2.6.32.48/fs/bio.c 2011-11-12 12:44:30.000000000 -0500
14550 -+++ linux-2.6.32.48/fs/bio.c 2011-11-12 12:46:45.000000000 -0500
14551 +diff -urNp linux-2.6.32.46/fs/bio.c linux-2.6.32.46/fs/bio.c
14552 +--- linux-2.6.32.46/fs/bio.c 2011-03-27 14:31:47.000000000 -0400
14553 ++++ linux-2.6.32.46/fs/bio.c 2011-10-06 09:37:14.000000000 -0400
14554 @@ -78,7 +78,7 @@ static struct kmem_cache *bio_find_or_cr
14555
14556 i = 0;
14557 @@ -43310,9 +43333,9 @@ diff -urNp linux-2.6.32.48/fs/bio.c linux-2.6.32.48/fs/bio.c
14558
14559 __bio_for_each_segment(bvec, bio, i, 0) {
14560 char *addr = page_address(bvec->bv_page);
14561 -diff -urNp linux-2.6.32.48/fs/block_dev.c linux-2.6.32.48/fs/block_dev.c
14562 ---- linux-2.6.32.48/fs/block_dev.c 2011-11-12 12:44:30.000000000 -0500
14563 -+++ linux-2.6.32.48/fs/block_dev.c 2011-11-12 12:46:45.000000000 -0500
14564 +diff -urNp linux-2.6.32.46/fs/block_dev.c linux-2.6.32.46/fs/block_dev.c
14565 +--- linux-2.6.32.46/fs/block_dev.c 2011-08-09 18:35:29.000000000 -0400
14566 ++++ linux-2.6.32.46/fs/block_dev.c 2011-08-09 18:34:00.000000000 -0400
14567 @@ -664,7 +664,7 @@ int bd_claim(struct block_device *bdev,
14568 else if (bdev->bd_contains == bdev)
14569 res = 0; /* is a whole device which isn't held */
14570 @@ -43322,9 +43345,9 @@ diff -urNp linux-2.6.32.48/fs/block_dev.c linux-2.6.32.48/fs/block_dev.c
14571 res = 0; /* is a partition of a device that is being partitioned */
14572 else if (bdev->bd_contains->bd_holder != NULL)
14573 res = -EBUSY; /* is a partition of a held device */
14574 -diff -urNp linux-2.6.32.48/fs/btrfs/ctree.c linux-2.6.32.48/fs/btrfs/ctree.c
14575 ---- linux-2.6.32.48/fs/btrfs/ctree.c 2011-11-12 12:44:30.000000000 -0500
14576 -+++ linux-2.6.32.48/fs/btrfs/ctree.c 2011-11-12 12:46:45.000000000 -0500
14577 +diff -urNp linux-2.6.32.46/fs/btrfs/ctree.c linux-2.6.32.46/fs/btrfs/ctree.c
14578 +--- linux-2.6.32.46/fs/btrfs/ctree.c 2011-03-27 14:31:47.000000000 -0400
14579 ++++ linux-2.6.32.46/fs/btrfs/ctree.c 2011-04-17 15:56:46.000000000 -0400
14580 @@ -461,9 +461,12 @@ static noinline int __btrfs_cow_block(st
14581 free_extent_buffer(buf);
14582 add_root_to_dirty_list(root);
14583 @@ -43349,9 +43372,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/ctree.c linux-2.6.32.48/fs/btrfs/ctree.c
14584 btrfs_cpu_key_to_disk(&disk_key, cpu_key);
14585 ret = fixup_low_keys(trans, root, path, &disk_key, 1);
14586 }
14587 -diff -urNp linux-2.6.32.48/fs/btrfs/disk-io.c linux-2.6.32.48/fs/btrfs/disk-io.c
14588 ---- linux-2.6.32.48/fs/btrfs/disk-io.c 2011-11-12 12:44:30.000000000 -0500
14589 -+++ linux-2.6.32.48/fs/btrfs/disk-io.c 2011-11-12 12:46:45.000000000 -0500
14590 +diff -urNp linux-2.6.32.46/fs/btrfs/disk-io.c linux-2.6.32.46/fs/btrfs/disk-io.c
14591 +--- linux-2.6.32.46/fs/btrfs/disk-io.c 2011-04-17 17:00:52.000000000 -0400
14592 ++++ linux-2.6.32.46/fs/btrfs/disk-io.c 2011-04-17 17:03:11.000000000 -0400
14593 @@ -39,7 +39,7 @@
14594 #include "tree-log.h"
14595 #include "free-space-cache.h"
14596 @@ -43370,9 +43393,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/disk-io.c linux-2.6.32.48/fs/btrfs/disk-io.c
14597 .write_cache_pages_lock_hook = btree_lock_page_hook,
14598 .readpage_end_io_hook = btree_readpage_end_io_hook,
14599 .submit_bio_hook = btree_submit_bio_hook,
14600 -diff -urNp linux-2.6.32.48/fs/btrfs/extent_io.h linux-2.6.32.48/fs/btrfs/extent_io.h
14601 ---- linux-2.6.32.48/fs/btrfs/extent_io.h 2009-12-02 22:51:21.000000000 -0500
14602 -+++ linux-2.6.32.48/fs/btrfs/extent_io.h 2011-11-12 12:46:45.000000000 -0500
14603 +diff -urNp linux-2.6.32.46/fs/btrfs/extent_io.h linux-2.6.32.46/fs/btrfs/extent_io.h
14604 +--- linux-2.6.32.46/fs/btrfs/extent_io.h 2011-03-27 14:31:47.000000000 -0400
14605 ++++ linux-2.6.32.46/fs/btrfs/extent_io.h 2011-04-17 15:56:46.000000000 -0400
14606 @@ -49,36 +49,36 @@ typedef int (extent_submit_bio_hook_t)(s
14607 struct bio *bio, int mirror_num,
14608 unsigned long bio_flags);
14609 @@ -43433,9 +43456,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/extent_io.h linux-2.6.32.48/fs/btrfs/extent_
14610 };
14611
14612 struct extent_state {
14613 -diff -urNp linux-2.6.32.48/fs/btrfs/extent-tree.c linux-2.6.32.48/fs/btrfs/extent-tree.c
14614 ---- linux-2.6.32.48/fs/btrfs/extent-tree.c 2011-11-12 12:44:30.000000000 -0500
14615 -+++ linux-2.6.32.48/fs/btrfs/extent-tree.c 2011-11-12 12:46:45.000000000 -0500
14616 +diff -urNp linux-2.6.32.46/fs/btrfs/extent-tree.c linux-2.6.32.46/fs/btrfs/extent-tree.c
14617 +--- linux-2.6.32.46/fs/btrfs/extent-tree.c 2011-03-27 14:31:47.000000000 -0400
14618 ++++ linux-2.6.32.46/fs/btrfs/extent-tree.c 2011-06-12 06:39:08.000000000 -0400
14619 @@ -7141,6 +7141,10 @@ static noinline int relocate_one_extent(
14620 u64 group_start = group->key.objectid;
14621 new_extents = kmalloc(sizeof(*new_extents),
14622 @@ -43447,9 +43470,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/extent-tree.c linux-2.6.32.48/fs/btrfs/exten
14623 nr_extents = 1;
14624 ret = get_new_locations(reloc_inode,
14625 extent_key,
14626 -diff -urNp linux-2.6.32.48/fs/btrfs/free-space-cache.c linux-2.6.32.48/fs/btrfs/free-space-cache.c
14627 ---- linux-2.6.32.48/fs/btrfs/free-space-cache.c 2009-12-02 22:51:21.000000000 -0500
14628 -+++ linux-2.6.32.48/fs/btrfs/free-space-cache.c 2011-11-12 12:46:45.000000000 -0500
14629 +diff -urNp linux-2.6.32.46/fs/btrfs/free-space-cache.c linux-2.6.32.46/fs/btrfs/free-space-cache.c
14630 +--- linux-2.6.32.46/fs/btrfs/free-space-cache.c 2011-03-27 14:31:47.000000000 -0400
14631 ++++ linux-2.6.32.46/fs/btrfs/free-space-cache.c 2011-04-17 15:56:46.000000000 -0400
14632 @@ -1074,8 +1074,6 @@ u64 btrfs_alloc_from_cluster(struct btrf
14633
14634 while(1) {
14635 @@ -43468,9 +43491,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/free-space-cache.c linux-2.6.32.48/fs/btrfs/
14636
14637 if (entry->bitmap && entry->bytes > bytes + empty_size) {
14638 ret = btrfs_bitmap_cluster(block_group, entry, cluster,
14639 -diff -urNp linux-2.6.32.48/fs/btrfs/inode.c linux-2.6.32.48/fs/btrfs/inode.c
14640 ---- linux-2.6.32.48/fs/btrfs/inode.c 2011-11-12 12:44:30.000000000 -0500
14641 -+++ linux-2.6.32.48/fs/btrfs/inode.c 2011-11-12 12:46:45.000000000 -0500
14642 +diff -urNp linux-2.6.32.46/fs/btrfs/inode.c linux-2.6.32.46/fs/btrfs/inode.c
14643 +--- linux-2.6.32.46/fs/btrfs/inode.c 2011-03-27 14:31:47.000000000 -0400
14644 ++++ linux-2.6.32.46/fs/btrfs/inode.c 2011-06-12 06:39:58.000000000 -0400
14645 @@ -63,7 +63,7 @@ static const struct inode_operations btr
14646 static const struct address_space_operations btrfs_aops;
14647 static const struct address_space_operations btrfs_symlink_aops;
14648 @@ -43530,9 +43553,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/inode.c linux-2.6.32.48/fs/btrfs/inode.c
14649 .fill_delalloc = run_delalloc_range,
14650 .submit_bio_hook = btrfs_submit_bio_hook,
14651 .merge_bio_hook = btrfs_merge_bio_hook,
14652 -diff -urNp linux-2.6.32.48/fs/btrfs/relocation.c linux-2.6.32.48/fs/btrfs/relocation.c
14653 ---- linux-2.6.32.48/fs/btrfs/relocation.c 2011-11-12 12:44:30.000000000 -0500
14654 -+++ linux-2.6.32.48/fs/btrfs/relocation.c 2011-11-12 12:46:45.000000000 -0500
14655 +diff -urNp linux-2.6.32.46/fs/btrfs/relocation.c linux-2.6.32.46/fs/btrfs/relocation.c
14656 +--- linux-2.6.32.46/fs/btrfs/relocation.c 2011-03-27 14:31:47.000000000 -0400
14657 ++++ linux-2.6.32.46/fs/btrfs/relocation.c 2011-04-17 15:56:46.000000000 -0400
14658 @@ -884,7 +884,7 @@ static int __update_reloc_root(struct bt
14659 }
14660 spin_unlock(&rc->reloc_root_tree.lock);
14661 @@ -43542,9 +43565,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/relocation.c linux-2.6.32.48/fs/btrfs/reloca
14662
14663 if (!del) {
14664 spin_lock(&rc->reloc_root_tree.lock);
14665 -diff -urNp linux-2.6.32.48/fs/btrfs/sysfs.c linux-2.6.32.48/fs/btrfs/sysfs.c
14666 ---- linux-2.6.32.48/fs/btrfs/sysfs.c 2009-12-02 22:51:21.000000000 -0500
14667 -+++ linux-2.6.32.48/fs/btrfs/sysfs.c 2011-11-12 12:46:45.000000000 -0500
14668 +diff -urNp linux-2.6.32.46/fs/btrfs/sysfs.c linux-2.6.32.46/fs/btrfs/sysfs.c
14669 +--- linux-2.6.32.46/fs/btrfs/sysfs.c 2011-03-27 14:31:47.000000000 -0400
14670 ++++ linux-2.6.32.46/fs/btrfs/sysfs.c 2011-04-17 15:56:46.000000000 -0400
14671 @@ -164,12 +164,12 @@ static void btrfs_root_release(struct ko
14672 complete(&root->kobj_unregister);
14673 }
14674 @@ -43560,9 +43583,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/sysfs.c linux-2.6.32.48/fs/btrfs/sysfs.c
14675 .show = btrfs_root_attr_show,
14676 .store = btrfs_root_attr_store,
14677 };
14678 -diff -urNp linux-2.6.32.48/fs/buffer.c linux-2.6.32.48/fs/buffer.c
14679 ---- linux-2.6.32.48/fs/buffer.c 2009-12-02 22:51:21.000000000 -0500
14680 -+++ linux-2.6.32.48/fs/buffer.c 2011-11-12 12:46:45.000000000 -0500
14681 +diff -urNp linux-2.6.32.46/fs/buffer.c linux-2.6.32.46/fs/buffer.c
14682 +--- linux-2.6.32.46/fs/buffer.c 2011-03-27 14:31:47.000000000 -0400
14683 ++++ linux-2.6.32.46/fs/buffer.c 2011-04-17 15:56:46.000000000 -0400
14684 @@ -25,6 +25,7 @@
14685 #include <linux/percpu.h>
14686 #include <linux/slab.h>
14687 @@ -43571,9 +43594,9 @@ diff -urNp linux-2.6.32.48/fs/buffer.c linux-2.6.32.48/fs/buffer.c
14688 #include <linux/blkdev.h>
14689 #include <linux/file.h>
14690 #include <linux/quotaops.h>
14691 -diff -urNp linux-2.6.32.48/fs/cachefiles/bind.c linux-2.6.32.48/fs/cachefiles/bind.c
14692 ---- linux-2.6.32.48/fs/cachefiles/bind.c 2009-12-02 22:51:21.000000000 -0500
14693 -+++ linux-2.6.32.48/fs/cachefiles/bind.c 2011-11-12 12:46:45.000000000 -0500
14694 +diff -urNp linux-2.6.32.46/fs/cachefiles/bind.c linux-2.6.32.46/fs/cachefiles/bind.c
14695 +--- linux-2.6.32.46/fs/cachefiles/bind.c 2011-03-27 14:31:47.000000000 -0400
14696 ++++ linux-2.6.32.46/fs/cachefiles/bind.c 2011-04-17 15:56:46.000000000 -0400
14697 @@ -39,13 +39,11 @@ int cachefiles_daemon_bind(struct cachef
14698 args);
14699
14700 @@ -43590,9 +43613,9 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/bind.c linux-2.6.32.48/fs/cachefiles/bi
14701 cache->bcull_percent < cache->brun_percent &&
14702 cache->brun_percent < 100);
14703
14704 -diff -urNp linux-2.6.32.48/fs/cachefiles/daemon.c linux-2.6.32.48/fs/cachefiles/daemon.c
14705 ---- linux-2.6.32.48/fs/cachefiles/daemon.c 2009-12-02 22:51:21.000000000 -0500
14706 -+++ linux-2.6.32.48/fs/cachefiles/daemon.c 2011-11-12 12:46:45.000000000 -0500
14707 +diff -urNp linux-2.6.32.46/fs/cachefiles/daemon.c linux-2.6.32.46/fs/cachefiles/daemon.c
14708 +--- linux-2.6.32.46/fs/cachefiles/daemon.c 2011-03-27 14:31:47.000000000 -0400
14709 ++++ linux-2.6.32.46/fs/cachefiles/daemon.c 2011-04-17 15:56:46.000000000 -0400
14710 @@ -220,7 +220,7 @@ static ssize_t cachefiles_daemon_write(s
14711 if (test_bit(CACHEFILES_DEAD, &cache->flags))
14712 return -EIO;
14713 @@ -43620,9 +43643,9 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/daemon.c linux-2.6.32.48/fs/cachefiles/
14714 return cachefiles_daemon_range_error(cache, args);
14715
14716 cache->bstop_percent = bstop;
14717 -diff -urNp linux-2.6.32.48/fs/cachefiles/internal.h linux-2.6.32.48/fs/cachefiles/internal.h
14718 ---- linux-2.6.32.48/fs/cachefiles/internal.h 2009-12-02 22:51:21.000000000 -0500
14719 -+++ linux-2.6.32.48/fs/cachefiles/internal.h 2011-11-12 12:46:45.000000000 -0500
14720 +diff -urNp linux-2.6.32.46/fs/cachefiles/internal.h linux-2.6.32.46/fs/cachefiles/internal.h
14721 +--- linux-2.6.32.46/fs/cachefiles/internal.h 2011-03-27 14:31:47.000000000 -0400
14722 ++++ linux-2.6.32.46/fs/cachefiles/internal.h 2011-05-04 17:56:28.000000000 -0400
14723 @@ -56,7 +56,7 @@ struct cachefiles_cache {
14724 wait_queue_head_t daemon_pollwq; /* poll waitqueue for daemon */
14725 struct rb_root active_nodes; /* active nodes (can't be culled) */
14726 @@ -43657,9 +43680,9 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/internal.h linux-2.6.32.48/fs/cachefile
14727 }
14728
14729 #else
14730 -diff -urNp linux-2.6.32.48/fs/cachefiles/namei.c linux-2.6.32.48/fs/cachefiles/namei.c
14731 ---- linux-2.6.32.48/fs/cachefiles/namei.c 2009-12-02 22:51:21.000000000 -0500
14732 -+++ linux-2.6.32.48/fs/cachefiles/namei.c 2011-11-12 12:46:45.000000000 -0500
14733 +diff -urNp linux-2.6.32.46/fs/cachefiles/namei.c linux-2.6.32.46/fs/cachefiles/namei.c
14734 +--- linux-2.6.32.46/fs/cachefiles/namei.c 2011-03-27 14:31:47.000000000 -0400
14735 ++++ linux-2.6.32.46/fs/cachefiles/namei.c 2011-05-04 17:56:28.000000000 -0400
14736 @@ -250,7 +250,7 @@ try_again:
14737 /* first step is to make up a grave dentry in the graveyard */
14738 sprintf(nbuffer, "%08x%08x",
14739 @@ -43669,9 +43692,9 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/namei.c linux-2.6.32.48/fs/cachefiles/n
14740
14741 /* do the multiway lock magic */
14742 trap = lock_rename(cache->graveyard, dir);
14743 -diff -urNp linux-2.6.32.48/fs/cachefiles/proc.c linux-2.6.32.48/fs/cachefiles/proc.c
14744 ---- linux-2.6.32.48/fs/cachefiles/proc.c 2009-12-02 22:51:21.000000000 -0500
14745 -+++ linux-2.6.32.48/fs/cachefiles/proc.c 2011-11-12 12:46:45.000000000 -0500
14746 +diff -urNp linux-2.6.32.46/fs/cachefiles/proc.c linux-2.6.32.46/fs/cachefiles/proc.c
14747 +--- linux-2.6.32.46/fs/cachefiles/proc.c 2011-03-27 14:31:47.000000000 -0400
14748 ++++ linux-2.6.32.46/fs/cachefiles/proc.c 2011-05-04 17:56:28.000000000 -0400
14749 @@ -14,9 +14,9 @@
14750 #include <linux/seq_file.h>
14751 #include "internal.h"
14752 @@ -43698,9 +43721,9 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/proc.c linux-2.6.32.48/fs/cachefiles/pr
14753 if (x == 0 && y == 0 && z == 0)
14754 return 0;
14755
14756 -diff -urNp linux-2.6.32.48/fs/cachefiles/rdwr.c linux-2.6.32.48/fs/cachefiles/rdwr.c
14757 ---- linux-2.6.32.48/fs/cachefiles/rdwr.c 2009-12-02 22:51:21.000000000 -0500
14758 -+++ linux-2.6.32.48/fs/cachefiles/rdwr.c 2011-11-12 12:46:45.000000000 -0500
14759 +diff -urNp linux-2.6.32.46/fs/cachefiles/rdwr.c linux-2.6.32.46/fs/cachefiles/rdwr.c
14760 +--- linux-2.6.32.46/fs/cachefiles/rdwr.c 2011-03-27 14:31:47.000000000 -0400
14761 ++++ linux-2.6.32.46/fs/cachefiles/rdwr.c 2011-10-06 09:37:14.000000000 -0400
14762 @@ -946,7 +946,7 @@ int cachefiles_write_page(struct fscache
14763 old_fs = get_fs();
14764 set_fs(KERNEL_DS);
14765 @@ -43710,9 +43733,9 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/rdwr.c linux-2.6.32.48/fs/cachefiles/rd
14766 set_fs(old_fs);
14767 kunmap(page);
14768 if (ret != len)
14769 -diff -urNp linux-2.6.32.48/fs/cifs/cifs_debug.c linux-2.6.32.48/fs/cifs/cifs_debug.c
14770 ---- linux-2.6.32.48/fs/cifs/cifs_debug.c 2009-12-02 22:51:21.000000000 -0500
14771 -+++ linux-2.6.32.48/fs/cifs/cifs_debug.c 2011-11-12 12:46:45.000000000 -0500
14772 +diff -urNp linux-2.6.32.46/fs/cifs/cifs_debug.c linux-2.6.32.46/fs/cifs/cifs_debug.c
14773 +--- linux-2.6.32.46/fs/cifs/cifs_debug.c 2011-03-27 14:31:47.000000000 -0400
14774 ++++ linux-2.6.32.46/fs/cifs/cifs_debug.c 2011-05-04 17:56:28.000000000 -0400
14775 @@ -256,25 +256,25 @@ static ssize_t cifs_stats_proc_write(str
14776 tcon = list_entry(tmp3,
14777 struct cifsTconInfo,
14778 @@ -43820,9 +43843,9 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifs_debug.c linux-2.6.32.48/fs/cifs/cifs_deb
14779 }
14780 }
14781 }
14782 -diff -urNp linux-2.6.32.48/fs/cifs/cifsfs.c linux-2.6.32.48/fs/cifs/cifsfs.c
14783 ---- linux-2.6.32.48/fs/cifs/cifsfs.c 2011-11-12 12:44:30.000000000 -0500
14784 -+++ linux-2.6.32.48/fs/cifs/cifsfs.c 2011-11-12 12:46:45.000000000 -0500
14785 +diff -urNp linux-2.6.32.46/fs/cifs/cifsfs.c linux-2.6.32.46/fs/cifs/cifsfs.c
14786 +--- linux-2.6.32.46/fs/cifs/cifsfs.c 2011-03-27 14:31:47.000000000 -0400
14787 ++++ linux-2.6.32.46/fs/cifs/cifsfs.c 2011-08-25 17:17:57.000000000 -0400
14788 @@ -869,7 +869,7 @@ cifs_init_request_bufs(void)
14789 cifs_req_cachep = kmem_cache_create("cifs_request",
14790 CIFSMaxBufSize +
14791 @@ -43852,9 +43875,9 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifsfs.c linux-2.6.32.48/fs/cifs/cifsfs.c
14792 #endif /* CONFIG_CIFS_STATS2 */
14793
14794 atomic_set(&midCount, 0);
14795 -diff -urNp linux-2.6.32.48/fs/cifs/cifsglob.h linux-2.6.32.48/fs/cifs/cifsglob.h
14796 ---- linux-2.6.32.48/fs/cifs/cifsglob.h 2011-11-12 12:44:30.000000000 -0500
14797 -+++ linux-2.6.32.48/fs/cifs/cifsglob.h 2011-11-12 12:46:45.000000000 -0500
14798 +diff -urNp linux-2.6.32.46/fs/cifs/cifsglob.h linux-2.6.32.46/fs/cifs/cifsglob.h
14799 +--- linux-2.6.32.46/fs/cifs/cifsglob.h 2011-08-09 18:35:29.000000000 -0400
14800 ++++ linux-2.6.32.46/fs/cifs/cifsglob.h 2011-08-25 17:17:57.000000000 -0400
14801 @@ -252,28 +252,28 @@ struct cifsTconInfo {
14802 __u16 Flags; /* optional support bits */
14803 enum statusEnum tidStatus;
14804 @@ -43926,9 +43949,22 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifsglob.h linux-2.6.32.48/fs/cifs/cifsglob.h
14805 #endif
14806 GLOBAL_EXTERN atomic_t smBufAllocCount;
14807 GLOBAL_EXTERN atomic_t midCount;
14808 -diff -urNp linux-2.6.32.48/fs/cifs/link.c linux-2.6.32.48/fs/cifs/link.c
14809 ---- linux-2.6.32.48/fs/cifs/link.c 2009-12-02 22:51:21.000000000 -0500
14810 -+++ linux-2.6.32.48/fs/cifs/link.c 2011-11-12 12:46:47.000000000 -0500
14811 +diff -urNp linux-2.6.32.46/fs/cifs/cifssmb.c linux-2.6.32.46/fs/cifs/cifssmb.c
14812 +--- linux-2.6.32.46/fs/cifs/cifssmb.c 2011-03-27 14:31:47.000000000 -0400
14813 ++++ linux-2.6.32.46/fs/cifs/cifssmb.c 2011-10-17 02:36:33.000000000 -0400
14814 +@@ -3596,7 +3596,8 @@ int CIFSFindNext(const int xid, struct c
14815 + T2_FNEXT_RSP_PARMS *parms;
14816 + char *response_data;
14817 + int rc = 0;
14818 +- int bytes_returned, name_len;
14819 ++ int bytes_returned;
14820 ++ unsigned int name_len;
14821 + __u16 params, byte_count;
14822 +
14823 + cFYI(1, ("In FindNext"));
14824 +diff -urNp linux-2.6.32.46/fs/cifs/link.c linux-2.6.32.46/fs/cifs/link.c
14825 +--- linux-2.6.32.46/fs/cifs/link.c 2011-03-27 14:31:47.000000000 -0400
14826 ++++ linux-2.6.32.46/fs/cifs/link.c 2011-04-17 15:56:46.000000000 -0400
14827 @@ -215,7 +215,7 @@ cifs_symlink(struct inode *inode, struct
14828
14829 void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie)
14830 @@ -43938,9 +43974,9 @@ diff -urNp linux-2.6.32.48/fs/cifs/link.c linux-2.6.32.48/fs/cifs/link.c
14831 if (!IS_ERR(p))
14832 kfree(p);
14833 }
14834 -diff -urNp linux-2.6.32.48/fs/cifs/misc.c linux-2.6.32.48/fs/cifs/misc.c
14835 ---- linux-2.6.32.48/fs/cifs/misc.c 2009-12-02 22:51:21.000000000 -0500
14836 -+++ linux-2.6.32.48/fs/cifs/misc.c 2011-11-12 12:46:47.000000000 -0500
14837 +diff -urNp linux-2.6.32.46/fs/cifs/misc.c linux-2.6.32.46/fs/cifs/misc.c
14838 +--- linux-2.6.32.46/fs/cifs/misc.c 2011-03-27 14:31:47.000000000 -0400
14839 ++++ linux-2.6.32.46/fs/cifs/misc.c 2011-08-25 17:17:57.000000000 -0400
14840 @@ -155,7 +155,7 @@ cifs_buf_get(void)
14841 memset(ret_buf, 0, sizeof(struct smb_hdr) + 3);
14842 atomic_inc(&bufAllocCount);
14843 @@ -43959,9 +43995,9 @@ diff -urNp linux-2.6.32.48/fs/cifs/misc.c linux-2.6.32.48/fs/cifs/misc.c
14844 #endif /* CONFIG_CIFS_STATS2 */
14845
14846 }
14847 -diff -urNp linux-2.6.32.48/fs/coda/cache.c linux-2.6.32.48/fs/coda/cache.c
14848 ---- linux-2.6.32.48/fs/coda/cache.c 2009-12-02 22:51:21.000000000 -0500
14849 -+++ linux-2.6.32.48/fs/coda/cache.c 2011-11-12 12:46:47.000000000 -0500
14850 +diff -urNp linux-2.6.32.46/fs/coda/cache.c linux-2.6.32.46/fs/coda/cache.c
14851 +--- linux-2.6.32.46/fs/coda/cache.c 2011-03-27 14:31:47.000000000 -0400
14852 ++++ linux-2.6.32.46/fs/coda/cache.c 2011-05-04 17:56:28.000000000 -0400
14853 @@ -24,14 +24,14 @@
14854 #include <linux/coda_fs_i.h>
14855 #include <linux/coda_cache.h>
14856 @@ -44004,9 +44040,9 @@ diff -urNp linux-2.6.32.48/fs/coda/cache.c linux-2.6.32.48/fs/coda/cache.c
14857
14858 return hit;
14859 }
14860 -diff -urNp linux-2.6.32.48/fs/compat_binfmt_elf.c linux-2.6.32.48/fs/compat_binfmt_elf.c
14861 ---- linux-2.6.32.48/fs/compat_binfmt_elf.c 2009-12-02 22:51:21.000000000 -0500
14862 -+++ linux-2.6.32.48/fs/compat_binfmt_elf.c 2011-11-12 12:46:47.000000000 -0500
14863 +diff -urNp linux-2.6.32.46/fs/compat_binfmt_elf.c linux-2.6.32.46/fs/compat_binfmt_elf.c
14864 +--- linux-2.6.32.46/fs/compat_binfmt_elf.c 2011-03-27 14:31:47.000000000 -0400
14865 ++++ linux-2.6.32.46/fs/compat_binfmt_elf.c 2011-04-17 15:56:46.000000000 -0400
14866 @@ -29,10 +29,12 @@
14867 #undef elfhdr
14868 #undef elf_phdr
14869 @@ -44020,9 +44056,9 @@ diff -urNp linux-2.6.32.48/fs/compat_binfmt_elf.c linux-2.6.32.48/fs/compat_binf
14870 #define elf_addr_t Elf32_Addr
14871
14872 /*
14873 -diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
14874 ---- linux-2.6.32.48/fs/compat.c 2011-11-12 12:44:30.000000000 -0500
14875 -+++ linux-2.6.32.48/fs/compat.c 2011-11-12 12:46:47.000000000 -0500
14876 +diff -urNp linux-2.6.32.46/fs/compat.c linux-2.6.32.46/fs/compat.c
14877 +--- linux-2.6.32.46/fs/compat.c 2011-04-17 17:00:52.000000000 -0400
14878 ++++ linux-2.6.32.46/fs/compat.c 2011-10-06 09:37:14.000000000 -0400
14879 @@ -133,8 +133,8 @@ asmlinkage long compat_sys_utimes(char _
14880 static int cp_compat_stat(struct kstat *stat, struct compat_stat __user *ubuf)
14881 {
14882 @@ -44268,9 +44304,9 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
14883 set_fs(oldfs);
14884
14885 if (err)
14886 -diff -urNp linux-2.6.32.48/fs/compat_ioctl.c linux-2.6.32.48/fs/compat_ioctl.c
14887 ---- linux-2.6.32.48/fs/compat_ioctl.c 2009-12-02 22:51:21.000000000 -0500
14888 -+++ linux-2.6.32.48/fs/compat_ioctl.c 2011-11-12 12:46:47.000000000 -0500
14889 +diff -urNp linux-2.6.32.46/fs/compat_ioctl.c linux-2.6.32.46/fs/compat_ioctl.c
14890 +--- linux-2.6.32.46/fs/compat_ioctl.c 2011-03-27 14:31:47.000000000 -0400
14891 ++++ linux-2.6.32.46/fs/compat_ioctl.c 2011-10-06 09:37:14.000000000 -0400
14892 @@ -234,6 +234,8 @@ static int do_video_set_spu_palette(unsi
14893 up = (struct compat_video_spu_palette __user *) arg;
14894 err = get_user(palp, &up->palette);
14895 @@ -44298,9 +44334,9 @@ diff -urNp linux-2.6.32.48/fs/compat_ioctl.c linux-2.6.32.48/fs/compat_ioctl.c
14896 return -EFAULT;
14897
14898 return ioctl_preallocate(file, p);
14899 -diff -urNp linux-2.6.32.48/fs/configfs/dir.c linux-2.6.32.48/fs/configfs/dir.c
14900 ---- linux-2.6.32.48/fs/configfs/dir.c 2009-12-02 22:51:21.000000000 -0500
14901 -+++ linux-2.6.32.48/fs/configfs/dir.c 2011-11-12 12:46:47.000000000 -0500
14902 +diff -urNp linux-2.6.32.46/fs/configfs/dir.c linux-2.6.32.46/fs/configfs/dir.c
14903 +--- linux-2.6.32.46/fs/configfs/dir.c 2011-03-27 14:31:47.000000000 -0400
14904 ++++ linux-2.6.32.46/fs/configfs/dir.c 2011-05-11 18:25:15.000000000 -0400
14905 @@ -1572,7 +1572,8 @@ static int configfs_readdir(struct file
14906 }
14907 for (p=q->next; p!= &parent_sd->s_children; p=p->next) {
14908 @@ -44325,9 +44361,9 @@ diff -urNp linux-2.6.32.48/fs/configfs/dir.c linux-2.6.32.48/fs/configfs/dir.c
14909 if (next->s_dentry)
14910 ino = next->s_dentry->d_inode->i_ino;
14911 else
14912 -diff -urNp linux-2.6.32.48/fs/dcache.c linux-2.6.32.48/fs/dcache.c
14913 ---- linux-2.6.32.48/fs/dcache.c 2011-11-12 12:44:30.000000000 -0500
14914 -+++ linux-2.6.32.48/fs/dcache.c 2011-11-12 12:46:47.000000000 -0500
14915 +diff -urNp linux-2.6.32.46/fs/dcache.c linux-2.6.32.46/fs/dcache.c
14916 +--- linux-2.6.32.46/fs/dcache.c 2011-03-27 14:31:47.000000000 -0400
14917 ++++ linux-2.6.32.46/fs/dcache.c 2011-04-23 13:32:21.000000000 -0400
14918 @@ -45,8 +45,6 @@ EXPORT_SYMBOL(dcache_lock);
14919
14920 static struct kmem_cache *dentry_cache __read_mostly;
14921 @@ -44346,9 +44382,9 @@ diff -urNp linux-2.6.32.48/fs/dcache.c linux-2.6.32.48/fs/dcache.c
14922
14923 dcache_init();
14924 inode_init();
14925 -diff -urNp linux-2.6.32.48/fs/dlm/lockspace.c linux-2.6.32.48/fs/dlm/lockspace.c
14926 ---- linux-2.6.32.48/fs/dlm/lockspace.c 2011-11-12 12:44:30.000000000 -0500
14927 -+++ linux-2.6.32.48/fs/dlm/lockspace.c 2011-11-12 12:46:47.000000000 -0500
14928 +diff -urNp linux-2.6.32.46/fs/dlm/lockspace.c linux-2.6.32.46/fs/dlm/lockspace.c
14929 +--- linux-2.6.32.46/fs/dlm/lockspace.c 2011-03-27 14:31:47.000000000 -0400
14930 ++++ linux-2.6.32.46/fs/dlm/lockspace.c 2011-04-17 15:56:46.000000000 -0400
14931 @@ -148,7 +148,7 @@ static void lockspace_kobj_release(struc
14932 kfree(ls);
14933 }
14934 @@ -44358,9 +44394,9 @@ diff -urNp linux-2.6.32.48/fs/dlm/lockspace.c linux-2.6.32.48/fs/dlm/lockspace.c
14935 .show = dlm_attr_show,
14936 .store = dlm_attr_store,
14937 };
14938 -diff -urNp linux-2.6.32.48/fs/ecryptfs/inode.c linux-2.6.32.48/fs/ecryptfs/inode.c
14939 ---- linux-2.6.32.48/fs/ecryptfs/inode.c 2011-11-12 12:44:30.000000000 -0500
14940 -+++ linux-2.6.32.48/fs/ecryptfs/inode.c 2011-11-12 12:46:47.000000000 -0500
14941 +diff -urNp linux-2.6.32.46/fs/ecryptfs/inode.c linux-2.6.32.46/fs/ecryptfs/inode.c
14942 +--- linux-2.6.32.46/fs/ecryptfs/inode.c 2011-03-27 14:31:47.000000000 -0400
14943 ++++ linux-2.6.32.46/fs/ecryptfs/inode.c 2011-10-06 09:37:14.000000000 -0400
14944 @@ -660,7 +660,7 @@ static int ecryptfs_readlink_lower(struc
14945 old_fs = get_fs();
14946 set_fs(get_ds());
14947 @@ -44379,9 +44415,9 @@ diff -urNp linux-2.6.32.48/fs/ecryptfs/inode.c linux-2.6.32.48/fs/ecryptfs/inode
14948 set_fs(old_fs);
14949 if (rc < 0)
14950 goto out_free;
14951 -diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
14952 ---- linux-2.6.32.48/fs/exec.c 2011-11-12 12:44:30.000000000 -0500
14953 -+++ linux-2.6.32.48/fs/exec.c 2011-11-12 12:46:47.000000000 -0500
14954 +diff -urNp linux-2.6.32.46/fs/exec.c linux-2.6.32.46/fs/exec.c
14955 +--- linux-2.6.32.46/fs/exec.c 2011-06-25 12:55:34.000000000 -0400
14956 ++++ linux-2.6.32.46/fs/exec.c 2011-10-06 09:37:14.000000000 -0400
14957 @@ -56,12 +56,24 @@
14958 #include <linux/fsnotify.h>
14959 #include <linux/fs_struct.h>
14960 @@ -44975,9 +45011,9 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
14961 fail_unlock:
14962 if (helper_argv)
14963 argv_free(helper_argv);
14964 -diff -urNp linux-2.6.32.48/fs/ext2/balloc.c linux-2.6.32.48/fs/ext2/balloc.c
14965 ---- linux-2.6.32.48/fs/ext2/balloc.c 2009-12-02 22:51:21.000000000 -0500
14966 -+++ linux-2.6.32.48/fs/ext2/balloc.c 2011-11-12 12:46:47.000000000 -0500
14967 +diff -urNp linux-2.6.32.46/fs/ext2/balloc.c linux-2.6.32.46/fs/ext2/balloc.c
14968 +--- linux-2.6.32.46/fs/ext2/balloc.c 2011-03-27 14:31:47.000000000 -0400
14969 ++++ linux-2.6.32.46/fs/ext2/balloc.c 2011-04-17 15:56:46.000000000 -0400
14970 @@ -1192,7 +1192,7 @@ static int ext2_has_free_blocks(struct e
14971
14972 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
14973 @@ -44987,9 +45023,9 @@ diff -urNp linux-2.6.32.48/fs/ext2/balloc.c linux-2.6.32.48/fs/ext2/balloc.c
14974 sbi->s_resuid != current_fsuid() &&
14975 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
14976 return 0;
14977 -diff -urNp linux-2.6.32.48/fs/ext3/balloc.c linux-2.6.32.48/fs/ext3/balloc.c
14978 ---- linux-2.6.32.48/fs/ext3/balloc.c 2009-12-02 22:51:21.000000000 -0500
14979 -+++ linux-2.6.32.48/fs/ext3/balloc.c 2011-11-12 12:46:47.000000000 -0500
14980 +diff -urNp linux-2.6.32.46/fs/ext3/balloc.c linux-2.6.32.46/fs/ext3/balloc.c
14981 +--- linux-2.6.32.46/fs/ext3/balloc.c 2011-03-27 14:31:47.000000000 -0400
14982 ++++ linux-2.6.32.46/fs/ext3/balloc.c 2011-04-17 15:56:46.000000000 -0400
14983 @@ -1421,7 +1421,7 @@ static int ext3_has_free_blocks(struct e
14984
14985 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
14986 @@ -44999,9 +45035,9 @@ diff -urNp linux-2.6.32.48/fs/ext3/balloc.c linux-2.6.32.48/fs/ext3/balloc.c
14987 sbi->s_resuid != current_fsuid() &&
14988 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
14989 return 0;
14990 -diff -urNp linux-2.6.32.48/fs/ext4/balloc.c linux-2.6.32.48/fs/ext4/balloc.c
14991 ---- linux-2.6.32.48/fs/ext4/balloc.c 2011-11-12 12:44:30.000000000 -0500
14992 -+++ linux-2.6.32.48/fs/ext4/balloc.c 2011-11-12 12:46:47.000000000 -0500
14993 +diff -urNp linux-2.6.32.46/fs/ext4/balloc.c linux-2.6.32.46/fs/ext4/balloc.c
14994 +--- linux-2.6.32.46/fs/ext4/balloc.c 2011-03-27 14:31:47.000000000 -0400
14995 ++++ linux-2.6.32.46/fs/ext4/balloc.c 2011-04-17 15:56:46.000000000 -0400
14996 @@ -570,7 +570,7 @@ int ext4_has_free_blocks(struct ext4_sb_
14997 /* Hm, nope. Are (enough) root reserved blocks available? */
14998 if (sbi->s_resuid == current_fsuid() ||
14999 @@ -45011,10 +45047,10 @@ diff -urNp linux-2.6.32.48/fs/ext4/balloc.c linux-2.6.32.48/fs/ext4/balloc.c
15000 if (free_blocks >= (nblocks + dirty_blocks))
15001 return 1;
15002 }
15003 -diff -urNp linux-2.6.32.48/fs/ext4/ext4.h linux-2.6.32.48/fs/ext4/ext4.h
15004 ---- linux-2.6.32.48/fs/ext4/ext4.h 2011-11-12 12:44:30.000000000 -0500
15005 -+++ linux-2.6.32.48/fs/ext4/ext4.h 2011-11-12 12:46:47.000000000 -0500
15006 -@@ -1077,19 +1077,19 @@ struct ext4_sb_info {
15007 +diff -urNp linux-2.6.32.46/fs/ext4/ext4.h linux-2.6.32.46/fs/ext4/ext4.h
15008 +--- linux-2.6.32.46/fs/ext4/ext4.h 2011-03-27 14:31:47.000000000 -0400
15009 ++++ linux-2.6.32.46/fs/ext4/ext4.h 2011-04-17 15:56:46.000000000 -0400
15010 +@@ -1078,19 +1078,19 @@ struct ext4_sb_info {
15011
15012 /* stats for buddy allocator */
15013 spinlock_t s_mb_pa_lock;
15014 @@ -45044,9 +45080,9 @@ diff -urNp linux-2.6.32.48/fs/ext4/ext4.h linux-2.6.32.48/fs/ext4/ext4.h
15015 atomic_t s_lock_busy;
15016
15017 /* locality groups */
15018 -diff -urNp linux-2.6.32.48/fs/ext4/file.c linux-2.6.32.48/fs/ext4/file.c
15019 ---- linux-2.6.32.48/fs/ext4/file.c 2011-11-12 12:44:30.000000000 -0500
15020 -+++ linux-2.6.32.48/fs/ext4/file.c 2011-11-12 12:46:47.000000000 -0500
15021 +diff -urNp linux-2.6.32.46/fs/ext4/file.c linux-2.6.32.46/fs/ext4/file.c
15022 +--- linux-2.6.32.46/fs/ext4/file.c 2011-03-27 14:31:47.000000000 -0400
15023 ++++ linux-2.6.32.46/fs/ext4/file.c 2011-10-17 02:30:06.000000000 -0400
15024 @@ -122,8 +122,8 @@ static int ext4_file_open(struct inode *
15025 cp = d_path(&path, buf, sizeof(buf));
15026 path_put(&path);
15027 @@ -45058,9 +45094,9 @@ diff -urNp linux-2.6.32.48/fs/ext4/file.c linux-2.6.32.48/fs/ext4/file.c
15028 sb->s_dirt = 1;
15029 }
15030 }
15031 -diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
15032 ---- linux-2.6.32.48/fs/ext4/mballoc.c 2011-11-12 12:44:30.000000000 -0500
15033 -+++ linux-2.6.32.48/fs/ext4/mballoc.c 2011-11-12 12:46:47.000000000 -0500
15034 +diff -urNp linux-2.6.32.46/fs/ext4/mballoc.c linux-2.6.32.46/fs/ext4/mballoc.c
15035 +--- linux-2.6.32.46/fs/ext4/mballoc.c 2011-06-25 12:55:34.000000000 -0400
15036 ++++ linux-2.6.32.46/fs/ext4/mballoc.c 2011-06-25 12:56:37.000000000 -0400
15037 @@ -1755,7 +1755,7 @@ void ext4_mb_simple_scan_group(struct ex
15038 BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
15039
15040 @@ -45183,9 +45219,9 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
15041
15042 if (ac) {
15043 ac->ac_sb = sb;
15044 -diff -urNp linux-2.6.32.48/fs/ext4/super.c linux-2.6.32.48/fs/ext4/super.c
15045 ---- linux-2.6.32.48/fs/ext4/super.c 2011-11-12 12:44:30.000000000 -0500
15046 -+++ linux-2.6.32.48/fs/ext4/super.c 2011-11-12 12:46:47.000000000 -0500
15047 +diff -urNp linux-2.6.32.46/fs/ext4/super.c linux-2.6.32.46/fs/ext4/super.c
15048 +--- linux-2.6.32.46/fs/ext4/super.c 2011-03-27 14:31:47.000000000 -0400
15049 ++++ linux-2.6.32.46/fs/ext4/super.c 2011-04-17 15:56:46.000000000 -0400
15050 @@ -2287,7 +2287,7 @@ static void ext4_sb_release(struct kobje
15051 }
15052
15053 @@ -45195,9 +45231,9 @@ diff -urNp linux-2.6.32.48/fs/ext4/super.c linux-2.6.32.48/fs/ext4/super.c
15054 .show = ext4_attr_show,
15055 .store = ext4_attr_store,
15056 };
15057 -diff -urNp linux-2.6.32.48/fs/fcntl.c linux-2.6.32.48/fs/fcntl.c
15058 ---- linux-2.6.32.48/fs/fcntl.c 2011-11-12 12:44:30.000000000 -0500
15059 -+++ linux-2.6.32.48/fs/fcntl.c 2011-11-12 12:46:47.000000000 -0500
15060 +diff -urNp linux-2.6.32.46/fs/fcntl.c linux-2.6.32.46/fs/fcntl.c
15061 +--- linux-2.6.32.46/fs/fcntl.c 2011-03-27 14:31:47.000000000 -0400
15062 ++++ linux-2.6.32.46/fs/fcntl.c 2011-10-06 09:37:14.000000000 -0400
15063 @@ -223,6 +223,11 @@ int __f_setown(struct file *filp, struct
15064 if (err)
15065 return err;
15066 @@ -45236,9 +45272,9 @@ diff -urNp linux-2.6.32.48/fs/fcntl.c linux-2.6.32.48/fs/fcntl.c
15067 if (arg >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
15068 break;
15069 err = alloc_fd(arg, cmd == F_DUPFD_CLOEXEC ? O_CLOEXEC : 0);
15070 -diff -urNp linux-2.6.32.48/fs/fifo.c linux-2.6.32.48/fs/fifo.c
15071 ---- linux-2.6.32.48/fs/fifo.c 2009-12-02 22:51:21.000000000 -0500
15072 -+++ linux-2.6.32.48/fs/fifo.c 2011-11-12 12:46:47.000000000 -0500
15073 +diff -urNp linux-2.6.32.46/fs/fifo.c linux-2.6.32.46/fs/fifo.c
15074 +--- linux-2.6.32.46/fs/fifo.c 2011-03-27 14:31:47.000000000 -0400
15075 ++++ linux-2.6.32.46/fs/fifo.c 2011-04-17 15:56:46.000000000 -0400
15076 @@ -59,10 +59,10 @@ static int fifo_open(struct inode *inode
15077 */
15078 filp->f_op = &read_pipefifo_fops;
15079 @@ -45309,9 +45345,9 @@ diff -urNp linux-2.6.32.48/fs/fifo.c linux-2.6.32.48/fs/fifo.c
15080 free_pipe_info(inode);
15081
15082 err_nocleanup:
15083 -diff -urNp linux-2.6.32.48/fs/file.c linux-2.6.32.48/fs/file.c
15084 ---- linux-2.6.32.48/fs/file.c 2009-12-02 22:51:21.000000000 -0500
15085 -+++ linux-2.6.32.48/fs/file.c 2011-11-12 12:46:47.000000000 -0500
15086 +diff -urNp linux-2.6.32.46/fs/file.c linux-2.6.32.46/fs/file.c
15087 +--- linux-2.6.32.46/fs/file.c 2011-03-27 14:31:47.000000000 -0400
15088 ++++ linux-2.6.32.46/fs/file.c 2011-04-17 15:56:46.000000000 -0400
15089 @@ -14,6 +14,7 @@
15090 #include <linux/slab.h>
15091 #include <linux/vmalloc.h>
15092 @@ -45329,9 +45365,9 @@ diff -urNp linux-2.6.32.48/fs/file.c linux-2.6.32.48/fs/file.c
15093 if (nr >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
15094 return -EMFILE;
15095
15096 -diff -urNp linux-2.6.32.48/fs/filesystems.c linux-2.6.32.48/fs/filesystems.c
15097 ---- linux-2.6.32.48/fs/filesystems.c 2009-12-02 22:51:21.000000000 -0500
15098 -+++ linux-2.6.32.48/fs/filesystems.c 2011-11-12 12:46:47.000000000 -0500
15099 +diff -urNp linux-2.6.32.46/fs/filesystems.c linux-2.6.32.46/fs/filesystems.c
15100 +--- linux-2.6.32.46/fs/filesystems.c 2011-03-27 14:31:47.000000000 -0400
15101 ++++ linux-2.6.32.46/fs/filesystems.c 2011-04-17 15:56:46.000000000 -0400
15102 @@ -272,7 +272,12 @@ struct file_system_type *get_fs_type(con
15103 int len = dot ? dot - name : strlen(name);
15104
15105 @@ -45345,9 +45381,9 @@ diff -urNp linux-2.6.32.48/fs/filesystems.c linux-2.6.32.48/fs/filesystems.c
15106 fs = __get_fs_type(name, len);
15107
15108 if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) {
15109 -diff -urNp linux-2.6.32.48/fs/fscache/cookie.c linux-2.6.32.48/fs/fscache/cookie.c
15110 ---- linux-2.6.32.48/fs/fscache/cookie.c 2009-12-02 22:51:21.000000000 -0500
15111 -+++ linux-2.6.32.48/fs/fscache/cookie.c 2011-11-12 12:46:47.000000000 -0500
15112 +diff -urNp linux-2.6.32.46/fs/fscache/cookie.c linux-2.6.32.46/fs/fscache/cookie.c
15113 +--- linux-2.6.32.46/fs/fscache/cookie.c 2011-03-27 14:31:47.000000000 -0400
15114 ++++ linux-2.6.32.46/fs/fscache/cookie.c 2011-05-04 17:56:28.000000000 -0400
15115 @@ -68,11 +68,11 @@ struct fscache_cookie *__fscache_acquire
15116 parent ? (char *) parent->def->name : "<no-parent>",
15117 def->name, netfs_data);
15118 @@ -45466,9 +45502,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/cookie.c linux-2.6.32.48/fs/fscache/cookie
15119 wait_on_bit(&cookie->flags, FSCACHE_COOKIE_CREATING,
15120 fscache_wait_bit, TASK_UNINTERRUPTIBLE);
15121 }
15122 -diff -urNp linux-2.6.32.48/fs/fscache/internal.h linux-2.6.32.48/fs/fscache/internal.h
15123 ---- linux-2.6.32.48/fs/fscache/internal.h 2009-12-02 22:51:21.000000000 -0500
15124 -+++ linux-2.6.32.48/fs/fscache/internal.h 2011-11-12 12:46:47.000000000 -0500
15125 +diff -urNp linux-2.6.32.46/fs/fscache/internal.h linux-2.6.32.46/fs/fscache/internal.h
15126 +--- linux-2.6.32.46/fs/fscache/internal.h 2011-03-27 14:31:47.000000000 -0400
15127 ++++ linux-2.6.32.46/fs/fscache/internal.h 2011-05-04 17:56:28.000000000 -0400
15128 @@ -136,94 +136,94 @@ extern void fscache_proc_cleanup(void);
15129 extern atomic_t fscache_n_ops_processed[FSCACHE_MAX_THREADS];
15130 extern atomic_t fscache_n_objs_processed[FSCACHE_MAX_THREADS];
15131 @@ -45672,9 +45708,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/internal.h linux-2.6.32.48/fs/fscache/inte
15132 #define fscache_stat_d(stat) do {} while (0)
15133 #endif
15134
15135 -diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object.c
15136 ---- linux-2.6.32.48/fs/fscache/object.c 2009-12-02 22:51:21.000000000 -0500
15137 -+++ linux-2.6.32.48/fs/fscache/object.c 2011-11-12 12:46:47.000000000 -0500
15138 +diff -urNp linux-2.6.32.46/fs/fscache/object.c linux-2.6.32.46/fs/fscache/object.c
15139 +--- linux-2.6.32.46/fs/fscache/object.c 2011-03-27 14:31:47.000000000 -0400
15140 ++++ linux-2.6.32.46/fs/fscache/object.c 2011-05-04 17:56:28.000000000 -0400
15141 @@ -144,7 +144,7 @@ static void fscache_object_state_machine
15142 /* update the object metadata on disk */
15143 case FSCACHE_OBJECT_UPDATING:
15144 @@ -45786,9 +45822,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
15145 break;
15146
15147 default:
15148 -diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/operation.c
15149 ---- linux-2.6.32.48/fs/fscache/operation.c 2009-12-02 22:51:21.000000000 -0500
15150 -+++ linux-2.6.32.48/fs/fscache/operation.c 2011-11-12 12:46:47.000000000 -0500
15151 +diff -urNp linux-2.6.32.46/fs/fscache/operation.c linux-2.6.32.46/fs/fscache/operation.c
15152 +--- linux-2.6.32.46/fs/fscache/operation.c 2011-03-27 14:31:47.000000000 -0400
15153 ++++ linux-2.6.32.46/fs/fscache/operation.c 2011-05-04 17:56:28.000000000 -0400
15154 @@ -16,7 +16,7 @@
15155 #include <linux/seq_file.h>
15156 #include "internal.h"
15157 @@ -45904,9 +45940,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
15158
15159 ASSERTCMP(atomic_read(&op->usage), ==, 0);
15160
15161 -diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
15162 ---- linux-2.6.32.48/fs/fscache/page.c 2009-12-02 22:51:21.000000000 -0500
15163 -+++ linux-2.6.32.48/fs/fscache/page.c 2011-11-12 12:46:47.000000000 -0500
15164 +diff -urNp linux-2.6.32.46/fs/fscache/page.c linux-2.6.32.46/fs/fscache/page.c
15165 +--- linux-2.6.32.46/fs/fscache/page.c 2011-03-27 14:31:47.000000000 -0400
15166 ++++ linux-2.6.32.46/fs/fscache/page.c 2011-05-04 17:56:28.000000000 -0400
15167 @@ -59,7 +59,7 @@ bool __fscache_maybe_release_page(struct
15168 val = radix_tree_lookup(&cookie->stores, page->index);
15169 if (!val) {
15170 @@ -46290,9 +46326,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
15171 #endif
15172
15173 for (loop = 0; loop < pagevec->nr; loop++) {
15174 -diff -urNp linux-2.6.32.48/fs/fscache/stats.c linux-2.6.32.48/fs/fscache/stats.c
15175 ---- linux-2.6.32.48/fs/fscache/stats.c 2009-12-02 22:51:21.000000000 -0500
15176 -+++ linux-2.6.32.48/fs/fscache/stats.c 2011-11-12 12:46:47.000000000 -0500
15177 +diff -urNp linux-2.6.32.46/fs/fscache/stats.c linux-2.6.32.46/fs/fscache/stats.c
15178 +--- linux-2.6.32.46/fs/fscache/stats.c 2011-03-27 14:31:47.000000000 -0400
15179 ++++ linux-2.6.32.46/fs/fscache/stats.c 2011-05-04 17:56:28.000000000 -0400
15180 @@ -18,95 +18,95 @@
15181 /*
15182 * operation counters
15183 @@ -46668,9 +46704,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/stats.c linux-2.6.32.48/fs/fscache/stats.c
15184
15185 seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
15186 atomic_read(&fscache_n_cop_alloc_object),
15187 -diff -urNp linux-2.6.32.48/fs/fs_struct.c linux-2.6.32.48/fs/fs_struct.c
15188 ---- linux-2.6.32.48/fs/fs_struct.c 2009-12-02 22:51:21.000000000 -0500
15189 -+++ linux-2.6.32.48/fs/fs_struct.c 2011-11-12 12:46:47.000000000 -0500
15190 +diff -urNp linux-2.6.32.46/fs/fs_struct.c linux-2.6.32.46/fs/fs_struct.c
15191 +--- linux-2.6.32.46/fs/fs_struct.c 2011-03-27 14:31:47.000000000 -0400
15192 ++++ linux-2.6.32.46/fs/fs_struct.c 2011-04-17 15:56:46.000000000 -0400
15193 @@ -4,6 +4,7 @@
15194 #include <linux/path.h>
15195 #include <linux/slab.h>
15196 @@ -46750,9 +46786,9 @@ diff -urNp linux-2.6.32.48/fs/fs_struct.c linux-2.6.32.48/fs/fs_struct.c
15197 write_unlock(&fs->lock);
15198
15199 task_unlock(current);
15200 -diff -urNp linux-2.6.32.48/fs/fuse/cuse.c linux-2.6.32.48/fs/fuse/cuse.c
15201 ---- linux-2.6.32.48/fs/fuse/cuse.c 2009-12-02 22:51:21.000000000 -0500
15202 -+++ linux-2.6.32.48/fs/fuse/cuse.c 2011-11-12 12:46:47.000000000 -0500
15203 +diff -urNp linux-2.6.32.46/fs/fuse/cuse.c linux-2.6.32.46/fs/fuse/cuse.c
15204 +--- linux-2.6.32.46/fs/fuse/cuse.c 2011-03-27 14:31:47.000000000 -0400
15205 ++++ linux-2.6.32.46/fs/fuse/cuse.c 2011-08-05 20:33:55.000000000 -0400
15206 @@ -576,10 +576,12 @@ static int __init cuse_init(void)
15207 INIT_LIST_HEAD(&cuse_conntbl[i]);
15208
15209 @@ -46770,9 +46806,9 @@ diff -urNp linux-2.6.32.48/fs/fuse/cuse.c linux-2.6.32.48/fs/fuse/cuse.c
15210
15211 cuse_class = class_create(THIS_MODULE, "cuse");
15212 if (IS_ERR(cuse_class))
15213 -diff -urNp linux-2.6.32.48/fs/fuse/dev.c linux-2.6.32.48/fs/fuse/dev.c
15214 ---- linux-2.6.32.48/fs/fuse/dev.c 2011-11-12 12:44:30.000000000 -0500
15215 -+++ linux-2.6.32.48/fs/fuse/dev.c 2011-11-12 12:46:47.000000000 -0500
15216 +diff -urNp linux-2.6.32.46/fs/fuse/dev.c linux-2.6.32.46/fs/fuse/dev.c
15217 +--- linux-2.6.32.46/fs/fuse/dev.c 2011-08-29 22:24:44.000000000 -0400
15218 ++++ linux-2.6.32.46/fs/fuse/dev.c 2011-08-29 22:25:07.000000000 -0400
15219 @@ -885,7 +885,7 @@ static int fuse_notify_inval_entry(struc
15220 {
15221 struct fuse_notify_inval_entry_out outarg;
15222 @@ -46816,9 +46852,9 @@ diff -urNp linux-2.6.32.48/fs/fuse/dev.c linux-2.6.32.48/fs/fuse/dev.c
15223 return err;
15224 }
15225
15226 -diff -urNp linux-2.6.32.48/fs/fuse/dir.c linux-2.6.32.48/fs/fuse/dir.c
15227 ---- linux-2.6.32.48/fs/fuse/dir.c 2009-12-02 22:51:21.000000000 -0500
15228 -+++ linux-2.6.32.48/fs/fuse/dir.c 2011-11-12 12:46:47.000000000 -0500
15229 +diff -urNp linux-2.6.32.46/fs/fuse/dir.c linux-2.6.32.46/fs/fuse/dir.c
15230 +--- linux-2.6.32.46/fs/fuse/dir.c 2011-03-27 14:31:47.000000000 -0400
15231 ++++ linux-2.6.32.46/fs/fuse/dir.c 2011-04-17 15:56:46.000000000 -0400
15232 @@ -1127,7 +1127,7 @@ static char *read_link(struct dentry *de
15233 return link;
15234 }
15235 @@ -46828,9 +46864,9 @@ diff -urNp linux-2.6.32.48/fs/fuse/dir.c linux-2.6.32.48/fs/fuse/dir.c
15236 {
15237 if (!IS_ERR(link))
15238 free_page((unsigned long) link);
15239 -diff -urNp linux-2.6.32.48/fs/gfs2/ops_inode.c linux-2.6.32.48/fs/gfs2/ops_inode.c
15240 ---- linux-2.6.32.48/fs/gfs2/ops_inode.c 2009-12-02 22:51:21.000000000 -0500
15241 -+++ linux-2.6.32.48/fs/gfs2/ops_inode.c 2011-11-12 12:46:47.000000000 -0500
15242 +diff -urNp linux-2.6.32.46/fs/gfs2/ops_inode.c linux-2.6.32.46/fs/gfs2/ops_inode.c
15243 +--- linux-2.6.32.46/fs/gfs2/ops_inode.c 2011-03-27 14:31:47.000000000 -0400
15244 ++++ linux-2.6.32.46/fs/gfs2/ops_inode.c 2011-05-16 21:46:57.000000000 -0400
15245 @@ -752,6 +752,8 @@ static int gfs2_rename(struct inode *odi
15246 unsigned int x;
15247 int error;
15248 @@ -46840,9 +46876,9 @@ diff -urNp linux-2.6.32.48/fs/gfs2/ops_inode.c linux-2.6.32.48/fs/gfs2/ops_inode
15249 if (ndentry->d_inode) {
15250 nip = GFS2_I(ndentry->d_inode);
15251 if (ip == nip)
15252 -diff -urNp linux-2.6.32.48/fs/gfs2/sys.c linux-2.6.32.48/fs/gfs2/sys.c
15253 ---- linux-2.6.32.48/fs/gfs2/sys.c 2009-12-02 22:51:21.000000000 -0500
15254 -+++ linux-2.6.32.48/fs/gfs2/sys.c 2011-11-12 12:46:47.000000000 -0500
15255 +diff -urNp linux-2.6.32.46/fs/gfs2/sys.c linux-2.6.32.46/fs/gfs2/sys.c
15256 +--- linux-2.6.32.46/fs/gfs2/sys.c 2011-03-27 14:31:47.000000000 -0400
15257 ++++ linux-2.6.32.46/fs/gfs2/sys.c 2011-04-17 15:56:46.000000000 -0400
15258 @@ -49,7 +49,7 @@ static ssize_t gfs2_attr_store(struct ko
15259 return a->store ? a->store(sdp, buf, len) : len;
15260 }
15261 @@ -46861,9 +46897,9 @@ diff -urNp linux-2.6.32.48/fs/gfs2/sys.c linux-2.6.32.48/fs/gfs2/sys.c
15262 .uevent = gfs2_uevent,
15263 };
15264
15265 -diff -urNp linux-2.6.32.48/fs/hfsplus/catalog.c linux-2.6.32.48/fs/hfsplus/catalog.c
15266 ---- linux-2.6.32.48/fs/hfsplus/catalog.c 2009-12-02 22:51:21.000000000 -0500
15267 -+++ linux-2.6.32.48/fs/hfsplus/catalog.c 2011-11-12 12:46:47.000000000 -0500
15268 +diff -urNp linux-2.6.32.46/fs/hfsplus/catalog.c linux-2.6.32.46/fs/hfsplus/catalog.c
15269 +--- linux-2.6.32.46/fs/hfsplus/catalog.c 2011-03-27 14:31:47.000000000 -0400
15270 ++++ linux-2.6.32.46/fs/hfsplus/catalog.c 2011-05-16 21:46:57.000000000 -0400
15271 @@ -157,6 +157,8 @@ int hfsplus_find_cat(struct super_block
15272 int err;
15273 u16 type;
15274 @@ -46891,9 +46927,9 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/catalog.c linux-2.6.32.48/fs/hfsplus/catal
15275 dprint(DBG_CAT_MOD, "rename_cat: %u - %lu,%s - %lu,%s\n", cnid, src_dir->i_ino, src_name->name,
15276 dst_dir->i_ino, dst_name->name);
15277 sb = src_dir->i_sb;
15278 -diff -urNp linux-2.6.32.48/fs/hfsplus/dir.c linux-2.6.32.48/fs/hfsplus/dir.c
15279 ---- linux-2.6.32.48/fs/hfsplus/dir.c 2009-12-02 22:51:21.000000000 -0500
15280 -+++ linux-2.6.32.48/fs/hfsplus/dir.c 2011-11-12 12:46:47.000000000 -0500
15281 +diff -urNp linux-2.6.32.46/fs/hfsplus/dir.c linux-2.6.32.46/fs/hfsplus/dir.c
15282 +--- linux-2.6.32.46/fs/hfsplus/dir.c 2011-03-27 14:31:47.000000000 -0400
15283 ++++ linux-2.6.32.46/fs/hfsplus/dir.c 2011-05-16 21:46:57.000000000 -0400
15284 @@ -121,6 +121,8 @@ static int hfsplus_readdir(struct file *
15285 struct hfsplus_readdir_data *rd;
15286 u16 type;
15287 @@ -46903,9 +46939,9 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/dir.c linux-2.6.32.48/fs/hfsplus/dir.c
15288 if (filp->f_pos >= inode->i_size)
15289 return 0;
15290
15291 -diff -urNp linux-2.6.32.48/fs/hfsplus/inode.c linux-2.6.32.48/fs/hfsplus/inode.c
15292 ---- linux-2.6.32.48/fs/hfsplus/inode.c 2009-12-02 22:51:21.000000000 -0500
15293 -+++ linux-2.6.32.48/fs/hfsplus/inode.c 2011-11-12 12:46:47.000000000 -0500
15294 +diff -urNp linux-2.6.32.46/fs/hfsplus/inode.c linux-2.6.32.46/fs/hfsplus/inode.c
15295 +--- linux-2.6.32.46/fs/hfsplus/inode.c 2011-03-27 14:31:47.000000000 -0400
15296 ++++ linux-2.6.32.46/fs/hfsplus/inode.c 2011-05-16 21:46:57.000000000 -0400
15297 @@ -399,6 +399,8 @@ int hfsplus_cat_read_inode(struct inode
15298 int res = 0;
15299 u16 type;
15300 @@ -46924,9 +46960,9 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/inode.c linux-2.6.32.48/fs/hfsplus/inode.c
15301 if (HFSPLUS_IS_RSRC(inode))
15302 main_inode = HFSPLUS_I(inode).rsrc_inode;
15303
15304 -diff -urNp linux-2.6.32.48/fs/hfsplus/ioctl.c linux-2.6.32.48/fs/hfsplus/ioctl.c
15305 ---- linux-2.6.32.48/fs/hfsplus/ioctl.c 2009-12-02 22:51:21.000000000 -0500
15306 -+++ linux-2.6.32.48/fs/hfsplus/ioctl.c 2011-11-12 12:46:47.000000000 -0500
15307 +diff -urNp linux-2.6.32.46/fs/hfsplus/ioctl.c linux-2.6.32.46/fs/hfsplus/ioctl.c
15308 +--- linux-2.6.32.46/fs/hfsplus/ioctl.c 2011-03-27 14:31:47.000000000 -0400
15309 ++++ linux-2.6.32.46/fs/hfsplus/ioctl.c 2011-05-16 21:46:57.000000000 -0400
15310 @@ -101,6 +101,8 @@ int hfsplus_setxattr(struct dentry *dent
15311 struct hfsplus_cat_file *file;
15312 int res;
15313 @@ -46945,9 +46981,9 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/ioctl.c linux-2.6.32.48/fs/hfsplus/ioctl.c
15314 if (!S_ISREG(inode->i_mode) || HFSPLUS_IS_RSRC(inode))
15315 return -EOPNOTSUPP;
15316
15317 -diff -urNp linux-2.6.32.48/fs/hfsplus/super.c linux-2.6.32.48/fs/hfsplus/super.c
15318 ---- linux-2.6.32.48/fs/hfsplus/super.c 2009-12-02 22:51:21.000000000 -0500
15319 -+++ linux-2.6.32.48/fs/hfsplus/super.c 2011-11-12 12:46:47.000000000 -0500
15320 +diff -urNp linux-2.6.32.46/fs/hfsplus/super.c linux-2.6.32.46/fs/hfsplus/super.c
15321 +--- linux-2.6.32.46/fs/hfsplus/super.c 2011-03-27 14:31:47.000000000 -0400
15322 ++++ linux-2.6.32.46/fs/hfsplus/super.c 2011-05-16 21:46:57.000000000 -0400
15323 @@ -312,6 +312,8 @@ static int hfsplus_fill_super(struct sup
15324 struct nls_table *nls = NULL;
15325 int err = -EINVAL;
15326 @@ -46957,9 +46993,9 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/super.c linux-2.6.32.48/fs/hfsplus/super.c
15327 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
15328 if (!sbi)
15329 return -ENOMEM;
15330 -diff -urNp linux-2.6.32.48/fs/hugetlbfs/inode.c linux-2.6.32.48/fs/hugetlbfs/inode.c
15331 ---- linux-2.6.32.48/fs/hugetlbfs/inode.c 2009-12-02 22:51:21.000000000 -0500
15332 -+++ linux-2.6.32.48/fs/hugetlbfs/inode.c 2011-11-12 12:46:47.000000000 -0500
15333 +diff -urNp linux-2.6.32.46/fs/hugetlbfs/inode.c linux-2.6.32.46/fs/hugetlbfs/inode.c
15334 +--- linux-2.6.32.46/fs/hugetlbfs/inode.c 2011-03-27 14:31:47.000000000 -0400
15335 ++++ linux-2.6.32.46/fs/hugetlbfs/inode.c 2011-04-17 15:56:46.000000000 -0400
15336 @@ -909,7 +909,7 @@ static struct file_system_type hugetlbfs
15337 .kill_sb = kill_litter_super,
15338 };
15339 @@ -46969,9 +47005,9 @@ diff -urNp linux-2.6.32.48/fs/hugetlbfs/inode.c linux-2.6.32.48/fs/hugetlbfs/ino
15340
15341 static int can_do_hugetlb_shm(void)
15342 {
15343 -diff -urNp linux-2.6.32.48/fs/ioctl.c linux-2.6.32.48/fs/ioctl.c
15344 ---- linux-2.6.32.48/fs/ioctl.c 2009-12-02 22:51:21.000000000 -0500
15345 -+++ linux-2.6.32.48/fs/ioctl.c 2011-11-12 12:46:47.000000000 -0500
15346 +diff -urNp linux-2.6.32.46/fs/ioctl.c linux-2.6.32.46/fs/ioctl.c
15347 +--- linux-2.6.32.46/fs/ioctl.c 2011-03-27 14:31:47.000000000 -0400
15348 ++++ linux-2.6.32.46/fs/ioctl.c 2011-04-17 15:56:46.000000000 -0400
15349 @@ -97,7 +97,7 @@ int fiemap_fill_next_extent(struct fiema
15350 u64 phys, u64 len, u32 flags)
15351 {
15352 @@ -46999,9 +47035,9 @@ diff -urNp linux-2.6.32.48/fs/ioctl.c linux-2.6.32.48/fs/ioctl.c
15353 error = -EFAULT;
15354
15355 return error;
15356 -diff -urNp linux-2.6.32.48/fs/jbd/checkpoint.c linux-2.6.32.48/fs/jbd/checkpoint.c
15357 ---- linux-2.6.32.48/fs/jbd/checkpoint.c 2009-12-02 22:51:21.000000000 -0500
15358 -+++ linux-2.6.32.48/fs/jbd/checkpoint.c 2011-11-12 12:46:47.000000000 -0500
15359 +diff -urNp linux-2.6.32.46/fs/jbd/checkpoint.c linux-2.6.32.46/fs/jbd/checkpoint.c
15360 +--- linux-2.6.32.46/fs/jbd/checkpoint.c 2011-03-27 14:31:47.000000000 -0400
15361 ++++ linux-2.6.32.46/fs/jbd/checkpoint.c 2011-05-16 21:46:57.000000000 -0400
15362 @@ -348,6 +348,8 @@ int log_do_checkpoint(journal_t *journal
15363 tid_t this_tid;
15364 int result;
15365 @@ -47011,9 +47047,9 @@ diff -urNp linux-2.6.32.48/fs/jbd/checkpoint.c linux-2.6.32.48/fs/jbd/checkpoint
15366 jbd_debug(1, "Start checkpoint\n");
15367
15368 /*
15369 -diff -urNp linux-2.6.32.48/fs/jffs2/compr_rtime.c linux-2.6.32.48/fs/jffs2/compr_rtime.c
15370 ---- linux-2.6.32.48/fs/jffs2/compr_rtime.c 2009-12-02 22:51:21.000000000 -0500
15371 -+++ linux-2.6.32.48/fs/jffs2/compr_rtime.c 2011-11-12 12:46:47.000000000 -0500
15372 +diff -urNp linux-2.6.32.46/fs/jffs2/compr_rtime.c linux-2.6.32.46/fs/jffs2/compr_rtime.c
15373 +--- linux-2.6.32.46/fs/jffs2/compr_rtime.c 2011-03-27 14:31:47.000000000 -0400
15374 ++++ linux-2.6.32.46/fs/jffs2/compr_rtime.c 2011-05-16 21:46:57.000000000 -0400
15375 @@ -37,6 +37,8 @@ static int jffs2_rtime_compress(unsigned
15376 int outpos = 0;
15377 int pos=0;
15378 @@ -47032,9 +47068,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/compr_rtime.c linux-2.6.32.48/fs/jffs2/compr
15379 memset(positions,0,sizeof(positions));
15380
15381 while (outpos<destlen) {
15382 -diff -urNp linux-2.6.32.48/fs/jffs2/compr_rubin.c linux-2.6.32.48/fs/jffs2/compr_rubin.c
15383 ---- linux-2.6.32.48/fs/jffs2/compr_rubin.c 2009-12-02 22:51:21.000000000 -0500
15384 -+++ linux-2.6.32.48/fs/jffs2/compr_rubin.c 2011-11-12 12:46:47.000000000 -0500
15385 +diff -urNp linux-2.6.32.46/fs/jffs2/compr_rubin.c linux-2.6.32.46/fs/jffs2/compr_rubin.c
15386 +--- linux-2.6.32.46/fs/jffs2/compr_rubin.c 2011-03-27 14:31:47.000000000 -0400
15387 ++++ linux-2.6.32.46/fs/jffs2/compr_rubin.c 2011-05-16 21:46:57.000000000 -0400
15388 @@ -314,6 +314,8 @@ static int jffs2_dynrubin_compress(unsig
15389 int ret;
15390 uint32_t mysrclen, mydstlen;
15391 @@ -47044,9 +47080,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/compr_rubin.c linux-2.6.32.48/fs/jffs2/compr
15392 mysrclen = *sourcelen;
15393 mydstlen = *dstlen - 8;
15394
15395 -diff -urNp linux-2.6.32.48/fs/jffs2/erase.c linux-2.6.32.48/fs/jffs2/erase.c
15396 ---- linux-2.6.32.48/fs/jffs2/erase.c 2009-12-02 22:51:21.000000000 -0500
15397 -+++ linux-2.6.32.48/fs/jffs2/erase.c 2011-11-12 12:46:47.000000000 -0500
15398 +diff -urNp linux-2.6.32.46/fs/jffs2/erase.c linux-2.6.32.46/fs/jffs2/erase.c
15399 +--- linux-2.6.32.46/fs/jffs2/erase.c 2011-03-27 14:31:47.000000000 -0400
15400 ++++ linux-2.6.32.46/fs/jffs2/erase.c 2011-04-17 15:56:46.000000000 -0400
15401 @@ -434,7 +434,8 @@ static void jffs2_mark_erased_block(stru
15402 struct jffs2_unknown_node marker = {
15403 .magic = cpu_to_je16(JFFS2_MAGIC_BITMASK),
15404 @@ -47057,9 +47093,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/erase.c linux-2.6.32.48/fs/jffs2/erase.c
15405 };
15406
15407 jffs2_prealloc_raw_node_refs(c, jeb, 1);
15408 -diff -urNp linux-2.6.32.48/fs/jffs2/wbuf.c linux-2.6.32.48/fs/jffs2/wbuf.c
15409 ---- linux-2.6.32.48/fs/jffs2/wbuf.c 2009-12-02 22:51:21.000000000 -0500
15410 -+++ linux-2.6.32.48/fs/jffs2/wbuf.c 2011-11-12 12:46:47.000000000 -0500
15411 +diff -urNp linux-2.6.32.46/fs/jffs2/wbuf.c linux-2.6.32.46/fs/jffs2/wbuf.c
15412 +--- linux-2.6.32.46/fs/jffs2/wbuf.c 2011-03-27 14:31:47.000000000 -0400
15413 ++++ linux-2.6.32.46/fs/jffs2/wbuf.c 2011-04-17 15:56:46.000000000 -0400
15414 @@ -1012,7 +1012,8 @@ static const struct jffs2_unknown_node o
15415 {
15416 .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK),
15417 @@ -47070,9 +47106,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/wbuf.c linux-2.6.32.48/fs/jffs2/wbuf.c
15418 };
15419
15420 /*
15421 -diff -urNp linux-2.6.32.48/fs/jffs2/xattr.c linux-2.6.32.48/fs/jffs2/xattr.c
15422 ---- linux-2.6.32.48/fs/jffs2/xattr.c 2009-12-02 22:51:21.000000000 -0500
15423 -+++ linux-2.6.32.48/fs/jffs2/xattr.c 2011-11-12 12:46:47.000000000 -0500
15424 +diff -urNp linux-2.6.32.46/fs/jffs2/xattr.c linux-2.6.32.46/fs/jffs2/xattr.c
15425 +--- linux-2.6.32.46/fs/jffs2/xattr.c 2011-03-27 14:31:47.000000000 -0400
15426 ++++ linux-2.6.32.46/fs/jffs2/xattr.c 2011-05-16 21:46:57.000000000 -0400
15427 @@ -773,6 +773,8 @@ void jffs2_build_xattr_subsystem(struct
15428
15429 BUG_ON(!(c->flags & JFFS2_SB_FLAG_BUILDING));
15430 @@ -47082,9 +47118,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/xattr.c linux-2.6.32.48/fs/jffs2/xattr.c
15431 /* Phase.1 : Merge same xref */
15432 for (i=0; i < XREF_TMPHASH_SIZE; i++)
15433 xref_tmphash[i] = NULL;
15434 -diff -urNp linux-2.6.32.48/fs/jfs/super.c linux-2.6.32.48/fs/jfs/super.c
15435 ---- linux-2.6.32.48/fs/jfs/super.c 2009-12-02 22:51:21.000000000 -0500
15436 -+++ linux-2.6.32.48/fs/jfs/super.c 2011-11-12 12:46:47.000000000 -0500
15437 +diff -urNp linux-2.6.32.46/fs/jfs/super.c linux-2.6.32.46/fs/jfs/super.c
15438 +--- linux-2.6.32.46/fs/jfs/super.c 2011-03-27 14:31:47.000000000 -0400
15439 ++++ linux-2.6.32.46/fs/jfs/super.c 2011-06-07 18:06:04.000000000 -0400
15440 @@ -793,7 +793,7 @@ static int __init init_jfs_fs(void)
15441
15442 jfs_inode_cachep =
15443 @@ -47094,9 +47130,9 @@ diff -urNp linux-2.6.32.48/fs/jfs/super.c linux-2.6.32.48/fs/jfs/super.c
15444 init_once);
15445 if (jfs_inode_cachep == NULL)
15446 return -ENOMEM;
15447 -diff -urNp linux-2.6.32.48/fs/Kconfig.binfmt linux-2.6.32.48/fs/Kconfig.binfmt
15448 ---- linux-2.6.32.48/fs/Kconfig.binfmt 2009-12-02 22:51:21.000000000 -0500
15449 -+++ linux-2.6.32.48/fs/Kconfig.binfmt 2011-11-12 12:46:47.000000000 -0500
15450 +diff -urNp linux-2.6.32.46/fs/Kconfig.binfmt linux-2.6.32.46/fs/Kconfig.binfmt
15451 +--- linux-2.6.32.46/fs/Kconfig.binfmt 2011-03-27 14:31:47.000000000 -0400
15452 ++++ linux-2.6.32.46/fs/Kconfig.binfmt 2011-04-17 15:56:46.000000000 -0400
15453 @@ -86,7 +86,7 @@ config HAVE_AOUT
15454
15455 config BINFMT_AOUT
15456 @@ -47106,9 +47142,9 @@ diff -urNp linux-2.6.32.48/fs/Kconfig.binfmt linux-2.6.32.48/fs/Kconfig.binfmt
15457 ---help---
15458 A.out (Assembler.OUTput) is a set of formats for libraries and
15459 executables used in the earliest versions of UNIX. Linux used
15460 -diff -urNp linux-2.6.32.48/fs/libfs.c linux-2.6.32.48/fs/libfs.c
15461 ---- linux-2.6.32.48/fs/libfs.c 2011-11-12 12:44:30.000000000 -0500
15462 -+++ linux-2.6.32.48/fs/libfs.c 2011-11-12 12:46:47.000000000 -0500
15463 +diff -urNp linux-2.6.32.46/fs/libfs.c linux-2.6.32.46/fs/libfs.c
15464 +--- linux-2.6.32.46/fs/libfs.c 2011-03-27 14:31:47.000000000 -0400
15465 ++++ linux-2.6.32.46/fs/libfs.c 2011-05-11 18:25:15.000000000 -0400
15466 @@ -157,12 +157,20 @@ int dcache_readdir(struct file * filp, v
15467
15468 for (p=q->next; p != &dentry->d_subdirs; p=p->next) {
15469 @@ -47131,9 +47167,9 @@ diff -urNp linux-2.6.32.48/fs/libfs.c linux-2.6.32.48/fs/libfs.c
15470 next->d_name.len, filp->f_pos,
15471 next->d_inode->i_ino,
15472 dt_type(next->d_inode)) < 0)
15473 -diff -urNp linux-2.6.32.48/fs/lockd/clntproc.c linux-2.6.32.48/fs/lockd/clntproc.c
15474 ---- linux-2.6.32.48/fs/lockd/clntproc.c 2011-11-12 12:44:30.000000000 -0500
15475 -+++ linux-2.6.32.48/fs/lockd/clntproc.c 2011-11-12 12:46:47.000000000 -0500
15476 +diff -urNp linux-2.6.32.46/fs/lockd/clntproc.c linux-2.6.32.46/fs/lockd/clntproc.c
15477 +--- linux-2.6.32.46/fs/lockd/clntproc.c 2011-03-27 14:31:47.000000000 -0400
15478 ++++ linux-2.6.32.46/fs/lockd/clntproc.c 2011-05-16 21:46:57.000000000 -0400
15479 @@ -36,11 +36,11 @@ static const struct rpc_call_ops nlmclnt
15480 /*
15481 * Cookie counter for NLM requests
15482 @@ -47157,9 +47193,9 @@ diff -urNp linux-2.6.32.48/fs/lockd/clntproc.c linux-2.6.32.48/fs/lockd/clntproc
15483 req = &reqst;
15484 memset(req, 0, sizeof(*req));
15485 locks_init_lock(&req->a_args.lock.fl);
15486 -diff -urNp linux-2.6.32.48/fs/lockd/svc.c linux-2.6.32.48/fs/lockd/svc.c
15487 ---- linux-2.6.32.48/fs/lockd/svc.c 2009-12-02 22:51:21.000000000 -0500
15488 -+++ linux-2.6.32.48/fs/lockd/svc.c 2011-11-12 12:46:47.000000000 -0500
15489 +diff -urNp linux-2.6.32.46/fs/lockd/svc.c linux-2.6.32.46/fs/lockd/svc.c
15490 +--- linux-2.6.32.46/fs/lockd/svc.c 2011-03-27 14:31:47.000000000 -0400
15491 ++++ linux-2.6.32.46/fs/lockd/svc.c 2011-04-17 15:56:46.000000000 -0400
15492 @@ -43,7 +43,7 @@
15493
15494 static struct svc_program nlmsvc_program;
15495 @@ -47169,9 +47205,9 @@ diff -urNp linux-2.6.32.48/fs/lockd/svc.c linux-2.6.32.48/fs/lockd/svc.c
15496 EXPORT_SYMBOL_GPL(nlmsvc_ops);
15497
15498 static DEFINE_MUTEX(nlmsvc_mutex);
15499 -diff -urNp linux-2.6.32.48/fs/locks.c linux-2.6.32.48/fs/locks.c
15500 ---- linux-2.6.32.48/fs/locks.c 2009-12-02 22:51:21.000000000 -0500
15501 -+++ linux-2.6.32.48/fs/locks.c 2011-11-12 12:46:47.000000000 -0500
15502 +diff -urNp linux-2.6.32.46/fs/locks.c linux-2.6.32.46/fs/locks.c
15503 +--- linux-2.6.32.46/fs/locks.c 2011-03-27 14:31:47.000000000 -0400
15504 ++++ linux-2.6.32.46/fs/locks.c 2011-07-06 19:47:11.000000000 -0400
15505 @@ -145,10 +145,28 @@ static LIST_HEAD(blocked_list);
15506
15507 static struct kmem_cache *filelock_cache __read_mostly;
15508 @@ -47242,9 +47278,9 @@ diff -urNp linux-2.6.32.48/fs/locks.c linux-2.6.32.48/fs/locks.c
15509 }
15510
15511 lock_kernel();
15512 -diff -urNp linux-2.6.32.48/fs/mbcache.c linux-2.6.32.48/fs/mbcache.c
15513 ---- linux-2.6.32.48/fs/mbcache.c 2009-12-02 22:51:21.000000000 -0500
15514 -+++ linux-2.6.32.48/fs/mbcache.c 2011-11-12 12:46:47.000000000 -0500
15515 +diff -urNp linux-2.6.32.46/fs/mbcache.c linux-2.6.32.46/fs/mbcache.c
15516 +--- linux-2.6.32.46/fs/mbcache.c 2011-03-27 14:31:47.000000000 -0400
15517 ++++ linux-2.6.32.46/fs/mbcache.c 2011-08-05 20:33:55.000000000 -0400
15518 @@ -266,9 +266,9 @@ mb_cache_create(const char *name, struct
15519 if (!cache)
15520 goto fail;
15521 @@ -47257,9 +47293,9 @@ diff -urNp linux-2.6.32.48/fs/mbcache.c linux-2.6.32.48/fs/mbcache.c
15522 atomic_set(&cache->c_entry_count, 0);
15523 cache->c_bucket_bits = bucket_bits;
15524 #ifdef MB_CACHE_INDEXES_COUNT
15525 -diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
15526 ---- linux-2.6.32.48/fs/namei.c 2011-11-12 12:44:30.000000000 -0500
15527 -+++ linux-2.6.32.48/fs/namei.c 2011-11-12 12:46:47.000000000 -0500
15528 +diff -urNp linux-2.6.32.46/fs/namei.c linux-2.6.32.46/fs/namei.c
15529 +--- linux-2.6.32.46/fs/namei.c 2011-03-27 14:31:47.000000000 -0400
15530 ++++ linux-2.6.32.46/fs/namei.c 2011-10-19 12:12:56.000000000 -0400
15531 @@ -224,14 +224,6 @@ int generic_permission(struct inode *ino
15532 return ret;
15533
15534 @@ -47712,9 +47748,9 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
15535 len = -EFAULT;
15536 out:
15537 return len;
15538 -diff -urNp linux-2.6.32.48/fs/namespace.c linux-2.6.32.48/fs/namespace.c
15539 ---- linux-2.6.32.48/fs/namespace.c 2011-11-12 12:44:30.000000000 -0500
15540 -+++ linux-2.6.32.48/fs/namespace.c 2011-11-12 12:46:47.000000000 -0500
15541 +diff -urNp linux-2.6.32.46/fs/namespace.c linux-2.6.32.46/fs/namespace.c
15542 +--- linux-2.6.32.46/fs/namespace.c 2011-03-27 14:31:47.000000000 -0400
15543 ++++ linux-2.6.32.46/fs/namespace.c 2011-04-17 15:56:46.000000000 -0400
15544 @@ -1083,6 +1083,9 @@ static int do_umount(struct vfsmount *mn
15545 if (!(sb->s_flags & MS_RDONLY))
15546 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
15547 @@ -47775,9 +47811,9 @@ diff -urNp linux-2.6.32.48/fs/namespace.c linux-2.6.32.48/fs/namespace.c
15548 read_lock(&current->fs->lock);
15549 root = current->fs->root;
15550 path_get(&current->fs->root);
15551 -diff -urNp linux-2.6.32.48/fs/ncpfs/dir.c linux-2.6.32.48/fs/ncpfs/dir.c
15552 ---- linux-2.6.32.48/fs/ncpfs/dir.c 2009-12-02 22:51:21.000000000 -0500
15553 -+++ linux-2.6.32.48/fs/ncpfs/dir.c 2011-11-12 12:46:47.000000000 -0500
15554 +diff -urNp linux-2.6.32.46/fs/ncpfs/dir.c linux-2.6.32.46/fs/ncpfs/dir.c
15555 +--- linux-2.6.32.46/fs/ncpfs/dir.c 2011-03-27 14:31:47.000000000 -0400
15556 ++++ linux-2.6.32.46/fs/ncpfs/dir.c 2011-05-16 21:46:57.000000000 -0400
15557 @@ -275,6 +275,8 @@ __ncp_lookup_validate(struct dentry *den
15558 int res, val = 0, len;
15559 __u8 __name[NCP_MAXPATHLEN + 1];
15560 @@ -47837,9 +47873,9 @@ diff -urNp linux-2.6.32.48/fs/ncpfs/dir.c linux-2.6.32.48/fs/ncpfs/dir.c
15561 DPRINTK("ncp_rename: %s/%s to %s/%s\n",
15562 old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
15563 new_dentry->d_parent->d_name.name, new_dentry->d_name.name);
15564 -diff -urNp linux-2.6.32.48/fs/ncpfs/inode.c linux-2.6.32.48/fs/ncpfs/inode.c
15565 ---- linux-2.6.32.48/fs/ncpfs/inode.c 2009-12-02 22:51:21.000000000 -0500
15566 -+++ linux-2.6.32.48/fs/ncpfs/inode.c 2011-11-12 12:46:47.000000000 -0500
15567 +diff -urNp linux-2.6.32.46/fs/ncpfs/inode.c linux-2.6.32.46/fs/ncpfs/inode.c
15568 +--- linux-2.6.32.46/fs/ncpfs/inode.c 2011-03-27 14:31:47.000000000 -0400
15569 ++++ linux-2.6.32.46/fs/ncpfs/inode.c 2011-05-16 21:46:57.000000000 -0400
15570 @@ -445,6 +445,8 @@ static int ncp_fill_super(struct super_b
15571 #endif
15572 struct ncp_entry_info finfo;
15573 @@ -47849,9 +47885,9 @@ diff -urNp linux-2.6.32.48/fs/ncpfs/inode.c linux-2.6.32.48/fs/ncpfs/inode.c
15574 data.wdog_pid = NULL;
15575 server = kzalloc(sizeof(struct ncp_server), GFP_KERNEL);
15576 if (!server)
15577 -diff -urNp linux-2.6.32.48/fs/nfs/inode.c linux-2.6.32.48/fs/nfs/inode.c
15578 ---- linux-2.6.32.48/fs/nfs/inode.c 2011-11-12 12:44:30.000000000 -0500
15579 -+++ linux-2.6.32.48/fs/nfs/inode.c 2011-11-12 12:46:47.000000000 -0500
15580 +diff -urNp linux-2.6.32.46/fs/nfs/inode.c linux-2.6.32.46/fs/nfs/inode.c
15581 +--- linux-2.6.32.46/fs/nfs/inode.c 2011-05-10 22:12:01.000000000 -0400
15582 ++++ linux-2.6.32.46/fs/nfs/inode.c 2011-07-06 19:53:33.000000000 -0400
15583 @@ -156,7 +156,7 @@ static void nfs_zap_caches_locked(struct
15584 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
15585 nfsi->attrtimeo_timestamp = jiffies;
15586 @@ -47881,9 +47917,9 @@ diff -urNp linux-2.6.32.48/fs/nfs/inode.c linux-2.6.32.48/fs/nfs/inode.c
15587 }
15588
15589 void nfs_fattr_init(struct nfs_fattr *fattr)
15590 -diff -urNp linux-2.6.32.48/fs/nfsd/lockd.c linux-2.6.32.48/fs/nfsd/lockd.c
15591 ---- linux-2.6.32.48/fs/nfsd/lockd.c 2011-11-12 12:44:30.000000000 -0500
15592 -+++ linux-2.6.32.48/fs/nfsd/lockd.c 2011-11-12 12:46:47.000000000 -0500
15593 +diff -urNp linux-2.6.32.46/fs/nfsd/lockd.c linux-2.6.32.46/fs/nfsd/lockd.c
15594 +--- linux-2.6.32.46/fs/nfsd/lockd.c 2011-04-17 17:00:52.000000000 -0400
15595 ++++ linux-2.6.32.46/fs/nfsd/lockd.c 2011-04-17 17:03:15.000000000 -0400
15596 @@ -66,7 +66,7 @@ nlm_fclose(struct file *filp)
15597 fput(filp);
15598 }
15599 @@ -47893,10 +47929,10 @@ diff -urNp linux-2.6.32.48/fs/nfsd/lockd.c linux-2.6.32.48/fs/nfsd/lockd.c
15600 .fopen = nlm_fopen, /* open file for locking */
15601 .fclose = nlm_fclose, /* close file */
15602 };
15603 -diff -urNp linux-2.6.32.48/fs/nfsd/nfs4state.c linux-2.6.32.48/fs/nfsd/nfs4state.c
15604 ---- linux-2.6.32.48/fs/nfsd/nfs4state.c 2011-11-12 12:44:30.000000000 -0500
15605 -+++ linux-2.6.32.48/fs/nfsd/nfs4state.c 2011-11-12 12:46:47.000000000 -0500
15606 -@@ -3459,6 +3459,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struc
15607 +diff -urNp linux-2.6.32.46/fs/nfsd/nfs4state.c linux-2.6.32.46/fs/nfsd/nfs4state.c
15608 +--- linux-2.6.32.46/fs/nfsd/nfs4state.c 2011-03-27 14:31:47.000000000 -0400
15609 ++++ linux-2.6.32.46/fs/nfsd/nfs4state.c 2011-05-16 21:46:57.000000000 -0400
15610 +@@ -3457,6 +3457,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struc
15611 unsigned int cmd;
15612 int err;
15613
15614 @@ -47905,9 +47941,9 @@ diff -urNp linux-2.6.32.48/fs/nfsd/nfs4state.c linux-2.6.32.48/fs/nfsd/nfs4state
15615 dprintk("NFSD: nfsd4_lock: start=%Ld length=%Ld\n",
15616 (long long) lock->lk_offset,
15617 (long long) lock->lk_length);
15618 -diff -urNp linux-2.6.32.48/fs/nfsd/nfs4xdr.c linux-2.6.32.48/fs/nfsd/nfs4xdr.c
15619 ---- linux-2.6.32.48/fs/nfsd/nfs4xdr.c 2011-11-12 12:44:30.000000000 -0500
15620 -+++ linux-2.6.32.48/fs/nfsd/nfs4xdr.c 2011-11-12 12:46:47.000000000 -0500
15621 +diff -urNp linux-2.6.32.46/fs/nfsd/nfs4xdr.c linux-2.6.32.46/fs/nfsd/nfs4xdr.c
15622 +--- linux-2.6.32.46/fs/nfsd/nfs4xdr.c 2011-03-27 14:31:47.000000000 -0400
15623 ++++ linux-2.6.32.46/fs/nfsd/nfs4xdr.c 2011-05-16 21:46:57.000000000 -0400
15624 @@ -1751,6 +1751,8 @@ nfsd4_encode_fattr(struct svc_fh *fhp, s
15625 struct nfsd4_compoundres *resp = rqstp->rq_resp;
15626 u32 minorversion = resp->cstate.minorversion;
15627 @@ -47917,9 +47953,9 @@ diff -urNp linux-2.6.32.48/fs/nfsd/nfs4xdr.c linux-2.6.32.48/fs/nfsd/nfs4xdr.c
15628 BUG_ON(bmval1 & NFSD_WRITEONLY_ATTRS_WORD1);
15629 BUG_ON(bmval0 & ~nfsd_suppattrs0(minorversion));
15630 BUG_ON(bmval1 & ~nfsd_suppattrs1(minorversion));
15631 -diff -urNp linux-2.6.32.48/fs/nfsd/vfs.c linux-2.6.32.48/fs/nfsd/vfs.c
15632 ---- linux-2.6.32.48/fs/nfsd/vfs.c 2011-11-12 12:44:30.000000000 -0500
15633 -+++ linux-2.6.32.48/fs/nfsd/vfs.c 2011-11-12 12:46:47.000000000 -0500
15634 +diff -urNp linux-2.6.32.46/fs/nfsd/vfs.c linux-2.6.32.46/fs/nfsd/vfs.c
15635 +--- linux-2.6.32.46/fs/nfsd/vfs.c 2011-05-10 22:12:01.000000000 -0400
15636 ++++ linux-2.6.32.46/fs/nfsd/vfs.c 2011-10-06 09:37:14.000000000 -0400
15637 @@ -937,7 +937,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, st
15638 } else {
15639 oldfs = get_fs();
15640 @@ -47947,9 +47983,9 @@ diff -urNp linux-2.6.32.48/fs/nfsd/vfs.c linux-2.6.32.48/fs/nfsd/vfs.c
15641 set_fs(oldfs);
15642
15643 if (host_err < 0)
15644 -diff -urNp linux-2.6.32.48/fs/nilfs2/ioctl.c linux-2.6.32.48/fs/nilfs2/ioctl.c
15645 ---- linux-2.6.32.48/fs/nilfs2/ioctl.c 2009-12-02 22:51:21.000000000 -0500
15646 -+++ linux-2.6.32.48/fs/nilfs2/ioctl.c 2011-11-12 12:46:47.000000000 -0500
15647 +diff -urNp linux-2.6.32.46/fs/nilfs2/ioctl.c linux-2.6.32.46/fs/nilfs2/ioctl.c
15648 +--- linux-2.6.32.46/fs/nilfs2/ioctl.c 2011-03-27 14:31:47.000000000 -0400
15649 ++++ linux-2.6.32.46/fs/nilfs2/ioctl.c 2011-05-04 17:56:28.000000000 -0400
15650 @@ -480,7 +480,7 @@ static int nilfs_ioctl_clean_segments(st
15651 unsigned int cmd, void __user *argp)
15652 {
15653 @@ -47959,9 +47995,9 @@ diff -urNp linux-2.6.32.48/fs/nilfs2/ioctl.c linux-2.6.32.48/fs/nilfs2/ioctl.c
15654 sizeof(struct nilfs_vdesc),
15655 sizeof(struct nilfs_period),
15656 sizeof(__u64),
15657 -diff -urNp linux-2.6.32.48/fs/notify/dnotify/dnotify.c linux-2.6.32.48/fs/notify/dnotify/dnotify.c
15658 ---- linux-2.6.32.48/fs/notify/dnotify/dnotify.c 2009-12-02 22:51:21.000000000 -0500
15659 -+++ linux-2.6.32.48/fs/notify/dnotify/dnotify.c 2011-11-12 12:46:47.000000000 -0500
15660 +diff -urNp linux-2.6.32.46/fs/notify/dnotify/dnotify.c linux-2.6.32.46/fs/notify/dnotify/dnotify.c
15661 +--- linux-2.6.32.46/fs/notify/dnotify/dnotify.c 2011-03-27 14:31:47.000000000 -0400
15662 ++++ linux-2.6.32.46/fs/notify/dnotify/dnotify.c 2011-04-17 15:56:46.000000000 -0400
15663 @@ -173,7 +173,7 @@ static void dnotify_free_mark(struct fsn
15664 kmem_cache_free(dnotify_mark_entry_cache, dnentry);
15665 }
15666 @@ -47971,9 +48007,9 @@ diff -urNp linux-2.6.32.48/fs/notify/dnotify/dnotify.c linux-2.6.32.48/fs/notify
15667 .handle_event = dnotify_handle_event,
15668 .should_send_event = dnotify_should_send_event,
15669 .free_group_priv = NULL,
15670 -diff -urNp linux-2.6.32.48/fs/notify/notification.c linux-2.6.32.48/fs/notify/notification.c
15671 ---- linux-2.6.32.48/fs/notify/notification.c 2009-12-02 22:51:21.000000000 -0500
15672 -+++ linux-2.6.32.48/fs/notify/notification.c 2011-11-12 12:46:47.000000000 -0500
15673 +diff -urNp linux-2.6.32.46/fs/notify/notification.c linux-2.6.32.46/fs/notify/notification.c
15674 +--- linux-2.6.32.46/fs/notify/notification.c 2011-03-27 14:31:47.000000000 -0400
15675 ++++ linux-2.6.32.46/fs/notify/notification.c 2011-05-04 17:56:28.000000000 -0400
15676 @@ -57,7 +57,7 @@ static struct kmem_cache *fsnotify_event
15677 * get set to 0 so it will never get 'freed'
15678 */
15679 @@ -47992,9 +48028,9 @@ diff -urNp linux-2.6.32.48/fs/notify/notification.c linux-2.6.32.48/fs/notify/no
15680 }
15681 EXPORT_SYMBOL_GPL(fsnotify_get_cookie);
15682
15683 -diff -urNp linux-2.6.32.48/fs/ntfs/dir.c linux-2.6.32.48/fs/ntfs/dir.c
15684 ---- linux-2.6.32.48/fs/ntfs/dir.c 2009-12-02 22:51:21.000000000 -0500
15685 -+++ linux-2.6.32.48/fs/ntfs/dir.c 2011-11-12 12:46:47.000000000 -0500
15686 +diff -urNp linux-2.6.32.46/fs/ntfs/dir.c linux-2.6.32.46/fs/ntfs/dir.c
15687 +--- linux-2.6.32.46/fs/ntfs/dir.c 2011-03-27 14:31:47.000000000 -0400
15688 ++++ linux-2.6.32.46/fs/ntfs/dir.c 2011-04-17 15:56:46.000000000 -0400
15689 @@ -1328,7 +1328,7 @@ find_next_index_buffer:
15690 ia = (INDEX_ALLOCATION*)(kaddr + (ia_pos & ~PAGE_CACHE_MASK &
15691 ~(s64)(ndir->itype.index.block_size - 1)));
15692 @@ -48004,9 +48040,9 @@ diff -urNp linux-2.6.32.48/fs/ntfs/dir.c linux-2.6.32.48/fs/ntfs/dir.c
15693 ntfs_error(sb, "Out of bounds check failed. Corrupt directory "
15694 "inode 0x%lx or driver bug.", vdir->i_ino);
15695 goto err_out;
15696 -diff -urNp linux-2.6.32.48/fs/ntfs/file.c linux-2.6.32.48/fs/ntfs/file.c
15697 ---- linux-2.6.32.48/fs/ntfs/file.c 2009-12-02 22:51:21.000000000 -0500
15698 -+++ linux-2.6.32.48/fs/ntfs/file.c 2011-11-12 12:46:47.000000000 -0500
15699 +diff -urNp linux-2.6.32.46/fs/ntfs/file.c linux-2.6.32.46/fs/ntfs/file.c
15700 +--- linux-2.6.32.46/fs/ntfs/file.c 2011-03-27 14:31:47.000000000 -0400
15701 ++++ linux-2.6.32.46/fs/ntfs/file.c 2011-04-17 15:56:46.000000000 -0400
15702 @@ -2243,6 +2243,6 @@ const struct inode_operations ntfs_file_
15703 #endif /* NTFS_RW */
15704 };
15705 @@ -48016,9 +48052,9 @@ diff -urNp linux-2.6.32.48/fs/ntfs/file.c linux-2.6.32.48/fs/ntfs/file.c
15706
15707 -const struct inode_operations ntfs_empty_inode_ops = {};
15708 +const struct inode_operations ntfs_empty_inode_ops __read_only;
15709 -diff -urNp linux-2.6.32.48/fs/ocfs2/cluster/masklog.c linux-2.6.32.48/fs/ocfs2/cluster/masklog.c
15710 ---- linux-2.6.32.48/fs/ocfs2/cluster/masklog.c 2009-12-02 22:51:21.000000000 -0500
15711 -+++ linux-2.6.32.48/fs/ocfs2/cluster/masklog.c 2011-11-12 12:46:47.000000000 -0500
15712 +diff -urNp linux-2.6.32.46/fs/ocfs2/cluster/masklog.c linux-2.6.32.46/fs/ocfs2/cluster/masklog.c
15713 +--- linux-2.6.32.46/fs/ocfs2/cluster/masklog.c 2011-03-27 14:31:47.000000000 -0400
15714 ++++ linux-2.6.32.46/fs/ocfs2/cluster/masklog.c 2011-04-17 15:56:46.000000000 -0400
15715 @@ -135,7 +135,7 @@ static ssize_t mlog_store(struct kobject
15716 return mlog_mask_store(mlog_attr->mask, buf, count);
15717 }
15718 @@ -48028,9 +48064,9 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/cluster/masklog.c linux-2.6.32.48/fs/ocfs2/c
15719 .show = mlog_show,
15720 .store = mlog_store,
15721 };
15722 -diff -urNp linux-2.6.32.48/fs/ocfs2/localalloc.c linux-2.6.32.48/fs/ocfs2/localalloc.c
15723 ---- linux-2.6.32.48/fs/ocfs2/localalloc.c 2009-12-02 22:51:21.000000000 -0500
15724 -+++ linux-2.6.32.48/fs/ocfs2/localalloc.c 2011-11-12 12:46:47.000000000 -0500
15725 +diff -urNp linux-2.6.32.46/fs/ocfs2/localalloc.c linux-2.6.32.46/fs/ocfs2/localalloc.c
15726 +--- linux-2.6.32.46/fs/ocfs2/localalloc.c 2011-03-27 14:31:47.000000000 -0400
15727 ++++ linux-2.6.32.46/fs/ocfs2/localalloc.c 2011-04-17 15:56:46.000000000 -0400
15728 @@ -1188,7 +1188,7 @@ static int ocfs2_local_alloc_slide_windo
15729 goto bail;
15730 }
15731 @@ -48040,9 +48076,9 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/localalloc.c linux-2.6.32.48/fs/ocfs2/locala
15732
15733 status = 0;
15734 bail:
15735 -diff -urNp linux-2.6.32.48/fs/ocfs2/namei.c linux-2.6.32.48/fs/ocfs2/namei.c
15736 ---- linux-2.6.32.48/fs/ocfs2/namei.c 2009-12-02 22:51:21.000000000 -0500
15737 -+++ linux-2.6.32.48/fs/ocfs2/namei.c 2011-11-12 12:46:47.000000000 -0500
15738 +diff -urNp linux-2.6.32.46/fs/ocfs2/namei.c linux-2.6.32.46/fs/ocfs2/namei.c
15739 +--- linux-2.6.32.46/fs/ocfs2/namei.c 2011-03-27 14:31:47.000000000 -0400
15740 ++++ linux-2.6.32.46/fs/ocfs2/namei.c 2011-05-16 21:46:57.000000000 -0400
15741 @@ -1043,6 +1043,8 @@ static int ocfs2_rename(struct inode *ol
15742 struct ocfs2_dir_lookup_result orphan_insert = { NULL, };
15743 struct ocfs2_dir_lookup_result target_insert = { NULL, };
15744 @@ -48052,9 +48088,9 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/namei.c linux-2.6.32.48/fs/ocfs2/namei.c
15745 /* At some point it might be nice to break this function up a
15746 * bit. */
15747
15748 -diff -urNp linux-2.6.32.48/fs/ocfs2/ocfs2.h linux-2.6.32.48/fs/ocfs2/ocfs2.h
15749 ---- linux-2.6.32.48/fs/ocfs2/ocfs2.h 2009-12-02 22:51:21.000000000 -0500
15750 -+++ linux-2.6.32.48/fs/ocfs2/ocfs2.h 2011-11-12 12:46:47.000000000 -0500
15751 +diff -urNp linux-2.6.32.46/fs/ocfs2/ocfs2.h linux-2.6.32.46/fs/ocfs2/ocfs2.h
15752 +--- linux-2.6.32.46/fs/ocfs2/ocfs2.h 2011-03-27 14:31:47.000000000 -0400
15753 ++++ linux-2.6.32.46/fs/ocfs2/ocfs2.h 2011-04-17 15:56:46.000000000 -0400
15754 @@ -217,11 +217,11 @@ enum ocfs2_vol_state
15755
15756 struct ocfs2_alloc_stats
15757 @@ -48072,9 +48108,9 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/ocfs2.h linux-2.6.32.48/fs/ocfs2/ocfs2.h
15758 };
15759
15760 enum ocfs2_local_alloc_state
15761 -diff -urNp linux-2.6.32.48/fs/ocfs2/suballoc.c linux-2.6.32.48/fs/ocfs2/suballoc.c
15762 ---- linux-2.6.32.48/fs/ocfs2/suballoc.c 2011-11-12 12:44:30.000000000 -0500
15763 -+++ linux-2.6.32.48/fs/ocfs2/suballoc.c 2011-11-12 12:46:47.000000000 -0500
15764 +diff -urNp linux-2.6.32.46/fs/ocfs2/suballoc.c linux-2.6.32.46/fs/ocfs2/suballoc.c
15765 +--- linux-2.6.32.46/fs/ocfs2/suballoc.c 2011-03-27 14:31:47.000000000 -0400
15766 ++++ linux-2.6.32.46/fs/ocfs2/suballoc.c 2011-04-17 15:56:46.000000000 -0400
15767 @@ -623,7 +623,7 @@ static int ocfs2_reserve_suballoc_bits(s
15768 mlog_errno(status);
15769 goto bail;
15770 @@ -48120,9 +48156,9 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/suballoc.c linux-2.6.32.48/fs/ocfs2/suballoc
15771 }
15772 }
15773 if (status < 0) {
15774 -diff -urNp linux-2.6.32.48/fs/ocfs2/super.c linux-2.6.32.48/fs/ocfs2/super.c
15775 ---- linux-2.6.32.48/fs/ocfs2/super.c 2011-11-12 12:44:30.000000000 -0500
15776 -+++ linux-2.6.32.48/fs/ocfs2/super.c 2011-11-12 12:46:47.000000000 -0500
15777 +diff -urNp linux-2.6.32.46/fs/ocfs2/super.c linux-2.6.32.46/fs/ocfs2/super.c
15778 +--- linux-2.6.32.46/fs/ocfs2/super.c 2011-03-27 14:31:47.000000000 -0400
15779 ++++ linux-2.6.32.46/fs/ocfs2/super.c 2011-04-17 15:56:46.000000000 -0400
15780 @@ -284,11 +284,11 @@ static int ocfs2_osb_dump(struct ocfs2_s
15781 "%10s => GlobalAllocs: %d LocalAllocs: %d "
15782 "SubAllocs: %d LAWinMoves: %d SAExtends: %d\n",
15783 @@ -48157,9 +48193,9 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/super.c linux-2.6.32.48/fs/ocfs2/super.c
15784
15785 /* Copy the blockcheck stats from the superblock probe */
15786 osb->osb_ecc_stats = *stats;
15787 -diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
15788 ---- linux-2.6.32.48/fs/open.c 2009-12-02 22:51:21.000000000 -0500
15789 -+++ linux-2.6.32.48/fs/open.c 2011-11-12 12:46:47.000000000 -0500
15790 +diff -urNp linux-2.6.32.46/fs/open.c linux-2.6.32.46/fs/open.c
15791 +--- linux-2.6.32.46/fs/open.c 2011-03-27 14:31:47.000000000 -0400
15792 ++++ linux-2.6.32.46/fs/open.c 2011-09-13 16:03:56.000000000 -0400
15793 @@ -275,6 +275,10 @@ static long do_sys_truncate(const char _
15794 error = locks_verify_truncate(inode, NULL, length);
15795 if (!error)
15796 @@ -48339,9 +48375,9 @@ diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
15797 if (IS_ERR(f)) {
15798 put_unused_fd(fd);
15799 fd = PTR_ERR(f);
15800 -diff -urNp linux-2.6.32.48/fs/partitions/ldm.c linux-2.6.32.48/fs/partitions/ldm.c
15801 ---- linux-2.6.32.48/fs/partitions/ldm.c 2011-11-12 12:44:30.000000000 -0500
15802 -+++ linux-2.6.32.48/fs/partitions/ldm.c 2011-11-12 12:46:47.000000000 -0500
15803 +diff -urNp linux-2.6.32.46/fs/partitions/ldm.c linux-2.6.32.46/fs/partitions/ldm.c
15804 +--- linux-2.6.32.46/fs/partitions/ldm.c 2011-06-25 12:55:34.000000000 -0400
15805 ++++ linux-2.6.32.46/fs/partitions/ldm.c 2011-06-25 12:56:37.000000000 -0400
15806 @@ -1311,6 +1311,7 @@ static bool ldm_frag_add (const u8 *data
15807 ldm_error ("A VBLK claims to have %d parts.", num);
15808 return false;
15809 @@ -48359,9 +48395,9 @@ diff -urNp linux-2.6.32.48/fs/partitions/ldm.c linux-2.6.32.48/fs/partitions/ldm
15810 if (!f) {
15811 ldm_crit ("Out of memory.");
15812 return false;
15813 -diff -urNp linux-2.6.32.48/fs/partitions/mac.c linux-2.6.32.48/fs/partitions/mac.c
15814 ---- linux-2.6.32.48/fs/partitions/mac.c 2011-11-12 12:44:30.000000000 -0500
15815 -+++ linux-2.6.32.48/fs/partitions/mac.c 2011-11-12 12:46:47.000000000 -0500
15816 +diff -urNp linux-2.6.32.46/fs/partitions/mac.c linux-2.6.32.46/fs/partitions/mac.c
15817 +--- linux-2.6.32.46/fs/partitions/mac.c 2011-03-27 14:31:47.000000000 -0400
15818 ++++ linux-2.6.32.46/fs/partitions/mac.c 2011-04-17 15:56:46.000000000 -0400
15819 @@ -59,11 +59,11 @@ int mac_partition(struct parsed_partitio
15820 return 0; /* not a MacOS disk */
15821 }
15822 @@ -48375,9 +48411,9 @@ diff -urNp linux-2.6.32.48/fs/partitions/mac.c linux-2.6.32.48/fs/partitions/mac
15823 for (slot = 1; slot <= blocks_in_map; ++slot) {
15824 int pos = slot * secsize;
15825 put_dev_sector(sect);
15826 -diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
15827 ---- linux-2.6.32.48/fs/pipe.c 2011-11-12 12:44:30.000000000 -0500
15828 -+++ linux-2.6.32.48/fs/pipe.c 2011-11-12 12:46:47.000000000 -0500
15829 +diff -urNp linux-2.6.32.46/fs/pipe.c linux-2.6.32.46/fs/pipe.c
15830 +--- linux-2.6.32.46/fs/pipe.c 2011-03-27 14:31:47.000000000 -0400
15831 ++++ linux-2.6.32.46/fs/pipe.c 2011-04-23 13:37:17.000000000 -0400
15832 @@ -401,9 +401,9 @@ redo:
15833 }
15834 if (bufs) /* More to do? */
15835 @@ -48501,9 +48537,9 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
15836 inode->i_fop = &rdwr_pipefifo_fops;
15837
15838 /*
15839 -diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
15840 ---- linux-2.6.32.48/fs/proc/array.c 2011-11-12 12:44:30.000000000 -0500
15841 -+++ linux-2.6.32.48/fs/proc/array.c 2011-11-12 12:46:47.000000000 -0500
15842 +diff -urNp linux-2.6.32.46/fs/proc/array.c linux-2.6.32.46/fs/proc/array.c
15843 +--- linux-2.6.32.46/fs/proc/array.c 2011-03-27 14:31:47.000000000 -0400
15844 ++++ linux-2.6.32.46/fs/proc/array.c 2011-05-16 21:46:57.000000000 -0400
15845 @@ -60,6 +60,7 @@
15846 #include <linux/tty.h>
15847 #include <linux/string.h>
15848 @@ -48627,9 +48663,9 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
15849 + return sprintf(buffer, "%pI4\n", &curr_ip);
15850 +}
15851 +#endif
15852 -diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15853 ---- linux-2.6.32.48/fs/proc/base.c 2011-11-12 12:44:30.000000000 -0500
15854 -+++ linux-2.6.32.48/fs/proc/base.c 2011-11-12 12:59:33.000000000 -0500
15855 +diff -urNp linux-2.6.32.46/fs/proc/base.c linux-2.6.32.46/fs/proc/base.c
15856 +--- linux-2.6.32.46/fs/proc/base.c 2011-08-09 18:35:30.000000000 -0400
15857 ++++ linux-2.6.32.46/fs/proc/base.c 2011-10-19 04:05:03.000000000 -0400
15858 @@ -102,6 +102,22 @@ struct pid_entry {
15859 union proc_op op;
15860 };
15861 @@ -48711,16 +48747,16 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15862 /*
15863 * Provides a wchan file via kallsyms in a proper one-value-per-file format.
15864 * Returns the resolved symbol. If that fails, simply return the address.
15865 -@@ -345,7 +383,7 @@ static void unlock_trace(struct task_str
15866 - mutex_unlock(&task->cred_guard_mutex);
15867 +@@ -328,7 +366,7 @@ static int proc_pid_wchan(struct task_st
15868 }
15869 + #endif /* CONFIG_KALLSYMS */
15870
15871 -#ifdef CONFIG_STACKTRACE
15872 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
15873
15874 #define MAX_STACK_TRACE_DEPTH 64
15875
15876 -@@ -545,7 +583,7 @@ static int proc_pid_limits(struct task_s
15877 +@@ -522,7 +560,7 @@ static int proc_pid_limits(struct task_s
15878 return count;
15879 }
15880
15881 @@ -48729,7 +48765,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15882 static int proc_pid_syscall(struct task_struct *task, char *buffer)
15883 {
15884 long nr;
15885 -@@ -574,7 +612,7 @@ static int proc_pid_syscall(struct task_
15886 +@@ -547,7 +585,7 @@ static int proc_pid_syscall(struct task_
15887 /************************************************************************/
15888
15889 /* permission checks */
15890 @@ -48738,7 +48774,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15891 {
15892 struct task_struct *task;
15893 int allowed = 0;
15894 -@@ -584,7 +622,10 @@ static int proc_fd_access_allowed(struct
15895 +@@ -557,7 +595,10 @@ static int proc_fd_access_allowed(struct
15896 */
15897 task = get_proc_task(inode);
15898 if (task) {
15899 @@ -48750,7 +48786,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15900 put_task_struct(task);
15901 }
15902 return allowed;
15903 -@@ -963,6 +1004,9 @@ static ssize_t environ_read(struct file
15904 +@@ -936,6 +977,9 @@ static ssize_t environ_read(struct file
15905 if (!task)
15906 goto out_no_task;
15907
15908 @@ -48760,7 +48796,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15909 if (!ptrace_may_access(task, PTRACE_MODE_READ))
15910 goto out;
15911
15912 -@@ -1377,7 +1421,7 @@ static void *proc_pid_follow_link(struct
15913 +@@ -1350,7 +1394,7 @@ static void *proc_pid_follow_link(struct
15914 path_put(&nd->path);
15915
15916 /* Are we allowed to snoop on the tasks file descriptors? */
15917 @@ -48769,7 +48805,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15918 goto out;
15919
15920 error = PROC_I(inode)->op.proc_get_link(inode, &nd->path);
15921 -@@ -1417,8 +1461,18 @@ static int proc_pid_readlink(struct dent
15922 +@@ -1390,8 +1434,18 @@ static int proc_pid_readlink(struct dent
15923 struct path path;
15924
15925 /* Are we allowed to snoop on the tasks file descriptors? */
15926 @@ -48790,7 +48826,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15927
15928 error = PROC_I(inode)->op.proc_get_link(inode, &path);
15929 if (error)
15930 -@@ -1483,7 +1537,11 @@ static struct inode *proc_pid_make_inode
15931 +@@ -1456,7 +1510,11 @@ static struct inode *proc_pid_make_inode
15932 rcu_read_lock();
15933 cred = __task_cred(task);
15934 inode->i_uid = cred->euid;
15935 @@ -48802,7 +48838,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15936 rcu_read_unlock();
15937 }
15938 security_task_to_inode(task, inode);
15939 -@@ -1501,6 +1559,9 @@ static int pid_getattr(struct vfsmount *
15940 +@@ -1474,6 +1532,9 @@ static int pid_getattr(struct vfsmount *
15941 struct inode *inode = dentry->d_inode;
15942 struct task_struct *task;
15943 const struct cred *cred;
15944 @@ -48812,7 +48848,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15945
15946 generic_fillattr(inode, stat);
15947
15948 -@@ -1508,13 +1569,41 @@ static int pid_getattr(struct vfsmount *
15949 +@@ -1481,13 +1542,41 @@ static int pid_getattr(struct vfsmount *
15950 stat->uid = 0;
15951 stat->gid = 0;
15952 task = pid_task(proc_pid(inode), PIDTYPE_PID);
15953 @@ -48855,7 +48891,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15954 }
15955 rcu_read_unlock();
15956 return 0;
15957 -@@ -1545,11 +1634,20 @@ static int pid_revalidate(struct dentry
15958 +@@ -1518,11 +1607,20 @@ static int pid_revalidate(struct dentry
15959
15960 if (task) {
15961 if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
15962 @@ -48876,7 +48912,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15963 rcu_read_unlock();
15964 } else {
15965 inode->i_uid = 0;
15966 -@@ -1670,7 +1768,8 @@ static int proc_fd_info(struct inode *in
15967 +@@ -1643,7 +1741,8 @@ static int proc_fd_info(struct inode *in
15968 int fd = proc_fd(inode);
15969
15970 if (task) {
15971 @@ -48886,7 +48922,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15972 put_task_struct(task);
15973 }
15974 if (files) {
15975 -@@ -1922,12 +2021,22 @@ static const struct file_operations proc
15976 +@@ -1895,12 +1994,22 @@ static const struct file_operations proc
15977 static int proc_fd_permission(struct inode *inode, int mask)
15978 {
15979 int rv;
15980 @@ -48911,7 +48947,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15981 return rv;
15982 }
15983
15984 -@@ -2036,6 +2145,9 @@ static struct dentry *proc_pident_lookup
15985 +@@ -2009,6 +2118,9 @@ static struct dentry *proc_pident_lookup
15986 if (!task)
15987 goto out_no_task;
15988
15989 @@ -48921,7 +48957,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15990 /*
15991 * Yes, it does not scale. And it should not. Don't add
15992 * new entries into /proc/<tgid>/ without very good reasons.
15993 -@@ -2080,6 +2192,9 @@ static int proc_pident_readdir(struct fi
15994 +@@ -2053,6 +2165,9 @@ static int proc_pident_readdir(struct fi
15995 if (!task)
15996 goto out_no_task;
15997
15998 @@ -48931,7 +48967,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
15999 ret = 0;
16000 i = filp->f_pos;
16001 switch (i) {
16002 -@@ -2347,7 +2462,7 @@ static void *proc_self_follow_link(struc
16003 +@@ -2320,7 +2435,7 @@ static void *proc_self_follow_link(struc
16004 static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd,
16005 void *cookie)
16006 {
16007 @@ -48940,16 +48976,16 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16008 if (!IS_ERR(s))
16009 __putname(s);
16010 }
16011 -@@ -2553,7 +2668,7 @@ static const struct pid_entry tgid_base_
16012 +@@ -2522,7 +2637,7 @@ static const struct pid_entry tgid_base_
16013 #ifdef CONFIG_SCHED_DEBUG
16014 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
16015 #endif
16016 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
16017 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
16018 - INF("syscall", S_IRUGO, proc_pid_syscall),
16019 + INF("syscall", S_IRUSR, proc_pid_syscall),
16020 #endif
16021 INF("cmdline", S_IRUGO, proc_pid_cmdline),
16022 -@@ -2578,10 +2693,10 @@ static const struct pid_entry tgid_base_
16023 +@@ -2547,10 +2662,10 @@ static const struct pid_entry tgid_base_
16024 #ifdef CONFIG_SECURITY
16025 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
16026 #endif
16027 @@ -48959,10 +48995,10 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16028 #endif
16029 -#ifdef CONFIG_STACKTRACE
16030 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
16031 - ONE("stack", S_IRUGO, proc_pid_stack),
16032 + ONE("stack", S_IRUSR, proc_pid_stack),
16033 #endif
16034 #ifdef CONFIG_SCHEDSTATS
16035 -@@ -2611,6 +2726,9 @@ static const struct pid_entry tgid_base_
16036 +@@ -2580,6 +2695,9 @@ static const struct pid_entry tgid_base_
16037 #ifdef CONFIG_TASK_IO_ACCOUNTING
16038 INF("io", S_IRUSR, proc_tgid_io_accounting),
16039 #endif
16040 @@ -48972,7 +49008,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16041 };
16042
16043 static int proc_tgid_base_readdir(struct file * filp,
16044 -@@ -2735,7 +2853,14 @@ static struct dentry *proc_pid_instantia
16045 +@@ -2704,7 +2822,14 @@ static struct dentry *proc_pid_instantia
16046 if (!inode)
16047 goto out;
16048
16049 @@ -48987,7 +49023,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16050 inode->i_op = &proc_tgid_base_inode_operations;
16051 inode->i_fop = &proc_tgid_base_operations;
16052 inode->i_flags|=S_IMMUTABLE;
16053 -@@ -2777,7 +2902,14 @@ struct dentry *proc_pid_lookup(struct in
16054 +@@ -2746,7 +2871,14 @@ struct dentry *proc_pid_lookup(struct in
16055 if (!task)
16056 goto out;
16057
16058 @@ -49002,7 +49038,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16059 put_task_struct(task);
16060 out:
16061 return result;
16062 -@@ -2842,6 +2974,11 @@ int proc_pid_readdir(struct file * filp,
16063 +@@ -2811,6 +2943,11 @@ int proc_pid_readdir(struct file * filp,
16064 {
16065 unsigned int nr;
16066 struct task_struct *reaper;
16067 @@ -49014,7 +49050,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16068 struct tgid_iter iter;
16069 struct pid_namespace *ns;
16070
16071 -@@ -2865,8 +3002,27 @@ int proc_pid_readdir(struct file * filp,
16072 +@@ -2834,8 +2971,27 @@ int proc_pid_readdir(struct file * filp,
16073 for (iter = next_tgid(ns, iter);
16074 iter.task;
16075 iter.tgid += 1, iter = next_tgid(ns, iter)) {
16076 @@ -49043,16 +49079,16 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16077 put_task_struct(iter.task);
16078 goto out;
16079 }
16080 -@@ -2892,7 +3048,7 @@ static const struct pid_entry tid_base_s
16081 +@@ -2861,7 +3017,7 @@ static const struct pid_entry tid_base_s
16082 #ifdef CONFIG_SCHED_DEBUG
16083 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
16084 #endif
16085 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
16086 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
16087 - INF("syscall", S_IRUGO, proc_pid_syscall),
16088 + INF("syscall", S_IRUSR, proc_pid_syscall),
16089 #endif
16090 INF("cmdline", S_IRUGO, proc_pid_cmdline),
16091 -@@ -2916,10 +3072,10 @@ static const struct pid_entry tid_base_s
16092 +@@ -2885,10 +3041,10 @@ static const struct pid_entry tid_base_s
16093 #ifdef CONFIG_SECURITY
16094 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
16095 #endif
16096 @@ -49062,12 +49098,12 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
16097 #endif
16098 -#ifdef CONFIG_STACKTRACE
16099 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
16100 - ONE("stack", S_IRUGO, proc_pid_stack),
16101 + ONE("stack", S_IRUSR, proc_pid_stack),
16102 #endif
16103 #ifdef CONFIG_SCHEDSTATS
16104 -diff -urNp linux-2.6.32.48/fs/proc/cmdline.c linux-2.6.32.48/fs/proc/cmdline.c
16105 ---- linux-2.6.32.48/fs/proc/cmdline.c 2009-12-02 22:51:21.000000000 -0500
16106 -+++ linux-2.6.32.48/fs/proc/cmdline.c 2011-11-12 12:46:47.000000000 -0500
16107 +diff -urNp linux-2.6.32.46/fs/proc/cmdline.c linux-2.6.32.46/fs/proc/cmdline.c
16108 +--- linux-2.6.32.46/fs/proc/cmdline.c 2011-03-27 14:31:47.000000000 -0400
16109 ++++ linux-2.6.32.46/fs/proc/cmdline.c 2011-04-17 15:56:46.000000000 -0400
16110 @@ -23,7 +23,11 @@ static const struct file_operations cmdl
16111
16112 static int __init proc_cmdline_init(void)
16113 @@ -49080,9 +49116,9 @@ diff -urNp linux-2.6.32.48/fs/proc/cmdline.c linux-2.6.32.48/fs/proc/cmdline.c
16114 return 0;
16115 }
16116 module_init(proc_cmdline_init);
16117 -diff -urNp linux-2.6.32.48/fs/proc/devices.c linux-2.6.32.48/fs/proc/devices.c
16118 ---- linux-2.6.32.48/fs/proc/devices.c 2009-12-02 22:51:21.000000000 -0500
16119 -+++ linux-2.6.32.48/fs/proc/devices.c 2011-11-12 12:46:47.000000000 -0500
16120 +diff -urNp linux-2.6.32.46/fs/proc/devices.c linux-2.6.32.46/fs/proc/devices.c
16121 +--- linux-2.6.32.46/fs/proc/devices.c 2011-03-27 14:31:47.000000000 -0400
16122 ++++ linux-2.6.32.46/fs/proc/devices.c 2011-04-17 15:56:46.000000000 -0400
16123 @@ -64,7 +64,11 @@ static const struct file_operations proc
16124
16125 static int __init proc_devices_init(void)
16126 @@ -49095,9 +49131,9 @@ diff -urNp linux-2.6.32.48/fs/proc/devices.c linux-2.6.32.48/fs/proc/devices.c
16127 return 0;
16128 }
16129 module_init(proc_devices_init);
16130 -diff -urNp linux-2.6.32.48/fs/proc/inode.c linux-2.6.32.48/fs/proc/inode.c
16131 ---- linux-2.6.32.48/fs/proc/inode.c 2009-12-02 22:51:21.000000000 -0500
16132 -+++ linux-2.6.32.48/fs/proc/inode.c 2011-11-12 12:46:47.000000000 -0500
16133 +diff -urNp linux-2.6.32.46/fs/proc/inode.c linux-2.6.32.46/fs/proc/inode.c
16134 +--- linux-2.6.32.46/fs/proc/inode.c 2011-03-27 14:31:47.000000000 -0400
16135 ++++ linux-2.6.32.46/fs/proc/inode.c 2011-10-19 04:08:02.000000000 -0400
16136 @@ -18,12 +18,19 @@
16137 #include <linux/module.h>
16138 #include <linux/smp_lock.h>
16139 @@ -49144,9 +49180,9 @@ diff -urNp linux-2.6.32.48/fs/proc/inode.c linux-2.6.32.48/fs/proc/inode.c
16140 }
16141 if (de->size)
16142 inode->i_size = de->size;
16143 -diff -urNp linux-2.6.32.48/fs/proc/internal.h linux-2.6.32.48/fs/proc/internal.h
16144 ---- linux-2.6.32.48/fs/proc/internal.h 2009-12-02 22:51:21.000000000 -0500
16145 -+++ linux-2.6.32.48/fs/proc/internal.h 2011-11-12 12:46:47.000000000 -0500
16146 +diff -urNp linux-2.6.32.46/fs/proc/internal.h linux-2.6.32.46/fs/proc/internal.h
16147 +--- linux-2.6.32.46/fs/proc/internal.h 2011-03-27 14:31:47.000000000 -0400
16148 ++++ linux-2.6.32.46/fs/proc/internal.h 2011-04-17 15:56:46.000000000 -0400
16149 @@ -51,6 +51,9 @@ extern int proc_pid_status(struct seq_fi
16150 struct pid *pid, struct task_struct *task);
16151 extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
16152 @@ -49157,9 +49193,9 @@ diff -urNp linux-2.6.32.48/fs/proc/internal.h linux-2.6.32.48/fs/proc/internal.h
16153 extern loff_t mem_lseek(struct file *file, loff_t offset, int orig);
16154
16155 extern const struct file_operations proc_maps_operations;
16156 -diff -urNp linux-2.6.32.48/fs/proc/Kconfig linux-2.6.32.48/fs/proc/Kconfig
16157 ---- linux-2.6.32.48/fs/proc/Kconfig 2009-12-02 22:51:21.000000000 -0500
16158 -+++ linux-2.6.32.48/fs/proc/Kconfig 2011-11-12 12:46:47.000000000 -0500
16159 +diff -urNp linux-2.6.32.46/fs/proc/Kconfig linux-2.6.32.46/fs/proc/Kconfig
16160 +--- linux-2.6.32.46/fs/proc/Kconfig 2011-03-27 14:31:47.000000000 -0400
16161 ++++ linux-2.6.32.46/fs/proc/Kconfig 2011-04-17 15:56:46.000000000 -0400
16162 @@ -30,12 +30,12 @@ config PROC_FS
16163
16164 config PROC_KCORE
16165 @@ -49187,9 +49223,9 @@ diff -urNp linux-2.6.32.48/fs/proc/Kconfig linux-2.6.32.48/fs/proc/Kconfig
16166 bool "Enable /proc page monitoring" if EMBEDDED
16167 help
16168 Various /proc files exist to monitor process memory utilization:
16169 -diff -urNp linux-2.6.32.48/fs/proc/kcore.c linux-2.6.32.48/fs/proc/kcore.c
16170 ---- linux-2.6.32.48/fs/proc/kcore.c 2011-11-12 12:44:30.000000000 -0500
16171 -+++ linux-2.6.32.48/fs/proc/kcore.c 2011-11-12 12:46:47.000000000 -0500
16172 +diff -urNp linux-2.6.32.46/fs/proc/kcore.c linux-2.6.32.46/fs/proc/kcore.c
16173 +--- linux-2.6.32.46/fs/proc/kcore.c 2011-03-27 14:31:47.000000000 -0400
16174 ++++ linux-2.6.32.46/fs/proc/kcore.c 2011-05-16 21:46:57.000000000 -0400
16175 @@ -320,6 +320,8 @@ static void elf_kcore_store_hdr(char *bu
16176 off_t offset = 0;
16177 struct kcore_list *m;
16178 @@ -49257,9 +49293,9 @@ diff -urNp linux-2.6.32.48/fs/proc/kcore.c linux-2.6.32.48/fs/proc/kcore.c
16179 if (!capable(CAP_SYS_RAWIO))
16180 return -EPERM;
16181 if (kcore_need_update)
16182 -diff -urNp linux-2.6.32.48/fs/proc/meminfo.c linux-2.6.32.48/fs/proc/meminfo.c
16183 ---- linux-2.6.32.48/fs/proc/meminfo.c 2009-12-02 22:51:21.000000000 -0500
16184 -+++ linux-2.6.32.48/fs/proc/meminfo.c 2011-11-12 12:46:47.000000000 -0500
16185 +diff -urNp linux-2.6.32.46/fs/proc/meminfo.c linux-2.6.32.46/fs/proc/meminfo.c
16186 +--- linux-2.6.32.46/fs/proc/meminfo.c 2011-03-27 14:31:47.000000000 -0400
16187 ++++ linux-2.6.32.46/fs/proc/meminfo.c 2011-05-16 21:46:57.000000000 -0400
16188 @@ -29,6 +29,8 @@ static int meminfo_proc_show(struct seq_
16189 unsigned long pages[NR_LRU_LISTS];
16190 int lru;
16191 @@ -49278,9 +49314,9 @@ diff -urNp linux-2.6.32.48/fs/proc/meminfo.c linux-2.6.32.48/fs/proc/meminfo.c
16192 #endif
16193 );
16194
16195 -diff -urNp linux-2.6.32.48/fs/proc/nommu.c linux-2.6.32.48/fs/proc/nommu.c
16196 ---- linux-2.6.32.48/fs/proc/nommu.c 2009-12-02 22:51:21.000000000 -0500
16197 -+++ linux-2.6.32.48/fs/proc/nommu.c 2011-11-12 12:46:47.000000000 -0500
16198 +diff -urNp linux-2.6.32.46/fs/proc/nommu.c linux-2.6.32.46/fs/proc/nommu.c
16199 +--- linux-2.6.32.46/fs/proc/nommu.c 2011-03-27 14:31:47.000000000 -0400
16200 ++++ linux-2.6.32.46/fs/proc/nommu.c 2011-04-17 15:56:46.000000000 -0400
16201 @@ -67,7 +67,7 @@ static int nommu_region_show(struct seq_
16202 if (len < 1)
16203 len = 1;
16204 @@ -49290,9 +49326,9 @@ diff -urNp linux-2.6.32.48/fs/proc/nommu.c linux-2.6.32.48/fs/proc/nommu.c
16205 }
16206
16207 seq_putc(m, '\n');
16208 -diff -urNp linux-2.6.32.48/fs/proc/proc_net.c linux-2.6.32.48/fs/proc/proc_net.c
16209 ---- linux-2.6.32.48/fs/proc/proc_net.c 2009-12-02 22:51:21.000000000 -0500
16210 -+++ linux-2.6.32.48/fs/proc/proc_net.c 2011-11-12 12:46:47.000000000 -0500
16211 +diff -urNp linux-2.6.32.46/fs/proc/proc_net.c linux-2.6.32.46/fs/proc/proc_net.c
16212 +--- linux-2.6.32.46/fs/proc/proc_net.c 2011-03-27 14:31:47.000000000 -0400
16213 ++++ linux-2.6.32.46/fs/proc/proc_net.c 2011-04-17 15:56:46.000000000 -0400
16214 @@ -104,6 +104,17 @@ static struct net *get_proc_task_net(str
16215 struct task_struct *task;
16216 struct nsproxy *ns;
16217 @@ -49311,9 +49347,9 @@ diff -urNp linux-2.6.32.48/fs/proc/proc_net.c linux-2.6.32.48/fs/proc/proc_net.c
16218
16219 rcu_read_lock();
16220 task = pid_task(proc_pid(dir), PIDTYPE_PID);
16221 -diff -urNp linux-2.6.32.48/fs/proc/proc_sysctl.c linux-2.6.32.48/fs/proc/proc_sysctl.c
16222 ---- linux-2.6.32.48/fs/proc/proc_sysctl.c 2009-12-02 22:51:21.000000000 -0500
16223 -+++ linux-2.6.32.48/fs/proc/proc_sysctl.c 2011-11-12 12:46:47.000000000 -0500
16224 +diff -urNp linux-2.6.32.46/fs/proc/proc_sysctl.c linux-2.6.32.46/fs/proc/proc_sysctl.c
16225 +--- linux-2.6.32.46/fs/proc/proc_sysctl.c 2011-03-27 14:31:47.000000000 -0400
16226 ++++ linux-2.6.32.46/fs/proc/proc_sysctl.c 2011-10-19 04:08:51.000000000 -0400
16227 @@ -7,11 +7,13 @@
16228 #include <linux/security.h>
16229 #include "internal.h"
16230 @@ -49396,9 +49432,9 @@ diff -urNp linux-2.6.32.48/fs/proc/proc_sysctl.c linux-2.6.32.48/fs/proc/proc_sy
16231 .lookup = proc_sys_lookup,
16232 .permission = proc_sys_permission,
16233 .setattr = proc_sys_setattr,
16234 -diff -urNp linux-2.6.32.48/fs/proc/root.c linux-2.6.32.48/fs/proc/root.c
16235 ---- linux-2.6.32.48/fs/proc/root.c 2009-12-02 22:51:21.000000000 -0500
16236 -+++ linux-2.6.32.48/fs/proc/root.c 2011-11-12 12:46:47.000000000 -0500
16237 +diff -urNp linux-2.6.32.46/fs/proc/root.c linux-2.6.32.46/fs/proc/root.c
16238 +--- linux-2.6.32.46/fs/proc/root.c 2011-03-27 14:31:47.000000000 -0400
16239 ++++ linux-2.6.32.46/fs/proc/root.c 2011-04-17 15:56:46.000000000 -0400
16240 @@ -134,7 +134,15 @@ void __init proc_root_init(void)
16241 #ifdef CONFIG_PROC_DEVICETREE
16242 proc_device_tree_init();
16243 @@ -49415,9 +49451,9 @@ diff -urNp linux-2.6.32.48/fs/proc/root.c linux-2.6.32.48/fs/proc/root.c
16244 proc_sys_init();
16245 }
16246
16247 -diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
16248 ---- linux-2.6.32.48/fs/proc/task_mmu.c 2011-11-12 12:44:30.000000000 -0500
16249 -+++ linux-2.6.32.48/fs/proc/task_mmu.c 2011-11-12 12:46:47.000000000 -0500
16250 +diff -urNp linux-2.6.32.46/fs/proc/task_mmu.c linux-2.6.32.46/fs/proc/task_mmu.c
16251 +--- linux-2.6.32.46/fs/proc/task_mmu.c 2011-03-27 14:31:47.000000000 -0400
16252 ++++ linux-2.6.32.46/fs/proc/task_mmu.c 2011-04-23 13:38:09.000000000 -0400
16253 @@ -46,15 +46,26 @@ void task_mem(struct seq_file *m, struct
16254 "VmStk:\t%8lu kB\n"
16255 "VmExe:\t%8lu kB\n"
16256 @@ -49563,9 +49599,9 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
16257 mss.resident >> 10,
16258 (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
16259 mss.shared_clean >> 10,
16260 -diff -urNp linux-2.6.32.48/fs/proc/task_nommu.c linux-2.6.32.48/fs/proc/task_nommu.c
16261 ---- linux-2.6.32.48/fs/proc/task_nommu.c 2009-12-02 22:51:21.000000000 -0500
16262 -+++ linux-2.6.32.48/fs/proc/task_nommu.c 2011-11-12 12:46:47.000000000 -0500
16263 +diff -urNp linux-2.6.32.46/fs/proc/task_nommu.c linux-2.6.32.46/fs/proc/task_nommu.c
16264 +--- linux-2.6.32.46/fs/proc/task_nommu.c 2011-03-27 14:31:47.000000000 -0400
16265 ++++ linux-2.6.32.46/fs/proc/task_nommu.c 2011-04-17 15:56:46.000000000 -0400
16266 @@ -50,7 +50,7 @@ void task_mem(struct seq_file *m, struct
16267 else
16268 bytes += kobjsize(mm);
16269 @@ -49584,9 +49620,9 @@ diff -urNp linux-2.6.32.48/fs/proc/task_nommu.c linux-2.6.32.48/fs/proc/task_nom
16270 }
16271
16272 seq_putc(m, '\n');
16273 -diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
16274 ---- linux-2.6.32.48/fs/readdir.c 2009-12-02 22:51:21.000000000 -0500
16275 -+++ linux-2.6.32.48/fs/readdir.c 2011-11-12 12:46:47.000000000 -0500
16276 +diff -urNp linux-2.6.32.46/fs/readdir.c linux-2.6.32.46/fs/readdir.c
16277 +--- linux-2.6.32.46/fs/readdir.c 2011-03-27 14:31:47.000000000 -0400
16278 ++++ linux-2.6.32.46/fs/readdir.c 2011-10-06 09:37:14.000000000 -0400
16279 @@ -16,6 +16,7 @@
16280 #include <linux/security.h>
16281 #include <linux/syscalls.h>
16282 @@ -49685,9 +49721,9 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
16283 if (__put_user(d_off, &lastdirent->d_off))
16284 error = -EFAULT;
16285 else
16286 -diff -urNp linux-2.6.32.48/fs/reiserfs/dir.c linux-2.6.32.48/fs/reiserfs/dir.c
16287 ---- linux-2.6.32.48/fs/reiserfs/dir.c 2011-11-12 12:44:30.000000000 -0500
16288 -+++ linux-2.6.32.48/fs/reiserfs/dir.c 2011-11-12 12:46:47.000000000 -0500
16289 +diff -urNp linux-2.6.32.46/fs/reiserfs/dir.c linux-2.6.32.46/fs/reiserfs/dir.c
16290 +--- linux-2.6.32.46/fs/reiserfs/dir.c 2011-03-27 14:31:47.000000000 -0400
16291 ++++ linux-2.6.32.46/fs/reiserfs/dir.c 2011-05-16 21:46:57.000000000 -0400
16292 @@ -66,6 +66,8 @@ int reiserfs_readdir_dentry(struct dentr
16293 struct reiserfs_dir_entry de;
16294 int ret = 0;
16295 @@ -49697,9 +49733,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/dir.c linux-2.6.32.48/fs/reiserfs/dir.c
16296 reiserfs_write_lock(inode->i_sb);
16297
16298 reiserfs_check_lock_depth(inode->i_sb, "readdir");
16299 -diff -urNp linux-2.6.32.48/fs/reiserfs/do_balan.c linux-2.6.32.48/fs/reiserfs/do_balan.c
16300 ---- linux-2.6.32.48/fs/reiserfs/do_balan.c 2009-12-02 22:51:21.000000000 -0500
16301 -+++ linux-2.6.32.48/fs/reiserfs/do_balan.c 2011-11-12 12:46:47.000000000 -0500
16302 +diff -urNp linux-2.6.32.46/fs/reiserfs/do_balan.c linux-2.6.32.46/fs/reiserfs/do_balan.c
16303 +--- linux-2.6.32.46/fs/reiserfs/do_balan.c 2011-03-27 14:31:47.000000000 -0400
16304 ++++ linux-2.6.32.46/fs/reiserfs/do_balan.c 2011-04-17 15:56:46.000000000 -0400
16305 @@ -2058,7 +2058,7 @@ void do_balance(struct tree_balance *tb,
16306 return;
16307 }
16308 @@ -49709,9 +49745,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/do_balan.c linux-2.6.32.48/fs/reiserfs/do
16309 do_balance_starts(tb);
16310
16311 /* balance leaf returns 0 except if combining L R and S into
16312 -diff -urNp linux-2.6.32.48/fs/reiserfs/item_ops.c linux-2.6.32.48/fs/reiserfs/item_ops.c
16313 ---- linux-2.6.32.48/fs/reiserfs/item_ops.c 2009-12-02 22:51:21.000000000 -0500
16314 -+++ linux-2.6.32.48/fs/reiserfs/item_ops.c 2011-11-12 12:46:47.000000000 -0500
16315 +diff -urNp linux-2.6.32.46/fs/reiserfs/item_ops.c linux-2.6.32.46/fs/reiserfs/item_ops.c
16316 +--- linux-2.6.32.46/fs/reiserfs/item_ops.c 2011-03-27 14:31:47.000000000 -0400
16317 ++++ linux-2.6.32.46/fs/reiserfs/item_ops.c 2011-04-17 15:56:46.000000000 -0400
16318 @@ -102,7 +102,7 @@ static void sd_print_vi(struct virtual_i
16319 vi->vi_index, vi->vi_type, vi->vi_ih);
16320 }
16321 @@ -49766,9 +49802,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/item_ops.c linux-2.6.32.48/fs/reiserfs/it
16322 &stat_data_ops,
16323 &indirect_ops,
16324 &direct_ops,
16325 -diff -urNp linux-2.6.32.48/fs/reiserfs/journal.c linux-2.6.32.48/fs/reiserfs/journal.c
16326 ---- linux-2.6.32.48/fs/reiserfs/journal.c 2011-11-12 12:44:30.000000000 -0500
16327 -+++ linux-2.6.32.48/fs/reiserfs/journal.c 2011-11-12 12:46:47.000000000 -0500
16328 +diff -urNp linux-2.6.32.46/fs/reiserfs/journal.c linux-2.6.32.46/fs/reiserfs/journal.c
16329 +--- linux-2.6.32.46/fs/reiserfs/journal.c 2011-03-27 14:31:47.000000000 -0400
16330 ++++ linux-2.6.32.46/fs/reiserfs/journal.c 2011-05-16 21:46:57.000000000 -0400
16331 @@ -2329,6 +2329,8 @@ static struct buffer_head *reiserfs_brea
16332 struct buffer_head *bh;
16333 int i, j;
16334 @@ -49778,9 +49814,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/journal.c linux-2.6.32.48/fs/reiserfs/jou
16335 bh = __getblk(dev, block, bufsize);
16336 if (buffer_uptodate(bh))
16337 return (bh);
16338 -diff -urNp linux-2.6.32.48/fs/reiserfs/namei.c linux-2.6.32.48/fs/reiserfs/namei.c
16339 ---- linux-2.6.32.48/fs/reiserfs/namei.c 2009-12-02 22:51:21.000000000 -0500
16340 -+++ linux-2.6.32.48/fs/reiserfs/namei.c 2011-11-12 12:46:47.000000000 -0500
16341 +diff -urNp linux-2.6.32.46/fs/reiserfs/namei.c linux-2.6.32.46/fs/reiserfs/namei.c
16342 +--- linux-2.6.32.46/fs/reiserfs/namei.c 2011-03-27 14:31:47.000000000 -0400
16343 ++++ linux-2.6.32.46/fs/reiserfs/namei.c 2011-05-16 21:46:57.000000000 -0400
16344 @@ -1214,6 +1214,8 @@ static int reiserfs_rename(struct inode
16345 unsigned long savelink = 1;
16346 struct timespec ctime;
16347 @@ -49790,9 +49826,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/namei.c linux-2.6.32.48/fs/reiserfs/namei
16348 /* three balancings: (1) old name removal, (2) new name insertion
16349 and (3) maybe "save" link insertion
16350 stat data updates: (1) old directory,
16351 -diff -urNp linux-2.6.32.48/fs/reiserfs/procfs.c linux-2.6.32.48/fs/reiserfs/procfs.c
16352 ---- linux-2.6.32.48/fs/reiserfs/procfs.c 2009-12-02 22:51:21.000000000 -0500
16353 -+++ linux-2.6.32.48/fs/reiserfs/procfs.c 2011-11-12 12:46:47.000000000 -0500
16354 +diff -urNp linux-2.6.32.46/fs/reiserfs/procfs.c linux-2.6.32.46/fs/reiserfs/procfs.c
16355 +--- linux-2.6.32.46/fs/reiserfs/procfs.c 2011-03-27 14:31:47.000000000 -0400
16356 ++++ linux-2.6.32.46/fs/reiserfs/procfs.c 2011-05-16 21:46:57.000000000 -0400
16357 @@ -123,7 +123,7 @@ static int show_super(struct seq_file *m
16358 "SMALL_TAILS " : "NO_TAILS ",
16359 replay_only(sb) ? "REPLAY_ONLY " : "",
16360 @@ -49811,9 +49847,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/procfs.c linux-2.6.32.48/fs/reiserfs/proc
16361 seq_printf(m, /* on-disk fields */
16362 "jp_journal_1st_block: \t%i\n"
16363 "jp_journal_dev: \t%s[%x]\n"
16364 -diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree.c
16365 ---- linux-2.6.32.48/fs/reiserfs/stree.c 2009-12-02 22:51:21.000000000 -0500
16366 -+++ linux-2.6.32.48/fs/reiserfs/stree.c 2011-11-12 12:46:47.000000000 -0500
16367 +diff -urNp linux-2.6.32.46/fs/reiserfs/stree.c linux-2.6.32.46/fs/reiserfs/stree.c
16368 +--- linux-2.6.32.46/fs/reiserfs/stree.c 2011-03-27 14:31:47.000000000 -0400
16369 ++++ linux-2.6.32.46/fs/reiserfs/stree.c 2011-05-16 21:46:57.000000000 -0400
16370 @@ -1159,6 +1159,8 @@ int reiserfs_delete_item(struct reiserfs
16371 int iter = 0;
16372 #endif
16373 @@ -49859,9 +49895,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree
16374 BUG_ON(!th->t_trans_id);
16375
16376 if (inode) { /* Do we count quotas for item? */
16377 -diff -urNp linux-2.6.32.48/fs/reiserfs/super.c linux-2.6.32.48/fs/reiserfs/super.c
16378 ---- linux-2.6.32.48/fs/reiserfs/super.c 2009-12-02 22:51:21.000000000 -0500
16379 -+++ linux-2.6.32.48/fs/reiserfs/super.c 2011-11-12 12:46:47.000000000 -0500
16380 +diff -urNp linux-2.6.32.46/fs/reiserfs/super.c linux-2.6.32.46/fs/reiserfs/super.c
16381 +--- linux-2.6.32.46/fs/reiserfs/super.c 2011-03-27 14:31:47.000000000 -0400
16382 ++++ linux-2.6.32.46/fs/reiserfs/super.c 2011-05-16 21:46:57.000000000 -0400
16383 @@ -912,6 +912,8 @@ static int reiserfs_parse_options(struct
16384 {.option_name = NULL}
16385 };
16386 @@ -49871,9 +49907,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/super.c linux-2.6.32.48/fs/reiserfs/super
16387 *blocks = 0;
16388 if (!options || !*options)
16389 /* use default configuration: create tails, journaling on, no
16390 -diff -urNp linux-2.6.32.48/fs/select.c linux-2.6.32.48/fs/select.c
16391 ---- linux-2.6.32.48/fs/select.c 2009-12-02 22:51:21.000000000 -0500
16392 -+++ linux-2.6.32.48/fs/select.c 2011-11-12 12:46:47.000000000 -0500
16393 +diff -urNp linux-2.6.32.46/fs/select.c linux-2.6.32.46/fs/select.c
16394 +--- linux-2.6.32.46/fs/select.c 2011-03-27 14:31:47.000000000 -0400
16395 ++++ linux-2.6.32.46/fs/select.c 2011-05-16 21:46:57.000000000 -0400
16396 @@ -20,6 +20,7 @@
16397 #include <linux/module.h>
16398 #include <linux/slab.h>
16399 @@ -49910,9 +49946,9 @@ diff -urNp linux-2.6.32.48/fs/select.c linux-2.6.32.48/fs/select.c
16400 if (nfds > current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
16401 return -EINVAL;
16402
16403 -diff -urNp linux-2.6.32.48/fs/seq_file.c linux-2.6.32.48/fs/seq_file.c
16404 ---- linux-2.6.32.48/fs/seq_file.c 2009-12-02 22:51:21.000000000 -0500
16405 -+++ linux-2.6.32.48/fs/seq_file.c 2011-11-12 12:46:47.000000000 -0500
16406 +diff -urNp linux-2.6.32.46/fs/seq_file.c linux-2.6.32.46/fs/seq_file.c
16407 +--- linux-2.6.32.46/fs/seq_file.c 2011-03-27 14:31:47.000000000 -0400
16408 ++++ linux-2.6.32.46/fs/seq_file.c 2011-08-23 21:22:32.000000000 -0400
16409 @@ -76,7 +76,8 @@ static int traverse(struct seq_file *m,
16410 return 0;
16411 }
16412 @@ -49962,9 +49998,9 @@ diff -urNp linux-2.6.32.48/fs/seq_file.c linux-2.6.32.48/fs/seq_file.c
16413 int res = -ENOMEM;
16414
16415 if (op) {
16416 -diff -urNp linux-2.6.32.48/fs/smbfs/proc.c linux-2.6.32.48/fs/smbfs/proc.c
16417 ---- linux-2.6.32.48/fs/smbfs/proc.c 2009-12-02 22:51:21.000000000 -0500
16418 -+++ linux-2.6.32.48/fs/smbfs/proc.c 2011-11-12 12:46:47.000000000 -0500
16419 +diff -urNp linux-2.6.32.46/fs/smbfs/proc.c linux-2.6.32.46/fs/smbfs/proc.c
16420 +--- linux-2.6.32.46/fs/smbfs/proc.c 2011-03-27 14:31:47.000000000 -0400
16421 ++++ linux-2.6.32.46/fs/smbfs/proc.c 2011-08-05 20:33:55.000000000 -0400
16422 @@ -266,9 +266,9 @@ int smb_setcodepage(struct smb_sb_info *
16423
16424 out:
16425 @@ -49998,9 +50034,9 @@ diff -urNp linux-2.6.32.48/fs/smbfs/proc.c linux-2.6.32.48/fs/smbfs/proc.c
16426 }
16427
16428 /* < LANMAN2 */
16429 -diff -urNp linux-2.6.32.48/fs/smbfs/symlink.c linux-2.6.32.48/fs/smbfs/symlink.c
16430 ---- linux-2.6.32.48/fs/smbfs/symlink.c 2009-12-02 22:51:21.000000000 -0500
16431 -+++ linux-2.6.32.48/fs/smbfs/symlink.c 2011-11-12 12:46:47.000000000 -0500
16432 +diff -urNp linux-2.6.32.46/fs/smbfs/symlink.c linux-2.6.32.46/fs/smbfs/symlink.c
16433 +--- linux-2.6.32.46/fs/smbfs/symlink.c 2011-03-27 14:31:47.000000000 -0400
16434 ++++ linux-2.6.32.46/fs/smbfs/symlink.c 2011-04-17 15:56:46.000000000 -0400
16435 @@ -55,7 +55,7 @@ static void *smb_follow_link(struct dent
16436
16437 static void smb_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
16438 @@ -50010,9 +50046,9 @@ diff -urNp linux-2.6.32.48/fs/smbfs/symlink.c linux-2.6.32.48/fs/smbfs/symlink.c
16439 if (!IS_ERR(s))
16440 __putname(s);
16441 }
16442 -diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16443 ---- linux-2.6.32.48/fs/splice.c 2011-11-12 12:44:30.000000000 -0500
16444 -+++ linux-2.6.32.48/fs/splice.c 2011-11-12 12:46:47.000000000 -0500
16445 +diff -urNp linux-2.6.32.46/fs/splice.c linux-2.6.32.46/fs/splice.c
16446 +--- linux-2.6.32.46/fs/splice.c 2011-03-27 14:31:47.000000000 -0400
16447 ++++ linux-2.6.32.46/fs/splice.c 2011-10-06 09:37:14.000000000 -0400
16448 @@ -185,7 +185,7 @@ ssize_t splice_to_pipe(struct pipe_inode
16449 pipe_lock(pipe);
16450
16451 @@ -50101,7 +50137,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16452
16453 current->splice_pipe = pipe;
16454 }
16455 -@@ -1593,6 +1597,8 @@ static long vmsplice_to_pipe(struct file
16456 +@@ -1592,6 +1596,8 @@ static long vmsplice_to_pipe(struct file
16457 .spd_release = spd_release_page,
16458 };
16459
16460 @@ -50110,7 +50146,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16461 pipe = pipe_info(file->f_path.dentry->d_inode);
16462 if (!pipe)
16463 return -EBADF;
16464 -@@ -1701,9 +1707,9 @@ static int ipipe_prep(struct pipe_inode_
16465 +@@ -1700,9 +1706,9 @@ static int ipipe_prep(struct pipe_inode_
16466 ret = -ERESTARTSYS;
16467 break;
16468 }
16469 @@ -50122,7 +50158,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16470 if (flags & SPLICE_F_NONBLOCK) {
16471 ret = -EAGAIN;
16472 break;
16473 -@@ -1735,7 +1741,7 @@ static int opipe_prep(struct pipe_inode_
16474 +@@ -1734,7 +1740,7 @@ static int opipe_prep(struct pipe_inode_
16475 pipe_lock(pipe);
16476
16477 while (pipe->nrbufs >= PIPE_BUFFERS) {
16478 @@ -50131,7 +50167,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16479 send_sig(SIGPIPE, current, 0);
16480 ret = -EPIPE;
16481 break;
16482 -@@ -1748,9 +1754,9 @@ static int opipe_prep(struct pipe_inode_
16483 +@@ -1747,9 +1753,9 @@ static int opipe_prep(struct pipe_inode_
16484 ret = -ERESTARTSYS;
16485 break;
16486 }
16487 @@ -50143,7 +50179,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16488 }
16489
16490 pipe_unlock(pipe);
16491 -@@ -1786,14 +1792,14 @@ retry:
16492 +@@ -1785,14 +1791,14 @@ retry:
16493 pipe_double_lock(ipipe, opipe);
16494
16495 do {
16496 @@ -50160,7 +50196,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16497 break;
16498
16499 /*
16500 -@@ -1893,7 +1899,7 @@ static int link_pipe(struct pipe_inode_i
16501 +@@ -1892,7 +1898,7 @@ static int link_pipe(struct pipe_inode_i
16502 pipe_double_lock(ipipe, opipe);
16503
16504 do {
16505 @@ -50169,7 +50205,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16506 send_sig(SIGPIPE, current, 0);
16507 if (!ret)
16508 ret = -EPIPE;
16509 -@@ -1938,7 +1944,7 @@ static int link_pipe(struct pipe_inode_i
16510 +@@ -1937,7 +1943,7 @@ static int link_pipe(struct pipe_inode_i
16511 * return EAGAIN if we have the potential of some data in the
16512 * future, otherwise just return 0
16513 */
16514 @@ -50178,9 +50214,9 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
16515 ret = -EAGAIN;
16516
16517 pipe_unlock(ipipe);
16518 -diff -urNp linux-2.6.32.48/fs/sysfs/file.c linux-2.6.32.48/fs/sysfs/file.c
16519 ---- linux-2.6.32.48/fs/sysfs/file.c 2011-11-12 12:44:30.000000000 -0500
16520 -+++ linux-2.6.32.48/fs/sysfs/file.c 2011-11-12 12:46:47.000000000 -0500
16521 +diff -urNp linux-2.6.32.46/fs/sysfs/file.c linux-2.6.32.46/fs/sysfs/file.c
16522 +--- linux-2.6.32.46/fs/sysfs/file.c 2011-03-27 14:31:47.000000000 -0400
16523 ++++ linux-2.6.32.46/fs/sysfs/file.c 2011-05-04 17:56:20.000000000 -0400
16524 @@ -44,7 +44,7 @@ static DEFINE_SPINLOCK(sysfs_open_dirent
16525
16526 struct sysfs_open_dirent {
16527 @@ -50262,9 +50298,9 @@ diff -urNp linux-2.6.32.48/fs/sysfs/file.c linux-2.6.32.48/fs/sysfs/file.c
16528 wake_up_interruptible(&od->poll);
16529 }
16530
16531 -diff -urNp linux-2.6.32.48/fs/sysfs/mount.c linux-2.6.32.48/fs/sysfs/mount.c
16532 ---- linux-2.6.32.48/fs/sysfs/mount.c 2009-12-02 22:51:21.000000000 -0500
16533 -+++ linux-2.6.32.48/fs/sysfs/mount.c 2011-11-12 12:46:47.000000000 -0500
16534 +diff -urNp linux-2.6.32.46/fs/sysfs/mount.c linux-2.6.32.46/fs/sysfs/mount.c
16535 +--- linux-2.6.32.46/fs/sysfs/mount.c 2011-03-27 14:31:47.000000000 -0400
16536 ++++ linux-2.6.32.46/fs/sysfs/mount.c 2011-04-17 15:56:46.000000000 -0400
16537 @@ -36,7 +36,11 @@ struct sysfs_dirent sysfs_root = {
16538 .s_name = "",
16539 .s_count = ATOMIC_INIT(1),
16540 @@ -50277,9 +50313,9 @@ diff -urNp linux-2.6.32.48/fs/sysfs/mount.c linux-2.6.32.48/fs/sysfs/mount.c
16541 .s_ino = 1,
16542 };
16543
16544 -diff -urNp linux-2.6.32.48/fs/sysfs/symlink.c linux-2.6.32.48/fs/sysfs/symlink.c
16545 ---- linux-2.6.32.48/fs/sysfs/symlink.c 2009-12-02 22:51:21.000000000 -0500
16546 -+++ linux-2.6.32.48/fs/sysfs/symlink.c 2011-11-12 12:46:47.000000000 -0500
16547 +diff -urNp linux-2.6.32.46/fs/sysfs/symlink.c linux-2.6.32.46/fs/sysfs/symlink.c
16548 +--- linux-2.6.32.46/fs/sysfs/symlink.c 2011-03-27 14:31:47.000000000 -0400
16549 ++++ linux-2.6.32.46/fs/sysfs/symlink.c 2011-04-17 15:56:46.000000000 -0400
16550 @@ -204,7 +204,7 @@ static void *sysfs_follow_link(struct de
16551
16552 static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
16553 @@ -50289,9 +50325,9 @@ diff -urNp linux-2.6.32.48/fs/sysfs/symlink.c linux-2.6.32.48/fs/sysfs/symlink.c
16554 if (!IS_ERR(page))
16555 free_page((unsigned long)page);
16556 }
16557 -diff -urNp linux-2.6.32.48/fs/udf/balloc.c linux-2.6.32.48/fs/udf/balloc.c
16558 ---- linux-2.6.32.48/fs/udf/balloc.c 2009-12-02 22:51:21.000000000 -0500
16559 -+++ linux-2.6.32.48/fs/udf/balloc.c 2011-11-12 12:46:47.000000000 -0500
16560 +diff -urNp linux-2.6.32.46/fs/udf/balloc.c linux-2.6.32.46/fs/udf/balloc.c
16561 +--- linux-2.6.32.46/fs/udf/balloc.c 2011-03-27 14:31:47.000000000 -0400
16562 ++++ linux-2.6.32.46/fs/udf/balloc.c 2011-04-17 15:56:46.000000000 -0400
16563 @@ -172,9 +172,7 @@ static void udf_bitmap_free_blocks(struc
16564
16565 mutex_lock(&sbi->s_alloc_mutex);
16566 @@ -50314,9 +50350,9 @@ diff -urNp linux-2.6.32.48/fs/udf/balloc.c linux-2.6.32.48/fs/udf/balloc.c
16567 udf_debug("%d < %d || %d + %d > %d\n",
16568 bloc.logicalBlockNum, 0, bloc.logicalBlockNum, count,
16569 partmap->s_partition_len);
16570 -diff -urNp linux-2.6.32.48/fs/udf/inode.c linux-2.6.32.48/fs/udf/inode.c
16571 ---- linux-2.6.32.48/fs/udf/inode.c 2009-12-02 22:51:21.000000000 -0500
16572 -+++ linux-2.6.32.48/fs/udf/inode.c 2011-11-12 12:46:47.000000000 -0500
16573 +diff -urNp linux-2.6.32.46/fs/udf/inode.c linux-2.6.32.46/fs/udf/inode.c
16574 +--- linux-2.6.32.46/fs/udf/inode.c 2011-03-27 14:31:47.000000000 -0400
16575 ++++ linux-2.6.32.46/fs/udf/inode.c 2011-05-16 21:46:57.000000000 -0400
16576 @@ -484,6 +484,8 @@ static struct buffer_head *inode_getblk(
16577 int goal = 0, pgoal = iinfo->i_location.logicalBlockNum;
16578 int lastblock = 0;
16579 @@ -50326,9 +50362,9 @@ diff -urNp linux-2.6.32.48/fs/udf/inode.c linux-2.6.32.48/fs/udf/inode.c
16580 prev_epos.offset = udf_file_entry_alloc_offset(inode);
16581 prev_epos.block = iinfo->i_location;
16582 prev_epos.bh = NULL;
16583 -diff -urNp linux-2.6.32.48/fs/udf/misc.c linux-2.6.32.48/fs/udf/misc.c
16584 ---- linux-2.6.32.48/fs/udf/misc.c 2009-12-02 22:51:21.000000000 -0500
16585 -+++ linux-2.6.32.48/fs/udf/misc.c 2011-11-12 12:46:47.000000000 -0500
16586 +diff -urNp linux-2.6.32.46/fs/udf/misc.c linux-2.6.32.46/fs/udf/misc.c
16587 +--- linux-2.6.32.46/fs/udf/misc.c 2011-03-27 14:31:47.000000000 -0400
16588 ++++ linux-2.6.32.46/fs/udf/misc.c 2011-04-23 12:56:11.000000000 -0400
16589 @@ -286,7 +286,7 @@ void udf_new_tag(char *data, uint16_t id
16590
16591 u8 udf_tag_checksum(const struct tag *t)
16592 @@ -50338,9 +50374,9 @@ diff -urNp linux-2.6.32.48/fs/udf/misc.c linux-2.6.32.48/fs/udf/misc.c
16593 u8 checksum = 0;
16594 int i;
16595 for (i = 0; i < sizeof(struct tag); ++i)
16596 -diff -urNp linux-2.6.32.48/fs/utimes.c linux-2.6.32.48/fs/utimes.c
16597 ---- linux-2.6.32.48/fs/utimes.c 2009-12-02 22:51:21.000000000 -0500
16598 -+++ linux-2.6.32.48/fs/utimes.c 2011-11-12 12:46:47.000000000 -0500
16599 +diff -urNp linux-2.6.32.46/fs/utimes.c linux-2.6.32.46/fs/utimes.c
16600 +--- linux-2.6.32.46/fs/utimes.c 2011-03-27 14:31:47.000000000 -0400
16601 ++++ linux-2.6.32.46/fs/utimes.c 2011-04-17 15:56:46.000000000 -0400
16602 @@ -1,6 +1,7 @@
16603 #include <linux/compiler.h>
16604 #include <linux/file.h>
16605 @@ -50362,9 +50398,9 @@ diff -urNp linux-2.6.32.48/fs/utimes.c linux-2.6.32.48/fs/utimes.c
16606 mutex_lock(&inode->i_mutex);
16607 error = notify_change(path->dentry, &newattrs);
16608 mutex_unlock(&inode->i_mutex);
16609 -diff -urNp linux-2.6.32.48/fs/xattr_acl.c linux-2.6.32.48/fs/xattr_acl.c
16610 ---- linux-2.6.32.48/fs/xattr_acl.c 2009-12-02 22:51:21.000000000 -0500
16611 -+++ linux-2.6.32.48/fs/xattr_acl.c 2011-11-12 12:46:47.000000000 -0500
16612 +diff -urNp linux-2.6.32.46/fs/xattr_acl.c linux-2.6.32.46/fs/xattr_acl.c
16613 +--- linux-2.6.32.46/fs/xattr_acl.c 2011-03-27 14:31:47.000000000 -0400
16614 ++++ linux-2.6.32.46/fs/xattr_acl.c 2011-04-17 15:56:46.000000000 -0400
16615 @@ -17,8 +17,8 @@
16616 struct posix_acl *
16617 posix_acl_from_xattr(const void *value, size_t size)
16618 @@ -50376,9 +50412,9 @@ diff -urNp linux-2.6.32.48/fs/xattr_acl.c linux-2.6.32.48/fs/xattr_acl.c
16619 int count;
16620 struct posix_acl *acl;
16621 struct posix_acl_entry *acl_e;
16622 -diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
16623 ---- linux-2.6.32.48/fs/xattr.c 2009-12-02 22:51:21.000000000 -0500
16624 -+++ linux-2.6.32.48/fs/xattr.c 2011-11-12 12:46:47.000000000 -0500
16625 +diff -urNp linux-2.6.32.46/fs/xattr.c linux-2.6.32.46/fs/xattr.c
16626 +--- linux-2.6.32.46/fs/xattr.c 2011-03-27 14:31:47.000000000 -0400
16627 ++++ linux-2.6.32.46/fs/xattr.c 2011-04-17 15:56:46.000000000 -0400
16628 @@ -247,7 +247,7 @@ EXPORT_SYMBOL_GPL(vfs_removexattr);
16629 * Extended attribute SET operations
16630 */
16631 @@ -50441,9 +50477,9 @@ diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
16632 mnt_drop_write(f->f_path.mnt);
16633 }
16634 fput(f);
16635 -diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c
16636 ---- linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-11-12 12:44:30.000000000 -0500
16637 -+++ linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-11-12 12:46:47.000000000 -0500
16638 +diff -urNp linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl32.c linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl32.c
16639 +--- linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-03-27 14:31:47.000000000 -0400
16640 ++++ linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-04-17 15:56:46.000000000 -0400
16641 @@ -75,6 +75,7 @@ xfs_compat_ioc_fsgeometry_v1(
16642 xfs_fsop_geom_t fsgeo;
16643 int error;
16644 @@ -50452,9 +50488,9 @@ diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c linux-2.6.32.48/fs/xfs
16645 error = xfs_fs_geometry(mp, &fsgeo, 3);
16646 if (error)
16647 return -error;
16648 -diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c
16649 ---- linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c 2011-11-12 12:44:30.000000000 -0500
16650 -+++ linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c 2011-11-12 12:46:47.000000000 -0500
16651 +diff -urNp linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl.c
16652 +--- linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl.c 2011-04-17 17:00:52.000000000 -0400
16653 ++++ linux-2.6.32.46/fs/xfs/linux-2.6/xfs_ioctl.c 2011-04-17 20:07:09.000000000 -0400
16654 @@ -134,7 +134,7 @@ xfs_find_handle(
16655 }
16656
16657 @@ -50482,9 +50518,9 @@ diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.32.48/fs/xfs/l
16658 int error;
16659
16660 error = xfs_fs_geometry(mp, &fsgeo, 3);
16661 -diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c
16662 ---- linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c 2011-11-12 12:44:30.000000000 -0500
16663 -+++ linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c 2011-11-12 12:46:47.000000000 -0500
16664 +diff -urNp linux-2.6.32.46/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.32.46/fs/xfs/linux-2.6/xfs_iops.c
16665 +--- linux-2.6.32.46/fs/xfs/linux-2.6/xfs_iops.c 2011-03-27 14:31:47.000000000 -0400
16666 ++++ linux-2.6.32.46/fs/xfs/linux-2.6/xfs_iops.c 2011-04-17 15:56:46.000000000 -0400
16667 @@ -468,7 +468,7 @@ xfs_vn_put_link(
16668 struct nameidata *nd,
16669 void *p)
16670 @@ -50494,9 +50530,9 @@ diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.32.48/fs/xfs/li
16671
16672 if (!IS_ERR(s))
16673 kfree(s);
16674 -diff -urNp linux-2.6.32.48/fs/xfs/xfs_bmap.c linux-2.6.32.48/fs/xfs/xfs_bmap.c
16675 ---- linux-2.6.32.48/fs/xfs/xfs_bmap.c 2009-12-02 22:51:21.000000000 -0500
16676 -+++ linux-2.6.32.48/fs/xfs/xfs_bmap.c 2011-11-12 12:46:47.000000000 -0500
16677 +diff -urNp linux-2.6.32.46/fs/xfs/xfs_bmap.c linux-2.6.32.46/fs/xfs/xfs_bmap.c
16678 +--- linux-2.6.32.46/fs/xfs/xfs_bmap.c 2011-03-27 14:31:47.000000000 -0400
16679 ++++ linux-2.6.32.46/fs/xfs/xfs_bmap.c 2011-04-17 15:56:46.000000000 -0400
16680 @@ -360,7 +360,7 @@ xfs_bmap_validate_ret(
16681 int nmap,
16682 int ret_nmap);
16683 @@ -50506,9 +50542,9 @@ diff -urNp linux-2.6.32.48/fs/xfs/xfs_bmap.c linux-2.6.32.48/fs/xfs/xfs_bmap.c
16684 #endif /* DEBUG */
16685
16686 #if defined(XFS_RW_TRACE)
16687 -diff -urNp linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c
16688 ---- linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c 2009-12-02 22:51:21.000000000 -0500
16689 -+++ linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c 2011-11-12 12:46:47.000000000 -0500
16690 +diff -urNp linux-2.6.32.46/fs/xfs/xfs_dir2_sf.c linux-2.6.32.46/fs/xfs/xfs_dir2_sf.c
16691 +--- linux-2.6.32.46/fs/xfs/xfs_dir2_sf.c 2011-03-27 14:31:47.000000000 -0400
16692 ++++ linux-2.6.32.46/fs/xfs/xfs_dir2_sf.c 2011-04-18 22:07:30.000000000 -0400
16693 @@ -779,7 +779,15 @@ xfs_dir2_sf_getdents(
16694 }
16695
16696 @@ -50526,9 +50562,9 @@ diff -urNp linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c linux-2.6.32.48/fs/xfs/xfs_dir2_
16697 off & 0x7fffffff, ino, DT_UNKNOWN)) {
16698 *offset = off & 0x7fffffff;
16699 return 0;
16700 -diff -urNp linux-2.6.32.48/grsecurity/gracl_alloc.c linux-2.6.32.48/grsecurity/gracl_alloc.c
16701 ---- linux-2.6.32.48/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500
16702 -+++ linux-2.6.32.48/grsecurity/gracl_alloc.c 2011-11-12 12:46:47.000000000 -0500
16703 +diff -urNp linux-2.6.32.46/grsecurity/gracl_alloc.c linux-2.6.32.46/grsecurity/gracl_alloc.c
16704 +--- linux-2.6.32.46/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500
16705 ++++ linux-2.6.32.46/grsecurity/gracl_alloc.c 2011-04-17 15:56:46.000000000 -0400
16706 @@ -0,0 +1,105 @@
16707 +#include <linux/kernel.h>
16708 +#include <linux/mm.h>
16709 @@ -50635,9 +50671,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_alloc.c linux-2.6.32.48/grsecurity/g
16710 + else
16711 + return 1;
16712 +}
16713 -diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
16714 ---- linux-2.6.32.48/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
16715 -+++ linux-2.6.32.48/grsecurity/gracl.c 2011-11-12 12:46:47.000000000 -0500
16716 +diff -urNp linux-2.6.32.46/grsecurity/gracl.c linux-2.6.32.46/grsecurity/gracl.c
16717 +--- linux-2.6.32.46/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
16718 ++++ linux-2.6.32.46/grsecurity/gracl.c 2011-10-17 07:04:31.000000000 -0400
16719 @@ -0,0 +1,4140 @@
16720 +#include <linux/kernel.h>
16721 +#include <linux/module.h>
16722 @@ -54779,9 +54815,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
16723 +EXPORT_SYMBOL(gr_check_group_change);
16724 +#endif
16725 +
16726 -diff -urNp linux-2.6.32.48/grsecurity/gracl_cap.c linux-2.6.32.48/grsecurity/gracl_cap.c
16727 ---- linux-2.6.32.48/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500
16728 -+++ linux-2.6.32.48/grsecurity/gracl_cap.c 2011-11-12 12:46:47.000000000 -0500
16729 +diff -urNp linux-2.6.32.46/grsecurity/gracl_cap.c linux-2.6.32.46/grsecurity/gracl_cap.c
16730 +--- linux-2.6.32.46/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500
16731 ++++ linux-2.6.32.46/grsecurity/gracl_cap.c 2011-09-14 08:53:50.000000000 -0400
16732 @@ -0,0 +1,101 @@
16733 +#include <linux/kernel.h>
16734 +#include <linux/module.h>
16735 @@ -54884,9 +54920,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_cap.c linux-2.6.32.48/grsecurity/gra
16736 + return 0;
16737 +}
16738 +
16739 -diff -urNp linux-2.6.32.48/grsecurity/gracl_fs.c linux-2.6.32.48/grsecurity/gracl_fs.c
16740 ---- linux-2.6.32.48/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500
16741 -+++ linux-2.6.32.48/grsecurity/gracl_fs.c 2011-11-12 12:46:47.000000000 -0500
16742 +diff -urNp linux-2.6.32.46/grsecurity/gracl_fs.c linux-2.6.32.46/grsecurity/gracl_fs.c
16743 +--- linux-2.6.32.46/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500
16744 ++++ linux-2.6.32.46/grsecurity/gracl_fs.c 2011-10-17 02:16:34.000000000 -0400
16745 @@ -0,0 +1,431 @@
16746 +#include <linux/kernel.h>
16747 +#include <linux/sched.h>
16748 @@ -55319,9 +55355,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_fs.c linux-2.6.32.48/grsecurity/grac
16749 +
16750 + return 0;
16751 +}
16752 -diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/gracl_ip.c
16753 ---- linux-2.6.32.48/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500
16754 -+++ linux-2.6.32.48/grsecurity/gracl_ip.c 2011-11-12 12:46:47.000000000 -0500
16755 +diff -urNp linux-2.6.32.46/grsecurity/gracl_ip.c linux-2.6.32.46/grsecurity/gracl_ip.c
16756 +--- linux-2.6.32.46/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500
16757 ++++ linux-2.6.32.46/grsecurity/gracl_ip.c 2011-04-17 15:56:46.000000000 -0400
16758 @@ -0,0 +1,382 @@
16759 +#include <linux/kernel.h>
16760 +#include <asm/uaccess.h>
16761 @@ -55705,9 +55741,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
16762 +
16763 + return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM);
16764 +}
16765 -diff -urNp linux-2.6.32.48/grsecurity/gracl_learn.c linux-2.6.32.48/grsecurity/gracl_learn.c
16766 ---- linux-2.6.32.48/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500
16767 -+++ linux-2.6.32.48/grsecurity/gracl_learn.c 2011-11-12 12:46:47.000000000 -0500
16768 +diff -urNp linux-2.6.32.46/grsecurity/gracl_learn.c linux-2.6.32.46/grsecurity/gracl_learn.c
16769 +--- linux-2.6.32.46/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500
16770 ++++ linux-2.6.32.46/grsecurity/gracl_learn.c 2011-07-14 21:02:03.000000000 -0400
16771 @@ -0,0 +1,208 @@
16772 +#include <linux/kernel.h>
16773 +#include <linux/mm.h>
16774 @@ -55917,9 +55953,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_learn.c linux-2.6.32.48/grsecurity/g
16775 + .release = close_learn,
16776 + .poll = poll_learn,
16777 +};
16778 -diff -urNp linux-2.6.32.48/grsecurity/gracl_res.c linux-2.6.32.48/grsecurity/gracl_res.c
16779 ---- linux-2.6.32.48/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500
16780 -+++ linux-2.6.32.48/grsecurity/gracl_res.c 2011-11-12 12:46:47.000000000 -0500
16781 +diff -urNp linux-2.6.32.46/grsecurity/gracl_res.c linux-2.6.32.46/grsecurity/gracl_res.c
16782 +--- linux-2.6.32.46/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500
16783 ++++ linux-2.6.32.46/grsecurity/gracl_res.c 2011-04-17 15:56:46.000000000 -0400
16784 @@ -0,0 +1,67 @@
16785 +#include <linux/kernel.h>
16786 +#include <linux/sched.h>
16787 @@ -55988,9 +56024,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_res.c linux-2.6.32.48/grsecurity/gra
16788 + rcu_read_unlock();
16789 + return;
16790 +}
16791 -diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gracl_segv.c
16792 ---- linux-2.6.32.48/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500
16793 -+++ linux-2.6.32.48/grsecurity/gracl_segv.c 2011-11-12 12:46:47.000000000 -0500
16794 +diff -urNp linux-2.6.32.46/grsecurity/gracl_segv.c linux-2.6.32.46/grsecurity/gracl_segv.c
16795 +--- linux-2.6.32.46/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500
16796 ++++ linux-2.6.32.46/grsecurity/gracl_segv.c 2011-04-17 15:56:46.000000000 -0400
16797 @@ -0,0 +1,284 @@
16798 +#include <linux/kernel.h>
16799 +#include <linux/mm.h>
16800 @@ -56276,9 +56312,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gr
16801 +
16802 + return;
16803 +}
16804 -diff -urNp linux-2.6.32.48/grsecurity/gracl_shm.c linux-2.6.32.48/grsecurity/gracl_shm.c
16805 ---- linux-2.6.32.48/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500
16806 -+++ linux-2.6.32.48/grsecurity/gracl_shm.c 2011-11-12 12:46:47.000000000 -0500
16807 +diff -urNp linux-2.6.32.46/grsecurity/gracl_shm.c linux-2.6.32.46/grsecurity/gracl_shm.c
16808 +--- linux-2.6.32.46/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500
16809 ++++ linux-2.6.32.46/grsecurity/gracl_shm.c 2011-04-17 15:56:46.000000000 -0400
16810 @@ -0,0 +1,40 @@
16811 +#include <linux/kernel.h>
16812 +#include <linux/mm.h>
16813 @@ -56320,9 +56356,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_shm.c linux-2.6.32.48/grsecurity/gra
16814 +
16815 + return 1;
16816 +}
16817 -diff -urNp linux-2.6.32.48/grsecurity/grsec_chdir.c linux-2.6.32.48/grsecurity/grsec_chdir.c
16818 ---- linux-2.6.32.48/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500
16819 -+++ linux-2.6.32.48/grsecurity/grsec_chdir.c 2011-11-12 12:46:47.000000000 -0500
16820 +diff -urNp linux-2.6.32.46/grsecurity/grsec_chdir.c linux-2.6.32.46/grsecurity/grsec_chdir.c
16821 +--- linux-2.6.32.46/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500
16822 ++++ linux-2.6.32.46/grsecurity/grsec_chdir.c 2011-04-17 15:56:46.000000000 -0400
16823 @@ -0,0 +1,19 @@
16824 +#include <linux/kernel.h>
16825 +#include <linux/sched.h>
16826 @@ -56343,9 +56379,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chdir.c linux-2.6.32.48/grsecurity/g
16827 +#endif
16828 + return;
16829 +}
16830 -diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/grsec_chroot.c
16831 ---- linux-2.6.32.48/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500
16832 -+++ linux-2.6.32.48/grsecurity/grsec_chroot.c 2011-11-12 12:46:47.000000000 -0500
16833 +diff -urNp linux-2.6.32.46/grsecurity/grsec_chroot.c linux-2.6.32.46/grsecurity/grsec_chroot.c
16834 +--- linux-2.6.32.46/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500
16835 ++++ linux-2.6.32.46/grsecurity/grsec_chroot.c 2011-09-15 06:48:16.000000000 -0400
16836 @@ -0,0 +1,386 @@
16837 +#include <linux/kernel.h>
16838 +#include <linux/module.h>
16839 @@ -56733,9 +56769,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/
16840 +#endif
16841 + return 0;
16842 +}
16843 -diff -urNp linux-2.6.32.48/grsecurity/grsec_disabled.c linux-2.6.32.48/grsecurity/grsec_disabled.c
16844 ---- linux-2.6.32.48/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500
16845 -+++ linux-2.6.32.48/grsecurity/grsec_disabled.c 2011-11-12 12:46:47.000000000 -0500
16846 +diff -urNp linux-2.6.32.46/grsecurity/grsec_disabled.c linux-2.6.32.46/grsecurity/grsec_disabled.c
16847 +--- linux-2.6.32.46/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500
16848 ++++ linux-2.6.32.46/grsecurity/grsec_disabled.c 2011-10-25 09:16:40.000000000 -0400
16849 @@ -0,0 +1,439 @@
16850 +#include <linux/kernel.h>
16851 +#include <linux/module.h>
16852 @@ -57176,9 +57212,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_disabled.c linux-2.6.32.48/grsecurit
16853 +EXPORT_SYMBOL(gr_check_user_change);
16854 +EXPORT_SYMBOL(gr_check_group_change);
16855 +#endif
16856 -diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/grsec_exec.c
16857 ---- linux-2.6.32.48/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500
16858 -+++ linux-2.6.32.48/grsecurity/grsec_exec.c 2011-11-12 12:46:47.000000000 -0500
16859 +diff -urNp linux-2.6.32.46/grsecurity/grsec_exec.c linux-2.6.32.46/grsecurity/grsec_exec.c
16860 +--- linux-2.6.32.46/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500
16861 ++++ linux-2.6.32.46/grsecurity/grsec_exec.c 2011-09-13 22:54:27.000000000 -0400
16862 @@ -0,0 +1,204 @@
16863 +#include <linux/kernel.h>
16864 +#include <linux/sched.h>
16865 @@ -57384,9 +57420,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/gr
16866 +
16867 +EXPORT_SYMBOL(gr_is_capable);
16868 +EXPORT_SYMBOL(gr_is_capable_nolog);
16869 -diff -urNp linux-2.6.32.48/grsecurity/grsec_fifo.c linux-2.6.32.48/grsecurity/grsec_fifo.c
16870 ---- linux-2.6.32.48/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500
16871 -+++ linux-2.6.32.48/grsecurity/grsec_fifo.c 2011-11-12 12:46:47.000000000 -0500
16872 +diff -urNp linux-2.6.32.46/grsecurity/grsec_fifo.c linux-2.6.32.46/grsecurity/grsec_fifo.c
16873 +--- linux-2.6.32.46/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500
16874 ++++ linux-2.6.32.46/grsecurity/grsec_fifo.c 2011-04-17 15:56:46.000000000 -0400
16875 @@ -0,0 +1,24 @@
16876 +#include <linux/kernel.h>
16877 +#include <linux/sched.h>
16878 @@ -57412,9 +57448,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_fifo.c linux-2.6.32.48/grsecurity/gr
16879 +#endif
16880 + return 0;
16881 +}
16882 -diff -urNp linux-2.6.32.48/grsecurity/grsec_fork.c linux-2.6.32.48/grsecurity/grsec_fork.c
16883 ---- linux-2.6.32.48/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500
16884 -+++ linux-2.6.32.48/grsecurity/grsec_fork.c 2011-11-12 12:46:47.000000000 -0500
16885 +diff -urNp linux-2.6.32.46/grsecurity/grsec_fork.c linux-2.6.32.46/grsecurity/grsec_fork.c
16886 +--- linux-2.6.32.46/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500
16887 ++++ linux-2.6.32.46/grsecurity/grsec_fork.c 2011-04-17 15:56:46.000000000 -0400
16888 @@ -0,0 +1,23 @@
16889 +#include <linux/kernel.h>
16890 +#include <linux/sched.h>
16891 @@ -57439,9 +57475,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_fork.c linux-2.6.32.48/grsecurity/gr
16892 +#endif
16893 + return;
16894 +}
16895 -diff -urNp linux-2.6.32.48/grsecurity/grsec_init.c linux-2.6.32.48/grsecurity/grsec_init.c
16896 ---- linux-2.6.32.48/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500
16897 -+++ linux-2.6.32.48/grsecurity/grsec_init.c 2011-11-12 12:46:47.000000000 -0500
16898 +diff -urNp linux-2.6.32.46/grsecurity/grsec_init.c linux-2.6.32.46/grsecurity/grsec_init.c
16899 +--- linux-2.6.32.46/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500
16900 ++++ linux-2.6.32.46/grsecurity/grsec_init.c 2011-08-11 19:57:42.000000000 -0400
16901 @@ -0,0 +1,270 @@
16902 +#include <linux/kernel.h>
16903 +#include <linux/sched.h>
16904 @@ -57713,9 +57749,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_init.c linux-2.6.32.48/grsecurity/gr
16905 +
16906 + return;
16907 +}
16908 -diff -urNp linux-2.6.32.48/grsecurity/grsec_link.c linux-2.6.32.48/grsecurity/grsec_link.c
16909 ---- linux-2.6.32.48/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500
16910 -+++ linux-2.6.32.48/grsecurity/grsec_link.c 2011-11-12 12:46:47.000000000 -0500
16911 +diff -urNp linux-2.6.32.46/grsecurity/grsec_link.c linux-2.6.32.46/grsecurity/grsec_link.c
16912 +--- linux-2.6.32.46/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500
16913 ++++ linux-2.6.32.46/grsecurity/grsec_link.c 2011-04-17 15:56:46.000000000 -0400
16914 @@ -0,0 +1,43 @@
16915 +#include <linux/kernel.h>
16916 +#include <linux/sched.h>
16917 @@ -57760,9 +57796,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_link.c linux-2.6.32.48/grsecurity/gr
16918 +#endif
16919 + return 0;
16920 +}
16921 -diff -urNp linux-2.6.32.48/grsecurity/grsec_log.c linux-2.6.32.48/grsecurity/grsec_log.c
16922 ---- linux-2.6.32.48/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500
16923 -+++ linux-2.6.32.48/grsecurity/grsec_log.c 2011-11-12 12:46:47.000000000 -0500
16924 +diff -urNp linux-2.6.32.46/grsecurity/grsec_log.c linux-2.6.32.46/grsecurity/grsec_log.c
16925 +--- linux-2.6.32.46/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500
16926 ++++ linux-2.6.32.46/grsecurity/grsec_log.c 2011-09-26 10:44:49.000000000 -0400
16927 @@ -0,0 +1,315 @@
16928 +#include <linux/kernel.h>
16929 +#include <linux/sched.h>
16930 @@ -58079,9 +58115,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_log.c linux-2.6.32.48/grsecurity/grs
16931 + gr_log_end(audit);
16932 + END_LOCKS(audit);
16933 +}
16934 -diff -urNp linux-2.6.32.48/grsecurity/grsec_mem.c linux-2.6.32.48/grsecurity/grsec_mem.c
16935 ---- linux-2.6.32.48/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500
16936 -+++ linux-2.6.32.48/grsecurity/grsec_mem.c 2011-11-12 12:46:47.000000000 -0500
16937 +diff -urNp linux-2.6.32.46/grsecurity/grsec_mem.c linux-2.6.32.46/grsecurity/grsec_mem.c
16938 +--- linux-2.6.32.46/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500
16939 ++++ linux-2.6.32.46/grsecurity/grsec_mem.c 2011-04-17 15:56:46.000000000 -0400
16940 @@ -0,0 +1,33 @@
16941 +#include <linux/kernel.h>
16942 +#include <linux/sched.h>
16943 @@ -58116,9 +58152,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_mem.c linux-2.6.32.48/grsecurity/grs
16944 + gr_log_noargs(GR_DONT_AUDIT, GR_VM86_MSG);
16945 + return;
16946 +}
16947 -diff -urNp linux-2.6.32.48/grsecurity/grsec_mount.c linux-2.6.32.48/grsecurity/grsec_mount.c
16948 ---- linux-2.6.32.48/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500
16949 -+++ linux-2.6.32.48/grsecurity/grsec_mount.c 2011-11-12 12:46:47.000000000 -0500
16950 +diff -urNp linux-2.6.32.46/grsecurity/grsec_mount.c linux-2.6.32.46/grsecurity/grsec_mount.c
16951 +--- linux-2.6.32.46/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500
16952 ++++ linux-2.6.32.46/grsecurity/grsec_mount.c 2011-06-20 19:47:03.000000000 -0400
16953 @@ -0,0 +1,62 @@
16954 +#include <linux/kernel.h>
16955 +#include <linux/sched.h>
16956 @@ -58182,9 +58218,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_mount.c linux-2.6.32.48/grsecurity/g
16957 +#endif
16958 + return 0;
16959 +}
16960 -diff -urNp linux-2.6.32.48/grsecurity/grsec_pax.c linux-2.6.32.48/grsecurity/grsec_pax.c
16961 ---- linux-2.6.32.48/grsecurity/grsec_pax.c 1969-12-31 19:00:00.000000000 -0500
16962 -+++ linux-2.6.32.48/grsecurity/grsec_pax.c 2011-11-12 12:46:47.000000000 -0500
16963 +diff -urNp linux-2.6.32.46/grsecurity/grsec_pax.c linux-2.6.32.46/grsecurity/grsec_pax.c
16964 +--- linux-2.6.32.46/grsecurity/grsec_pax.c 1969-12-31 19:00:00.000000000 -0500
16965 ++++ linux-2.6.32.46/grsecurity/grsec_pax.c 2011-04-17 15:56:46.000000000 -0400
16966 @@ -0,0 +1,36 @@
16967 +#include <linux/kernel.h>
16968 +#include <linux/sched.h>
16969 @@ -58222,9 +58258,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_pax.c linux-2.6.32.48/grsecurity/grs
16970 +#endif
16971 + return;
16972 +}
16973 -diff -urNp linux-2.6.32.48/grsecurity/grsec_ptrace.c linux-2.6.32.48/grsecurity/grsec_ptrace.c
16974 ---- linux-2.6.32.48/grsecurity/grsec_ptrace.c 1969-12-31 19:00:00.000000000 -0500
16975 -+++ linux-2.6.32.48/grsecurity/grsec_ptrace.c 2011-11-12 12:46:47.000000000 -0500
16976 +diff -urNp linux-2.6.32.46/grsecurity/grsec_ptrace.c linux-2.6.32.46/grsecurity/grsec_ptrace.c
16977 +--- linux-2.6.32.46/grsecurity/grsec_ptrace.c 1969-12-31 19:00:00.000000000 -0500
16978 ++++ linux-2.6.32.46/grsecurity/grsec_ptrace.c 2011-04-17 15:56:46.000000000 -0400
16979 @@ -0,0 +1,14 @@
16980 +#include <linux/kernel.h>
16981 +#include <linux/sched.h>
16982 @@ -58240,9 +58276,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_ptrace.c linux-2.6.32.48/grsecurity/
16983 +#endif
16984 + return;
16985 +}
16986 -diff -urNp linux-2.6.32.48/grsecurity/grsec_sig.c linux-2.6.32.48/grsecurity/grsec_sig.c
16987 ---- linux-2.6.32.48/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500
16988 -+++ linux-2.6.32.48/grsecurity/grsec_sig.c 2011-11-12 12:46:47.000000000 -0500
16989 +diff -urNp linux-2.6.32.46/grsecurity/grsec_sig.c linux-2.6.32.46/grsecurity/grsec_sig.c
16990 +--- linux-2.6.32.46/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500
16991 ++++ linux-2.6.32.46/grsecurity/grsec_sig.c 2011-06-29 19:40:31.000000000 -0400
16992 @@ -0,0 +1,205 @@
16993 +#include <linux/kernel.h>
16994 +#include <linux/sched.h>
16995 @@ -58449,9 +58485,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sig.c linux-2.6.32.48/grsecurity/grs
16996 +#endif
16997 + return 0;
16998 +}
16999 -diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/grsec_sock.c
17000 ---- linux-2.6.32.48/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500
17001 -+++ linux-2.6.32.48/grsecurity/grsec_sock.c 2011-11-12 12:46:47.000000000 -0500
17002 +diff -urNp linux-2.6.32.46/grsecurity/grsec_sock.c linux-2.6.32.46/grsecurity/grsec_sock.c
17003 +--- linux-2.6.32.46/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500
17004 ++++ linux-2.6.32.46/grsecurity/grsec_sock.c 2011-04-17 15:56:46.000000000 -0400
17005 @@ -0,0 +1,275 @@
17006 +#include <linux/kernel.h>
17007 +#include <linux/module.h>
17008 @@ -58728,9 +58764,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/gr
17009 + return current_cap();
17010 +#endif
17011 +}
17012 -diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/grsec_sysctl.c
17013 ---- linux-2.6.32.48/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500
17014 -+++ linux-2.6.32.48/grsecurity/grsec_sysctl.c 2011-11-12 12:46:47.000000000 -0500
17015 +diff -urNp linux-2.6.32.46/grsecurity/grsec_sysctl.c linux-2.6.32.46/grsecurity/grsec_sysctl.c
17016 +--- linux-2.6.32.46/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500
17017 ++++ linux-2.6.32.46/grsecurity/grsec_sysctl.c 2011-08-11 19:57:54.000000000 -0400
17018 @@ -0,0 +1,479 @@
17019 +#include <linux/kernel.h>
17020 +#include <linux/sched.h>
17021 @@ -59211,9 +59247,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
17022 + { .ctl_name = 0 }
17023 +};
17024 +#endif
17025 -diff -urNp linux-2.6.32.48/grsecurity/grsec_time.c linux-2.6.32.48/grsecurity/grsec_time.c
17026 ---- linux-2.6.32.48/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500
17027 -+++ linux-2.6.32.48/grsecurity/grsec_time.c 2011-11-12 12:46:47.000000000 -0500
17028 +diff -urNp linux-2.6.32.46/grsecurity/grsec_time.c linux-2.6.32.46/grsecurity/grsec_time.c
17029 +--- linux-2.6.32.46/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500
17030 ++++ linux-2.6.32.46/grsecurity/grsec_time.c 2011-04-17 15:56:46.000000000 -0400
17031 @@ -0,0 +1,16 @@
17032 +#include <linux/kernel.h>
17033 +#include <linux/sched.h>
17034 @@ -59231,9 +59267,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_time.c linux-2.6.32.48/grsecurity/gr
17035 +}
17036 +
17037 +EXPORT_SYMBOL(gr_log_timechange);
17038 -diff -urNp linux-2.6.32.48/grsecurity/grsec_tpe.c linux-2.6.32.48/grsecurity/grsec_tpe.c
17039 ---- linux-2.6.32.48/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500
17040 -+++ linux-2.6.32.48/grsecurity/grsec_tpe.c 2011-11-12 12:46:47.000000000 -0500
17041 +diff -urNp linux-2.6.32.46/grsecurity/grsec_tpe.c linux-2.6.32.46/grsecurity/grsec_tpe.c
17042 +--- linux-2.6.32.46/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500
17043 ++++ linux-2.6.32.46/grsecurity/grsec_tpe.c 2011-04-17 15:56:46.000000000 -0400
17044 @@ -0,0 +1,39 @@
17045 +#include <linux/kernel.h>
17046 +#include <linux/sched.h>
17047 @@ -59274,9 +59310,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_tpe.c linux-2.6.32.48/grsecurity/grs
17048 +#endif
17049 + return 1;
17050 +}
17051 -diff -urNp linux-2.6.32.48/grsecurity/grsum.c linux-2.6.32.48/grsecurity/grsum.c
17052 ---- linux-2.6.32.48/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500
17053 -+++ linux-2.6.32.48/grsecurity/grsum.c 2011-11-12 12:46:47.000000000 -0500
17054 +diff -urNp linux-2.6.32.46/grsecurity/grsum.c linux-2.6.32.46/grsecurity/grsum.c
17055 +--- linux-2.6.32.46/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500
17056 ++++ linux-2.6.32.46/grsecurity/grsum.c 2011-04-17 15:56:46.000000000 -0400
17057 @@ -0,0 +1,61 @@
17058 +#include <linux/err.h>
17059 +#include <linux/kernel.h>
17060 @@ -59339,9 +59375,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsum.c linux-2.6.32.48/grsecurity/grsum.c
17061 +
17062 + return retval;
17063 +}
17064 -diff -urNp linux-2.6.32.48/grsecurity/Kconfig linux-2.6.32.48/grsecurity/Kconfig
17065 ---- linux-2.6.32.48/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500
17066 -+++ linux-2.6.32.48/grsecurity/Kconfig 2011-11-12 12:46:47.000000000 -0500
17067 +diff -urNp linux-2.6.32.46/grsecurity/Kconfig linux-2.6.32.46/grsecurity/Kconfig
17068 +--- linux-2.6.32.46/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500
17069 ++++ linux-2.6.32.46/grsecurity/Kconfig 2011-09-15 00:00:38.000000000 -0400
17070 @@ -0,0 +1,1037 @@
17071 +#
17072 +# grecurity configuration
17073 @@ -60380,9 +60416,9 @@ diff -urNp linux-2.6.32.48/grsecurity/Kconfig linux-2.6.32.48/grsecurity/Kconfig
17074 +endmenu
17075 +
17076 +endmenu
17077 -diff -urNp linux-2.6.32.48/grsecurity/Makefile linux-2.6.32.48/grsecurity/Makefile
17078 ---- linux-2.6.32.48/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500
17079 -+++ linux-2.6.32.48/grsecurity/Makefile 2011-11-12 12:46:47.000000000 -0500
17080 +diff -urNp linux-2.6.32.46/grsecurity/Makefile linux-2.6.32.46/grsecurity/Makefile
17081 +--- linux-2.6.32.46/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500
17082 ++++ linux-2.6.32.46/grsecurity/Makefile 2011-10-17 06:48:36.000000000 -0400
17083 @@ -0,0 +1,36 @@
17084 +# grsecurity's ACL system was originally written in 2001 by Michael Dalton
17085 +# during 2001-2009 it has been completely redesigned by Brad Spengler
17086 @@ -60420,9 +60456,9 @@ diff -urNp linux-2.6.32.48/grsecurity/Makefile linux-2.6.32.48/grsecurity/Makefi
17087 + @-chmod -f 700 .
17088 + @echo ' grsec: protected kernel image paths'
17089 +endif
17090 -diff -urNp linux-2.6.32.48/include/acpi/acpi_bus.h linux-2.6.32.48/include/acpi/acpi_bus.h
17091 ---- linux-2.6.32.48/include/acpi/acpi_bus.h 2009-12-02 22:51:21.000000000 -0500
17092 -+++ linux-2.6.32.48/include/acpi/acpi_bus.h 2011-11-12 12:46:47.000000000 -0500
17093 +diff -urNp linux-2.6.32.46/include/acpi/acpi_bus.h linux-2.6.32.46/include/acpi/acpi_bus.h
17094 +--- linux-2.6.32.46/include/acpi/acpi_bus.h 2011-03-27 14:31:47.000000000 -0400
17095 ++++ linux-2.6.32.46/include/acpi/acpi_bus.h 2011-08-05 20:33:55.000000000 -0400
17096 @@ -107,7 +107,7 @@ struct acpi_device_ops {
17097 acpi_op_bind bind;
17098 acpi_op_unbind unbind;
17099 @@ -60432,9 +60468,9 @@ diff -urNp linux-2.6.32.48/include/acpi/acpi_bus.h linux-2.6.32.48/include/acpi/
17100
17101 #define ACPI_DRIVER_ALL_NOTIFY_EVENTS 0x1 /* system AND device events */
17102
17103 -diff -urNp linux-2.6.32.48/include/acpi/acpi_drivers.h linux-2.6.32.48/include/acpi/acpi_drivers.h
17104 ---- linux-2.6.32.48/include/acpi/acpi_drivers.h 2009-12-02 22:51:21.000000000 -0500
17105 -+++ linux-2.6.32.48/include/acpi/acpi_drivers.h 2011-11-12 12:46:47.000000000 -0500
17106 +diff -urNp linux-2.6.32.46/include/acpi/acpi_drivers.h linux-2.6.32.46/include/acpi/acpi_drivers.h
17107 +--- linux-2.6.32.46/include/acpi/acpi_drivers.h 2011-03-27 14:31:47.000000000 -0400
17108 ++++ linux-2.6.32.46/include/acpi/acpi_drivers.h 2011-04-17 15:56:46.000000000 -0400
17109 @@ -119,8 +119,8 @@ int acpi_processor_set_thermal_limit(acp
17110 Dock Station
17111 -------------------------------------------------------------------------- */
17112 @@ -60464,9 +60500,9 @@ diff -urNp linux-2.6.32.48/include/acpi/acpi_drivers.h linux-2.6.32.48/include/a
17113 void *context)
17114 {
17115 return -ENODEV;
17116 -diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/include/asm-generic/atomic-long.h
17117 ---- linux-2.6.32.48/include/asm-generic/atomic-long.h 2009-12-02 22:51:21.000000000 -0500
17118 -+++ linux-2.6.32.48/include/asm-generic/atomic-long.h 2011-11-12 12:46:47.000000000 -0500
17119 +diff -urNp linux-2.6.32.46/include/asm-generic/atomic-long.h linux-2.6.32.46/include/asm-generic/atomic-long.h
17120 +--- linux-2.6.32.46/include/asm-generic/atomic-long.h 2011-03-27 14:31:47.000000000 -0400
17121 ++++ linux-2.6.32.46/include/asm-generic/atomic-long.h 2011-07-13 22:21:25.000000000 -0400
17122 @@ -22,6 +22,12 @@
17123
17124 typedef atomic64_t atomic_long_t;
17125 @@ -60733,9 +60769,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
17126 +#endif
17127 +
17128 #endif /* _ASM_GENERIC_ATOMIC_LONG_H */
17129 -diff -urNp linux-2.6.32.48/include/asm-generic/bug.h linux-2.6.32.48/include/asm-generic/bug.h
17130 ---- linux-2.6.32.48/include/asm-generic/bug.h 2011-11-12 12:44:30.000000000 -0500
17131 -+++ linux-2.6.32.48/include/asm-generic/bug.h 2011-11-12 12:46:47.000000000 -0500
17132 +diff -urNp linux-2.6.32.46/include/asm-generic/bug.h linux-2.6.32.46/include/asm-generic/bug.h
17133 +--- linux-2.6.32.46/include/asm-generic/bug.h 2011-07-13 17:23:04.000000000 -0400
17134 ++++ linux-2.6.32.46/include/asm-generic/bug.h 2011-08-21 17:56:07.000000000 -0400
17135 @@ -105,11 +105,11 @@ extern void warn_slowpath_null(const cha
17136
17137 #else /* !CONFIG_BUG */
17138 @@ -60750,9 +60786,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/bug.h linux-2.6.32.48/include/asm
17139 #endif
17140
17141 #ifndef HAVE_ARCH_WARN_ON
17142 -diff -urNp linux-2.6.32.48/include/asm-generic/cache.h linux-2.6.32.48/include/asm-generic/cache.h
17143 ---- linux-2.6.32.48/include/asm-generic/cache.h 2009-12-02 22:51:21.000000000 -0500
17144 -+++ linux-2.6.32.48/include/asm-generic/cache.h 2011-11-12 12:46:47.000000000 -0500
17145 +diff -urNp linux-2.6.32.46/include/asm-generic/cache.h linux-2.6.32.46/include/asm-generic/cache.h
17146 +--- linux-2.6.32.46/include/asm-generic/cache.h 2011-03-27 14:31:47.000000000 -0400
17147 ++++ linux-2.6.32.46/include/asm-generic/cache.h 2011-07-06 19:53:33.000000000 -0400
17148 @@ -6,7 +6,7 @@
17149 * cache lines need to provide their own cache.h.
17150 */
17151 @@ -60763,9 +60799,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/cache.h linux-2.6.32.48/include/a
17152 +#define L1_CACHE_BYTES (1UL << L1_CACHE_SHIFT)
17153
17154 #endif /* __ASM_GENERIC_CACHE_H */
17155 -diff -urNp linux-2.6.32.48/include/asm-generic/dma-mapping-common.h linux-2.6.32.48/include/asm-generic/dma-mapping-common.h
17156 ---- linux-2.6.32.48/include/asm-generic/dma-mapping-common.h 2011-11-12 12:44:30.000000000 -0500
17157 -+++ linux-2.6.32.48/include/asm-generic/dma-mapping-common.h 2011-11-12 12:46:47.000000000 -0500
17158 +diff -urNp linux-2.6.32.46/include/asm-generic/dma-mapping-common.h linux-2.6.32.46/include/asm-generic/dma-mapping-common.h
17159 +--- linux-2.6.32.46/include/asm-generic/dma-mapping-common.h 2011-03-27 14:31:47.000000000 -0400
17160 ++++ linux-2.6.32.46/include/asm-generic/dma-mapping-common.h 2011-04-17 15:56:46.000000000 -0400
17161 @@ -11,7 +11,7 @@ static inline dma_addr_t dma_map_single_
17162 enum dma_data_direction dir,
17163 struct dma_attrs *attrs)
17164 @@ -60874,9 +60910,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/dma-mapping-common.h linux-2.6.32
17165
17166 BUG_ON(!valid_dma_direction(dir));
17167 if (ops->sync_sg_for_device)
17168 -diff -urNp linux-2.6.32.48/include/asm-generic/emergency-restart.h linux-2.6.32.48/include/asm-generic/emergency-restart.h
17169 ---- linux-2.6.32.48/include/asm-generic/emergency-restart.h 2009-12-02 22:51:21.000000000 -0500
17170 -+++ linux-2.6.32.48/include/asm-generic/emergency-restart.h 2011-11-12 12:46:47.000000000 -0500
17171 +diff -urNp linux-2.6.32.46/include/asm-generic/emergency-restart.h linux-2.6.32.46/include/asm-generic/emergency-restart.h
17172 +--- linux-2.6.32.46/include/asm-generic/emergency-restart.h 2011-03-27 14:31:47.000000000 -0400
17173 ++++ linux-2.6.32.46/include/asm-generic/emergency-restart.h 2011-08-21 19:17:17.000000000 -0400
17174 @@ -1,7 +1,7 @@
17175 #ifndef _ASM_GENERIC_EMERGENCY_RESTART_H
17176 #define _ASM_GENERIC_EMERGENCY_RESTART_H
17177 @@ -60886,9 +60922,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/emergency-restart.h linux-2.6.32.
17178 {
17179 machine_restart(NULL);
17180 }
17181 -diff -urNp linux-2.6.32.48/include/asm-generic/futex.h linux-2.6.32.48/include/asm-generic/futex.h
17182 ---- linux-2.6.32.48/include/asm-generic/futex.h 2009-12-02 22:51:21.000000000 -0500
17183 -+++ linux-2.6.32.48/include/asm-generic/futex.h 2011-11-12 12:46:47.000000000 -0500
17184 +diff -urNp linux-2.6.32.46/include/asm-generic/futex.h linux-2.6.32.46/include/asm-generic/futex.h
17185 +--- linux-2.6.32.46/include/asm-generic/futex.h 2011-03-27 14:31:47.000000000 -0400
17186 ++++ linux-2.6.32.46/include/asm-generic/futex.h 2011-04-17 15:56:46.000000000 -0400
17187 @@ -6,7 +6,7 @@
17188 #include <asm/errno.h>
17189
17190 @@ -60907,9 +60943,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/futex.h linux-2.6.32.48/include/a
17191 {
17192 return -ENOSYS;
17193 }
17194 -diff -urNp linux-2.6.32.48/include/asm-generic/int-l64.h linux-2.6.32.48/include/asm-generic/int-l64.h
17195 ---- linux-2.6.32.48/include/asm-generic/int-l64.h 2009-12-02 22:51:21.000000000 -0500
17196 -+++ linux-2.6.32.48/include/asm-generic/int-l64.h 2011-11-12 12:46:47.000000000 -0500
17197 +diff -urNp linux-2.6.32.46/include/asm-generic/int-l64.h linux-2.6.32.46/include/asm-generic/int-l64.h
17198 +--- linux-2.6.32.46/include/asm-generic/int-l64.h 2011-03-27 14:31:47.000000000 -0400
17199 ++++ linux-2.6.32.46/include/asm-generic/int-l64.h 2011-04-17 15:56:46.000000000 -0400
17200 @@ -46,6 +46,8 @@ typedef unsigned int u32;
17201 typedef signed long s64;
17202 typedef unsigned long u64;
17203 @@ -60919,9 +60955,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/int-l64.h linux-2.6.32.48/include
17204 #define S8_C(x) x
17205 #define U8_C(x) x ## U
17206 #define S16_C(x) x
17207 -diff -urNp linux-2.6.32.48/include/asm-generic/int-ll64.h linux-2.6.32.48/include/asm-generic/int-ll64.h
17208 ---- linux-2.6.32.48/include/asm-generic/int-ll64.h 2009-12-02 22:51:21.000000000 -0500
17209 -+++ linux-2.6.32.48/include/asm-generic/int-ll64.h 2011-11-12 12:46:47.000000000 -0500
17210 +diff -urNp linux-2.6.32.46/include/asm-generic/int-ll64.h linux-2.6.32.46/include/asm-generic/int-ll64.h
17211 +--- linux-2.6.32.46/include/asm-generic/int-ll64.h 2011-03-27 14:31:47.000000000 -0400
17212 ++++ linux-2.6.32.46/include/asm-generic/int-ll64.h 2011-04-17 15:56:46.000000000 -0400
17213 @@ -51,6 +51,8 @@ typedef unsigned int u32;
17214 typedef signed long long s64;
17215 typedef unsigned long long u64;
17216 @@ -60931,9 +60967,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/int-ll64.h linux-2.6.32.48/includ
17217 #define S8_C(x) x
17218 #define U8_C(x) x ## U
17219 #define S16_C(x) x
17220 -diff -urNp linux-2.6.32.48/include/asm-generic/kmap_types.h linux-2.6.32.48/include/asm-generic/kmap_types.h
17221 ---- linux-2.6.32.48/include/asm-generic/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
17222 -+++ linux-2.6.32.48/include/asm-generic/kmap_types.h 2011-11-12 12:46:47.000000000 -0500
17223 +diff -urNp linux-2.6.32.46/include/asm-generic/kmap_types.h linux-2.6.32.46/include/asm-generic/kmap_types.h
17224 +--- linux-2.6.32.46/include/asm-generic/kmap_types.h 2011-03-27 14:31:47.000000000 -0400
17225 ++++ linux-2.6.32.46/include/asm-generic/kmap_types.h 2011-04-17 15:56:46.000000000 -0400
17226 @@ -28,7 +28,8 @@ KMAP_D(15) KM_UML_USERCOPY,
17227 KMAP_D(16) KM_IRQ_PTE,
17228 KMAP_D(17) KM_NMI,
17229 @@ -60944,9 +60980,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/kmap_types.h linux-2.6.32.48/incl
17230 };
17231
17232 #undef KMAP_D
17233 -diff -urNp linux-2.6.32.48/include/asm-generic/pgtable.h linux-2.6.32.48/include/asm-generic/pgtable.h
17234 ---- linux-2.6.32.48/include/asm-generic/pgtable.h 2009-12-02 22:51:21.000000000 -0500
17235 -+++ linux-2.6.32.48/include/asm-generic/pgtable.h 2011-11-12 12:46:47.000000000 -0500
17236 +diff -urNp linux-2.6.32.46/include/asm-generic/pgtable.h linux-2.6.32.46/include/asm-generic/pgtable.h
17237 +--- linux-2.6.32.46/include/asm-generic/pgtable.h 2011-03-27 14:31:47.000000000 -0400
17238 ++++ linux-2.6.32.46/include/asm-generic/pgtable.h 2011-04-17 15:56:46.000000000 -0400
17239 @@ -344,6 +344,14 @@ extern void untrack_pfn_vma(struct vm_ar
17240 unsigned long size);
17241 #endif
17242 @@ -60962,9 +60998,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/pgtable.h linux-2.6.32.48/include
17243 #endif /* !__ASSEMBLY__ */
17244
17245 #endif /* _ASM_GENERIC_PGTABLE_H */
17246 -diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h
17247 ---- linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h 2009-12-02 22:51:21.000000000 -0500
17248 -+++ linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h 2011-11-12 12:46:47.000000000 -0500
17249 +diff -urNp linux-2.6.32.46/include/asm-generic/pgtable-nopmd.h linux-2.6.32.46/include/asm-generic/pgtable-nopmd.h
17250 +--- linux-2.6.32.46/include/asm-generic/pgtable-nopmd.h 2011-03-27 14:31:47.000000000 -0400
17251 ++++ linux-2.6.32.46/include/asm-generic/pgtable-nopmd.h 2011-04-17 15:56:46.000000000 -0400
17252 @@ -1,14 +1,19 @@
17253 #ifndef _PGTABLE_NOPMD_H
17254 #define _PGTABLE_NOPMD_H
17255 @@ -61001,9 +61037,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h linux-2.6.32.48/i
17256 /*
17257 * The "pud_xxx()" functions here are trivial for a folded two-level
17258 * setup: the pmd is never bad, and a pmd always exists (as it's folded
17259 -diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopud.h linux-2.6.32.48/include/asm-generic/pgtable-nopud.h
17260 ---- linux-2.6.32.48/include/asm-generic/pgtable-nopud.h 2009-12-02 22:51:21.000000000 -0500
17261 -+++ linux-2.6.32.48/include/asm-generic/pgtable-nopud.h 2011-11-12 12:46:47.000000000 -0500
17262 +diff -urNp linux-2.6.32.46/include/asm-generic/pgtable-nopud.h linux-2.6.32.46/include/asm-generic/pgtable-nopud.h
17263 +--- linux-2.6.32.46/include/asm-generic/pgtable-nopud.h 2011-03-27 14:31:47.000000000 -0400
17264 ++++ linux-2.6.32.46/include/asm-generic/pgtable-nopud.h 2011-04-17 15:56:46.000000000 -0400
17265 @@ -1,10 +1,15 @@
17266 #ifndef _PGTABLE_NOPUD_H
17267 #define _PGTABLE_NOPUD_H
17268 @@ -61034,9 +61070,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopud.h linux-2.6.32.48/i
17269 /*
17270 * The "pgd_xxx()" functions here are trivial for a folded two-level
17271 * setup: the pud is never bad, and a pud always exists (as it's folded
17272 -diff -urNp linux-2.6.32.48/include/asm-generic/vmlinux.lds.h linux-2.6.32.48/include/asm-generic/vmlinux.lds.h
17273 ---- linux-2.6.32.48/include/asm-generic/vmlinux.lds.h 2009-12-02 22:51:21.000000000 -0500
17274 -+++ linux-2.6.32.48/include/asm-generic/vmlinux.lds.h 2011-11-12 12:46:47.000000000 -0500
17275 +diff -urNp linux-2.6.32.46/include/asm-generic/vmlinux.lds.h linux-2.6.32.46/include/asm-generic/vmlinux.lds.h
17276 +--- linux-2.6.32.46/include/asm-generic/vmlinux.lds.h 2011-03-27 14:31:47.000000000 -0400
17277 ++++ linux-2.6.32.46/include/asm-generic/vmlinux.lds.h 2011-04-17 15:56:46.000000000 -0400
17278 @@ -199,6 +199,7 @@
17279 .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
17280 VMLINUX_SYMBOL(__start_rodata) = .; \
17281 @@ -61075,9 +61111,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/vmlinux.lds.h linux-2.6.32.48/inc
17282
17283 /**
17284 * PERCPU - define output section for percpu area, simple version
17285 -diff -urNp linux-2.6.32.48/include/drm/drm_crtc_helper.h linux-2.6.32.48/include/drm/drm_crtc_helper.h
17286 ---- linux-2.6.32.48/include/drm/drm_crtc_helper.h 2009-12-02 22:51:21.000000000 -0500
17287 -+++ linux-2.6.32.48/include/drm/drm_crtc_helper.h 2011-11-12 12:46:47.000000000 -0500
17288 +diff -urNp linux-2.6.32.46/include/drm/drm_crtc_helper.h linux-2.6.32.46/include/drm/drm_crtc_helper.h
17289 +--- linux-2.6.32.46/include/drm/drm_crtc_helper.h 2011-03-27 14:31:47.000000000 -0400
17290 ++++ linux-2.6.32.46/include/drm/drm_crtc_helper.h 2011-08-05 20:33:55.000000000 -0400
17291 @@ -64,7 +64,7 @@ struct drm_crtc_helper_funcs {
17292
17293 /* reload the current crtc LUT */
17294 @@ -61096,9 +61132,9 @@ diff -urNp linux-2.6.32.48/include/drm/drm_crtc_helper.h linux-2.6.32.48/include
17295
17296 struct drm_connector_helper_funcs {
17297 int (*get_modes)(struct drm_connector *connector);
17298 -diff -urNp linux-2.6.32.48/include/drm/drmP.h linux-2.6.32.48/include/drm/drmP.h
17299 ---- linux-2.6.32.48/include/drm/drmP.h 2011-11-12 12:44:30.000000000 -0500
17300 -+++ linux-2.6.32.48/include/drm/drmP.h 2011-11-12 12:46:47.000000000 -0500
17301 +diff -urNp linux-2.6.32.46/include/drm/drmP.h linux-2.6.32.46/include/drm/drmP.h
17302 +--- linux-2.6.32.46/include/drm/drmP.h 2011-03-27 14:31:47.000000000 -0400
17303 ++++ linux-2.6.32.46/include/drm/drmP.h 2011-04-17 15:56:46.000000000 -0400
17304 @@ -71,6 +71,7 @@
17305 #include <linux/workqueue.h>
17306 #include <linux/poll.h>
17307 @@ -61158,9 +61194,9 @@ diff -urNp linux-2.6.32.48/include/drm/drmP.h linux-2.6.32.48/include/drm/drmP.h
17308 uint32_t gtt_total;
17309 uint32_t invalidate_domains; /* domains pending invalidation */
17310 uint32_t flush_domains; /* domains pending flush */
17311 -diff -urNp linux-2.6.32.48/include/drm/ttm/ttm_memory.h linux-2.6.32.48/include/drm/ttm/ttm_memory.h
17312 ---- linux-2.6.32.48/include/drm/ttm/ttm_memory.h 2011-11-12 12:44:30.000000000 -0500
17313 -+++ linux-2.6.32.48/include/drm/ttm/ttm_memory.h 2011-11-12 12:46:47.000000000 -0500
17314 +diff -urNp linux-2.6.32.46/include/drm/ttm/ttm_memory.h linux-2.6.32.46/include/drm/ttm/ttm_memory.h
17315 +--- linux-2.6.32.46/include/drm/ttm/ttm_memory.h 2011-03-27 14:31:47.000000000 -0400
17316 ++++ linux-2.6.32.46/include/drm/ttm/ttm_memory.h 2011-08-05 20:33:55.000000000 -0400
17317 @@ -47,7 +47,7 @@
17318
17319 struct ttm_mem_shrink {
17320 @@ -61170,9 +61206,9 @@ diff -urNp linux-2.6.32.48/include/drm/ttm/ttm_memory.h linux-2.6.32.48/include/
17321
17322 /**
17323 * struct ttm_mem_global - Global memory accounting structure.
17324 -diff -urNp linux-2.6.32.48/include/linux/a.out.h linux-2.6.32.48/include/linux/a.out.h
17325 ---- linux-2.6.32.48/include/linux/a.out.h 2009-12-02 22:51:21.000000000 -0500
17326 -+++ linux-2.6.32.48/include/linux/a.out.h 2011-11-12 12:46:47.000000000 -0500
17327 +diff -urNp linux-2.6.32.46/include/linux/a.out.h linux-2.6.32.46/include/linux/a.out.h
17328 +--- linux-2.6.32.46/include/linux/a.out.h 2011-03-27 14:31:47.000000000 -0400
17329 ++++ linux-2.6.32.46/include/linux/a.out.h 2011-04-17 15:56:46.000000000 -0400
17330 @@ -39,6 +39,14 @@ enum machine_type {
17331 M_MIPS2 = 152 /* MIPS R6000/R4000 binary */
17332 };
17333 @@ -61188,9 +61224,9 @@ diff -urNp linux-2.6.32.48/include/linux/a.out.h linux-2.6.32.48/include/linux/a
17334 #if !defined (N_MAGIC)
17335 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
17336 #endif
17337 -diff -urNp linux-2.6.32.48/include/linux/atmdev.h linux-2.6.32.48/include/linux/atmdev.h
17338 ---- linux-2.6.32.48/include/linux/atmdev.h 2009-12-02 22:51:21.000000000 -0500
17339 -+++ linux-2.6.32.48/include/linux/atmdev.h 2011-11-12 12:46:47.000000000 -0500
17340 +diff -urNp linux-2.6.32.46/include/linux/atmdev.h linux-2.6.32.46/include/linux/atmdev.h
17341 +--- linux-2.6.32.46/include/linux/atmdev.h 2011-03-27 14:31:47.000000000 -0400
17342 ++++ linux-2.6.32.46/include/linux/atmdev.h 2011-04-17 15:56:46.000000000 -0400
17343 @@ -237,7 +237,7 @@ struct compat_atm_iobuf {
17344 #endif
17345
17346 @@ -61200,9 +61236,9 @@ diff -urNp linux-2.6.32.48/include/linux/atmdev.h linux-2.6.32.48/include/linux/
17347 __AAL_STAT_ITEMS
17348 #undef __HANDLE_ITEM
17349 };
17350 -diff -urNp linux-2.6.32.48/include/linux/backlight.h linux-2.6.32.48/include/linux/backlight.h
17351 ---- linux-2.6.32.48/include/linux/backlight.h 2009-12-02 22:51:21.000000000 -0500
17352 -+++ linux-2.6.32.48/include/linux/backlight.h 2011-11-12 12:46:47.000000000 -0500
17353 +diff -urNp linux-2.6.32.46/include/linux/backlight.h linux-2.6.32.46/include/linux/backlight.h
17354 +--- linux-2.6.32.46/include/linux/backlight.h 2011-03-27 14:31:47.000000000 -0400
17355 ++++ linux-2.6.32.46/include/linux/backlight.h 2011-04-17 15:56:46.000000000 -0400
17356 @@ -36,18 +36,18 @@ struct backlight_device;
17357 struct fb_info;
17358
17359 @@ -61244,9 +61280,9 @@ diff -urNp linux-2.6.32.48/include/linux/backlight.h linux-2.6.32.48/include/lin
17360 extern void backlight_device_unregister(struct backlight_device *bd);
17361 extern void backlight_force_update(struct backlight_device *bd,
17362 enum backlight_update_reason reason);
17363 -diff -urNp linux-2.6.32.48/include/linux/binfmts.h linux-2.6.32.48/include/linux/binfmts.h
17364 ---- linux-2.6.32.48/include/linux/binfmts.h 2011-11-12 12:44:30.000000000 -0500
17365 -+++ linux-2.6.32.48/include/linux/binfmts.h 2011-11-12 12:46:47.000000000 -0500
17366 +diff -urNp linux-2.6.32.46/include/linux/binfmts.h linux-2.6.32.46/include/linux/binfmts.h
17367 +--- linux-2.6.32.46/include/linux/binfmts.h 2011-04-17 17:00:52.000000000 -0400
17368 ++++ linux-2.6.32.46/include/linux/binfmts.h 2011-04-17 15:56:46.000000000 -0400
17369 @@ -83,6 +83,7 @@ struct linux_binfmt {
17370 int (*load_binary)(struct linux_binprm *, struct pt_regs * regs);
17371 int (*load_shlib)(struct file *);
17372 @@ -61255,9 +61291,9 @@ diff -urNp linux-2.6.32.48/include/linux/binfmts.h linux-2.6.32.48/include/linux
17373 unsigned long min_coredump; /* minimal dump size */
17374 int hasvdso;
17375 };
17376 -diff -urNp linux-2.6.32.48/include/linux/blkdev.h linux-2.6.32.48/include/linux/blkdev.h
17377 ---- linux-2.6.32.48/include/linux/blkdev.h 2011-11-12 12:44:30.000000000 -0500
17378 -+++ linux-2.6.32.48/include/linux/blkdev.h 2011-11-12 12:46:47.000000000 -0500
17379 +diff -urNp linux-2.6.32.46/include/linux/blkdev.h linux-2.6.32.46/include/linux/blkdev.h
17380 +--- linux-2.6.32.46/include/linux/blkdev.h 2011-03-27 14:31:47.000000000 -0400
17381 ++++ linux-2.6.32.46/include/linux/blkdev.h 2011-08-26 20:27:21.000000000 -0400
17382 @@ -1278,7 +1278,7 @@ struct block_device_operations {
17383 int (*revalidate_disk) (struct gendisk *);
17384 int (*getgeo)(struct block_device *, struct hd_geometry *);
17385 @@ -61267,9 +61303,9 @@ diff -urNp linux-2.6.32.48/include/linux/blkdev.h linux-2.6.32.48/include/linux/
17386
17387 extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int,
17388 unsigned long);
17389 -diff -urNp linux-2.6.32.48/include/linux/blktrace_api.h linux-2.6.32.48/include/linux/blktrace_api.h
17390 ---- linux-2.6.32.48/include/linux/blktrace_api.h 2009-12-02 22:51:21.000000000 -0500
17391 -+++ linux-2.6.32.48/include/linux/blktrace_api.h 2011-11-12 12:46:47.000000000 -0500
17392 +diff -urNp linux-2.6.32.46/include/linux/blktrace_api.h linux-2.6.32.46/include/linux/blktrace_api.h
17393 +--- linux-2.6.32.46/include/linux/blktrace_api.h 2011-03-27 14:31:47.000000000 -0400
17394 ++++ linux-2.6.32.46/include/linux/blktrace_api.h 2011-05-04 17:56:28.000000000 -0400
17395 @@ -160,7 +160,7 @@ struct blk_trace {
17396 struct dentry *dir;
17397 struct dentry *dropped_file;
17398 @@ -61279,9 +61315,9 @@ diff -urNp linux-2.6.32.48/include/linux/blktrace_api.h linux-2.6.32.48/include/
17399 };
17400
17401 extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
17402 -diff -urNp linux-2.6.32.48/include/linux/byteorder/little_endian.h linux-2.6.32.48/include/linux/byteorder/little_endian.h
17403 ---- linux-2.6.32.48/include/linux/byteorder/little_endian.h 2009-12-02 22:51:21.000000000 -0500
17404 -+++ linux-2.6.32.48/include/linux/byteorder/little_endian.h 2011-11-12 12:46:47.000000000 -0500
17405 +diff -urNp linux-2.6.32.46/include/linux/byteorder/little_endian.h linux-2.6.32.46/include/linux/byteorder/little_endian.h
17406 +--- linux-2.6.32.46/include/linux/byteorder/little_endian.h 2011-03-27 14:31:47.000000000 -0400
17407 ++++ linux-2.6.32.46/include/linux/byteorder/little_endian.h 2011-04-17 15:56:46.000000000 -0400
17408 @@ -42,51 +42,51 @@
17409
17410 static inline __le64 __cpu_to_le64p(const __u64 *p)
17411 @@ -61346,9 +61382,9 @@ diff -urNp linux-2.6.32.48/include/linux/byteorder/little_endian.h linux-2.6.32.
17412 }
17413 #define __cpu_to_le64s(x) do { (void)(x); } while (0)
17414 #define __le64_to_cpus(x) do { (void)(x); } while (0)
17415 -diff -urNp linux-2.6.32.48/include/linux/cache.h linux-2.6.32.48/include/linux/cache.h
17416 ---- linux-2.6.32.48/include/linux/cache.h 2009-12-02 22:51:21.000000000 -0500
17417 -+++ linux-2.6.32.48/include/linux/cache.h 2011-11-12 12:46:47.000000000 -0500
17418 +diff -urNp linux-2.6.32.46/include/linux/cache.h linux-2.6.32.46/include/linux/cache.h
17419 +--- linux-2.6.32.46/include/linux/cache.h 2011-03-27 14:31:47.000000000 -0400
17420 ++++ linux-2.6.32.46/include/linux/cache.h 2011-04-17 15:56:46.000000000 -0400
17421 @@ -16,6 +16,10 @@
17422 #define __read_mostly
17423 #endif
17424 @@ -61360,9 +61396,9 @@ diff -urNp linux-2.6.32.48/include/linux/cache.h linux-2.6.32.48/include/linux/c
17425 #ifndef ____cacheline_aligned
17426 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
17427 #endif
17428 -diff -urNp linux-2.6.32.48/include/linux/capability.h linux-2.6.32.48/include/linux/capability.h
17429 ---- linux-2.6.32.48/include/linux/capability.h 2009-12-02 22:51:21.000000000 -0500
17430 -+++ linux-2.6.32.48/include/linux/capability.h 2011-11-12 12:46:47.000000000 -0500
17431 +diff -urNp linux-2.6.32.46/include/linux/capability.h linux-2.6.32.46/include/linux/capability.h
17432 +--- linux-2.6.32.46/include/linux/capability.h 2011-03-27 14:31:47.000000000 -0400
17433 ++++ linux-2.6.32.46/include/linux/capability.h 2011-04-17 15:56:46.000000000 -0400
17434 @@ -563,6 +563,7 @@ extern const kernel_cap_t __cap_init_eff
17435 (security_real_capable_noaudit((t), (cap)) == 0)
17436
17437 @@ -61371,9 +61407,9 @@ diff -urNp linux-2.6.32.48/include/linux/capability.h linux-2.6.32.48/include/li
17438
17439 /* audit system wants to get cap info from files as well */
17440 struct dentry;
17441 -diff -urNp linux-2.6.32.48/include/linux/compiler-gcc4.h linux-2.6.32.48/include/linux/compiler-gcc4.h
17442 ---- linux-2.6.32.48/include/linux/compiler-gcc4.h 2009-12-02 22:51:21.000000000 -0500
17443 -+++ linux-2.6.32.48/include/linux/compiler-gcc4.h 2011-11-12 12:46:47.000000000 -0500
17444 +diff -urNp linux-2.6.32.46/include/linux/compiler-gcc4.h linux-2.6.32.46/include/linux/compiler-gcc4.h
17445 +--- linux-2.6.32.46/include/linux/compiler-gcc4.h 2011-03-27 14:31:47.000000000 -0400
17446 ++++ linux-2.6.32.46/include/linux/compiler-gcc4.h 2011-08-26 20:19:09.000000000 -0400
17447 @@ -36,4 +36,16 @@
17448 the kernel context */
17449 #define __cold __attribute__((__cold__))
17450 @@ -61391,9 +61427,9 @@ diff -urNp linux-2.6.32.48/include/linux/compiler-gcc4.h linux-2.6.32.48/include
17451 +#endif
17452 +
17453 #endif
17454 -diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linux/compiler.h
17455 ---- linux-2.6.32.48/include/linux/compiler.h 2009-12-02 22:51:21.000000000 -0500
17456 -+++ linux-2.6.32.48/include/linux/compiler.h 2011-11-12 12:46:47.000000000 -0500
17457 +diff -urNp linux-2.6.32.46/include/linux/compiler.h linux-2.6.32.46/include/linux/compiler.h
17458 +--- linux-2.6.32.46/include/linux/compiler.h 2011-03-27 14:31:47.000000000 -0400
17459 ++++ linux-2.6.32.46/include/linux/compiler.h 2011-10-06 09:37:14.000000000 -0400
17460 @@ -5,11 +5,14 @@
17461
17462 #ifdef __CHECKER__
17463 @@ -61491,9 +61527,9 @@ diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linu
17464 +#define ACCESS_ONCE_RW(x) (*(volatile typeof(x) *)&(x))
17465
17466 #endif /* __LINUX_COMPILER_H */
17467 -diff -urNp linux-2.6.32.48/include/linux/crypto.h linux-2.6.32.48/include/linux/crypto.h
17468 ---- linux-2.6.32.48/include/linux/crypto.h 2009-12-02 22:51:21.000000000 -0500
17469 -+++ linux-2.6.32.48/include/linux/crypto.h 2011-11-12 12:46:47.000000000 -0500
17470 +diff -urNp linux-2.6.32.46/include/linux/crypto.h linux-2.6.32.46/include/linux/crypto.h
17471 +--- linux-2.6.32.46/include/linux/crypto.h 2011-03-27 14:31:47.000000000 -0400
17472 ++++ linux-2.6.32.46/include/linux/crypto.h 2011-08-05 20:33:55.000000000 -0400
17473 @@ -394,7 +394,7 @@ struct cipher_tfm {
17474 const u8 *key, unsigned int keylen);
17475 void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
17476 @@ -61519,9 +61555,9 @@ diff -urNp linux-2.6.32.48/include/linux/crypto.h linux-2.6.32.48/include/linux/
17477
17478 #define crt_ablkcipher crt_u.ablkcipher
17479 #define crt_aead crt_u.aead
17480 -diff -urNp linux-2.6.32.48/include/linux/dcache.h linux-2.6.32.48/include/linux/dcache.h
17481 ---- linux-2.6.32.48/include/linux/dcache.h 2009-12-02 22:51:21.000000000 -0500
17482 -+++ linux-2.6.32.48/include/linux/dcache.h 2011-11-12 12:46:47.000000000 -0500
17483 +diff -urNp linux-2.6.32.46/include/linux/dcache.h linux-2.6.32.46/include/linux/dcache.h
17484 +--- linux-2.6.32.46/include/linux/dcache.h 2011-03-27 14:31:47.000000000 -0400
17485 ++++ linux-2.6.32.46/include/linux/dcache.h 2011-04-23 13:34:46.000000000 -0400
17486 @@ -119,6 +119,8 @@ struct dentry {
17487 unsigned char d_iname[DNAME_INLINE_LEN_MIN]; /* small names */
17488 };
17489 @@ -61531,9 +61567,9 @@ diff -urNp linux-2.6.32.48/include/linux/dcache.h linux-2.6.32.48/include/linux/
17490 /*
17491 * dentry->d_lock spinlock nesting subclasses:
17492 *
17493 -diff -urNp linux-2.6.32.48/include/linux/decompress/mm.h linux-2.6.32.48/include/linux/decompress/mm.h
17494 ---- linux-2.6.32.48/include/linux/decompress/mm.h 2011-11-12 12:44:30.000000000 -0500
17495 -+++ linux-2.6.32.48/include/linux/decompress/mm.h 2011-11-12 12:46:47.000000000 -0500
17496 +diff -urNp linux-2.6.32.46/include/linux/decompress/mm.h linux-2.6.32.46/include/linux/decompress/mm.h
17497 +--- linux-2.6.32.46/include/linux/decompress/mm.h 2011-03-27 14:31:47.000000000 -0400
17498 ++++ linux-2.6.32.46/include/linux/decompress/mm.h 2011-04-17 15:56:46.000000000 -0400
17499 @@ -78,7 +78,7 @@ static void free(void *where)
17500 * warnings when not needed (indeed large_malloc / large_free are not
17501 * needed by inflate */
17502 @@ -61543,9 +61579,9 @@ diff -urNp linux-2.6.32.48/include/linux/decompress/mm.h linux-2.6.32.48/include
17503 #define free(a) kfree(a)
17504
17505 #define large_malloc(a) vmalloc(a)
17506 -diff -urNp linux-2.6.32.48/include/linux/dma-mapping.h linux-2.6.32.48/include/linux/dma-mapping.h
17507 ---- linux-2.6.32.48/include/linux/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
17508 -+++ linux-2.6.32.48/include/linux/dma-mapping.h 2011-11-12 12:46:47.000000000 -0500
17509 +diff -urNp linux-2.6.32.46/include/linux/dma-mapping.h linux-2.6.32.46/include/linux/dma-mapping.h
17510 +--- linux-2.6.32.46/include/linux/dma-mapping.h 2011-03-27 14:31:47.000000000 -0400
17511 ++++ linux-2.6.32.46/include/linux/dma-mapping.h 2011-08-26 20:19:09.000000000 -0400
17512 @@ -16,51 +16,51 @@ enum dma_data_direction {
17513 };
17514
17515 @@ -61613,9 +61649,9 @@ diff -urNp linux-2.6.32.48/include/linux/dma-mapping.h linux-2.6.32.48/include/l
17516
17517 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
17518
17519 -diff -urNp linux-2.6.32.48/include/linux/dst.h linux-2.6.32.48/include/linux/dst.h
17520 ---- linux-2.6.32.48/include/linux/dst.h 2009-12-02 22:51:21.000000000 -0500
17521 -+++ linux-2.6.32.48/include/linux/dst.h 2011-11-12 12:46:47.000000000 -0500
17522 +diff -urNp linux-2.6.32.46/include/linux/dst.h linux-2.6.32.46/include/linux/dst.h
17523 +--- linux-2.6.32.46/include/linux/dst.h 2011-03-27 14:31:47.000000000 -0400
17524 ++++ linux-2.6.32.46/include/linux/dst.h 2011-04-17 15:56:46.000000000 -0400
17525 @@ -380,7 +380,7 @@ struct dst_node
17526 struct thread_pool *pool;
17527
17528 @@ -61625,9 +61661,9 @@ diff -urNp linux-2.6.32.48/include/linux/dst.h linux-2.6.32.48/include/linux/dst
17529
17530 /*
17531 * How frequently and how many times transaction
17532 -diff -urNp linux-2.6.32.48/include/linux/elf.h linux-2.6.32.48/include/linux/elf.h
17533 ---- linux-2.6.32.48/include/linux/elf.h 2009-12-02 22:51:21.000000000 -0500
17534 -+++ linux-2.6.32.48/include/linux/elf.h 2011-11-12 12:46:47.000000000 -0500
17535 +diff -urNp linux-2.6.32.46/include/linux/elf.h linux-2.6.32.46/include/linux/elf.h
17536 +--- linux-2.6.32.46/include/linux/elf.h 2011-03-27 14:31:47.000000000 -0400
17537 ++++ linux-2.6.32.46/include/linux/elf.h 2011-04-17 15:56:46.000000000 -0400
17538 @@ -49,6 +49,17 @@ typedef __s64 Elf64_Sxword;
17539 #define PT_GNU_EH_FRAME 0x6474e550
17540
17541 @@ -61700,9 +61736,9 @@ diff -urNp linux-2.6.32.48/include/linux/elf.h linux-2.6.32.48/include/linux/elf
17542
17543 #endif
17544
17545 -diff -urNp linux-2.6.32.48/include/linux/fscache-cache.h linux-2.6.32.48/include/linux/fscache-cache.h
17546 ---- linux-2.6.32.48/include/linux/fscache-cache.h 2009-12-02 22:51:21.000000000 -0500
17547 -+++ linux-2.6.32.48/include/linux/fscache-cache.h 2011-11-12 12:46:47.000000000 -0500
17548 +diff -urNp linux-2.6.32.46/include/linux/fscache-cache.h linux-2.6.32.46/include/linux/fscache-cache.h
17549 +--- linux-2.6.32.46/include/linux/fscache-cache.h 2011-03-27 14:31:47.000000000 -0400
17550 ++++ linux-2.6.32.46/include/linux/fscache-cache.h 2011-05-04 17:56:28.000000000 -0400
17551 @@ -116,7 +116,7 @@ struct fscache_operation {
17552 #endif
17553 };
17554 @@ -61721,9 +61757,9 @@ diff -urNp linux-2.6.32.48/include/linux/fscache-cache.h linux-2.6.32.48/include
17555 op->release = release;
17556 INIT_LIST_HEAD(&op->pend_link);
17557 fscache_set_op_state(op, "Init");
17558 -diff -urNp linux-2.6.32.48/include/linux/fs.h linux-2.6.32.48/include/linux/fs.h
17559 ---- linux-2.6.32.48/include/linux/fs.h 2011-11-12 12:44:30.000000000 -0500
17560 -+++ linux-2.6.32.48/include/linux/fs.h 2011-11-12 12:46:47.000000000 -0500
17561 +diff -urNp linux-2.6.32.46/include/linux/fs.h linux-2.6.32.46/include/linux/fs.h
17562 +--- linux-2.6.32.46/include/linux/fs.h 2011-07-13 17:23:04.000000000 -0400
17563 ++++ linux-2.6.32.46/include/linux/fs.h 2011-08-26 20:19:09.000000000 -0400
17564 @@ -90,6 +90,11 @@ struct inodes_stat_t {
17565 /* Expect random access pattern */
17566 #define FMODE_RANDOM ((__force fmode_t)4096)
17567 @@ -61895,9 +61931,9 @@ diff -urNp linux-2.6.32.48/include/linux/fs.h linux-2.6.32.48/include/linux/fs.h
17568 };
17569
17570 /*
17571 -diff -urNp linux-2.6.32.48/include/linux/fs_struct.h linux-2.6.32.48/include/linux/fs_struct.h
17572 ---- linux-2.6.32.48/include/linux/fs_struct.h 2009-12-02 22:51:21.000000000 -0500
17573 -+++ linux-2.6.32.48/include/linux/fs_struct.h 2011-11-12 12:46:47.000000000 -0500
17574 +diff -urNp linux-2.6.32.46/include/linux/fs_struct.h linux-2.6.32.46/include/linux/fs_struct.h
17575 +--- linux-2.6.32.46/include/linux/fs_struct.h 2011-03-27 14:31:47.000000000 -0400
17576 ++++ linux-2.6.32.46/include/linux/fs_struct.h 2011-04-17 15:56:46.000000000 -0400
17577 @@ -4,7 +4,7 @@
17578 #include <linux/path.h>
17579
17580 @@ -61907,9 +61943,9 @@ diff -urNp linux-2.6.32.48/include/linux/fs_struct.h linux-2.6.32.48/include/lin
17581 rwlock_t lock;
17582 int umask;
17583 int in_exec;
17584 -diff -urNp linux-2.6.32.48/include/linux/ftrace_event.h linux-2.6.32.48/include/linux/ftrace_event.h
17585 ---- linux-2.6.32.48/include/linux/ftrace_event.h 2009-12-02 22:51:21.000000000 -0500
17586 -+++ linux-2.6.32.48/include/linux/ftrace_event.h 2011-11-12 12:46:47.000000000 -0500
17587 +diff -urNp linux-2.6.32.46/include/linux/ftrace_event.h linux-2.6.32.46/include/linux/ftrace_event.h
17588 +--- linux-2.6.32.46/include/linux/ftrace_event.h 2011-03-27 14:31:47.000000000 -0400
17589 ++++ linux-2.6.32.46/include/linux/ftrace_event.h 2011-05-04 17:56:28.000000000 -0400
17590 @@ -163,7 +163,7 @@ extern int trace_define_field(struct ftr
17591 int filter_type);
17592 extern int trace_define_common_fields(struct ftrace_event_call *call);
17593 @@ -61919,9 +61955,9 @@ diff -urNp linux-2.6.32.48/include/linux/ftrace_event.h linux-2.6.32.48/include/
17594
17595 int trace_set_clr_event(const char *system, const char *event, int set);
17596
17597 -diff -urNp linux-2.6.32.48/include/linux/genhd.h linux-2.6.32.48/include/linux/genhd.h
17598 ---- linux-2.6.32.48/include/linux/genhd.h 2009-12-02 22:51:21.000000000 -0500
17599 -+++ linux-2.6.32.48/include/linux/genhd.h 2011-11-12 12:46:47.000000000 -0500
17600 +diff -urNp linux-2.6.32.46/include/linux/genhd.h linux-2.6.32.46/include/linux/genhd.h
17601 +--- linux-2.6.32.46/include/linux/genhd.h 2011-03-27 14:31:47.000000000 -0400
17602 ++++ linux-2.6.32.46/include/linux/genhd.h 2011-04-17 15:56:46.000000000 -0400
17603 @@ -161,7 +161,7 @@ struct gendisk {
17604
17605 struct timer_rand_state *random;
17606 @@ -61931,9 +61967,9 @@ diff -urNp linux-2.6.32.48/include/linux/genhd.h linux-2.6.32.48/include/linux/g
17607 struct work_struct async_notify;
17608 #ifdef CONFIG_BLK_DEV_INTEGRITY
17609 struct blk_integrity *integrity;
17610 -diff -urNp linux-2.6.32.48/include/linux/gracl.h linux-2.6.32.48/include/linux/gracl.h
17611 ---- linux-2.6.32.48/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500
17612 -+++ linux-2.6.32.48/include/linux/gracl.h 2011-11-12 12:46:47.000000000 -0500
17613 +diff -urNp linux-2.6.32.46/include/linux/gracl.h linux-2.6.32.46/include/linux/gracl.h
17614 +--- linux-2.6.32.46/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500
17615 ++++ linux-2.6.32.46/include/linux/gracl.h 2011-04-17 15:56:46.000000000 -0400
17616 @@ -0,0 +1,317 @@
17617 +#ifndef GR_ACL_H
17618 +#define GR_ACL_H
17619 @@ -62252,9 +62288,9 @@ diff -urNp linux-2.6.32.48/include/linux/gracl.h linux-2.6.32.48/include/linux/g
17620 +
17621 +#endif
17622 +
17623 -diff -urNp linux-2.6.32.48/include/linux/gralloc.h linux-2.6.32.48/include/linux/gralloc.h
17624 ---- linux-2.6.32.48/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500
17625 -+++ linux-2.6.32.48/include/linux/gralloc.h 2011-11-12 12:46:47.000000000 -0500
17626 +diff -urNp linux-2.6.32.46/include/linux/gralloc.h linux-2.6.32.46/include/linux/gralloc.h
17627 +--- linux-2.6.32.46/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500
17628 ++++ linux-2.6.32.46/include/linux/gralloc.h 2011-04-17 15:56:46.000000000 -0400
17629 @@ -0,0 +1,9 @@
17630 +#ifndef __GRALLOC_H
17631 +#define __GRALLOC_H
17632 @@ -62265,9 +62301,9 @@ diff -urNp linux-2.6.32.48/include/linux/gralloc.h linux-2.6.32.48/include/linux
17633 +void *acl_alloc_num(unsigned long num, unsigned long len);
17634 +
17635 +#endif
17636 -diff -urNp linux-2.6.32.48/include/linux/grdefs.h linux-2.6.32.48/include/linux/grdefs.h
17637 ---- linux-2.6.32.48/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500
17638 -+++ linux-2.6.32.48/include/linux/grdefs.h 2011-11-12 12:46:47.000000000 -0500
17639 +diff -urNp linux-2.6.32.46/include/linux/grdefs.h linux-2.6.32.46/include/linux/grdefs.h
17640 +--- linux-2.6.32.46/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500
17641 ++++ linux-2.6.32.46/include/linux/grdefs.h 2011-06-11 16:20:26.000000000 -0400
17642 @@ -0,0 +1,140 @@
17643 +#ifndef GRDEFS_H
17644 +#define GRDEFS_H
17645 @@ -62409,9 +62445,9 @@ diff -urNp linux-2.6.32.48/include/linux/grdefs.h linux-2.6.32.48/include/linux/
17646 +};
17647 +
17648 +#endif
17649 -diff -urNp linux-2.6.32.48/include/linux/grinternal.h linux-2.6.32.48/include/linux/grinternal.h
17650 ---- linux-2.6.32.48/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500
17651 -+++ linux-2.6.32.48/include/linux/grinternal.h 2011-11-12 12:46:47.000000000 -0500
17652 +diff -urNp linux-2.6.32.46/include/linux/grinternal.h linux-2.6.32.46/include/linux/grinternal.h
17653 +--- linux-2.6.32.46/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500
17654 ++++ linux-2.6.32.46/include/linux/grinternal.h 2011-10-20 00:48:45.000000000 -0400
17655 @@ -0,0 +1,218 @@
17656 +#ifndef __GRINTERNAL_H
17657 +#define __GRINTERNAL_H
17658 @@ -62631,9 +62667,9 @@ diff -urNp linux-2.6.32.48/include/linux/grinternal.h linux-2.6.32.48/include/li
17659 +#endif
17660 +
17661 +#endif
17662 -diff -urNp linux-2.6.32.48/include/linux/grmsg.h linux-2.6.32.48/include/linux/grmsg.h
17663 ---- linux-2.6.32.48/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500
17664 -+++ linux-2.6.32.48/include/linux/grmsg.h 2011-11-12 12:46:47.000000000 -0500
17665 +diff -urNp linux-2.6.32.46/include/linux/grmsg.h linux-2.6.32.46/include/linux/grmsg.h
17666 +--- linux-2.6.32.46/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500
17667 ++++ linux-2.6.32.46/include/linux/grmsg.h 2011-09-13 15:44:53.000000000 -0400
17668 @@ -0,0 +1,108 @@
17669 +#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"
17670 +#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"
17671 @@ -62743,9 +62779,9 @@ diff -urNp linux-2.6.32.48/include/linux/grmsg.h linux-2.6.32.48/include/linux/g
17672 +#define GR_VM86_MSG "denied use of vm86 by "
17673 +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by "
17674 +#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
17675 -diff -urNp linux-2.6.32.48/include/linux/grsecurity.h linux-2.6.32.48/include/linux/grsecurity.h
17676 ---- linux-2.6.32.48/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
17677 -+++ linux-2.6.32.48/include/linux/grsecurity.h 2011-11-12 12:46:47.000000000 -0500
17678 +diff -urNp linux-2.6.32.46/include/linux/grsecurity.h linux-2.6.32.46/include/linux/grsecurity.h
17679 +--- linux-2.6.32.46/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
17680 ++++ linux-2.6.32.46/include/linux/grsecurity.h 2011-10-17 06:48:36.000000000 -0400
17681 @@ -0,0 +1,218 @@
17682 +#ifndef GR_SECURITY_H
17683 +#define GR_SECURITY_H
17684 @@ -62965,9 +63001,9 @@ diff -urNp linux-2.6.32.48/include/linux/grsecurity.h linux-2.6.32.48/include/li
17685 +#endif
17686 +
17687 +#endif
17688 -diff -urNp linux-2.6.32.48/include/linux/hdpu_features.h linux-2.6.32.48/include/linux/hdpu_features.h
17689 ---- linux-2.6.32.48/include/linux/hdpu_features.h 2009-12-02 22:51:21.000000000 -0500
17690 -+++ linux-2.6.32.48/include/linux/hdpu_features.h 2011-11-12 12:46:47.000000000 -0500
17691 +diff -urNp linux-2.6.32.46/include/linux/hdpu_features.h linux-2.6.32.46/include/linux/hdpu_features.h
17692 +--- linux-2.6.32.46/include/linux/hdpu_features.h 2011-03-27 14:31:47.000000000 -0400
17693 ++++ linux-2.6.32.46/include/linux/hdpu_features.h 2011-04-17 15:56:46.000000000 -0400
17694 @@ -3,7 +3,7 @@
17695 struct cpustate_t {
17696 spinlock_t lock;
17697 @@ -62977,9 +63013,9 @@ diff -urNp linux-2.6.32.48/include/linux/hdpu_features.h linux-2.6.32.48/include
17698 unsigned char cached_val;
17699 int inited;
17700 unsigned long *set_addr;
17701 -diff -urNp linux-2.6.32.48/include/linux/highmem.h linux-2.6.32.48/include/linux/highmem.h
17702 ---- linux-2.6.32.48/include/linux/highmem.h 2009-12-02 22:51:21.000000000 -0500
17703 -+++ linux-2.6.32.48/include/linux/highmem.h 2011-11-12 12:46:47.000000000 -0500
17704 +diff -urNp linux-2.6.32.46/include/linux/highmem.h linux-2.6.32.46/include/linux/highmem.h
17705 +--- linux-2.6.32.46/include/linux/highmem.h 2011-03-27 14:31:47.000000000 -0400
17706 ++++ linux-2.6.32.46/include/linux/highmem.h 2011-04-17 15:56:46.000000000 -0400
17707 @@ -137,6 +137,18 @@ static inline void clear_highpage(struct
17708 kunmap_atomic(kaddr, KM_USER0);
17709 }
17710 @@ -62999,9 +63035,9 @@ diff -urNp linux-2.6.32.48/include/linux/highmem.h linux-2.6.32.48/include/linux
17711 static inline void zero_user_segments(struct page *page,
17712 unsigned start1, unsigned end1,
17713 unsigned start2, unsigned end2)
17714 -diff -urNp linux-2.6.32.48/include/linux/i2c.h linux-2.6.32.48/include/linux/i2c.h
17715 ---- linux-2.6.32.48/include/linux/i2c.h 2009-12-02 22:51:21.000000000 -0500
17716 -+++ linux-2.6.32.48/include/linux/i2c.h 2011-11-12 12:46:47.000000000 -0500
17717 +diff -urNp linux-2.6.32.46/include/linux/i2c.h linux-2.6.32.46/include/linux/i2c.h
17718 +--- linux-2.6.32.46/include/linux/i2c.h 2011-03-27 14:31:47.000000000 -0400
17719 ++++ linux-2.6.32.46/include/linux/i2c.h 2011-08-23 21:22:38.000000000 -0400
17720 @@ -325,6 +325,7 @@ struct i2c_algorithm {
17721 /* To determine what the adapter supports */
17722 u32 (*functionality) (struct i2c_adapter *);
17723 @@ -63010,9 +63046,9 @@ diff -urNp linux-2.6.32.48/include/linux/i2c.h linux-2.6.32.48/include/linux/i2c
17724
17725 /*
17726 * i2c_adapter is the structure used to identify a physical i2c bus along
17727 -diff -urNp linux-2.6.32.48/include/linux/i2o.h linux-2.6.32.48/include/linux/i2o.h
17728 ---- linux-2.6.32.48/include/linux/i2o.h 2009-12-02 22:51:21.000000000 -0500
17729 -+++ linux-2.6.32.48/include/linux/i2o.h 2011-11-12 12:46:47.000000000 -0500
17730 +diff -urNp linux-2.6.32.46/include/linux/i2o.h linux-2.6.32.46/include/linux/i2o.h
17731 +--- linux-2.6.32.46/include/linux/i2o.h 2011-03-27 14:31:47.000000000 -0400
17732 ++++ linux-2.6.32.46/include/linux/i2o.h 2011-05-04 17:56:28.000000000 -0400
17733 @@ -564,7 +564,7 @@ struct i2o_controller {
17734 struct i2o_device *exec; /* Executive */
17735 #if BITS_PER_LONG == 64
17736 @@ -63022,9 +63058,9 @@ diff -urNp linux-2.6.32.48/include/linux/i2o.h linux-2.6.32.48/include/linux/i2o
17737 struct list_head context_list; /* list of context id's
17738 and pointers */
17739 #endif
17740 -diff -urNp linux-2.6.32.48/include/linux/init_task.h linux-2.6.32.48/include/linux/init_task.h
17741 ---- linux-2.6.32.48/include/linux/init_task.h 2009-12-02 22:51:21.000000000 -0500
17742 -+++ linux-2.6.32.48/include/linux/init_task.h 2011-11-12 12:46:47.000000000 -0500
17743 +diff -urNp linux-2.6.32.46/include/linux/init_task.h linux-2.6.32.46/include/linux/init_task.h
17744 +--- linux-2.6.32.46/include/linux/init_task.h 2011-03-27 14:31:47.000000000 -0400
17745 ++++ linux-2.6.32.46/include/linux/init_task.h 2011-05-18 20:44:59.000000000 -0400
17746 @@ -83,6 +83,12 @@ extern struct group_info init_groups;
17747 #define INIT_IDS
17748 #endif
17749 @@ -63046,9 +63082,9 @@ diff -urNp linux-2.6.32.48/include/linux/init_task.h linux-2.6.32.48/include/lin
17750 .fs = &init_fs, \
17751 .files = &init_files, \
17752 .signal = &init_signals, \
17753 -diff -urNp linux-2.6.32.48/include/linux/intel-iommu.h linux-2.6.32.48/include/linux/intel-iommu.h
17754 ---- linux-2.6.32.48/include/linux/intel-iommu.h 2009-12-02 22:51:21.000000000 -0500
17755 -+++ linux-2.6.32.48/include/linux/intel-iommu.h 2011-11-12 12:46:47.000000000 -0500
17756 +diff -urNp linux-2.6.32.46/include/linux/intel-iommu.h linux-2.6.32.46/include/linux/intel-iommu.h
17757 +--- linux-2.6.32.46/include/linux/intel-iommu.h 2011-03-27 14:31:47.000000000 -0400
17758 ++++ linux-2.6.32.46/include/linux/intel-iommu.h 2011-08-05 20:33:55.000000000 -0400
17759 @@ -296,7 +296,7 @@ struct iommu_flush {
17760 u8 fm, u64 type);
17761 void (*flush_iotlb)(struct intel_iommu *iommu, u16 did, u64 addr,
17762 @@ -63058,9 +63094,9 @@ diff -urNp linux-2.6.32.48/include/linux/intel-iommu.h linux-2.6.32.48/include/l
17763
17764 enum {
17765 SR_DMAR_FECTL_REG,
17766 -diff -urNp linux-2.6.32.48/include/linux/interrupt.h linux-2.6.32.48/include/linux/interrupt.h
17767 ---- linux-2.6.32.48/include/linux/interrupt.h 2011-11-12 12:44:30.000000000 -0500
17768 -+++ linux-2.6.32.48/include/linux/interrupt.h 2011-11-12 12:46:47.000000000 -0500
17769 +diff -urNp linux-2.6.32.46/include/linux/interrupt.h linux-2.6.32.46/include/linux/interrupt.h
17770 +--- linux-2.6.32.46/include/linux/interrupt.h 2011-06-25 12:55:35.000000000 -0400
17771 ++++ linux-2.6.32.46/include/linux/interrupt.h 2011-06-25 12:56:37.000000000 -0400
17772 @@ -363,7 +363,7 @@ enum
17773 /* map softirq index to softirq name. update 'softirq_to_name' in
17774 * kernel/softirq.c when adding a new softirq.
17775 @@ -63085,9 +63121,9 @@ diff -urNp linux-2.6.32.48/include/linux/interrupt.h linux-2.6.32.48/include/lin
17776 extern void softirq_init(void);
17777 #define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
17778 extern void raise_softirq_irqoff(unsigned int nr);
17779 -diff -urNp linux-2.6.32.48/include/linux/irq.h linux-2.6.32.48/include/linux/irq.h
17780 ---- linux-2.6.32.48/include/linux/irq.h 2011-11-12 12:44:30.000000000 -0500
17781 -+++ linux-2.6.32.48/include/linux/irq.h 2011-11-12 12:46:47.000000000 -0500
17782 +diff -urNp linux-2.6.32.46/include/linux/irq.h linux-2.6.32.46/include/linux/irq.h
17783 +--- linux-2.6.32.46/include/linux/irq.h 2011-03-27 14:31:47.000000000 -0400
17784 ++++ linux-2.6.32.46/include/linux/irq.h 2011-04-17 15:56:46.000000000 -0400
17785 @@ -438,12 +438,12 @@ extern int set_irq_msi(unsigned int irq,
17786 static inline bool alloc_desc_masks(struct irq_desc *desc, int node,
17787 bool boot)
17788 @@ -63102,9 +63138,9 @@ diff -urNp linux-2.6.32.48/include/linux/irq.h linux-2.6.32.48/include/linux/irq
17789 if (!alloc_cpumask_var_node(&desc->affinity, gfp, node))
17790 return false;
17791
17792 -diff -urNp linux-2.6.32.48/include/linux/kallsyms.h linux-2.6.32.48/include/linux/kallsyms.h
17793 ---- linux-2.6.32.48/include/linux/kallsyms.h 2009-12-02 22:51:21.000000000 -0500
17794 -+++ linux-2.6.32.48/include/linux/kallsyms.h 2011-11-12 12:46:47.000000000 -0500
17795 +diff -urNp linux-2.6.32.46/include/linux/kallsyms.h linux-2.6.32.46/include/linux/kallsyms.h
17796 +--- linux-2.6.32.46/include/linux/kallsyms.h 2011-03-27 14:31:47.000000000 -0400
17797 ++++ linux-2.6.32.46/include/linux/kallsyms.h 2011-04-17 15:56:46.000000000 -0400
17798 @@ -15,7 +15,8 @@
17799
17800 struct module;
17801 @@ -63131,9 +63167,9 @@ diff -urNp linux-2.6.32.48/include/linux/kallsyms.h linux-2.6.32.48/include/linu
17802
17803 /* This macro allows us to keep printk typechecking */
17804 static void __check_printsym_format(const char *fmt, ...)
17805 -diff -urNp linux-2.6.32.48/include/linux/kgdb.h linux-2.6.32.48/include/linux/kgdb.h
17806 ---- linux-2.6.32.48/include/linux/kgdb.h 2009-12-02 22:51:21.000000000 -0500
17807 -+++ linux-2.6.32.48/include/linux/kgdb.h 2011-11-12 12:46:47.000000000 -0500
17808 +diff -urNp linux-2.6.32.46/include/linux/kgdb.h linux-2.6.32.46/include/linux/kgdb.h
17809 +--- linux-2.6.32.46/include/linux/kgdb.h 2011-03-27 14:31:47.000000000 -0400
17810 ++++ linux-2.6.32.46/include/linux/kgdb.h 2011-08-26 20:25:20.000000000 -0400
17811 @@ -74,8 +74,8 @@ void kgdb_breakpoint(void);
17812
17813 extern int kgdb_connected;
17814 @@ -63173,9 +63209,9 @@ diff -urNp linux-2.6.32.48/include/linux/kgdb.h linux-2.6.32.48/include/linux/kg
17815
17816 extern int kgdb_hex2long(char **ptr, unsigned long *long_val);
17817 extern int kgdb_mem2hex(char *mem, char *buf, int count);
17818 -diff -urNp linux-2.6.32.48/include/linux/kmod.h linux-2.6.32.48/include/linux/kmod.h
17819 ---- linux-2.6.32.48/include/linux/kmod.h 2009-12-02 22:51:21.000000000 -0500
17820 -+++ linux-2.6.32.48/include/linux/kmod.h 2011-11-12 12:46:47.000000000 -0500
17821 +diff -urNp linux-2.6.32.46/include/linux/kmod.h linux-2.6.32.46/include/linux/kmod.h
17822 +--- linux-2.6.32.46/include/linux/kmod.h 2011-03-27 14:31:47.000000000 -0400
17823 ++++ linux-2.6.32.46/include/linux/kmod.h 2011-04-17 15:56:46.000000000 -0400
17824 @@ -31,6 +31,8 @@
17825 * usually useless though. */
17826 extern int __request_module(bool wait, const char *name, ...) \
17827 @@ -63185,9 +63221,9 @@ diff -urNp linux-2.6.32.48/include/linux/kmod.h linux-2.6.32.48/include/linux/km
17828 #define request_module(mod...) __request_module(true, mod)
17829 #define request_module_nowait(mod...) __request_module(false, mod)
17830 #define try_then_request_module(x, mod...) \
17831 -diff -urNp linux-2.6.32.48/include/linux/kobject.h linux-2.6.32.48/include/linux/kobject.h
17832 ---- linux-2.6.32.48/include/linux/kobject.h 2009-12-02 22:51:21.000000000 -0500
17833 -+++ linux-2.6.32.48/include/linux/kobject.h 2011-11-12 12:46:47.000000000 -0500
17834 +diff -urNp linux-2.6.32.46/include/linux/kobject.h linux-2.6.32.46/include/linux/kobject.h
17835 +--- linux-2.6.32.46/include/linux/kobject.h 2011-03-27 14:31:47.000000000 -0400
17836 ++++ linux-2.6.32.46/include/linux/kobject.h 2011-04-17 15:56:46.000000000 -0400
17837 @@ -106,7 +106,7 @@ extern char *kobject_get_path(struct kob
17838
17839 struct kobj_type {
17840 @@ -63236,9 +63272,9 @@ diff -urNp linux-2.6.32.48/include/linux/kobject.h linux-2.6.32.48/include/linux
17841 struct kobject *parent_kobj);
17842
17843 static inline struct kset *to_kset(struct kobject *kobj)
17844 -diff -urNp linux-2.6.32.48/include/linux/kvm_host.h linux-2.6.32.48/include/linux/kvm_host.h
17845 ---- linux-2.6.32.48/include/linux/kvm_host.h 2011-11-12 12:44:30.000000000 -0500
17846 -+++ linux-2.6.32.48/include/linux/kvm_host.h 2011-11-12 12:46:47.000000000 -0500
17847 +diff -urNp linux-2.6.32.46/include/linux/kvm_host.h linux-2.6.32.46/include/linux/kvm_host.h
17848 +--- linux-2.6.32.46/include/linux/kvm_host.h 2011-03-27 14:31:47.000000000 -0400
17849 ++++ linux-2.6.32.46/include/linux/kvm_host.h 2011-04-17 15:56:46.000000000 -0400
17850 @@ -210,7 +210,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vc
17851 void vcpu_load(struct kvm_vcpu *vcpu);
17852 void vcpu_put(struct kvm_vcpu *vcpu);
17853 @@ -63257,9 +63293,9 @@ diff -urNp linux-2.6.32.48/include/linux/kvm_host.h linux-2.6.32.48/include/linu
17854 void kvm_arch_exit(void);
17855
17856 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
17857 -diff -urNp linux-2.6.32.48/include/linux/libata.h linux-2.6.32.48/include/linux/libata.h
17858 ---- linux-2.6.32.48/include/linux/libata.h 2011-11-12 12:44:30.000000000 -0500
17859 -+++ linux-2.6.32.48/include/linux/libata.h 2011-11-12 12:46:47.000000000 -0500
17860 +diff -urNp linux-2.6.32.46/include/linux/libata.h linux-2.6.32.46/include/linux/libata.h
17861 +--- linux-2.6.32.46/include/linux/libata.h 2011-03-27 14:31:47.000000000 -0400
17862 ++++ linux-2.6.32.46/include/linux/libata.h 2011-08-26 20:19:09.000000000 -0400
17863 @@ -525,11 +525,11 @@ struct ata_ioports {
17864
17865 struct ata_host {
17866 @@ -63319,9 +63355,9 @@ diff -urNp linux-2.6.32.48/include/linux/libata.h linux-2.6.32.48/include/linux/
17867 extern int ata_scsi_detect(struct scsi_host_template *sht);
17868 extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
17869 extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
17870 -diff -urNp linux-2.6.32.48/include/linux/lockd/bind.h linux-2.6.32.48/include/linux/lockd/bind.h
17871 ---- linux-2.6.32.48/include/linux/lockd/bind.h 2009-12-02 22:51:21.000000000 -0500
17872 -+++ linux-2.6.32.48/include/linux/lockd/bind.h 2011-11-12 12:46:47.000000000 -0500
17873 +diff -urNp linux-2.6.32.46/include/linux/lockd/bind.h linux-2.6.32.46/include/linux/lockd/bind.h
17874 +--- linux-2.6.32.46/include/linux/lockd/bind.h 2011-03-27 14:31:47.000000000 -0400
17875 ++++ linux-2.6.32.46/include/linux/lockd/bind.h 2011-04-17 15:56:46.000000000 -0400
17876 @@ -23,13 +23,13 @@ struct svc_rqst;
17877 * This is the set of functions for lockd->nfsd communication
17878 */
17879 @@ -63339,9 +63375,9 @@ diff -urNp linux-2.6.32.48/include/linux/lockd/bind.h linux-2.6.32.48/include/li
17880
17881 /*
17882 * Similar to nfs_client_initdata, but without the NFS-specific
17883 -diff -urNp linux-2.6.32.48/include/linux/mca.h linux-2.6.32.48/include/linux/mca.h
17884 ---- linux-2.6.32.48/include/linux/mca.h 2009-12-02 22:51:21.000000000 -0500
17885 -+++ linux-2.6.32.48/include/linux/mca.h 2011-11-12 12:46:47.000000000 -0500
17886 +diff -urNp linux-2.6.32.46/include/linux/mca.h linux-2.6.32.46/include/linux/mca.h
17887 +--- linux-2.6.32.46/include/linux/mca.h 2011-03-27 14:31:47.000000000 -0400
17888 ++++ linux-2.6.32.46/include/linux/mca.h 2011-08-05 20:33:55.000000000 -0400
17889 @@ -80,7 +80,7 @@ struct mca_bus_accessor_functions {
17890 int region);
17891 void * (*mca_transform_memory)(struct mca_device *,
17892 @@ -63351,9 +63387,9 @@ diff -urNp linux-2.6.32.48/include/linux/mca.h linux-2.6.32.48/include/linux/mca
17893
17894 struct mca_bus {
17895 u64 default_dma_mask;
17896 -diff -urNp linux-2.6.32.48/include/linux/memory.h linux-2.6.32.48/include/linux/memory.h
17897 ---- linux-2.6.32.48/include/linux/memory.h 2009-12-02 22:51:21.000000000 -0500
17898 -+++ linux-2.6.32.48/include/linux/memory.h 2011-11-12 12:46:47.000000000 -0500
17899 +diff -urNp linux-2.6.32.46/include/linux/memory.h linux-2.6.32.46/include/linux/memory.h
17900 +--- linux-2.6.32.46/include/linux/memory.h 2011-03-27 14:31:47.000000000 -0400
17901 ++++ linux-2.6.32.46/include/linux/memory.h 2011-08-05 20:33:55.000000000 -0400
17902 @@ -108,7 +108,7 @@ struct memory_accessor {
17903 size_t count);
17904 ssize_t (*write)(struct memory_accessor *, const char *buf,
17905 @@ -63363,9 +63399,9 @@ diff -urNp linux-2.6.32.48/include/linux/memory.h linux-2.6.32.48/include/linux/
17906
17907 /*
17908 * Kernel text modification mutex, used for code patching. Users of this lock
17909 -diff -urNp linux-2.6.32.48/include/linux/mm.h linux-2.6.32.48/include/linux/mm.h
17910 ---- linux-2.6.32.48/include/linux/mm.h 2011-11-12 12:44:30.000000000 -0500
17911 -+++ linux-2.6.32.48/include/linux/mm.h 2011-11-12 12:46:47.000000000 -0500
17912 +diff -urNp linux-2.6.32.46/include/linux/mm.h linux-2.6.32.46/include/linux/mm.h
17913 +--- linux-2.6.32.46/include/linux/mm.h 2011-03-27 14:31:47.000000000 -0400
17914 ++++ linux-2.6.32.46/include/linux/mm.h 2011-04-17 15:56:46.000000000 -0400
17915 @@ -106,7 +106,14 @@ extern unsigned int kobjsize(const void
17916
17917 #define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */
17918 @@ -63445,9 +63481,9 @@ diff -urNp linux-2.6.32.48/include/linux/mm.h linux-2.6.32.48/include/linux/mm.h
17919
17920 #endif /* __KERNEL__ */
17921 #endif /* _LINUX_MM_H */
17922 -diff -urNp linux-2.6.32.48/include/linux/mm_types.h linux-2.6.32.48/include/linux/mm_types.h
17923 ---- linux-2.6.32.48/include/linux/mm_types.h 2011-11-12 12:44:30.000000000 -0500
17924 -+++ linux-2.6.32.48/include/linux/mm_types.h 2011-11-12 12:46:47.000000000 -0500
17925 +diff -urNp linux-2.6.32.46/include/linux/mm_types.h linux-2.6.32.46/include/linux/mm_types.h
17926 +--- linux-2.6.32.46/include/linux/mm_types.h 2011-03-27 14:31:47.000000000 -0400
17927 ++++ linux-2.6.32.46/include/linux/mm_types.h 2011-04-17 15:56:46.000000000 -0400
17928 @@ -186,6 +186,8 @@ struct vm_area_struct {
17929 #ifdef CONFIG_NUMA
17930 struct mempolicy *vm_policy; /* NUMA policy for the VMA */
17931 @@ -63482,9 +63518,9 @@ diff -urNp linux-2.6.32.48/include/linux/mm_types.h linux-2.6.32.48/include/linu
17932 };
17933
17934 /* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
17935 -diff -urNp linux-2.6.32.48/include/linux/mmu_notifier.h linux-2.6.32.48/include/linux/mmu_notifier.h
17936 ---- linux-2.6.32.48/include/linux/mmu_notifier.h 2009-12-02 22:51:21.000000000 -0500
17937 -+++ linux-2.6.32.48/include/linux/mmu_notifier.h 2011-11-12 12:46:47.000000000 -0500
17938 +diff -urNp linux-2.6.32.46/include/linux/mmu_notifier.h linux-2.6.32.46/include/linux/mmu_notifier.h
17939 +--- linux-2.6.32.46/include/linux/mmu_notifier.h 2011-03-27 14:31:47.000000000 -0400
17940 ++++ linux-2.6.32.46/include/linux/mmu_notifier.h 2011-04-17 15:56:46.000000000 -0400
17941 @@ -235,12 +235,12 @@ static inline void mmu_notifier_mm_destr
17942 */
17943 #define ptep_clear_flush_notify(__vma, __address, __ptep) \
17944 @@ -63501,9 +63537,9 @@ diff -urNp linux-2.6.32.48/include/linux/mmu_notifier.h linux-2.6.32.48/include/
17945 })
17946
17947 #define ptep_clear_flush_young_notify(__vma, __address, __ptep) \
17948 -diff -urNp linux-2.6.32.48/include/linux/mmzone.h linux-2.6.32.48/include/linux/mmzone.h
17949 ---- linux-2.6.32.48/include/linux/mmzone.h 2011-11-12 12:44:30.000000000 -0500
17950 -+++ linux-2.6.32.48/include/linux/mmzone.h 2011-11-12 12:46:47.000000000 -0500
17951 +diff -urNp linux-2.6.32.46/include/linux/mmzone.h linux-2.6.32.46/include/linux/mmzone.h
17952 +--- linux-2.6.32.46/include/linux/mmzone.h 2011-03-27 14:31:47.000000000 -0400
17953 ++++ linux-2.6.32.46/include/linux/mmzone.h 2011-04-17 15:56:46.000000000 -0400
17954 @@ -350,7 +350,7 @@ struct zone {
17955 unsigned long flags; /* zone flags, see below */
17956
17957 @@ -63513,9 +63549,9 @@ diff -urNp linux-2.6.32.48/include/linux/mmzone.h linux-2.6.32.48/include/linux/
17958
17959 /*
17960 * prev_priority holds the scanning priority for this zone. It is
17961 -diff -urNp linux-2.6.32.48/include/linux/mod_devicetable.h linux-2.6.32.48/include/linux/mod_devicetable.h
17962 ---- linux-2.6.32.48/include/linux/mod_devicetable.h 2009-12-02 22:51:21.000000000 -0500
17963 -+++ linux-2.6.32.48/include/linux/mod_devicetable.h 2011-11-12 12:46:47.000000000 -0500
17964 +diff -urNp linux-2.6.32.46/include/linux/mod_devicetable.h linux-2.6.32.46/include/linux/mod_devicetable.h
17965 +--- linux-2.6.32.46/include/linux/mod_devicetable.h 2011-03-27 14:31:47.000000000 -0400
17966 ++++ linux-2.6.32.46/include/linux/mod_devicetable.h 2011-04-17 15:56:46.000000000 -0400
17967 @@ -12,7 +12,7 @@
17968 typedef unsigned long kernel_ulong_t;
17969 #endif
17970 @@ -63534,9 +63570,9 @@ diff -urNp linux-2.6.32.48/include/linux/mod_devicetable.h linux-2.6.32.48/inclu
17971
17972 struct hid_device_id {
17973 __u16 bus;
17974 -diff -urNp linux-2.6.32.48/include/linux/module.h linux-2.6.32.48/include/linux/module.h
17975 ---- linux-2.6.32.48/include/linux/module.h 2009-12-02 22:51:21.000000000 -0500
17976 -+++ linux-2.6.32.48/include/linux/module.h 2011-11-12 12:46:47.000000000 -0500
17977 +diff -urNp linux-2.6.32.46/include/linux/module.h linux-2.6.32.46/include/linux/module.h
17978 +--- linux-2.6.32.46/include/linux/module.h 2011-03-27 14:31:47.000000000 -0400
17979 ++++ linux-2.6.32.46/include/linux/module.h 2011-08-05 20:33:55.000000000 -0400
17980 @@ -16,6 +16,7 @@
17981 #include <linux/kobject.h>
17982 #include <linux/moduleparam.h>
17983 @@ -63628,9 +63664,9 @@ diff -urNp linux-2.6.32.48/include/linux/module.h linux-2.6.32.48/include/linux/
17984 }
17985
17986 /* Search for module by name: must hold module_mutex. */
17987 -diff -urNp linux-2.6.32.48/include/linux/moduleloader.h linux-2.6.32.48/include/linux/moduleloader.h
17988 ---- linux-2.6.32.48/include/linux/moduleloader.h 2009-12-02 22:51:21.000000000 -0500
17989 -+++ linux-2.6.32.48/include/linux/moduleloader.h 2011-11-12 12:46:47.000000000 -0500
17990 +diff -urNp linux-2.6.32.46/include/linux/moduleloader.h linux-2.6.32.46/include/linux/moduleloader.h
17991 +--- linux-2.6.32.46/include/linux/moduleloader.h 2011-03-27 14:31:47.000000000 -0400
17992 ++++ linux-2.6.32.46/include/linux/moduleloader.h 2011-04-17 15:56:46.000000000 -0400
17993 @@ -20,9 +20,21 @@ unsigned int arch_mod_section_prepend(st
17994 sections. Returns NULL on failure. */
17995 void *module_alloc(unsigned long size);
17996 @@ -63653,9 +63689,9 @@ diff -urNp linux-2.6.32.48/include/linux/moduleloader.h linux-2.6.32.48/include/
17997 /* Apply the given relocation to the (simplified) ELF. Return -error
17998 or 0. */
17999 int apply_relocate(Elf_Shdr *sechdrs,
18000 -diff -urNp linux-2.6.32.48/include/linux/moduleparam.h linux-2.6.32.48/include/linux/moduleparam.h
18001 ---- linux-2.6.32.48/include/linux/moduleparam.h 2009-12-02 22:51:21.000000000 -0500
18002 -+++ linux-2.6.32.48/include/linux/moduleparam.h 2011-11-12 12:46:47.000000000 -0500
18003 +diff -urNp linux-2.6.32.46/include/linux/moduleparam.h linux-2.6.32.46/include/linux/moduleparam.h
18004 +--- linux-2.6.32.46/include/linux/moduleparam.h 2011-03-27 14:31:47.000000000 -0400
18005 ++++ linux-2.6.32.46/include/linux/moduleparam.h 2011-04-17 15:56:46.000000000 -0400
18006 @@ -132,7 +132,7 @@ struct kparam_array
18007
18008 /* Actually copy string: maxlen param is usually sizeof(string). */
18009 @@ -63674,9 +63710,9 @@ diff -urNp linux-2.6.32.48/include/linux/moduleparam.h linux-2.6.32.48/include/l
18010 = { ARRAY_SIZE(array), nump, param_set_##type, param_get_##type,\
18011 sizeof(array[0]), array }; \
18012 __module_param_call(MODULE_PARAM_PREFIX, name, \
18013 -diff -urNp linux-2.6.32.48/include/linux/mutex.h linux-2.6.32.48/include/linux/mutex.h
18014 ---- linux-2.6.32.48/include/linux/mutex.h 2009-12-02 22:51:21.000000000 -0500
18015 -+++ linux-2.6.32.48/include/linux/mutex.h 2011-11-12 12:46:47.000000000 -0500
18016 +diff -urNp linux-2.6.32.46/include/linux/mutex.h linux-2.6.32.46/include/linux/mutex.h
18017 +--- linux-2.6.32.46/include/linux/mutex.h 2011-03-27 14:31:47.000000000 -0400
18018 ++++ linux-2.6.32.46/include/linux/mutex.h 2011-04-17 15:56:46.000000000 -0400
18019 @@ -51,7 +51,7 @@ struct mutex {
18020 spinlock_t wait_lock;
18021 struct list_head wait_list;
18022 @@ -63686,9 +63722,9 @@ diff -urNp linux-2.6.32.48/include/linux/mutex.h linux-2.6.32.48/include/linux/m
18023 #endif
18024 #ifdef CONFIG_DEBUG_MUTEXES
18025 const char *name;
18026 -diff -urNp linux-2.6.32.48/include/linux/namei.h linux-2.6.32.48/include/linux/namei.h
18027 ---- linux-2.6.32.48/include/linux/namei.h 2009-12-02 22:51:21.000000000 -0500
18028 -+++ linux-2.6.32.48/include/linux/namei.h 2011-11-12 12:46:47.000000000 -0500
18029 +diff -urNp linux-2.6.32.46/include/linux/namei.h linux-2.6.32.46/include/linux/namei.h
18030 +--- linux-2.6.32.46/include/linux/namei.h 2011-03-27 14:31:47.000000000 -0400
18031 ++++ linux-2.6.32.46/include/linux/namei.h 2011-04-17 15:56:46.000000000 -0400
18032 @@ -22,7 +22,7 @@ struct nameidata {
18033 unsigned int flags;
18034 int last_type;
18035 @@ -63713,9 +63749,9 @@ diff -urNp linux-2.6.32.48/include/linux/namei.h linux-2.6.32.48/include/linux/n
18036 {
18037 return nd->saved_names[nd->depth];
18038 }
18039 -diff -urNp linux-2.6.32.48/include/linux/netdevice.h linux-2.6.32.48/include/linux/netdevice.h
18040 ---- linux-2.6.32.48/include/linux/netdevice.h 2011-11-12 12:44:30.000000000 -0500
18041 -+++ linux-2.6.32.48/include/linux/netdevice.h 2011-11-12 12:46:47.000000000 -0500
18042 +diff -urNp linux-2.6.32.46/include/linux/netdevice.h linux-2.6.32.46/include/linux/netdevice.h
18043 +--- linux-2.6.32.46/include/linux/netdevice.h 2011-08-09 18:35:30.000000000 -0400
18044 ++++ linux-2.6.32.46/include/linux/netdevice.h 2011-08-23 21:22:38.000000000 -0400
18045 @@ -637,6 +637,7 @@ struct net_device_ops {
18046 u16 xid);
18047 #endif
18048 @@ -63724,9 +63760,9 @@ diff -urNp linux-2.6.32.48/include/linux/netdevice.h linux-2.6.32.48/include/lin
18049
18050 /*
18051 * The DEVICE structure.
18052 -diff -urNp linux-2.6.32.48/include/linux/netfilter/xt_gradm.h linux-2.6.32.48/include/linux/netfilter/xt_gradm.h
18053 ---- linux-2.6.32.48/include/linux/netfilter/xt_gradm.h 1969-12-31 19:00:00.000000000 -0500
18054 -+++ linux-2.6.32.48/include/linux/netfilter/xt_gradm.h 2011-11-12 12:46:47.000000000 -0500
18055 +diff -urNp linux-2.6.32.46/include/linux/netfilter/xt_gradm.h linux-2.6.32.46/include/linux/netfilter/xt_gradm.h
18056 +--- linux-2.6.32.46/include/linux/netfilter/xt_gradm.h 1969-12-31 19:00:00.000000000 -0500
18057 ++++ linux-2.6.32.46/include/linux/netfilter/xt_gradm.h 2011-04-17 15:56:46.000000000 -0400
18058 @@ -0,0 +1,9 @@
18059 +#ifndef _LINUX_NETFILTER_XT_GRADM_H
18060 +#define _LINUX_NETFILTER_XT_GRADM_H 1
18061 @@ -63737,9 +63773,9 @@ diff -urNp linux-2.6.32.48/include/linux/netfilter/xt_gradm.h linux-2.6.32.48/in
18062 +};
18063 +
18064 +#endif
18065 -diff -urNp linux-2.6.32.48/include/linux/nodemask.h linux-2.6.32.48/include/linux/nodemask.h
18066 ---- linux-2.6.32.48/include/linux/nodemask.h 2009-12-02 22:51:21.000000000 -0500
18067 -+++ linux-2.6.32.48/include/linux/nodemask.h 2011-11-12 12:46:47.000000000 -0500
18068 +diff -urNp linux-2.6.32.46/include/linux/nodemask.h linux-2.6.32.46/include/linux/nodemask.h
18069 +--- linux-2.6.32.46/include/linux/nodemask.h 2011-03-27 14:31:47.000000000 -0400
18070 ++++ linux-2.6.32.46/include/linux/nodemask.h 2011-04-17 15:56:46.000000000 -0400
18071 @@ -464,11 +464,11 @@ static inline int num_node_state(enum no
18072
18073 #define any_online_node(mask) \
18074 @@ -63756,9 +63792,9 @@ diff -urNp linux-2.6.32.48/include/linux/nodemask.h linux-2.6.32.48/include/linu
18075 })
18076
18077 #define num_online_nodes() num_node_state(N_ONLINE)
18078 -diff -urNp linux-2.6.32.48/include/linux/oprofile.h linux-2.6.32.48/include/linux/oprofile.h
18079 ---- linux-2.6.32.48/include/linux/oprofile.h 2009-12-02 22:51:21.000000000 -0500
18080 -+++ linux-2.6.32.48/include/linux/oprofile.h 2011-11-12 12:46:47.000000000 -0500
18081 +diff -urNp linux-2.6.32.46/include/linux/oprofile.h linux-2.6.32.46/include/linux/oprofile.h
18082 +--- linux-2.6.32.46/include/linux/oprofile.h 2011-03-27 14:31:47.000000000 -0400
18083 ++++ linux-2.6.32.46/include/linux/oprofile.h 2011-04-17 15:56:46.000000000 -0400
18084 @@ -129,9 +129,9 @@ int oprofilefs_create_ulong(struct super
18085 int oprofilefs_create_ro_ulong(struct super_block * sb, struct dentry * root,
18086 char const * name, ulong * val);
18087 @@ -63771,9 +63807,9 @@ diff -urNp linux-2.6.32.48/include/linux/oprofile.h linux-2.6.32.48/include/linu
18088
18089 /** create a directory */
18090 struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root,
18091 -diff -urNp linux-2.6.32.48/include/linux/pagemap.h linux-2.6.32.48/include/linux/pagemap.h
18092 ---- linux-2.6.32.48/include/linux/pagemap.h 2011-11-12 12:44:30.000000000 -0500
18093 -+++ linux-2.6.32.48/include/linux/pagemap.h 2011-11-12 12:46:47.000000000 -0500
18094 +diff -urNp linux-2.6.32.46/include/linux/pagemap.h linux-2.6.32.46/include/linux/pagemap.h
18095 +--- linux-2.6.32.46/include/linux/pagemap.h 2011-03-27 14:31:47.000000000 -0400
18096 ++++ linux-2.6.32.46/include/linux/pagemap.h 2011-08-17 19:36:28.000000000 -0400
18097 @@ -425,6 +425,7 @@ static inline int fault_in_pages_readabl
18098 if (((unsigned long)uaddr & PAGE_MASK) !=
18099 ((unsigned long)end & PAGE_MASK))
18100 @@ -63782,9 +63818,9 @@ diff -urNp linux-2.6.32.48/include/linux/pagemap.h linux-2.6.32.48/include/linux
18101 }
18102 return ret;
18103 }
18104 -diff -urNp linux-2.6.32.48/include/linux/perf_event.h linux-2.6.32.48/include/linux/perf_event.h
18105 ---- linux-2.6.32.48/include/linux/perf_event.h 2011-11-12 12:44:30.000000000 -0500
18106 -+++ linux-2.6.32.48/include/linux/perf_event.h 2011-11-12 12:46:47.000000000 -0500
18107 +diff -urNp linux-2.6.32.46/include/linux/perf_event.h linux-2.6.32.46/include/linux/perf_event.h
18108 +--- linux-2.6.32.46/include/linux/perf_event.h 2011-03-27 14:31:47.000000000 -0400
18109 ++++ linux-2.6.32.46/include/linux/perf_event.h 2011-05-04 17:56:28.000000000 -0400
18110 @@ -476,7 +476,7 @@ struct hw_perf_event {
18111 struct hrtimer hrtimer;
18112 };
18113 @@ -63814,9 +63850,9 @@ diff -urNp linux-2.6.32.48/include/linux/perf_event.h linux-2.6.32.48/include/li
18114
18115 /*
18116 * Protect attach/detach and child_list:
18117 -diff -urNp linux-2.6.32.48/include/linux/pipe_fs_i.h linux-2.6.32.48/include/linux/pipe_fs_i.h
18118 ---- linux-2.6.32.48/include/linux/pipe_fs_i.h 2009-12-02 22:51:21.000000000 -0500
18119 -+++ linux-2.6.32.48/include/linux/pipe_fs_i.h 2011-11-12 12:46:47.000000000 -0500
18120 +diff -urNp linux-2.6.32.46/include/linux/pipe_fs_i.h linux-2.6.32.46/include/linux/pipe_fs_i.h
18121 +--- linux-2.6.32.46/include/linux/pipe_fs_i.h 2011-03-27 14:31:47.000000000 -0400
18122 ++++ linux-2.6.32.46/include/linux/pipe_fs_i.h 2011-04-17 15:56:46.000000000 -0400
18123 @@ -46,9 +46,9 @@ struct pipe_inode_info {
18124 wait_queue_head_t wait;
18125 unsigned int nrbufs, curbuf;
18126 @@ -63830,9 +63866,9 @@ diff -urNp linux-2.6.32.48/include/linux/pipe_fs_i.h linux-2.6.32.48/include/lin
18127 unsigned int r_counter;
18128 unsigned int w_counter;
18129 struct fasync_struct *fasync_readers;
18130 -diff -urNp linux-2.6.32.48/include/linux/poison.h linux-2.6.32.48/include/linux/poison.h
18131 ---- linux-2.6.32.48/include/linux/poison.h 2011-11-12 12:44:30.000000000 -0500
18132 -+++ linux-2.6.32.48/include/linux/poison.h 2011-11-12 12:46:47.000000000 -0500
18133 +diff -urNp linux-2.6.32.46/include/linux/poison.h linux-2.6.32.46/include/linux/poison.h
18134 +--- linux-2.6.32.46/include/linux/poison.h 2011-03-27 14:31:47.000000000 -0400
18135 ++++ linux-2.6.32.46/include/linux/poison.h 2011-04-17 15:56:46.000000000 -0400
18136 @@ -19,8 +19,8 @@
18137 * under normal circumstances, used to verify that nobody uses
18138 * non-initialized list entries.
18139 @@ -63844,9 +63880,9 @@ diff -urNp linux-2.6.32.48/include/linux/poison.h linux-2.6.32.48/include/linux/
18140
18141 /********** include/linux/timer.h **********/
18142 /*
18143 -diff -urNp linux-2.6.32.48/include/linux/posix-timers.h linux-2.6.32.48/include/linux/posix-timers.h
18144 ---- linux-2.6.32.48/include/linux/posix-timers.h 2009-12-02 22:51:21.000000000 -0500
18145 -+++ linux-2.6.32.48/include/linux/posix-timers.h 2011-11-12 12:46:47.000000000 -0500
18146 +diff -urNp linux-2.6.32.46/include/linux/posix-timers.h linux-2.6.32.46/include/linux/posix-timers.h
18147 +--- linux-2.6.32.46/include/linux/posix-timers.h 2011-03-27 14:31:47.000000000 -0400
18148 ++++ linux-2.6.32.46/include/linux/posix-timers.h 2011-08-05 20:33:55.000000000 -0400
18149 @@ -67,7 +67,7 @@ struct k_itimer {
18150 };
18151
18152 @@ -63856,9 +63892,9 @@ diff -urNp linux-2.6.32.48/include/linux/posix-timers.h linux-2.6.32.48/include/
18153 int (*clock_getres) (const clockid_t which_clock, struct timespec *tp);
18154 int (*clock_set) (const clockid_t which_clock, struct timespec * tp);
18155 int (*clock_get) (const clockid_t which_clock, struct timespec * tp);
18156 -diff -urNp linux-2.6.32.48/include/linux/preempt.h linux-2.6.32.48/include/linux/preempt.h
18157 ---- linux-2.6.32.48/include/linux/preempt.h 2009-12-02 22:51:21.000000000 -0500
18158 -+++ linux-2.6.32.48/include/linux/preempt.h 2011-11-12 12:46:47.000000000 -0500
18159 +diff -urNp linux-2.6.32.46/include/linux/preempt.h linux-2.6.32.46/include/linux/preempt.h
18160 +--- linux-2.6.32.46/include/linux/preempt.h 2011-03-27 14:31:47.000000000 -0400
18161 ++++ linux-2.6.32.46/include/linux/preempt.h 2011-08-05 20:33:55.000000000 -0400
18162 @@ -110,7 +110,7 @@ struct preempt_ops {
18163 void (*sched_in)(struct preempt_notifier *notifier, int cpu);
18164 void (*sched_out)(struct preempt_notifier *notifier,
18165 @@ -63868,9 +63904,9 @@ diff -urNp linux-2.6.32.48/include/linux/preempt.h linux-2.6.32.48/include/linux
18166
18167 /**
18168 * preempt_notifier - key for installing preemption notifiers
18169 -diff -urNp linux-2.6.32.48/include/linux/proc_fs.h linux-2.6.32.48/include/linux/proc_fs.h
18170 ---- linux-2.6.32.48/include/linux/proc_fs.h 2009-12-02 22:51:21.000000000 -0500
18171 -+++ linux-2.6.32.48/include/linux/proc_fs.h 2011-11-12 12:46:47.000000000 -0500
18172 +diff -urNp linux-2.6.32.46/include/linux/proc_fs.h linux-2.6.32.46/include/linux/proc_fs.h
18173 +--- linux-2.6.32.46/include/linux/proc_fs.h 2011-03-27 14:31:47.000000000 -0400
18174 ++++ linux-2.6.32.46/include/linux/proc_fs.h 2011-08-05 20:33:55.000000000 -0400
18175 @@ -155,6 +155,19 @@ static inline struct proc_dir_entry *pro
18176 return proc_create_data(name, mode, parent, proc_fops, NULL);
18177 }
18178 @@ -63900,9 +63936,9 @@ diff -urNp linux-2.6.32.48/include/linux/proc_fs.h linux-2.6.32.48/include/linux
18179
18180 struct ctl_table_header;
18181 struct ctl_table;
18182 -diff -urNp linux-2.6.32.48/include/linux/ptrace.h linux-2.6.32.48/include/linux/ptrace.h
18183 ---- linux-2.6.32.48/include/linux/ptrace.h 2009-12-02 22:51:21.000000000 -0500
18184 -+++ linux-2.6.32.48/include/linux/ptrace.h 2011-11-12 12:46:47.000000000 -0500
18185 +diff -urNp linux-2.6.32.46/include/linux/ptrace.h linux-2.6.32.46/include/linux/ptrace.h
18186 +--- linux-2.6.32.46/include/linux/ptrace.h 2011-03-27 14:31:47.000000000 -0400
18187 ++++ linux-2.6.32.46/include/linux/ptrace.h 2011-04-17 15:56:46.000000000 -0400
18188 @@ -96,10 +96,10 @@ extern void __ptrace_unlink(struct task_
18189 extern void exit_ptrace(struct task_struct *tracer);
18190 #define PTRACE_MODE_READ 1
18191 @@ -63916,9 +63952,9 @@ diff -urNp linux-2.6.32.48/include/linux/ptrace.h linux-2.6.32.48/include/linux/
18192
18193 static inline int ptrace_reparented(struct task_struct *child)
18194 {
18195 -diff -urNp linux-2.6.32.48/include/linux/random.h linux-2.6.32.48/include/linux/random.h
18196 ---- linux-2.6.32.48/include/linux/random.h 2011-11-12 12:44:30.000000000 -0500
18197 -+++ linux-2.6.32.48/include/linux/random.h 2011-11-12 12:46:47.000000000 -0500
18198 +diff -urNp linux-2.6.32.46/include/linux/random.h linux-2.6.32.46/include/linux/random.h
18199 +--- linux-2.6.32.46/include/linux/random.h 2011-08-16 20:37:25.000000000 -0400
18200 ++++ linux-2.6.32.46/include/linux/random.h 2011-08-07 19:48:09.000000000 -0400
18201 @@ -63,6 +63,11 @@ unsigned long randomize_range(unsigned l
18202 u32 random32(void);
18203 void srandom32(u32 seed);
18204 @@ -63931,9 +63967,9 @@ diff -urNp linux-2.6.32.48/include/linux/random.h linux-2.6.32.48/include/linux/
18205 #endif /* __KERNEL___ */
18206
18207 #endif /* _LINUX_RANDOM_H */
18208 -diff -urNp linux-2.6.32.48/include/linux/reboot.h linux-2.6.32.48/include/linux/reboot.h
18209 ---- linux-2.6.32.48/include/linux/reboot.h 2009-12-02 22:51:21.000000000 -0500
18210 -+++ linux-2.6.32.48/include/linux/reboot.h 2011-11-12 12:46:47.000000000 -0500
18211 +diff -urNp linux-2.6.32.46/include/linux/reboot.h linux-2.6.32.46/include/linux/reboot.h
18212 +--- linux-2.6.32.46/include/linux/reboot.h 2011-03-27 14:31:47.000000000 -0400
18213 ++++ linux-2.6.32.46/include/linux/reboot.h 2011-05-22 23:02:06.000000000 -0400
18214 @@ -47,9 +47,9 @@ extern int unregister_reboot_notifier(st
18215 * Architecture-specific implementations of sys_reboot commands.
18216 */
18217 @@ -63969,9 +64005,9 @@ diff -urNp linux-2.6.32.48/include/linux/reboot.h linux-2.6.32.48/include/linux/
18218 #include <asm/emergency-restart.h>
18219
18220 #endif
18221 -diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs.h linux-2.6.32.48/include/linux/reiserfs_fs.h
18222 ---- linux-2.6.32.48/include/linux/reiserfs_fs.h 2009-12-02 22:51:21.000000000 -0500
18223 -+++ linux-2.6.32.48/include/linux/reiserfs_fs.h 2011-11-12 12:46:47.000000000 -0500
18224 +diff -urNp linux-2.6.32.46/include/linux/reiserfs_fs.h linux-2.6.32.46/include/linux/reiserfs_fs.h
18225 +--- linux-2.6.32.46/include/linux/reiserfs_fs.h 2011-03-27 14:31:47.000000000 -0400
18226 ++++ linux-2.6.32.46/include/linux/reiserfs_fs.h 2011-04-17 15:56:46.000000000 -0400
18227 @@ -1326,7 +1326,7 @@ static inline loff_t max_reiserfs_offset
18228 #define REISERFS_USER_MEM 1 /* reiserfs user memory mode */
18229
18230 @@ -64018,9 +64054,9 @@ diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs.h linux-2.6.32.48/include/l
18231
18232 #define op_bytes_number(ih,bsize) item_ops[le_ih_k_type (ih)]->bytes_number (ih, bsize)
18233 #define op_is_left_mergeable(key,bsize) item_ops[le_key_k_type (le_key_version (key), key)]->is_left_mergeable (key, bsize)
18234 -diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs_sb.h linux-2.6.32.48/include/linux/reiserfs_fs_sb.h
18235 ---- linux-2.6.32.48/include/linux/reiserfs_fs_sb.h 2009-12-02 22:51:21.000000000 -0500
18236 -+++ linux-2.6.32.48/include/linux/reiserfs_fs_sb.h 2011-11-12 12:46:47.000000000 -0500
18237 +diff -urNp linux-2.6.32.46/include/linux/reiserfs_fs_sb.h linux-2.6.32.46/include/linux/reiserfs_fs_sb.h
18238 +--- linux-2.6.32.46/include/linux/reiserfs_fs_sb.h 2011-03-27 14:31:47.000000000 -0400
18239 ++++ linux-2.6.32.46/include/linux/reiserfs_fs_sb.h 2011-04-17 15:56:46.000000000 -0400
18240 @@ -377,7 +377,7 @@ struct reiserfs_sb_info {
18241 /* Comment? -Hans */
18242 wait_queue_head_t s_wait;
18243 @@ -64030,9 +64066,9 @@ diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs_sb.h linux-2.6.32.48/includ
18244 // tree gets re-balanced
18245 unsigned long s_properties; /* File system properties. Currently holds
18246 on-disk FS format */
18247 -diff -urNp linux-2.6.32.48/include/linux/relay.h linux-2.6.32.48/include/linux/relay.h
18248 ---- linux-2.6.32.48/include/linux/relay.h 2009-12-02 22:51:21.000000000 -0500
18249 -+++ linux-2.6.32.48/include/linux/relay.h 2011-11-12 12:46:47.000000000 -0500
18250 +diff -urNp linux-2.6.32.46/include/linux/relay.h linux-2.6.32.46/include/linux/relay.h
18251 +--- linux-2.6.32.46/include/linux/relay.h 2011-03-27 14:31:47.000000000 -0400
18252 ++++ linux-2.6.32.46/include/linux/relay.h 2011-08-05 20:33:55.000000000 -0400
18253 @@ -159,7 +159,7 @@ struct rchan_callbacks
18254 * The callback should return 0 if successful, negative if not.
18255 */
18256 @@ -64042,9 +64078,9 @@ diff -urNp linux-2.6.32.48/include/linux/relay.h linux-2.6.32.48/include/linux/r
18257
18258 /*
18259 * CONFIG_RELAY kernel API, kernel/relay.c
18260 -diff -urNp linux-2.6.32.48/include/linux/rfkill.h linux-2.6.32.48/include/linux/rfkill.h
18261 ---- linux-2.6.32.48/include/linux/rfkill.h 2009-12-02 22:51:21.000000000 -0500
18262 -+++ linux-2.6.32.48/include/linux/rfkill.h 2011-11-12 12:46:47.000000000 -0500
18263 +diff -urNp linux-2.6.32.46/include/linux/rfkill.h linux-2.6.32.46/include/linux/rfkill.h
18264 +--- linux-2.6.32.46/include/linux/rfkill.h 2011-03-27 14:31:47.000000000 -0400
18265 ++++ linux-2.6.32.46/include/linux/rfkill.h 2011-08-23 21:22:38.000000000 -0400
18266 @@ -144,6 +144,7 @@ struct rfkill_ops {
18267 void (*query)(struct rfkill *rfkill, void *data);
18268 int (*set_block)(void *data, bool blocked);
18269 @@ -64053,9 +64089,9 @@ diff -urNp linux-2.6.32.48/include/linux/rfkill.h linux-2.6.32.48/include/linux/
18270
18271 #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
18272 /**
18273 -diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/sched.h
18274 ---- linux-2.6.32.48/include/linux/sched.h 2011-11-12 12:44:30.000000000 -0500
18275 -+++ linux-2.6.32.48/include/linux/sched.h 2011-11-12 12:46:47.000000000 -0500
18276 +diff -urNp linux-2.6.32.46/include/linux/sched.h linux-2.6.32.46/include/linux/sched.h
18277 +--- linux-2.6.32.46/include/linux/sched.h 2011-03-27 14:31:47.000000000 -0400
18278 ++++ linux-2.6.32.46/include/linux/sched.h 2011-08-11 19:48:55.000000000 -0400
18279 @@ -101,6 +101,7 @@ struct bio;
18280 struct fs_struct;
18281 struct bts_context;
18282 @@ -64316,9 +64352,9 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
18283 extern void thread_info_cache_init(void);
18284
18285 #ifdef CONFIG_DEBUG_STACK_USAGE
18286 -diff -urNp linux-2.6.32.48/include/linux/screen_info.h linux-2.6.32.48/include/linux/screen_info.h
18287 ---- linux-2.6.32.48/include/linux/screen_info.h 2009-12-02 22:51:21.000000000 -0500
18288 -+++ linux-2.6.32.48/include/linux/screen_info.h 2011-11-12 12:46:47.000000000 -0500
18289 +diff -urNp linux-2.6.32.46/include/linux/screen_info.h linux-2.6.32.46/include/linux/screen_info.h
18290 +--- linux-2.6.32.46/include/linux/screen_info.h 2011-03-27 14:31:47.000000000 -0400
18291 ++++ linux-2.6.32.46/include/linux/screen_info.h 2011-04-17 15:56:46.000000000 -0400
18292 @@ -42,7 +42,8 @@ struct screen_info {
18293 __u16 pages; /* 0x32 */
18294 __u16 vesa_attributes; /* 0x34 */
18295 @@ -64329,9 +64365,9 @@ diff -urNp linux-2.6.32.48/include/linux/screen_info.h linux-2.6.32.48/include/l
18296 } __attribute__((packed));
18297
18298 #define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */
18299 -diff -urNp linux-2.6.32.48/include/linux/security.h linux-2.6.32.48/include/linux/security.h
18300 ---- linux-2.6.32.48/include/linux/security.h 2011-11-12 12:44:30.000000000 -0500
18301 -+++ linux-2.6.32.48/include/linux/security.h 2011-11-12 12:46:47.000000000 -0500
18302 +diff -urNp linux-2.6.32.46/include/linux/security.h linux-2.6.32.46/include/linux/security.h
18303 +--- linux-2.6.32.46/include/linux/security.h 2011-03-27 14:31:47.000000000 -0400
18304 ++++ linux-2.6.32.46/include/linux/security.h 2011-04-17 15:56:46.000000000 -0400
18305 @@ -34,6 +34,7 @@
18306 #include <linux/key.h>
18307 #include <linux/xfrm.h>
18308 @@ -64340,9 +64376,9 @@ diff -urNp linux-2.6.32.48/include/linux/security.h linux-2.6.32.48/include/linu
18309 #include <net/flow.h>
18310
18311 /* Maximum number of letters for an LSM name string */
18312 -diff -urNp linux-2.6.32.48/include/linux/seq_file.h linux-2.6.32.48/include/linux/seq_file.h
18313 ---- linux-2.6.32.48/include/linux/seq_file.h 2009-12-02 22:51:21.000000000 -0500
18314 -+++ linux-2.6.32.48/include/linux/seq_file.h 2011-11-12 12:46:47.000000000 -0500
18315 +diff -urNp linux-2.6.32.46/include/linux/seq_file.h linux-2.6.32.46/include/linux/seq_file.h
18316 +--- linux-2.6.32.46/include/linux/seq_file.h 2011-03-27 14:31:47.000000000 -0400
18317 ++++ linux-2.6.32.46/include/linux/seq_file.h 2011-08-23 21:22:38.000000000 -0400
18318 @@ -32,6 +32,7 @@ struct seq_operations {
18319 void * (*next) (struct seq_file *m, void *v, loff_t *pos);
18320 int (*show) (struct seq_file *m, void *v);
18321 @@ -64351,9 +64387,9 @@ diff -urNp linux-2.6.32.48/include/linux/seq_file.h linux-2.6.32.48/include/linu
18322
18323 #define SEQ_SKIP 1
18324
18325 -diff -urNp linux-2.6.32.48/include/linux/shm.h linux-2.6.32.48/include/linux/shm.h
18326 ---- linux-2.6.32.48/include/linux/shm.h 2009-12-02 22:51:21.000000000 -0500
18327 -+++ linux-2.6.32.48/include/linux/shm.h 2011-11-12 12:46:47.000000000 -0500
18328 +diff -urNp linux-2.6.32.46/include/linux/shm.h linux-2.6.32.46/include/linux/shm.h
18329 +--- linux-2.6.32.46/include/linux/shm.h 2011-03-27 14:31:47.000000000 -0400
18330 ++++ linux-2.6.32.46/include/linux/shm.h 2011-04-17 15:56:46.000000000 -0400
18331 @@ -95,6 +95,10 @@ struct shmid_kernel /* private to the ke
18332 pid_t shm_cprid;
18333 pid_t shm_lprid;
18334 @@ -64365,9 +64401,9 @@ diff -urNp linux-2.6.32.48/include/linux/shm.h linux-2.6.32.48/include/linux/shm
18335 };
18336
18337 /* shm_mode upper byte flags */
18338 -diff -urNp linux-2.6.32.48/include/linux/skbuff.h linux-2.6.32.48/include/linux/skbuff.h
18339 ---- linux-2.6.32.48/include/linux/skbuff.h 2009-12-02 22:51:21.000000000 -0500
18340 -+++ linux-2.6.32.48/include/linux/skbuff.h 2011-11-12 12:46:47.000000000 -0500
18341 +diff -urNp linux-2.6.32.46/include/linux/skbuff.h linux-2.6.32.46/include/linux/skbuff.h
18342 +--- linux-2.6.32.46/include/linux/skbuff.h 2011-03-27 14:31:47.000000000 -0400
18343 ++++ linux-2.6.32.46/include/linux/skbuff.h 2011-08-21 15:27:56.000000000 -0400
18344 @@ -14,6 +14,7 @@
18345 #ifndef _LINUX_SKBUFF_H
18346 #define _LINUX_SKBUFF_H
18347 @@ -64412,9 +64448,9 @@ diff -urNp linux-2.6.32.48/include/linux/skbuff.h linux-2.6.32.48/include/linux/
18348 #endif
18349
18350 extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
18351 -diff -urNp linux-2.6.32.48/include/linux/slab_def.h linux-2.6.32.48/include/linux/slab_def.h
18352 ---- linux-2.6.32.48/include/linux/slab_def.h 2009-12-02 22:51:21.000000000 -0500
18353 -+++ linux-2.6.32.48/include/linux/slab_def.h 2011-11-12 12:46:47.000000000 -0500
18354 +diff -urNp linux-2.6.32.46/include/linux/slab_def.h linux-2.6.32.46/include/linux/slab_def.h
18355 +--- linux-2.6.32.46/include/linux/slab_def.h 2011-03-27 14:31:47.000000000 -0400
18356 ++++ linux-2.6.32.46/include/linux/slab_def.h 2011-05-04 17:56:28.000000000 -0400
18357 @@ -69,10 +69,10 @@ struct kmem_cache {
18358 unsigned long node_allocs;
18359 unsigned long node_frees;
18360 @@ -64430,9 +64466,9 @@ diff -urNp linux-2.6.32.48/include/linux/slab_def.h linux-2.6.32.48/include/linu
18361
18362 /*
18363 * If debugging is enabled, then the allocator can add additional
18364 -diff -urNp linux-2.6.32.48/include/linux/slab.h linux-2.6.32.48/include/linux/slab.h
18365 ---- linux-2.6.32.48/include/linux/slab.h 2009-12-02 22:51:21.000000000 -0500
18366 -+++ linux-2.6.32.48/include/linux/slab.h 2011-11-12 12:46:47.000000000 -0500
18367 +diff -urNp linux-2.6.32.46/include/linux/slab.h linux-2.6.32.46/include/linux/slab.h
18368 +--- linux-2.6.32.46/include/linux/slab.h 2011-03-27 14:31:47.000000000 -0400
18369 ++++ linux-2.6.32.46/include/linux/slab.h 2011-04-17 15:56:46.000000000 -0400
18370 @@ -11,12 +11,20 @@
18371
18372 #include <linux/gfp.h>
18373 @@ -64517,9 +64553,9 @@ diff -urNp linux-2.6.32.48/include/linux/slab.h linux-2.6.32.48/include/linux/sl
18374 +})
18375 +
18376 #endif /* _LINUX_SLAB_H */
18377 -diff -urNp linux-2.6.32.48/include/linux/slub_def.h linux-2.6.32.48/include/linux/slub_def.h
18378 ---- linux-2.6.32.48/include/linux/slub_def.h 2009-12-02 22:51:21.000000000 -0500
18379 -+++ linux-2.6.32.48/include/linux/slub_def.h 2011-11-12 12:46:47.000000000 -0500
18380 +diff -urNp linux-2.6.32.46/include/linux/slub_def.h linux-2.6.32.46/include/linux/slub_def.h
18381 +--- linux-2.6.32.46/include/linux/slub_def.h 2011-03-27 14:31:47.000000000 -0400
18382 ++++ linux-2.6.32.46/include/linux/slub_def.h 2011-08-05 20:33:55.000000000 -0400
18383 @@ -86,7 +86,7 @@ struct kmem_cache {
18384 struct kmem_cache_order_objects max;
18385 struct kmem_cache_order_objects min;
18386 @@ -64538,9 +64574,9 @@ diff -urNp linux-2.6.32.48/include/linux/slub_def.h linux-2.6.32.48/include/linu
18387
18388 #ifdef CONFIG_KMEMTRACE
18389 extern void *kmem_cache_alloc_notrace(struct kmem_cache *s, gfp_t gfpflags);
18390 -diff -urNp linux-2.6.32.48/include/linux/sonet.h linux-2.6.32.48/include/linux/sonet.h
18391 ---- linux-2.6.32.48/include/linux/sonet.h 2009-12-02 22:51:21.000000000 -0500
18392 -+++ linux-2.6.32.48/include/linux/sonet.h 2011-11-12 12:46:47.000000000 -0500
18393 +diff -urNp linux-2.6.32.46/include/linux/sonet.h linux-2.6.32.46/include/linux/sonet.h
18394 +--- linux-2.6.32.46/include/linux/sonet.h 2011-03-27 14:31:47.000000000 -0400
18395 ++++ linux-2.6.32.46/include/linux/sonet.h 2011-04-17 15:56:46.000000000 -0400
18396 @@ -61,7 +61,7 @@ struct sonet_stats {
18397 #include <asm/atomic.h>
18398
18399 @@ -64550,9 +64586,9 @@ diff -urNp linux-2.6.32.48/include/linux/sonet.h linux-2.6.32.48/include/linux/s
18400 __SONET_ITEMS
18401 #undef __HANDLE_ITEM
18402 };
18403 -diff -urNp linux-2.6.32.48/include/linux/sunrpc/cache.h linux-2.6.32.48/include/linux/sunrpc/cache.h
18404 ---- linux-2.6.32.48/include/linux/sunrpc/cache.h 2009-12-02 22:51:21.000000000 -0500
18405 -+++ linux-2.6.32.48/include/linux/sunrpc/cache.h 2011-11-12 12:46:47.000000000 -0500
18406 +diff -urNp linux-2.6.32.46/include/linux/sunrpc/cache.h linux-2.6.32.46/include/linux/sunrpc/cache.h
18407 +--- linux-2.6.32.46/include/linux/sunrpc/cache.h 2011-03-27 14:31:47.000000000 -0400
18408 ++++ linux-2.6.32.46/include/linux/sunrpc/cache.h 2011-08-05 20:33:55.000000000 -0400
18409 @@ -125,7 +125,7 @@ struct cache_detail {
18410 */
18411 struct cache_req {
18412 @@ -64562,9 +64598,9 @@ diff -urNp linux-2.6.32.48/include/linux/sunrpc/cache.h linux-2.6.32.48/include/
18413 /* this must be embedded in a deferred_request that is being
18414 * delayed awaiting cache-fill
18415 */
18416 -diff -urNp linux-2.6.32.48/include/linux/sunrpc/clnt.h linux-2.6.32.48/include/linux/sunrpc/clnt.h
18417 ---- linux-2.6.32.48/include/linux/sunrpc/clnt.h 2009-12-02 22:51:21.000000000 -0500
18418 -+++ linux-2.6.32.48/include/linux/sunrpc/clnt.h 2011-11-12 12:46:47.000000000 -0500
18419 +diff -urNp linux-2.6.32.46/include/linux/sunrpc/clnt.h linux-2.6.32.46/include/linux/sunrpc/clnt.h
18420 +--- linux-2.6.32.46/include/linux/sunrpc/clnt.h 2011-03-27 14:31:47.000000000 -0400
18421 ++++ linux-2.6.32.46/include/linux/sunrpc/clnt.h 2011-04-17 15:56:46.000000000 -0400
18422 @@ -167,9 +167,9 @@ static inline unsigned short rpc_get_por
18423 {
18424 switch (sap->sa_family) {
18425 @@ -64595,9 +64631,9 @@ diff -urNp linux-2.6.32.48/include/linux/sunrpc/clnt.h linux-2.6.32.48/include/l
18426 }
18427
18428 #endif /* __KERNEL__ */
18429 -diff -urNp linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h
18430 ---- linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h 2009-12-02 22:51:21.000000000 -0500
18431 -+++ linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h 2011-11-12 12:46:47.000000000 -0500
18432 +diff -urNp linux-2.6.32.46/include/linux/sunrpc/svc_rdma.h linux-2.6.32.46/include/linux/sunrpc/svc_rdma.h
18433 +--- linux-2.6.32.46/include/linux/sunrpc/svc_rdma.h 2011-03-27 14:31:47.000000000 -0400
18434 ++++ linux-2.6.32.46/include/linux/sunrpc/svc_rdma.h 2011-05-04 17:56:28.000000000 -0400
18435 @@ -53,15 +53,15 @@ extern unsigned int svcrdma_ord;
18436 extern unsigned int svcrdma_max_requests;
18437 extern unsigned int svcrdma_max_req_size;
18438 @@ -64623,9 +64659,9 @@ diff -urNp linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h linux-2.6.32.48/inclu
18439
18440 #define RPCRDMA_VERSION 1
18441
18442 -diff -urNp linux-2.6.32.48/include/linux/suspend.h linux-2.6.32.48/include/linux/suspend.h
18443 ---- linux-2.6.32.48/include/linux/suspend.h 2009-12-02 22:51:21.000000000 -0500
18444 -+++ linux-2.6.32.48/include/linux/suspend.h 2011-11-12 12:46:47.000000000 -0500
18445 +diff -urNp linux-2.6.32.46/include/linux/suspend.h linux-2.6.32.46/include/linux/suspend.h
18446 +--- linux-2.6.32.46/include/linux/suspend.h 2011-03-27 14:31:47.000000000 -0400
18447 ++++ linux-2.6.32.46/include/linux/suspend.h 2011-04-17 15:56:46.000000000 -0400
18448 @@ -104,15 +104,15 @@ typedef int __bitwise suspend_state_t;
18449 * which require special recovery actions in that situation.
18450 */
18451 @@ -64714,9 +64750,9 @@ diff -urNp linux-2.6.32.48/include/linux/suspend.h linux-2.6.32.48/include/linux
18452 static inline int hibernate(void) { return -ENOSYS; }
18453 static inline bool system_entering_hibernation(void) { return false; }
18454 #endif /* CONFIG_HIBERNATION */
18455 -diff -urNp linux-2.6.32.48/include/linux/sysctl.h linux-2.6.32.48/include/linux/sysctl.h
18456 ---- linux-2.6.32.48/include/linux/sysctl.h 2011-11-12 12:44:30.000000000 -0500
18457 -+++ linux-2.6.32.48/include/linux/sysctl.h 2011-11-12 12:46:47.000000000 -0500
18458 +diff -urNp linux-2.6.32.46/include/linux/sysctl.h linux-2.6.32.46/include/linux/sysctl.h
18459 +--- linux-2.6.32.46/include/linux/sysctl.h 2011-03-27 14:31:47.000000000 -0400
18460 ++++ linux-2.6.32.46/include/linux/sysctl.h 2011-04-17 15:56:46.000000000 -0400
18461 @@ -164,7 +164,11 @@ enum
18462 KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
18463 };
18464 @@ -64747,9 +64783,9 @@ diff -urNp linux-2.6.32.48/include/linux/sysctl.h linux-2.6.32.48/include/linux/
18465 extern ctl_handler sysctl_intvec;
18466 extern ctl_handler sysctl_jiffies;
18467 extern ctl_handler sysctl_ms_jiffies;
18468 -diff -urNp linux-2.6.32.48/include/linux/sysfs.h linux-2.6.32.48/include/linux/sysfs.h
18469 ---- linux-2.6.32.48/include/linux/sysfs.h 2009-12-02 22:51:21.000000000 -0500
18470 -+++ linux-2.6.32.48/include/linux/sysfs.h 2011-11-12 12:46:47.000000000 -0500
18471 +diff -urNp linux-2.6.32.46/include/linux/sysfs.h linux-2.6.32.46/include/linux/sysfs.h
18472 +--- linux-2.6.32.46/include/linux/sysfs.h 2011-03-27 14:31:47.000000000 -0400
18473 ++++ linux-2.6.32.46/include/linux/sysfs.h 2011-04-17 15:56:46.000000000 -0400
18474 @@ -75,8 +75,8 @@ struct bin_attribute {
18475 };
18476
18477 @@ -64761,9 +64797,9 @@ diff -urNp linux-2.6.32.48/include/linux/sysfs.h linux-2.6.32.48/include/linux/s
18478 };
18479
18480 struct sysfs_dirent;
18481 -diff -urNp linux-2.6.32.48/include/linux/thread_info.h linux-2.6.32.48/include/linux/thread_info.h
18482 ---- linux-2.6.32.48/include/linux/thread_info.h 2009-12-02 22:51:21.000000000 -0500
18483 -+++ linux-2.6.32.48/include/linux/thread_info.h 2011-11-12 12:46:47.000000000 -0500
18484 +diff -urNp linux-2.6.32.46/include/linux/thread_info.h linux-2.6.32.46/include/linux/thread_info.h
18485 +--- linux-2.6.32.46/include/linux/thread_info.h 2011-03-27 14:31:47.000000000 -0400
18486 ++++ linux-2.6.32.46/include/linux/thread_info.h 2011-04-17 15:56:46.000000000 -0400
18487 @@ -23,7 +23,7 @@ struct restart_block {
18488 };
18489 /* For futex_wait and futex_wait_requeue_pi */
18490 @@ -64773,9 +64809,9 @@ diff -urNp linux-2.6.32.48/include/linux/thread_info.h linux-2.6.32.48/include/l
18491 u32 val;
18492 u32 flags;
18493 u32 bitset;
18494 -diff -urNp linux-2.6.32.48/include/linux/tty.h linux-2.6.32.48/include/linux/tty.h
18495 ---- linux-2.6.32.48/include/linux/tty.h 2011-11-12 12:44:30.000000000 -0500
18496 -+++ linux-2.6.32.48/include/linux/tty.h 2011-11-12 12:46:47.000000000 -0500
18497 +diff -urNp linux-2.6.32.46/include/linux/tty.h linux-2.6.32.46/include/linux/tty.h
18498 +--- linux-2.6.32.46/include/linux/tty.h 2011-03-27 14:31:47.000000000 -0400
18499 ++++ linux-2.6.32.46/include/linux/tty.h 2011-08-05 20:33:55.000000000 -0400
18500 @@ -493,7 +493,6 @@ extern void tty_ldisc_begin(void);
18501 /* This last one is just for the tty layer internals and shouldn't be used elsewhere */
18502 extern void tty_ldisc_enable(struct tty_struct *tty);
18503 @@ -64784,9 +64820,9 @@ diff -urNp linux-2.6.32.48/include/linux/tty.h linux-2.6.32.48/include/linux/tty
18504 /* n_tty.c */
18505 extern struct tty_ldisc_ops tty_ldisc_N_TTY;
18506
18507 -diff -urNp linux-2.6.32.48/include/linux/tty_ldisc.h linux-2.6.32.48/include/linux/tty_ldisc.h
18508 ---- linux-2.6.32.48/include/linux/tty_ldisc.h 2009-12-02 22:51:21.000000000 -0500
18509 -+++ linux-2.6.32.48/include/linux/tty_ldisc.h 2011-11-12 12:46:47.000000000 -0500
18510 +diff -urNp linux-2.6.32.46/include/linux/tty_ldisc.h linux-2.6.32.46/include/linux/tty_ldisc.h
18511 +--- linux-2.6.32.46/include/linux/tty_ldisc.h 2011-03-27 14:31:47.000000000 -0400
18512 ++++ linux-2.6.32.46/include/linux/tty_ldisc.h 2011-04-17 15:56:46.000000000 -0400
18513 @@ -139,7 +139,7 @@ struct tty_ldisc_ops {
18514
18515 struct module *owner;
18516 @@ -64796,9 +64832,9 @@ diff -urNp linux-2.6.32.48/include/linux/tty_ldisc.h linux-2.6.32.48/include/lin
18517 };
18518
18519 struct tty_ldisc {
18520 -diff -urNp linux-2.6.32.48/include/linux/types.h linux-2.6.32.48/include/linux/types.h
18521 ---- linux-2.6.32.48/include/linux/types.h 2009-12-02 22:51:21.000000000 -0500
18522 -+++ linux-2.6.32.48/include/linux/types.h 2011-11-12 12:46:47.000000000 -0500
18523 +diff -urNp linux-2.6.32.46/include/linux/types.h linux-2.6.32.46/include/linux/types.h
18524 +--- linux-2.6.32.46/include/linux/types.h 2011-03-27 14:31:47.000000000 -0400
18525 ++++ linux-2.6.32.46/include/linux/types.h 2011-04-17 15:56:46.000000000 -0400
18526 @@ -191,10 +191,26 @@ typedef struct {
18527 volatile int counter;
18528 } atomic_t;
18529 @@ -64826,9 +64862,9 @@ diff -urNp linux-2.6.32.48/include/linux/types.h linux-2.6.32.48/include/linux/t
18530 #endif
18531
18532 struct ustat {
18533 -diff -urNp linux-2.6.32.48/include/linux/uaccess.h linux-2.6.32.48/include/linux/uaccess.h
18534 ---- linux-2.6.32.48/include/linux/uaccess.h 2009-12-02 22:51:21.000000000 -0500
18535 -+++ linux-2.6.32.48/include/linux/uaccess.h 2011-11-12 12:46:47.000000000 -0500
18536 +diff -urNp linux-2.6.32.46/include/linux/uaccess.h linux-2.6.32.46/include/linux/uaccess.h
18537 +--- linux-2.6.32.46/include/linux/uaccess.h 2011-03-27 14:31:47.000000000 -0400
18538 ++++ linux-2.6.32.46/include/linux/uaccess.h 2011-10-06 09:37:14.000000000 -0400
18539 @@ -76,11 +76,11 @@ static inline unsigned long __copy_from_
18540 long ret; \
18541 mm_segment_t old_fs = get_fs(); \
18542 @@ -64861,9 +64897,9 @@ diff -urNp linux-2.6.32.48/include/linux/uaccess.h linux-2.6.32.48/include/linux
18543 +extern long probe_kernel_write(void *dst, const void *src, size_t size);
18544
18545 #endif /* __LINUX_UACCESS_H__ */
18546 -diff -urNp linux-2.6.32.48/include/linux/unaligned/access_ok.h linux-2.6.32.48/include/linux/unaligned/access_ok.h
18547 ---- linux-2.6.32.48/include/linux/unaligned/access_ok.h 2009-12-02 22:51:21.000000000 -0500
18548 -+++ linux-2.6.32.48/include/linux/unaligned/access_ok.h 2011-11-12 12:46:47.000000000 -0500
18549 +diff -urNp linux-2.6.32.46/include/linux/unaligned/access_ok.h linux-2.6.32.46/include/linux/unaligned/access_ok.h
18550 +--- linux-2.6.32.46/include/linux/unaligned/access_ok.h 2011-03-27 14:31:47.000000000 -0400
18551 ++++ linux-2.6.32.46/include/linux/unaligned/access_ok.h 2011-04-17 15:56:46.000000000 -0400
18552 @@ -6,32 +6,32 @@
18553
18554 static inline u16 get_unaligned_le16(const void *p)
18555 @@ -64903,9 +64939,9 @@ diff -urNp linux-2.6.32.48/include/linux/unaligned/access_ok.h linux-2.6.32.48/i
18556 }
18557
18558 static inline void put_unaligned_le16(u16 val, void *p)
18559 -diff -urNp linux-2.6.32.48/include/linux/vermagic.h linux-2.6.32.48/include/linux/vermagic.h
18560 ---- linux-2.6.32.48/include/linux/vermagic.h 2009-12-02 22:51:21.000000000 -0500
18561 -+++ linux-2.6.32.48/include/linux/vermagic.h 2011-11-12 12:46:47.000000000 -0500
18562 +diff -urNp linux-2.6.32.46/include/linux/vermagic.h linux-2.6.32.46/include/linux/vermagic.h
18563 +--- linux-2.6.32.46/include/linux/vermagic.h 2011-03-27 14:31:47.000000000 -0400
18564 ++++ linux-2.6.32.46/include/linux/vermagic.h 2011-10-08 08:17:48.000000000 -0400
18565 @@ -26,9 +26,28 @@
18566 #define MODULE_ARCH_VERMAGIC ""
18567 #endif
18568 @@ -64936,9 +64972,9 @@ diff -urNp linux-2.6.32.48/include/linux/vermagic.h linux-2.6.32.48/include/linu
18569 + MODULE_ARCH_VERMAGIC \
18570 + MODULE_PAX_REFCOUNT MODULE_CONSTIFY_PLUGIN MODULE_GRSEC
18571
18572 -diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux/vmalloc.h
18573 ---- linux-2.6.32.48/include/linux/vmalloc.h 2011-11-12 12:44:30.000000000 -0500
18574 -+++ linux-2.6.32.48/include/linux/vmalloc.h 2011-11-12 12:46:47.000000000 -0500
18575 +diff -urNp linux-2.6.32.46/include/linux/vmalloc.h linux-2.6.32.46/include/linux/vmalloc.h
18576 +--- linux-2.6.32.46/include/linux/vmalloc.h 2011-03-27 14:31:47.000000000 -0400
18577 ++++ linux-2.6.32.46/include/linux/vmalloc.h 2011-04-17 15:56:46.000000000 -0400
18578 @@ -13,6 +13,11 @@ struct vm_area_struct; /* vma defining
18579 #define VM_MAP 0x00000004 /* vmap()ed pages */
18580 #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
18581 @@ -65033,9 +65069,9 @@ diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux
18582 +})
18583 +
18584 #endif /* _LINUX_VMALLOC_H */
18585 -diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/vmstat.h
18586 ---- linux-2.6.32.48/include/linux/vmstat.h 2011-11-12 12:44:30.000000000 -0500
18587 -+++ linux-2.6.32.48/include/linux/vmstat.h 2011-11-12 12:46:47.000000000 -0500
18588 +diff -urNp linux-2.6.32.46/include/linux/vmstat.h linux-2.6.32.46/include/linux/vmstat.h
18589 +--- linux-2.6.32.46/include/linux/vmstat.h 2011-03-27 14:31:47.000000000 -0400
18590 ++++ linux-2.6.32.46/include/linux/vmstat.h 2011-04-17 15:56:46.000000000 -0400
18591 @@ -136,18 +136,18 @@ static inline void vm_events_fold_cpu(in
18592 /*
18593 * Zone based page accounting with per cpu differentials.
18594 @@ -65099,9 +65135,9 @@ diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/
18595 }
18596
18597 static inline void __dec_zone_page_state(struct page *page,
18598 -diff -urNp linux-2.6.32.48/include/media/saa7146_vv.h linux-2.6.32.48/include/media/saa7146_vv.h
18599 ---- linux-2.6.32.48/include/media/saa7146_vv.h 2009-12-02 22:51:21.000000000 -0500
18600 -+++ linux-2.6.32.48/include/media/saa7146_vv.h 2011-11-12 12:46:47.000000000 -0500
18601 +diff -urNp linux-2.6.32.46/include/media/saa7146_vv.h linux-2.6.32.46/include/media/saa7146_vv.h
18602 +--- linux-2.6.32.46/include/media/saa7146_vv.h 2011-03-27 14:31:47.000000000 -0400
18603 ++++ linux-2.6.32.46/include/media/saa7146_vv.h 2011-08-23 21:22:38.000000000 -0400
18604 @@ -167,7 +167,7 @@ struct saa7146_ext_vv
18605 int (*std_callback)(struct saa7146_dev*, struct saa7146_standard *);
18606
18607 @@ -65111,9 +65147,9 @@ diff -urNp linux-2.6.32.48/include/media/saa7146_vv.h linux-2.6.32.48/include/me
18608 /* pointer to the saa7146 core ops */
18609 const struct v4l2_ioctl_ops *core_ops;
18610
18611 -diff -urNp linux-2.6.32.48/include/media/v4l2-dev.h linux-2.6.32.48/include/media/v4l2-dev.h
18612 ---- linux-2.6.32.48/include/media/v4l2-dev.h 2009-12-02 22:51:21.000000000 -0500
18613 -+++ linux-2.6.32.48/include/media/v4l2-dev.h 2011-11-12 12:46:47.000000000 -0500
18614 +diff -urNp linux-2.6.32.46/include/media/v4l2-dev.h linux-2.6.32.46/include/media/v4l2-dev.h
18615 +--- linux-2.6.32.46/include/media/v4l2-dev.h 2011-03-27 14:31:47.000000000 -0400
18616 ++++ linux-2.6.32.46/include/media/v4l2-dev.h 2011-10-08 08:14:40.000000000 -0400
18617 @@ -34,7 +34,7 @@ struct v4l2_device;
18618 #define V4L2_FL_UNREGISTERED (0)
18619
18620 @@ -65131,9 +65167,9 @@ diff -urNp linux-2.6.32.48/include/media/v4l2-dev.h linux-2.6.32.48/include/medi
18621
18622 /*
18623 * Newer version of video_device, handled by videodev2.c
18624 -diff -urNp linux-2.6.32.48/include/media/v4l2-device.h linux-2.6.32.48/include/media/v4l2-device.h
18625 ---- linux-2.6.32.48/include/media/v4l2-device.h 2009-12-02 22:51:21.000000000 -0500
18626 -+++ linux-2.6.32.48/include/media/v4l2-device.h 2011-11-12 12:46:47.000000000 -0500
18627 +diff -urNp linux-2.6.32.46/include/media/v4l2-device.h linux-2.6.32.46/include/media/v4l2-device.h
18628 +--- linux-2.6.32.46/include/media/v4l2-device.h 2011-03-27 14:31:47.000000000 -0400
18629 ++++ linux-2.6.32.46/include/media/v4l2-device.h 2011-05-04 17:56:28.000000000 -0400
18630 @@ -71,7 +71,7 @@ int __must_check v4l2_device_register(st
18631 this function returns 0. If the name ends with a digit (e.g. cx18),
18632 then the name will be set to cx18-0 since cx180 looks really odd. */
18633 @@ -65143,9 +65179,9 @@ diff -urNp linux-2.6.32.48/include/media/v4l2-device.h linux-2.6.32.48/include/m
18634
18635 /* Set v4l2_dev->dev to NULL. Call when the USB parent disconnects.
18636 Since the parent disappears this ensures that v4l2_dev doesn't have an
18637 -diff -urNp linux-2.6.32.48/include/media/v4l2-ioctl.h linux-2.6.32.48/include/media/v4l2-ioctl.h
18638 ---- linux-2.6.32.48/include/media/v4l2-ioctl.h 2009-12-02 22:51:21.000000000 -0500
18639 -+++ linux-2.6.32.48/include/media/v4l2-ioctl.h 2011-11-12 12:46:47.000000000 -0500
18640 +diff -urNp linux-2.6.32.46/include/media/v4l2-ioctl.h linux-2.6.32.46/include/media/v4l2-ioctl.h
18641 +--- linux-2.6.32.46/include/media/v4l2-ioctl.h 2011-03-27 14:31:47.000000000 -0400
18642 ++++ linux-2.6.32.46/include/media/v4l2-ioctl.h 2011-08-23 21:22:38.000000000 -0400
18643 @@ -243,6 +243,7 @@ struct v4l2_ioctl_ops {
18644 long (*vidioc_default) (struct file *file, void *fh,
18645 int cmd, void *arg);
18646 @@ -65154,9 +65190,9 @@ diff -urNp linux-2.6.32.48/include/media/v4l2-ioctl.h linux-2.6.32.48/include/me
18647
18648
18649 /* v4l debugging and diagnostics */
18650 -diff -urNp linux-2.6.32.48/include/net/flow.h linux-2.6.32.48/include/net/flow.h
18651 ---- linux-2.6.32.48/include/net/flow.h 2009-12-02 22:51:21.000000000 -0500
18652 -+++ linux-2.6.32.48/include/net/flow.h 2011-11-12 12:46:47.000000000 -0500
18653 +diff -urNp linux-2.6.32.46/include/net/flow.h linux-2.6.32.46/include/net/flow.h
18654 +--- linux-2.6.32.46/include/net/flow.h 2011-03-27 14:31:47.000000000 -0400
18655 ++++ linux-2.6.32.46/include/net/flow.h 2011-05-04 17:56:28.000000000 -0400
18656 @@ -92,7 +92,7 @@ typedef int (*flow_resolve_t)(struct net
18657 extern void *flow_cache_lookup(struct net *net, struct flowi *key, u16 family,
18658 u8 dir, flow_resolve_t resolver);
18659 @@ -65166,9 +65202,9 @@ diff -urNp linux-2.6.32.48/include/net/flow.h linux-2.6.32.48/include/net/flow.h
18660
18661 static inline int flow_cache_uli_match(struct flowi *fl1, struct flowi *fl2)
18662 {
18663 -diff -urNp linux-2.6.32.48/include/net/inetpeer.h linux-2.6.32.48/include/net/inetpeer.h
18664 ---- linux-2.6.32.48/include/net/inetpeer.h 2009-12-02 22:51:21.000000000 -0500
18665 -+++ linux-2.6.32.48/include/net/inetpeer.h 2011-11-12 12:46:47.000000000 -0500
18666 +diff -urNp linux-2.6.32.46/include/net/inetpeer.h linux-2.6.32.46/include/net/inetpeer.h
18667 +--- linux-2.6.32.46/include/net/inetpeer.h 2011-03-27 14:31:47.000000000 -0400
18668 ++++ linux-2.6.32.46/include/net/inetpeer.h 2011-04-17 15:56:46.000000000 -0400
18669 @@ -24,7 +24,7 @@ struct inet_peer
18670 __u32 dtime; /* the time of last use of not
18671 * referenced entries */
18672 @@ -65178,9 +65214,9 @@ diff -urNp linux-2.6.32.48/include/net/inetpeer.h linux-2.6.32.48/include/net/in
18673 __u32 tcp_ts;
18674 unsigned long tcp_ts_stamp;
18675 };
18676 -diff -urNp linux-2.6.32.48/include/net/ip_vs.h linux-2.6.32.48/include/net/ip_vs.h
18677 ---- linux-2.6.32.48/include/net/ip_vs.h 2009-12-02 22:51:21.000000000 -0500
18678 -+++ linux-2.6.32.48/include/net/ip_vs.h 2011-11-12 12:46:47.000000000 -0500
18679 +diff -urNp linux-2.6.32.46/include/net/ip_vs.h linux-2.6.32.46/include/net/ip_vs.h
18680 +--- linux-2.6.32.46/include/net/ip_vs.h 2011-03-27 14:31:47.000000000 -0400
18681 ++++ linux-2.6.32.46/include/net/ip_vs.h 2011-05-04 17:56:28.000000000 -0400
18682 @@ -365,7 +365,7 @@ struct ip_vs_conn {
18683 struct ip_vs_conn *control; /* Master control connection */
18684 atomic_t n_control; /* Number of controlled ones */
18685 @@ -65199,9 +65235,9 @@ diff -urNp linux-2.6.32.48/include/net/ip_vs.h linux-2.6.32.48/include/net/ip_vs
18686 atomic_t weight; /* server weight */
18687
18688 atomic_t refcnt; /* reference counter */
18689 -diff -urNp linux-2.6.32.48/include/net/irda/ircomm_core.h linux-2.6.32.48/include/net/irda/ircomm_core.h
18690 ---- linux-2.6.32.48/include/net/irda/ircomm_core.h 2009-12-02 22:51:21.000000000 -0500
18691 -+++ linux-2.6.32.48/include/net/irda/ircomm_core.h 2011-11-12 12:46:47.000000000 -0500
18692 +diff -urNp linux-2.6.32.46/include/net/irda/ircomm_core.h linux-2.6.32.46/include/net/irda/ircomm_core.h
18693 +--- linux-2.6.32.46/include/net/irda/ircomm_core.h 2011-03-27 14:31:47.000000000 -0400
18694 ++++ linux-2.6.32.46/include/net/irda/ircomm_core.h 2011-08-05 20:33:55.000000000 -0400
18695 @@ -51,7 +51,7 @@ typedef struct {
18696 int (*connect_response)(struct ircomm_cb *, struct sk_buff *);
18697 int (*disconnect_request)(struct ircomm_cb *, struct sk_buff *,
18698 @@ -65211,9 +65247,9 @@ diff -urNp linux-2.6.32.48/include/net/irda/ircomm_core.h linux-2.6.32.48/includ
18699
18700 struct ircomm_cb {
18701 irda_queue_t queue;
18702 -diff -urNp linux-2.6.32.48/include/net/irda/ircomm_tty.h linux-2.6.32.48/include/net/irda/ircomm_tty.h
18703 ---- linux-2.6.32.48/include/net/irda/ircomm_tty.h 2009-12-02 22:51:21.000000000 -0500
18704 -+++ linux-2.6.32.48/include/net/irda/ircomm_tty.h 2011-11-12 12:46:47.000000000 -0500
18705 +diff -urNp linux-2.6.32.46/include/net/irda/ircomm_tty.h linux-2.6.32.46/include/net/irda/ircomm_tty.h
18706 +--- linux-2.6.32.46/include/net/irda/ircomm_tty.h 2011-03-27 14:31:47.000000000 -0400
18707 ++++ linux-2.6.32.46/include/net/irda/ircomm_tty.h 2011-04-17 15:56:46.000000000 -0400
18708 @@ -35,6 +35,7 @@
18709 #include <linux/termios.h>
18710 #include <linux/timer.h>
18711 @@ -65233,9 +65269,9 @@ diff -urNp linux-2.6.32.48/include/net/irda/ircomm_tty.h linux-2.6.32.48/include
18712
18713 /* Protect concurent access to :
18714 * o self->open_count
18715 -diff -urNp linux-2.6.32.48/include/net/iucv/af_iucv.h linux-2.6.32.48/include/net/iucv/af_iucv.h
18716 ---- linux-2.6.32.48/include/net/iucv/af_iucv.h 2009-12-02 22:51:21.000000000 -0500
18717 -+++ linux-2.6.32.48/include/net/iucv/af_iucv.h 2011-11-12 12:46:47.000000000 -0500
18718 +diff -urNp linux-2.6.32.46/include/net/iucv/af_iucv.h linux-2.6.32.46/include/net/iucv/af_iucv.h
18719 +--- linux-2.6.32.46/include/net/iucv/af_iucv.h 2011-03-27 14:31:47.000000000 -0400
18720 ++++ linux-2.6.32.46/include/net/iucv/af_iucv.h 2011-05-04 17:56:28.000000000 -0400
18721 @@ -87,7 +87,7 @@ struct iucv_sock {
18722 struct iucv_sock_list {
18723 struct hlist_head head;
18724 @@ -65245,9 +65281,9 @@ diff -urNp linux-2.6.32.48/include/net/iucv/af_iucv.h linux-2.6.32.48/include/ne
18725 };
18726
18727 unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
18728 -diff -urNp linux-2.6.32.48/include/net/lapb.h linux-2.6.32.48/include/net/lapb.h
18729 ---- linux-2.6.32.48/include/net/lapb.h 2009-12-02 22:51:21.000000000 -0500
18730 -+++ linux-2.6.32.48/include/net/lapb.h 2011-11-12 12:46:47.000000000 -0500
18731 +diff -urNp linux-2.6.32.46/include/net/lapb.h linux-2.6.32.46/include/net/lapb.h
18732 +--- linux-2.6.32.46/include/net/lapb.h 2011-03-27 14:31:47.000000000 -0400
18733 ++++ linux-2.6.32.46/include/net/lapb.h 2011-08-05 20:33:55.000000000 -0400
18734 @@ -95,7 +95,7 @@ struct lapb_cb {
18735 struct sk_buff_head write_queue;
18736 struct sk_buff_head ack_queue;
18737 @@ -65257,9 +65293,9 @@ diff -urNp linux-2.6.32.48/include/net/lapb.h linux-2.6.32.48/include/net/lapb.h
18738
18739 /* FRMR control information */
18740 struct lapb_frame frmr_data;
18741 -diff -urNp linux-2.6.32.48/include/net/neighbour.h linux-2.6.32.48/include/net/neighbour.h
18742 ---- linux-2.6.32.48/include/net/neighbour.h 2009-12-02 22:51:21.000000000 -0500
18743 -+++ linux-2.6.32.48/include/net/neighbour.h 2011-11-12 12:46:47.000000000 -0500
18744 +diff -urNp linux-2.6.32.46/include/net/neighbour.h linux-2.6.32.46/include/net/neighbour.h
18745 +--- linux-2.6.32.46/include/net/neighbour.h 2011-03-27 14:31:47.000000000 -0400
18746 ++++ linux-2.6.32.46/include/net/neighbour.h 2011-08-26 20:29:08.000000000 -0400
18747 @@ -131,7 +131,7 @@ struct neigh_ops
18748 int (*connected_output)(struct sk_buff*);
18749 int (*hh_output)(struct sk_buff*);
18750 @@ -65269,9 +65305,9 @@ diff -urNp linux-2.6.32.48/include/net/neighbour.h linux-2.6.32.48/include/net/n
18751
18752 struct pneigh_entry
18753 {
18754 -diff -urNp linux-2.6.32.48/include/net/netlink.h linux-2.6.32.48/include/net/netlink.h
18755 ---- linux-2.6.32.48/include/net/netlink.h 2011-11-12 12:44:30.000000000 -0500
18756 -+++ linux-2.6.32.48/include/net/netlink.h 2011-11-12 12:46:47.000000000 -0500
18757 +diff -urNp linux-2.6.32.46/include/net/netlink.h linux-2.6.32.46/include/net/netlink.h
18758 +--- linux-2.6.32.46/include/net/netlink.h 2011-07-13 17:23:04.000000000 -0400
18759 ++++ linux-2.6.32.46/include/net/netlink.h 2011-08-21 18:08:11.000000000 -0400
18760 @@ -335,7 +335,7 @@ static inline int nlmsg_ok(const struct
18761 {
18762 return (remaining >= (int) sizeof(struct nlmsghdr) &&
18763 @@ -65290,9 +65326,9 @@ diff -urNp linux-2.6.32.48/include/net/netlink.h linux-2.6.32.48/include/net/net
18764 }
18765
18766 /**
18767 -diff -urNp linux-2.6.32.48/include/net/netns/ipv4.h linux-2.6.32.48/include/net/netns/ipv4.h
18768 ---- linux-2.6.32.48/include/net/netns/ipv4.h 2011-11-12 12:44:30.000000000 -0500
18769 -+++ linux-2.6.32.48/include/net/netns/ipv4.h 2011-11-12 12:46:47.000000000 -0500
18770 +diff -urNp linux-2.6.32.46/include/net/netns/ipv4.h linux-2.6.32.46/include/net/netns/ipv4.h
18771 +--- linux-2.6.32.46/include/net/netns/ipv4.h 2011-03-27 14:31:47.000000000 -0400
18772 ++++ linux-2.6.32.46/include/net/netns/ipv4.h 2011-05-04 17:56:28.000000000 -0400
18773 @@ -54,7 +54,7 @@ struct netns_ipv4 {
18774 int current_rt_cache_rebuild_count;
18775
18776 @@ -65302,9 +65338,9 @@ diff -urNp linux-2.6.32.48/include/net/netns/ipv4.h linux-2.6.32.48/include/net/
18777
18778 #ifdef CONFIG_IP_MROUTE
18779 struct sock *mroute_sk;
18780 -diff -urNp linux-2.6.32.48/include/net/sctp/sctp.h linux-2.6.32.48/include/net/sctp/sctp.h
18781 ---- linux-2.6.32.48/include/net/sctp/sctp.h 2009-12-02 22:51:21.000000000 -0500
18782 -+++ linux-2.6.32.48/include/net/sctp/sctp.h 2011-11-12 12:46:47.000000000 -0500
18783 +diff -urNp linux-2.6.32.46/include/net/sctp/sctp.h linux-2.6.32.46/include/net/sctp/sctp.h
18784 +--- linux-2.6.32.46/include/net/sctp/sctp.h 2011-03-27 14:31:47.000000000 -0400
18785 ++++ linux-2.6.32.46/include/net/sctp/sctp.h 2011-04-17 15:56:46.000000000 -0400
18786 @@ -305,8 +305,8 @@ extern int sctp_debug_flag;
18787
18788 #else /* SCTP_DEBUG */
18789 @@ -65316,9 +65352,9 @@ diff -urNp linux-2.6.32.48/include/net/sctp/sctp.h linux-2.6.32.48/include/net/s
18790 #define SCTP_ENABLE_DEBUG
18791 #define SCTP_DISABLE_DEBUG
18792 #define SCTP_ASSERT(expr, str, func)
18793 -diff -urNp linux-2.6.32.48/include/net/secure_seq.h linux-2.6.32.48/include/net/secure_seq.h
18794 ---- linux-2.6.32.48/include/net/secure_seq.h 2011-11-12 12:44:30.000000000 -0500
18795 -+++ linux-2.6.32.48/include/net/secure_seq.h 2011-11-12 12:46:47.000000000 -0500
18796 +diff -urNp linux-2.6.32.46/include/net/secure_seq.h linux-2.6.32.46/include/net/secure_seq.h
18797 +--- linux-2.6.32.46/include/net/secure_seq.h 2011-08-16 20:37:25.000000000 -0400
18798 ++++ linux-2.6.32.46/include/net/secure_seq.h 2011-08-07 19:48:09.000000000 -0400
18799 @@ -7,14 +7,14 @@ extern __u32 secure_ip_id(__be32 daddr);
18800 extern __u32 secure_ipv6_id(const __be32 daddr[4]);
18801 extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
18802 @@ -65338,9 +65374,9 @@ diff -urNp linux-2.6.32.48/include/net/secure_seq.h linux-2.6.32.48/include/net/
18803 + __be16 sport, __be16 dport);
18804
18805 #endif /* _NET_SECURE_SEQ */
18806 -diff -urNp linux-2.6.32.48/include/net/sock.h linux-2.6.32.48/include/net/sock.h
18807 ---- linux-2.6.32.48/include/net/sock.h 2009-12-02 22:51:21.000000000 -0500
18808 -+++ linux-2.6.32.48/include/net/sock.h 2011-11-12 12:46:47.000000000 -0500
18809 +diff -urNp linux-2.6.32.46/include/net/sock.h linux-2.6.32.46/include/net/sock.h
18810 +--- linux-2.6.32.46/include/net/sock.h 2011-03-27 14:31:47.000000000 -0400
18811 ++++ linux-2.6.32.46/include/net/sock.h 2011-08-21 17:24:37.000000000 -0400
18812 @@ -272,7 +272,7 @@ struct sock {
18813 rwlock_t sk_callback_lock;
18814 int sk_err,
18815 @@ -65359,9 +65395,9 @@ diff -urNp linux-2.6.32.48/include/net/sock.h linux-2.6.32.48/include/net/sock.h
18816 int inc)
18817 {
18818 }
18819 -diff -urNp linux-2.6.32.48/include/net/tcp.h linux-2.6.32.48/include/net/tcp.h
18820 ---- linux-2.6.32.48/include/net/tcp.h 2011-11-12 12:44:30.000000000 -0500
18821 -+++ linux-2.6.32.48/include/net/tcp.h 2011-11-12 12:46:47.000000000 -0500
18822 +diff -urNp linux-2.6.32.46/include/net/tcp.h linux-2.6.32.46/include/net/tcp.h
18823 +--- linux-2.6.32.46/include/net/tcp.h 2011-03-27 14:31:47.000000000 -0400
18824 ++++ linux-2.6.32.46/include/net/tcp.h 2011-08-23 21:29:10.000000000 -0400
18825 @@ -1444,8 +1444,8 @@ enum tcp_seq_states {
18826 struct tcp_seq_afinfo {
18827 char *name;
18828 @@ -65373,9 +65409,9 @@ diff -urNp linux-2.6.32.48/include/net/tcp.h linux-2.6.32.48/include/net/tcp.h
18829 };
18830
18831 struct tcp_iter_state {
18832 -diff -urNp linux-2.6.32.48/include/net/udp.h linux-2.6.32.48/include/net/udp.h
18833 ---- linux-2.6.32.48/include/net/udp.h 2009-12-02 22:51:21.000000000 -0500
18834 -+++ linux-2.6.32.48/include/net/udp.h 2011-11-12 12:46:47.000000000 -0500
18835 +diff -urNp linux-2.6.32.46/include/net/udp.h linux-2.6.32.46/include/net/udp.h
18836 +--- linux-2.6.32.46/include/net/udp.h 2011-03-27 14:31:47.000000000 -0400
18837 ++++ linux-2.6.32.46/include/net/udp.h 2011-08-23 21:29:34.000000000 -0400
18838 @@ -187,8 +187,8 @@ struct udp_seq_afinfo {
18839 char *name;
18840 sa_family_t family;
18841 @@ -65387,9 +65423,9 @@ diff -urNp linux-2.6.32.48/include/net/udp.h linux-2.6.32.48/include/net/udp.h
18842 };
18843
18844 struct udp_iter_state {
18845 -diff -urNp linux-2.6.32.48/include/rdma/iw_cm.h linux-2.6.32.48/include/rdma/iw_cm.h
18846 ---- linux-2.6.32.48/include/rdma/iw_cm.h 2009-12-02 22:51:21.000000000 -0500
18847 -+++ linux-2.6.32.48/include/rdma/iw_cm.h 2011-11-12 12:46:47.000000000 -0500
18848 +diff -urNp linux-2.6.32.46/include/rdma/iw_cm.h linux-2.6.32.46/include/rdma/iw_cm.h
18849 +--- linux-2.6.32.46/include/rdma/iw_cm.h 2011-03-27 14:31:47.000000000 -0400
18850 ++++ linux-2.6.32.46/include/rdma/iw_cm.h 2011-08-05 20:33:55.000000000 -0400
18851 @@ -129,7 +129,7 @@ struct iw_cm_verbs {
18852 int backlog);
18853
18854 @@ -65399,9 +65435,9 @@ diff -urNp linux-2.6.32.48/include/rdma/iw_cm.h linux-2.6.32.48/include/rdma/iw_
18855
18856 /**
18857 * iw_create_cm_id - Create an IW CM identifier.
18858 -diff -urNp linux-2.6.32.48/include/scsi/libfc.h linux-2.6.32.48/include/scsi/libfc.h
18859 ---- linux-2.6.32.48/include/scsi/libfc.h 2011-11-12 12:44:30.000000000 -0500
18860 -+++ linux-2.6.32.48/include/scsi/libfc.h 2011-11-12 12:46:47.000000000 -0500
18861 +diff -urNp linux-2.6.32.46/include/scsi/libfc.h linux-2.6.32.46/include/scsi/libfc.h
18862 +--- linux-2.6.32.46/include/scsi/libfc.h 2011-03-27 14:31:47.000000000 -0400
18863 ++++ linux-2.6.32.46/include/scsi/libfc.h 2011-08-23 21:22:38.000000000 -0400
18864 @@ -675,6 +675,7 @@ struct libfc_function_template {
18865 */
18866 void (*disc_stop_final) (struct fc_lport *);
18867 @@ -65419,9 +65455,9 @@ diff -urNp linux-2.6.32.48/include/scsi/libfc.h linux-2.6.32.48/include/scsi/lib
18868 u8 link_up;
18869 u8 qfull;
18870 enum fc_lport_state state;
18871 -diff -urNp linux-2.6.32.48/include/scsi/scsi_device.h linux-2.6.32.48/include/scsi/scsi_device.h
18872 ---- linux-2.6.32.48/include/scsi/scsi_device.h 2011-11-12 12:44:30.000000000 -0500
18873 -+++ linux-2.6.32.48/include/scsi/scsi_device.h 2011-11-12 12:46:47.000000000 -0500
18874 +diff -urNp linux-2.6.32.46/include/scsi/scsi_device.h linux-2.6.32.46/include/scsi/scsi_device.h
18875 +--- linux-2.6.32.46/include/scsi/scsi_device.h 2011-04-17 17:00:52.000000000 -0400
18876 ++++ linux-2.6.32.46/include/scsi/scsi_device.h 2011-05-04 17:56:28.000000000 -0400
18877 @@ -156,9 +156,9 @@ struct scsi_device {
18878 unsigned int max_device_blocked; /* what device_blocked counts down from */
18879 #define SCSI_DEFAULT_DEVICE_BLOCKED 3
18880 @@ -65435,9 +65471,9 @@ diff -urNp linux-2.6.32.48/include/scsi/scsi_device.h linux-2.6.32.48/include/sc
18881
18882 struct device sdev_gendev,
18883 sdev_dev;
18884 -diff -urNp linux-2.6.32.48/include/scsi/scsi_transport_fc.h linux-2.6.32.48/include/scsi/scsi_transport_fc.h
18885 ---- linux-2.6.32.48/include/scsi/scsi_transport_fc.h 2009-12-02 22:51:21.000000000 -0500
18886 -+++ linux-2.6.32.48/include/scsi/scsi_transport_fc.h 2011-11-12 12:46:47.000000000 -0500
18887 +diff -urNp linux-2.6.32.46/include/scsi/scsi_transport_fc.h linux-2.6.32.46/include/scsi/scsi_transport_fc.h
18888 +--- linux-2.6.32.46/include/scsi/scsi_transport_fc.h 2011-03-27 14:31:47.000000000 -0400
18889 ++++ linux-2.6.32.46/include/scsi/scsi_transport_fc.h 2011-08-26 20:19:09.000000000 -0400
18890 @@ -708,7 +708,7 @@ struct fc_function_template {
18891 unsigned long show_host_system_hostname:1;
18892
18893 @@ -65447,9 +65483,9 @@ diff -urNp linux-2.6.32.48/include/scsi/scsi_transport_fc.h linux-2.6.32.48/incl
18894
18895
18896 /**
18897 -diff -urNp linux-2.6.32.48/include/sound/ac97_codec.h linux-2.6.32.48/include/sound/ac97_codec.h
18898 ---- linux-2.6.32.48/include/sound/ac97_codec.h 2009-12-02 22:51:21.000000000 -0500
18899 -+++ linux-2.6.32.48/include/sound/ac97_codec.h 2011-11-12 12:46:47.000000000 -0500
18900 +diff -urNp linux-2.6.32.46/include/sound/ac97_codec.h linux-2.6.32.46/include/sound/ac97_codec.h
18901 +--- linux-2.6.32.46/include/sound/ac97_codec.h 2011-03-27 14:31:47.000000000 -0400
18902 ++++ linux-2.6.32.46/include/sound/ac97_codec.h 2011-04-17 15:56:46.000000000 -0400
18903 @@ -419,15 +419,15 @@
18904 struct snd_ac97;
18905
18906 @@ -65482,9 +65518,9 @@ diff -urNp linux-2.6.32.48/include/sound/ac97_codec.h linux-2.6.32.48/include/so
18907 void *private_data;
18908 void (*private_free) (struct snd_ac97 *ac97);
18909 /* --- */
18910 -diff -urNp linux-2.6.32.48/include/sound/ak4xxx-adda.h linux-2.6.32.48/include/sound/ak4xxx-adda.h
18911 ---- linux-2.6.32.48/include/sound/ak4xxx-adda.h 2009-12-02 22:51:21.000000000 -0500
18912 -+++ linux-2.6.32.48/include/sound/ak4xxx-adda.h 2011-11-12 12:46:47.000000000 -0500
18913 +diff -urNp linux-2.6.32.46/include/sound/ak4xxx-adda.h linux-2.6.32.46/include/sound/ak4xxx-adda.h
18914 +--- linux-2.6.32.46/include/sound/ak4xxx-adda.h 2011-03-27 14:31:47.000000000 -0400
18915 ++++ linux-2.6.32.46/include/sound/ak4xxx-adda.h 2011-08-05 20:33:55.000000000 -0400
18916 @@ -35,7 +35,7 @@ struct snd_ak4xxx_ops {
18917 void (*write)(struct snd_akm4xxx *ak, int chip, unsigned char reg,
18918 unsigned char val);
18919 @@ -65494,9 +65530,9 @@ diff -urNp linux-2.6.32.48/include/sound/ak4xxx-adda.h linux-2.6.32.48/include/s
18920
18921 #define AK4XXX_IMAGE_SIZE (AK4XXX_MAX_CHIPS * 16) /* 64 bytes */
18922
18923 -diff -urNp linux-2.6.32.48/include/sound/hwdep.h linux-2.6.32.48/include/sound/hwdep.h
18924 ---- linux-2.6.32.48/include/sound/hwdep.h 2009-12-02 22:51:21.000000000 -0500
18925 -+++ linux-2.6.32.48/include/sound/hwdep.h 2011-11-12 12:46:47.000000000 -0500
18926 +diff -urNp linux-2.6.32.46/include/sound/hwdep.h linux-2.6.32.46/include/sound/hwdep.h
18927 +--- linux-2.6.32.46/include/sound/hwdep.h 2011-03-27 14:31:47.000000000 -0400
18928 ++++ linux-2.6.32.46/include/sound/hwdep.h 2011-08-05 20:33:55.000000000 -0400
18929 @@ -49,7 +49,7 @@ struct snd_hwdep_ops {
18930 struct snd_hwdep_dsp_status *status);
18931 int (*dsp_load)(struct snd_hwdep *hw,
18932 @@ -65506,9 +65542,9 @@ diff -urNp linux-2.6.32.48/include/sound/hwdep.h linux-2.6.32.48/include/sound/h
18933
18934 struct snd_hwdep {
18935 struct snd_card *card;
18936 -diff -urNp linux-2.6.32.48/include/sound/info.h linux-2.6.32.48/include/sound/info.h
18937 ---- linux-2.6.32.48/include/sound/info.h 2009-12-02 22:51:21.000000000 -0500
18938 -+++ linux-2.6.32.48/include/sound/info.h 2011-11-12 12:46:47.000000000 -0500
18939 +diff -urNp linux-2.6.32.46/include/sound/info.h linux-2.6.32.46/include/sound/info.h
18940 +--- linux-2.6.32.46/include/sound/info.h 2011-03-27 14:31:47.000000000 -0400
18941 ++++ linux-2.6.32.46/include/sound/info.h 2011-08-05 20:33:55.000000000 -0400
18942 @@ -44,7 +44,7 @@ struct snd_info_entry_text {
18943 struct snd_info_buffer *buffer);
18944 void (*write)(struct snd_info_entry *entry,
18945 @@ -65518,9 +65554,9 @@ diff -urNp linux-2.6.32.48/include/sound/info.h linux-2.6.32.48/include/sound/in
18946
18947 struct snd_info_entry_ops {
18948 int (*open)(struct snd_info_entry *entry,
18949 -diff -urNp linux-2.6.32.48/include/sound/pcm.h linux-2.6.32.48/include/sound/pcm.h
18950 ---- linux-2.6.32.48/include/sound/pcm.h 2009-12-02 22:51:21.000000000 -0500
18951 -+++ linux-2.6.32.48/include/sound/pcm.h 2011-11-12 12:46:47.000000000 -0500
18952 +diff -urNp linux-2.6.32.46/include/sound/pcm.h linux-2.6.32.46/include/sound/pcm.h
18953 +--- linux-2.6.32.46/include/sound/pcm.h 2011-03-27 14:31:47.000000000 -0400
18954 ++++ linux-2.6.32.46/include/sound/pcm.h 2011-08-23 21:22:38.000000000 -0400
18955 @@ -80,6 +80,7 @@ struct snd_pcm_ops {
18956 int (*mmap)(struct snd_pcm_substream *substream, struct vm_area_struct *vma);
18957 int (*ack)(struct snd_pcm_substream *substream);
18958 @@ -65529,9 +65565,9 @@ diff -urNp linux-2.6.32.48/include/sound/pcm.h linux-2.6.32.48/include/sound/pcm
18959
18960 /*
18961 *
18962 -diff -urNp linux-2.6.32.48/include/sound/sb16_csp.h linux-2.6.32.48/include/sound/sb16_csp.h
18963 ---- linux-2.6.32.48/include/sound/sb16_csp.h 2009-12-02 22:51:21.000000000 -0500
18964 -+++ linux-2.6.32.48/include/sound/sb16_csp.h 2011-11-12 12:46:47.000000000 -0500
18965 +diff -urNp linux-2.6.32.46/include/sound/sb16_csp.h linux-2.6.32.46/include/sound/sb16_csp.h
18966 +--- linux-2.6.32.46/include/sound/sb16_csp.h 2011-03-27 14:31:47.000000000 -0400
18967 ++++ linux-2.6.32.46/include/sound/sb16_csp.h 2011-08-05 20:33:55.000000000 -0400
18968 @@ -139,7 +139,7 @@ struct snd_sb_csp_ops {
18969 int (*csp_start) (struct snd_sb_csp * p, int sample_width, int channels);
18970 int (*csp_stop) (struct snd_sb_csp * p);
18971 @@ -65541,9 +65577,9 @@ diff -urNp linux-2.6.32.48/include/sound/sb16_csp.h linux-2.6.32.48/include/soun
18972
18973 /*
18974 * CSP private data
18975 -diff -urNp linux-2.6.32.48/include/sound/ymfpci.h linux-2.6.32.48/include/sound/ymfpci.h
18976 ---- linux-2.6.32.48/include/sound/ymfpci.h 2009-12-02 22:51:21.000000000 -0500
18977 -+++ linux-2.6.32.48/include/sound/ymfpci.h 2011-11-12 12:46:47.000000000 -0500
18978 +diff -urNp linux-2.6.32.46/include/sound/ymfpci.h linux-2.6.32.46/include/sound/ymfpci.h
18979 +--- linux-2.6.32.46/include/sound/ymfpci.h 2011-03-27 14:31:47.000000000 -0400
18980 ++++ linux-2.6.32.46/include/sound/ymfpci.h 2011-05-04 17:56:28.000000000 -0400
18981 @@ -358,7 +358,7 @@ struct snd_ymfpci {
18982 spinlock_t reg_lock;
18983 spinlock_t voice_lock;
18984 @@ -65553,9 +65589,9 @@ diff -urNp linux-2.6.32.48/include/sound/ymfpci.h linux-2.6.32.48/include/sound/
18985 struct snd_info_entry *proc_entry;
18986 const struct firmware *dsp_microcode;
18987 const struct firmware *controller_microcode;
18988 -diff -urNp linux-2.6.32.48/include/trace/events/irq.h linux-2.6.32.48/include/trace/events/irq.h
18989 ---- linux-2.6.32.48/include/trace/events/irq.h 2009-12-02 22:51:21.000000000 -0500
18990 -+++ linux-2.6.32.48/include/trace/events/irq.h 2011-11-12 12:46:47.000000000 -0500
18991 +diff -urNp linux-2.6.32.46/include/trace/events/irq.h linux-2.6.32.46/include/trace/events/irq.h
18992 +--- linux-2.6.32.46/include/trace/events/irq.h 2011-03-27 14:31:47.000000000 -0400
18993 ++++ linux-2.6.32.46/include/trace/events/irq.h 2011-04-17 15:56:46.000000000 -0400
18994 @@ -34,7 +34,7 @@
18995 */
18996 TRACE_EVENT(irq_handler_entry,
18997 @@ -65592,9 +65628,9 @@ diff -urNp linux-2.6.32.48/include/trace/events/irq.h linux-2.6.32.48/include/tr
18998
18999 TP_ARGS(h, vec),
19000
19001 -diff -urNp linux-2.6.32.48/include/video/uvesafb.h linux-2.6.32.48/include/video/uvesafb.h
19002 ---- linux-2.6.32.48/include/video/uvesafb.h 2009-12-02 22:51:21.000000000 -0500
19003 -+++ linux-2.6.32.48/include/video/uvesafb.h 2011-11-12 12:46:47.000000000 -0500
19004 +diff -urNp linux-2.6.32.46/include/video/uvesafb.h linux-2.6.32.46/include/video/uvesafb.h
19005 +--- linux-2.6.32.46/include/video/uvesafb.h 2011-03-27 14:31:47.000000000 -0400
19006 ++++ linux-2.6.32.46/include/video/uvesafb.h 2011-04-17 15:56:46.000000000 -0400
19007 @@ -177,6 +177,7 @@ struct uvesafb_par {
19008 u8 ypan; /* 0 - nothing, 1 - ypan, 2 - ywrap */
19009 u8 pmi_setpal; /* PMI for palette changes */
19010 @@ -65603,9 +65639,9 @@ diff -urNp linux-2.6.32.48/include/video/uvesafb.h linux-2.6.32.48/include/video
19011 void *pmi_start;
19012 void *pmi_pal;
19013 u8 *vbe_state_orig; /*
19014 -diff -urNp linux-2.6.32.48/init/do_mounts.c linux-2.6.32.48/init/do_mounts.c
19015 ---- linux-2.6.32.48/init/do_mounts.c 2009-12-02 22:51:21.000000000 -0500
19016 -+++ linux-2.6.32.48/init/do_mounts.c 2011-11-12 12:46:47.000000000 -0500
19017 +diff -urNp linux-2.6.32.46/init/do_mounts.c linux-2.6.32.46/init/do_mounts.c
19018 +--- linux-2.6.32.46/init/do_mounts.c 2011-03-27 14:31:47.000000000 -0400
19019 ++++ linux-2.6.32.46/init/do_mounts.c 2011-04-17 15:56:46.000000000 -0400
19020 @@ -216,11 +216,11 @@ static void __init get_fs_names(char *pa
19021
19022 static int __init do_mount_root(char *name, char *fs, int flags, void *data)
19023 @@ -65651,9 +65687,9 @@ diff -urNp linux-2.6.32.48/init/do_mounts.c linux-2.6.32.48/init/do_mounts.c
19024 + sys_mount((__force char __user *)".", (__force char __user *)"/", NULL, MS_MOVE, NULL);
19025 + sys_chroot((__force char __user *)".");
19026 }
19027 -diff -urNp linux-2.6.32.48/init/do_mounts.h linux-2.6.32.48/init/do_mounts.h
19028 ---- linux-2.6.32.48/init/do_mounts.h 2009-12-02 22:51:21.000000000 -0500
19029 -+++ linux-2.6.32.48/init/do_mounts.h 2011-11-12 12:46:47.000000000 -0500
19030 +diff -urNp linux-2.6.32.46/init/do_mounts.h linux-2.6.32.46/init/do_mounts.h
19031 +--- linux-2.6.32.46/init/do_mounts.h 2011-03-27 14:31:47.000000000 -0400
19032 ++++ linux-2.6.32.46/init/do_mounts.h 2011-10-06 09:37:14.000000000 -0400
19033 @@ -15,15 +15,15 @@ extern int root_mountflags;
19034
19035 static inline int create_dev(char *name, dev_t dev)
19036 @@ -65682,9 +65718,9 @@ diff -urNp linux-2.6.32.48/init/do_mounts.h linux-2.6.32.48/init/do_mounts.h
19037 return 0;
19038 if (!S_ISBLK(stat.st_mode))
19039 return 0;
19040 -diff -urNp linux-2.6.32.48/init/do_mounts_initrd.c linux-2.6.32.48/init/do_mounts_initrd.c
19041 ---- linux-2.6.32.48/init/do_mounts_initrd.c 2009-12-02 22:51:21.000000000 -0500
19042 -+++ linux-2.6.32.48/init/do_mounts_initrd.c 2011-11-12 12:46:47.000000000 -0500
19043 +diff -urNp linux-2.6.32.46/init/do_mounts_initrd.c linux-2.6.32.46/init/do_mounts_initrd.c
19044 +--- linux-2.6.32.46/init/do_mounts_initrd.c 2011-03-27 14:31:47.000000000 -0400
19045 ++++ linux-2.6.32.46/init/do_mounts_initrd.c 2011-10-06 09:37:14.000000000 -0400
19046 @@ -32,7 +32,7 @@ static int __init do_linuxrc(void * shel
19047 sys_close(old_fd);sys_close(root_fd);
19048 sys_close(0);sys_close(1);sys_close(2);
19049 @@ -65768,9 +65804,9 @@ diff -urNp linux-2.6.32.48/init/do_mounts_initrd.c linux-2.6.32.48/init/do_mount
19050 + sys_unlink((const char __force_user *)"/initrd.image");
19051 return 0;
19052 }
19053 -diff -urNp linux-2.6.32.48/init/do_mounts_md.c linux-2.6.32.48/init/do_mounts_md.c
19054 ---- linux-2.6.32.48/init/do_mounts_md.c 2009-12-02 22:51:21.000000000 -0500
19055 -+++ linux-2.6.32.48/init/do_mounts_md.c 2011-11-12 12:46:47.000000000 -0500
19056 +diff -urNp linux-2.6.32.46/init/do_mounts_md.c linux-2.6.32.46/init/do_mounts_md.c
19057 +--- linux-2.6.32.46/init/do_mounts_md.c 2011-03-27 14:31:47.000000000 -0400
19058 ++++ linux-2.6.32.46/init/do_mounts_md.c 2011-10-06 09:37:14.000000000 -0400
19059 @@ -170,7 +170,7 @@ static void __init md_setup_drive(void)
19060 partitioned ? "_d" : "", minor,
19061 md_setup_args[ent].device_names);
19062 @@ -65798,9 +65834,9 @@ diff -urNp linux-2.6.32.48/init/do_mounts_md.c linux-2.6.32.48/init/do_mounts_md
19063 if (fd >= 0) {
19064 sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
19065 sys_close(fd);
19066 -diff -urNp linux-2.6.32.48/init/initramfs.c linux-2.6.32.48/init/initramfs.c
19067 ---- linux-2.6.32.48/init/initramfs.c 2011-11-12 12:44:30.000000000 -0500
19068 -+++ linux-2.6.32.48/init/initramfs.c 2011-11-12 12:46:47.000000000 -0500
19069 +diff -urNp linux-2.6.32.46/init/initramfs.c linux-2.6.32.46/init/initramfs.c
19070 +--- linux-2.6.32.46/init/initramfs.c 2011-03-27 14:31:47.000000000 -0400
19071 ++++ linux-2.6.32.46/init/initramfs.c 2011-10-06 09:37:14.000000000 -0400
19072 @@ -74,7 +74,7 @@ static void __init free_hash(void)
19073 }
19074 }
19075 @@ -65909,9 +65945,9 @@ diff -urNp linux-2.6.32.48/init/initramfs.c linux-2.6.32.48/init/initramfs.c
19076 state = SkipIt;
19077 next_state = Reset;
19078 return 0;
19079 -diff -urNp linux-2.6.32.48/init/Kconfig linux-2.6.32.48/init/Kconfig
19080 ---- linux-2.6.32.48/init/Kconfig 2011-11-12 12:44:30.000000000 -0500
19081 -+++ linux-2.6.32.48/init/Kconfig 2011-11-12 12:46:47.000000000 -0500
19082 +diff -urNp linux-2.6.32.46/init/Kconfig linux-2.6.32.46/init/Kconfig
19083 +--- linux-2.6.32.46/init/Kconfig 2011-05-10 22:12:01.000000000 -0400
19084 ++++ linux-2.6.32.46/init/Kconfig 2011-05-10 22:12:34.000000000 -0400
19085 @@ -1004,7 +1004,7 @@ config SLUB_DEBUG
19086
19087 config COMPAT_BRK
19088 @@ -65921,9 +65957,9 @@ diff -urNp linux-2.6.32.48/init/Kconfig linux-2.6.32.48/init/Kconfig
19089 help
19090 Randomizing heap placement makes heap exploits harder, but it
19091 also breaks ancient binaries (including anything libc5 based).
19092 -diff -urNp linux-2.6.32.48/init/main.c linux-2.6.32.48/init/main.c
19093 ---- linux-2.6.32.48/init/main.c 2011-11-12 12:44:30.000000000 -0500
19094 -+++ linux-2.6.32.48/init/main.c 2011-11-12 12:46:47.000000000 -0500
19095 +diff -urNp linux-2.6.32.46/init/main.c linux-2.6.32.46/init/main.c
19096 +--- linux-2.6.32.46/init/main.c 2011-05-10 22:12:01.000000000 -0400
19097 ++++ linux-2.6.32.46/init/main.c 2011-10-06 09:37:14.000000000 -0400
19098 @@ -97,6 +97,7 @@ static inline void mark_rodata_ro(void)
19099 #ifdef CONFIG_TC
19100 extern void tc_init(void);
19101 @@ -66067,9 +66103,9 @@ diff -urNp linux-2.6.32.48/init/main.c linux-2.6.32.48/init/main.c
19102 /*
19103 * Ok, we have completed the initial bootup, and
19104 * we're essentially up and running. Get rid of the
19105 -diff -urNp linux-2.6.32.48/init/noinitramfs.c linux-2.6.32.48/init/noinitramfs.c
19106 ---- linux-2.6.32.48/init/noinitramfs.c 2009-12-02 22:51:21.000000000 -0500
19107 -+++ linux-2.6.32.48/init/noinitramfs.c 2011-11-12 12:46:47.000000000 -0500
19108 +diff -urNp linux-2.6.32.46/init/noinitramfs.c linux-2.6.32.46/init/noinitramfs.c
19109 +--- linux-2.6.32.46/init/noinitramfs.c 2011-03-27 14:31:47.000000000 -0400
19110 ++++ linux-2.6.32.46/init/noinitramfs.c 2011-04-17 15:56:46.000000000 -0400
19111 @@ -29,7 +29,7 @@ static int __init default_rootfs(void)
19112 {
19113 int err;
19114 @@ -66088,9 +66124,9 @@ diff -urNp linux-2.6.32.48/init/noinitramfs.c linux-2.6.32.48/init/noinitramfs.c
19115 if (err < 0)
19116 goto out;
19117
19118 -diff -urNp linux-2.6.32.48/ipc/mqueue.c linux-2.6.32.48/ipc/mqueue.c
19119 ---- linux-2.6.32.48/ipc/mqueue.c 2011-11-12 12:44:30.000000000 -0500
19120 -+++ linux-2.6.32.48/ipc/mqueue.c 2011-11-12 12:46:47.000000000 -0500
19121 +diff -urNp linux-2.6.32.46/ipc/mqueue.c linux-2.6.32.46/ipc/mqueue.c
19122 +--- linux-2.6.32.46/ipc/mqueue.c 2011-03-27 14:31:47.000000000 -0400
19123 ++++ linux-2.6.32.46/ipc/mqueue.c 2011-04-17 15:56:46.000000000 -0400
19124 @@ -150,6 +150,7 @@ static struct inode *mqueue_get_inode(st
19125 mq_bytes = (mq_msg_tblsz +
19126 (info->attr.mq_maxmsg * info->attr.mq_msgsize));
19127 @@ -66099,9 +66135,9 @@ diff -urNp linux-2.6.32.48/ipc/mqueue.c linux-2.6.32.48/ipc/mqueue.c
19128 spin_lock(&mq_lock);
19129 if (u->mq_bytes + mq_bytes < u->mq_bytes ||
19130 u->mq_bytes + mq_bytes >
19131 -diff -urNp linux-2.6.32.48/ipc/msg.c linux-2.6.32.48/ipc/msg.c
19132 ---- linux-2.6.32.48/ipc/msg.c 2011-11-12 12:44:30.000000000 -0500
19133 -+++ linux-2.6.32.48/ipc/msg.c 2011-11-12 12:46:47.000000000 -0500
19134 +diff -urNp linux-2.6.32.46/ipc/msg.c linux-2.6.32.46/ipc/msg.c
19135 +--- linux-2.6.32.46/ipc/msg.c 2011-03-27 14:31:47.000000000 -0400
19136 ++++ linux-2.6.32.46/ipc/msg.c 2011-08-05 20:33:55.000000000 -0400
19137 @@ -310,18 +310,19 @@ static inline int msg_security(struct ke
19138 return security_msg_queue_associate(msq, msgflg);
19139 }
19140 @@ -66127,9 +66163,9 @@ diff -urNp linux-2.6.32.48/ipc/msg.c linux-2.6.32.48/ipc/msg.c
19141 msg_params.key = key;
19142 msg_params.flg = msgflg;
19143
19144 -diff -urNp linux-2.6.32.48/ipc/sem.c linux-2.6.32.48/ipc/sem.c
19145 ---- linux-2.6.32.48/ipc/sem.c 2011-11-12 12:44:30.000000000 -0500
19146 -+++ linux-2.6.32.48/ipc/sem.c 2011-11-12 12:46:47.000000000 -0500
19147 +diff -urNp linux-2.6.32.46/ipc/sem.c linux-2.6.32.46/ipc/sem.c
19148 +--- linux-2.6.32.46/ipc/sem.c 2011-03-27 14:31:47.000000000 -0400
19149 ++++ linux-2.6.32.46/ipc/sem.c 2011-08-05 20:33:55.000000000 -0400
19150 @@ -309,10 +309,15 @@ static inline int sem_more_checks(struct
19151 return 0;
19152 }
19153 @@ -66176,9 +66212,9 @@ diff -urNp linux-2.6.32.48/ipc/sem.c linux-2.6.32.48/ipc/sem.c
19154 ns = current->nsproxy->ipc_ns;
19155
19156 if (nsops < 1 || semid < 0)
19157 -diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
19158 ---- linux-2.6.32.48/ipc/shm.c 2011-11-12 12:44:30.000000000 -0500
19159 -+++ linux-2.6.32.48/ipc/shm.c 2011-11-12 12:46:47.000000000 -0500
19160 +diff -urNp linux-2.6.32.46/ipc/shm.c linux-2.6.32.46/ipc/shm.c
19161 +--- linux-2.6.32.46/ipc/shm.c 2011-03-27 14:31:47.000000000 -0400
19162 ++++ linux-2.6.32.46/ipc/shm.c 2011-08-05 20:33:55.000000000 -0400
19163 @@ -70,6 +70,14 @@ static void shm_destroy (struct ipc_name
19164 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
19165 #endif
19166 @@ -66256,9 +66292,9 @@ diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
19167 size = i_size_read(path.dentry->d_inode);
19168 shm_unlock(shp);
19169
19170 -diff -urNp linux-2.6.32.48/kernel/acct.c linux-2.6.32.48/kernel/acct.c
19171 ---- linux-2.6.32.48/kernel/acct.c 2011-11-12 12:44:30.000000000 -0500
19172 -+++ linux-2.6.32.48/kernel/acct.c 2011-11-12 12:46:47.000000000 -0500
19173 +diff -urNp linux-2.6.32.46/kernel/acct.c linux-2.6.32.46/kernel/acct.c
19174 +--- linux-2.6.32.46/kernel/acct.c 2011-03-27 14:31:47.000000000 -0400
19175 ++++ linux-2.6.32.46/kernel/acct.c 2011-10-06 09:37:14.000000000 -0400
19176 @@ -579,7 +579,7 @@ static void do_acct_process(struct bsd_a
19177 */
19178 flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
19179 @@ -66268,9 +66304,9 @@ diff -urNp linux-2.6.32.48/kernel/acct.c linux-2.6.32.48/kernel/acct.c
19180 sizeof(acct_t), &file->f_pos);
19181 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
19182 set_fs(fs);
19183 -diff -urNp linux-2.6.32.48/kernel/audit.c linux-2.6.32.48/kernel/audit.c
19184 ---- linux-2.6.32.48/kernel/audit.c 2009-12-02 22:51:21.000000000 -0500
19185 -+++ linux-2.6.32.48/kernel/audit.c 2011-11-12 12:46:47.000000000 -0500
19186 +diff -urNp linux-2.6.32.46/kernel/audit.c linux-2.6.32.46/kernel/audit.c
19187 +--- linux-2.6.32.46/kernel/audit.c 2011-03-27 14:31:47.000000000 -0400
19188 ++++ linux-2.6.32.46/kernel/audit.c 2011-05-04 17:56:28.000000000 -0400
19189 @@ -110,7 +110,7 @@ u32 audit_sig_sid = 0;
19190 3) suppressed due to audit_rate_limit
19191 4) suppressed due to audit_backlog_limit
19192 @@ -66320,9 +66356,9 @@ diff -urNp linux-2.6.32.48/kernel/audit.c linux-2.6.32.48/kernel/audit.c
19193 break;
19194 }
19195 case AUDIT_TTY_SET: {
19196 -diff -urNp linux-2.6.32.48/kernel/auditsc.c linux-2.6.32.48/kernel/auditsc.c
19197 ---- linux-2.6.32.48/kernel/auditsc.c 2009-12-02 22:51:21.000000000 -0500
19198 -+++ linux-2.6.32.48/kernel/auditsc.c 2011-11-12 12:46:47.000000000 -0500
19199 +diff -urNp linux-2.6.32.46/kernel/auditsc.c linux-2.6.32.46/kernel/auditsc.c
19200 +--- linux-2.6.32.46/kernel/auditsc.c 2011-03-27 14:31:47.000000000 -0400
19201 ++++ linux-2.6.32.46/kernel/auditsc.c 2011-05-04 17:56:28.000000000 -0400
19202 @@ -2113,7 +2113,7 @@ int auditsc_get_stamp(struct audit_conte
19203 }
19204
19205 @@ -66341,9 +66377,9 @@ diff -urNp linux-2.6.32.48/kernel/auditsc.c linux-2.6.32.48/kernel/auditsc.c
19206 struct audit_context *context = task->audit_context;
19207
19208 if (context && context->in_syscall) {
19209 -diff -urNp linux-2.6.32.48/kernel/capability.c linux-2.6.32.48/kernel/capability.c
19210 ---- linux-2.6.32.48/kernel/capability.c 2011-11-12 12:44:30.000000000 -0500
19211 -+++ linux-2.6.32.48/kernel/capability.c 2011-11-12 12:46:47.000000000 -0500
19212 +diff -urNp linux-2.6.32.46/kernel/capability.c linux-2.6.32.46/kernel/capability.c
19213 +--- linux-2.6.32.46/kernel/capability.c 2011-03-27 14:31:47.000000000 -0400
19214 ++++ linux-2.6.32.46/kernel/capability.c 2011-04-17 15:56:46.000000000 -0400
19215 @@ -305,10 +305,26 @@ int capable(int cap)
19216 BUG();
19217 }
19218 @@ -66372,9 +66408,9 @@ diff -urNp linux-2.6.32.48/kernel/capability.c linux-2.6.32.48/kernel/capability
19219 +
19220 EXPORT_SYMBOL(capable);
19221 +EXPORT_SYMBOL(capable_nolog);
19222 -diff -urNp linux-2.6.32.48/kernel/cgroup.c linux-2.6.32.48/kernel/cgroup.c
19223 ---- linux-2.6.32.48/kernel/cgroup.c 2011-11-12 12:44:30.000000000 -0500
19224 -+++ linux-2.6.32.48/kernel/cgroup.c 2011-11-12 12:46:47.000000000 -0500
19225 +diff -urNp linux-2.6.32.46/kernel/cgroup.c linux-2.6.32.46/kernel/cgroup.c
19226 +--- linux-2.6.32.46/kernel/cgroup.c 2011-03-27 14:31:47.000000000 -0400
19227 ++++ linux-2.6.32.46/kernel/cgroup.c 2011-05-16 21:46:57.000000000 -0400
19228 @@ -536,6 +536,8 @@ static struct css_set *find_css_set(
19229 struct hlist_head *hhead;
19230 struct cg_cgroup_link *link;
19231 @@ -66384,9 +66420,9 @@ diff -urNp linux-2.6.32.48/kernel/cgroup.c linux-2.6.32.48/kernel/cgroup.c
19232 /* First see if we already have a cgroup group that matches
19233 * the desired set */
19234 read_lock(&css_set_lock);
19235 -diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
19236 ---- linux-2.6.32.48/kernel/compat.c 2011-11-12 12:44:30.000000000 -0500
19237 -+++ linux-2.6.32.48/kernel/compat.c 2011-11-12 12:46:47.000000000 -0500
19238 +diff -urNp linux-2.6.32.46/kernel/compat.c linux-2.6.32.46/kernel/compat.c
19239 +--- linux-2.6.32.46/kernel/compat.c 2011-03-27 14:31:47.000000000 -0400
19240 ++++ linux-2.6.32.46/kernel/compat.c 2011-10-06 09:37:14.000000000 -0400
19241 @@ -108,7 +108,7 @@ static long compat_nanosleep_restart(str
19242 mm_segment_t oldfs;
19243 long ret;
19244 @@ -66535,9 +66571,9 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
19245 set_fs(oldfs);
19246
19247 if ((err == -ERESTART_RESTARTBLOCK) && rmtp &&
19248 -diff -urNp linux-2.6.32.48/kernel/configs.c linux-2.6.32.48/kernel/configs.c
19249 ---- linux-2.6.32.48/kernel/configs.c 2009-12-02 22:51:21.000000000 -0500
19250 -+++ linux-2.6.32.48/kernel/configs.c 2011-11-12 12:46:47.000000000 -0500
19251 +diff -urNp linux-2.6.32.46/kernel/configs.c linux-2.6.32.46/kernel/configs.c
19252 +--- linux-2.6.32.46/kernel/configs.c 2011-03-27 14:31:47.000000000 -0400
19253 ++++ linux-2.6.32.46/kernel/configs.c 2011-04-17 15:56:46.000000000 -0400
19254 @@ -73,8 +73,19 @@ static int __init ikconfig_init(void)
19255 struct proc_dir_entry *entry;
19256
19257 @@ -66558,9 +66594,9 @@ diff -urNp linux-2.6.32.48/kernel/configs.c linux-2.6.32.48/kernel/configs.c
19258 if (!entry)
19259 return -ENOMEM;
19260
19261 -diff -urNp linux-2.6.32.48/kernel/cpu.c linux-2.6.32.48/kernel/cpu.c
19262 ---- linux-2.6.32.48/kernel/cpu.c 2011-11-12 12:44:30.000000000 -0500
19263 -+++ linux-2.6.32.48/kernel/cpu.c 2011-11-12 12:46:47.000000000 -0500
19264 +diff -urNp linux-2.6.32.46/kernel/cpu.c linux-2.6.32.46/kernel/cpu.c
19265 +--- linux-2.6.32.46/kernel/cpu.c 2011-03-27 14:31:47.000000000 -0400
19266 ++++ linux-2.6.32.46/kernel/cpu.c 2011-04-17 15:56:46.000000000 -0400
19267 @@ -19,7 +19,7 @@
19268 /* Serializes the updates to cpu_online_mask, cpu_present_mask */
19269 static DEFINE_MUTEX(cpu_add_remove_lock);
19270 @@ -66570,9 +66606,9 @@ diff -urNp linux-2.6.32.48/kernel/cpu.c linux-2.6.32.48/kernel/cpu.c
19271
19272 /* If set, cpu_up and cpu_down will return -EBUSY and do nothing.
19273 * Should always be manipulated under cpu_add_remove_lock
19274 -diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
19275 ---- linux-2.6.32.48/kernel/cred.c 2011-11-12 12:44:30.000000000 -0500
19276 -+++ linux-2.6.32.48/kernel/cred.c 2011-11-12 12:46:47.000000000 -0500
19277 +diff -urNp linux-2.6.32.46/kernel/cred.c linux-2.6.32.46/kernel/cred.c
19278 +--- linux-2.6.32.46/kernel/cred.c 2011-03-27 14:31:47.000000000 -0400
19279 ++++ linux-2.6.32.46/kernel/cred.c 2011-08-11 19:49:38.000000000 -0400
19280 @@ -160,6 +160,8 @@ static void put_cred_rcu(struct rcu_head
19281 */
19282 void __put_cred(struct cred *cred)
19283 @@ -66721,9 +66757,9 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
19284 ret = security_secctx_to_secid(secctx, strlen(secctx), &secid);
19285 if (ret < 0)
19286 return ret;
19287 -diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
19288 ---- linux-2.6.32.48/kernel/exit.c 2011-11-12 12:44:30.000000000 -0500
19289 -+++ linux-2.6.32.48/kernel/exit.c 2011-11-12 12:46:47.000000000 -0500
19290 +diff -urNp linux-2.6.32.46/kernel/exit.c linux-2.6.32.46/kernel/exit.c
19291 +--- linux-2.6.32.46/kernel/exit.c 2011-03-27 14:31:47.000000000 -0400
19292 ++++ linux-2.6.32.46/kernel/exit.c 2011-08-17 19:19:50.000000000 -0400
19293 @@ -55,6 +55,10 @@
19294 #include <asm/pgtable.h>
19295 #include <asm/mmu_context.h>
19296 @@ -66854,9 +66890,9 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
19297
19298 get_task_struct(p);
19299 read_unlock(&tasklist_lock);
19300 -diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
19301 ---- linux-2.6.32.48/kernel/fork.c 2011-11-12 12:44:30.000000000 -0500
19302 -+++ linux-2.6.32.48/kernel/fork.c 2011-11-12 12:46:47.000000000 -0500
19303 +diff -urNp linux-2.6.32.46/kernel/fork.c linux-2.6.32.46/kernel/fork.c
19304 +--- linux-2.6.32.46/kernel/fork.c 2011-03-27 14:31:47.000000000 -0400
19305 ++++ linux-2.6.32.46/kernel/fork.c 2011-08-11 19:50:07.000000000 -0400
19306 @@ -253,7 +253,7 @@ static struct task_struct *dup_task_stru
19307 *stackend = STACK_END_MAGIC; /* for overflow detection */
19308
19309 @@ -66998,9 +67034,9 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
19310 new_fs = NULL;
19311 else
19312 new_fs = fs;
19313 -diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
19314 ---- linux-2.6.32.48/kernel/futex.c 2011-11-12 12:44:30.000000000 -0500
19315 -+++ linux-2.6.32.48/kernel/futex.c 2011-11-12 12:46:47.000000000 -0500
19316 +diff -urNp linux-2.6.32.46/kernel/futex.c linux-2.6.32.46/kernel/futex.c
19317 +--- linux-2.6.32.46/kernel/futex.c 2011-08-29 22:24:44.000000000 -0400
19318 ++++ linux-2.6.32.46/kernel/futex.c 2011-08-29 22:25:07.000000000 -0400
19319 @@ -54,6 +54,7 @@
19320 #include <linux/mount.h>
19321 #include <linux/pagemap.h>
19322 @@ -67103,9 +67139,9 @@ diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
19323 if (curval == -EFAULT)
19324 futex_cmpxchg_enabled = 1;
19325
19326 -diff -urNp linux-2.6.32.48/kernel/futex_compat.c linux-2.6.32.48/kernel/futex_compat.c
19327 ---- linux-2.6.32.48/kernel/futex_compat.c 2009-12-02 22:51:21.000000000 -0500
19328 -+++ linux-2.6.32.48/kernel/futex_compat.c 2011-11-12 12:46:47.000000000 -0500
19329 +diff -urNp linux-2.6.32.46/kernel/futex_compat.c linux-2.6.32.46/kernel/futex_compat.c
19330 +--- linux-2.6.32.46/kernel/futex_compat.c 2011-03-27 14:31:47.000000000 -0400
19331 ++++ linux-2.6.32.46/kernel/futex_compat.c 2011-04-17 15:56:46.000000000 -0400
19332 @@ -10,6 +10,7 @@
19333 #include <linux/compat.h>
19334 #include <linux/nsproxy.h>
19335 @@ -67143,9 +67179,9 @@ diff -urNp linux-2.6.32.48/kernel/futex_compat.c linux-2.6.32.48/kernel/futex_co
19336 head = p->compat_robust_list;
19337 read_unlock(&tasklist_lock);
19338 }
19339 -diff -urNp linux-2.6.32.48/kernel/gcov/base.c linux-2.6.32.48/kernel/gcov/base.c
19340 ---- linux-2.6.32.48/kernel/gcov/base.c 2009-12-02 22:51:21.000000000 -0500
19341 -+++ linux-2.6.32.48/kernel/gcov/base.c 2011-11-12 12:46:47.000000000 -0500
19342 +diff -urNp linux-2.6.32.46/kernel/gcov/base.c linux-2.6.32.46/kernel/gcov/base.c
19343 +--- linux-2.6.32.46/kernel/gcov/base.c 2011-03-27 14:31:47.000000000 -0400
19344 ++++ linux-2.6.32.46/kernel/gcov/base.c 2011-04-17 15:56:46.000000000 -0400
19345 @@ -102,11 +102,6 @@ void gcov_enable_events(void)
19346 }
19347
19348 @@ -67167,9 +67203,9 @@ diff -urNp linux-2.6.32.48/kernel/gcov/base.c linux-2.6.32.48/kernel/gcov/base.c
19349 if (prev)
19350 prev->next = info->next;
19351 else
19352 -diff -urNp linux-2.6.32.48/kernel/hrtimer.c linux-2.6.32.48/kernel/hrtimer.c
19353 ---- linux-2.6.32.48/kernel/hrtimer.c 2011-11-12 12:44:30.000000000 -0500
19354 -+++ linux-2.6.32.48/kernel/hrtimer.c 2011-11-12 12:46:47.000000000 -0500
19355 +diff -urNp linux-2.6.32.46/kernel/hrtimer.c linux-2.6.32.46/kernel/hrtimer.c
19356 +--- linux-2.6.32.46/kernel/hrtimer.c 2011-03-27 14:31:47.000000000 -0400
19357 ++++ linux-2.6.32.46/kernel/hrtimer.c 2011-04-17 15:56:46.000000000 -0400
19358 @@ -1391,7 +1391,7 @@ void hrtimer_peek_ahead_timers(void)
19359 local_irq_restore(flags);
19360 }
19361 @@ -67179,9 +67215,9 @@ diff -urNp linux-2.6.32.48/kernel/hrtimer.c linux-2.6.32.48/kernel/hrtimer.c
19362 {
19363 hrtimer_peek_ahead_timers();
19364 }
19365 -diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
19366 ---- linux-2.6.32.48/kernel/kallsyms.c 2009-12-02 22:51:21.000000000 -0500
19367 -+++ linux-2.6.32.48/kernel/kallsyms.c 2011-11-12 12:46:47.000000000 -0500
19368 +diff -urNp linux-2.6.32.46/kernel/kallsyms.c linux-2.6.32.46/kernel/kallsyms.c
19369 +--- linux-2.6.32.46/kernel/kallsyms.c 2011-03-27 14:31:47.000000000 -0400
19370 ++++ linux-2.6.32.46/kernel/kallsyms.c 2011-04-17 15:56:46.000000000 -0400
19371 @@ -11,6 +11,9 @@
19372 * Changed the compression method from stem compression to "table lookup"
19373 * compression (see scripts/kallsyms.c for a more complete description)
19374 @@ -67284,9 +67320,9 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
19375 if (!iter)
19376 return -ENOMEM;
19377 reset_iter(iter, 0);
19378 -diff -urNp linux-2.6.32.48/kernel/kexec.c linux-2.6.32.48/kernel/kexec.c
19379 ---- linux-2.6.32.48/kernel/kexec.c 2009-12-02 22:51:21.000000000 -0500
19380 -+++ linux-2.6.32.48/kernel/kexec.c 2011-11-12 12:46:47.000000000 -0500
19381 +diff -urNp linux-2.6.32.46/kernel/kexec.c linux-2.6.32.46/kernel/kexec.c
19382 +--- linux-2.6.32.46/kernel/kexec.c 2011-03-27 14:31:47.000000000 -0400
19383 ++++ linux-2.6.32.46/kernel/kexec.c 2011-10-06 09:37:14.000000000 -0400
19384 @@ -1028,7 +1028,8 @@ asmlinkage long compat_sys_kexec_load(un
19385 unsigned long flags)
19386 {
19387 @@ -67297,9 +67333,9 @@ diff -urNp linux-2.6.32.48/kernel/kexec.c linux-2.6.32.48/kernel/kexec.c
19388 unsigned long i, result;
19389
19390 /* Don't allow clients that don't understand the native
19391 -diff -urNp linux-2.6.32.48/kernel/kgdb.c linux-2.6.32.48/kernel/kgdb.c
19392 ---- linux-2.6.32.48/kernel/kgdb.c 2011-11-12 12:44:30.000000000 -0500
19393 -+++ linux-2.6.32.48/kernel/kgdb.c 2011-11-12 12:46:47.000000000 -0500
19394 +diff -urNp linux-2.6.32.46/kernel/kgdb.c linux-2.6.32.46/kernel/kgdb.c
19395 +--- linux-2.6.32.46/kernel/kgdb.c 2011-04-17 17:00:52.000000000 -0400
19396 ++++ linux-2.6.32.46/kernel/kgdb.c 2011-05-04 17:56:20.000000000 -0400
19397 @@ -86,7 +86,7 @@ static int kgdb_io_module_registered;
19398 /* Guard for recursive entry */
19399 static int exception_level;
19400 @@ -67379,9 +67415,9 @@ diff -urNp linux-2.6.32.48/kernel/kgdb.c linux-2.6.32.48/kernel/kgdb.c
19401 }
19402 EXPORT_SYMBOL_GPL(kgdb_breakpoint);
19403
19404 -diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
19405 ---- linux-2.6.32.48/kernel/kmod.c 2011-11-12 12:44:30.000000000 -0500
19406 -+++ linux-2.6.32.48/kernel/kmod.c 2011-11-12 12:46:47.000000000 -0500
19407 +diff -urNp linux-2.6.32.46/kernel/kmod.c linux-2.6.32.46/kernel/kmod.c
19408 +--- linux-2.6.32.46/kernel/kmod.c 2011-03-27 14:31:47.000000000 -0400
19409 ++++ linux-2.6.32.46/kernel/kmod.c 2011-10-06 09:37:14.000000000 -0400
19410 @@ -65,13 +65,12 @@ char modprobe_path[KMOD_PATH_LEN] = "/sb
19411 * If module auto-loading support is disabled then this function
19412 * becomes a no-operation.
19413 @@ -67426,7 +67462,7 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
19414 /* If modprobe needs a service that is in a module, we get a recursive
19415 * loop. Limit the number of running kmod threads to max_threads/2 or
19416 * MAX_KMOD_CONCURRENT, whichever is the smaller. A cleaner method
19417 -@@ -123,6 +134,48 @@ int __request_module(bool wait, const ch
19418 +@@ -121,6 +132,48 @@ int __request_module(bool wait, const ch
19419 atomic_dec(&kmod_concurrent);
19420 return ret;
19421 }
19422 @@ -67475,7 +67511,7 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
19423 EXPORT_SYMBOL(__request_module);
19424 #endif /* CONFIG_MODULES */
19425
19426 -@@ -228,7 +281,7 @@ static int wait_for_helper(void *data)
19427 +@@ -226,7 +279,7 @@ static int wait_for_helper(void *data)
19428 *
19429 * Thus the __user pointer cast is valid here.
19430 */
19431 @@ -67484,9 +67520,9 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
19432
19433 /*
19434 * If ret is 0, either ____call_usermodehelper failed and the
19435 -diff -urNp linux-2.6.32.48/kernel/kprobes.c linux-2.6.32.48/kernel/kprobes.c
19436 ---- linux-2.6.32.48/kernel/kprobes.c 2009-12-02 22:51:21.000000000 -0500
19437 -+++ linux-2.6.32.48/kernel/kprobes.c 2011-11-12 12:46:47.000000000 -0500
19438 +diff -urNp linux-2.6.32.46/kernel/kprobes.c linux-2.6.32.46/kernel/kprobes.c
19439 +--- linux-2.6.32.46/kernel/kprobes.c 2011-03-27 14:31:47.000000000 -0400
19440 ++++ linux-2.6.32.46/kernel/kprobes.c 2011-04-17 15:56:46.000000000 -0400
19441 @@ -183,7 +183,7 @@ static kprobe_opcode_t __kprobes *__get_
19442 * kernel image and loaded module images reside. This is required
19443 * so x86_64 can correctly handle the %rip-relative fixups.
19444 @@ -67523,9 +67559,9 @@ diff -urNp linux-2.6.32.48/kernel/kprobes.c linux-2.6.32.48/kernel/kprobes.c
19445
19446 head = &kprobe_table[i];
19447 preempt_disable();
19448 -diff -urNp linux-2.6.32.48/kernel/lockdep.c linux-2.6.32.48/kernel/lockdep.c
19449 ---- linux-2.6.32.48/kernel/lockdep.c 2011-11-12 12:44:30.000000000 -0500
19450 -+++ linux-2.6.32.48/kernel/lockdep.c 2011-11-12 12:46:47.000000000 -0500
19451 +diff -urNp linux-2.6.32.46/kernel/lockdep.c linux-2.6.32.46/kernel/lockdep.c
19452 +--- linux-2.6.32.46/kernel/lockdep.c 2011-06-25 12:55:35.000000000 -0400
19453 ++++ linux-2.6.32.46/kernel/lockdep.c 2011-06-25 12:56:37.000000000 -0400
19454 @@ -421,20 +421,20 @@ static struct stack_trace lockdep_init_t
19455 /*
19456 * Various lockdep statistics:
19457 @@ -67599,9 +67635,9 @@ diff -urNp linux-2.6.32.48/kernel/lockdep.c linux-2.6.32.48/kernel/lockdep.c
19458 if (very_verbose(class)) {
19459 printk("\nacquire class [%p] %s", class->key, class->name);
19460 if (class->name_version > 1)
19461 -diff -urNp linux-2.6.32.48/kernel/lockdep_internals.h linux-2.6.32.48/kernel/lockdep_internals.h
19462 ---- linux-2.6.32.48/kernel/lockdep_internals.h 2009-12-02 22:51:21.000000000 -0500
19463 -+++ linux-2.6.32.48/kernel/lockdep_internals.h 2011-11-12 12:46:47.000000000 -0500
19464 +diff -urNp linux-2.6.32.46/kernel/lockdep_internals.h linux-2.6.32.46/kernel/lockdep_internals.h
19465 +--- linux-2.6.32.46/kernel/lockdep_internals.h 2011-03-27 14:31:47.000000000 -0400
19466 ++++ linux-2.6.32.46/kernel/lockdep_internals.h 2011-04-17 15:56:46.000000000 -0400
19467 @@ -113,26 +113,26 @@ lockdep_count_backward_deps(struct lock_
19468 /*
19469 * Various lockdep statistics:
19470 @@ -67649,9 +67685,9 @@ diff -urNp linux-2.6.32.48/kernel/lockdep_internals.h linux-2.6.32.48/kernel/loc
19471 #else
19472 # define debug_atomic_inc(ptr) do { } while (0)
19473 # define debug_atomic_dec(ptr) do { } while (0)
19474 -diff -urNp linux-2.6.32.48/kernel/lockdep_proc.c linux-2.6.32.48/kernel/lockdep_proc.c
19475 ---- linux-2.6.32.48/kernel/lockdep_proc.c 2009-12-02 22:51:21.000000000 -0500
19476 -+++ linux-2.6.32.48/kernel/lockdep_proc.c 2011-11-12 12:46:47.000000000 -0500
19477 +diff -urNp linux-2.6.32.46/kernel/lockdep_proc.c linux-2.6.32.46/kernel/lockdep_proc.c
19478 +--- linux-2.6.32.46/kernel/lockdep_proc.c 2011-03-27 14:31:47.000000000 -0400
19479 ++++ linux-2.6.32.46/kernel/lockdep_proc.c 2011-04-17 15:56:46.000000000 -0400
19480 @@ -39,7 +39,7 @@ static void l_stop(struct seq_file *m, v
19481
19482 static void print_name(struct seq_file *m, struct lock_class *class)
19483 @@ -67661,9 +67697,9 @@ diff -urNp linux-2.6.32.48/kernel/lockdep_proc.c linux-2.6.32.48/kernel/lockdep_
19484 const char *name = class->name;
19485
19486 if (!name) {
19487 -diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
19488 ---- linux-2.6.32.48/kernel/module.c 2011-11-12 12:44:30.000000000 -0500
19489 -+++ linux-2.6.32.48/kernel/module.c 2011-11-12 12:46:47.000000000 -0500
19490 +diff -urNp linux-2.6.32.46/kernel/module.c linux-2.6.32.46/kernel/module.c
19491 +--- linux-2.6.32.46/kernel/module.c 2011-03-27 14:31:47.000000000 -0400
19492 ++++ linux-2.6.32.46/kernel/module.c 2011-04-29 18:52:40.000000000 -0400
19493 @@ -55,6 +55,7 @@
19494 #include <linux/async.h>
19495 #include <linux/percpu.h>
19496 @@ -68304,9 +68340,9 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
19497 mod = NULL;
19498 }
19499 return mod;
19500 -diff -urNp linux-2.6.32.48/kernel/mutex.c linux-2.6.32.48/kernel/mutex.c
19501 ---- linux-2.6.32.48/kernel/mutex.c 2011-11-12 12:44:30.000000000 -0500
19502 -+++ linux-2.6.32.48/kernel/mutex.c 2011-11-12 12:46:47.000000000 -0500
19503 +diff -urNp linux-2.6.32.46/kernel/mutex.c linux-2.6.32.46/kernel/mutex.c
19504 +--- linux-2.6.32.46/kernel/mutex.c 2011-03-27 14:31:47.000000000 -0400
19505 ++++ linux-2.6.32.46/kernel/mutex.c 2011-04-17 15:56:46.000000000 -0400
19506 @@ -169,7 +169,7 @@ __mutex_lock_common(struct mutex *lock,
19507 */
19508
19509 @@ -68344,9 +68380,9 @@ diff -urNp linux-2.6.32.48/kernel/mutex.c linux-2.6.32.48/kernel/mutex.c
19510 mutex_set_owner(lock);
19511
19512 /* set it to 0 if there are no waiters left: */
19513 -diff -urNp linux-2.6.32.48/kernel/mutex-debug.c linux-2.6.32.48/kernel/mutex-debug.c
19514 ---- linux-2.6.32.48/kernel/mutex-debug.c 2009-12-02 22:51:21.000000000 -0500
19515 -+++ linux-2.6.32.48/kernel/mutex-debug.c 2011-11-12 12:46:47.000000000 -0500
19516 +diff -urNp linux-2.6.32.46/kernel/mutex-debug.c linux-2.6.32.46/kernel/mutex-debug.c
19517 +--- linux-2.6.32.46/kernel/mutex-debug.c 2011-03-27 14:31:47.000000000 -0400
19518 ++++ linux-2.6.32.46/kernel/mutex-debug.c 2011-04-17 15:56:46.000000000 -0400
19519 @@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mute
19520 }
19521
19522 @@ -68384,9 +68420,9 @@ diff -urNp linux-2.6.32.48/kernel/mutex-debug.c linux-2.6.32.48/kernel/mutex-deb
19523 DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
19524 mutex_clear_owner(lock);
19525 }
19526 -diff -urNp linux-2.6.32.48/kernel/mutex-debug.h linux-2.6.32.48/kernel/mutex-debug.h
19527 ---- linux-2.6.32.48/kernel/mutex-debug.h 2009-12-02 22:51:21.000000000 -0500
19528 -+++ linux-2.6.32.48/kernel/mutex-debug.h 2011-11-12 12:46:47.000000000 -0500
19529 +diff -urNp linux-2.6.32.46/kernel/mutex-debug.h linux-2.6.32.46/kernel/mutex-debug.h
19530 +--- linux-2.6.32.46/kernel/mutex-debug.h 2011-03-27 14:31:47.000000000 -0400
19531 ++++ linux-2.6.32.46/kernel/mutex-debug.h 2011-04-17 15:56:46.000000000 -0400
19532 @@ -20,16 +20,16 @@ extern void debug_mutex_wake_waiter(stru
19533 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
19534 extern void debug_mutex_add_waiter(struct mutex *lock,
19535 @@ -68407,9 +68443,9 @@ diff -urNp linux-2.6.32.48/kernel/mutex-debug.h linux-2.6.32.48/kernel/mutex-deb
19536 }
19537
19538 static inline void mutex_clear_owner(struct mutex *lock)
19539 -diff -urNp linux-2.6.32.48/kernel/mutex.h linux-2.6.32.48/kernel/mutex.h
19540 ---- linux-2.6.32.48/kernel/mutex.h 2009-12-02 22:51:21.000000000 -0500
19541 -+++ linux-2.6.32.48/kernel/mutex.h 2011-11-12 12:46:47.000000000 -0500
19542 +diff -urNp linux-2.6.32.46/kernel/mutex.h linux-2.6.32.46/kernel/mutex.h
19543 +--- linux-2.6.32.46/kernel/mutex.h 2011-03-27 14:31:47.000000000 -0400
19544 ++++ linux-2.6.32.46/kernel/mutex.h 2011-04-17 15:56:46.000000000 -0400
19545 @@ -19,7 +19,7 @@
19546 #ifdef CONFIG_SMP
19547 static inline void mutex_set_owner(struct mutex *lock)
19548 @@ -68419,9 +68455,9 @@ diff -urNp linux-2.6.32.48/kernel/mutex.h linux-2.6.32.48/kernel/mutex.h
19549 }
19550
19551 static inline void mutex_clear_owner(struct mutex *lock)
19552 -diff -urNp linux-2.6.32.48/kernel/panic.c linux-2.6.32.48/kernel/panic.c
19553 ---- linux-2.6.32.48/kernel/panic.c 2009-12-02 22:51:21.000000000 -0500
19554 -+++ linux-2.6.32.48/kernel/panic.c 2011-11-12 12:46:47.000000000 -0500
19555 +diff -urNp linux-2.6.32.46/kernel/panic.c linux-2.6.32.46/kernel/panic.c
19556 +--- linux-2.6.32.46/kernel/panic.c 2011-03-27 14:31:47.000000000 -0400
19557 ++++ linux-2.6.32.46/kernel/panic.c 2011-04-17 15:56:46.000000000 -0400
19558 @@ -352,7 +352,7 @@ static void warn_slowpath_common(const c
19559 const char *board;
19560
19561 @@ -68441,9 +68477,9 @@ diff -urNp linux-2.6.32.48/kernel/panic.c linux-2.6.32.48/kernel/panic.c
19562 __builtin_return_address(0));
19563 }
19564 EXPORT_SYMBOL(__stack_chk_fail);
19565 -diff -urNp linux-2.6.32.48/kernel/params.c linux-2.6.32.48/kernel/params.c
19566 ---- linux-2.6.32.48/kernel/params.c 2009-12-02 22:51:21.000000000 -0500
19567 -+++ linux-2.6.32.48/kernel/params.c 2011-11-12 12:46:47.000000000 -0500
19568 +diff -urNp linux-2.6.32.46/kernel/params.c linux-2.6.32.46/kernel/params.c
19569 +--- linux-2.6.32.46/kernel/params.c 2011-03-27 14:31:47.000000000 -0400
19570 ++++ linux-2.6.32.46/kernel/params.c 2011-04-17 15:56:46.000000000 -0400
19571 @@ -725,7 +725,7 @@ static ssize_t module_attr_store(struct
19572 return ret;
19573 }
19574 @@ -68462,9 +68498,9 @@ diff -urNp linux-2.6.32.48/kernel/params.c linux-2.6.32.48/kernel/params.c
19575 .filter = uevent_filter,
19576 };
19577
19578 -diff -urNp linux-2.6.32.48/kernel/perf_event.c linux-2.6.32.48/kernel/perf_event.c
19579 ---- linux-2.6.32.48/kernel/perf_event.c 2011-11-12 12:44:30.000000000 -0500
19580 -+++ linux-2.6.32.48/kernel/perf_event.c 2011-11-12 12:46:47.000000000 -0500
19581 +diff -urNp linux-2.6.32.46/kernel/perf_event.c linux-2.6.32.46/kernel/perf_event.c
19582 +--- linux-2.6.32.46/kernel/perf_event.c 2011-08-09 18:35:30.000000000 -0400
19583 ++++ linux-2.6.32.46/kernel/perf_event.c 2011-10-06 09:37:14.000000000 -0400
19584 @@ -77,7 +77,7 @@ int sysctl_perf_event_mlock __read_mostl
19585 */
19586 int sysctl_perf_event_sample_rate __read_mostly = 100000;
19587 @@ -68685,9 +68721,9 @@ diff -urNp linux-2.6.32.48/kernel/perf_event.c linux-2.6.32.48/kernel/perf_event
19588 &parent_event->child_total_time_running);
19589
19590 /*
19591 -diff -urNp linux-2.6.32.48/kernel/pid.c linux-2.6.32.48/kernel/pid.c
19592 ---- linux-2.6.32.48/kernel/pid.c 2011-11-12 12:44:30.000000000 -0500
19593 -+++ linux-2.6.32.48/kernel/pid.c 2011-11-12 12:46:47.000000000 -0500
19594 +diff -urNp linux-2.6.32.46/kernel/pid.c linux-2.6.32.46/kernel/pid.c
19595 +--- linux-2.6.32.46/kernel/pid.c 2011-04-22 19:16:29.000000000 -0400
19596 ++++ linux-2.6.32.46/kernel/pid.c 2011-08-21 19:11:29.000000000 -0400
19597 @@ -33,6 +33,7 @@
19598 #include <linux/rculist.h>
19599 #include <linux/bootmem.h>
19600 @@ -68733,9 +68769,9 @@ diff -urNp linux-2.6.32.48/kernel/pid.c linux-2.6.32.48/kernel/pid.c
19601 struct pid *get_task_pid(struct task_struct *task, enum pid_type type)
19602 {
19603 struct pid *pid;
19604 -diff -urNp linux-2.6.32.48/kernel/posix-cpu-timers.c linux-2.6.32.48/kernel/posix-cpu-timers.c
19605 ---- linux-2.6.32.48/kernel/posix-cpu-timers.c 2009-12-02 22:51:21.000000000 -0500
19606 -+++ linux-2.6.32.48/kernel/posix-cpu-timers.c 2011-11-12 12:46:47.000000000 -0500
19607 +diff -urNp linux-2.6.32.46/kernel/posix-cpu-timers.c linux-2.6.32.46/kernel/posix-cpu-timers.c
19608 +--- linux-2.6.32.46/kernel/posix-cpu-timers.c 2011-03-27 14:31:47.000000000 -0400
19609 ++++ linux-2.6.32.46/kernel/posix-cpu-timers.c 2011-08-06 09:33:44.000000000 -0400
19610 @@ -6,6 +6,7 @@
19611 #include <linux/posix-timers.h>
19612 #include <linux/errno.h>
19613 @@ -68762,9 +68798,9 @@ diff -urNp linux-2.6.32.48/kernel/posix-cpu-timers.c linux-2.6.32.48/kernel/posi
19614 .clock_getres = thread_cpu_clock_getres,
19615 .clock_get = thread_cpu_clock_get,
19616 .clock_set = do_posix_clock_nosettime,
19617 -diff -urNp linux-2.6.32.48/kernel/posix-timers.c linux-2.6.32.48/kernel/posix-timers.c
19618 ---- linux-2.6.32.48/kernel/posix-timers.c 2011-11-12 12:44:30.000000000 -0500
19619 -+++ linux-2.6.32.48/kernel/posix-timers.c 2011-11-12 12:46:47.000000000 -0500
19620 +diff -urNp linux-2.6.32.46/kernel/posix-timers.c linux-2.6.32.46/kernel/posix-timers.c
19621 +--- linux-2.6.32.46/kernel/posix-timers.c 2011-03-27 14:31:47.000000000 -0400
19622 ++++ linux-2.6.32.46/kernel/posix-timers.c 2011-08-23 20:22:38.000000000 -0400
19623 @@ -42,6 +42,7 @@
19624 #include <linux/compiler.h>
19625 #include <linux/idr.h>
19626 @@ -68883,9 +68919,9 @@ diff -urNp linux-2.6.32.48/kernel/posix-timers.c linux-2.6.32.48/kernel/posix-ti
19627 return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp));
19628 }
19629
19630 -diff -urNp linux-2.6.32.48/kernel/power/hibernate.c linux-2.6.32.48/kernel/power/hibernate.c
19631 ---- linux-2.6.32.48/kernel/power/hibernate.c 2009-12-02 22:51:21.000000000 -0500
19632 -+++ linux-2.6.32.48/kernel/power/hibernate.c 2011-11-12 12:46:47.000000000 -0500
19633 +diff -urNp linux-2.6.32.46/kernel/power/hibernate.c linux-2.6.32.46/kernel/power/hibernate.c
19634 +--- linux-2.6.32.46/kernel/power/hibernate.c 2011-03-27 14:31:47.000000000 -0400
19635 ++++ linux-2.6.32.46/kernel/power/hibernate.c 2011-04-17 15:56:46.000000000 -0400
19636 @@ -48,14 +48,14 @@ enum {
19637
19638 static int hibernation_mode = HIBERNATION_SHUTDOWN;
19639 @@ -68903,9 +68939,9 @@ diff -urNp linux-2.6.32.48/kernel/power/hibernate.c linux-2.6.32.48/kernel/power
19640 {
19641 if (ops && !(ops->begin && ops->end && ops->pre_snapshot
19642 && ops->prepare && ops->finish && ops->enter && ops->pre_restore
19643 -diff -urNp linux-2.6.32.48/kernel/power/poweroff.c linux-2.6.32.48/kernel/power/poweroff.c
19644 ---- linux-2.6.32.48/kernel/power/poweroff.c 2009-12-02 22:51:21.000000000 -0500
19645 -+++ linux-2.6.32.48/kernel/power/poweroff.c 2011-11-12 12:46:47.000000000 -0500
19646 +diff -urNp linux-2.6.32.46/kernel/power/poweroff.c linux-2.6.32.46/kernel/power/poweroff.c
19647 +--- linux-2.6.32.46/kernel/power/poweroff.c 2011-03-27 14:31:47.000000000 -0400
19648 ++++ linux-2.6.32.46/kernel/power/poweroff.c 2011-04-17 15:56:46.000000000 -0400
19649 @@ -37,7 +37,7 @@ static struct sysrq_key_op sysrq_powerof
19650 .enable_mask = SYSRQ_ENABLE_BOOT,
19651 };
19652 @@ -68915,9 +68951,9 @@ diff -urNp linux-2.6.32.48/kernel/power/poweroff.c linux-2.6.32.48/kernel/power/
19653 {
19654 register_sysrq_key('o', &sysrq_poweroff_op);
19655 return 0;
19656 -diff -urNp linux-2.6.32.48/kernel/power/process.c linux-2.6.32.48/kernel/power/process.c
19657 ---- linux-2.6.32.48/kernel/power/process.c 2011-11-12 12:44:30.000000000 -0500
19658 -+++ linux-2.6.32.48/kernel/power/process.c 2011-11-12 12:46:47.000000000 -0500
19659 +diff -urNp linux-2.6.32.46/kernel/power/process.c linux-2.6.32.46/kernel/power/process.c
19660 +--- linux-2.6.32.46/kernel/power/process.c 2011-03-27 14:31:47.000000000 -0400
19661 ++++ linux-2.6.32.46/kernel/power/process.c 2011-04-17 15:56:46.000000000 -0400
19662 @@ -37,12 +37,15 @@ static int try_to_freeze_tasks(bool sig_
19663 struct timeval start, end;
19664 u64 elapsed_csecs64;
19665 @@ -68957,9 +68993,9 @@ diff -urNp linux-2.6.32.48/kernel/power/process.c linux-2.6.32.48/kernel/power/p
19666
19667 do_gettimeofday(&end);
19668 elapsed_csecs64 = timeval_to_ns(&end) - timeval_to_ns(&start);
19669 -diff -urNp linux-2.6.32.48/kernel/power/suspend.c linux-2.6.32.48/kernel/power/suspend.c
19670 ---- linux-2.6.32.48/kernel/power/suspend.c 2009-12-02 22:51:21.000000000 -0500
19671 -+++ linux-2.6.32.48/kernel/power/suspend.c 2011-11-12 12:46:47.000000000 -0500
19672 +diff -urNp linux-2.6.32.46/kernel/power/suspend.c linux-2.6.32.46/kernel/power/suspend.c
19673 +--- linux-2.6.32.46/kernel/power/suspend.c 2011-03-27 14:31:47.000000000 -0400
19674 ++++ linux-2.6.32.46/kernel/power/suspend.c 2011-04-17 15:56:46.000000000 -0400
19675 @@ -23,13 +23,13 @@ const char *const pm_states[PM_SUSPEND_M
19676 [PM_SUSPEND_MEM] = "mem",
19677 };
19678 @@ -68976,9 +69012,9 @@ diff -urNp linux-2.6.32.48/kernel/power/suspend.c linux-2.6.32.48/kernel/power/s
19679 {
19680 mutex_lock(&pm_mutex);
19681 suspend_ops = ops;
19682 -diff -urNp linux-2.6.32.48/kernel/printk.c linux-2.6.32.48/kernel/printk.c
19683 ---- linux-2.6.32.48/kernel/printk.c 2011-11-12 12:44:30.000000000 -0500
19684 -+++ linux-2.6.32.48/kernel/printk.c 2011-11-12 12:46:47.000000000 -0500
19685 +diff -urNp linux-2.6.32.46/kernel/printk.c linux-2.6.32.46/kernel/printk.c
19686 +--- linux-2.6.32.46/kernel/printk.c 2011-03-27 14:31:47.000000000 -0400
19687 ++++ linux-2.6.32.46/kernel/printk.c 2011-04-17 15:56:46.000000000 -0400
19688 @@ -278,6 +278,11 @@ int do_syslog(int type, char __user *buf
19689 char c;
19690 int error = 0;
19691 @@ -68991,9 +69027,9 @@ diff -urNp linux-2.6.32.48/kernel/printk.c linux-2.6.32.48/kernel/printk.c
19692 error = security_syslog(type);
19693 if (error)
19694 return error;
19695 -diff -urNp linux-2.6.32.48/kernel/profile.c linux-2.6.32.48/kernel/profile.c
19696 ---- linux-2.6.32.48/kernel/profile.c 2011-11-12 12:44:30.000000000 -0500
19697 -+++ linux-2.6.32.48/kernel/profile.c 2011-11-12 12:46:47.000000000 -0500
19698 +diff -urNp linux-2.6.32.46/kernel/profile.c linux-2.6.32.46/kernel/profile.c
19699 +--- linux-2.6.32.46/kernel/profile.c 2011-03-27 14:31:47.000000000 -0400
19700 ++++ linux-2.6.32.46/kernel/profile.c 2011-05-04 17:56:28.000000000 -0400
19701 @@ -39,7 +39,7 @@ struct profile_hit {
19702 /* Oprofile timer tick hook */
19703 static int (*timer_hook)(struct pt_regs *) __read_mostly;
19704 @@ -69051,9 +69087,9 @@ diff -urNp linux-2.6.32.48/kernel/profile.c linux-2.6.32.48/kernel/profile.c
19705 return count;
19706 }
19707
19708 -diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
19709 ---- linux-2.6.32.48/kernel/ptrace.c 2011-11-12 12:44:30.000000000 -0500
19710 -+++ linux-2.6.32.48/kernel/ptrace.c 2011-11-12 12:46:47.000000000 -0500
19711 +diff -urNp linux-2.6.32.46/kernel/ptrace.c linux-2.6.32.46/kernel/ptrace.c
19712 +--- linux-2.6.32.46/kernel/ptrace.c 2011-03-27 14:31:47.000000000 -0400
19713 ++++ linux-2.6.32.46/kernel/ptrace.c 2011-05-22 23:02:06.000000000 -0400
19714 @@ -117,7 +117,8 @@ int ptrace_check_attach(struct task_stru
19715 return ret;
19716 }
19717 @@ -69235,9 +69271,9 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
19718 goto out_put_task_struct;
19719 }
19720
19721 -diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture.c
19722 ---- linux-2.6.32.48/kernel/rcutorture.c 2009-12-02 22:51:21.000000000 -0500
19723 -+++ linux-2.6.32.48/kernel/rcutorture.c 2011-11-12 12:46:47.000000000 -0500
19724 +diff -urNp linux-2.6.32.46/kernel/rcutorture.c linux-2.6.32.46/kernel/rcutorture.c
19725 +--- linux-2.6.32.46/kernel/rcutorture.c 2011-03-27 14:31:47.000000000 -0400
19726 ++++ linux-2.6.32.46/kernel/rcutorture.c 2011-05-04 17:56:28.000000000 -0400
19727 @@ -118,12 +118,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_
19728 { 0 };
19729 static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch) =
19730 @@ -69387,9 +69423,9 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
19731 for_each_possible_cpu(cpu) {
19732 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
19733 per_cpu(rcu_torture_count, cpu)[i] = 0;
19734 -diff -urNp linux-2.6.32.48/kernel/rcutree.c linux-2.6.32.48/kernel/rcutree.c
19735 ---- linux-2.6.32.48/kernel/rcutree.c 2011-11-12 12:44:30.000000000 -0500
19736 -+++ linux-2.6.32.48/kernel/rcutree.c 2011-11-12 12:46:47.000000000 -0500
19737 +diff -urNp linux-2.6.32.46/kernel/rcutree.c linux-2.6.32.46/kernel/rcutree.c
19738 +--- linux-2.6.32.46/kernel/rcutree.c 2011-03-27 14:31:47.000000000 -0400
19739 ++++ linux-2.6.32.46/kernel/rcutree.c 2011-04-17 15:56:46.000000000 -0400
19740 @@ -1303,7 +1303,7 @@ __rcu_process_callbacks(struct rcu_state
19741 /*
19742 * Do softirq processing for the current CPU.
19743 @@ -69399,9 +69435,9 @@ diff -urNp linux-2.6.32.48/kernel/rcutree.c linux-2.6.32.48/kernel/rcutree.c
19744 {
19745 /*
19746 * Memory references from any prior RCU read-side critical sections
19747 -diff -urNp linux-2.6.32.48/kernel/rcutree_plugin.h linux-2.6.32.48/kernel/rcutree_plugin.h
19748 ---- linux-2.6.32.48/kernel/rcutree_plugin.h 2011-11-12 12:44:30.000000000 -0500
19749 -+++ linux-2.6.32.48/kernel/rcutree_plugin.h 2011-11-12 12:46:47.000000000 -0500
19750 +diff -urNp linux-2.6.32.46/kernel/rcutree_plugin.h linux-2.6.32.46/kernel/rcutree_plugin.h
19751 +--- linux-2.6.32.46/kernel/rcutree_plugin.h 2011-03-27 14:31:47.000000000 -0400
19752 ++++ linux-2.6.32.46/kernel/rcutree_plugin.h 2011-04-17 15:56:46.000000000 -0400
19753 @@ -145,7 +145,7 @@ static void rcu_preempt_note_context_swi
19754 */
19755 void __rcu_read_lock(void)
19756 @@ -69420,9 +69456,9 @@ diff -urNp linux-2.6.32.48/kernel/rcutree_plugin.h linux-2.6.32.48/kernel/rcutre
19757 unlikely(ACCESS_ONCE(t->rcu_read_unlock_special)))
19758 rcu_read_unlock_special(t);
19759 }
19760 -diff -urNp linux-2.6.32.48/kernel/relay.c linux-2.6.32.48/kernel/relay.c
19761 ---- linux-2.6.32.48/kernel/relay.c 2009-12-02 22:51:21.000000000 -0500
19762 -+++ linux-2.6.32.48/kernel/relay.c 2011-11-12 12:46:47.000000000 -0500
19763 +diff -urNp linux-2.6.32.46/kernel/relay.c linux-2.6.32.46/kernel/relay.c
19764 +--- linux-2.6.32.46/kernel/relay.c 2011-03-27 14:31:47.000000000 -0400
19765 ++++ linux-2.6.32.46/kernel/relay.c 2011-05-16 21:46:57.000000000 -0400
19766 @@ -1222,7 +1222,7 @@ static int subbuf_splice_actor(struct fi
19767 unsigned int flags,
19768 int *nonpad_ret)
19769 @@ -69442,9 +69478,9 @@ diff -urNp linux-2.6.32.48/kernel/relay.c linux-2.6.32.48/kernel/relay.c
19770
19771 if (rbuf->subbufs_produced == rbuf->subbufs_consumed)
19772 return 0;
19773 -diff -urNp linux-2.6.32.48/kernel/resource.c linux-2.6.32.48/kernel/resource.c
19774 ---- linux-2.6.32.48/kernel/resource.c 2009-12-02 22:51:21.000000000 -0500
19775 -+++ linux-2.6.32.48/kernel/resource.c 2011-11-12 12:46:47.000000000 -0500
19776 +diff -urNp linux-2.6.32.46/kernel/resource.c linux-2.6.32.46/kernel/resource.c
19777 +--- linux-2.6.32.46/kernel/resource.c 2011-03-27 14:31:47.000000000 -0400
19778 ++++ linux-2.6.32.46/kernel/resource.c 2011-04-17 15:56:46.000000000 -0400
19779 @@ -132,8 +132,18 @@ static const struct file_operations proc
19780
19781 static int __init ioresources_init(void)
19782 @@ -69464,9 +69500,9 @@ diff -urNp linux-2.6.32.48/kernel/resource.c linux-2.6.32.48/kernel/resource.c
19783 return 0;
19784 }
19785 __initcall(ioresources_init);
19786 -diff -urNp linux-2.6.32.48/kernel/rtmutex.c linux-2.6.32.48/kernel/rtmutex.c
19787 ---- linux-2.6.32.48/kernel/rtmutex.c 2009-12-02 22:51:21.000000000 -0500
19788 -+++ linux-2.6.32.48/kernel/rtmutex.c 2011-11-12 12:46:47.000000000 -0500
19789 +diff -urNp linux-2.6.32.46/kernel/rtmutex.c linux-2.6.32.46/kernel/rtmutex.c
19790 +--- linux-2.6.32.46/kernel/rtmutex.c 2011-03-27 14:31:47.000000000 -0400
19791 ++++ linux-2.6.32.46/kernel/rtmutex.c 2011-04-17 15:56:46.000000000 -0400
19792 @@ -511,7 +511,7 @@ static void wakeup_next_waiter(struct rt
19793 */
19794 spin_lock_irqsave(&pendowner->pi_lock, flags);
19795 @@ -69476,9 +69512,9 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex.c linux-2.6.32.48/kernel/rtmutex.c
19796 WARN_ON(pendowner->pi_blocked_on != waiter);
19797 WARN_ON(pendowner->pi_blocked_on->lock != lock);
19798
19799 -diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmutex-tester.c
19800 ---- linux-2.6.32.48/kernel/rtmutex-tester.c 2009-12-02 22:51:21.000000000 -0500
19801 -+++ linux-2.6.32.48/kernel/rtmutex-tester.c 2011-11-12 12:46:47.000000000 -0500
19802 +diff -urNp linux-2.6.32.46/kernel/rtmutex-tester.c linux-2.6.32.46/kernel/rtmutex-tester.c
19803 +--- linux-2.6.32.46/kernel/rtmutex-tester.c 2011-03-27 14:31:47.000000000 -0400
19804 ++++ linux-2.6.32.46/kernel/rtmutex-tester.c 2011-05-04 17:56:28.000000000 -0400
19805 @@ -21,7 +21,7 @@
19806 #define MAX_RT_TEST_MUTEXES 8
19807
19808 @@ -69569,9 +69605,9 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
19809 return;
19810
19811 case RTTEST_LOCKBKL:
19812 -diff -urNp linux-2.6.32.48/kernel/sched.c linux-2.6.32.48/kernel/sched.c
19813 ---- linux-2.6.32.48/kernel/sched.c 2011-11-12 12:44:30.000000000 -0500
19814 -+++ linux-2.6.32.48/kernel/sched.c 2011-11-12 12:46:47.000000000 -0500
19815 +diff -urNp linux-2.6.32.46/kernel/sched.c linux-2.6.32.46/kernel/sched.c
19816 +--- linux-2.6.32.46/kernel/sched.c 2011-03-27 14:31:47.000000000 -0400
19817 ++++ linux-2.6.32.46/kernel/sched.c 2011-08-21 19:29:25.000000000 -0400
19818 @@ -2764,9 +2764,10 @@ void wake_up_new_task(struct task_struct
19819 {
19820 unsigned long flags;
19821 @@ -69661,9 +69697,9 @@ diff -urNp linux-2.6.32.48/kernel/sched.c linux-2.6.32.48/kernel/sched.c
19822
19823 if (cpu != group_first_cpu(sd->groups))
19824 return;
19825 -diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
19826 ---- linux-2.6.32.48/kernel/signal.c 2011-11-12 12:44:30.000000000 -0500
19827 -+++ linux-2.6.32.48/kernel/signal.c 2011-11-12 12:46:47.000000000 -0500
19828 +diff -urNp linux-2.6.32.46/kernel/signal.c linux-2.6.32.46/kernel/signal.c
19829 +--- linux-2.6.32.46/kernel/signal.c 2011-04-17 17:00:52.000000000 -0400
19830 ++++ linux-2.6.32.46/kernel/signal.c 2011-08-16 21:15:58.000000000 -0400
19831 @@ -41,12 +41,12 @@
19832
19833 static struct kmem_cache *sigqueue_cachep;
19834 @@ -69796,9 +69832,9 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
19835 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
19836 error = check_kill_permission(sig, info, p);
19837 /*
19838 -diff -urNp linux-2.6.32.48/kernel/smp.c linux-2.6.32.48/kernel/smp.c
19839 ---- linux-2.6.32.48/kernel/smp.c 2011-11-12 12:44:30.000000000 -0500
19840 -+++ linux-2.6.32.48/kernel/smp.c 2011-11-12 12:46:47.000000000 -0500
19841 +diff -urNp linux-2.6.32.46/kernel/smp.c linux-2.6.32.46/kernel/smp.c
19842 +--- linux-2.6.32.46/kernel/smp.c 2011-03-27 14:31:47.000000000 -0400
19843 ++++ linux-2.6.32.46/kernel/smp.c 2011-04-17 15:56:46.000000000 -0400
19844 @@ -522,22 +522,22 @@ int smp_call_function(void (*func)(void
19845 }
19846 EXPORT_SYMBOL(smp_call_function);
19847 @@ -69826,9 +69862,9 @@ diff -urNp linux-2.6.32.48/kernel/smp.c linux-2.6.32.48/kernel/smp.c
19848 {
19849 spin_unlock_irq(&call_function.lock);
19850 }
19851 -diff -urNp linux-2.6.32.48/kernel/softirq.c linux-2.6.32.48/kernel/softirq.c
19852 ---- linux-2.6.32.48/kernel/softirq.c 2011-11-12 12:44:30.000000000 -0500
19853 -+++ linux-2.6.32.48/kernel/softirq.c 2011-11-12 12:46:47.000000000 -0500
19854 +diff -urNp linux-2.6.32.46/kernel/softirq.c linux-2.6.32.46/kernel/softirq.c
19855 +--- linux-2.6.32.46/kernel/softirq.c 2011-03-27 14:31:47.000000000 -0400
19856 ++++ linux-2.6.32.46/kernel/softirq.c 2011-08-05 20:33:55.000000000 -0400
19857 @@ -56,7 +56,7 @@ static struct softirq_action softirq_vec
19858
19859 static DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
19860 @@ -69888,9 +69924,9 @@ diff -urNp linux-2.6.32.48/kernel/softirq.c linux-2.6.32.48/kernel/softirq.c
19861 {
19862 struct tasklet_struct *list;
19863
19864 -diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
19865 ---- linux-2.6.32.48/kernel/sys.c 2011-11-12 12:44:30.000000000 -0500
19866 -+++ linux-2.6.32.48/kernel/sys.c 2011-11-12 12:46:47.000000000 -0500
19867 +diff -urNp linux-2.6.32.46/kernel/sys.c linux-2.6.32.46/kernel/sys.c
19868 +--- linux-2.6.32.46/kernel/sys.c 2011-03-27 14:31:47.000000000 -0400
19869 ++++ linux-2.6.32.46/kernel/sys.c 2011-08-11 19:51:54.000000000 -0400
19870 @@ -133,6 +133,12 @@ static int set_one_prio(struct task_stru
19871 error = -EACCES;
19872 goto out;
19873 @@ -70050,9 +70086,9 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
19874 error = -EINVAL;
19875 break;
19876 }
19877 -diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
19878 ---- linux-2.6.32.48/kernel/sysctl.c 2011-11-12 12:44:30.000000000 -0500
19879 -+++ linux-2.6.32.48/kernel/sysctl.c 2011-11-12 12:46:47.000000000 -0500
19880 +diff -urNp linux-2.6.32.46/kernel/sysctl.c linux-2.6.32.46/kernel/sysctl.c
19881 +--- linux-2.6.32.46/kernel/sysctl.c 2011-03-27 14:31:47.000000000 -0400
19882 ++++ linux-2.6.32.46/kernel/sysctl.c 2011-04-17 15:56:46.000000000 -0400
19883 @@ -63,6 +63,13 @@
19884 static int deprecated_sysctl_warning(struct __sysctl_args *args);
19885
19886 @@ -70284,9 +70320,9 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
19887 +EXPORT_SYMBOL(sysctl_string_modpriv);
19888 EXPORT_SYMBOL(sysctl_data);
19889 EXPORT_SYMBOL(unregister_sysctl_table);
19890 -diff -urNp linux-2.6.32.48/kernel/sysctl_check.c linux-2.6.32.48/kernel/sysctl_check.c
19891 ---- linux-2.6.32.48/kernel/sysctl_check.c 2011-11-12 12:44:30.000000000 -0500
19892 -+++ linux-2.6.32.48/kernel/sysctl_check.c 2011-11-12 12:46:47.000000000 -0500
19893 +diff -urNp linux-2.6.32.46/kernel/sysctl_check.c linux-2.6.32.46/kernel/sysctl_check.c
19894 +--- linux-2.6.32.46/kernel/sysctl_check.c 2011-03-27 14:31:47.000000000 -0400
19895 ++++ linux-2.6.32.46/kernel/sysctl_check.c 2011-04-17 15:56:46.000000000 -0400
19896 @@ -1489,10 +1489,12 @@ int sysctl_check_table(struct nsproxy *n
19897 } else {
19898 if ((table->strategy == sysctl_data) ||
19899 @@ -70300,9 +70336,9 @@ diff -urNp linux-2.6.32.48/kernel/sysctl_check.c linux-2.6.32.48/kernel/sysctl_c
19900 (table->proc_handler == proc_dointvec) ||
19901 (table->proc_handler == proc_dointvec_minmax) ||
19902 (table->proc_handler == proc_dointvec_jiffies) ||
19903 -diff -urNp linux-2.6.32.48/kernel/taskstats.c linux-2.6.32.48/kernel/taskstats.c
19904 ---- linux-2.6.32.48/kernel/taskstats.c 2011-11-12 12:44:30.000000000 -0500
19905 -+++ linux-2.6.32.48/kernel/taskstats.c 2011-11-12 12:46:47.000000000 -0500
19906 +diff -urNp linux-2.6.32.46/kernel/taskstats.c linux-2.6.32.46/kernel/taskstats.c
19907 +--- linux-2.6.32.46/kernel/taskstats.c 2011-07-13 17:23:04.000000000 -0400
19908 ++++ linux-2.6.32.46/kernel/taskstats.c 2011-07-13 17:23:19.000000000 -0400
19909 @@ -26,9 +26,12 @@
19910 #include <linux/cgroup.h>
19911 #include <linux/fs.h>
19912 @@ -70326,9 +70362,9 @@ diff -urNp linux-2.6.32.48/kernel/taskstats.c linux-2.6.32.48/kernel/taskstats.c
19913 if (!alloc_cpumask_var(&mask, GFP_KERNEL))
19914 return -ENOMEM;
19915
19916 -diff -urNp linux-2.6.32.48/kernel/time/tick-broadcast.c linux-2.6.32.48/kernel/time/tick-broadcast.c
19917 ---- linux-2.6.32.48/kernel/time/tick-broadcast.c 2011-11-12 12:44:30.000000000 -0500
19918 -+++ linux-2.6.32.48/kernel/time/tick-broadcast.c 2011-11-12 12:46:47.000000000 -0500
19919 +diff -urNp linux-2.6.32.46/kernel/time/tick-broadcast.c linux-2.6.32.46/kernel/time/tick-broadcast.c
19920 +--- linux-2.6.32.46/kernel/time/tick-broadcast.c 2011-05-23 16:56:59.000000000 -0400
19921 ++++ linux-2.6.32.46/kernel/time/tick-broadcast.c 2011-05-23 16:57:13.000000000 -0400
19922 @@ -116,7 +116,7 @@ int tick_device_uses_broadcast(struct cl
19923 * then clear the broadcast bit.
19924 */
19925 @@ -70338,9 +70374,9 @@ diff -urNp linux-2.6.32.48/kernel/time/tick-broadcast.c linux-2.6.32.48/kernel/t
19926
19927 cpumask_clear_cpu(cpu, tick_get_broadcast_mask());
19928 tick_broadcast_clear_oneshot(cpu);
19929 -diff -urNp linux-2.6.32.48/kernel/time/timekeeping.c linux-2.6.32.48/kernel/time/timekeeping.c
19930 ---- linux-2.6.32.48/kernel/time/timekeeping.c 2011-11-12 12:44:30.000000000 -0500
19931 -+++ linux-2.6.32.48/kernel/time/timekeeping.c 2011-11-12 12:46:47.000000000 -0500
19932 +diff -urNp linux-2.6.32.46/kernel/time/timekeeping.c linux-2.6.32.46/kernel/time/timekeeping.c
19933 +--- linux-2.6.32.46/kernel/time/timekeeping.c 2011-06-25 12:55:35.000000000 -0400
19934 ++++ linux-2.6.32.46/kernel/time/timekeeping.c 2011-06-25 12:56:37.000000000 -0400
19935 @@ -14,6 +14,7 @@
19936 #include <linux/init.h>
19937 #include <linux/mm.h>
19938 @@ -70367,9 +70403,9 @@ diff -urNp linux-2.6.32.48/kernel/time/timekeeping.c linux-2.6.32.48/kernel/time
19939 write_seqlock_irqsave(&xtime_lock, flags);
19940
19941 timekeeping_forward_now();
19942 -diff -urNp linux-2.6.32.48/kernel/time/timer_list.c linux-2.6.32.48/kernel/time/timer_list.c
19943 ---- linux-2.6.32.48/kernel/time/timer_list.c 2011-11-12 12:44:30.000000000 -0500
19944 -+++ linux-2.6.32.48/kernel/time/timer_list.c 2011-11-12 12:46:47.000000000 -0500
19945 +diff -urNp linux-2.6.32.46/kernel/time/timer_list.c linux-2.6.32.46/kernel/time/timer_list.c
19946 +--- linux-2.6.32.46/kernel/time/timer_list.c 2011-03-27 14:31:47.000000000 -0400
19947 ++++ linux-2.6.32.46/kernel/time/timer_list.c 2011-04-17 15:56:46.000000000 -0400
19948 @@ -38,12 +38,16 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base,
19949
19950 static void print_name_offset(struct seq_file *m, void *sym)
19951 @@ -70411,9 +70447,9 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_list.c linux-2.6.32.48/kernel/time/
19952 if (!pe)
19953 return -ENOMEM;
19954 return 0;
19955 -diff -urNp linux-2.6.32.48/kernel/time/timer_stats.c linux-2.6.32.48/kernel/time/timer_stats.c
19956 ---- linux-2.6.32.48/kernel/time/timer_stats.c 2009-12-02 22:51:21.000000000 -0500
19957 -+++ linux-2.6.32.48/kernel/time/timer_stats.c 2011-11-12 12:46:47.000000000 -0500
19958 +diff -urNp linux-2.6.32.46/kernel/time/timer_stats.c linux-2.6.32.46/kernel/time/timer_stats.c
19959 +--- linux-2.6.32.46/kernel/time/timer_stats.c 2011-03-27 14:31:47.000000000 -0400
19960 ++++ linux-2.6.32.46/kernel/time/timer_stats.c 2011-05-04 17:56:28.000000000 -0400
19961 @@ -116,7 +116,7 @@ static ktime_t time_start, time_stop;
19962 static unsigned long nr_entries;
19963 static struct entry entries[MAX_ENTRIES];
19964 @@ -70482,9 +70518,9 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_stats.c linux-2.6.32.48/kernel/time
19965 if (!pe)
19966 return -ENOMEM;
19967 return 0;
19968 -diff -urNp linux-2.6.32.48/kernel/time.c linux-2.6.32.48/kernel/time.c
19969 ---- linux-2.6.32.48/kernel/time.c 2011-11-12 12:44:30.000000000 -0500
19970 -+++ linux-2.6.32.48/kernel/time.c 2011-11-12 12:46:47.000000000 -0500
19971 +diff -urNp linux-2.6.32.46/kernel/time.c linux-2.6.32.46/kernel/time.c
19972 +--- linux-2.6.32.46/kernel/time.c 2011-03-27 14:31:47.000000000 -0400
19973 ++++ linux-2.6.32.46/kernel/time.c 2011-04-17 15:56:46.000000000 -0400
19974 @@ -165,6 +165,11 @@ int do_sys_settimeofday(struct timespec
19975 return error;
19976
19977 @@ -70515,9 +70551,9 @@ diff -urNp linux-2.6.32.48/kernel/time.c linux-2.6.32.48/kernel/time.c
19978 {
19979 #if HZ <= USEC_PER_SEC && !(USEC_PER_SEC % HZ)
19980 return (USEC_PER_SEC / HZ) * j;
19981 -diff -urNp linux-2.6.32.48/kernel/timer.c linux-2.6.32.48/kernel/timer.c
19982 ---- linux-2.6.32.48/kernel/timer.c 2011-11-12 12:44:30.000000000 -0500
19983 -+++ linux-2.6.32.48/kernel/timer.c 2011-11-12 12:46:47.000000000 -0500
19984 +diff -urNp linux-2.6.32.46/kernel/timer.c linux-2.6.32.46/kernel/timer.c
19985 +--- linux-2.6.32.46/kernel/timer.c 2011-03-27 14:31:47.000000000 -0400
19986 ++++ linux-2.6.32.46/kernel/timer.c 2011-04-17 15:56:46.000000000 -0400
19987 @@ -1213,7 +1213,7 @@ void update_process_times(int user_tick)
19988 /*
19989 * This function runs timers and the timer-tq in bottom half context.
19990 @@ -70527,9 +70563,9 @@ diff -urNp linux-2.6.32.48/kernel/timer.c linux-2.6.32.48/kernel/timer.c
19991 {
19992 struct tvec_base *base = __get_cpu_var(tvec_bases);
19993
19994 -diff -urNp linux-2.6.32.48/kernel/trace/blktrace.c linux-2.6.32.48/kernel/trace/blktrace.c
19995 ---- linux-2.6.32.48/kernel/trace/blktrace.c 2009-12-02 22:51:21.000000000 -0500
19996 -+++ linux-2.6.32.48/kernel/trace/blktrace.c 2011-11-12 12:46:47.000000000 -0500
19997 +diff -urNp linux-2.6.32.46/kernel/trace/blktrace.c linux-2.6.32.46/kernel/trace/blktrace.c
19998 +--- linux-2.6.32.46/kernel/trace/blktrace.c 2011-03-27 14:31:47.000000000 -0400
19999 ++++ linux-2.6.32.46/kernel/trace/blktrace.c 2011-05-04 17:56:28.000000000 -0400
20000 @@ -313,7 +313,7 @@ static ssize_t blk_dropped_read(struct f
20001 struct blk_trace *bt = filp->private_data;
20002 char buf[16];
20003 @@ -70557,9 +70593,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/blktrace.c linux-2.6.32.48/kernel/trace/
20004
20005 ret = -EIO;
20006 bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
20007 -diff -urNp linux-2.6.32.48/kernel/trace/ftrace.c linux-2.6.32.48/kernel/trace/ftrace.c
20008 ---- linux-2.6.32.48/kernel/trace/ftrace.c 2011-11-12 12:44:30.000000000 -0500
20009 -+++ linux-2.6.32.48/kernel/trace/ftrace.c 2011-11-12 12:46:47.000000000 -0500
20010 +diff -urNp linux-2.6.32.46/kernel/trace/ftrace.c linux-2.6.32.46/kernel/trace/ftrace.c
20011 +--- linux-2.6.32.46/kernel/trace/ftrace.c 2011-06-25 12:55:35.000000000 -0400
20012 ++++ linux-2.6.32.46/kernel/trace/ftrace.c 2011-06-25 12:56:37.000000000 -0400
20013 @@ -1100,13 +1100,18 @@ ftrace_code_disable(struct module *mod,
20014
20015 ip = rec->ip;
20016 @@ -70581,9 +70617,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/ftrace.c linux-2.6.32.48/kernel/trace/ft
20017 }
20018
20019 /*
20020 -diff -urNp linux-2.6.32.48/kernel/trace/ring_buffer.c linux-2.6.32.48/kernel/trace/ring_buffer.c
20021 ---- linux-2.6.32.48/kernel/trace/ring_buffer.c 2011-11-12 12:44:30.000000000 -0500
20022 -+++ linux-2.6.32.48/kernel/trace/ring_buffer.c 2011-11-12 12:46:47.000000000 -0500
20023 +diff -urNp linux-2.6.32.46/kernel/trace/ring_buffer.c linux-2.6.32.46/kernel/trace/ring_buffer.c
20024 +--- linux-2.6.32.46/kernel/trace/ring_buffer.c 2011-03-27 14:31:47.000000000 -0400
20025 ++++ linux-2.6.32.46/kernel/trace/ring_buffer.c 2011-04-17 15:56:46.000000000 -0400
20026 @@ -606,7 +606,7 @@ static struct list_head *rb_list_head(st
20027 * the reader page). But if the next page is a header page,
20028 * its flags will be non zero.
20029 @@ -70593,9 +70629,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/ring_buffer.c linux-2.6.32.48/kernel/tra
20030 rb_is_head_page(struct ring_buffer_per_cpu *cpu_buffer,
20031 struct buffer_page *page, struct list_head *list)
20032 {
20033 -diff -urNp linux-2.6.32.48/kernel/trace/trace.c linux-2.6.32.48/kernel/trace/trace.c
20034 ---- linux-2.6.32.48/kernel/trace/trace.c 2011-11-12 12:44:30.000000000 -0500
20035 -+++ linux-2.6.32.48/kernel/trace/trace.c 2011-11-12 12:46:47.000000000 -0500
20036 +diff -urNp linux-2.6.32.46/kernel/trace/trace.c linux-2.6.32.46/kernel/trace/trace.c
20037 +--- linux-2.6.32.46/kernel/trace/trace.c 2011-03-27 14:31:47.000000000 -0400
20038 ++++ linux-2.6.32.46/kernel/trace/trace.c 2011-05-16 21:46:57.000000000 -0400
20039 @@ -3193,6 +3193,8 @@ static ssize_t tracing_splice_read_pipe(
20040 size_t rem;
20041 unsigned int i;
20042 @@ -70638,9 +70674,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace.c linux-2.6.32.48/kernel/trace/tra
20043 static int once;
20044 struct dentry *d_tracer;
20045
20046 -diff -urNp linux-2.6.32.48/kernel/trace/trace_events.c linux-2.6.32.48/kernel/trace/trace_events.c
20047 ---- linux-2.6.32.48/kernel/trace/trace_events.c 2009-12-02 22:51:21.000000000 -0500
20048 -+++ linux-2.6.32.48/kernel/trace/trace_events.c 2011-11-12 12:46:47.000000000 -0500
20049 +diff -urNp linux-2.6.32.46/kernel/trace/trace_events.c linux-2.6.32.46/kernel/trace/trace_events.c
20050 +--- linux-2.6.32.46/kernel/trace/trace_events.c 2011-03-27 14:31:47.000000000 -0400
20051 ++++ linux-2.6.32.46/kernel/trace/trace_events.c 2011-08-05 20:33:55.000000000 -0400
20052 @@ -951,13 +951,10 @@ static LIST_HEAD(ftrace_module_file_list
20053 * Modules must own their file_operations to keep up with
20054 * reference counting.
20055 @@ -70691,9 +70727,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_events.c linux-2.6.32.48/kernel/tr
20056 }
20057 }
20058
20059 -diff -urNp linux-2.6.32.48/kernel/trace/trace_mmiotrace.c linux-2.6.32.48/kernel/trace/trace_mmiotrace.c
20060 ---- linux-2.6.32.48/kernel/trace/trace_mmiotrace.c 2009-12-02 22:51:21.000000000 -0500
20061 -+++ linux-2.6.32.48/kernel/trace/trace_mmiotrace.c 2011-11-12 12:46:47.000000000 -0500
20062 +diff -urNp linux-2.6.32.46/kernel/trace/trace_mmiotrace.c linux-2.6.32.46/kernel/trace/trace_mmiotrace.c
20063 +--- linux-2.6.32.46/kernel/trace/trace_mmiotrace.c 2011-03-27 14:31:47.000000000 -0400
20064 ++++ linux-2.6.32.46/kernel/trace/trace_mmiotrace.c 2011-05-04 17:56:28.000000000 -0400
20065 @@ -23,7 +23,7 @@ struct header_iter {
20066 static struct trace_array *mmio_trace_array;
20067 static bool overrun_detected;
20068 @@ -70730,9 +70766,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_mmiotrace.c linux-2.6.32.48/kernel
20069 return;
20070 }
20071 entry = ring_buffer_event_data(event);
20072 -diff -urNp linux-2.6.32.48/kernel/trace/trace_output.c linux-2.6.32.48/kernel/trace/trace_output.c
20073 ---- linux-2.6.32.48/kernel/trace/trace_output.c 2009-12-02 22:51:21.000000000 -0500
20074 -+++ linux-2.6.32.48/kernel/trace/trace_output.c 2011-11-12 12:46:47.000000000 -0500
20075 +diff -urNp linux-2.6.32.46/kernel/trace/trace_output.c linux-2.6.32.46/kernel/trace/trace_output.c
20076 +--- linux-2.6.32.46/kernel/trace/trace_output.c 2011-03-27 14:31:47.000000000 -0400
20077 ++++ linux-2.6.32.46/kernel/trace/trace_output.c 2011-04-17 15:56:46.000000000 -0400
20078 @@ -237,7 +237,7 @@ int trace_seq_path(struct trace_seq *s,
20079 return 0;
20080 p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
20081 @@ -70742,9 +70778,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_output.c linux-2.6.32.48/kernel/tr
20082 if (p) {
20083 s->len = p - s->buffer;
20084 return 1;
20085 -diff -urNp linux-2.6.32.48/kernel/trace/trace_stack.c linux-2.6.32.48/kernel/trace/trace_stack.c
20086 ---- linux-2.6.32.48/kernel/trace/trace_stack.c 2009-12-02 22:51:21.000000000 -0500
20087 -+++ linux-2.6.32.48/kernel/trace/trace_stack.c 2011-11-12 12:46:47.000000000 -0500
20088 +diff -urNp linux-2.6.32.46/kernel/trace/trace_stack.c linux-2.6.32.46/kernel/trace/trace_stack.c
20089 +--- linux-2.6.32.46/kernel/trace/trace_stack.c 2011-03-27 14:31:47.000000000 -0400
20090 ++++ linux-2.6.32.46/kernel/trace/trace_stack.c 2011-04-17 15:56:46.000000000 -0400
20091 @@ -50,7 +50,7 @@ static inline void check_stack(void)
20092 return;
20093
20094 @@ -70754,9 +70790,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_stack.c linux-2.6.32.48/kernel/tra
20095 return;
20096
20097 local_irq_save(flags);
20098 -diff -urNp linux-2.6.32.48/kernel/trace/trace_workqueue.c linux-2.6.32.48/kernel/trace/trace_workqueue.c
20099 ---- linux-2.6.32.48/kernel/trace/trace_workqueue.c 2009-12-02 22:51:21.000000000 -0500
20100 -+++ linux-2.6.32.48/kernel/trace/trace_workqueue.c 2011-11-12 12:46:47.000000000 -0500
20101 +diff -urNp linux-2.6.32.46/kernel/trace/trace_workqueue.c linux-2.6.32.46/kernel/trace/trace_workqueue.c
20102 +--- linux-2.6.32.46/kernel/trace/trace_workqueue.c 2011-03-27 14:31:47.000000000 -0400
20103 ++++ linux-2.6.32.46/kernel/trace/trace_workqueue.c 2011-04-17 15:56:46.000000000 -0400
20104 @@ -21,7 +21,7 @@ struct cpu_workqueue_stats {
20105 int cpu;
20106 pid_t pid;
20107 @@ -70784,9 +70820,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_workqueue.c linux-2.6.32.48/kernel
20108 tsk->comm);
20109 put_task_struct(tsk);
20110 }
20111 -diff -urNp linux-2.6.32.48/kernel/user.c linux-2.6.32.48/kernel/user.c
20112 ---- linux-2.6.32.48/kernel/user.c 2011-11-12 12:44:30.000000000 -0500
20113 -+++ linux-2.6.32.48/kernel/user.c 2011-11-12 12:46:47.000000000 -0500
20114 +diff -urNp linux-2.6.32.46/kernel/user.c linux-2.6.32.46/kernel/user.c
20115 +--- linux-2.6.32.46/kernel/user.c 2011-03-27 14:31:47.000000000 -0400
20116 ++++ linux-2.6.32.46/kernel/user.c 2011-04-17 15:56:46.000000000 -0400
20117 @@ -159,6 +159,7 @@ struct user_struct *alloc_uid(struct use
20118 spin_lock_irq(&uidhash_lock);
20119 up = uid_hash_find(uid, hashent);
20120 @@ -70795,9 +70831,9 @@ diff -urNp linux-2.6.32.48/kernel/user.c linux-2.6.32.48/kernel/user.c
20121 key_put(new->uid_keyring);
20122 key_put(new->session_keyring);
20123 kmem_cache_free(uid_cachep, new);
20124 -diff -urNp linux-2.6.32.48/lib/bitmap.c linux-2.6.32.48/lib/bitmap.c
20125 ---- linux-2.6.32.48/lib/bitmap.c 2009-12-02 22:51:21.000000000 -0500
20126 -+++ linux-2.6.32.48/lib/bitmap.c 2011-11-12 12:46:47.000000000 -0500
20127 +diff -urNp linux-2.6.32.46/lib/bitmap.c linux-2.6.32.46/lib/bitmap.c
20128 +--- linux-2.6.32.46/lib/bitmap.c 2011-03-27 14:31:47.000000000 -0400
20129 ++++ linux-2.6.32.46/lib/bitmap.c 2011-10-06 09:37:14.000000000 -0400
20130 @@ -341,7 +341,7 @@ int __bitmap_parse(const char *buf, unsi
20131 {
20132 int c, old_c, totaldigits, ndigits, nchunks, nbits;
20133 @@ -70816,9 +70852,9 @@ diff -urNp linux-2.6.32.48/lib/bitmap.c linux-2.6.32.48/lib/bitmap.c
20134 }
20135 EXPORT_SYMBOL(bitmap_parse_user);
20136
20137 -diff -urNp linux-2.6.32.48/lib/bug.c linux-2.6.32.48/lib/bug.c
20138 ---- linux-2.6.32.48/lib/bug.c 2009-12-02 22:51:21.000000000 -0500
20139 -+++ linux-2.6.32.48/lib/bug.c 2011-11-12 12:46:47.000000000 -0500
20140 +diff -urNp linux-2.6.32.46/lib/bug.c linux-2.6.32.46/lib/bug.c
20141 +--- linux-2.6.32.46/lib/bug.c 2011-03-27 14:31:47.000000000 -0400
20142 ++++ linux-2.6.32.46/lib/bug.c 2011-04-17 15:56:46.000000000 -0400
20143 @@ -135,6 +135,8 @@ enum bug_trap_type report_bug(unsigned l
20144 return BUG_TRAP_TYPE_NONE;
20145
20146 @@ -70828,9 +70864,9 @@ diff -urNp linux-2.6.32.48/lib/bug.c linux-2.6.32.48/lib/bug.c
20147
20148 printk(KERN_EMERG "------------[ cut here ]------------\n");
20149
20150 -diff -urNp linux-2.6.32.48/lib/debugobjects.c linux-2.6.32.48/lib/debugobjects.c
20151 ---- linux-2.6.32.48/lib/debugobjects.c 2011-11-12 12:44:30.000000000 -0500
20152 -+++ linux-2.6.32.48/lib/debugobjects.c 2011-11-12 12:46:47.000000000 -0500
20153 +diff -urNp linux-2.6.32.46/lib/debugobjects.c linux-2.6.32.46/lib/debugobjects.c
20154 +--- linux-2.6.32.46/lib/debugobjects.c 2011-07-13 17:23:04.000000000 -0400
20155 ++++ linux-2.6.32.46/lib/debugobjects.c 2011-07-13 17:23:19.000000000 -0400
20156 @@ -277,7 +277,7 @@ static void debug_object_is_on_stack(voi
20157 if (limit > 4)
20158 return;
20159 @@ -70840,9 +70876,9 @@ diff -urNp linux-2.6.32.48/lib/debugobjects.c linux-2.6.32.48/lib/debugobjects.c
20160 if (is_on_stack == onstack)
20161 return;
20162
20163 -diff -urNp linux-2.6.32.48/lib/devres.c linux-2.6.32.48/lib/devres.c
20164 ---- linux-2.6.32.48/lib/devres.c 2009-12-02 22:51:21.000000000 -0500
20165 -+++ linux-2.6.32.48/lib/devres.c 2011-11-12 12:46:47.000000000 -0500
20166 +diff -urNp linux-2.6.32.46/lib/devres.c linux-2.6.32.46/lib/devres.c
20167 +--- linux-2.6.32.46/lib/devres.c 2011-03-27 14:31:47.000000000 -0400
20168 ++++ linux-2.6.32.46/lib/devres.c 2011-10-06 09:37:14.000000000 -0400
20169 @@ -80,7 +80,7 @@ void devm_iounmap(struct device *dev, vo
20170 {
20171 iounmap(addr);
20172 @@ -70861,9 +70897,9 @@ diff -urNp linux-2.6.32.48/lib/devres.c linux-2.6.32.48/lib/devres.c
20173 }
20174 EXPORT_SYMBOL(devm_ioport_unmap);
20175
20176 -diff -urNp linux-2.6.32.48/lib/dma-debug.c linux-2.6.32.48/lib/dma-debug.c
20177 ---- linux-2.6.32.48/lib/dma-debug.c 2011-11-12 12:44:30.000000000 -0500
20178 -+++ linux-2.6.32.48/lib/dma-debug.c 2011-11-12 12:46:47.000000000 -0500
20179 +diff -urNp linux-2.6.32.46/lib/dma-debug.c linux-2.6.32.46/lib/dma-debug.c
20180 +--- linux-2.6.32.46/lib/dma-debug.c 2011-03-27 14:31:47.000000000 -0400
20181 ++++ linux-2.6.32.46/lib/dma-debug.c 2011-04-17 15:56:46.000000000 -0400
20182 @@ -861,7 +861,7 @@ out:
20183
20184 static void check_for_stack(struct device *dev, void *addr)
20185 @@ -70873,9 +70909,9 @@ diff -urNp linux-2.6.32.48/lib/dma-debug.c linux-2.6.32.48/lib/dma-debug.c
20186 err_printk(dev, NULL, "DMA-API: device driver maps memory from"
20187 "stack [addr=%p]\n", addr);
20188 }
20189 -diff -urNp linux-2.6.32.48/lib/idr.c linux-2.6.32.48/lib/idr.c
20190 ---- linux-2.6.32.48/lib/idr.c 2011-11-12 12:44:30.000000000 -0500
20191 -+++ linux-2.6.32.48/lib/idr.c 2011-11-12 12:46:47.000000000 -0500
20192 +diff -urNp linux-2.6.32.46/lib/idr.c linux-2.6.32.46/lib/idr.c
20193 +--- linux-2.6.32.46/lib/idr.c 2011-03-27 14:31:47.000000000 -0400
20194 ++++ linux-2.6.32.46/lib/idr.c 2011-04-17 15:56:46.000000000 -0400
20195 @@ -156,7 +156,7 @@ static int sub_alloc(struct idr *idp, in
20196 id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1;
20197
20198 @@ -70885,9 +70921,9 @@ diff -urNp linux-2.6.32.48/lib/idr.c linux-2.6.32.48/lib/idr.c
20199 *starting_id = id;
20200 return IDR_NEED_TO_GROW;
20201 }
20202 -diff -urNp linux-2.6.32.48/lib/inflate.c linux-2.6.32.48/lib/inflate.c
20203 ---- linux-2.6.32.48/lib/inflate.c 2009-12-02 22:51:21.000000000 -0500
20204 -+++ linux-2.6.32.48/lib/inflate.c 2011-11-12 12:46:47.000000000 -0500
20205 +diff -urNp linux-2.6.32.46/lib/inflate.c linux-2.6.32.46/lib/inflate.c
20206 +--- linux-2.6.32.46/lib/inflate.c 2011-03-27 14:31:47.000000000 -0400
20207 ++++ linux-2.6.32.46/lib/inflate.c 2011-04-17 15:56:46.000000000 -0400
20208 @@ -266,7 +266,7 @@ static void free(void *where)
20209 malloc_ptr = free_mem_ptr;
20210 }
20211 @@ -70897,9 +70933,9 @@ diff -urNp linux-2.6.32.48/lib/inflate.c linux-2.6.32.48/lib/inflate.c
20212 #define free(a) kfree(a)
20213 #endif
20214
20215 -diff -urNp linux-2.6.32.48/lib/Kconfig.debug linux-2.6.32.48/lib/Kconfig.debug
20216 ---- linux-2.6.32.48/lib/Kconfig.debug 2009-12-02 22:51:21.000000000 -0500
20217 -+++ linux-2.6.32.48/lib/Kconfig.debug 2011-11-12 12:46:47.000000000 -0500
20218 +diff -urNp linux-2.6.32.46/lib/Kconfig.debug linux-2.6.32.46/lib/Kconfig.debug
20219 +--- linux-2.6.32.46/lib/Kconfig.debug 2011-03-27 14:31:47.000000000 -0400
20220 ++++ linux-2.6.32.46/lib/Kconfig.debug 2011-04-17 15:56:46.000000000 -0400
20221 @@ -905,7 +905,7 @@ config LATENCYTOP
20222 select STACKTRACE
20223 select SCHEDSTATS
20224 @@ -70909,9 +70945,9 @@ diff -urNp linux-2.6.32.48/lib/Kconfig.debug linux-2.6.32.48/lib/Kconfig.debug
20225 help
20226 Enable this option if you want to use the LatencyTOP tool
20227 to find out which userspace is blocking on what kernel operations.
20228 -diff -urNp linux-2.6.32.48/lib/kobject.c linux-2.6.32.48/lib/kobject.c
20229 ---- linux-2.6.32.48/lib/kobject.c 2009-12-02 22:51:21.000000000 -0500
20230 -+++ linux-2.6.32.48/lib/kobject.c 2011-11-12 12:46:47.000000000 -0500
20231 +diff -urNp linux-2.6.32.46/lib/kobject.c linux-2.6.32.46/lib/kobject.c
20232 +--- linux-2.6.32.46/lib/kobject.c 2011-03-27 14:31:47.000000000 -0400
20233 ++++ linux-2.6.32.46/lib/kobject.c 2011-04-17 15:56:46.000000000 -0400
20234 @@ -700,7 +700,7 @@ static ssize_t kobj_attr_store(struct ko
20235 return ret;
20236 }
20237 @@ -70939,9 +70975,9 @@ diff -urNp linux-2.6.32.48/lib/kobject.c linux-2.6.32.48/lib/kobject.c
20238 struct kobject *parent_kobj)
20239 {
20240 struct kset *kset;
20241 -diff -urNp linux-2.6.32.48/lib/kobject_uevent.c linux-2.6.32.48/lib/kobject_uevent.c
20242 ---- linux-2.6.32.48/lib/kobject_uevent.c 2011-11-12 12:44:30.000000000 -0500
20243 -+++ linux-2.6.32.48/lib/kobject_uevent.c 2011-11-12 12:46:47.000000000 -0500
20244 +diff -urNp linux-2.6.32.46/lib/kobject_uevent.c linux-2.6.32.46/lib/kobject_uevent.c
20245 +--- linux-2.6.32.46/lib/kobject_uevent.c 2011-03-27 14:31:47.000000000 -0400
20246 ++++ linux-2.6.32.46/lib/kobject_uevent.c 2011-04-17 15:56:46.000000000 -0400
20247 @@ -95,7 +95,7 @@ int kobject_uevent_env(struct kobject *k
20248 const char *subsystem;
20249 struct kobject *top_kobj;
20250 @@ -70951,9 +70987,9 @@ diff -urNp linux-2.6.32.48/lib/kobject_uevent.c linux-2.6.32.48/lib/kobject_ueve
20251 u64 seq;
20252 int i = 0;
20253 int retval = 0;
20254 -diff -urNp linux-2.6.32.48/lib/kref.c linux-2.6.32.48/lib/kref.c
20255 ---- linux-2.6.32.48/lib/kref.c 2009-12-02 22:51:21.000000000 -0500
20256 -+++ linux-2.6.32.48/lib/kref.c 2011-11-12 12:46:47.000000000 -0500
20257 +diff -urNp linux-2.6.32.46/lib/kref.c linux-2.6.32.46/lib/kref.c
20258 +--- linux-2.6.32.46/lib/kref.c 2011-03-27 14:31:47.000000000 -0400
20259 ++++ linux-2.6.32.46/lib/kref.c 2011-04-17 15:56:46.000000000 -0400
20260 @@ -61,7 +61,7 @@ void kref_get(struct kref *kref)
20261 */
20262 int kref_put(struct kref *kref, void (*release)(struct kref *kref))
20263 @@ -70963,9 +70999,9 @@ diff -urNp linux-2.6.32.48/lib/kref.c linux-2.6.32.48/lib/kref.c
20264 WARN_ON(release == (void (*)(struct kref *))kfree);
20265
20266 if (atomic_dec_and_test(&kref->refcount)) {
20267 -diff -urNp linux-2.6.32.48/lib/parser.c linux-2.6.32.48/lib/parser.c
20268 ---- linux-2.6.32.48/lib/parser.c 2009-12-02 22:51:21.000000000 -0500
20269 -+++ linux-2.6.32.48/lib/parser.c 2011-11-12 12:46:47.000000000 -0500
20270 +diff -urNp linux-2.6.32.46/lib/parser.c linux-2.6.32.46/lib/parser.c
20271 +--- linux-2.6.32.46/lib/parser.c 2011-03-27 14:31:47.000000000 -0400
20272 ++++ linux-2.6.32.46/lib/parser.c 2011-04-17 15:56:46.000000000 -0400
20273 @@ -126,7 +126,7 @@ static int match_number(substring_t *s,
20274 char *buf;
20275 int ret;
20276 @@ -70975,9 +71011,9 @@ diff -urNp linux-2.6.32.48/lib/parser.c linux-2.6.32.48/lib/parser.c
20277 if (!buf)
20278 return -ENOMEM;
20279 memcpy(buf, s->from, s->to - s->from);
20280 -diff -urNp linux-2.6.32.48/lib/radix-tree.c linux-2.6.32.48/lib/radix-tree.c
20281 ---- linux-2.6.32.48/lib/radix-tree.c 2009-12-02 22:51:21.000000000 -0500
20282 -+++ linux-2.6.32.48/lib/radix-tree.c 2011-11-12 12:46:47.000000000 -0500
20283 +diff -urNp linux-2.6.32.46/lib/radix-tree.c linux-2.6.32.46/lib/radix-tree.c
20284 +--- linux-2.6.32.46/lib/radix-tree.c 2011-03-27 14:31:47.000000000 -0400
20285 ++++ linux-2.6.32.46/lib/radix-tree.c 2011-04-17 15:56:46.000000000 -0400
20286 @@ -81,7 +81,7 @@ struct radix_tree_preload {
20287 int nr;
20288 struct radix_tree_node *nodes[RADIX_TREE_MAX_PATH];
20289 @@ -70987,9 +71023,9 @@ diff -urNp linux-2.6.32.48/lib/radix-tree.c linux-2.6.32.48/lib/radix-tree.c
20290
20291 static inline gfp_t root_gfp_mask(struct radix_tree_root *root)
20292 {
20293 -diff -urNp linux-2.6.32.48/lib/random32.c linux-2.6.32.48/lib/random32.c
20294 ---- linux-2.6.32.48/lib/random32.c 2009-12-02 22:51:21.000000000 -0500
20295 -+++ linux-2.6.32.48/lib/random32.c 2011-11-12 12:46:47.000000000 -0500
20296 +diff -urNp linux-2.6.32.46/lib/random32.c linux-2.6.32.46/lib/random32.c
20297 +--- linux-2.6.32.46/lib/random32.c 2011-03-27 14:31:47.000000000 -0400
20298 ++++ linux-2.6.32.46/lib/random32.c 2011-04-17 15:56:46.000000000 -0400
20299 @@ -61,7 +61,7 @@ static u32 __random32(struct rnd_state *
20300 */
20301 static inline u32 __seed(u32 x, u32 m)
20302 @@ -70999,9 +71035,9 @@ diff -urNp linux-2.6.32.48/lib/random32.c linux-2.6.32.48/lib/random32.c
20303 }
20304
20305 /**
20306 -diff -urNp linux-2.6.32.48/lib/vsprintf.c linux-2.6.32.48/lib/vsprintf.c
20307 ---- linux-2.6.32.48/lib/vsprintf.c 2009-12-02 22:51:21.000000000 -0500
20308 -+++ linux-2.6.32.48/lib/vsprintf.c 2011-11-12 12:46:47.000000000 -0500
20309 +diff -urNp linux-2.6.32.46/lib/vsprintf.c linux-2.6.32.46/lib/vsprintf.c
20310 +--- linux-2.6.32.46/lib/vsprintf.c 2011-03-27 14:31:47.000000000 -0400
20311 ++++ linux-2.6.32.46/lib/vsprintf.c 2011-04-17 15:56:46.000000000 -0400
20312 @@ -16,6 +16,9 @@
20313 * - scnprintf and vscnprintf
20314 */
20315 @@ -71102,14 +71138,14 @@ diff -urNp linux-2.6.32.48/lib/vsprintf.c linux-2.6.32.48/lib/vsprintf.c
20316 break;
20317 }
20318
20319 -diff -urNp linux-2.6.32.48/localversion-grsec linux-2.6.32.48/localversion-grsec
20320 ---- linux-2.6.32.48/localversion-grsec 1969-12-31 19:00:00.000000000 -0500
20321 -+++ linux-2.6.32.48/localversion-grsec 2011-11-12 12:46:47.000000000 -0500
20322 +diff -urNp linux-2.6.32.46/localversion-grsec linux-2.6.32.46/localversion-grsec
20323 +--- linux-2.6.32.46/localversion-grsec 1969-12-31 19:00:00.000000000 -0500
20324 ++++ linux-2.6.32.46/localversion-grsec 2011-04-17 15:56:46.000000000 -0400
20325 @@ -0,0 +1 @@
20326 +-grsec
20327 -diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
20328 ---- linux-2.6.32.48/Makefile 2011-11-12 12:44:28.000000000 -0500
20329 -+++ linux-2.6.32.48/Makefile 2011-11-12 12:46:47.000000000 -0500
20330 +diff -urNp linux-2.6.32.46/Makefile linux-2.6.32.46/Makefile
20331 +--- linux-2.6.32.46/Makefile 2011-08-29 22:24:44.000000000 -0400
20332 ++++ linux-2.6.32.46/Makefile 2011-10-08 08:14:40.000000000 -0400
20333 @@ -221,8 +221,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
20334
20335 HOSTCC = gcc
20336 @@ -71326,9 +71362,9 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
20337 $(cmd_crmodverdir)
20338 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
20339 $(build)=$(build-dir) $(@:.ko=.o)
20340 -diff -urNp linux-2.6.32.48/mm/backing-dev.c linux-2.6.32.48/mm/backing-dev.c
20341 ---- linux-2.6.32.48/mm/backing-dev.c 2009-12-02 22:51:21.000000000 -0500
20342 -+++ linux-2.6.32.48/mm/backing-dev.c 2011-11-12 12:46:47.000000000 -0500
20343 +diff -urNp linux-2.6.32.46/mm/backing-dev.c linux-2.6.32.46/mm/backing-dev.c
20344 +--- linux-2.6.32.46/mm/backing-dev.c 2011-03-27 14:31:47.000000000 -0400
20345 ++++ linux-2.6.32.46/mm/backing-dev.c 2011-08-11 19:48:17.000000000 -0400
20346 @@ -272,7 +272,7 @@ static void bdi_task_init(struct backing
20347 list_add_tail_rcu(&wb->list, &bdi->wb_list);
20348 spin_unlock(&bdi->wb_lock);
20349 @@ -71347,9 +71383,9 @@ diff -urNp linux-2.6.32.48/mm/backing-dev.c linux-2.6.32.48/mm/backing-dev.c
20350 {
20351 if (!bdi_cap_writeback_dirty(bdi))
20352 return;
20353 -diff -urNp linux-2.6.32.48/mm/filemap.c linux-2.6.32.48/mm/filemap.c
20354 ---- linux-2.6.32.48/mm/filemap.c 2011-11-12 12:44:30.000000000 -0500
20355 -+++ linux-2.6.32.48/mm/filemap.c 2011-11-12 12:46:47.000000000 -0500
20356 +diff -urNp linux-2.6.32.46/mm/filemap.c linux-2.6.32.46/mm/filemap.c
20357 +--- linux-2.6.32.46/mm/filemap.c 2011-03-27 14:31:47.000000000 -0400
20358 ++++ linux-2.6.32.46/mm/filemap.c 2011-04-17 15:56:46.000000000 -0400
20359 @@ -1631,7 +1631,7 @@ int generic_file_mmap(struct file * file
20360 struct address_space *mapping = file->f_mapping;
20361
20362 @@ -71367,9 +71403,9 @@ diff -urNp linux-2.6.32.48/mm/filemap.c linux-2.6.32.48/mm/filemap.c
20363 if (*pos >= limit) {
20364 send_sig(SIGXFSZ, current, 0);
20365 return -EFBIG;
20366 -diff -urNp linux-2.6.32.48/mm/fremap.c linux-2.6.32.48/mm/fremap.c
20367 ---- linux-2.6.32.48/mm/fremap.c 2009-12-02 22:51:21.000000000 -0500
20368 -+++ linux-2.6.32.48/mm/fremap.c 2011-11-12 12:46:47.000000000 -0500
20369 +diff -urNp linux-2.6.32.46/mm/fremap.c linux-2.6.32.46/mm/fremap.c
20370 +--- linux-2.6.32.46/mm/fremap.c 2011-03-27 14:31:47.000000000 -0400
20371 ++++ linux-2.6.32.46/mm/fremap.c 2011-04-17 15:56:46.000000000 -0400
20372 @@ -153,6 +153,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
20373 retry:
20374 vma = find_vma(mm, start);
20375 @@ -71391,9 +71427,9 @@ diff -urNp linux-2.6.32.48/mm/fremap.c linux-2.6.32.48/mm/fremap.c
20376 munlock_vma_pages_range(vma, start, start + size);
20377 vma->vm_flags = saved_flags;
20378 }
20379 -diff -urNp linux-2.6.32.48/mm/highmem.c linux-2.6.32.48/mm/highmem.c
20380 ---- linux-2.6.32.48/mm/highmem.c 2009-12-02 22:51:21.000000000 -0500
20381 -+++ linux-2.6.32.48/mm/highmem.c 2011-11-12 12:46:47.000000000 -0500
20382 +diff -urNp linux-2.6.32.46/mm/highmem.c linux-2.6.32.46/mm/highmem.c
20383 +--- linux-2.6.32.46/mm/highmem.c 2011-03-27 14:31:47.000000000 -0400
20384 ++++ linux-2.6.32.46/mm/highmem.c 2011-04-17 15:56:46.000000000 -0400
20385 @@ -116,9 +116,10 @@ static void flush_all_zero_pkmaps(void)
20386 * So no dangers, even with speculative execution.
20387 */
20388 @@ -71419,9 +71455,9 @@ diff -urNp linux-2.6.32.48/mm/highmem.c linux-2.6.32.48/mm/highmem.c
20389 pkmap_count[last_pkmap_nr] = 1;
20390 set_page_address(page, (void *)vaddr);
20391
20392 -diff -urNp linux-2.6.32.48/mm/hugetlb.c linux-2.6.32.48/mm/hugetlb.c
20393 ---- linux-2.6.32.48/mm/hugetlb.c 2011-11-12 12:44:30.000000000 -0500
20394 -+++ linux-2.6.32.48/mm/hugetlb.c 2011-11-12 12:46:47.000000000 -0500
20395 +diff -urNp linux-2.6.32.46/mm/hugetlb.c linux-2.6.32.46/mm/hugetlb.c
20396 +--- linux-2.6.32.46/mm/hugetlb.c 2011-07-13 17:23:04.000000000 -0400
20397 ++++ linux-2.6.32.46/mm/hugetlb.c 2011-07-13 17:23:19.000000000 -0400
20398 @@ -1933,6 +1933,26 @@ static int unmap_ref_private(struct mm_s
20399 return 1;
20400 }
20401 @@ -71501,9 +71537,9 @@ diff -urNp linux-2.6.32.48/mm/hugetlb.c linux-2.6.32.48/mm/hugetlb.c
20402 ptep = huge_pte_alloc(mm, address, huge_page_size(h));
20403 if (!ptep)
20404 return VM_FAULT_OOM;
20405 -diff -urNp linux-2.6.32.48/mm/internal.h linux-2.6.32.48/mm/internal.h
20406 ---- linux-2.6.32.48/mm/internal.h 2011-11-12 12:44:30.000000000 -0500
20407 -+++ linux-2.6.32.48/mm/internal.h 2011-11-12 12:46:47.000000000 -0500
20408 +diff -urNp linux-2.6.32.46/mm/internal.h linux-2.6.32.46/mm/internal.h
20409 +--- linux-2.6.32.46/mm/internal.h 2011-03-27 14:31:47.000000000 -0400
20410 ++++ linux-2.6.32.46/mm/internal.h 2011-07-09 09:13:08.000000000 -0400
20411 @@ -49,6 +49,7 @@ extern void putback_lru_page(struct page
20412 * in mm/page_alloc.c
20413 */
20414 @@ -71512,9 +71548,9 @@ diff -urNp linux-2.6.32.48/mm/internal.h linux-2.6.32.48/mm/internal.h
20415 extern void prep_compound_page(struct page *page, unsigned long order);
20416
20417
20418 -diff -urNp linux-2.6.32.48/mm/Kconfig linux-2.6.32.48/mm/Kconfig
20419 ---- linux-2.6.32.48/mm/Kconfig 2011-11-12 12:44:30.000000000 -0500
20420 -+++ linux-2.6.32.48/mm/Kconfig 2011-11-12 12:46:47.000000000 -0500
20421 +diff -urNp linux-2.6.32.46/mm/Kconfig linux-2.6.32.46/mm/Kconfig
20422 +--- linux-2.6.32.46/mm/Kconfig 2011-03-27 14:31:47.000000000 -0400
20423 ++++ linux-2.6.32.46/mm/Kconfig 2011-04-17 15:56:46.000000000 -0400
20424 @@ -228,7 +228,7 @@ config KSM
20425 config DEFAULT_MMAP_MIN_ADDR
20426 int "Low address space to protect from user allocation"
20427 @@ -71524,9 +71560,9 @@ diff -urNp linux-2.6.32.48/mm/Kconfig linux-2.6.32.48/mm/Kconfig
20428 help
20429 This is the portion of low virtual memory which should be protected
20430 from userspace allocation. Keeping a user from writing to low pages
20431 -diff -urNp linux-2.6.32.48/mm/kmemleak.c linux-2.6.32.48/mm/kmemleak.c
20432 ---- linux-2.6.32.48/mm/kmemleak.c 2011-11-12 12:44:30.000000000 -0500
20433 -+++ linux-2.6.32.48/mm/kmemleak.c 2011-11-12 12:46:47.000000000 -0500
20434 +diff -urNp linux-2.6.32.46/mm/kmemleak.c linux-2.6.32.46/mm/kmemleak.c
20435 +--- linux-2.6.32.46/mm/kmemleak.c 2011-06-25 12:55:35.000000000 -0400
20436 ++++ linux-2.6.32.46/mm/kmemleak.c 2011-06-25 12:56:37.000000000 -0400
20437 @@ -358,7 +358,7 @@ static void print_unreferenced(struct se
20438
20439 for (i = 0; i < object->trace_len; i++) {
20440 @@ -71536,9 +71572,9 @@ diff -urNp linux-2.6.32.48/mm/kmemleak.c linux-2.6.32.48/mm/kmemleak.c
20441 }
20442 }
20443
20444 -diff -urNp linux-2.6.32.48/mm/maccess.c linux-2.6.32.48/mm/maccess.c
20445 ---- linux-2.6.32.48/mm/maccess.c 2009-12-02 22:51:21.000000000 -0500
20446 -+++ linux-2.6.32.48/mm/maccess.c 2011-11-12 12:46:47.000000000 -0500
20447 +diff -urNp linux-2.6.32.46/mm/maccess.c linux-2.6.32.46/mm/maccess.c
20448 +--- linux-2.6.32.46/mm/maccess.c 2011-03-27 14:31:47.000000000 -0400
20449 ++++ linux-2.6.32.46/mm/maccess.c 2011-10-06 09:37:14.000000000 -0400
20450 @@ -14,7 +14,7 @@
20451 * Safely read from address @src to the buffer at @dst. If a kernel fault
20452 * happens, handle that and return -EFAULT.
20453 @@ -71574,9 +71610,9 @@ diff -urNp linux-2.6.32.48/mm/maccess.c linux-2.6.32.48/mm/maccess.c
20454 pagefault_enable();
20455 set_fs(old_fs);
20456
20457 -diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
20458 ---- linux-2.6.32.48/mm/madvise.c 2009-12-02 22:51:21.000000000 -0500
20459 -+++ linux-2.6.32.48/mm/madvise.c 2011-11-12 12:46:47.000000000 -0500
20460 +diff -urNp linux-2.6.32.46/mm/madvise.c linux-2.6.32.46/mm/madvise.c
20461 +--- linux-2.6.32.46/mm/madvise.c 2011-03-27 14:31:47.000000000 -0400
20462 ++++ linux-2.6.32.46/mm/madvise.c 2011-04-17 15:56:46.000000000 -0400
20463 @@ -44,6 +44,10 @@ static long madvise_behavior(struct vm_a
20464 pgoff_t pgoff;
20465 unsigned long new_flags = vma->vm_flags;
20466 @@ -71653,9 +71689,9 @@ diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
20467 error = 0;
20468 if (end == start)
20469 goto out;
20470 -diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
20471 ---- linux-2.6.32.48/mm/memory.c 2011-11-12 12:44:30.000000000 -0500
20472 -+++ linux-2.6.32.48/mm/memory.c 2011-11-12 12:46:47.000000000 -0500
20473 +diff -urNp linux-2.6.32.46/mm/memory.c linux-2.6.32.46/mm/memory.c
20474 +--- linux-2.6.32.46/mm/memory.c 2011-07-13 17:23:04.000000000 -0400
20475 ++++ linux-2.6.32.46/mm/memory.c 2011-07-13 17:23:23.000000000 -0400
20476 @@ -187,8 +187,12 @@ static inline void free_pmd_range(struct
20477 return;
20478
20479 @@ -72185,9 +72221,9 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
20480 /*
20481 * Make sure the vDSO gets into every core dump.
20482 * Dumping its contents makes post-mortem fully interpretable later
20483 -diff -urNp linux-2.6.32.48/mm/memory-failure.c linux-2.6.32.48/mm/memory-failure.c
20484 ---- linux-2.6.32.48/mm/memory-failure.c 2011-11-12 12:44:30.000000000 -0500
20485 -+++ linux-2.6.32.48/mm/memory-failure.c 2011-11-12 12:46:47.000000000 -0500
20486 +diff -urNp linux-2.6.32.46/mm/memory-failure.c linux-2.6.32.46/mm/memory-failure.c
20487 +--- linux-2.6.32.46/mm/memory-failure.c 2011-03-27 14:31:47.000000000 -0400
20488 ++++ linux-2.6.32.46/mm/memory-failure.c 2011-10-06 09:37:14.000000000 -0400
20489 @@ -46,7 +46,7 @@ int sysctl_memory_failure_early_kill __r
20490
20491 int sysctl_memory_failure_recovery __read_mostly = 1;
20492 @@ -72215,9 +72251,9 @@ diff -urNp linux-2.6.32.48/mm/memory-failure.c linux-2.6.32.48/mm/memory-failure
20493
20494 /*
20495 * We need/can do nothing about count=0 pages.
20496 -diff -urNp linux-2.6.32.48/mm/mempolicy.c linux-2.6.32.48/mm/mempolicy.c
20497 ---- linux-2.6.32.48/mm/mempolicy.c 2011-11-12 12:44:30.000000000 -0500
20498 -+++ linux-2.6.32.48/mm/mempolicy.c 2011-11-12 12:46:47.000000000 -0500
20499 +diff -urNp linux-2.6.32.46/mm/mempolicy.c linux-2.6.32.46/mm/mempolicy.c
20500 +--- linux-2.6.32.46/mm/mempolicy.c 2011-03-27 14:31:47.000000000 -0400
20501 ++++ linux-2.6.32.46/mm/mempolicy.c 2011-04-17 15:56:46.000000000 -0400
20502 @@ -573,6 +573,10 @@ static int mbind_range(struct vm_area_st
20503 struct vm_area_struct *next;
20504 int err;
20505 @@ -72298,9 +72334,9 @@ diff -urNp linux-2.6.32.48/mm/mempolicy.c linux-2.6.32.48/mm/mempolicy.c
20506 } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
20507 seq_printf(m, " heap");
20508 } else if (vma->vm_start <= mm->start_stack &&
20509 -diff -urNp linux-2.6.32.48/mm/migrate.c linux-2.6.32.48/mm/migrate.c
20510 ---- linux-2.6.32.48/mm/migrate.c 2011-11-12 12:44:30.000000000 -0500
20511 -+++ linux-2.6.32.48/mm/migrate.c 2011-11-12 12:46:47.000000000 -0500
20512 +diff -urNp linux-2.6.32.46/mm/migrate.c linux-2.6.32.46/mm/migrate.c
20513 +--- linux-2.6.32.46/mm/migrate.c 2011-07-13 17:23:04.000000000 -0400
20514 ++++ linux-2.6.32.46/mm/migrate.c 2011-07-13 17:23:23.000000000 -0400
20515 @@ -916,6 +916,8 @@ static int do_pages_move(struct mm_struc
20516 unsigned long chunk_start;
20517 int err;
20518 @@ -72335,9 +72371,9 @@ diff -urNp linux-2.6.32.48/mm/migrate.c linux-2.6.32.48/mm/migrate.c
20519 rcu_read_unlock();
20520 err = -EPERM;
20521 goto out;
20522 -diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
20523 ---- linux-2.6.32.48/mm/mlock.c 2011-11-12 12:44:30.000000000 -0500
20524 -+++ linux-2.6.32.48/mm/mlock.c 2011-11-12 12:46:47.000000000 -0500
20525 +diff -urNp linux-2.6.32.46/mm/mlock.c linux-2.6.32.46/mm/mlock.c
20526 +--- linux-2.6.32.46/mm/mlock.c 2011-03-27 14:31:47.000000000 -0400
20527 ++++ linux-2.6.32.46/mm/mlock.c 2011-04-17 15:56:46.000000000 -0400
20528 @@ -13,6 +13,7 @@
20529 #include <linux/pagemap.h>
20530 #include <linux/mempolicy.h>
20531 @@ -72448,9 +72484,9 @@ diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
20532 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
20533 capable(CAP_IPC_LOCK))
20534 ret = do_mlockall(flags);
20535 -diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20536 ---- linux-2.6.32.48/mm/mmap.c 2011-11-12 12:44:30.000000000 -0500
20537 -+++ linux-2.6.32.48/mm/mmap.c 2011-11-12 12:55:30.000000000 -0500
20538 +diff -urNp linux-2.6.32.46/mm/mmap.c linux-2.6.32.46/mm/mmap.c
20539 +--- linux-2.6.32.46/mm/mmap.c 2011-03-27 14:31:47.000000000 -0400
20540 ++++ linux-2.6.32.46/mm/mmap.c 2011-04-17 15:56:46.000000000 -0400
20541 @@ -45,6 +45,16 @@
20542 #define arch_rebalance_pgtables(addr, len) (addr)
20543 #endif
20544 @@ -73177,16 +73213,16 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20545 unsigned long size, grow;
20546
20547 size = address - vma->vm_start;
20548 -@@ -1643,6 +1903,8 @@ int expand_upwards(struct vm_area_struct
20549 - vma->vm_end = address;
20550 - }
20551 +@@ -1640,6 +1900,8 @@ int expand_upwards(struct vm_area_struct
20552 + if (!error)
20553 + vma->vm_end = address;
20554 }
20555 + if (locknext)
20556 + anon_vma_unlock(vma->vm_next);
20557 anon_vma_unlock(vma);
20558 return error;
20559 }
20560 -@@ -1655,6 +1917,8 @@ static int expand_downwards(struct vm_ar
20561 +@@ -1652,6 +1914,8 @@ static int expand_downwards(struct vm_ar
20562 unsigned long address)
20563 {
20564 int error;
20565 @@ -73195,7 +73231,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20566
20567 /*
20568 * We must make sure the anon_vma is allocated
20569 -@@ -1668,6 +1932,15 @@ static int expand_downwards(struct vm_ar
20570 +@@ -1665,6 +1929,15 @@ static int expand_downwards(struct vm_ar
20571 if (error)
20572 return error;
20573
20574 @@ -73211,7 +73247,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20575 anon_vma_lock(vma);
20576
20577 /*
20578 -@@ -1677,9 +1950,17 @@ static int expand_downwards(struct vm_ar
20579 +@@ -1674,9 +1947,17 @@ static int expand_downwards(struct vm_ar
20580 */
20581
20582 /* Somebody else might have raced and expanded it already */
20583 @@ -73230,21 +73266,19 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20584 size = vma->vm_end - address;
20585 grow = (vma->vm_start - address) >> PAGE_SHIFT;
20586
20587 -@@ -1689,10 +1970,22 @@ static int expand_downwards(struct vm_ar
20588 - if (!error) {
20589 - vma->vm_start = address;
20590 - vma->vm_pgoff -= grow;
20591 -+ track_exec_limit(vma->vm_mm, vma->vm_start, vma->vm_end, vma->vm_flags);
20592 +@@ -1684,9 +1965,20 @@ static int expand_downwards(struct vm_ar
20593 + if (!error) {
20594 + vma->vm_start = address;
20595 + vma->vm_pgoff -= grow;
20596 ++ track_exec_limit(vma->vm_mm, vma->vm_start, vma->vm_end, vma->vm_flags);
20597 +
20598 +#ifdef CONFIG_PAX_SEGMEXEC
20599 -+ if (vma_m) {
20600 -+ vma_m->vm_start -= grow << PAGE_SHIFT;
20601 -+ vma_m->vm_pgoff -= grow;
20602 -+ }
20603 ++ if (vma_m) {
20604 ++ vma_m->vm_start -= grow << PAGE_SHIFT;
20605 ++ vma_m->vm_pgoff -= grow;
20606 ++ }
20607 +#endif
20608 +
20609 -+
20610 - }
20611 }
20612 }
20613 anon_vma_unlock(vma);
20614 @@ -73253,7 +73287,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20615 return error;
20616 }
20617
20618 -@@ -1768,6 +2061,13 @@ static void remove_vma_list(struct mm_st
20619 +@@ -1762,6 +2054,13 @@ static void remove_vma_list(struct mm_st
20620 do {
20621 long nrpages = vma_pages(vma);
20622
20623 @@ -73267,7 +73301,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20624 mm->total_vm -= nrpages;
20625 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
20626 vma = remove_vma(vma);
20627 -@@ -1813,6 +2113,16 @@ detach_vmas_to_be_unmapped(struct mm_str
20628 +@@ -1807,6 +2106,16 @@ detach_vmas_to_be_unmapped(struct mm_str
20629 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
20630 vma->vm_prev = NULL;
20631 do {
20632 @@ -73284,7 +73318,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20633 rb_erase(&vma->vm_rb, &mm->mm_rb);
20634 mm->map_count--;
20635 tail_vma = vma;
20636 -@@ -1840,10 +2150,25 @@ int split_vma(struct mm_struct * mm, str
20637 +@@ -1834,10 +2143,25 @@ int split_vma(struct mm_struct * mm, str
20638 struct mempolicy *pol;
20639 struct vm_area_struct *new;
20640
20641 @@ -73310,7 +73344,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20642 if (mm->map_count >= sysctl_max_map_count)
20643 return -ENOMEM;
20644
20645 -@@ -1851,6 +2176,16 @@ int split_vma(struct mm_struct * mm, str
20646 +@@ -1845,6 +2169,16 @@ int split_vma(struct mm_struct * mm, str
20647 if (!new)
20648 return -ENOMEM;
20649
20650 @@ -73327,7 +73361,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20651 /* most fields are the same, copy all, and then fixup */
20652 *new = *vma;
20653
20654 -@@ -1861,8 +2196,29 @@ int split_vma(struct mm_struct * mm, str
20655 +@@ -1855,8 +2189,29 @@ int split_vma(struct mm_struct * mm, str
20656 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
20657 }
20658
20659 @@ -73357,7 +73391,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20660 kmem_cache_free(vm_area_cachep, new);
20661 return PTR_ERR(pol);
20662 }
20663 -@@ -1883,6 +2239,28 @@ int split_vma(struct mm_struct * mm, str
20664 +@@ -1877,6 +2232,28 @@ int split_vma(struct mm_struct * mm, str
20665 else
20666 vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
20667
20668 @@ -73386,7 +73420,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20669 return 0;
20670 }
20671
20672 -@@ -1891,11 +2269,30 @@ int split_vma(struct mm_struct * mm, str
20673 +@@ -1885,11 +2262,30 @@ int split_vma(struct mm_struct * mm, str
20674 * work. This now handles partial unmappings.
20675 * Jeremy Fitzhardinge <jeremy@××××.org>
20676 */
20677 @@ -73417,7 +73451,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20678 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
20679 return -EINVAL;
20680
20681 -@@ -1959,6 +2356,8 @@ int do_munmap(struct mm_struct *mm, unsi
20682 +@@ -1953,6 +2349,8 @@ int do_munmap(struct mm_struct *mm, unsi
20683 /* Fix up all other VM information */
20684 remove_vma_list(mm, vma);
20685
20686 @@ -73426,7 +73460,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20687 return 0;
20688 }
20689
20690 -@@ -1971,22 +2370,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a
20691 +@@ -1965,22 +2363,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a
20692
20693 profile_munmap(addr);
20694
20695 @@ -73455,7 +73489,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20696 /*
20697 * this is really a simplified "do_mmap". it only handles
20698 * anonymous maps. eventually we may be able to do some
20699 -@@ -2000,6 +2395,7 @@ unsigned long do_brk(unsigned long addr,
20700 +@@ -1994,6 +2388,7 @@ unsigned long do_brk(unsigned long addr,
20701 struct rb_node ** rb_link, * rb_parent;
20702 pgoff_t pgoff = addr >> PAGE_SHIFT;
20703 int error;
20704 @@ -73463,7 +73497,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20705
20706 len = PAGE_ALIGN(len);
20707 if (!len)
20708 -@@ -2011,16 +2407,30 @@ unsigned long do_brk(unsigned long addr,
20709 +@@ -2005,16 +2400,30 @@ unsigned long do_brk(unsigned long addr,
20710
20711 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
20712
20713 @@ -73495,7 +73529,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20714 locked += mm->locked_vm;
20715 lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
20716 lock_limit >>= PAGE_SHIFT;
20717 -@@ -2037,22 +2447,22 @@ unsigned long do_brk(unsigned long addr,
20718 +@@ -2031,22 +2440,22 @@ unsigned long do_brk(unsigned long addr,
20719 /*
20720 * Clear old maps. this also does some error checking for us
20721 */
20722 @@ -73522,7 +73556,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20723 return -ENOMEM;
20724
20725 /* Can we just expand an old private anonymous mapping? */
20726 -@@ -2066,7 +2476,7 @@ unsigned long do_brk(unsigned long addr,
20727 +@@ -2060,7 +2469,7 @@ unsigned long do_brk(unsigned long addr,
20728 */
20729 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
20730 if (!vma) {
20731 @@ -73531,7 +73565,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20732 return -ENOMEM;
20733 }
20734
20735 -@@ -2078,11 +2488,12 @@ unsigned long do_brk(unsigned long addr,
20736 +@@ -2072,11 +2481,12 @@ unsigned long do_brk(unsigned long addr,
20737 vma->vm_page_prot = vm_get_page_prot(flags);
20738 vma_link(mm, vma, prev, rb_link, rb_parent);
20739 out:
20740 @@ -73546,7 +73580,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20741 return addr;
20742 }
20743
20744 -@@ -2129,8 +2540,10 @@ void exit_mmap(struct mm_struct *mm)
20745 +@@ -2123,8 +2533,10 @@ void exit_mmap(struct mm_struct *mm)
20746 * Walk the list again, actually closing and freeing it,
20747 * with preemption enabled, without holding any MM locks.
20748 */
20749 @@ -73558,7 +73592,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20750
20751 BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);
20752 }
20753 -@@ -2144,6 +2557,10 @@ int insert_vm_struct(struct mm_struct *
20754 +@@ -2138,6 +2550,10 @@ int insert_vm_struct(struct mm_struct *
20755 struct vm_area_struct * __vma, * prev;
20756 struct rb_node ** rb_link, * rb_parent;
20757
20758 @@ -73569,7 +73603,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20759 /*
20760 * The vm_pgoff of a purely anonymous vma should be irrelevant
20761 * until its first write fault, when page's anon_vma and index
20762 -@@ -2166,7 +2583,22 @@ int insert_vm_struct(struct mm_struct *
20763 +@@ -2160,7 +2576,22 @@ int insert_vm_struct(struct mm_struct *
20764 if ((vma->vm_flags & VM_ACCOUNT) &&
20765 security_vm_enough_memory_mm(mm, vma_pages(vma)))
20766 return -ENOMEM;
20767 @@ -73592,7 +73626,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20768 return 0;
20769 }
20770
20771 -@@ -2184,6 +2616,8 @@ struct vm_area_struct *copy_vma(struct v
20772 +@@ -2178,6 +2609,8 @@ struct vm_area_struct *copy_vma(struct v
20773 struct rb_node **rb_link, *rb_parent;
20774 struct mempolicy *pol;
20775
20776 @@ -73601,7 +73635,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20777 /*
20778 * If anonymous vma has not yet been faulted, update new pgoff
20779 * to match new location, to increase its chance of merging.
20780 -@@ -2227,6 +2661,35 @@ struct vm_area_struct *copy_vma(struct v
20781 +@@ -2221,6 +2654,35 @@ struct vm_area_struct *copy_vma(struct v
20782 return new_vma;
20783 }
20784
20785 @@ -73637,7 +73671,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20786 /*
20787 * Return true if the calling process may expand its vm space by the passed
20788 * number of pages
20789 -@@ -2237,7 +2700,7 @@ int may_expand_vm(struct mm_struct *mm,
20790 +@@ -2231,7 +2693,7 @@ int may_expand_vm(struct mm_struct *mm,
20791 unsigned long lim;
20792
20793 lim = current->signal->rlim[RLIMIT_AS].rlim_cur >> PAGE_SHIFT;
20794 @@ -73646,7 +73680,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20795 if (cur + npages > lim)
20796 return 0;
20797 return 1;
20798 -@@ -2307,6 +2770,22 @@ int install_special_mapping(struct mm_st
20799 +@@ -2301,6 +2763,22 @@ int install_special_mapping(struct mm_st
20800 vma->vm_start = addr;
20801 vma->vm_end = addr + len;
20802
20803 @@ -73669,9 +73703,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
20804 vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND;
20805 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
20806
20807 -diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
20808 ---- linux-2.6.32.48/mm/mprotect.c 2011-11-12 12:44:30.000000000 -0500
20809 -+++ linux-2.6.32.48/mm/mprotect.c 2011-11-12 12:46:47.000000000 -0500
20810 +diff -urNp linux-2.6.32.46/mm/mprotect.c linux-2.6.32.46/mm/mprotect.c
20811 +--- linux-2.6.32.46/mm/mprotect.c 2011-03-27 14:31:47.000000000 -0400
20812 ++++ linux-2.6.32.46/mm/mprotect.c 2011-04-17 15:56:46.000000000 -0400
20813 @@ -24,10 +24,16 @@
20814 #include <linux/mmu_notifier.h>
20815 #include <linux/migrate.h>
20816 @@ -73894,9 +73928,9 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
20817 nstart = tmp;
20818
20819 if (nstart < prev->vm_end)
20820 -diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
20821 ---- linux-2.6.32.48/mm/mremap.c 2011-11-12 12:44:30.000000000 -0500
20822 -+++ linux-2.6.32.48/mm/mremap.c 2011-11-12 12:46:47.000000000 -0500
20823 +diff -urNp linux-2.6.32.46/mm/mremap.c linux-2.6.32.46/mm/mremap.c
20824 +--- linux-2.6.32.46/mm/mremap.c 2011-04-17 17:00:52.000000000 -0400
20825 ++++ linux-2.6.32.46/mm/mremap.c 2011-04-17 17:03:58.000000000 -0400
20826 @@ -112,6 +112,12 @@ static void move_ptes(struct vm_area_str
20827 continue;
20828 pte = ptep_clear_flush(vma, old_addr, old_pte);
20829 @@ -74001,9 +74035,9 @@ diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
20830 }
20831 out:
20832 if (ret & ~PAGE_MASK)
20833 -diff -urNp linux-2.6.32.48/mm/nommu.c linux-2.6.32.48/mm/nommu.c
20834 ---- linux-2.6.32.48/mm/nommu.c 2011-11-12 12:44:30.000000000 -0500
20835 -+++ linux-2.6.32.48/mm/nommu.c 2011-11-12 12:46:47.000000000 -0500
20836 +diff -urNp linux-2.6.32.46/mm/nommu.c linux-2.6.32.46/mm/nommu.c
20837 +--- linux-2.6.32.46/mm/nommu.c 2011-03-27 14:31:47.000000000 -0400
20838 ++++ linux-2.6.32.46/mm/nommu.c 2011-04-17 15:56:46.000000000 -0400
20839 @@ -67,7 +67,6 @@ int sysctl_overcommit_memory = OVERCOMMI
20840 int sysctl_overcommit_ratio = 50; /* default is 50% */
20841 int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
20842 @@ -74028,9 +74062,9 @@ diff -urNp linux-2.6.32.48/mm/nommu.c linux-2.6.32.48/mm/nommu.c
20843 * expand a stack to a given address
20844 * - not supported under NOMMU conditions
20845 */
20846 -diff -urNp linux-2.6.32.48/mm/page_alloc.c linux-2.6.32.48/mm/page_alloc.c
20847 ---- linux-2.6.32.48/mm/page_alloc.c 2011-11-12 12:44:30.000000000 -0500
20848 -+++ linux-2.6.32.48/mm/page_alloc.c 2011-11-12 12:46:47.000000000 -0500
20849 +diff -urNp linux-2.6.32.46/mm/page_alloc.c linux-2.6.32.46/mm/page_alloc.c
20850 +--- linux-2.6.32.46/mm/page_alloc.c 2011-06-25 12:55:35.000000000 -0400
20851 ++++ linux-2.6.32.46/mm/page_alloc.c 2011-07-09 09:13:08.000000000 -0400
20852 @@ -289,7 +289,7 @@ out:
20853 * This usage means that zero-order pages may not be compound.
20854 */
20855 @@ -74105,9 +74139,9 @@ diff -urNp linux-2.6.32.48/mm/page_alloc.c linux-2.6.32.48/mm/page_alloc.c
20856 struct zone *zone, unsigned long zonesize) {}
20857 #endif /* CONFIG_SPARSEMEM */
20858
20859 -diff -urNp linux-2.6.32.48/mm/percpu.c linux-2.6.32.48/mm/percpu.c
20860 ---- linux-2.6.32.48/mm/percpu.c 2011-11-12 12:44:30.000000000 -0500
20861 -+++ linux-2.6.32.48/mm/percpu.c 2011-11-12 12:46:47.000000000 -0500
20862 +diff -urNp linux-2.6.32.46/mm/percpu.c linux-2.6.32.46/mm/percpu.c
20863 +--- linux-2.6.32.46/mm/percpu.c 2011-03-27 14:31:47.000000000 -0400
20864 ++++ linux-2.6.32.46/mm/percpu.c 2011-04-17 15:56:46.000000000 -0400
20865 @@ -115,7 +115,7 @@ static unsigned int pcpu_first_unit_cpu
20866 static unsigned int pcpu_last_unit_cpu __read_mostly;
20867
20868 @@ -74117,9 +74151,9 @@ diff -urNp linux-2.6.32.48/mm/percpu.c linux-2.6.32.48/mm/percpu.c
20869 EXPORT_SYMBOL_GPL(pcpu_base_addr);
20870
20871 static const int *pcpu_unit_map __read_mostly; /* cpu -> unit */
20872 -diff -urNp linux-2.6.32.48/mm/rmap.c linux-2.6.32.48/mm/rmap.c
20873 ---- linux-2.6.32.48/mm/rmap.c 2009-12-02 22:51:21.000000000 -0500
20874 -+++ linux-2.6.32.48/mm/rmap.c 2011-11-12 12:46:47.000000000 -0500
20875 +diff -urNp linux-2.6.32.46/mm/rmap.c linux-2.6.32.46/mm/rmap.c
20876 +--- linux-2.6.32.46/mm/rmap.c 2011-03-27 14:31:47.000000000 -0400
20877 ++++ linux-2.6.32.46/mm/rmap.c 2011-04-17 15:56:46.000000000 -0400
20878 @@ -121,6 +121,17 @@ int anon_vma_prepare(struct vm_area_stru
20879 /* page_table_lock to protect against threads */
20880 spin_lock(&mm->page_table_lock);
20881 @@ -74138,9 +74172,9 @@ diff -urNp linux-2.6.32.48/mm/rmap.c linux-2.6.32.48/mm/rmap.c
20882 vma->anon_vma = anon_vma;
20883 list_add_tail(&vma->anon_vma_node, &anon_vma->head);
20884 allocated = NULL;
20885 -diff -urNp linux-2.6.32.48/mm/shmem.c linux-2.6.32.48/mm/shmem.c
20886 ---- linux-2.6.32.48/mm/shmem.c 2011-11-12 12:44:30.000000000 -0500
20887 -+++ linux-2.6.32.48/mm/shmem.c 2011-11-12 12:46:47.000000000 -0500
20888 +diff -urNp linux-2.6.32.46/mm/shmem.c linux-2.6.32.46/mm/shmem.c
20889 +--- linux-2.6.32.46/mm/shmem.c 2011-03-27 14:31:47.000000000 -0400
20890 ++++ linux-2.6.32.46/mm/shmem.c 2011-05-18 20:09:37.000000000 -0400
20891 @@ -31,7 +31,7 @@
20892 #include <linux/swap.h>
20893 #include <linux/ima.h>
20894 @@ -74187,9 +74221,9 @@ diff -urNp linux-2.6.32.48/mm/shmem.c linux-2.6.32.48/mm/shmem.c
20895 if (!sbinfo)
20896 return -ENOMEM;
20897
20898 -diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
20899 ---- linux-2.6.32.48/mm/slab.c 2011-11-12 12:44:30.000000000 -0500
20900 -+++ linux-2.6.32.48/mm/slab.c 2011-11-12 12:46:47.000000000 -0500
20901 +diff -urNp linux-2.6.32.46/mm/slab.c linux-2.6.32.46/mm/slab.c
20902 +--- linux-2.6.32.46/mm/slab.c 2011-03-27 14:31:47.000000000 -0400
20903 ++++ linux-2.6.32.46/mm/slab.c 2011-05-04 17:56:20.000000000 -0400
20904 @@ -174,7 +174,7 @@
20905
20906 /* Legal flag mask for kmem_cache_create(). */
20907 @@ -74352,9 +74386,9 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
20908 /**
20909 * ksize - get the actual amount of memory allocated for a given object
20910 * @objp: Pointer to the object
20911 -diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
20912 ---- linux-2.6.32.48/mm/slob.c 2009-12-02 22:51:21.000000000 -0500
20913 -+++ linux-2.6.32.48/mm/slob.c 2011-11-12 12:46:47.000000000 -0500
20914 +diff -urNp linux-2.6.32.46/mm/slob.c linux-2.6.32.46/mm/slob.c
20915 +--- linux-2.6.32.46/mm/slob.c 2011-03-27 14:31:47.000000000 -0400
20916 ++++ linux-2.6.32.46/mm/slob.c 2011-07-06 19:53:33.000000000 -0400
20917 @@ -29,7 +29,7 @@
20918 * If kmalloc is asked for objects of PAGE_SIZE or larger, it calls
20919 * alloc_pages() directly, allocating compound pages so the page order
20920 @@ -74704,9 +74738,9 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
20921 }
20922 EXPORT_SYMBOL(kmem_cache_free);
20923
20924 -diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
20925 ---- linux-2.6.32.48/mm/slub.c 2009-12-02 22:51:21.000000000 -0500
20926 -+++ linux-2.6.32.48/mm/slub.c 2011-11-12 12:46:47.000000000 -0500
20927 +diff -urNp linux-2.6.32.46/mm/slub.c linux-2.6.32.46/mm/slub.c
20928 +--- linux-2.6.32.46/mm/slub.c 2011-03-27 14:31:47.000000000 -0400
20929 ++++ linux-2.6.32.46/mm/slub.c 2011-09-25 22:23:01.000000000 -0400
20930 @@ -201,7 +201,7 @@ struct track {
20931
20932 enum track_item { TRACK_ALLOC, TRACK_FREE };
20933 @@ -74958,9 +74992,9 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
20934 return 0;
20935 }
20936 module_init(slab_proc_init);
20937 -diff -urNp linux-2.6.32.48/mm/swap.c linux-2.6.32.48/mm/swap.c
20938 ---- linux-2.6.32.48/mm/swap.c 2009-12-02 22:51:21.000000000 -0500
20939 -+++ linux-2.6.32.48/mm/swap.c 2011-11-12 12:46:47.000000000 -0500
20940 +diff -urNp linux-2.6.32.46/mm/swap.c linux-2.6.32.46/mm/swap.c
20941 +--- linux-2.6.32.46/mm/swap.c 2011-03-27 14:31:47.000000000 -0400
20942 ++++ linux-2.6.32.46/mm/swap.c 2011-07-09 09:15:19.000000000 -0400
20943 @@ -30,6 +30,7 @@
20944 #include <linux/notifier.h>
20945 #include <linux/backing-dev.h>
20946 @@ -74978,9 +75012,9 @@ diff -urNp linux-2.6.32.48/mm/swap.c linux-2.6.32.48/mm/swap.c
20947 (*dtor)(page);
20948 }
20949 }
20950 -diff -urNp linux-2.6.32.48/mm/util.c linux-2.6.32.48/mm/util.c
20951 ---- linux-2.6.32.48/mm/util.c 2011-11-12 12:44:30.000000000 -0500
20952 -+++ linux-2.6.32.48/mm/util.c 2011-11-12 12:46:47.000000000 -0500
20953 +diff -urNp linux-2.6.32.46/mm/util.c linux-2.6.32.46/mm/util.c
20954 +--- linux-2.6.32.46/mm/util.c 2011-03-27 14:31:47.000000000 -0400
20955 ++++ linux-2.6.32.46/mm/util.c 2011-04-17 15:56:46.000000000 -0400
20956 @@ -228,6 +228,12 @@ EXPORT_SYMBOL(strndup_user);
20957 void arch_pick_mmap_layout(struct mm_struct *mm)
20958 {
20959 @@ -74994,9 +75028,9 @@ diff -urNp linux-2.6.32.48/mm/util.c linux-2.6.32.48/mm/util.c
20960 mm->get_unmapped_area = arch_get_unmapped_area;
20961 mm->unmap_area = arch_unmap_area;
20962 }
20963 -diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
20964 ---- linux-2.6.32.48/mm/vmalloc.c 2011-11-12 12:44:30.000000000 -0500
20965 -+++ linux-2.6.32.48/mm/vmalloc.c 2011-11-12 12:46:47.000000000 -0500
20966 +diff -urNp linux-2.6.32.46/mm/vmalloc.c linux-2.6.32.46/mm/vmalloc.c
20967 +--- linux-2.6.32.46/mm/vmalloc.c 2011-08-29 22:24:44.000000000 -0400
20968 ++++ linux-2.6.32.46/mm/vmalloc.c 2011-08-29 22:25:07.000000000 -0400
20969 @@ -40,8 +40,19 @@ static void vunmap_pte_range(pmd_t *pmd,
20970
20971 pte = pte_offset_kernel(pmd, addr);
20972 @@ -75233,9 +75267,9 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
20973 if ((PAGE_SIZE-1) & (unsigned long)addr)
20974 return -EINVAL;
20975
20976 -diff -urNp linux-2.6.32.48/mm/vmstat.c linux-2.6.32.48/mm/vmstat.c
20977 ---- linux-2.6.32.48/mm/vmstat.c 2011-11-12 12:44:30.000000000 -0500
20978 -+++ linux-2.6.32.48/mm/vmstat.c 2011-11-12 12:46:47.000000000 -0500
20979 +diff -urNp linux-2.6.32.46/mm/vmstat.c linux-2.6.32.46/mm/vmstat.c
20980 +--- linux-2.6.32.46/mm/vmstat.c 2011-03-27 14:31:47.000000000 -0400
20981 ++++ linux-2.6.32.46/mm/vmstat.c 2011-04-17 15:56:46.000000000 -0400
20982 @@ -74,7 +74,7 @@ void vm_events_fold_cpu(int cpu)
20983 *
20984 * vm_stat contains the global counters
20985 @@ -75288,9 +75322,9 @@ diff -urNp linux-2.6.32.48/mm/vmstat.c linux-2.6.32.48/mm/vmstat.c
20986 #endif
20987 return 0;
20988 }
20989 -diff -urNp linux-2.6.32.48/net/8021q/vlan.c linux-2.6.32.48/net/8021q/vlan.c
20990 ---- linux-2.6.32.48/net/8021q/vlan.c 2009-12-02 22:51:21.000000000 -0500
20991 -+++ linux-2.6.32.48/net/8021q/vlan.c 2011-11-12 12:46:47.000000000 -0500
20992 +diff -urNp linux-2.6.32.46/net/8021q/vlan.c linux-2.6.32.46/net/8021q/vlan.c
20993 +--- linux-2.6.32.46/net/8021q/vlan.c 2011-03-27 14:31:47.000000000 -0400
20994 ++++ linux-2.6.32.46/net/8021q/vlan.c 2011-04-17 15:56:46.000000000 -0400
20995 @@ -622,8 +622,7 @@ static int vlan_ioctl_handler(struct net
20996 err = -EPERM;
20997 if (!capable(CAP_NET_ADMIN))
20998 @@ -75301,9 +75335,9 @@ diff -urNp linux-2.6.32.48/net/8021q/vlan.c linux-2.6.32.48/net/8021q/vlan.c
20999 struct vlan_net *vn;
21000
21001 vn = net_generic(net, vlan_net_id);
21002 -diff -urNp linux-2.6.32.48/net/9p/trans_fd.c linux-2.6.32.48/net/9p/trans_fd.c
21003 ---- linux-2.6.32.48/net/9p/trans_fd.c 2011-11-12 12:44:30.000000000 -0500
21004 -+++ linux-2.6.32.48/net/9p/trans_fd.c 2011-11-12 12:46:47.000000000 -0500
21005 +diff -urNp linux-2.6.32.46/net/9p/trans_fd.c linux-2.6.32.46/net/9p/trans_fd.c
21006 +--- linux-2.6.32.46/net/9p/trans_fd.c 2011-03-27 14:31:47.000000000 -0400
21007 ++++ linux-2.6.32.46/net/9p/trans_fd.c 2011-10-06 09:37:14.000000000 -0400
21008 @@ -419,7 +419,7 @@ static int p9_fd_write(struct p9_client
21009 oldfs = get_fs();
21010 set_fs(get_ds());
21011 @@ -75313,9 +75347,9 @@ diff -urNp linux-2.6.32.48/net/9p/trans_fd.c linux-2.6.32.48/net/9p/trans_fd.c
21012 set_fs(oldfs);
21013
21014 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
21015 -diff -urNp linux-2.6.32.48/net/atm/atm_misc.c linux-2.6.32.48/net/atm/atm_misc.c
21016 ---- linux-2.6.32.48/net/atm/atm_misc.c 2009-12-02 22:51:21.000000000 -0500
21017 -+++ linux-2.6.32.48/net/atm/atm_misc.c 2011-11-12 12:46:47.000000000 -0500
21018 +diff -urNp linux-2.6.32.46/net/atm/atm_misc.c linux-2.6.32.46/net/atm/atm_misc.c
21019 +--- linux-2.6.32.46/net/atm/atm_misc.c 2011-03-27 14:31:47.000000000 -0400
21020 ++++ linux-2.6.32.46/net/atm/atm_misc.c 2011-04-17 15:56:46.000000000 -0400
21021 @@ -19,7 +19,7 @@ int atm_charge(struct atm_vcc *vcc,int t
21022 if (atomic_read(&sk_atm(vcc)->sk_rmem_alloc) <= sk_atm(vcc)->sk_rcvbuf)
21023 return 1;
21024 @@ -75352,9 +75386,9 @@ diff -urNp linux-2.6.32.48/net/atm/atm_misc.c linux-2.6.32.48/net/atm/atm_misc.c
21025 __SONET_ITEMS
21026 #undef __HANDLE_ITEM
21027 }
21028 -diff -urNp linux-2.6.32.48/net/atm/lec.h linux-2.6.32.48/net/atm/lec.h
21029 ---- linux-2.6.32.48/net/atm/lec.h 2009-12-02 22:51:21.000000000 -0500
21030 -+++ linux-2.6.32.48/net/atm/lec.h 2011-11-12 12:46:47.000000000 -0500
21031 +diff -urNp linux-2.6.32.46/net/atm/lec.h linux-2.6.32.46/net/atm/lec.h
21032 +--- linux-2.6.32.46/net/atm/lec.h 2011-03-27 14:31:47.000000000 -0400
21033 ++++ linux-2.6.32.46/net/atm/lec.h 2011-08-05 20:33:55.000000000 -0400
21034 @@ -48,7 +48,7 @@ struct lane2_ops {
21035 const u8 *tlvs, u32 sizeoftlvs);
21036 void (*associate_indicator) (struct net_device *dev, const u8 *mac_addr,
21037 @@ -75364,9 +75398,9 @@ diff -urNp linux-2.6.32.48/net/atm/lec.h linux-2.6.32.48/net/atm/lec.h
21038
21039 /*
21040 * ATM LAN Emulation supports both LLC & Dix Ethernet EtherType
21041 -diff -urNp linux-2.6.32.48/net/atm/mpc.h linux-2.6.32.48/net/atm/mpc.h
21042 ---- linux-2.6.32.48/net/atm/mpc.h 2009-12-02 22:51:21.000000000 -0500
21043 -+++ linux-2.6.32.48/net/atm/mpc.h 2011-11-12 12:46:47.000000000 -0500
21044 +diff -urNp linux-2.6.32.46/net/atm/mpc.h linux-2.6.32.46/net/atm/mpc.h
21045 +--- linux-2.6.32.46/net/atm/mpc.h 2011-03-27 14:31:47.000000000 -0400
21046 ++++ linux-2.6.32.46/net/atm/mpc.h 2011-08-23 21:22:38.000000000 -0400
21047 @@ -33,7 +33,7 @@ struct mpoa_client {
21048 struct mpc_parameters parameters; /* parameters for this client */
21049
21050 @@ -75376,9 +75410,9 @@ diff -urNp linux-2.6.32.48/net/atm/mpc.h linux-2.6.32.48/net/atm/mpc.h
21051 };
21052
21053
21054 -diff -urNp linux-2.6.32.48/net/atm/mpoa_caches.c linux-2.6.32.48/net/atm/mpoa_caches.c
21055 ---- linux-2.6.32.48/net/atm/mpoa_caches.c 2009-12-02 22:51:21.000000000 -0500
21056 -+++ linux-2.6.32.48/net/atm/mpoa_caches.c 2011-11-12 12:46:47.000000000 -0500
21057 +diff -urNp linux-2.6.32.46/net/atm/mpoa_caches.c linux-2.6.32.46/net/atm/mpoa_caches.c
21058 +--- linux-2.6.32.46/net/atm/mpoa_caches.c 2011-03-27 14:31:47.000000000 -0400
21059 ++++ linux-2.6.32.46/net/atm/mpoa_caches.c 2011-05-16 21:46:57.000000000 -0400
21060 @@ -498,6 +498,8 @@ static void clear_expired(struct mpoa_cl
21061 struct timeval now;
21062 struct k_message msg;
21063 @@ -75388,9 +75422,9 @@ diff -urNp linux-2.6.32.48/net/atm/mpoa_caches.c linux-2.6.32.48/net/atm/mpoa_ca
21064 do_gettimeofday(&now);
21065
21066 write_lock_irq(&client->egress_lock);
21067 -diff -urNp linux-2.6.32.48/net/atm/proc.c linux-2.6.32.48/net/atm/proc.c
21068 ---- linux-2.6.32.48/net/atm/proc.c 2009-12-02 22:51:21.000000000 -0500
21069 -+++ linux-2.6.32.48/net/atm/proc.c 2011-11-12 12:46:47.000000000 -0500
21070 +diff -urNp linux-2.6.32.46/net/atm/proc.c linux-2.6.32.46/net/atm/proc.c
21071 +--- linux-2.6.32.46/net/atm/proc.c 2011-03-27 14:31:47.000000000 -0400
21072 ++++ linux-2.6.32.46/net/atm/proc.c 2011-04-17 15:56:46.000000000 -0400
21073 @@ -43,9 +43,9 @@ static void add_stats(struct seq_file *s
21074 const struct k_atm_aal_stats *stats)
21075 {
21076 @@ -75429,9 +75463,9 @@ diff -urNp linux-2.6.32.48/net/atm/proc.c linux-2.6.32.48/net/atm/proc.c
21077 else
21078 seq_printf(seq, "%3d %3d %5d ",
21079 vcc->dev->number, vcc->vpi, vcc->vci);
21080 -diff -urNp linux-2.6.32.48/net/atm/resources.c linux-2.6.32.48/net/atm/resources.c
21081 ---- linux-2.6.32.48/net/atm/resources.c 2009-12-02 22:51:21.000000000 -0500
21082 -+++ linux-2.6.32.48/net/atm/resources.c 2011-11-12 12:46:47.000000000 -0500
21083 +diff -urNp linux-2.6.32.46/net/atm/resources.c linux-2.6.32.46/net/atm/resources.c
21084 +--- linux-2.6.32.46/net/atm/resources.c 2011-03-27 14:31:47.000000000 -0400
21085 ++++ linux-2.6.32.46/net/atm/resources.c 2011-04-17 15:56:46.000000000 -0400
21086 @@ -161,7 +161,7 @@ void atm_dev_deregister(struct atm_dev *
21087 static void copy_aal_stats(struct k_atm_aal_stats *from,
21088 struct atm_aal_stats *to)
21089 @@ -75450,9 +75484,41 @@ diff -urNp linux-2.6.32.48/net/atm/resources.c linux-2.6.32.48/net/atm/resources
21090 __AAL_STAT_ITEMS
21091 #undef __HANDLE_ITEM
21092 }
21093 -diff -urNp linux-2.6.32.48/net/bridge/br_private.h linux-2.6.32.48/net/bridge/br_private.h
21094 ---- linux-2.6.32.48/net/bridge/br_private.h 2011-11-12 12:44:30.000000000 -0500
21095 -+++ linux-2.6.32.48/net/bridge/br_private.h 2011-11-12 12:46:51.000000000 -0500
21096 +diff -urNp linux-2.6.32.46/net/bluetooth/l2cap.c linux-2.6.32.46/net/bluetooth/l2cap.c
21097 +--- linux-2.6.32.46/net/bluetooth/l2cap.c 2011-03-27 14:31:47.000000000 -0400
21098 ++++ linux-2.6.32.46/net/bluetooth/l2cap.c 2011-06-25 14:36:21.000000000 -0400
21099 +@@ -1885,7 +1885,7 @@ static int l2cap_sock_getsockopt_old(str
21100 + err = -ENOTCONN;
21101 + break;
21102 + }
21103 +-
21104 ++ memset(&cinfo, 0, sizeof(cinfo));
21105 + cinfo.hci_handle = l2cap_pi(sk)->conn->hcon->handle;
21106 + memcpy(cinfo.dev_class, l2cap_pi(sk)->conn->hcon->dev_class, 3);
21107 +
21108 +@@ -2719,7 +2719,7 @@ static inline int l2cap_config_req(struc
21109 +
21110 + /* Reject if config buffer is too small. */
21111 + len = cmd_len - sizeof(*req);
21112 +- if (l2cap_pi(sk)->conf_len + len > sizeof(l2cap_pi(sk)->conf_req)) {
21113 ++ if (len < 0 || l2cap_pi(sk)->conf_len + len > sizeof(l2cap_pi(sk)->conf_req)) {
21114 + l2cap_send_cmd(conn, cmd->ident, L2CAP_CONF_RSP,
21115 + l2cap_build_conf_rsp(sk, rsp,
21116 + L2CAP_CONF_REJECT, flags), rsp);
21117 +diff -urNp linux-2.6.32.46/net/bluetooth/rfcomm/sock.c linux-2.6.32.46/net/bluetooth/rfcomm/sock.c
21118 +--- linux-2.6.32.46/net/bluetooth/rfcomm/sock.c 2011-03-27 14:31:47.000000000 -0400
21119 ++++ linux-2.6.32.46/net/bluetooth/rfcomm/sock.c 2011-06-12 06:35:00.000000000 -0400
21120 +@@ -878,6 +878,7 @@ static int rfcomm_sock_getsockopt_old(st
21121 +
21122 + l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk;
21123 +
21124 ++ memset(&cinfo, 0, sizeof(cinfo));
21125 + cinfo.hci_handle = l2cap_pi(l2cap_sk)->conn->hcon->handle;
21126 + memcpy(cinfo.dev_class, l2cap_pi(l2cap_sk)->conn->hcon->dev_class, 3);
21127 +
21128 +diff -urNp linux-2.6.32.46/net/bridge/br_private.h linux-2.6.32.46/net/bridge/br_private.h
21129 +--- linux-2.6.32.46/net/bridge/br_private.h 2011-08-09 18:35:30.000000000 -0400
21130 ++++ linux-2.6.32.46/net/bridge/br_private.h 2011-08-09 18:34:01.000000000 -0400
21131 @@ -255,7 +255,7 @@ extern void br_ifinfo_notify(int event,
21132
21133 #ifdef CONFIG_SYSFS
21134 @@ -75462,9 +75528,9 @@ diff -urNp linux-2.6.32.48/net/bridge/br_private.h linux-2.6.32.48/net/bridge/br
21135 extern int br_sysfs_addif(struct net_bridge_port *p);
21136
21137 /* br_sysfs_br.c */
21138 -diff -urNp linux-2.6.32.48/net/bridge/br_stp_if.c linux-2.6.32.48/net/bridge/br_stp_if.c
21139 ---- linux-2.6.32.48/net/bridge/br_stp_if.c 2009-12-02 22:51:21.000000000 -0500
21140 -+++ linux-2.6.32.48/net/bridge/br_stp_if.c 2011-11-12 12:46:51.000000000 -0500
21141 +diff -urNp linux-2.6.32.46/net/bridge/br_stp_if.c linux-2.6.32.46/net/bridge/br_stp_if.c
21142 +--- linux-2.6.32.46/net/bridge/br_stp_if.c 2011-03-27 14:31:47.000000000 -0400
21143 ++++ linux-2.6.32.46/net/bridge/br_stp_if.c 2011-04-17 15:56:46.000000000 -0400
21144 @@ -146,7 +146,7 @@ static void br_stp_stop(struct net_bridg
21145 char *envp[] = { NULL };
21146
21147 @@ -75474,9 +75540,9 @@ diff -urNp linux-2.6.32.48/net/bridge/br_stp_if.c linux-2.6.32.48/net/bridge/br_
21148 printk(KERN_INFO "%s: userspace STP stopped, return code %d\n",
21149 br->dev->name, r);
21150
21151 -diff -urNp linux-2.6.32.48/net/bridge/br_sysfs_if.c linux-2.6.32.48/net/bridge/br_sysfs_if.c
21152 ---- linux-2.6.32.48/net/bridge/br_sysfs_if.c 2009-12-02 22:51:21.000000000 -0500
21153 -+++ linux-2.6.32.48/net/bridge/br_sysfs_if.c 2011-11-12 12:46:51.000000000 -0500
21154 +diff -urNp linux-2.6.32.46/net/bridge/br_sysfs_if.c linux-2.6.32.46/net/bridge/br_sysfs_if.c
21155 +--- linux-2.6.32.46/net/bridge/br_sysfs_if.c 2011-03-27 14:31:47.000000000 -0400
21156 ++++ linux-2.6.32.46/net/bridge/br_sysfs_if.c 2011-04-17 15:56:46.000000000 -0400
21157 @@ -220,7 +220,7 @@ static ssize_t brport_store(struct kobje
21158 return ret;
21159 }
21160 @@ -75486,9 +75552,9 @@ diff -urNp linux-2.6.32.48/net/bridge/br_sysfs_if.c linux-2.6.32.48/net/bridge/b
21161 .show = brport_show,
21162 .store = brport_store,
21163 };
21164 -diff -urNp linux-2.6.32.48/net/bridge/netfilter/ebtables.c linux-2.6.32.48/net/bridge/netfilter/ebtables.c
21165 ---- linux-2.6.32.48/net/bridge/netfilter/ebtables.c 2011-11-12 12:44:30.000000000 -0500
21166 -+++ linux-2.6.32.48/net/bridge/netfilter/ebtables.c 2011-11-12 12:46:51.000000000 -0500
21167 +diff -urNp linux-2.6.32.46/net/bridge/netfilter/ebtables.c linux-2.6.32.46/net/bridge/netfilter/ebtables.c
21168 +--- linux-2.6.32.46/net/bridge/netfilter/ebtables.c 2011-04-17 17:00:52.000000000 -0400
21169 ++++ linux-2.6.32.46/net/bridge/netfilter/ebtables.c 2011-05-16 21:46:57.000000000 -0400
21170 @@ -1337,6 +1337,8 @@ static int copy_everything_to_user(struc
21171 unsigned int entries_size, nentries;
21172 char *entries;
21173 @@ -75498,9 +75564,9 @@ diff -urNp linux-2.6.32.48/net/bridge/netfilter/ebtables.c linux-2.6.32.48/net/b
21174 if (cmd == EBT_SO_GET_ENTRIES) {
21175 entries_size = t->private->entries_size;
21176 nentries = t->private->nentries;
21177 -diff -urNp linux-2.6.32.48/net/can/bcm.c linux-2.6.32.48/net/can/bcm.c
21178 ---- linux-2.6.32.48/net/can/bcm.c 2011-11-12 12:44:30.000000000 -0500
21179 -+++ linux-2.6.32.48/net/can/bcm.c 2011-11-12 12:46:51.000000000 -0500
21180 +diff -urNp linux-2.6.32.46/net/can/bcm.c linux-2.6.32.46/net/can/bcm.c
21181 +--- linux-2.6.32.46/net/can/bcm.c 2011-05-10 22:12:01.000000000 -0400
21182 ++++ linux-2.6.32.46/net/can/bcm.c 2011-05-10 22:12:34.000000000 -0400
21183 @@ -164,9 +164,15 @@ static int bcm_proc_show(struct seq_file
21184 struct bcm_sock *bo = bcm_sk(sk);
21185 struct bcm_op *op;
21186 @@ -75517,9 +75583,9 @@ diff -urNp linux-2.6.32.48/net/can/bcm.c linux-2.6.32.48/net/can/bcm.c
21187 seq_printf(m, " / dropped %lu", bo->dropped_usr_msgs);
21188 seq_printf(m, " / bound %s", bcm_proc_getifname(ifname, bo->ifindex));
21189 seq_printf(m, " <<<\n");
21190 -diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
21191 ---- linux-2.6.32.48/net/compat.c 2011-11-12 12:44:30.000000000 -0500
21192 -+++ linux-2.6.32.48/net/compat.c 2011-11-12 12:46:51.000000000 -0500
21193 +diff -urNp linux-2.6.32.46/net/compat.c linux-2.6.32.46/net/compat.c
21194 +--- linux-2.6.32.46/net/compat.c 2011-03-27 14:31:47.000000000 -0400
21195 ++++ linux-2.6.32.46/net/compat.c 2011-10-06 09:37:14.000000000 -0400
21196 @@ -69,9 +69,9 @@ int get_compat_msghdr(struct msghdr *kms
21197 __get_user(kmsg->msg_controllen, &umsg->msg_controllen) ||
21198 __get_user(kmsg->msg_flags, &umsg->msg_flags))
21199 @@ -75620,9 +75686,9 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
21200 struct group_filter __user *kgf;
21201 u32 interface, fmode, numsrc;
21202
21203 -diff -urNp linux-2.6.32.48/net/core/dev.c linux-2.6.32.48/net/core/dev.c
21204 ---- linux-2.6.32.48/net/core/dev.c 2011-11-12 12:44:30.000000000 -0500
21205 -+++ linux-2.6.32.48/net/core/dev.c 2011-11-12 12:46:51.000000000 -0500
21206 +diff -urNp linux-2.6.32.46/net/core/dev.c linux-2.6.32.46/net/core/dev.c
21207 +--- linux-2.6.32.46/net/core/dev.c 2011-04-17 17:00:52.000000000 -0400
21208 ++++ linux-2.6.32.46/net/core/dev.c 2011-08-05 20:33:55.000000000 -0400
21209 @@ -1047,10 +1047,14 @@ void dev_load(struct net *net, const cha
21210 if (no_module && capable(CAP_NET_ADMIN))
21211 no_module = request_module("netdev-%s", name);
21212 @@ -75665,9 +75731,9 @@ diff -urNp linux-2.6.32.48/net/core/dev.c linux-2.6.32.48/net/core/dev.c
21213 {
21214 struct list_head *list = &__get_cpu_var(softnet_data).poll_list;
21215 unsigned long time_limit = jiffies + 2;
21216 -diff -urNp linux-2.6.32.48/net/core/flow.c linux-2.6.32.48/net/core/flow.c
21217 ---- linux-2.6.32.48/net/core/flow.c 2009-12-02 22:51:21.000000000 -0500
21218 -+++ linux-2.6.32.48/net/core/flow.c 2011-11-12 12:46:51.000000000 -0500
21219 +diff -urNp linux-2.6.32.46/net/core/flow.c linux-2.6.32.46/net/core/flow.c
21220 +--- linux-2.6.32.46/net/core/flow.c 2011-03-27 14:31:47.000000000 -0400
21221 ++++ linux-2.6.32.46/net/core/flow.c 2011-05-04 17:56:20.000000000 -0400
21222 @@ -35,11 +35,11 @@ struct flow_cache_entry {
21223 atomic_t *object_ref;
21224 };
21225 @@ -75727,9 +75793,9 @@ diff -urNp linux-2.6.32.48/net/core/flow.c linux-2.6.32.48/net/core/flow.c
21226
21227 if (!fle->object || fle->genid == genid)
21228 continue;
21229 -diff -urNp linux-2.6.32.48/net/core/rtnetlink.c linux-2.6.32.48/net/core/rtnetlink.c
21230 ---- linux-2.6.32.48/net/core/rtnetlink.c 2011-11-12 12:44:30.000000000 -0500
21231 -+++ linux-2.6.32.48/net/core/rtnetlink.c 2011-11-12 12:46:51.000000000 -0500
21232 +diff -urNp linux-2.6.32.46/net/core/rtnetlink.c linux-2.6.32.46/net/core/rtnetlink.c
21233 +--- linux-2.6.32.46/net/core/rtnetlink.c 2011-03-27 14:31:47.000000000 -0400
21234 ++++ linux-2.6.32.46/net/core/rtnetlink.c 2011-08-05 20:33:55.000000000 -0400
21235 @@ -57,7 +57,7 @@ struct rtnl_link
21236 {
21237 rtnl_doit_func doit;
21238 @@ -75739,10 +75805,10 @@ diff -urNp linux-2.6.32.48/net/core/rtnetlink.c linux-2.6.32.48/net/core/rtnetli
21239
21240 static DEFINE_MUTEX(rtnl_mutex);
21241
21242 -diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
21243 ---- linux-2.6.32.48/net/core/scm.c 2011-11-12 12:44:30.000000000 -0500
21244 -+++ linux-2.6.32.48/net/core/scm.c 2011-11-12 12:46:51.000000000 -0500
21245 -@@ -191,7 +191,7 @@ error:
21246 +diff -urNp linux-2.6.32.46/net/core/scm.c linux-2.6.32.46/net/core/scm.c
21247 +--- linux-2.6.32.46/net/core/scm.c 2011-03-27 14:31:47.000000000 -0400
21248 ++++ linux-2.6.32.46/net/core/scm.c 2011-10-06 09:37:14.000000000 -0400
21249 +@@ -190,7 +190,7 @@ error:
21250 int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
21251 {
21252 struct cmsghdr __user *cm
21253 @@ -75751,7 +75817,7 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
21254 struct cmsghdr cmhdr;
21255 int cmlen = CMSG_LEN(len);
21256 int err;
21257 -@@ -214,7 +214,7 @@ int put_cmsg(struct msghdr * msg, int le
21258 +@@ -213,7 +213,7 @@ int put_cmsg(struct msghdr * msg, int le
21259 err = -EFAULT;
21260 if (copy_to_user(cm, &cmhdr, sizeof cmhdr))
21261 goto out;
21262 @@ -75760,7 +75826,7 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
21263 goto out;
21264 cmlen = CMSG_SPACE(len);
21265 if (msg->msg_controllen < cmlen)
21266 -@@ -229,7 +229,7 @@ out:
21267 +@@ -228,7 +228,7 @@ out:
21268 void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
21269 {
21270 struct cmsghdr __user *cm
21271 @@ -75769,7 +75835,7 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
21272
21273 int fdmax = 0;
21274 int fdnum = scm->fp->count;
21275 -@@ -249,7 +249,7 @@ void scm_detach_fds(struct msghdr *msg,
21276 +@@ -248,7 +248,7 @@ void scm_detach_fds(struct msghdr *msg,
21277 if (fdnum < fdmax)
21278 fdmax = fdnum;
21279
21280 @@ -75778,9 +75844,9 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
21281 i++, cmfptr++)
21282 {
21283 int new_fd;
21284 -diff -urNp linux-2.6.32.48/net/core/secure_seq.c linux-2.6.32.48/net/core/secure_seq.c
21285 ---- linux-2.6.32.48/net/core/secure_seq.c 2011-11-12 12:44:30.000000000 -0500
21286 -+++ linux-2.6.32.48/net/core/secure_seq.c 2011-11-12 12:46:51.000000000 -0500
21287 +diff -urNp linux-2.6.32.46/net/core/secure_seq.c linux-2.6.32.46/net/core/secure_seq.c
21288 +--- linux-2.6.32.46/net/core/secure_seq.c 2011-08-16 20:37:25.000000000 -0400
21289 ++++ linux-2.6.32.46/net/core/secure_seq.c 2011-08-07 19:48:09.000000000 -0400
21290 @@ -57,7 +57,7 @@ __u32 secure_tcpv6_sequence_number(__be3
21291 EXPORT_SYMBOL(secure_tcpv6_sequence_number);
21292
21293 @@ -75798,9 +75864,9 @@ diff -urNp linux-2.6.32.48/net/core/secure_seq.c linux-2.6.32.48/net/core/secure
21294 return hash[0];
21295 }
21296 #endif
21297 -diff -urNp linux-2.6.32.48/net/core/skbuff.c linux-2.6.32.48/net/core/skbuff.c
21298 ---- linux-2.6.32.48/net/core/skbuff.c 2011-11-12 12:44:30.000000000 -0500
21299 -+++ linux-2.6.32.48/net/core/skbuff.c 2011-11-12 12:46:51.000000000 -0500
21300 +diff -urNp linux-2.6.32.46/net/core/skbuff.c linux-2.6.32.46/net/core/skbuff.c
21301 +--- linux-2.6.32.46/net/core/skbuff.c 2011-03-27 14:31:47.000000000 -0400
21302 ++++ linux-2.6.32.46/net/core/skbuff.c 2011-05-16 21:46:57.000000000 -0400
21303 @@ -1544,6 +1544,8 @@ int skb_splice_bits(struct sk_buff *skb,
21304 struct sk_buff *frag_iter;
21305 struct sock *sk = skb->sk;
21306 @@ -75810,9 +75876,9 @@ diff -urNp linux-2.6.32.48/net/core/skbuff.c linux-2.6.32.48/net/core/skbuff.c
21307 /*
21308 * __skb_splice_bits() only fails if the output has no room left,
21309 * so no point in going over the frag_list for the error case.
21310 -diff -urNp linux-2.6.32.48/net/core/sock.c linux-2.6.32.48/net/core/sock.c
21311 ---- linux-2.6.32.48/net/core/sock.c 2011-11-12 12:44:30.000000000 -0500
21312 -+++ linux-2.6.32.48/net/core/sock.c 2011-11-12 12:46:51.000000000 -0500
21313 +diff -urNp linux-2.6.32.46/net/core/sock.c linux-2.6.32.46/net/core/sock.c
21314 +--- linux-2.6.32.46/net/core/sock.c 2011-03-27 14:31:47.000000000 -0400
21315 ++++ linux-2.6.32.46/net/core/sock.c 2011-05-04 17:56:20.000000000 -0400
21316 @@ -864,11 +864,15 @@ int sock_getsockopt(struct socket *sock,
21317 break;
21318
21319 @@ -75839,9 +75905,9 @@ diff -urNp linux-2.6.32.48/net/core/sock.c linux-2.6.32.48/net/core/sock.c
21320 }
21321 EXPORT_SYMBOL(sock_init_data);
21322
21323 -diff -urNp linux-2.6.32.48/net/decnet/sysctl_net_decnet.c linux-2.6.32.48/net/decnet/sysctl_net_decnet.c
21324 ---- linux-2.6.32.48/net/decnet/sysctl_net_decnet.c 2009-12-02 22:51:21.000000000 -0500
21325 -+++ linux-2.6.32.48/net/decnet/sysctl_net_decnet.c 2011-11-12 12:46:51.000000000 -0500
21326 +diff -urNp linux-2.6.32.46/net/decnet/sysctl_net_decnet.c linux-2.6.32.46/net/decnet/sysctl_net_decnet.c
21327 +--- linux-2.6.32.46/net/decnet/sysctl_net_decnet.c 2011-03-27 14:31:47.000000000 -0400
21328 ++++ linux-2.6.32.46/net/decnet/sysctl_net_decnet.c 2011-04-17 15:56:46.000000000 -0400
21329 @@ -206,7 +206,7 @@ static int dn_node_address_handler(ctl_t
21330
21331 if (len > *lenp) len = *lenp;
21332 @@ -75860,9 +75926,9 @@ diff -urNp linux-2.6.32.48/net/decnet/sysctl_net_decnet.c linux-2.6.32.48/net/de
21333 return -EFAULT;
21334
21335 *lenp = len;
21336 -diff -urNp linux-2.6.32.48/net/econet/Kconfig linux-2.6.32.48/net/econet/Kconfig
21337 ---- linux-2.6.32.48/net/econet/Kconfig 2009-12-02 22:51:21.000000000 -0500
21338 -+++ linux-2.6.32.48/net/econet/Kconfig 2011-11-12 12:46:51.000000000 -0500
21339 +diff -urNp linux-2.6.32.46/net/econet/Kconfig linux-2.6.32.46/net/econet/Kconfig
21340 +--- linux-2.6.32.46/net/econet/Kconfig 2011-03-27 14:31:47.000000000 -0400
21341 ++++ linux-2.6.32.46/net/econet/Kconfig 2011-04-17 15:56:46.000000000 -0400
21342 @@ -4,7 +4,7 @@
21343
21344 config ECONET
21345 @@ -75872,9 +75938,9 @@ diff -urNp linux-2.6.32.48/net/econet/Kconfig linux-2.6.32.48/net/econet/Kconfig
21346 ---help---
21347 Econet is a fairly old and slow networking protocol mainly used by
21348 Acorn computers to access file and print servers. It uses native
21349 -diff -urNp linux-2.6.32.48/net/ieee802154/dgram.c linux-2.6.32.48/net/ieee802154/dgram.c
21350 ---- linux-2.6.32.48/net/ieee802154/dgram.c 2009-12-02 22:51:21.000000000 -0500
21351 -+++ linux-2.6.32.48/net/ieee802154/dgram.c 2011-11-12 12:46:51.000000000 -0500
21352 +diff -urNp linux-2.6.32.46/net/ieee802154/dgram.c linux-2.6.32.46/net/ieee802154/dgram.c
21353 +--- linux-2.6.32.46/net/ieee802154/dgram.c 2011-03-27 14:31:47.000000000 -0400
21354 ++++ linux-2.6.32.46/net/ieee802154/dgram.c 2011-05-04 17:56:28.000000000 -0400
21355 @@ -318,7 +318,7 @@ out:
21356 static int dgram_rcv_skb(struct sock *sk, struct sk_buff *skb)
21357 {
21358 @@ -75884,9 +75950,9 @@ diff -urNp linux-2.6.32.48/net/ieee802154/dgram.c linux-2.6.32.48/net/ieee802154
21359 kfree_skb(skb);
21360 return NET_RX_DROP;
21361 }
21362 -diff -urNp linux-2.6.32.48/net/ieee802154/raw.c linux-2.6.32.48/net/ieee802154/raw.c
21363 ---- linux-2.6.32.48/net/ieee802154/raw.c 2009-12-02 22:51:21.000000000 -0500
21364 -+++ linux-2.6.32.48/net/ieee802154/raw.c 2011-11-12 12:46:51.000000000 -0500
21365 +diff -urNp linux-2.6.32.46/net/ieee802154/raw.c linux-2.6.32.46/net/ieee802154/raw.c
21366 +--- linux-2.6.32.46/net/ieee802154/raw.c 2011-03-27 14:31:47.000000000 -0400
21367 ++++ linux-2.6.32.46/net/ieee802154/raw.c 2011-05-04 17:56:28.000000000 -0400
21368 @@ -206,7 +206,7 @@ out:
21369 static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
21370 {
21371 @@ -75896,9 +75962,9 @@ diff -urNp linux-2.6.32.48/net/ieee802154/raw.c linux-2.6.32.48/net/ieee802154/r
21372 kfree_skb(skb);
21373 return NET_RX_DROP;
21374 }
21375 -diff -urNp linux-2.6.32.48/net/ipv4/inet_diag.c linux-2.6.32.48/net/ipv4/inet_diag.c
21376 ---- linux-2.6.32.48/net/ipv4/inet_diag.c 2011-11-12 12:44:30.000000000 -0500
21377 -+++ linux-2.6.32.48/net/ipv4/inet_diag.c 2011-11-12 12:46:51.000000000 -0500
21378 +diff -urNp linux-2.6.32.46/net/ipv4/inet_diag.c linux-2.6.32.46/net/ipv4/inet_diag.c
21379 +--- linux-2.6.32.46/net/ipv4/inet_diag.c 2011-07-13 17:23:04.000000000 -0400
21380 ++++ linux-2.6.32.46/net/ipv4/inet_diag.c 2011-06-20 19:31:13.000000000 -0400
21381 @@ -113,8 +113,13 @@ static int inet_csk_diag_fill(struct soc
21382 r->idiag_retrans = 0;
21383
21384 @@ -75959,9 +76025,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/inet_diag.c linux-2.6.32.48/net/ipv4/inet_di
21385
21386 tmo = req->expires - jiffies;
21387 if (tmo < 0)
21388 -diff -urNp linux-2.6.32.48/net/ipv4/inet_hashtables.c linux-2.6.32.48/net/ipv4/inet_hashtables.c
21389 ---- linux-2.6.32.48/net/ipv4/inet_hashtables.c 2011-11-12 12:44:30.000000000 -0500
21390 -+++ linux-2.6.32.48/net/ipv4/inet_hashtables.c 2011-11-12 12:46:51.000000000 -0500
21391 +diff -urNp linux-2.6.32.46/net/ipv4/inet_hashtables.c linux-2.6.32.46/net/ipv4/inet_hashtables.c
21392 +--- linux-2.6.32.46/net/ipv4/inet_hashtables.c 2011-08-16 20:37:25.000000000 -0400
21393 ++++ linux-2.6.32.46/net/ipv4/inet_hashtables.c 2011-08-16 20:42:30.000000000 -0400
21394 @@ -18,12 +18,15 @@
21395 #include <linux/sched.h>
21396 #include <linux/slab.h>
21397 @@ -75987,9 +76053,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/inet_hashtables.c linux-2.6.32.48/net/ipv4/i
21398 if (tw) {
21399 inet_twsk_deschedule(tw, death_row);
21400 inet_twsk_put(tw);
21401 -diff -urNp linux-2.6.32.48/net/ipv4/inetpeer.c linux-2.6.32.48/net/ipv4/inetpeer.c
21402 ---- linux-2.6.32.48/net/ipv4/inetpeer.c 2011-11-12 12:44:30.000000000 -0500
21403 -+++ linux-2.6.32.48/net/ipv4/inetpeer.c 2011-11-12 12:46:51.000000000 -0500
21404 +diff -urNp linux-2.6.32.46/net/ipv4/inetpeer.c linux-2.6.32.46/net/ipv4/inetpeer.c
21405 +--- linux-2.6.32.46/net/ipv4/inetpeer.c 2011-08-16 20:37:25.000000000 -0400
21406 ++++ linux-2.6.32.46/net/ipv4/inetpeer.c 2011-08-07 19:48:09.000000000 -0400
21407 @@ -367,6 +367,8 @@ struct inet_peer *inet_getpeer(__be32 da
21408 struct inet_peer *p, *n;
21409 struct inet_peer **stack[PEER_MAXDEPTH], ***stackptr;
21410 @@ -76008,9 +76074,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/inetpeer.c linux-2.6.32.48/net/ipv4/inetpeer
21411 n->ip_id_count = secure_ip_id(daddr);
21412 n->tcp_ts_stamp = 0;
21413
21414 -diff -urNp linux-2.6.32.48/net/ipv4/ipconfig.c linux-2.6.32.48/net/ipv4/ipconfig.c
21415 ---- linux-2.6.32.48/net/ipv4/ipconfig.c 2009-12-02 22:51:21.000000000 -0500
21416 -+++ linux-2.6.32.48/net/ipv4/ipconfig.c 2011-11-12 12:46:51.000000000 -0500
21417 +diff -urNp linux-2.6.32.46/net/ipv4/ipconfig.c linux-2.6.32.46/net/ipv4/ipconfig.c
21418 +--- linux-2.6.32.46/net/ipv4/ipconfig.c 2011-03-27 14:31:47.000000000 -0400
21419 ++++ linux-2.6.32.46/net/ipv4/ipconfig.c 2011-10-06 09:37:14.000000000 -0400
21420 @@ -295,7 +295,7 @@ static int __init ic_devinet_ioctl(unsig
21421
21422 mm_segment_t oldfs = get_fs();
21423 @@ -76038,9 +76104,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/ipconfig.c linux-2.6.32.48/net/ipv4/ipconfig
21424 set_fs(oldfs);
21425 return res;
21426 }
21427 -diff -urNp linux-2.6.32.48/net/ipv4/ip_fragment.c linux-2.6.32.48/net/ipv4/ip_fragment.c
21428 ---- linux-2.6.32.48/net/ipv4/ip_fragment.c 2009-12-02 22:51:21.000000000 -0500
21429 -+++ linux-2.6.32.48/net/ipv4/ip_fragment.c 2011-11-12 12:46:51.000000000 -0500
21430 +diff -urNp linux-2.6.32.46/net/ipv4/ip_fragment.c linux-2.6.32.46/net/ipv4/ip_fragment.c
21431 +--- linux-2.6.32.46/net/ipv4/ip_fragment.c 2011-03-27 14:31:47.000000000 -0400
21432 ++++ linux-2.6.32.46/net/ipv4/ip_fragment.c 2011-04-17 15:56:46.000000000 -0400
21433 @@ -255,7 +255,7 @@ static inline int ip_frag_too_far(struct
21434 return 0;
21435
21436 @@ -76050,9 +76116,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/ip_fragment.c linux-2.6.32.48/net/ipv4/ip_fr
21437 qp->rid = end;
21438
21439 rc = qp->q.fragments && (end - start) > max;
21440 -diff -urNp linux-2.6.32.48/net/ipv4/ip_sockglue.c linux-2.6.32.48/net/ipv4/ip_sockglue.c
21441 ---- linux-2.6.32.48/net/ipv4/ip_sockglue.c 2009-12-02 22:51:21.000000000 -0500
21442 -+++ linux-2.6.32.48/net/ipv4/ip_sockglue.c 2011-11-12 12:46:51.000000000 -0500
21443 +diff -urNp linux-2.6.32.46/net/ipv4/ip_sockglue.c linux-2.6.32.46/net/ipv4/ip_sockglue.c
21444 +--- linux-2.6.32.46/net/ipv4/ip_sockglue.c 2011-03-27 14:31:47.000000000 -0400
21445 ++++ linux-2.6.32.46/net/ipv4/ip_sockglue.c 2011-10-06 09:37:14.000000000 -0400
21446 @@ -1015,6 +1015,8 @@ static int do_ip_getsockopt(struct sock
21447 int val;
21448 int len;
21449 @@ -76071,9 +76137,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/ip_sockglue.c linux-2.6.32.48/net/ipv4/ip_so
21450 msg.msg_controllen = len;
21451 msg.msg_flags = 0;
21452
21453 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c
21454 ---- linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c 2011-11-12 12:44:30.000000000 -0500
21455 -+++ linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c 2011-11-12 12:46:51.000000000 -0500
21456 +diff -urNp linux-2.6.32.46/net/ipv4/netfilter/arp_tables.c linux-2.6.32.46/net/ipv4/netfilter/arp_tables.c
21457 +--- linux-2.6.32.46/net/ipv4/netfilter/arp_tables.c 2011-04-17 17:00:52.000000000 -0400
21458 ++++ linux-2.6.32.46/net/ipv4/netfilter/arp_tables.c 2011-04-17 17:04:18.000000000 -0400
21459 @@ -934,6 +934,7 @@ static int get_info(struct net *net, voi
21460 private = &tmp;
21461 }
21462 @@ -76082,9 +76148,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c linux-2.6.32.48/net/i
21463 info.valid_hooks = t->valid_hooks;
21464 memcpy(info.hook_entry, private->hook_entry,
21465 sizeof(info.hook_entry));
21466 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c
21467 ---- linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c 2009-12-02 22:51:21.000000000 -0500
21468 -+++ linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c 2011-11-12 12:46:51.000000000 -0500
21469 +diff -urNp linux-2.6.32.46/net/ipv4/netfilter/ip_queue.c linux-2.6.32.46/net/ipv4/netfilter/ip_queue.c
21470 +--- linux-2.6.32.46/net/ipv4/netfilter/ip_queue.c 2011-03-27 14:31:47.000000000 -0400
21471 ++++ linux-2.6.32.46/net/ipv4/netfilter/ip_queue.c 2011-08-21 18:42:53.000000000 -0400
21472 @@ -286,6 +286,9 @@ ipq_mangle_ipv4(ipq_verdict_msg_t *v, st
21473
21474 if (v->data_len < sizeof(*user_iph))
21475 @@ -76105,9 +76171,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c linux-2.6.32.48/net/ipv
21476 struct nlmsghdr *nlh;
21477
21478 skblen = skb->len;
21479 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c
21480 ---- linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c 2011-11-12 12:44:30.000000000 -0500
21481 -+++ linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c 2011-11-12 12:46:51.000000000 -0500
21482 +diff -urNp linux-2.6.32.46/net/ipv4/netfilter/ip_tables.c linux-2.6.32.46/net/ipv4/netfilter/ip_tables.c
21483 +--- linux-2.6.32.46/net/ipv4/netfilter/ip_tables.c 2011-04-17 17:00:52.000000000 -0400
21484 ++++ linux-2.6.32.46/net/ipv4/netfilter/ip_tables.c 2011-04-17 17:04:18.000000000 -0400
21485 @@ -1141,6 +1141,7 @@ static int get_info(struct net *net, voi
21486 private = &tmp;
21487 }
21488 @@ -76116,9 +76182,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c linux-2.6.32.48/net/ip
21489 info.valid_hooks = t->valid_hooks;
21490 memcpy(info.hook_entry, private->hook_entry,
21491 sizeof(info.hook_entry));
21492 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c
21493 ---- linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c 2009-12-02 22:51:21.000000000 -0500
21494 -+++ linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-11-12 12:46:51.000000000 -0500
21495 +diff -urNp linux-2.6.32.46/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.32.46/net/ipv4/netfilter/nf_nat_snmp_basic.c
21496 +--- linux-2.6.32.46/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-03-27 14:31:47.000000000 -0400
21497 ++++ linux-2.6.32.46/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-04-17 15:56:46.000000000 -0400
21498 @@ -397,7 +397,7 @@ static unsigned char asn1_octets_decode(
21499
21500 *len = 0;
21501 @@ -76128,9 +76194,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.32.4
21502 if (*octets == NULL) {
21503 if (net_ratelimit())
21504 printk("OOM in bsalg (%d)\n", __LINE__);
21505 -diff -urNp linux-2.6.32.48/net/ipv4/raw.c linux-2.6.32.48/net/ipv4/raw.c
21506 ---- linux-2.6.32.48/net/ipv4/raw.c 2009-12-02 22:51:21.000000000 -0500
21507 -+++ linux-2.6.32.48/net/ipv4/raw.c 2011-11-12 12:46:51.000000000 -0500
21508 +diff -urNp linux-2.6.32.46/net/ipv4/raw.c linux-2.6.32.46/net/ipv4/raw.c
21509 +--- linux-2.6.32.46/net/ipv4/raw.c 2011-03-27 14:31:47.000000000 -0400
21510 ++++ linux-2.6.32.46/net/ipv4/raw.c 2011-08-14 11:46:51.000000000 -0400
21511 @@ -292,7 +292,7 @@ static int raw_rcv_skb(struct sock * sk,
21512 /* Charge it to the socket. */
21513
21514 @@ -76201,9 +76267,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/raw.c linux-2.6.32.48/net/ipv4/raw.c
21515 }
21516
21517 static int raw_seq_show(struct seq_file *seq, void *v)
21518 -diff -urNp linux-2.6.32.48/net/ipv4/route.c linux-2.6.32.48/net/ipv4/route.c
21519 ---- linux-2.6.32.48/net/ipv4/route.c 2011-11-12 12:44:30.000000000 -0500
21520 -+++ linux-2.6.32.48/net/ipv4/route.c 2011-11-12 12:46:51.000000000 -0500
21521 +diff -urNp linux-2.6.32.46/net/ipv4/route.c linux-2.6.32.46/net/ipv4/route.c
21522 +--- linux-2.6.32.46/net/ipv4/route.c 2011-08-16 20:37:25.000000000 -0400
21523 ++++ linux-2.6.32.46/net/ipv4/route.c 2011-08-07 19:48:09.000000000 -0400
21524 @@ -269,7 +269,7 @@ static inline unsigned int rt_hash(__be3
21525
21526 static inline int rt_genid(struct net *net)
21527 @@ -76231,9 +76297,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/route.c linux-2.6.32.48/net/ipv4/route.c
21528 (int) ((num_physpages ^ (num_physpages>>8)) ^
21529 (jiffies ^ (jiffies >> 7))));
21530
21531 -diff -urNp linux-2.6.32.48/net/ipv4/tcp.c linux-2.6.32.48/net/ipv4/tcp.c
21532 ---- linux-2.6.32.48/net/ipv4/tcp.c 2011-11-12 12:44:30.000000000 -0500
21533 -+++ linux-2.6.32.48/net/ipv4/tcp.c 2011-11-12 12:46:51.000000000 -0500
21534 +diff -urNp linux-2.6.32.46/net/ipv4/tcp.c linux-2.6.32.46/net/ipv4/tcp.c
21535 +--- linux-2.6.32.46/net/ipv4/tcp.c 2011-03-27 14:31:47.000000000 -0400
21536 ++++ linux-2.6.32.46/net/ipv4/tcp.c 2011-05-16 21:46:57.000000000 -0400
21537 @@ -2085,6 +2085,8 @@ static int do_tcp_setsockopt(struct sock
21538 int val;
21539 int err = 0;
21540 @@ -76252,9 +76318,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp.c linux-2.6.32.48/net/ipv4/tcp.c
21541 if (get_user(len, optlen))
21542 return -EFAULT;
21543
21544 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4.c
21545 ---- linux-2.6.32.48/net/ipv4/tcp_ipv4.c 2011-11-12 12:44:30.000000000 -0500
21546 -+++ linux-2.6.32.48/net/ipv4/tcp_ipv4.c 2011-11-12 12:46:51.000000000 -0500
21547 +diff -urNp linux-2.6.32.46/net/ipv4/tcp_ipv4.c linux-2.6.32.46/net/ipv4/tcp_ipv4.c
21548 +--- linux-2.6.32.46/net/ipv4/tcp_ipv4.c 2011-08-16 20:37:25.000000000 -0400
21549 ++++ linux-2.6.32.46/net/ipv4/tcp_ipv4.c 2011-08-23 21:22:32.000000000 -0400
21550 @@ -85,6 +85,9 @@
21551 int sysctl_tcp_tw_reuse __read_mostly;
21552 int sysctl_tcp_low_latency __read_mostly;
21553 @@ -76350,9 +76416,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
21554 }
21555
21556 #define TMPSZ 150
21557 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_minisocks.c linux-2.6.32.48/net/ipv4/tcp_minisocks.c
21558 ---- linux-2.6.32.48/net/ipv4/tcp_minisocks.c 2009-12-02 22:51:21.000000000 -0500
21559 -+++ linux-2.6.32.48/net/ipv4/tcp_minisocks.c 2011-11-12 12:46:51.000000000 -0500
21560 +diff -urNp linux-2.6.32.46/net/ipv4/tcp_minisocks.c linux-2.6.32.46/net/ipv4/tcp_minisocks.c
21561 +--- linux-2.6.32.46/net/ipv4/tcp_minisocks.c 2011-03-27 14:31:47.000000000 -0400
21562 ++++ linux-2.6.32.46/net/ipv4/tcp_minisocks.c 2011-04-17 15:56:46.000000000 -0400
21563 @@ -26,6 +26,10 @@
21564 #include <net/inet_common.h>
21565 #include <net/xfrm.h>
21566 @@ -76375,9 +76441,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_minisocks.c linux-2.6.32.48/net/ipv4/tcp
21567 if (!(flg & TCP_FLAG_RST))
21568 req->rsk_ops->send_reset(sk, skb);
21569
21570 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_output.c linux-2.6.32.48/net/ipv4/tcp_output.c
21571 ---- linux-2.6.32.48/net/ipv4/tcp_output.c 2011-11-12 12:44:30.000000000 -0500
21572 -+++ linux-2.6.32.48/net/ipv4/tcp_output.c 2011-11-12 12:46:51.000000000 -0500
21573 +diff -urNp linux-2.6.32.46/net/ipv4/tcp_output.c linux-2.6.32.46/net/ipv4/tcp_output.c
21574 +--- linux-2.6.32.46/net/ipv4/tcp_output.c 2011-03-27 14:31:47.000000000 -0400
21575 ++++ linux-2.6.32.46/net/ipv4/tcp_output.c 2011-05-16 21:46:57.000000000 -0400
21576 @@ -2234,6 +2234,8 @@ struct sk_buff *tcp_make_synack(struct s
21577 __u8 *md5_hash_location;
21578 int mss;
21579 @@ -76387,9 +76453,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_output.c linux-2.6.32.48/net/ipv4/tcp_ou
21580 skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15, 1, GFP_ATOMIC);
21581 if (skb == NULL)
21582 return NULL;
21583 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_probe.c linux-2.6.32.48/net/ipv4/tcp_probe.c
21584 ---- linux-2.6.32.48/net/ipv4/tcp_probe.c 2009-12-02 22:51:21.000000000 -0500
21585 -+++ linux-2.6.32.48/net/ipv4/tcp_probe.c 2011-11-12 12:46:51.000000000 -0500
21586 +diff -urNp linux-2.6.32.46/net/ipv4/tcp_probe.c linux-2.6.32.46/net/ipv4/tcp_probe.c
21587 +--- linux-2.6.32.46/net/ipv4/tcp_probe.c 2011-03-27 14:31:47.000000000 -0400
21588 ++++ linux-2.6.32.46/net/ipv4/tcp_probe.c 2011-04-17 15:56:46.000000000 -0400
21589 @@ -200,7 +200,7 @@ static ssize_t tcpprobe_read(struct file
21590 if (cnt + width >= len)
21591 break;
21592 @@ -76399,9 +76465,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_probe.c linux-2.6.32.48/net/ipv4/tcp_pro
21593 return -EFAULT;
21594 cnt += width;
21595 }
21596 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_timer.c linux-2.6.32.48/net/ipv4/tcp_timer.c
21597 ---- linux-2.6.32.48/net/ipv4/tcp_timer.c 2011-11-12 12:44:30.000000000 -0500
21598 -+++ linux-2.6.32.48/net/ipv4/tcp_timer.c 2011-11-12 12:46:51.000000000 -0500
21599 +diff -urNp linux-2.6.32.46/net/ipv4/tcp_timer.c linux-2.6.32.46/net/ipv4/tcp_timer.c
21600 +--- linux-2.6.32.46/net/ipv4/tcp_timer.c 2011-03-27 14:31:47.000000000 -0400
21601 ++++ linux-2.6.32.46/net/ipv4/tcp_timer.c 2011-04-17 15:56:46.000000000 -0400
21602 @@ -21,6 +21,10 @@
21603 #include <linux/module.h>
21604 #include <net/tcp.h>
21605 @@ -76427,9 +76493,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_timer.c linux-2.6.32.48/net/ipv4/tcp_tim
21606 if (retransmits_timed_out(sk, retry_until)) {
21607 /* Has it gone just too far? */
21608 tcp_write_err(sk);
21609 -diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
21610 ---- linux-2.6.32.48/net/ipv4/udp.c 2011-11-12 12:44:30.000000000 -0500
21611 -+++ linux-2.6.32.48/net/ipv4/udp.c 2011-11-12 12:46:51.000000000 -0500
21612 +diff -urNp linux-2.6.32.46/net/ipv4/udp.c linux-2.6.32.46/net/ipv4/udp.c
21613 +--- linux-2.6.32.46/net/ipv4/udp.c 2011-07-13 17:23:04.000000000 -0400
21614 ++++ linux-2.6.32.46/net/ipv4/udp.c 2011-08-23 21:22:32.000000000 -0400
21615 @@ -86,6 +86,7 @@
21616 #include <linux/types.h>
21617 #include <linux/fcntl.h>
21618 @@ -76524,9 +76590,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
21619 }
21620
21621 int udp4_seq_show(struct seq_file *seq, void *v)
21622 -diff -urNp linux-2.6.32.48/net/ipv6/addrconf.c linux-2.6.32.48/net/ipv6/addrconf.c
21623 ---- linux-2.6.32.48/net/ipv6/addrconf.c 2011-11-12 12:44:30.000000000 -0500
21624 -+++ linux-2.6.32.48/net/ipv6/addrconf.c 2011-11-12 12:46:51.000000000 -0500
21625 +diff -urNp linux-2.6.32.46/net/ipv6/addrconf.c linux-2.6.32.46/net/ipv6/addrconf.c
21626 +--- linux-2.6.32.46/net/ipv6/addrconf.c 2011-05-10 22:12:02.000000000 -0400
21627 ++++ linux-2.6.32.46/net/ipv6/addrconf.c 2011-10-06 09:37:14.000000000 -0400
21628 @@ -2053,7 +2053,7 @@ int addrconf_set_dstaddr(struct net *net
21629 p.iph.ihl = 5;
21630 p.iph.protocol = IPPROTO_IPV6;
21631 @@ -76536,9 +76602,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/addrconf.c linux-2.6.32.48/net/ipv6/addrconf
21632
21633 if (ops->ndo_do_ioctl) {
21634 mm_segment_t oldfs = get_fs();
21635 -diff -urNp linux-2.6.32.48/net/ipv6/inet6_connection_sock.c linux-2.6.32.48/net/ipv6/inet6_connection_sock.c
21636 ---- linux-2.6.32.48/net/ipv6/inet6_connection_sock.c 2009-12-02 22:51:21.000000000 -0500
21637 -+++ linux-2.6.32.48/net/ipv6/inet6_connection_sock.c 2011-11-12 12:46:51.000000000 -0500
21638 +diff -urNp linux-2.6.32.46/net/ipv6/inet6_connection_sock.c linux-2.6.32.46/net/ipv6/inet6_connection_sock.c
21639 +--- linux-2.6.32.46/net/ipv6/inet6_connection_sock.c 2011-03-27 14:31:47.000000000 -0400
21640 ++++ linux-2.6.32.46/net/ipv6/inet6_connection_sock.c 2011-05-04 17:56:28.000000000 -0400
21641 @@ -152,7 +152,7 @@ void __inet6_csk_dst_store(struct sock *
21642 #ifdef CONFIG_XFRM
21643 {
21644 @@ -76557,9 +76623,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/inet6_connection_sock.c linux-2.6.32.48/net/
21645 sk->sk_dst_cache = NULL;
21646 dst_release(dst);
21647 dst = NULL;
21648 -diff -urNp linux-2.6.32.48/net/ipv6/inet6_hashtables.c linux-2.6.32.48/net/ipv6/inet6_hashtables.c
21649 ---- linux-2.6.32.48/net/ipv6/inet6_hashtables.c 2011-11-12 12:44:30.000000000 -0500
21650 -+++ linux-2.6.32.48/net/ipv6/inet6_hashtables.c 2011-11-12 12:46:51.000000000 -0500
21651 +diff -urNp linux-2.6.32.46/net/ipv6/inet6_hashtables.c linux-2.6.32.46/net/ipv6/inet6_hashtables.c
21652 +--- linux-2.6.32.46/net/ipv6/inet6_hashtables.c 2011-08-16 20:37:25.000000000 -0400
21653 ++++ linux-2.6.32.46/net/ipv6/inet6_hashtables.c 2011-08-07 19:48:09.000000000 -0400
21654 @@ -119,7 +119,7 @@ out:
21655 }
21656 EXPORT_SYMBOL(__inet6_lookup_established);
21657 @@ -76569,9 +76635,30 @@ diff -urNp linux-2.6.32.48/net/ipv6/inet6_hashtables.c linux-2.6.32.48/net/ipv6/
21658 const unsigned short hnum,
21659 const struct in6_addr *daddr,
21660 const int dif)
21661 -diff -urNp linux-2.6.32.48/net/ipv6/ipv6_sockglue.c linux-2.6.32.48/net/ipv6/ipv6_sockglue.c
21662 ---- linux-2.6.32.48/net/ipv6/ipv6_sockglue.c 2009-12-02 22:51:21.000000000 -0500
21663 -+++ linux-2.6.32.48/net/ipv6/ipv6_sockglue.c 2011-11-12 12:46:53.000000000 -0500
21664 +diff -urNp linux-2.6.32.46/net/ipv6/ip6_tunnel.c linux-2.6.32.46/net/ipv6/ip6_tunnel.c
21665 +--- linux-2.6.32.46/net/ipv6/ip6_tunnel.c 2011-08-09 18:35:30.000000000 -0400
21666 ++++ linux-2.6.32.46/net/ipv6/ip6_tunnel.c 2011-08-24 18:52:25.000000000 -0400
21667 +@@ -1466,7 +1466,7 @@ static int __init ip6_tunnel_init(void)
21668 + {
21669 + int err;
21670 +
21671 +- err = register_pernet_device(&ip6_tnl_net_ops);
21672 ++ err = register_pernet_gen_device(&ip6_tnl_net_id, &ip6_tnl_net_ops);
21673 + if (err < 0)
21674 + goto out_pernet;
21675 +
21676 +@@ -1487,7 +1487,7 @@ static int __init ip6_tunnel_init(void)
21677 + out_ip6ip6:
21678 + xfrm6_tunnel_deregister(&ip4ip6_handler, AF_INET);
21679 + out_ip4ip6:
21680 +- unregister_pernet_device(&ip6_tnl_net_ops);
21681 ++ unregister_pernet_gen_device(ip6_tnl_net_id, &ip6_tnl_net_ops);
21682 + out_pernet:
21683 + return err;
21684 + }
21685 +diff -urNp linux-2.6.32.46/net/ipv6/ipv6_sockglue.c linux-2.6.32.46/net/ipv6/ipv6_sockglue.c
21686 +--- linux-2.6.32.46/net/ipv6/ipv6_sockglue.c 2011-03-27 14:31:47.000000000 -0400
21687 ++++ linux-2.6.32.46/net/ipv6/ipv6_sockglue.c 2011-10-06 09:37:16.000000000 -0400
21688 @@ -130,6 +130,8 @@ static int do_ipv6_setsockopt(struct soc
21689 int val, valbool;
21690 int retv = -ENOPROTOOPT;
21691 @@ -76599,9 +76686,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/ipv6_sockglue.c linux-2.6.32.48/net/ipv6/ipv
21692 msg.msg_controllen = len;
21693 msg.msg_flags = 0;
21694
21695 -diff -urNp linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c
21696 ---- linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c 2009-12-02 22:51:21.000000000 -0500
21697 -+++ linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c 2011-11-12 12:46:53.000000000 -0500
21698 +diff -urNp linux-2.6.32.46/net/ipv6/netfilter/ip6_queue.c linux-2.6.32.46/net/ipv6/netfilter/ip6_queue.c
21699 +--- linux-2.6.32.46/net/ipv6/netfilter/ip6_queue.c 2011-03-27 14:31:47.000000000 -0400
21700 ++++ linux-2.6.32.46/net/ipv6/netfilter/ip6_queue.c 2011-08-21 18:43:32.000000000 -0400
21701 @@ -287,6 +287,9 @@ ipq_mangle_ipv6(ipq_verdict_msg_t *v, st
21702
21703 if (v->data_len < sizeof(*user_iph))
21704 @@ -76622,9 +76709,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c linux-2.6.32.48/net/ip
21705 struct nlmsghdr *nlh;
21706
21707 skblen = skb->len;
21708 -diff -urNp linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c
21709 ---- linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c 2011-11-12 12:44:30.000000000 -0500
21710 -+++ linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c 2011-11-12 12:46:53.000000000 -0500
21711 +diff -urNp linux-2.6.32.46/net/ipv6/netfilter/ip6_tables.c linux-2.6.32.46/net/ipv6/netfilter/ip6_tables.c
21712 +--- linux-2.6.32.46/net/ipv6/netfilter/ip6_tables.c 2011-04-17 17:00:52.000000000 -0400
21713 ++++ linux-2.6.32.46/net/ipv6/netfilter/ip6_tables.c 2011-04-17 17:04:18.000000000 -0400
21714 @@ -1173,6 +1173,7 @@ static int get_info(struct net *net, voi
21715 private = &tmp;
21716 }
21717 @@ -76633,9 +76720,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c linux-2.6.32.48/net/i
21718 info.valid_hooks = t->valid_hooks;
21719 memcpy(info.hook_entry, private->hook_entry,
21720 sizeof(info.hook_entry));
21721 -diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
21722 ---- linux-2.6.32.48/net/ipv6/raw.c 2009-12-02 22:51:21.000000000 -0500
21723 -+++ linux-2.6.32.48/net/ipv6/raw.c 2011-11-12 12:46:53.000000000 -0500
21724 +diff -urNp linux-2.6.32.46/net/ipv6/raw.c linux-2.6.32.46/net/ipv6/raw.c
21725 +--- linux-2.6.32.46/net/ipv6/raw.c 2011-03-27 14:31:47.000000000 -0400
21726 ++++ linux-2.6.32.46/net/ipv6/raw.c 2011-08-14 11:48:20.000000000 -0400
21727 @@ -375,14 +375,14 @@ static inline int rawv6_rcv_skb(struct s
21728 {
21729 if ((raw6_sk(sk)->checksum || sk->sk_filter) &&
21730 @@ -76750,9 +76837,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
21731 }
21732
21733 static int raw6_seq_show(struct seq_file *seq, void *v)
21734 -diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6.c
21735 ---- linux-2.6.32.48/net/ipv6/tcp_ipv6.c 2011-11-12 12:44:30.000000000 -0500
21736 -+++ linux-2.6.32.48/net/ipv6/tcp_ipv6.c 2011-11-12 12:46:53.000000000 -0500
21737 +diff -urNp linux-2.6.32.46/net/ipv6/tcp_ipv6.c linux-2.6.32.46/net/ipv6/tcp_ipv6.c
21738 +--- linux-2.6.32.46/net/ipv6/tcp_ipv6.c 2011-08-16 20:37:25.000000000 -0400
21739 ++++ linux-2.6.32.46/net/ipv6/tcp_ipv6.c 2011-08-07 19:48:09.000000000 -0400
21740 @@ -89,6 +89,10 @@ static struct tcp_md5sig_key *tcp_v6_md5
21741 }
21742 #endif
21743 @@ -76852,9 +76939,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
21744 }
21745
21746 static int tcp6_seq_show(struct seq_file *seq, void *v)
21747 -diff -urNp linux-2.6.32.48/net/ipv6/udp.c linux-2.6.32.48/net/ipv6/udp.c
21748 ---- linux-2.6.32.48/net/ipv6/udp.c 2011-11-12 12:44:30.000000000 -0500
21749 -+++ linux-2.6.32.48/net/ipv6/udp.c 2011-11-12 12:46:53.000000000 -0500
21750 +diff -urNp linux-2.6.32.46/net/ipv6/udp.c linux-2.6.32.46/net/ipv6/udp.c
21751 +--- linux-2.6.32.46/net/ipv6/udp.c 2011-07-13 17:23:04.000000000 -0400
21752 ++++ linux-2.6.32.46/net/ipv6/udp.c 2011-07-13 17:23:27.000000000 -0400
21753 @@ -49,6 +49,10 @@
21754 #include <linux/seq_file.h>
21755 #include "udp_impl.h"
21756 @@ -76901,9 +76988,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/udp.c linux-2.6.32.48/net/ipv6/udp.c
21757 }
21758
21759 int udp6_seq_show(struct seq_file *seq, void *v)
21760 -diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c
21761 ---- linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c 2009-12-02 22:51:21.000000000 -0500
21762 -+++ linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c 2011-11-12 12:46:53.000000000 -0500
21763 +diff -urNp linux-2.6.32.46/net/irda/ircomm/ircomm_tty.c linux-2.6.32.46/net/irda/ircomm/ircomm_tty.c
21764 +--- linux-2.6.32.46/net/irda/ircomm/ircomm_tty.c 2011-03-27 14:31:47.000000000 -0400
21765 ++++ linux-2.6.32.46/net/irda/ircomm/ircomm_tty.c 2011-04-17 15:56:46.000000000 -0400
21766 @@ -280,16 +280,16 @@ static int ircomm_tty_block_til_ready(st
21767 add_wait_queue(&self->open_wait, &wait);
21768
21769 @@ -77026,9 +77113,9 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
21770 seq_printf(m, "Max data size: %d\n", self->max_data_size);
21771 seq_printf(m, "Max header size: %d\n", self->max_header_size);
21772
21773 -diff -urNp linux-2.6.32.48/net/iucv/af_iucv.c linux-2.6.32.48/net/iucv/af_iucv.c
21774 ---- linux-2.6.32.48/net/iucv/af_iucv.c 2009-12-02 22:51:21.000000000 -0500
21775 -+++ linux-2.6.32.48/net/iucv/af_iucv.c 2011-11-12 12:46:53.000000000 -0500
21776 +diff -urNp linux-2.6.32.46/net/iucv/af_iucv.c linux-2.6.32.46/net/iucv/af_iucv.c
21777 +--- linux-2.6.32.46/net/iucv/af_iucv.c 2011-03-27 14:31:47.000000000 -0400
21778 ++++ linux-2.6.32.46/net/iucv/af_iucv.c 2011-05-04 17:56:28.000000000 -0400
21779 @@ -651,10 +651,10 @@ static int iucv_sock_autobind(struct soc
21780
21781 write_lock_bh(&iucv_sk_list.lock);
21782 @@ -77042,9 +77129,9 @@ diff -urNp linux-2.6.32.48/net/iucv/af_iucv.c linux-2.6.32.48/net/iucv/af_iucv.c
21783 }
21784
21785 write_unlock_bh(&iucv_sk_list.lock);
21786 -diff -urNp linux-2.6.32.48/net/key/af_key.c linux-2.6.32.48/net/key/af_key.c
21787 ---- linux-2.6.32.48/net/key/af_key.c 2009-12-02 22:51:21.000000000 -0500
21788 -+++ linux-2.6.32.48/net/key/af_key.c 2011-11-12 12:46:53.000000000 -0500
21789 +diff -urNp linux-2.6.32.46/net/key/af_key.c linux-2.6.32.46/net/key/af_key.c
21790 +--- linux-2.6.32.46/net/key/af_key.c 2011-03-27 14:31:47.000000000 -0400
21791 ++++ linux-2.6.32.46/net/key/af_key.c 2011-05-16 21:46:57.000000000 -0400
21792 @@ -2489,6 +2489,8 @@ static int pfkey_migrate(struct sock *sk
21793 struct xfrm_migrate m[XFRM_MAX_DEPTH];
21794 struct xfrm_kmaddress k;
21795 @@ -77066,9 +77153,9 @@ diff -urNp linux-2.6.32.48/net/key/af_key.c linux-2.6.32.48/net/key/af_key.c
21796 atomic_read(&s->sk_refcnt),
21797 sk_rmem_alloc_get(s),
21798 sk_wmem_alloc_get(s),
21799 -diff -urNp linux-2.6.32.48/net/lapb/lapb_iface.c linux-2.6.32.48/net/lapb/lapb_iface.c
21800 ---- linux-2.6.32.48/net/lapb/lapb_iface.c 2009-12-02 22:51:21.000000000 -0500
21801 -+++ linux-2.6.32.48/net/lapb/lapb_iface.c 2011-11-12 12:46:53.000000000 -0500
21802 +diff -urNp linux-2.6.32.46/net/lapb/lapb_iface.c linux-2.6.32.46/net/lapb/lapb_iface.c
21803 +--- linux-2.6.32.46/net/lapb/lapb_iface.c 2011-03-27 14:31:47.000000000 -0400
21804 ++++ linux-2.6.32.46/net/lapb/lapb_iface.c 2011-08-05 20:33:55.000000000 -0400
21805 @@ -157,7 +157,7 @@ int lapb_register(struct net_device *dev
21806 goto out;
21807
21808 @@ -77132,9 +77219,9 @@ diff -urNp linux-2.6.32.48/net/lapb/lapb_iface.c linux-2.6.32.48/net/lapb/lapb_i
21809 used = 1;
21810 }
21811
21812 -diff -urNp linux-2.6.32.48/net/mac80211/cfg.c linux-2.6.32.48/net/mac80211/cfg.c
21813 ---- linux-2.6.32.48/net/mac80211/cfg.c 2011-11-12 12:44:30.000000000 -0500
21814 -+++ linux-2.6.32.48/net/mac80211/cfg.c 2011-11-12 12:46:53.000000000 -0500
21815 +diff -urNp linux-2.6.32.46/net/mac80211/cfg.c linux-2.6.32.46/net/mac80211/cfg.c
21816 +--- linux-2.6.32.46/net/mac80211/cfg.c 2011-03-27 14:31:47.000000000 -0400
21817 ++++ linux-2.6.32.46/net/mac80211/cfg.c 2011-04-17 15:56:46.000000000 -0400
21818 @@ -1369,7 +1369,7 @@ static int ieee80211_set_bitrate_mask(st
21819 return err;
21820 }
21821 @@ -77144,9 +77231,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/cfg.c linux-2.6.32.48/net/mac80211/cfg.c
21822 .add_virtual_intf = ieee80211_add_iface,
21823 .del_virtual_intf = ieee80211_del_iface,
21824 .change_virtual_intf = ieee80211_change_iface,
21825 -diff -urNp linux-2.6.32.48/net/mac80211/cfg.h linux-2.6.32.48/net/mac80211/cfg.h
21826 ---- linux-2.6.32.48/net/mac80211/cfg.h 2009-12-02 22:51:21.000000000 -0500
21827 -+++ linux-2.6.32.48/net/mac80211/cfg.h 2011-11-12 12:46:53.000000000 -0500
21828 +diff -urNp linux-2.6.32.46/net/mac80211/cfg.h linux-2.6.32.46/net/mac80211/cfg.h
21829 +--- linux-2.6.32.46/net/mac80211/cfg.h 2011-03-27 14:31:47.000000000 -0400
21830 ++++ linux-2.6.32.46/net/mac80211/cfg.h 2011-04-17 15:56:46.000000000 -0400
21831 @@ -4,6 +4,6 @@
21832 #ifndef __CFG_H
21833 #define __CFG_H
21834 @@ -77155,9 +77242,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/cfg.h linux-2.6.32.48/net/mac80211/cfg.h
21835 +extern const struct cfg80211_ops mac80211_config_ops;
21836
21837 #endif /* __CFG_H */
21838 -diff -urNp linux-2.6.32.48/net/mac80211/debugfs_key.c linux-2.6.32.48/net/mac80211/debugfs_key.c
21839 ---- linux-2.6.32.48/net/mac80211/debugfs_key.c 2009-12-02 22:51:21.000000000 -0500
21840 -+++ linux-2.6.32.48/net/mac80211/debugfs_key.c 2011-11-12 12:46:53.000000000 -0500
21841 +diff -urNp linux-2.6.32.46/net/mac80211/debugfs_key.c linux-2.6.32.46/net/mac80211/debugfs_key.c
21842 +--- linux-2.6.32.46/net/mac80211/debugfs_key.c 2011-03-27 14:31:47.000000000 -0400
21843 ++++ linux-2.6.32.46/net/mac80211/debugfs_key.c 2011-04-17 15:56:46.000000000 -0400
21844 @@ -211,9 +211,13 @@ static ssize_t key_key_read(struct file
21845 size_t count, loff_t *ppos)
21846 {
21847 @@ -77173,9 +77260,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/debugfs_key.c linux-2.6.32.48/net/mac802
21848
21849 for (i = 0; i < key->conf.keylen; i++)
21850 p += scnprintf(p, bufsize + buf - p, "%02x", key->conf.key[i]);
21851 -diff -urNp linux-2.6.32.48/net/mac80211/debugfs_sta.c linux-2.6.32.48/net/mac80211/debugfs_sta.c
21852 ---- linux-2.6.32.48/net/mac80211/debugfs_sta.c 2009-12-02 22:51:21.000000000 -0500
21853 -+++ linux-2.6.32.48/net/mac80211/debugfs_sta.c 2011-11-12 12:46:53.000000000 -0500
21854 +diff -urNp linux-2.6.32.46/net/mac80211/debugfs_sta.c linux-2.6.32.46/net/mac80211/debugfs_sta.c
21855 +--- linux-2.6.32.46/net/mac80211/debugfs_sta.c 2011-03-27 14:31:47.000000000 -0400
21856 ++++ linux-2.6.32.46/net/mac80211/debugfs_sta.c 2011-05-16 21:46:57.000000000 -0400
21857 @@ -124,6 +124,8 @@ static ssize_t sta_agg_status_read(struc
21858 int i;
21859 struct sta_info *sta = file->private_data;
21860 @@ -77185,9 +77272,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/debugfs_sta.c linux-2.6.32.48/net/mac802
21861 spin_lock_bh(&sta->lock);
21862 p += scnprintf(p, sizeof(buf)+buf-p, "next dialog_token is %#02x\n",
21863 sta->ampdu_mlme.dialog_token_allocator + 1);
21864 -diff -urNp linux-2.6.32.48/net/mac80211/ieee80211_i.h linux-2.6.32.48/net/mac80211/ieee80211_i.h
21865 ---- linux-2.6.32.48/net/mac80211/ieee80211_i.h 2011-11-12 12:44:30.000000000 -0500
21866 -+++ linux-2.6.32.48/net/mac80211/ieee80211_i.h 2011-11-12 12:46:53.000000000 -0500
21867 +diff -urNp linux-2.6.32.46/net/mac80211/ieee80211_i.h linux-2.6.32.46/net/mac80211/ieee80211_i.h
21868 +--- linux-2.6.32.46/net/mac80211/ieee80211_i.h 2011-03-27 14:31:47.000000000 -0400
21869 ++++ linux-2.6.32.46/net/mac80211/ieee80211_i.h 2011-04-17 15:56:46.000000000 -0400
21870 @@ -25,6 +25,7 @@
21871 #include <linux/etherdevice.h>
21872 #include <net/cfg80211.h>
21873 @@ -77205,9 +77292,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/ieee80211_i.h linux-2.6.32.48/net/mac802
21874 int monitors, cooked_mntrs;
21875 /* number of interfaces with corresponding FIF_ flags */
21876 int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll;
21877 -diff -urNp linux-2.6.32.48/net/mac80211/iface.c linux-2.6.32.48/net/mac80211/iface.c
21878 ---- linux-2.6.32.48/net/mac80211/iface.c 2011-11-12 12:44:30.000000000 -0500
21879 -+++ linux-2.6.32.48/net/mac80211/iface.c 2011-11-12 12:46:53.000000000 -0500
21880 +diff -urNp linux-2.6.32.46/net/mac80211/iface.c linux-2.6.32.46/net/mac80211/iface.c
21881 +--- linux-2.6.32.46/net/mac80211/iface.c 2011-03-27 14:31:47.000000000 -0400
21882 ++++ linux-2.6.32.46/net/mac80211/iface.c 2011-04-17 15:56:46.000000000 -0400
21883 @@ -166,7 +166,7 @@ static int ieee80211_open(struct net_dev
21884 break;
21885 }
21886 @@ -77262,9 +77349,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/iface.c linux-2.6.32.48/net/mac80211/ifa
21887 ieee80211_clear_tx_pending(local);
21888 ieee80211_stop_device(local);
21889
21890 -diff -urNp linux-2.6.32.48/net/mac80211/main.c linux-2.6.32.48/net/mac80211/main.c
21891 ---- linux-2.6.32.48/net/mac80211/main.c 2011-11-12 12:44:30.000000000 -0500
21892 -+++ linux-2.6.32.48/net/mac80211/main.c 2011-11-12 12:46:53.000000000 -0500
21893 +diff -urNp linux-2.6.32.46/net/mac80211/main.c linux-2.6.32.46/net/mac80211/main.c
21894 +--- linux-2.6.32.46/net/mac80211/main.c 2011-05-10 22:12:02.000000000 -0400
21895 ++++ linux-2.6.32.46/net/mac80211/main.c 2011-05-10 22:12:34.000000000 -0400
21896 @@ -145,7 +145,7 @@ int ieee80211_hw_config(struct ieee80211
21897 local->hw.conf.power_level = power;
21898 }
21899 @@ -77274,9 +77361,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/main.c linux-2.6.32.48/net/mac80211/main
21900 ret = drv_config(local, changed);
21901 /*
21902 * Goal:
21903 -diff -urNp linux-2.6.32.48/net/mac80211/mlme.c linux-2.6.32.48/net/mac80211/mlme.c
21904 ---- linux-2.6.32.48/net/mac80211/mlme.c 2011-11-12 12:44:30.000000000 -0500
21905 -+++ linux-2.6.32.48/net/mac80211/mlme.c 2011-11-12 12:46:53.000000000 -0500
21906 +diff -urNp linux-2.6.32.46/net/mac80211/mlme.c linux-2.6.32.46/net/mac80211/mlme.c
21907 +--- linux-2.6.32.46/net/mac80211/mlme.c 2011-08-09 18:35:30.000000000 -0400
21908 ++++ linux-2.6.32.46/net/mac80211/mlme.c 2011-08-09 18:34:01.000000000 -0400
21909 @@ -1438,6 +1438,8 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee
21910 bool have_higher_than_11mbit = false, newsta = false;
21911 u16 ap_ht_cap_flags;
21912 @@ -77286,9 +77373,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/mlme.c linux-2.6.32.48/net/mac80211/mlme
21913 /*
21914 * AssocResp and ReassocResp have identical structure, so process both
21915 * of them in this function.
21916 -diff -urNp linux-2.6.32.48/net/mac80211/pm.c linux-2.6.32.48/net/mac80211/pm.c
21917 ---- linux-2.6.32.48/net/mac80211/pm.c 2009-12-02 22:51:21.000000000 -0500
21918 -+++ linux-2.6.32.48/net/mac80211/pm.c 2011-11-12 12:46:53.000000000 -0500
21919 +diff -urNp linux-2.6.32.46/net/mac80211/pm.c linux-2.6.32.46/net/mac80211/pm.c
21920 +--- linux-2.6.32.46/net/mac80211/pm.c 2011-03-27 14:31:47.000000000 -0400
21921 ++++ linux-2.6.32.46/net/mac80211/pm.c 2011-04-17 15:56:46.000000000 -0400
21922 @@ -107,7 +107,7 @@ int __ieee80211_suspend(struct ieee80211
21923 }
21924
21925 @@ -77298,9 +77385,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/pm.c linux-2.6.32.48/net/mac80211/pm.c
21926 ieee80211_stop_device(local);
21927
21928 local->suspended = true;
21929 -diff -urNp linux-2.6.32.48/net/mac80211/rate.c linux-2.6.32.48/net/mac80211/rate.c
21930 ---- linux-2.6.32.48/net/mac80211/rate.c 2009-12-02 22:51:21.000000000 -0500
21931 -+++ linux-2.6.32.48/net/mac80211/rate.c 2011-11-12 12:46:53.000000000 -0500
21932 +diff -urNp linux-2.6.32.46/net/mac80211/rate.c linux-2.6.32.46/net/mac80211/rate.c
21933 +--- linux-2.6.32.46/net/mac80211/rate.c 2011-03-27 14:31:47.000000000 -0400
21934 ++++ linux-2.6.32.46/net/mac80211/rate.c 2011-04-17 15:56:46.000000000 -0400
21935 @@ -287,7 +287,7 @@ int ieee80211_init_rate_ctrl_alg(struct
21936 struct rate_control_ref *ref, *old;
21937
21938 @@ -77310,9 +77397,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/rate.c linux-2.6.32.48/net/mac80211/rate
21939 return -EBUSY;
21940
21941 ref = rate_control_alloc(name, local);
21942 -diff -urNp linux-2.6.32.48/net/mac80211/tx.c linux-2.6.32.48/net/mac80211/tx.c
21943 ---- linux-2.6.32.48/net/mac80211/tx.c 2011-11-12 12:44:30.000000000 -0500
21944 -+++ linux-2.6.32.48/net/mac80211/tx.c 2011-11-12 12:46:53.000000000 -0500
21945 +diff -urNp linux-2.6.32.46/net/mac80211/tx.c linux-2.6.32.46/net/mac80211/tx.c
21946 +--- linux-2.6.32.46/net/mac80211/tx.c 2011-03-27 14:31:47.000000000 -0400
21947 ++++ linux-2.6.32.46/net/mac80211/tx.c 2011-04-17 15:56:46.000000000 -0400
21948 @@ -173,7 +173,7 @@ static __le16 ieee80211_duration(struct
21949 return cpu_to_le16(dur);
21950 }
21951 @@ -77322,9 +77409,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/tx.c linux-2.6.32.48/net/mac80211/tx.c
21952 struct net_device *dev)
21953 {
21954 return local == wdev_priv(dev->ieee80211_ptr);
21955 -diff -urNp linux-2.6.32.48/net/mac80211/util.c linux-2.6.32.48/net/mac80211/util.c
21956 ---- linux-2.6.32.48/net/mac80211/util.c 2011-11-12 12:44:30.000000000 -0500
21957 -+++ linux-2.6.32.48/net/mac80211/util.c 2011-11-12 12:46:53.000000000 -0500
21958 +diff -urNp linux-2.6.32.46/net/mac80211/util.c linux-2.6.32.46/net/mac80211/util.c
21959 +--- linux-2.6.32.46/net/mac80211/util.c 2011-03-27 14:31:47.000000000 -0400
21960 ++++ linux-2.6.32.46/net/mac80211/util.c 2011-04-17 15:56:46.000000000 -0400
21961 @@ -1042,7 +1042,7 @@ int ieee80211_reconfig(struct ieee80211_
21962 local->resuming = true;
21963
21964 @@ -77334,9 +77421,9 @@ diff -urNp linux-2.6.32.48/net/mac80211/util.c linux-2.6.32.48/net/mac80211/util
21965 /*
21966 * Upon resume hardware can sometimes be goofy due to
21967 * various platform / driver / bus issues, so restarting
21968 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c
21969 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c 2009-12-02 22:51:21.000000000 -0500
21970 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c 2011-11-12 12:46:53.000000000 -0500
21971 +diff -urNp linux-2.6.32.46/net/netfilter/ipvs/ip_vs_app.c linux-2.6.32.46/net/netfilter/ipvs/ip_vs_app.c
21972 +--- linux-2.6.32.46/net/netfilter/ipvs/ip_vs_app.c 2011-03-27 14:31:47.000000000 -0400
21973 ++++ linux-2.6.32.46/net/netfilter/ipvs/ip_vs_app.c 2011-05-17 19:26:34.000000000 -0400
21974 @@ -564,7 +564,7 @@ static const struct file_operations ip_v
21975 .open = ip_vs_app_open,
21976 .read = seq_read,
21977 @@ -77346,9 +77433,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c linux-2.6.32.48/net/ne
21978 };
21979 #endif
21980
21981 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c
21982 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c 2011-11-12 12:44:30.000000000 -0500
21983 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c 2011-11-12 12:46:53.000000000 -0500
21984 +diff -urNp linux-2.6.32.46/net/netfilter/ipvs/ip_vs_conn.c linux-2.6.32.46/net/netfilter/ipvs/ip_vs_conn.c
21985 +--- linux-2.6.32.46/net/netfilter/ipvs/ip_vs_conn.c 2011-03-27 14:31:47.000000000 -0400
21986 ++++ linux-2.6.32.46/net/netfilter/ipvs/ip_vs_conn.c 2011-05-17 19:26:34.000000000 -0400
21987 @@ -453,10 +453,10 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, s
21988 /* if the connection is not template and is created
21989 * by sync, preserve the activity flag.
21990 @@ -77398,9 +77485,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c linux-2.6.32.48/net/n
21991 if (i > 8 || i < 0) return 0;
21992
21993 if (!todrop_rate[i]) return 0;
21994 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c
21995 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c 2009-12-02 22:51:21.000000000 -0500
21996 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c 2011-11-12 12:46:53.000000000 -0500
21997 +diff -urNp linux-2.6.32.46/net/netfilter/ipvs/ip_vs_core.c linux-2.6.32.46/net/netfilter/ipvs/ip_vs_core.c
21998 +--- linux-2.6.32.46/net/netfilter/ipvs/ip_vs_core.c 2011-03-27 14:31:47.000000000 -0400
21999 ++++ linux-2.6.32.46/net/netfilter/ipvs/ip_vs_core.c 2011-05-04 17:56:28.000000000 -0400
22000 @@ -485,7 +485,7 @@ int ip_vs_leave(struct ip_vs_service *sv
22001 ret = cp->packet_xmit(skb, cp, pp);
22002 /* do not touch skb anymore */
22003 @@ -77419,9 +77506,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c linux-2.6.32.48/net/n
22004 if (af == AF_INET &&
22005 (ip_vs_sync_state & IP_VS_STATE_MASTER) &&
22006 (((cp->protocol != IPPROTO_TCP ||
22007 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c
22008 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-12 12:44:30.000000000 -0500
22009 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-12 12:46:53.000000000 -0500
22010 +diff -urNp linux-2.6.32.46/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.46/net/netfilter/ipvs/ip_vs_ctl.c
22011 +--- linux-2.6.32.46/net/netfilter/ipvs/ip_vs_ctl.c 2011-03-27 14:31:47.000000000 -0400
22012 ++++ linux-2.6.32.46/net/netfilter/ipvs/ip_vs_ctl.c 2011-05-17 19:26:34.000000000 -0400
22013 @@ -792,7 +792,7 @@ __ip_vs_update_dest(struct ip_vs_service
22014 ip_vs_rs_hash(dest);
22015 write_unlock_bh(&__ip_vs_rs_lock);
22016 @@ -77494,9 +77581,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.48/net/ne
22017 NLA_PUT_U32(skb, IPVS_DEST_ATTR_WEIGHT, atomic_read(&dest->weight));
22018 NLA_PUT_U32(skb, IPVS_DEST_ATTR_U_THRESH, dest->u_threshold);
22019 NLA_PUT_U32(skb, IPVS_DEST_ATTR_L_THRESH, dest->l_threshold);
22020 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c
22021 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c 2009-12-02 22:51:21.000000000 -0500
22022 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c 2011-11-12 12:46:53.000000000 -0500
22023 +diff -urNp linux-2.6.32.46/net/netfilter/ipvs/ip_vs_sync.c linux-2.6.32.46/net/netfilter/ipvs/ip_vs_sync.c
22024 +--- linux-2.6.32.46/net/netfilter/ipvs/ip_vs_sync.c 2011-03-27 14:31:47.000000000 -0400
22025 ++++ linux-2.6.32.46/net/netfilter/ipvs/ip_vs_sync.c 2011-05-04 17:56:28.000000000 -0400
22026 @@ -438,7 +438,7 @@ static void ip_vs_process_message(const
22027
22028 if (opt)
22029 @@ -77506,9 +77593,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c linux-2.6.32.48/net/n
22030 cp->state = state;
22031 cp->old_state = cp->state;
22032 /*
22033 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c
22034 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c 2009-12-02 22:51:21.000000000 -0500
22035 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c 2011-11-12 12:46:53.000000000 -0500
22036 +diff -urNp linux-2.6.32.46/net/netfilter/ipvs/ip_vs_xmit.c linux-2.6.32.46/net/netfilter/ipvs/ip_vs_xmit.c
22037 +--- linux-2.6.32.46/net/netfilter/ipvs/ip_vs_xmit.c 2011-03-27 14:31:47.000000000 -0400
22038 ++++ linux-2.6.32.46/net/netfilter/ipvs/ip_vs_xmit.c 2011-05-04 17:56:28.000000000 -0400
22039 @@ -875,7 +875,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, str
22040 else
22041 rc = NF_ACCEPT;
22042 @@ -77527,9 +77614,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c linux-2.6.32.48/net/n
22043 goto out;
22044 }
22045
22046 -diff -urNp linux-2.6.32.48/net/netfilter/Kconfig linux-2.6.32.48/net/netfilter/Kconfig
22047 ---- linux-2.6.32.48/net/netfilter/Kconfig 2009-12-02 22:51:21.000000000 -0500
22048 -+++ linux-2.6.32.48/net/netfilter/Kconfig 2011-11-12 12:46:53.000000000 -0500
22049 +diff -urNp linux-2.6.32.46/net/netfilter/Kconfig linux-2.6.32.46/net/netfilter/Kconfig
22050 +--- linux-2.6.32.46/net/netfilter/Kconfig 2011-03-27 14:31:47.000000000 -0400
22051 ++++ linux-2.6.32.46/net/netfilter/Kconfig 2011-04-17 15:56:46.000000000 -0400
22052 @@ -635,6 +635,16 @@ config NETFILTER_XT_MATCH_ESP
22053
22054 To compile it as a module, choose M here. If unsure, say N.
22055 @@ -77547,9 +77634,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/Kconfig linux-2.6.32.48/net/netfilter/K
22056 config NETFILTER_XT_MATCH_HASHLIMIT
22057 tristate '"hashlimit" match support'
22058 depends on (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n)
22059 -diff -urNp linux-2.6.32.48/net/netfilter/Makefile linux-2.6.32.48/net/netfilter/Makefile
22060 ---- linux-2.6.32.48/net/netfilter/Makefile 2009-12-02 22:51:21.000000000 -0500
22061 -+++ linux-2.6.32.48/net/netfilter/Makefile 2011-11-12 12:46:53.000000000 -0500
22062 +diff -urNp linux-2.6.32.46/net/netfilter/Makefile linux-2.6.32.46/net/netfilter/Makefile
22063 +--- linux-2.6.32.46/net/netfilter/Makefile 2011-03-27 14:31:47.000000000 -0400
22064 ++++ linux-2.6.32.46/net/netfilter/Makefile 2011-04-17 15:56:46.000000000 -0400
22065 @@ -68,6 +68,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_CONNTRAC
22066 obj-$(CONFIG_NETFILTER_XT_MATCH_DCCP) += xt_dccp.o
22067 obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o
22068 @@ -77558,9 +77645,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/Makefile linux-2.6.32.48/net/netfilter/
22069 obj-$(CONFIG_NETFILTER_XT_MATCH_HASHLIMIT) += xt_hashlimit.o
22070 obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
22071 obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
22072 -diff -urNp linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c
22073 ---- linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c 2011-11-12 12:44:30.000000000 -0500
22074 -+++ linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c 2011-11-12 12:46:53.000000000 -0500
22075 +diff -urNp linux-2.6.32.46/net/netfilter/nf_conntrack_netlink.c linux-2.6.32.46/net/netfilter/nf_conntrack_netlink.c
22076 +--- linux-2.6.32.46/net/netfilter/nf_conntrack_netlink.c 2011-03-27 14:31:47.000000000 -0400
22077 ++++ linux-2.6.32.46/net/netfilter/nf_conntrack_netlink.c 2011-04-17 15:56:46.000000000 -0400
22078 @@ -706,7 +706,7 @@ ctnetlink_parse_tuple_proto(struct nlatt
22079 static int
22080 ctnetlink_parse_tuple(const struct nlattr * const cda[],
22081 @@ -77570,9 +77657,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c linux-2.6.32.48/
22082 {
22083 struct nlattr *tb[CTA_TUPLE_MAX+1];
22084 int err;
22085 -diff -urNp linux-2.6.32.48/net/netfilter/nfnetlink_log.c linux-2.6.32.48/net/netfilter/nfnetlink_log.c
22086 ---- linux-2.6.32.48/net/netfilter/nfnetlink_log.c 2009-12-02 22:51:21.000000000 -0500
22087 -+++ linux-2.6.32.48/net/netfilter/nfnetlink_log.c 2011-11-12 12:46:53.000000000 -0500
22088 +diff -urNp linux-2.6.32.46/net/netfilter/nfnetlink_log.c linux-2.6.32.46/net/netfilter/nfnetlink_log.c
22089 +--- linux-2.6.32.46/net/netfilter/nfnetlink_log.c 2011-03-27 14:31:47.000000000 -0400
22090 ++++ linux-2.6.32.46/net/netfilter/nfnetlink_log.c 2011-05-04 17:56:28.000000000 -0400
22091 @@ -68,7 +68,7 @@ struct nfulnl_instance {
22092 };
22093
22094 @@ -77591,9 +77678,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/nfnetlink_log.c linux-2.6.32.48/net/net
22095
22096 if (data_len) {
22097 struct nlattr *nla;
22098 -diff -urNp linux-2.6.32.48/net/netfilter/xt_gradm.c linux-2.6.32.48/net/netfilter/xt_gradm.c
22099 ---- linux-2.6.32.48/net/netfilter/xt_gradm.c 1969-12-31 19:00:00.000000000 -0500
22100 -+++ linux-2.6.32.48/net/netfilter/xt_gradm.c 2011-11-12 12:46:53.000000000 -0500
22101 +diff -urNp linux-2.6.32.46/net/netfilter/xt_gradm.c linux-2.6.32.46/net/netfilter/xt_gradm.c
22102 +--- linux-2.6.32.46/net/netfilter/xt_gradm.c 1969-12-31 19:00:00.000000000 -0500
22103 ++++ linux-2.6.32.46/net/netfilter/xt_gradm.c 2011-04-17 15:56:46.000000000 -0400
22104 @@ -0,0 +1,51 @@
22105 +/*
22106 + * gradm match for netfilter
22107 @@ -77646,9 +77733,9 @@ diff -urNp linux-2.6.32.48/net/netfilter/xt_gradm.c linux-2.6.32.48/net/netfilte
22108 +MODULE_LICENSE("GPL");
22109 +MODULE_ALIAS("ipt_gradm");
22110 +MODULE_ALIAS("ip6t_gradm");
22111 -diff -urNp linux-2.6.32.48/net/netlink/af_netlink.c linux-2.6.32.48/net/netlink/af_netlink.c
22112 ---- linux-2.6.32.48/net/netlink/af_netlink.c 2011-11-12 12:44:30.000000000 -0500
22113 -+++ linux-2.6.32.48/net/netlink/af_netlink.c 2011-11-12 12:46:53.000000000 -0500
22114 +diff -urNp linux-2.6.32.46/net/netlink/af_netlink.c linux-2.6.32.46/net/netlink/af_netlink.c
22115 +--- linux-2.6.32.46/net/netlink/af_netlink.c 2011-03-27 14:31:47.000000000 -0400
22116 ++++ linux-2.6.32.46/net/netlink/af_netlink.c 2011-05-04 17:56:28.000000000 -0400
22117 @@ -733,7 +733,7 @@ static void netlink_overrun(struct sock
22118 sk->sk_error_report(sk);
22119 }
22120 @@ -77683,9 +77770,9 @@ diff -urNp linux-2.6.32.48/net/netlink/af_netlink.c linux-2.6.32.48/net/netlink/
22121 );
22122
22123 }
22124 -diff -urNp linux-2.6.32.48/net/netrom/af_netrom.c linux-2.6.32.48/net/netrom/af_netrom.c
22125 ---- linux-2.6.32.48/net/netrom/af_netrom.c 2009-12-02 22:51:21.000000000 -0500
22126 -+++ linux-2.6.32.48/net/netrom/af_netrom.c 2011-11-12 12:46:53.000000000 -0500
22127 +diff -urNp linux-2.6.32.46/net/netrom/af_netrom.c linux-2.6.32.46/net/netrom/af_netrom.c
22128 +--- linux-2.6.32.46/net/netrom/af_netrom.c 2011-03-27 14:31:47.000000000 -0400
22129 ++++ linux-2.6.32.46/net/netrom/af_netrom.c 2011-04-17 15:56:46.000000000 -0400
22130 @@ -838,6 +838,7 @@ static int nr_getname(struct socket *soc
22131 struct sock *sk = sock->sk;
22132 struct nr_sock *nr = nr_sk(sk);
22133 @@ -77702,9 +77789,9 @@ diff -urNp linux-2.6.32.48/net/netrom/af_netrom.c linux-2.6.32.48/net/netrom/af_
22134 sax->fsa_ax25.sax25_call = nr->source_addr;
22135 *uaddr_len = sizeof(struct sockaddr_ax25);
22136 }
22137 -diff -urNp linux-2.6.32.48/net/packet/af_packet.c linux-2.6.32.48/net/packet/af_packet.c
22138 ---- linux-2.6.32.48/net/packet/af_packet.c 2011-11-12 12:44:30.000000000 -0500
22139 -+++ linux-2.6.32.48/net/packet/af_packet.c 2011-11-12 12:46:53.000000000 -0500
22140 +diff -urNp linux-2.6.32.46/net/packet/af_packet.c linux-2.6.32.46/net/packet/af_packet.c
22141 +--- linux-2.6.32.46/net/packet/af_packet.c 2011-07-13 17:23:04.000000000 -0400
22142 ++++ linux-2.6.32.46/net/packet/af_packet.c 2011-07-13 17:23:27.000000000 -0400
22143 @@ -2429,7 +2429,11 @@ static int packet_seq_show(struct seq_fi
22144
22145 seq_printf(seq,
22146 @@ -77717,9 +77804,9 @@ diff -urNp linux-2.6.32.48/net/packet/af_packet.c linux-2.6.32.48/net/packet/af_
22147 atomic_read(&s->sk_refcnt),
22148 s->sk_type,
22149 ntohs(po->num),
22150 -diff -urNp linux-2.6.32.48/net/phonet/af_phonet.c linux-2.6.32.48/net/phonet/af_phonet.c
22151 ---- linux-2.6.32.48/net/phonet/af_phonet.c 2011-11-12 12:44:30.000000000 -0500
22152 -+++ linux-2.6.32.48/net/phonet/af_phonet.c 2011-11-12 12:46:53.000000000 -0500
22153 +diff -urNp linux-2.6.32.46/net/phonet/af_phonet.c linux-2.6.32.46/net/phonet/af_phonet.c
22154 +--- linux-2.6.32.46/net/phonet/af_phonet.c 2011-03-27 14:31:47.000000000 -0400
22155 ++++ linux-2.6.32.46/net/phonet/af_phonet.c 2011-04-17 15:56:46.000000000 -0400
22156 @@ -41,7 +41,7 @@ static struct phonet_protocol *phonet_pr
22157 {
22158 struct phonet_protocol *pp;
22159 @@ -77738,9 +77825,9 @@ diff -urNp linux-2.6.32.48/net/phonet/af_phonet.c linux-2.6.32.48/net/phonet/af_
22160 return -EINVAL;
22161
22162 err = proto_register(pp->prot, 1);
22163 -diff -urNp linux-2.6.32.48/net/phonet/datagram.c linux-2.6.32.48/net/phonet/datagram.c
22164 ---- linux-2.6.32.48/net/phonet/datagram.c 2009-12-02 22:51:21.000000000 -0500
22165 -+++ linux-2.6.32.48/net/phonet/datagram.c 2011-11-12 12:46:53.000000000 -0500
22166 +diff -urNp linux-2.6.32.46/net/phonet/datagram.c linux-2.6.32.46/net/phonet/datagram.c
22167 +--- linux-2.6.32.46/net/phonet/datagram.c 2011-03-27 14:31:47.000000000 -0400
22168 ++++ linux-2.6.32.46/net/phonet/datagram.c 2011-05-04 17:56:28.000000000 -0400
22169 @@ -162,7 +162,7 @@ static int pn_backlog_rcv(struct sock *s
22170 if (err < 0) {
22171 kfree_skb(skb);
22172 @@ -77750,9 +77837,9 @@ diff -urNp linux-2.6.32.48/net/phonet/datagram.c linux-2.6.32.48/net/phonet/data
22173 }
22174 return err ? NET_RX_DROP : NET_RX_SUCCESS;
22175 }
22176 -diff -urNp linux-2.6.32.48/net/phonet/pep.c linux-2.6.32.48/net/phonet/pep.c
22177 ---- linux-2.6.32.48/net/phonet/pep.c 2011-11-12 12:44:30.000000000 -0500
22178 -+++ linux-2.6.32.48/net/phonet/pep.c 2011-11-12 12:46:53.000000000 -0500
22179 +diff -urNp linux-2.6.32.46/net/phonet/pep.c linux-2.6.32.46/net/phonet/pep.c
22180 +--- linux-2.6.32.46/net/phonet/pep.c 2011-03-27 14:31:47.000000000 -0400
22181 ++++ linux-2.6.32.46/net/phonet/pep.c 2011-05-04 17:56:28.000000000 -0400
22182 @@ -348,7 +348,7 @@ static int pipe_do_rcv(struct sock *sk,
22183
22184 case PNS_PEP_CTRL_REQ:
22185 @@ -77777,9 +77864,9 @@ diff -urNp linux-2.6.32.48/net/phonet/pep.c linux-2.6.32.48/net/phonet/pep.c
22186 err = -ENOBUFS;
22187 break;
22188 }
22189 -diff -urNp linux-2.6.32.48/net/phonet/socket.c linux-2.6.32.48/net/phonet/socket.c
22190 ---- linux-2.6.32.48/net/phonet/socket.c 2009-12-02 22:51:21.000000000 -0500
22191 -+++ linux-2.6.32.48/net/phonet/socket.c 2011-11-12 12:46:53.000000000 -0500
22192 +diff -urNp linux-2.6.32.46/net/phonet/socket.c linux-2.6.32.46/net/phonet/socket.c
22193 +--- linux-2.6.32.46/net/phonet/socket.c 2011-03-27 14:31:47.000000000 -0400
22194 ++++ linux-2.6.32.46/net/phonet/socket.c 2011-05-04 17:57:07.000000000 -0400
22195 @@ -482,8 +482,13 @@ static int pn_sock_seq_show(struct seq_f
22196 sk->sk_state,
22197 sk_wmem_alloc_get(sk), sk_rmem_alloc_get(sk),
22198 @@ -77796,9 +77883,9 @@ diff -urNp linux-2.6.32.48/net/phonet/socket.c linux-2.6.32.48/net/phonet/socket
22199 }
22200 seq_printf(seq, "%*s\n", 127 - len, "");
22201 return 0;
22202 -diff -urNp linux-2.6.32.48/net/rds/cong.c linux-2.6.32.48/net/rds/cong.c
22203 ---- linux-2.6.32.48/net/rds/cong.c 2009-12-02 22:51:21.000000000 -0500
22204 -+++ linux-2.6.32.48/net/rds/cong.c 2011-11-12 12:46:53.000000000 -0500
22205 +diff -urNp linux-2.6.32.46/net/rds/cong.c linux-2.6.32.46/net/rds/cong.c
22206 +--- linux-2.6.32.46/net/rds/cong.c 2011-03-27 14:31:47.000000000 -0400
22207 ++++ linux-2.6.32.46/net/rds/cong.c 2011-05-04 17:56:28.000000000 -0400
22208 @@ -77,7 +77,7 @@
22209 * finds that the saved generation number is smaller than the global generation
22210 * number, it wakes up the process.
22211 @@ -77826,9 +77913,9 @@ diff -urNp linux-2.6.32.48/net/rds/cong.c linux-2.6.32.48/net/rds/cong.c
22212
22213 if (likely(*recent == gen))
22214 return 0;
22215 -diff -urNp linux-2.6.32.48/net/rds/iw_rdma.c linux-2.6.32.48/net/rds/iw_rdma.c
22216 ---- linux-2.6.32.48/net/rds/iw_rdma.c 2009-12-02 22:51:21.000000000 -0500
22217 -+++ linux-2.6.32.48/net/rds/iw_rdma.c 2011-11-12 12:46:53.000000000 -0500
22218 +diff -urNp linux-2.6.32.46/net/rds/iw_rdma.c linux-2.6.32.46/net/rds/iw_rdma.c
22219 +--- linux-2.6.32.46/net/rds/iw_rdma.c 2011-03-27 14:31:47.000000000 -0400
22220 ++++ linux-2.6.32.46/net/rds/iw_rdma.c 2011-05-16 21:46:57.000000000 -0400
22221 @@ -181,6 +181,8 @@ int rds_iw_update_cm_id(struct rds_iw_de
22222 struct rdma_cm_id *pcm_id;
22223 int rc;
22224 @@ -77838,9 +77925,9 @@ diff -urNp linux-2.6.32.48/net/rds/iw_rdma.c linux-2.6.32.48/net/rds/iw_rdma.c
22225 src_addr = (struct sockaddr_in *)&cm_id->route.addr.src_addr;
22226 dst_addr = (struct sockaddr_in *)&cm_id->route.addr.dst_addr;
22227
22228 -diff -urNp linux-2.6.32.48/net/rds/Kconfig linux-2.6.32.48/net/rds/Kconfig
22229 ---- linux-2.6.32.48/net/rds/Kconfig 2009-12-02 22:51:21.000000000 -0500
22230 -+++ linux-2.6.32.48/net/rds/Kconfig 2011-11-12 12:46:53.000000000 -0500
22231 +diff -urNp linux-2.6.32.46/net/rds/Kconfig linux-2.6.32.46/net/rds/Kconfig
22232 +--- linux-2.6.32.46/net/rds/Kconfig 2011-03-27 14:31:47.000000000 -0400
22233 ++++ linux-2.6.32.46/net/rds/Kconfig 2011-04-17 15:56:46.000000000 -0400
22234 @@ -1,7 +1,7 @@
22235
22236 config RDS
22237 @@ -77850,9 +77937,9 @@ diff -urNp linux-2.6.32.48/net/rds/Kconfig linux-2.6.32.48/net/rds/Kconfig
22238 ---help---
22239 The RDS (Reliable Datagram Sockets) protocol provides reliable,
22240 sequenced delivery of datagrams over Infiniband, iWARP,
22241 -diff -urNp linux-2.6.32.48/net/rds/tcp.c linux-2.6.32.48/net/rds/tcp.c
22242 ---- linux-2.6.32.48/net/rds/tcp.c 2009-12-02 22:51:21.000000000 -0500
22243 -+++ linux-2.6.32.48/net/rds/tcp.c 2011-11-12 12:46:53.000000000 -0500
22244 +diff -urNp linux-2.6.32.46/net/rds/tcp.c linux-2.6.32.46/net/rds/tcp.c
22245 +--- linux-2.6.32.46/net/rds/tcp.c 2011-03-27 14:31:47.000000000 -0400
22246 ++++ linux-2.6.32.46/net/rds/tcp.c 2011-10-06 09:37:16.000000000 -0400
22247 @@ -57,7 +57,7 @@ void rds_tcp_nonagle(struct socket *sock
22248 int val = 1;
22249
22250 @@ -77862,9 +77949,9 @@ diff -urNp linux-2.6.32.48/net/rds/tcp.c linux-2.6.32.48/net/rds/tcp.c
22251 sizeof(val));
22252 set_fs(oldfs);
22253 }
22254 -diff -urNp linux-2.6.32.48/net/rds/tcp_send.c linux-2.6.32.48/net/rds/tcp_send.c
22255 ---- linux-2.6.32.48/net/rds/tcp_send.c 2009-12-02 22:51:21.000000000 -0500
22256 -+++ linux-2.6.32.48/net/rds/tcp_send.c 2011-11-12 12:46:53.000000000 -0500
22257 +diff -urNp linux-2.6.32.46/net/rds/tcp_send.c linux-2.6.32.46/net/rds/tcp_send.c
22258 +--- linux-2.6.32.46/net/rds/tcp_send.c 2011-03-27 14:31:47.000000000 -0400
22259 ++++ linux-2.6.32.46/net/rds/tcp_send.c 2011-10-06 09:37:16.000000000 -0400
22260 @@ -43,7 +43,7 @@ static void rds_tcp_cork(struct socket *
22261
22262 oldfs = get_fs();
22263 @@ -77874,9 +77961,9 @@ diff -urNp linux-2.6.32.48/net/rds/tcp_send.c linux-2.6.32.48/net/rds/tcp_send.c
22264 sizeof(val));
22265 set_fs(oldfs);
22266 }
22267 -diff -urNp linux-2.6.32.48/net/rxrpc/af_rxrpc.c linux-2.6.32.48/net/rxrpc/af_rxrpc.c
22268 ---- linux-2.6.32.48/net/rxrpc/af_rxrpc.c 2009-12-02 22:51:21.000000000 -0500
22269 -+++ linux-2.6.32.48/net/rxrpc/af_rxrpc.c 2011-11-12 12:46:53.000000000 -0500
22270 +diff -urNp linux-2.6.32.46/net/rxrpc/af_rxrpc.c linux-2.6.32.46/net/rxrpc/af_rxrpc.c
22271 +--- linux-2.6.32.46/net/rxrpc/af_rxrpc.c 2011-03-27 14:31:47.000000000 -0400
22272 ++++ linux-2.6.32.46/net/rxrpc/af_rxrpc.c 2011-05-04 17:56:28.000000000 -0400
22273 @@ -38,7 +38,7 @@ static const struct proto_ops rxrpc_rpc_
22274 __be32 rxrpc_epoch;
22275
22276 @@ -77886,9 +77973,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/af_rxrpc.c linux-2.6.32.48/net/rxrpc/af_rxr
22277
22278 /* count of skbs currently in use */
22279 atomic_t rxrpc_n_skbs;
22280 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
22281 ---- linux-2.6.32.48/net/rxrpc/ar-ack.c 2009-12-02 22:51:21.000000000 -0500
22282 -+++ linux-2.6.32.48/net/rxrpc/ar-ack.c 2011-11-12 12:46:53.000000000 -0500
22283 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-ack.c linux-2.6.32.46/net/rxrpc/ar-ack.c
22284 +--- linux-2.6.32.46/net/rxrpc/ar-ack.c 2011-03-27 14:31:47.000000000 -0400
22285 ++++ linux-2.6.32.46/net/rxrpc/ar-ack.c 2011-05-16 21:46:57.000000000 -0400
22286 @@ -174,7 +174,7 @@ static void rxrpc_resend(struct rxrpc_ca
22287
22288 _enter("{%d,%d,%d,%d},",
22289 @@ -77961,9 +78048,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
22290 _proto("Tx %s %%%u", rxrpc_pkts[hdr.type], ntohl(hdr.serial));
22291 send_message_2:
22292
22293 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-call.c linux-2.6.32.48/net/rxrpc/ar-call.c
22294 ---- linux-2.6.32.48/net/rxrpc/ar-call.c 2009-12-02 22:51:21.000000000 -0500
22295 -+++ linux-2.6.32.48/net/rxrpc/ar-call.c 2011-11-12 12:46:53.000000000 -0500
22296 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-call.c linux-2.6.32.46/net/rxrpc/ar-call.c
22297 +--- linux-2.6.32.46/net/rxrpc/ar-call.c 2011-03-27 14:31:47.000000000 -0400
22298 ++++ linux-2.6.32.46/net/rxrpc/ar-call.c 2011-05-04 17:56:28.000000000 -0400
22299 @@ -82,7 +82,7 @@ static struct rxrpc_call *rxrpc_alloc_ca
22300 spin_lock_init(&call->lock);
22301 rwlock_init(&call->state_lock);
22302 @@ -77973,9 +78060,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-call.c linux-2.6.32.48/net/rxrpc/ar-call
22303 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST;
22304
22305 memset(&call->sock_node, 0xed, sizeof(call->sock_node));
22306 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-connection.c linux-2.6.32.48/net/rxrpc/ar-connection.c
22307 ---- linux-2.6.32.48/net/rxrpc/ar-connection.c 2009-12-02 22:51:21.000000000 -0500
22308 -+++ linux-2.6.32.48/net/rxrpc/ar-connection.c 2011-11-12 12:46:53.000000000 -0500
22309 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-connection.c linux-2.6.32.46/net/rxrpc/ar-connection.c
22310 +--- linux-2.6.32.46/net/rxrpc/ar-connection.c 2011-03-27 14:31:47.000000000 -0400
22311 ++++ linux-2.6.32.46/net/rxrpc/ar-connection.c 2011-05-04 17:56:28.000000000 -0400
22312 @@ -205,7 +205,7 @@ static struct rxrpc_connection *rxrpc_al
22313 rwlock_init(&conn->lock);
22314 spin_lock_init(&conn->state_lock);
22315 @@ -77985,9 +78072,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-connection.c linux-2.6.32.48/net/rxrpc/a
22316 conn->avail_calls = RXRPC_MAXCALLS;
22317 conn->size_align = 4;
22318 conn->header_size = sizeof(struct rxrpc_header);
22319 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-connevent.c linux-2.6.32.48/net/rxrpc/ar-connevent.c
22320 ---- linux-2.6.32.48/net/rxrpc/ar-connevent.c 2009-12-02 22:51:21.000000000 -0500
22321 -+++ linux-2.6.32.48/net/rxrpc/ar-connevent.c 2011-11-12 12:46:53.000000000 -0500
22322 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-connevent.c linux-2.6.32.46/net/rxrpc/ar-connevent.c
22323 +--- linux-2.6.32.46/net/rxrpc/ar-connevent.c 2011-03-27 14:31:47.000000000 -0400
22324 ++++ linux-2.6.32.46/net/rxrpc/ar-connevent.c 2011-05-04 17:56:28.000000000 -0400
22325 @@ -109,7 +109,7 @@ static int rxrpc_abort_connection(struct
22326
22327 len = iov[0].iov_len + iov[1].iov_len;
22328 @@ -77997,9 +78084,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-connevent.c linux-2.6.32.48/net/rxrpc/ar
22329 _proto("Tx CONN ABORT %%%u { %d }", ntohl(hdr.serial), abort_code);
22330
22331 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
22332 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-input.c linux-2.6.32.48/net/rxrpc/ar-input.c
22333 ---- linux-2.6.32.48/net/rxrpc/ar-input.c 2009-12-02 22:51:21.000000000 -0500
22334 -+++ linux-2.6.32.48/net/rxrpc/ar-input.c 2011-11-12 12:46:53.000000000 -0500
22335 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-input.c linux-2.6.32.46/net/rxrpc/ar-input.c
22336 +--- linux-2.6.32.46/net/rxrpc/ar-input.c 2011-03-27 14:31:47.000000000 -0400
22337 ++++ linux-2.6.32.46/net/rxrpc/ar-input.c 2011-05-04 17:56:28.000000000 -0400
22338 @@ -339,9 +339,9 @@ void rxrpc_fast_process_packet(struct rx
22339 /* track the latest serial number on this connection for ACK packet
22340 * information */
22341 @@ -78012,9 +78099,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-input.c linux-2.6.32.48/net/rxrpc/ar-inp
22342 serial);
22343
22344 /* request ACK generation for any ACK or DATA packet that requests
22345 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-internal.h linux-2.6.32.48/net/rxrpc/ar-internal.h
22346 ---- linux-2.6.32.48/net/rxrpc/ar-internal.h 2009-12-02 22:51:21.000000000 -0500
22347 -+++ linux-2.6.32.48/net/rxrpc/ar-internal.h 2011-11-12 12:46:53.000000000 -0500
22348 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-internal.h linux-2.6.32.46/net/rxrpc/ar-internal.h
22349 +--- linux-2.6.32.46/net/rxrpc/ar-internal.h 2011-03-27 14:31:47.000000000 -0400
22350 ++++ linux-2.6.32.46/net/rxrpc/ar-internal.h 2011-05-04 17:56:28.000000000 -0400
22351 @@ -272,8 +272,8 @@ struct rxrpc_connection {
22352 int error; /* error code for local abort */
22353 int debug_id; /* debug ID for printks */
22354 @@ -78044,9 +78131,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-internal.h linux-2.6.32.48/net/rxrpc/ar-
22355 extern struct workqueue_struct *rxrpc_workqueue;
22356
22357 /*
22358 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-key.c linux-2.6.32.48/net/rxrpc/ar-key.c
22359 ---- linux-2.6.32.48/net/rxrpc/ar-key.c 2009-12-02 22:51:21.000000000 -0500
22360 -+++ linux-2.6.32.48/net/rxrpc/ar-key.c 2011-11-12 12:46:53.000000000 -0500
22361 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-key.c linux-2.6.32.46/net/rxrpc/ar-key.c
22362 +--- linux-2.6.32.46/net/rxrpc/ar-key.c 2011-03-27 14:31:47.000000000 -0400
22363 ++++ linux-2.6.32.46/net/rxrpc/ar-key.c 2011-04-17 15:56:46.000000000 -0400
22364 @@ -88,11 +88,11 @@ static int rxrpc_instantiate_xdr_rxkad(s
22365 return ret;
22366
22367 @@ -78074,9 +78161,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-key.c linux-2.6.32.48/net/rxrpc/ar-key.c
22368 if (!token->kad)
22369 goto error_free;
22370
22371 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-local.c linux-2.6.32.48/net/rxrpc/ar-local.c
22372 ---- linux-2.6.32.48/net/rxrpc/ar-local.c 2009-12-02 22:51:21.000000000 -0500
22373 -+++ linux-2.6.32.48/net/rxrpc/ar-local.c 2011-11-12 12:46:53.000000000 -0500
22374 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-local.c linux-2.6.32.46/net/rxrpc/ar-local.c
22375 +--- linux-2.6.32.46/net/rxrpc/ar-local.c 2011-03-27 14:31:47.000000000 -0400
22376 ++++ linux-2.6.32.46/net/rxrpc/ar-local.c 2011-05-04 17:56:28.000000000 -0400
22377 @@ -44,7 +44,7 @@ struct rxrpc_local *rxrpc_alloc_local(st
22378 spin_lock_init(&local->lock);
22379 rwlock_init(&local->services_lock);
22380 @@ -78086,9 +78173,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-local.c linux-2.6.32.48/net/rxrpc/ar-loc
22381 memcpy(&local->srx, srx, sizeof(*srx));
22382 }
22383
22384 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-output.c linux-2.6.32.48/net/rxrpc/ar-output.c
22385 ---- linux-2.6.32.48/net/rxrpc/ar-output.c 2009-12-02 22:51:21.000000000 -0500
22386 -+++ linux-2.6.32.48/net/rxrpc/ar-output.c 2011-11-12 12:46:53.000000000 -0500
22387 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-output.c linux-2.6.32.46/net/rxrpc/ar-output.c
22388 +--- linux-2.6.32.46/net/rxrpc/ar-output.c 2011-03-27 14:31:47.000000000 -0400
22389 ++++ linux-2.6.32.46/net/rxrpc/ar-output.c 2011-05-04 17:56:28.000000000 -0400
22390 @@ -680,9 +680,9 @@ static int rxrpc_send_data(struct kiocb
22391 sp->hdr.cid = call->cid;
22392 sp->hdr.callNumber = call->call_id;
22393 @@ -78101,9 +78188,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-output.c linux-2.6.32.48/net/rxrpc/ar-ou
22394 sp->hdr.type = RXRPC_PACKET_TYPE_DATA;
22395 sp->hdr.userStatus = 0;
22396 sp->hdr.securityIndex = conn->security_ix;
22397 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-peer.c linux-2.6.32.48/net/rxrpc/ar-peer.c
22398 ---- linux-2.6.32.48/net/rxrpc/ar-peer.c 2009-12-02 22:51:21.000000000 -0500
22399 -+++ linux-2.6.32.48/net/rxrpc/ar-peer.c 2011-11-12 12:46:53.000000000 -0500
22400 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-peer.c linux-2.6.32.46/net/rxrpc/ar-peer.c
22401 +--- linux-2.6.32.46/net/rxrpc/ar-peer.c 2011-03-27 14:31:47.000000000 -0400
22402 ++++ linux-2.6.32.46/net/rxrpc/ar-peer.c 2011-05-04 17:56:28.000000000 -0400
22403 @@ -86,7 +86,7 @@ static struct rxrpc_peer *rxrpc_alloc_pe
22404 INIT_LIST_HEAD(&peer->error_targets);
22405 spin_lock_init(&peer->lock);
22406 @@ -78113,9 +78200,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-peer.c linux-2.6.32.48/net/rxrpc/ar-peer
22407 memcpy(&peer->srx, srx, sizeof(*srx));
22408
22409 rxrpc_assess_MTU_size(peer);
22410 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-proc.c linux-2.6.32.48/net/rxrpc/ar-proc.c
22411 ---- linux-2.6.32.48/net/rxrpc/ar-proc.c 2009-12-02 22:51:21.000000000 -0500
22412 -+++ linux-2.6.32.48/net/rxrpc/ar-proc.c 2011-11-12 12:46:53.000000000 -0500
22413 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-proc.c linux-2.6.32.46/net/rxrpc/ar-proc.c
22414 +--- linux-2.6.32.46/net/rxrpc/ar-proc.c 2011-03-27 14:31:47.000000000 -0400
22415 ++++ linux-2.6.32.46/net/rxrpc/ar-proc.c 2011-05-04 17:56:28.000000000 -0400
22416 @@ -164,8 +164,8 @@ static int rxrpc_connection_seq_show(str
22417 atomic_read(&conn->usage),
22418 rxrpc_conn_states[conn->state],
22419 @@ -78127,9 +78214,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-proc.c linux-2.6.32.48/net/rxrpc/ar-proc
22420
22421 return 0;
22422 }
22423 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-transport.c linux-2.6.32.48/net/rxrpc/ar-transport.c
22424 ---- linux-2.6.32.48/net/rxrpc/ar-transport.c 2009-12-02 22:51:21.000000000 -0500
22425 -+++ linux-2.6.32.48/net/rxrpc/ar-transport.c 2011-11-12 12:46:53.000000000 -0500
22426 +diff -urNp linux-2.6.32.46/net/rxrpc/ar-transport.c linux-2.6.32.46/net/rxrpc/ar-transport.c
22427 +--- linux-2.6.32.46/net/rxrpc/ar-transport.c 2011-03-27 14:31:47.000000000 -0400
22428 ++++ linux-2.6.32.46/net/rxrpc/ar-transport.c 2011-05-04 17:56:28.000000000 -0400
22429 @@ -46,7 +46,7 @@ static struct rxrpc_transport *rxrpc_all
22430 spin_lock_init(&trans->client_lock);
22431 rwlock_init(&trans->conn_lock);
22432 @@ -78139,9 +78226,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-transport.c linux-2.6.32.48/net/rxrpc/ar
22433
22434 if (peer->srx.transport.family == AF_INET) {
22435 switch (peer->srx.transport_type) {
22436 -diff -urNp linux-2.6.32.48/net/rxrpc/rxkad.c linux-2.6.32.48/net/rxrpc/rxkad.c
22437 ---- linux-2.6.32.48/net/rxrpc/rxkad.c 2009-12-02 22:51:21.000000000 -0500
22438 -+++ linux-2.6.32.48/net/rxrpc/rxkad.c 2011-11-12 12:46:53.000000000 -0500
22439 +diff -urNp linux-2.6.32.46/net/rxrpc/rxkad.c linux-2.6.32.46/net/rxrpc/rxkad.c
22440 +--- linux-2.6.32.46/net/rxrpc/rxkad.c 2011-03-27 14:31:47.000000000 -0400
22441 ++++ linux-2.6.32.46/net/rxrpc/rxkad.c 2011-05-16 21:46:57.000000000 -0400
22442 @@ -210,6 +210,8 @@ static int rxkad_secure_packet_encrypt(c
22443 u16 check;
22444 int nsg;
22445 @@ -78178,9 +78265,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/rxkad.c linux-2.6.32.48/net/rxrpc/rxkad.c
22446 _proto("Tx RESPONSE %%%u", ntohl(hdr->serial));
22447
22448 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
22449 -diff -urNp linux-2.6.32.48/net/sctp/proc.c linux-2.6.32.48/net/sctp/proc.c
22450 ---- linux-2.6.32.48/net/sctp/proc.c 2009-12-02 22:51:21.000000000 -0500
22451 -+++ linux-2.6.32.48/net/sctp/proc.c 2011-11-12 12:46:53.000000000 -0500
22452 +diff -urNp linux-2.6.32.46/net/sctp/proc.c linux-2.6.32.46/net/sctp/proc.c
22453 +--- linux-2.6.32.46/net/sctp/proc.c 2011-03-27 14:31:47.000000000 -0400
22454 ++++ linux-2.6.32.46/net/sctp/proc.c 2011-04-17 15:56:46.000000000 -0400
22455 @@ -213,7 +213,12 @@ static int sctp_eps_seq_show(struct seq_
22456 sctp_for_each_hentry(epb, node, &head->chain) {
22457 ep = sctp_ep(epb);
22458 @@ -78209,9 +78296,9 @@ diff -urNp linux-2.6.32.48/net/sctp/proc.c linux-2.6.32.48/net/sctp/proc.c
22459 assoc->state, hash,
22460 assoc->assoc_id,
22461 assoc->sndbuf_used,
22462 -diff -urNp linux-2.6.32.48/net/sctp/socket.c linux-2.6.32.48/net/sctp/socket.c
22463 ---- linux-2.6.32.48/net/sctp/socket.c 2009-12-02 22:51:21.000000000 -0500
22464 -+++ linux-2.6.32.48/net/sctp/socket.c 2011-11-12 12:46:53.000000000 -0500
22465 +diff -urNp linux-2.6.32.46/net/sctp/socket.c linux-2.6.32.46/net/sctp/socket.c
22466 +--- linux-2.6.32.46/net/sctp/socket.c 2011-03-27 14:31:47.000000000 -0400
22467 ++++ linux-2.6.32.46/net/sctp/socket.c 2011-04-23 12:56:11.000000000 -0400
22468 @@ -5802,7 +5802,6 @@ pp_found:
22469 */
22470 int reuse = sk->sk_reuse;
22471 @@ -78220,9 +78307,9 @@ diff -urNp linux-2.6.32.48/net/sctp/socket.c linux-2.6.32.48/net/sctp/socket.c
22472
22473 SCTP_DEBUG_PRINTK("sctp_get_port() found a possible match\n");
22474 if (pp->fastreuse && sk->sk_reuse &&
22475 -diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
22476 ---- linux-2.6.32.48/net/socket.c 2011-11-12 12:44:30.000000000 -0500
22477 -+++ linux-2.6.32.48/net/socket.c 2011-11-12 12:46:53.000000000 -0500
22478 +diff -urNp linux-2.6.32.46/net/socket.c linux-2.6.32.46/net/socket.c
22479 +--- linux-2.6.32.46/net/socket.c 2011-03-27 14:31:47.000000000 -0400
22480 ++++ linux-2.6.32.46/net/socket.c 2011-10-06 09:37:16.000000000 -0400
22481 @@ -87,6 +87,7 @@
22482 #include <linux/wireless.h>
22483 #include <linux/nsproxy.h>
22484 @@ -78404,9 +78491,9 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
22485 uaddr_len = COMPAT_NAMELEN(msg);
22486 if (MSG_CMSG_COMPAT & flags) {
22487 err = verify_compat_iovec(&msg_sys, iov,
22488 -diff -urNp linux-2.6.32.48/net/sunrpc/sched.c linux-2.6.32.48/net/sunrpc/sched.c
22489 ---- linux-2.6.32.48/net/sunrpc/sched.c 2011-11-12 12:44:30.000000000 -0500
22490 -+++ linux-2.6.32.48/net/sunrpc/sched.c 2011-11-12 12:46:53.000000000 -0500
22491 +diff -urNp linux-2.6.32.46/net/sunrpc/sched.c linux-2.6.32.46/net/sunrpc/sched.c
22492 +--- linux-2.6.32.46/net/sunrpc/sched.c 2011-08-09 18:35:30.000000000 -0400
22493 ++++ linux-2.6.32.46/net/sunrpc/sched.c 2011-08-09 18:34:01.000000000 -0400
22494 @@ -234,10 +234,10 @@ static int rpc_wait_bit_killable(void *w
22495 #ifdef RPC_DEBUG
22496 static void rpc_task_set_debuginfo(struct rpc_task *task)
22497 @@ -78420,9 +78507,9 @@ diff -urNp linux-2.6.32.48/net/sunrpc/sched.c linux-2.6.32.48/net/sunrpc/sched.c
22498 }
22499 #else
22500 static inline void rpc_task_set_debuginfo(struct rpc_task *task)
22501 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c
22502 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c 2009-12-02 22:51:21.000000000 -0500
22503 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c 2011-11-12 12:46:53.000000000 -0500
22504 +diff -urNp linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma.c
22505 +--- linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma.c 2011-03-27 14:31:47.000000000 -0400
22506 ++++ linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma.c 2011-05-04 17:56:20.000000000 -0400
22507 @@ -59,15 +59,15 @@ unsigned int svcrdma_max_req_size = RPCR
22508 static unsigned int min_max_inline = 4096;
22509 static unsigned int max_max_inline = 65536;
22510 @@ -78530,9 +78617,9 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
22511 .mode = 0644,
22512 .proc_handler = &read_reset_stat,
22513 },
22514 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
22515 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2009-12-02 22:51:21.000000000 -0500
22516 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-11-12 12:46:53.000000000 -0500
22517 +diff -urNp linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
22518 +--- linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-03-27 14:31:47.000000000 -0400
22519 ++++ linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-05-04 17:56:28.000000000 -0400
22520 @@ -495,7 +495,7 @@ next_sge:
22521 svc_rdma_put_context(ctxt, 0);
22522 goto out;
22523 @@ -78560,9 +78647,9 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-2.6.32.
22524
22525 /* Build up the XDR from the receive buffers. */
22526 rdma_build_arg_xdr(rqstp, ctxt, ctxt->byte_len);
22527 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c
22528 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2009-12-02 22:51:21.000000000 -0500
22529 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-11-12 12:46:53.000000000 -0500
22530 +diff -urNp linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_sendto.c
22531 +--- linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-03-27 14:31:47.000000000 -0400
22532 ++++ linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-05-04 17:56:28.000000000 -0400
22533 @@ -328,7 +328,7 @@ static int send_write(struct svcxprt_rdm
22534 write_wr.wr.rdma.remote_addr = to;
22535
22536 @@ -78572,9 +78659,9 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-2.6.32.48
22537 if (svc_rdma_send(xprt, &write_wr))
22538 goto err;
22539 return 0;
22540 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c
22541 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c 2009-12-02 22:51:21.000000000 -0500
22542 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-11-12 12:46:53.000000000 -0500
22543 +diff -urNp linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_transport.c
22544 +--- linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-03-27 14:31:47.000000000 -0400
22545 ++++ linux-2.6.32.46/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-05-04 17:56:28.000000000 -0400
22546 @@ -292,7 +292,7 @@ static void rq_cq_reap(struct svcxprt_rd
22547 return;
22548
22549 @@ -78620,9 +78707,9 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32
22550
22551 /* See if we can opportunistically reap SQ WR to make room */
22552 sq_cq_reap(xprt);
22553 -diff -urNp linux-2.6.32.48/net/sysctl_net.c linux-2.6.32.48/net/sysctl_net.c
22554 ---- linux-2.6.32.48/net/sysctl_net.c 2009-12-02 22:51:21.000000000 -0500
22555 -+++ linux-2.6.32.48/net/sysctl_net.c 2011-11-12 12:46:53.000000000 -0500
22556 +diff -urNp linux-2.6.32.46/net/sysctl_net.c linux-2.6.32.46/net/sysctl_net.c
22557 +--- linux-2.6.32.46/net/sysctl_net.c 2011-03-27 14:31:47.000000000 -0400
22558 ++++ linux-2.6.32.46/net/sysctl_net.c 2011-04-17 15:56:46.000000000 -0400
22559 @@ -46,7 +46,7 @@ static int net_ctl_permissions(struct ct
22560 struct ctl_table *table)
22561 {
22562 @@ -78632,9 +78719,9 @@ diff -urNp linux-2.6.32.48/net/sysctl_net.c linux-2.6.32.48/net/sysctl_net.c
22563 int mode = (table->mode >> 6) & 7;
22564 return (mode << 6) | (mode << 3) | mode;
22565 }
22566 -diff -urNp linux-2.6.32.48/net/tipc/link.c linux-2.6.32.48/net/tipc/link.c
22567 ---- linux-2.6.32.48/net/tipc/link.c 2009-12-02 22:51:21.000000000 -0500
22568 -+++ linux-2.6.32.48/net/tipc/link.c 2011-11-12 12:46:53.000000000 -0500
22569 +diff -urNp linux-2.6.32.46/net/tipc/link.c linux-2.6.32.46/net/tipc/link.c
22570 +--- linux-2.6.32.46/net/tipc/link.c 2011-03-27 14:31:47.000000000 -0400
22571 ++++ linux-2.6.32.46/net/tipc/link.c 2011-10-06 09:37:16.000000000 -0400
22572 @@ -1418,7 +1418,7 @@ again:
22573
22574 if (!sect_rest) {
22575 @@ -78653,9 +78740,9 @@ diff -urNp linux-2.6.32.48/net/tipc/link.c linux-2.6.32.48/net/tipc/link.c
22576 sect_crs += sz;
22577 sect_rest -= sz;
22578 fragm_crs += sz;
22579 -diff -urNp linux-2.6.32.48/net/tipc/subscr.c linux-2.6.32.48/net/tipc/subscr.c
22580 ---- linux-2.6.32.48/net/tipc/subscr.c 2009-12-02 22:51:21.000000000 -0500
22581 -+++ linux-2.6.32.48/net/tipc/subscr.c 2011-11-12 12:46:53.000000000 -0500
22582 +diff -urNp linux-2.6.32.46/net/tipc/subscr.c linux-2.6.32.46/net/tipc/subscr.c
22583 +--- linux-2.6.32.46/net/tipc/subscr.c 2011-03-27 14:31:47.000000000 -0400
22584 ++++ linux-2.6.32.46/net/tipc/subscr.c 2011-10-06 09:37:16.000000000 -0400
22585 @@ -104,7 +104,7 @@ static void subscr_send_event(struct sub
22586 {
22587 struct iovec msg_sect;
22588 @@ -78665,9 +78752,9 @@ diff -urNp linux-2.6.32.48/net/tipc/subscr.c linux-2.6.32.48/net/tipc/subscr.c
22589 msg_sect.iov_len = sizeof(struct tipc_event);
22590
22591 sub->evt.event = htohl(event, sub->swap);
22592 -diff -urNp linux-2.6.32.48/net/unix/af_unix.c linux-2.6.32.48/net/unix/af_unix.c
22593 ---- linux-2.6.32.48/net/unix/af_unix.c 2011-11-12 12:44:30.000000000 -0500
22594 -+++ linux-2.6.32.48/net/unix/af_unix.c 2011-11-12 12:46:53.000000000 -0500
22595 +diff -urNp linux-2.6.32.46/net/unix/af_unix.c linux-2.6.32.46/net/unix/af_unix.c
22596 +--- linux-2.6.32.46/net/unix/af_unix.c 2011-05-10 22:12:02.000000000 -0400
22597 ++++ linux-2.6.32.46/net/unix/af_unix.c 2011-07-18 18:17:33.000000000 -0400
22598 @@ -745,6 +745,12 @@ static struct sock *unix_find_other(stru
22599 err = -ECONNREFUSED;
22600 if (!S_ISSOCK(inode->i_mode))
22601 @@ -78726,9 +78813,9 @@ diff -urNp linux-2.6.32.48/net/unix/af_unix.c linux-2.6.32.48/net/unix/af_unix.c
22602 atomic_read(&s->sk_refcnt),
22603 0,
22604 s->sk_state == TCP_LISTEN ? __SO_ACCEPTCON : 0,
22605 -diff -urNp linux-2.6.32.48/net/wireless/core.h linux-2.6.32.48/net/wireless/core.h
22606 ---- linux-2.6.32.48/net/wireless/core.h 2011-11-12 12:44:30.000000000 -0500
22607 -+++ linux-2.6.32.48/net/wireless/core.h 2011-11-12 12:46:53.000000000 -0500
22608 +diff -urNp linux-2.6.32.46/net/wireless/core.h linux-2.6.32.46/net/wireless/core.h
22609 +--- linux-2.6.32.46/net/wireless/core.h 2011-03-27 14:31:47.000000000 -0400
22610 ++++ linux-2.6.32.46/net/wireless/core.h 2011-08-23 21:22:38.000000000 -0400
22611 @@ -27,7 +27,7 @@ struct cfg80211_registered_device {
22612 struct mutex mtx;
22613
22614 @@ -78738,9 +78825,9 @@ diff -urNp linux-2.6.32.48/net/wireless/core.h linux-2.6.32.48/net/wireless/core
22615 struct rfkill *rfkill;
22616 struct work_struct rfkill_sync;
22617
22618 -diff -urNp linux-2.6.32.48/net/wireless/wext.c linux-2.6.32.48/net/wireless/wext.c
22619 ---- linux-2.6.32.48/net/wireless/wext.c 2011-11-12 12:44:30.000000000 -0500
22620 -+++ linux-2.6.32.48/net/wireless/wext.c 2011-11-12 12:46:53.000000000 -0500
22621 +diff -urNp linux-2.6.32.46/net/wireless/wext.c linux-2.6.32.46/net/wireless/wext.c
22622 +--- linux-2.6.32.46/net/wireless/wext.c 2011-03-27 14:31:47.000000000 -0400
22623 ++++ linux-2.6.32.46/net/wireless/wext.c 2011-04-17 15:56:46.000000000 -0400
22624 @@ -816,8 +816,7 @@ static int ioctl_standard_iw_point(struc
22625 */
22626
22627 @@ -78774,9 +78861,9 @@ diff -urNp linux-2.6.32.48/net/wireless/wext.c linux-2.6.32.48/net/wireless/wext
22628 err = handler(dev, info, (union iwreq_data *) iwp, extra);
22629
22630 iwp->length += essid_compat;
22631 -diff -urNp linux-2.6.32.48/net/xfrm/xfrm_policy.c linux-2.6.32.48/net/xfrm/xfrm_policy.c
22632 ---- linux-2.6.32.48/net/xfrm/xfrm_policy.c 2009-12-02 22:51:21.000000000 -0500
22633 -+++ linux-2.6.32.48/net/xfrm/xfrm_policy.c 2011-11-12 12:46:53.000000000 -0500
22634 +diff -urNp linux-2.6.32.46/net/xfrm/xfrm_policy.c linux-2.6.32.46/net/xfrm/xfrm_policy.c
22635 +--- linux-2.6.32.46/net/xfrm/xfrm_policy.c 2011-03-27 14:31:47.000000000 -0400
22636 ++++ linux-2.6.32.46/net/xfrm/xfrm_policy.c 2011-05-04 17:56:20.000000000 -0400
22637 @@ -586,7 +586,7 @@ int xfrm_policy_insert(int dir, struct x
22638 hlist_add_head(&policy->bydst, chain);
22639 xfrm_pol_hold(policy);
22640 @@ -78867,9 +78954,9 @@ diff -urNp linux-2.6.32.48/net/xfrm/xfrm_policy.c linux-2.6.32.48/net/xfrm/xfrm_
22641 xfrm_pols_put(pols, npols);
22642 goto restart;
22643 }
22644 -diff -urNp linux-2.6.32.48/net/xfrm/xfrm_user.c linux-2.6.32.48/net/xfrm/xfrm_user.c
22645 ---- linux-2.6.32.48/net/xfrm/xfrm_user.c 2009-12-02 22:51:21.000000000 -0500
22646 -+++ linux-2.6.32.48/net/xfrm/xfrm_user.c 2011-11-12 12:46:53.000000000 -0500
22647 +diff -urNp linux-2.6.32.46/net/xfrm/xfrm_user.c linux-2.6.32.46/net/xfrm/xfrm_user.c
22648 +--- linux-2.6.32.46/net/xfrm/xfrm_user.c 2011-03-27 14:31:47.000000000 -0400
22649 ++++ linux-2.6.32.46/net/xfrm/xfrm_user.c 2011-05-16 21:46:57.000000000 -0400
22650 @@ -1169,6 +1169,8 @@ static int copy_to_user_tmpl(struct xfrm
22651 struct xfrm_user_tmpl vec[XFRM_MAX_DEPTH];
22652 int i;
22653 @@ -78888,9 +78975,9 @@ diff -urNp linux-2.6.32.48/net/xfrm/xfrm_user.c linux-2.6.32.48/net/xfrm/xfrm_us
22654 if (attrs[XFRMA_MIGRATE] == NULL)
22655 return -EINVAL;
22656
22657 -diff -urNp linux-2.6.32.48/samples/kobject/kset-example.c linux-2.6.32.48/samples/kobject/kset-example.c
22658 ---- linux-2.6.32.48/samples/kobject/kset-example.c 2009-12-02 22:51:21.000000000 -0500
22659 -+++ linux-2.6.32.48/samples/kobject/kset-example.c 2011-11-12 12:46:53.000000000 -0500
22660 +diff -urNp linux-2.6.32.46/samples/kobject/kset-example.c linux-2.6.32.46/samples/kobject/kset-example.c
22661 +--- linux-2.6.32.46/samples/kobject/kset-example.c 2011-03-27 14:31:47.000000000 -0400
22662 ++++ linux-2.6.32.46/samples/kobject/kset-example.c 2011-04-17 15:56:46.000000000 -0400
22663 @@ -87,7 +87,7 @@ static ssize_t foo_attr_store(struct kob
22664 }
22665
22666 @@ -78900,9 +78987,9 @@ diff -urNp linux-2.6.32.48/samples/kobject/kset-example.c linux-2.6.32.48/sample
22667 .show = foo_attr_show,
22668 .store = foo_attr_store,
22669 };
22670 -diff -urNp linux-2.6.32.48/scripts/basic/fixdep.c linux-2.6.32.48/scripts/basic/fixdep.c
22671 ---- linux-2.6.32.48/scripts/basic/fixdep.c 2009-12-02 22:51:21.000000000 -0500
22672 -+++ linux-2.6.32.48/scripts/basic/fixdep.c 2011-11-12 12:46:53.000000000 -0500
22673 +diff -urNp linux-2.6.32.46/scripts/basic/fixdep.c linux-2.6.32.46/scripts/basic/fixdep.c
22674 +--- linux-2.6.32.46/scripts/basic/fixdep.c 2011-03-27 14:31:47.000000000 -0400
22675 ++++ linux-2.6.32.46/scripts/basic/fixdep.c 2011-10-06 09:37:14.000000000 -0400
22676 @@ -162,7 +162,7 @@ static void grow_config(int len)
22677 /*
22678 * Lookup a value in the configuration string.
22679 @@ -78942,15 +79029,15 @@ diff -urNp linux-2.6.32.48/scripts/basic/fixdep.c linux-2.6.32.48/scripts/basic/
22680
22681 if (*p != INT_CONF) {
22682 fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianess? %#x\n",
22683 -diff -urNp linux-2.6.32.48/scripts/gcc-plugin.sh linux-2.6.32.48/scripts/gcc-plugin.sh
22684 ---- linux-2.6.32.48/scripts/gcc-plugin.sh 1969-12-31 19:00:00.000000000 -0500
22685 -+++ linux-2.6.32.48/scripts/gcc-plugin.sh 2011-11-12 12:46:53.000000000 -0500
22686 +diff -urNp linux-2.6.32.46/scripts/gcc-plugin.sh linux-2.6.32.46/scripts/gcc-plugin.sh
22687 +--- linux-2.6.32.46/scripts/gcc-plugin.sh 1969-12-31 19:00:00.000000000 -0500
22688 ++++ linux-2.6.32.46/scripts/gcc-plugin.sh 2011-10-06 09:37:14.000000000 -0400
22689 @@ -0,0 +1,2 @@
22690 +#!/bin/sh
22691 +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"
22692 -diff -urNp linux-2.6.32.48/scripts/Makefile.build linux-2.6.32.48/scripts/Makefile.build
22693 ---- linux-2.6.32.48/scripts/Makefile.build 2009-12-02 22:51:21.000000000 -0500
22694 -+++ linux-2.6.32.48/scripts/Makefile.build 2011-11-12 12:46:53.000000000 -0500
22695 +diff -urNp linux-2.6.32.46/scripts/Makefile.build linux-2.6.32.46/scripts/Makefile.build
22696 +--- linux-2.6.32.46/scripts/Makefile.build 2011-03-27 14:31:47.000000000 -0400
22697 ++++ linux-2.6.32.46/scripts/Makefile.build 2011-08-23 20:45:11.000000000 -0400
22698 @@ -59,7 +59,7 @@ endif
22699 endif
22700
22701 @@ -78960,9 +79047,9 @@ diff -urNp linux-2.6.32.48/scripts/Makefile.build linux-2.6.32.48/scripts/Makefi
22702 include scripts/Makefile.host
22703 endif
22704
22705 -diff -urNp linux-2.6.32.48/scripts/Makefile.clean linux-2.6.32.48/scripts/Makefile.clean
22706 ---- linux-2.6.32.48/scripts/Makefile.clean 2009-12-02 22:51:21.000000000 -0500
22707 -+++ linux-2.6.32.48/scripts/Makefile.clean 2011-11-12 12:46:53.000000000 -0500
22708 +diff -urNp linux-2.6.32.46/scripts/Makefile.clean linux-2.6.32.46/scripts/Makefile.clean
22709 +--- linux-2.6.32.46/scripts/Makefile.clean 2011-03-27 14:31:47.000000000 -0400
22710 ++++ linux-2.6.32.46/scripts/Makefile.clean 2011-06-04 20:47:19.000000000 -0400
22711 @@ -43,7 +43,8 @@ subdir-ymn := $(addprefix $(obj)/,$(subd
22712 __clean-files := $(extra-y) $(always) \
22713 $(targets) $(clean-files) \
22714 @@ -78973,9 +79060,9 @@ diff -urNp linux-2.6.32.48/scripts/Makefile.clean linux-2.6.32.48/scripts/Makefi
22715
22716 # as clean-files is given relative to the current directory, this adds
22717 # a $(obj) prefix, except for absolute paths
22718 -diff -urNp linux-2.6.32.48/scripts/Makefile.host linux-2.6.32.48/scripts/Makefile.host
22719 ---- linux-2.6.32.48/scripts/Makefile.host 2009-12-02 22:51:21.000000000 -0500
22720 -+++ linux-2.6.32.48/scripts/Makefile.host 2011-11-12 12:46:53.000000000 -0500
22721 +diff -urNp linux-2.6.32.46/scripts/Makefile.host linux-2.6.32.46/scripts/Makefile.host
22722 +--- linux-2.6.32.46/scripts/Makefile.host 2011-03-27 14:31:47.000000000 -0400
22723 ++++ linux-2.6.32.46/scripts/Makefile.host 2011-06-04 20:48:22.000000000 -0400
22724 @@ -31,6 +31,7 @@
22725 # Note: Shared libraries consisting of C++ files are not supported
22726
22727 @@ -78992,9 +79079,9 @@ diff -urNp linux-2.6.32.48/scripts/Makefile.host linux-2.6.32.48/scripts/Makefil
22728 # Remove .so files from "xxx-objs"
22729 host-cobjs := $(filter-out %.so,$(host-cobjs))
22730
22731 -diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/file2alias.c
22732 ---- linux-2.6.32.48/scripts/mod/file2alias.c 2009-12-02 22:51:21.000000000 -0500
22733 -+++ linux-2.6.32.48/scripts/mod/file2alias.c 2011-11-12 12:46:53.000000000 -0500
22734 +diff -urNp linux-2.6.32.46/scripts/mod/file2alias.c linux-2.6.32.46/scripts/mod/file2alias.c
22735 +--- linux-2.6.32.46/scripts/mod/file2alias.c 2011-03-27 14:31:47.000000000 -0400
22736 ++++ linux-2.6.32.46/scripts/mod/file2alias.c 2011-10-06 09:37:14.000000000 -0400
22737 @@ -72,7 +72,7 @@ static void device_id_check(const char *
22738 unsigned long size, unsigned long id_size,
22739 void *symval)
22740 @@ -79058,9 +79145,9 @@ diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/
22741
22742 sprintf(alias, "dmi*");
22743
22744 -diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/modpost.c
22745 ---- linux-2.6.32.48/scripts/mod/modpost.c 2011-11-12 12:44:30.000000000 -0500
22746 -+++ linux-2.6.32.48/scripts/mod/modpost.c 2011-11-12 12:46:53.000000000 -0500
22747 +diff -urNp linux-2.6.32.46/scripts/mod/modpost.c linux-2.6.32.46/scripts/mod/modpost.c
22748 +--- linux-2.6.32.46/scripts/mod/modpost.c 2011-03-27 14:31:47.000000000 -0400
22749 ++++ linux-2.6.32.46/scripts/mod/modpost.c 2011-07-06 19:53:33.000000000 -0400
22750 @@ -835,6 +835,7 @@ enum mismatch {
22751 INIT_TO_EXIT,
22752 EXIT_TO_INIT,
22753 @@ -79137,9 +79224,9 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/mod
22754 goto close_write;
22755
22756 tmp = NOFAIL(malloc(b->pos));
22757 -diff -urNp linux-2.6.32.48/scripts/mod/modpost.h linux-2.6.32.48/scripts/mod/modpost.h
22758 ---- linux-2.6.32.48/scripts/mod/modpost.h 2009-12-02 22:51:21.000000000 -0500
22759 -+++ linux-2.6.32.48/scripts/mod/modpost.h 2011-11-12 12:46:53.000000000 -0500
22760 +diff -urNp linux-2.6.32.46/scripts/mod/modpost.h linux-2.6.32.46/scripts/mod/modpost.h
22761 +--- linux-2.6.32.46/scripts/mod/modpost.h 2011-03-27 14:31:47.000000000 -0400
22762 ++++ linux-2.6.32.46/scripts/mod/modpost.h 2011-04-17 15:56:46.000000000 -0400
22763 @@ -92,15 +92,15 @@ void *do_nofail(void *ptr, const char *e
22764
22765 struct buffer {
22766 @@ -79159,9 +79246,9 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.h linux-2.6.32.48/scripts/mod/mod
22767
22768 struct module {
22769 struct module *next;
22770 -diff -urNp linux-2.6.32.48/scripts/mod/sumversion.c linux-2.6.32.48/scripts/mod/sumversion.c
22771 ---- linux-2.6.32.48/scripts/mod/sumversion.c 2009-12-02 22:51:21.000000000 -0500
22772 -+++ linux-2.6.32.48/scripts/mod/sumversion.c 2011-11-12 12:46:53.000000000 -0500
22773 +diff -urNp linux-2.6.32.46/scripts/mod/sumversion.c linux-2.6.32.46/scripts/mod/sumversion.c
22774 +--- linux-2.6.32.46/scripts/mod/sumversion.c 2011-03-27 14:31:47.000000000 -0400
22775 ++++ linux-2.6.32.46/scripts/mod/sumversion.c 2011-04-17 15:56:46.000000000 -0400
22776 @@ -455,7 +455,7 @@ static void write_version(const char *fi
22777 goto out;
22778 }
22779 @@ -79171,9 +79258,9 @@ diff -urNp linux-2.6.32.48/scripts/mod/sumversion.c linux-2.6.32.48/scripts/mod/
22780 warn("writing sum in %s failed: %s\n",
22781 filename, strerror(errno));
22782 goto out;
22783 -diff -urNp linux-2.6.32.48/scripts/package/mkspec linux-2.6.32.48/scripts/package/mkspec
22784 ---- linux-2.6.32.48/scripts/package/mkspec 2009-12-02 22:51:21.000000000 -0500
22785 -+++ linux-2.6.32.48/scripts/package/mkspec 2011-11-12 12:46:53.000000000 -0500
22786 +diff -urNp linux-2.6.32.46/scripts/package/mkspec linux-2.6.32.46/scripts/package/mkspec
22787 +--- linux-2.6.32.46/scripts/package/mkspec 2011-03-27 14:31:47.000000000 -0400
22788 ++++ linux-2.6.32.46/scripts/package/mkspec 2011-07-19 18:19:12.000000000 -0400
22789 @@ -70,7 +70,7 @@ echo 'mkdir -p $RPM_BUILD_ROOT/boot $RPM
22790 echo 'mkdir -p $RPM_BUILD_ROOT/lib/firmware'
22791 echo "%endif"
22792 @@ -79183,9 +79270,9 @@ diff -urNp linux-2.6.32.48/scripts/package/mkspec linux-2.6.32.48/scripts/packag
22793 echo "%ifarch ia64"
22794 echo 'cp $KBUILD_IMAGE $RPM_BUILD_ROOT'"/boot/efi/vmlinuz-$KERNELRELEASE"
22795 echo 'ln -s '"efi/vmlinuz-$KERNELRELEASE" '$RPM_BUILD_ROOT'"/boot/"
22796 -diff -urNp linux-2.6.32.48/scripts/pnmtologo.c linux-2.6.32.48/scripts/pnmtologo.c
22797 ---- linux-2.6.32.48/scripts/pnmtologo.c 2009-12-02 22:51:21.000000000 -0500
22798 -+++ linux-2.6.32.48/scripts/pnmtologo.c 2011-11-12 12:46:53.000000000 -0500
22799 +diff -urNp linux-2.6.32.46/scripts/pnmtologo.c linux-2.6.32.46/scripts/pnmtologo.c
22800 +--- linux-2.6.32.46/scripts/pnmtologo.c 2011-03-27 14:31:47.000000000 -0400
22801 ++++ linux-2.6.32.46/scripts/pnmtologo.c 2011-04-17 15:56:46.000000000 -0400
22802 @@ -237,14 +237,14 @@ static void write_header(void)
22803 fprintf(out, " * Linux logo %s\n", logoname);
22804 fputs(" */\n\n", out);
22805 @@ -79212,9 +79299,9 @@ diff -urNp linux-2.6.32.48/scripts/pnmtologo.c linux-2.6.32.48/scripts/pnmtologo
22806 logoname);
22807 write_hex_cnt = 0;
22808 for (i = 0; i < logo_clutsize; i++) {
22809 -diff -urNp linux-2.6.32.48/scripts/tags.sh linux-2.6.32.48/scripts/tags.sh
22810 ---- linux-2.6.32.48/scripts/tags.sh 2009-12-02 22:51:21.000000000 -0500
22811 -+++ linux-2.6.32.48/scripts/tags.sh 2011-11-12 12:46:53.000000000 -0500
22812 +diff -urNp linux-2.6.32.46/scripts/tags.sh linux-2.6.32.46/scripts/tags.sh
22813 +--- linux-2.6.32.46/scripts/tags.sh 2011-03-27 14:31:47.000000000 -0400
22814 ++++ linux-2.6.32.46/scripts/tags.sh 2011-06-07 18:06:04.000000000 -0400
22815 @@ -93,6 +93,11 @@ docscope()
22816 cscope -b -f cscope.out
22817 }
22818 @@ -79238,9 +79325,9 @@ diff -urNp linux-2.6.32.48/scripts/tags.sh linux-2.6.32.48/scripts/tags.sh
22819 "tags")
22820 rm -f tags
22821 xtags ctags
22822 -diff -urNp linux-2.6.32.48/security/capability.c linux-2.6.32.48/security/capability.c
22823 ---- linux-2.6.32.48/security/capability.c 2009-12-02 22:51:21.000000000 -0500
22824 -+++ linux-2.6.32.48/security/capability.c 2011-11-12 12:46:53.000000000 -0500
22825 +diff -urNp linux-2.6.32.46/security/capability.c linux-2.6.32.46/security/capability.c
22826 +--- linux-2.6.32.46/security/capability.c 2011-03-27 14:31:47.000000000 -0400
22827 ++++ linux-2.6.32.46/security/capability.c 2011-04-17 15:56:46.000000000 -0400
22828 @@ -890,7 +890,7 @@ static void cap_audit_rule_free(void *ls
22829 }
22830 #endif /* CONFIG_AUDIT */
22831 @@ -79250,9 +79337,9 @@ diff -urNp linux-2.6.32.48/security/capability.c linux-2.6.32.48/security/capabi
22832 .name = "default",
22833 };
22834
22835 -diff -urNp linux-2.6.32.48/security/commoncap.c linux-2.6.32.48/security/commoncap.c
22836 ---- linux-2.6.32.48/security/commoncap.c 2009-12-02 22:51:21.000000000 -0500
22837 -+++ linux-2.6.32.48/security/commoncap.c 2011-11-12 12:46:53.000000000 -0500
22838 +diff -urNp linux-2.6.32.46/security/commoncap.c linux-2.6.32.46/security/commoncap.c
22839 +--- linux-2.6.32.46/security/commoncap.c 2011-03-27 14:31:47.000000000 -0400
22840 ++++ linux-2.6.32.46/security/commoncap.c 2011-08-17 19:22:13.000000000 -0400
22841 @@ -27,7 +27,7 @@
22842 #include <linux/sched.h>
22843 #include <linux/prctl.h>
22844 @@ -79291,9 +79378,9 @@ diff -urNp linux-2.6.32.48/security/commoncap.c linux-2.6.32.48/security/commonc
22845 if (cred->uid != 0) {
22846 if (bprm->cap_effective)
22847 return 1;
22848 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima_api.c linux-2.6.32.48/security/integrity/ima/ima_api.c
22849 ---- linux-2.6.32.48/security/integrity/ima/ima_api.c 2009-12-02 22:51:21.000000000 -0500
22850 -+++ linux-2.6.32.48/security/integrity/ima/ima_api.c 2011-11-12 12:46:53.000000000 -0500
22851 +diff -urNp linux-2.6.32.46/security/integrity/ima/ima_api.c linux-2.6.32.46/security/integrity/ima/ima_api.c
22852 +--- linux-2.6.32.46/security/integrity/ima/ima_api.c 2011-03-27 14:31:47.000000000 -0400
22853 ++++ linux-2.6.32.46/security/integrity/ima/ima_api.c 2011-04-17 15:56:46.000000000 -0400
22854 @@ -74,7 +74,7 @@ void ima_add_violation(struct inode *ino
22855 int result;
22856
22857 @@ -79303,9 +79390,9 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima_api.c linux-2.6.32.48/secu
22858
22859 entry = kmalloc(sizeof(*entry), GFP_KERNEL);
22860 if (!entry) {
22861 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima_fs.c linux-2.6.32.48/security/integrity/ima/ima_fs.c
22862 ---- linux-2.6.32.48/security/integrity/ima/ima_fs.c 2009-12-02 22:51:21.000000000 -0500
22863 -+++ linux-2.6.32.48/security/integrity/ima/ima_fs.c 2011-11-12 12:46:53.000000000 -0500
22864 +diff -urNp linux-2.6.32.46/security/integrity/ima/ima_fs.c linux-2.6.32.46/security/integrity/ima/ima_fs.c
22865 +--- linux-2.6.32.46/security/integrity/ima/ima_fs.c 2011-03-27 14:31:47.000000000 -0400
22866 ++++ linux-2.6.32.46/security/integrity/ima/ima_fs.c 2011-04-17 15:56:46.000000000 -0400
22867 @@ -27,12 +27,12 @@
22868 static int valid_policy = 1;
22869 #define TMPBUFLEN 12
22870 @@ -79321,9 +79408,9 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima_fs.c linux-2.6.32.48/secur
22871 return simple_read_from_buffer(buf, count, ppos, tmpbuf, len);
22872 }
22873
22874 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima.h linux-2.6.32.48/security/integrity/ima/ima.h
22875 ---- linux-2.6.32.48/security/integrity/ima/ima.h 2009-12-02 22:51:21.000000000 -0500
22876 -+++ linux-2.6.32.48/security/integrity/ima/ima.h 2011-11-12 12:46:53.000000000 -0500
22877 +diff -urNp linux-2.6.32.46/security/integrity/ima/ima.h linux-2.6.32.46/security/integrity/ima/ima.h
22878 +--- linux-2.6.32.46/security/integrity/ima/ima.h 2011-03-27 14:31:47.000000000 -0400
22879 ++++ linux-2.6.32.46/security/integrity/ima/ima.h 2011-04-17 15:56:46.000000000 -0400
22880 @@ -84,8 +84,8 @@ void ima_add_violation(struct inode *ino
22881 extern spinlock_t ima_queue_lock;
22882
22883 @@ -79335,9 +79422,9 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima.h linux-2.6.32.48/security
22884 struct hlist_head queue[IMA_MEASURE_HTABLE_SIZE];
22885 };
22886 extern struct ima_h_table ima_htable;
22887 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima_queue.c linux-2.6.32.48/security/integrity/ima/ima_queue.c
22888 ---- linux-2.6.32.48/security/integrity/ima/ima_queue.c 2009-12-02 22:51:21.000000000 -0500
22889 -+++ linux-2.6.32.48/security/integrity/ima/ima_queue.c 2011-11-12 12:46:53.000000000 -0500
22890 +diff -urNp linux-2.6.32.46/security/integrity/ima/ima_queue.c linux-2.6.32.46/security/integrity/ima/ima_queue.c
22891 +--- linux-2.6.32.46/security/integrity/ima/ima_queue.c 2011-03-27 14:31:47.000000000 -0400
22892 ++++ linux-2.6.32.46/security/integrity/ima/ima_queue.c 2011-04-17 15:56:46.000000000 -0400
22893 @@ -78,7 +78,7 @@ static int ima_add_digest_entry(struct i
22894 INIT_LIST_HEAD(&qe->later);
22895 list_add_tail_rcu(&qe->later, &ima_measurements);
22896 @@ -79347,9 +79434,9 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima_queue.c linux-2.6.32.48/se
22897 key = ima_hash_key(entry->digest);
22898 hlist_add_head_rcu(&qe->hnext, &ima_htable.queue[key]);
22899 return 0;
22900 -diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
22901 ---- linux-2.6.32.48/security/Kconfig 2009-12-02 22:51:21.000000000 -0500
22902 -+++ linux-2.6.32.48/security/Kconfig 2011-11-12 12:46:53.000000000 -0500
22903 +diff -urNp linux-2.6.32.46/security/Kconfig linux-2.6.32.46/security/Kconfig
22904 +--- linux-2.6.32.46/security/Kconfig 2011-03-27 14:31:47.000000000 -0400
22905 ++++ linux-2.6.32.46/security/Kconfig 2011-10-06 09:38:20.000000000 -0400
22906 @@ -4,6 +4,559 @@
22907
22908 menu "Security options"
22909 @@ -79919,9 +80006,9 @@ diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
22910 help
22911 This is the portion of low virtual memory which should be protected
22912 from userspace allocation. Keeping a user from writing to low pages
22913 -diff -urNp linux-2.6.32.48/security/keys/keyring.c linux-2.6.32.48/security/keys/keyring.c
22914 ---- linux-2.6.32.48/security/keys/keyring.c 2011-11-12 12:44:30.000000000 -0500
22915 -+++ linux-2.6.32.48/security/keys/keyring.c 2011-11-12 12:46:53.000000000 -0500
22916 +diff -urNp linux-2.6.32.46/security/keys/keyring.c linux-2.6.32.46/security/keys/keyring.c
22917 +--- linux-2.6.32.46/security/keys/keyring.c 2011-03-27 14:31:47.000000000 -0400
22918 ++++ linux-2.6.32.46/security/keys/keyring.c 2011-04-18 22:03:00.000000000 -0400
22919 @@ -214,15 +214,15 @@ static long keyring_read(const struct ke
22920 ret = -EFAULT;
22921
22922 @@ -79941,9 +80028,9 @@ diff -urNp linux-2.6.32.48/security/keys/keyring.c linux-2.6.32.48/security/keys
22923 goto error;
22924
22925 buflen -= tmp;
22926 -diff -urNp linux-2.6.32.48/security/min_addr.c linux-2.6.32.48/security/min_addr.c
22927 ---- linux-2.6.32.48/security/min_addr.c 2011-11-12 12:44:30.000000000 -0500
22928 -+++ linux-2.6.32.48/security/min_addr.c 2011-11-12 12:46:53.000000000 -0500
22929 +diff -urNp linux-2.6.32.46/security/min_addr.c linux-2.6.32.46/security/min_addr.c
22930 +--- linux-2.6.32.46/security/min_addr.c 2011-03-27 14:31:47.000000000 -0400
22931 ++++ linux-2.6.32.46/security/min_addr.c 2011-04-17 15:56:46.000000000 -0400
22932 @@ -14,6 +14,7 @@ unsigned long dac_mmap_min_addr = CONFIG
22933 */
22934 static void update_mmap_min_addr(void)
22935 @@ -79960,9 +80047,9 @@ diff -urNp linux-2.6.32.48/security/min_addr.c linux-2.6.32.48/security/min_addr
22936 }
22937
22938 /*
22939 -diff -urNp linux-2.6.32.48/security/root_plug.c linux-2.6.32.48/security/root_plug.c
22940 ---- linux-2.6.32.48/security/root_plug.c 2009-12-02 22:51:21.000000000 -0500
22941 -+++ linux-2.6.32.48/security/root_plug.c 2011-11-12 12:46:53.000000000 -0500
22942 +diff -urNp linux-2.6.32.46/security/root_plug.c linux-2.6.32.46/security/root_plug.c
22943 +--- linux-2.6.32.46/security/root_plug.c 2011-03-27 14:31:47.000000000 -0400
22944 ++++ linux-2.6.32.46/security/root_plug.c 2011-04-17 15:56:46.000000000 -0400
22945 @@ -70,7 +70,7 @@ static int rootplug_bprm_check_security
22946 return 0;
22947 }
22948 @@ -79972,9 +80059,9 @@ diff -urNp linux-2.6.32.48/security/root_plug.c linux-2.6.32.48/security/root_pl
22949 .bprm_check_security = rootplug_bprm_check_security,
22950 };
22951
22952 -diff -urNp linux-2.6.32.48/security/security.c linux-2.6.32.48/security/security.c
22953 ---- linux-2.6.32.48/security/security.c 2009-12-02 22:51:21.000000000 -0500
22954 -+++ linux-2.6.32.48/security/security.c 2011-11-12 12:46:53.000000000 -0500
22955 +diff -urNp linux-2.6.32.46/security/security.c linux-2.6.32.46/security/security.c
22956 +--- linux-2.6.32.46/security/security.c 2011-03-27 14:31:47.000000000 -0400
22957 ++++ linux-2.6.32.46/security/security.c 2011-04-17 15:56:46.000000000 -0400
22958 @@ -24,7 +24,7 @@ static __initdata char chosen_lsm[SECURI
22959 extern struct security_operations default_security_ops;
22960 extern void security_fixup_ops(struct security_operations *ops);
22961 @@ -79993,9 +80080,9 @@ diff -urNp linux-2.6.32.48/security/security.c linux-2.6.32.48/security/security
22962 {
22963 if (verify(ops)) {
22964 printk(KERN_DEBUG "%s could not verify "
22965 -diff -urNp linux-2.6.32.48/security/selinux/hooks.c linux-2.6.32.48/security/selinux/hooks.c
22966 ---- linux-2.6.32.48/security/selinux/hooks.c 2011-11-12 12:44:30.000000000 -0500
22967 -+++ linux-2.6.32.48/security/selinux/hooks.c 2011-11-12 12:46:53.000000000 -0500
22968 +diff -urNp linux-2.6.32.46/security/selinux/hooks.c linux-2.6.32.46/security/selinux/hooks.c
22969 +--- linux-2.6.32.46/security/selinux/hooks.c 2011-03-27 14:31:47.000000000 -0400
22970 ++++ linux-2.6.32.46/security/selinux/hooks.c 2011-04-17 15:56:46.000000000 -0400
22971 @@ -131,7 +131,7 @@ int selinux_enabled = 1;
22972 * Minimal support for a secondary security module,
22973 * just to allow the use of the capability module.
22974 @@ -80024,9 +80111,9 @@ diff -urNp linux-2.6.32.48/security/selinux/hooks.c linux-2.6.32.48/security/sel
22975
22976 /* Unregister netfilter hooks. */
22977 selinux_nf_ip_exit();
22978 -diff -urNp linux-2.6.32.48/security/selinux/include/xfrm.h linux-2.6.32.48/security/selinux/include/xfrm.h
22979 ---- linux-2.6.32.48/security/selinux/include/xfrm.h 2009-12-02 22:51:21.000000000 -0500
22980 -+++ linux-2.6.32.48/security/selinux/include/xfrm.h 2011-11-12 12:46:53.000000000 -0500
22981 +diff -urNp linux-2.6.32.46/security/selinux/include/xfrm.h linux-2.6.32.46/security/selinux/include/xfrm.h
22982 +--- linux-2.6.32.46/security/selinux/include/xfrm.h 2011-03-27 14:31:47.000000000 -0400
22983 ++++ linux-2.6.32.46/security/selinux/include/xfrm.h 2011-05-18 20:09:37.000000000 -0400
22984 @@ -48,7 +48,7 @@ int selinux_xfrm_decode_session(struct s
22985
22986 static inline void selinux_xfrm_notify_policyload(void)
22987 @@ -80036,9 +80123,9 @@ diff -urNp linux-2.6.32.48/security/selinux/include/xfrm.h linux-2.6.32.48/secur
22988 }
22989 #else
22990 static inline int selinux_xfrm_enabled(void)
22991 -diff -urNp linux-2.6.32.48/security/selinux/ss/services.c linux-2.6.32.48/security/selinux/ss/services.c
22992 ---- linux-2.6.32.48/security/selinux/ss/services.c 2009-12-02 22:51:21.000000000 -0500
22993 -+++ linux-2.6.32.48/security/selinux/ss/services.c 2011-11-12 12:46:53.000000000 -0500
22994 +diff -urNp linux-2.6.32.46/security/selinux/ss/services.c linux-2.6.32.46/security/selinux/ss/services.c
22995 +--- linux-2.6.32.46/security/selinux/ss/services.c 2011-03-27 14:31:47.000000000 -0400
22996 ++++ linux-2.6.32.46/security/selinux/ss/services.c 2011-05-16 21:46:57.000000000 -0400
22997 @@ -1715,6 +1715,8 @@ int security_load_policy(void *data, siz
22998 int rc = 0;
22999 struct policy_file file = { data, len }, *fp = &file;
23000 @@ -80048,9 +80135,9 @@ diff -urNp linux-2.6.32.48/security/selinux/ss/services.c linux-2.6.32.48/securi
23001 if (!ss_initialized) {
23002 avtab_cache_init();
23003 if (policydb_read(&policydb, fp)) {
23004 -diff -urNp linux-2.6.32.48/security/smack/smack_lsm.c linux-2.6.32.48/security/smack/smack_lsm.c
23005 ---- linux-2.6.32.48/security/smack/smack_lsm.c 2009-12-02 22:51:21.000000000 -0500
23006 -+++ linux-2.6.32.48/security/smack/smack_lsm.c 2011-11-12 12:46:53.000000000 -0500
23007 +diff -urNp linux-2.6.32.46/security/smack/smack_lsm.c linux-2.6.32.46/security/smack/smack_lsm.c
23008 +--- linux-2.6.32.46/security/smack/smack_lsm.c 2011-03-27 14:31:47.000000000 -0400
23009 ++++ linux-2.6.32.46/security/smack/smack_lsm.c 2011-04-17 15:56:46.000000000 -0400
23010 @@ -3073,7 +3073,7 @@ static int smack_inode_getsecctx(struct
23011 return 0;
23012 }
23013 @@ -80060,9 +80147,9 @@ diff -urNp linux-2.6.32.48/security/smack/smack_lsm.c linux-2.6.32.48/security/s
23014 .name = "smack",
23015
23016 .ptrace_access_check = smack_ptrace_access_check,
23017 -diff -urNp linux-2.6.32.48/security/tomoyo/tomoyo.c linux-2.6.32.48/security/tomoyo/tomoyo.c
23018 ---- linux-2.6.32.48/security/tomoyo/tomoyo.c 2009-12-02 22:51:21.000000000 -0500
23019 -+++ linux-2.6.32.48/security/tomoyo/tomoyo.c 2011-11-12 12:46:53.000000000 -0500
23020 +diff -urNp linux-2.6.32.46/security/tomoyo/tomoyo.c linux-2.6.32.46/security/tomoyo/tomoyo.c
23021 +--- linux-2.6.32.46/security/tomoyo/tomoyo.c 2011-03-27 14:31:47.000000000 -0400
23022 ++++ linux-2.6.32.46/security/tomoyo/tomoyo.c 2011-04-17 15:56:46.000000000 -0400
23023 @@ -275,7 +275,7 @@ static int tomoyo_dentry_open(struct fil
23024 * tomoyo_security_ops is a "struct security_operations" which is used for
23025 * registering TOMOYO.
23026 @@ -80072,9 +80159,9 @@ diff -urNp linux-2.6.32.48/security/tomoyo/tomoyo.c linux-2.6.32.48/security/tom
23027 .name = "tomoyo",
23028 .cred_alloc_blank = tomoyo_cred_alloc_blank,
23029 .cred_prepare = tomoyo_cred_prepare,
23030 -diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.c linux-2.6.32.48/sound/aoa/codecs/onyx.c
23031 ---- linux-2.6.32.48/sound/aoa/codecs/onyx.c 2009-12-02 22:51:21.000000000 -0500
23032 -+++ linux-2.6.32.48/sound/aoa/codecs/onyx.c 2011-11-12 12:46:53.000000000 -0500
23033 +diff -urNp linux-2.6.32.46/sound/aoa/codecs/onyx.c linux-2.6.32.46/sound/aoa/codecs/onyx.c
23034 +--- linux-2.6.32.46/sound/aoa/codecs/onyx.c 2011-03-27 14:31:47.000000000 -0400
23035 ++++ linux-2.6.32.46/sound/aoa/codecs/onyx.c 2011-04-17 15:56:46.000000000 -0400
23036 @@ -53,7 +53,7 @@ struct onyx {
23037 spdif_locked:1,
23038 analog_locked:1,
23039 @@ -80103,9 +80190,9 @@ diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.c linux-2.6.32.48/sound/aoa/cod
23040 onyx->spdif_locked = onyx->analog_locked = 0;
23041 mutex_unlock(&onyx->mutex);
23042
23043 -diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.h linux-2.6.32.48/sound/aoa/codecs/onyx.h
23044 ---- linux-2.6.32.48/sound/aoa/codecs/onyx.h 2009-12-02 22:51:21.000000000 -0500
23045 -+++ linux-2.6.32.48/sound/aoa/codecs/onyx.h 2011-11-12 12:46:53.000000000 -0500
23046 +diff -urNp linux-2.6.32.46/sound/aoa/codecs/onyx.h linux-2.6.32.46/sound/aoa/codecs/onyx.h
23047 +--- linux-2.6.32.46/sound/aoa/codecs/onyx.h 2011-03-27 14:31:47.000000000 -0400
23048 ++++ linux-2.6.32.46/sound/aoa/codecs/onyx.h 2011-04-17 15:56:46.000000000 -0400
23049 @@ -11,6 +11,7 @@
23050 #include <linux/i2c.h>
23051 #include <asm/pmac_low_i2c.h>
23052 @@ -80114,9 +80201,9 @@ diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.h linux-2.6.32.48/sound/aoa/cod
23053
23054 /* PCM3052 register definitions */
23055
23056 -diff -urNp linux-2.6.32.48/sound/core/oss/pcm_oss.c linux-2.6.32.48/sound/core/oss/pcm_oss.c
23057 ---- linux-2.6.32.48/sound/core/oss/pcm_oss.c 2009-12-02 22:51:21.000000000 -0500
23058 -+++ linux-2.6.32.48/sound/core/oss/pcm_oss.c 2011-11-12 12:46:53.000000000 -0500
23059 +diff -urNp linux-2.6.32.46/sound/core/oss/pcm_oss.c linux-2.6.32.46/sound/core/oss/pcm_oss.c
23060 +--- linux-2.6.32.46/sound/core/oss/pcm_oss.c 2011-03-27 14:31:47.000000000 -0400
23061 ++++ linux-2.6.32.46/sound/core/oss/pcm_oss.c 2011-10-06 09:37:16.000000000 -0400
23062 @@ -1395,7 +1395,7 @@ static ssize_t snd_pcm_oss_write1(struct
23063 }
23064 } else {
23065 @@ -80135,9 +80222,9 @@ diff -urNp linux-2.6.32.48/sound/core/oss/pcm_oss.c linux-2.6.32.48/sound/core/o
23066 runtime->oss.period_bytes, 0);
23067 if (tmp <= 0)
23068 goto err;
23069 -diff -urNp linux-2.6.32.48/sound/core/pcm_compat.c linux-2.6.32.48/sound/core/pcm_compat.c
23070 ---- linux-2.6.32.48/sound/core/pcm_compat.c 2011-11-12 12:44:30.000000000 -0500
23071 -+++ linux-2.6.32.48/sound/core/pcm_compat.c 2011-11-12 12:46:53.000000000 -0500
23072 +diff -urNp linux-2.6.32.46/sound/core/pcm_compat.c linux-2.6.32.46/sound/core/pcm_compat.c
23073 +--- linux-2.6.32.46/sound/core/pcm_compat.c 2011-08-09 18:35:30.000000000 -0400
23074 ++++ linux-2.6.32.46/sound/core/pcm_compat.c 2011-10-06 09:37:16.000000000 -0400
23075 @@ -30,7 +30,7 @@ static int snd_pcm_ioctl_delay_compat(st
23076 int err;
23077
23078 @@ -80147,9 +80234,9 @@ diff -urNp linux-2.6.32.48/sound/core/pcm_compat.c linux-2.6.32.48/sound/core/pc
23079 snd_leave_user(fs);
23080 if (err < 0)
23081 return err;
23082 -diff -urNp linux-2.6.32.48/sound/core/pcm_native.c linux-2.6.32.48/sound/core/pcm_native.c
23083 ---- linux-2.6.32.48/sound/core/pcm_native.c 2011-11-12 12:44:30.000000000 -0500
23084 -+++ linux-2.6.32.48/sound/core/pcm_native.c 2011-11-12 12:46:53.000000000 -0500
23085 +diff -urNp linux-2.6.32.46/sound/core/pcm_native.c linux-2.6.32.46/sound/core/pcm_native.c
23086 +--- linux-2.6.32.46/sound/core/pcm_native.c 2011-03-27 14:31:47.000000000 -0400
23087 ++++ linux-2.6.32.46/sound/core/pcm_native.c 2011-10-06 09:37:16.000000000 -0400
23088 @@ -2747,11 +2747,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_
23089 switch (substream->stream) {
23090 case SNDRV_PCM_STREAM_PLAYBACK:
23091 @@ -80164,9 +80251,9 @@ diff -urNp linux-2.6.32.48/sound/core/pcm_native.c linux-2.6.32.48/sound/core/pc
23092 break;
23093 default:
23094 result = -EINVAL;
23095 -diff -urNp linux-2.6.32.48/sound/core/seq/seq_device.c linux-2.6.32.48/sound/core/seq/seq_device.c
23096 ---- linux-2.6.32.48/sound/core/seq/seq_device.c 2009-12-02 22:51:21.000000000 -0500
23097 -+++ linux-2.6.32.48/sound/core/seq/seq_device.c 2011-11-12 12:46:53.000000000 -0500
23098 +diff -urNp linux-2.6.32.46/sound/core/seq/seq_device.c linux-2.6.32.46/sound/core/seq/seq_device.c
23099 +--- linux-2.6.32.46/sound/core/seq/seq_device.c 2011-03-27 14:31:47.000000000 -0400
23100 ++++ linux-2.6.32.46/sound/core/seq/seq_device.c 2011-08-05 20:33:55.000000000 -0400
23101 @@ -63,7 +63,7 @@ struct ops_list {
23102 int argsize; /* argument size */
23103
23104 @@ -80203,9 +80290,9 @@ diff -urNp linux-2.6.32.48/sound/core/seq/seq_device.c linux-2.6.32.48/sound/cor
23105 dev->status = SNDRV_SEQ_DEVICE_FREE;
23106 dev->driver_data = NULL;
23107 ops->num_init_devices--;
23108 -diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/mts64.c
23109 ---- linux-2.6.32.48/sound/drivers/mts64.c 2009-12-02 22:51:21.000000000 -0500
23110 -+++ linux-2.6.32.48/sound/drivers/mts64.c 2011-11-12 12:46:53.000000000 -0500
23111 +diff -urNp linux-2.6.32.46/sound/drivers/mts64.c linux-2.6.32.46/sound/drivers/mts64.c
23112 +--- linux-2.6.32.46/sound/drivers/mts64.c 2011-03-27 14:31:47.000000000 -0400
23113 ++++ linux-2.6.32.46/sound/drivers/mts64.c 2011-04-17 15:56:46.000000000 -0400
23114 @@ -27,6 +27,7 @@
23115 #include <sound/initval.h>
23116 #include <sound/rawmidi.h>
23117 @@ -80262,9 +80349,9 @@ diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/m
23118
23119 return 0;
23120 }
23121 -diff -urNp linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c
23122 ---- linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c 2009-12-02 22:51:21.000000000 -0500
23123 -+++ linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c 2011-11-12 12:46:53.000000000 -0500
23124 +diff -urNp linux-2.6.32.46/sound/drivers/opl4/opl4_lib.c linux-2.6.32.46/sound/drivers/opl4/opl4_lib.c
23125 +--- linux-2.6.32.46/sound/drivers/opl4/opl4_lib.c 2011-03-27 14:31:47.000000000 -0400
23126 ++++ linux-2.6.32.46/sound/drivers/opl4/opl4_lib.c 2011-08-05 20:33:55.000000000 -0400
23127 @@ -27,7 +27,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@
23128 MODULE_DESCRIPTION("OPL4 driver");
23129 MODULE_LICENSE("GPL");
23130 @@ -80274,9 +80361,9 @@ diff -urNp linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c linux-2.6.32.48/sound/d
23131 {
23132 int timeout = 10;
23133 while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0)
23134 -diff -urNp linux-2.6.32.48/sound/drivers/portman2x4.c linux-2.6.32.48/sound/drivers/portman2x4.c
23135 ---- linux-2.6.32.48/sound/drivers/portman2x4.c 2009-12-02 22:51:21.000000000 -0500
23136 -+++ linux-2.6.32.48/sound/drivers/portman2x4.c 2011-11-12 12:46:53.000000000 -0500
23137 +diff -urNp linux-2.6.32.46/sound/drivers/portman2x4.c linux-2.6.32.46/sound/drivers/portman2x4.c
23138 +--- linux-2.6.32.46/sound/drivers/portman2x4.c 2011-03-27 14:31:47.000000000 -0400
23139 ++++ linux-2.6.32.46/sound/drivers/portman2x4.c 2011-04-17 15:56:46.000000000 -0400
23140 @@ -46,6 +46,7 @@
23141 #include <sound/initval.h>
23142 #include <sound/rawmidi.h>
23143 @@ -80294,9 +80381,9 @@ diff -urNp linux-2.6.32.48/sound/drivers/portman2x4.c linux-2.6.32.48/sound/driv
23144 int mode[PORTMAN_NUM_INPUT_PORTS];
23145 struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS];
23146 };
23147 -diff -urNp linux-2.6.32.48/sound/isa/cmi8330.c linux-2.6.32.48/sound/isa/cmi8330.c
23148 ---- linux-2.6.32.48/sound/isa/cmi8330.c 2009-12-02 22:51:21.000000000 -0500
23149 -+++ linux-2.6.32.48/sound/isa/cmi8330.c 2011-11-12 12:46:53.000000000 -0500
23150 +diff -urNp linux-2.6.32.46/sound/isa/cmi8330.c linux-2.6.32.46/sound/isa/cmi8330.c
23151 +--- linux-2.6.32.46/sound/isa/cmi8330.c 2011-03-27 14:31:47.000000000 -0400
23152 ++++ linux-2.6.32.46/sound/isa/cmi8330.c 2011-08-23 21:22:32.000000000 -0400
23153 @@ -173,7 +173,7 @@ struct snd_cmi8330 {
23154
23155 struct snd_pcm *pcm;
23156 @@ -80306,9 +80393,9 @@ diff -urNp linux-2.6.32.48/sound/isa/cmi8330.c linux-2.6.32.48/sound/isa/cmi8330
23157 snd_pcm_open_callback_t open;
23158 void *private_data; /* sb or wss */
23159 } streams[2];
23160 -diff -urNp linux-2.6.32.48/sound/oss/sb_audio.c linux-2.6.32.48/sound/oss/sb_audio.c
23161 ---- linux-2.6.32.48/sound/oss/sb_audio.c 2009-12-02 22:51:21.000000000 -0500
23162 -+++ linux-2.6.32.48/sound/oss/sb_audio.c 2011-11-12 12:46:53.000000000 -0500
23163 +diff -urNp linux-2.6.32.46/sound/oss/sb_audio.c linux-2.6.32.46/sound/oss/sb_audio.c
23164 +--- linux-2.6.32.46/sound/oss/sb_audio.c 2011-03-27 14:31:47.000000000 -0400
23165 ++++ linux-2.6.32.46/sound/oss/sb_audio.c 2011-04-17 15:56:46.000000000 -0400
23166 @@ -901,7 +901,7 @@ sb16_copy_from_user(int dev,
23167 buf16 = (signed short *)(localbuf + localoffs);
23168 while (c)
23169 @@ -80318,9 +80405,9 @@ diff -urNp linux-2.6.32.48/sound/oss/sb_audio.c linux-2.6.32.48/sound/oss/sb_aud
23170 if (copy_from_user(lbuf8,
23171 userbuf+useroffs + p,
23172 locallen))
23173 -diff -urNp linux-2.6.32.48/sound/oss/swarm_cs4297a.c linux-2.6.32.48/sound/oss/swarm_cs4297a.c
23174 ---- linux-2.6.32.48/sound/oss/swarm_cs4297a.c 2009-12-02 22:51:21.000000000 -0500
23175 -+++ linux-2.6.32.48/sound/oss/swarm_cs4297a.c 2011-11-12 12:46:53.000000000 -0500
23176 +diff -urNp linux-2.6.32.46/sound/oss/swarm_cs4297a.c linux-2.6.32.46/sound/oss/swarm_cs4297a.c
23177 +--- linux-2.6.32.46/sound/oss/swarm_cs4297a.c 2011-03-27 14:31:47.000000000 -0400
23178 ++++ linux-2.6.32.46/sound/oss/swarm_cs4297a.c 2011-04-17 15:56:46.000000000 -0400
23179 @@ -2577,7 +2577,6 @@ static int __init cs4297a_init(void)
23180 {
23181 struct cs4297a_state *s;
23182 @@ -80355,9 +80442,9 @@ diff -urNp linux-2.6.32.48/sound/oss/swarm_cs4297a.c linux-2.6.32.48/sound/oss/s
23183
23184 list_add(&s->list, &cs4297a_devs);
23185
23186 -diff -urNp linux-2.6.32.48/sound/pci/ac97/ac97_codec.c linux-2.6.32.48/sound/pci/ac97/ac97_codec.c
23187 ---- linux-2.6.32.48/sound/pci/ac97/ac97_codec.c 2009-12-02 22:51:21.000000000 -0500
23188 -+++ linux-2.6.32.48/sound/pci/ac97/ac97_codec.c 2011-11-12 12:46:53.000000000 -0500
23189 +diff -urNp linux-2.6.32.46/sound/pci/ac97/ac97_codec.c linux-2.6.32.46/sound/pci/ac97/ac97_codec.c
23190 +--- linux-2.6.32.46/sound/pci/ac97/ac97_codec.c 2011-03-27 14:31:47.000000000 -0400
23191 ++++ linux-2.6.32.46/sound/pci/ac97/ac97_codec.c 2011-04-17 15:56:46.000000000 -0400
23192 @@ -1952,7 +1952,7 @@ static int snd_ac97_dev_disconnect(struc
23193 }
23194
23195 @@ -80367,9 +80454,9 @@ diff -urNp linux-2.6.32.48/sound/pci/ac97/ac97_codec.c linux-2.6.32.48/sound/pci
23196
23197 #ifdef CONFIG_SND_AC97_POWER_SAVE
23198 static void do_update_power(struct work_struct *work)
23199 -diff -urNp linux-2.6.32.48/sound/pci/ac97/ac97_patch.c linux-2.6.32.48/sound/pci/ac97/ac97_patch.c
23200 ---- linux-2.6.32.48/sound/pci/ac97/ac97_patch.c 2011-11-12 12:44:30.000000000 -0500
23201 -+++ linux-2.6.32.48/sound/pci/ac97/ac97_patch.c 2011-11-12 12:46:53.000000000 -0500
23202 +diff -urNp linux-2.6.32.46/sound/pci/ac97/ac97_patch.c linux-2.6.32.46/sound/pci/ac97/ac97_patch.c
23203 +--- linux-2.6.32.46/sound/pci/ac97/ac97_patch.c 2011-08-29 22:24:44.000000000 -0400
23204 ++++ linux-2.6.32.46/sound/pci/ac97/ac97_patch.c 2011-08-29 22:25:07.000000000 -0400
23205 @@ -371,7 +371,7 @@ static int patch_yamaha_ymf743_build_spd
23206 return 0;
23207 }
23208 @@ -80658,9 +80745,9 @@ diff -urNp linux-2.6.32.48/sound/pci/ac97/ac97_patch.c linux-2.6.32.48/sound/pci
23209 .build_specific = patch_ucb1400_specific,
23210 };
23211
23212 -diff -urNp linux-2.6.32.48/sound/pci/hda/hda_codec.h linux-2.6.32.48/sound/pci/hda/hda_codec.h
23213 ---- linux-2.6.32.48/sound/pci/hda/hda_codec.h 2009-12-02 22:51:21.000000000 -0500
23214 -+++ linux-2.6.32.48/sound/pci/hda/hda_codec.h 2011-11-12 12:46:53.000000000 -0500
23215 +diff -urNp linux-2.6.32.46/sound/pci/hda/hda_codec.h linux-2.6.32.46/sound/pci/hda/hda_codec.h
23216 +--- linux-2.6.32.46/sound/pci/hda/hda_codec.h 2011-03-27 14:31:47.000000000 -0400
23217 ++++ linux-2.6.32.46/sound/pci/hda/hda_codec.h 2011-08-23 21:22:32.000000000 -0400
23218 @@ -580,7 +580,7 @@ struct hda_bus_ops {
23219 /* notify power-up/down from codec to controller */
23220 void (*pm_notify)(struct hda_bus *bus);
23221 @@ -80696,9 +80783,9 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/hda_codec.h linux-2.6.32.48/sound/pci/h
23222
23223 /* PCM to create, set by patch_ops.build_pcms callback */
23224 unsigned int num_pcms;
23225 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c
23226 ---- linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c 2009-12-02 22:51:21.000000000 -0500
23227 -+++ linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c 2011-11-12 12:46:53.000000000 -0500
23228 +diff -urNp linux-2.6.32.46/sound/pci/hda/patch_atihdmi.c linux-2.6.32.46/sound/pci/hda/patch_atihdmi.c
23229 +--- linux-2.6.32.46/sound/pci/hda/patch_atihdmi.c 2011-03-27 14:31:47.000000000 -0400
23230 ++++ linux-2.6.32.46/sound/pci/hda/patch_atihdmi.c 2011-08-05 20:33:55.000000000 -0400
23231 @@ -177,7 +177,7 @@ static int patch_atihdmi(struct hda_code
23232 */
23233 spec->multiout.dig_out_nid = CVT_NID;
23234 @@ -80708,9 +80795,9 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c linux-2.6.32.48/sound/p
23235
23236 return 0;
23237 }
23238 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c
23239 ---- linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c 2011-11-12 12:44:30.000000000 -0500
23240 -+++ linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c 2011-11-12 12:46:53.000000000 -0500
23241 +diff -urNp linux-2.6.32.46/sound/pci/hda/patch_intelhdmi.c linux-2.6.32.46/sound/pci/hda/patch_intelhdmi.c
23242 +--- linux-2.6.32.46/sound/pci/hda/patch_intelhdmi.c 2011-03-27 14:31:47.000000000 -0400
23243 ++++ linux-2.6.32.46/sound/pci/hda/patch_intelhdmi.c 2011-08-05 20:33:55.000000000 -0400
23244 @@ -511,10 +511,10 @@ static void hdmi_non_intrinsic_event(str
23245 cp_ready);
23246
23247 @@ -80735,9 +80822,9 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c linux-2.6.32.48/sound
23248
23249 snd_hda_eld_proc_new(codec, &spec->sink_eld);
23250
23251 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c
23252 ---- linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c 2009-12-02 22:51:21.000000000 -0500
23253 -+++ linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c 2011-11-12 12:46:53.000000000 -0500
23254 +diff -urNp linux-2.6.32.46/sound/pci/hda/patch_nvhdmi.c linux-2.6.32.46/sound/pci/hda/patch_nvhdmi.c
23255 +--- linux-2.6.32.46/sound/pci/hda/patch_nvhdmi.c 2011-03-27 14:31:47.000000000 -0400
23256 ++++ linux-2.6.32.46/sound/pci/hda/patch_nvhdmi.c 2011-08-05 20:33:55.000000000 -0400
23257 @@ -367,7 +367,7 @@ static int patch_nvhdmi_8ch(struct hda_c
23258 spec->multiout.max_channels = 8;
23259 spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
23260 @@ -80756,9 +80843,9 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c linux-2.6.32.48/sound/pc
23261
23262 return 0;
23263 }
23264 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c
23265 ---- linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c 2011-11-12 12:44:30.000000000 -0500
23266 -+++ linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c 2011-11-12 12:46:53.000000000 -0500
23267 +diff -urNp linux-2.6.32.46/sound/pci/hda/patch_sigmatel.c linux-2.6.32.46/sound/pci/hda/patch_sigmatel.c
23268 +--- linux-2.6.32.46/sound/pci/hda/patch_sigmatel.c 2011-06-25 12:55:35.000000000 -0400
23269 ++++ linux-2.6.32.46/sound/pci/hda/patch_sigmatel.c 2011-08-23 21:22:32.000000000 -0400
23270 @@ -5220,7 +5220,7 @@ again:
23271 snd_hda_codec_write_cache(codec, nid, 0,
23272 AC_VERB_SET_CONNECT_SEL, num_dacs);
23273 @@ -80777,9 +80864,9 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c linux-2.6.32.48/sound/
23274 spec->num_pins = STAC92HD71BXX_NUM_PINS;
23275 switch (codec->vendor_id) {
23276 case 0x111d76b6:
23277 -diff -urNp linux-2.6.32.48/sound/pci/ice1712/ice1712.h linux-2.6.32.48/sound/pci/ice1712/ice1712.h
23278 ---- linux-2.6.32.48/sound/pci/ice1712/ice1712.h 2009-12-02 22:51:21.000000000 -0500
23279 -+++ linux-2.6.32.48/sound/pci/ice1712/ice1712.h 2011-11-12 12:46:53.000000000 -0500
23280 +diff -urNp linux-2.6.32.46/sound/pci/ice1712/ice1712.h linux-2.6.32.46/sound/pci/ice1712/ice1712.h
23281 +--- linux-2.6.32.46/sound/pci/ice1712/ice1712.h 2011-03-27 14:31:47.000000000 -0400
23282 ++++ linux-2.6.32.46/sound/pci/ice1712/ice1712.h 2011-08-05 20:33:55.000000000 -0400
23283 @@ -269,7 +269,7 @@ struct snd_ak4xxx_private {
23284 unsigned int mask_flags; /* total mask bits */
23285 struct snd_akm4xxx_ops {
23286 @@ -80798,9 +80885,9 @@ diff -urNp linux-2.6.32.48/sound/pci/ice1712/ice1712.h linux-2.6.32.48/sound/pci
23287 };
23288
23289
23290 -diff -urNp linux-2.6.32.48/sound/pci/intel8x0m.c linux-2.6.32.48/sound/pci/intel8x0m.c
23291 ---- linux-2.6.32.48/sound/pci/intel8x0m.c 2009-12-02 22:51:21.000000000 -0500
23292 -+++ linux-2.6.32.48/sound/pci/intel8x0m.c 2011-11-12 12:46:53.000000000 -0500
23293 +diff -urNp linux-2.6.32.46/sound/pci/intel8x0m.c linux-2.6.32.46/sound/pci/intel8x0m.c
23294 +--- linux-2.6.32.46/sound/pci/intel8x0m.c 2011-03-27 14:31:47.000000000 -0400
23295 ++++ linux-2.6.32.46/sound/pci/intel8x0m.c 2011-04-23 12:56:12.000000000 -0400
23296 @@ -1264,7 +1264,7 @@ static struct shortname_table {
23297 { 0x5455, "ALi M5455" },
23298 { 0x746d, "AMD AMD8111" },
23299 @@ -80810,9 +80897,9 @@ diff -urNp linux-2.6.32.48/sound/pci/intel8x0m.c linux-2.6.32.48/sound/pci/intel
23300 };
23301
23302 static int __devinit snd_intel8x0m_probe(struct pci_dev *pci,
23303 -diff -urNp linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c
23304 ---- linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c 2009-12-02 22:51:21.000000000 -0500
23305 -+++ linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c 2011-11-12 12:46:53.000000000 -0500
23306 +diff -urNp linux-2.6.32.46/sound/pci/ymfpci/ymfpci_main.c linux-2.6.32.46/sound/pci/ymfpci/ymfpci_main.c
23307 +--- linux-2.6.32.46/sound/pci/ymfpci/ymfpci_main.c 2011-03-27 14:31:47.000000000 -0400
23308 ++++ linux-2.6.32.46/sound/pci/ymfpci/ymfpci_main.c 2011-05-04 17:56:28.000000000 -0400
23309 @@ -202,8 +202,8 @@ static void snd_ymfpci_hw_stop(struct sn
23310 if ((snd_ymfpci_readl(chip, YDSXGR_STATUS) & 2) == 0)
23311 break;
23312 @@ -80853,9 +80940,9 @@ diff -urNp linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c linux-2.6.32.48/sound/
23313 chip->card = card;
23314 chip->pci = pci;
23315 chip->irq = -1;
23316 -diff -urNp linux-2.6.32.48/sound/soc/soc-core.c linux-2.6.32.48/sound/soc/soc-core.c
23317 ---- linux-2.6.32.48/sound/soc/soc-core.c 2009-12-02 22:51:21.000000000 -0500
23318 -+++ linux-2.6.32.48/sound/soc/soc-core.c 2011-11-12 12:46:53.000000000 -0500
23319 +diff -urNp linux-2.6.32.46/sound/soc/soc-core.c linux-2.6.32.46/sound/soc/soc-core.c
23320 +--- linux-2.6.32.46/sound/soc/soc-core.c 2011-03-27 14:31:47.000000000 -0400
23321 ++++ linux-2.6.32.46/sound/soc/soc-core.c 2011-08-23 21:22:32.000000000 -0400
23322 @@ -609,7 +609,7 @@ static int soc_pcm_trigger(struct snd_pc
23323 }
23324
23325 @@ -80865,9 +80952,9 @@ diff -urNp linux-2.6.32.48/sound/soc/soc-core.c linux-2.6.32.48/sound/soc/soc-co
23326 .open = soc_pcm_open,
23327 .close = soc_codec_close,
23328 .hw_params = soc_pcm_hw_params,
23329 -diff -urNp linux-2.6.32.48/sound/usb/usbaudio.c linux-2.6.32.48/sound/usb/usbaudio.c
23330 ---- linux-2.6.32.48/sound/usb/usbaudio.c 2011-11-12 12:44:30.000000000 -0500
23331 -+++ linux-2.6.32.48/sound/usb/usbaudio.c 2011-11-12 12:46:53.000000000 -0500
23332 +diff -urNp linux-2.6.32.46/sound/usb/usbaudio.c linux-2.6.32.46/sound/usb/usbaudio.c
23333 +--- linux-2.6.32.46/sound/usb/usbaudio.c 2011-03-27 14:31:47.000000000 -0400
23334 ++++ linux-2.6.32.46/sound/usb/usbaudio.c 2011-08-05 20:33:55.000000000 -0400
23335 @@ -963,12 +963,12 @@ static int snd_usb_pcm_playback_trigger(
23336 switch (cmd) {
23337 case SNDRV_PCM_TRIGGER_START:
23338 @@ -80929,9 +81016,9 @@ diff -urNp linux-2.6.32.48/sound/usb/usbaudio.c linux-2.6.32.48/sound/usb/usbaud
23339 break;
23340 }
23341 }
23342 -diff -urNp linux-2.6.32.48/tools/gcc/checker_plugin.c linux-2.6.32.48/tools/gcc/checker_plugin.c
23343 ---- linux-2.6.32.48/tools/gcc/checker_plugin.c 1969-12-31 19:00:00.000000000 -0500
23344 -+++ linux-2.6.32.48/tools/gcc/checker_plugin.c 2011-11-12 12:46:53.000000000 -0500
23345 +diff -urNp linux-2.6.32.46/tools/gcc/checker_plugin.c linux-2.6.32.46/tools/gcc/checker_plugin.c
23346 +--- linux-2.6.32.46/tools/gcc/checker_plugin.c 1969-12-31 19:00:00.000000000 -0500
23347 ++++ linux-2.6.32.46/tools/gcc/checker_plugin.c 2011-10-06 09:37:16.000000000 -0400
23348 @@ -0,0 +1,169 @@
23349 +/*
23350 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
23351 @@ -81102,9 +81189,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/checker_plugin.c linux-2.6.32.48/tools/gcc/
23352 +
23353 + return 0;
23354 +}
23355 -diff -urNp linux-2.6.32.48/tools/gcc/constify_plugin.c linux-2.6.32.48/tools/gcc/constify_plugin.c
23356 ---- linux-2.6.32.48/tools/gcc/constify_plugin.c 1969-12-31 19:00:00.000000000 -0500
23357 -+++ linux-2.6.32.48/tools/gcc/constify_plugin.c 2011-11-12 12:46:53.000000000 -0500
23358 +diff -urNp linux-2.6.32.46/tools/gcc/constify_plugin.c linux-2.6.32.46/tools/gcc/constify_plugin.c
23359 +--- linux-2.6.32.46/tools/gcc/constify_plugin.c 1969-12-31 19:00:00.000000000 -0500
23360 ++++ linux-2.6.32.46/tools/gcc/constify_plugin.c 2011-08-30 18:19:52.000000000 -0400
23361 @@ -0,0 +1,293 @@
23362 +/*
23363 + * Copyright 2011 by Emese Revfy <re.emese@×××××.com>
23364 @@ -81399,9 +81486,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/constify_plugin.c linux-2.6.32.48/tools/gcc
23365 +
23366 + return 0;
23367 +}
23368 -diff -urNp linux-2.6.32.48/tools/gcc/kallocstat_plugin.c linux-2.6.32.48/tools/gcc/kallocstat_plugin.c
23369 ---- linux-2.6.32.48/tools/gcc/kallocstat_plugin.c 1969-12-31 19:00:00.000000000 -0500
23370 -+++ linux-2.6.32.48/tools/gcc/kallocstat_plugin.c 2011-11-12 12:46:53.000000000 -0500
23371 +diff -urNp linux-2.6.32.46/tools/gcc/kallocstat_plugin.c linux-2.6.32.46/tools/gcc/kallocstat_plugin.c
23372 +--- linux-2.6.32.46/tools/gcc/kallocstat_plugin.c 1969-12-31 19:00:00.000000000 -0500
23373 ++++ linux-2.6.32.46/tools/gcc/kallocstat_plugin.c 2011-10-06 09:37:16.000000000 -0400
23374 @@ -0,0 +1,165 @@
23375 +/*
23376 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
23377 @@ -81568,9 +81655,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/kallocstat_plugin.c linux-2.6.32.48/tools/g
23378 +
23379 + return 0;
23380 +}
23381 -diff -urNp linux-2.6.32.48/tools/gcc/kernexec_plugin.c linux-2.6.32.48/tools/gcc/kernexec_plugin.c
23382 ---- linux-2.6.32.48/tools/gcc/kernexec_plugin.c 1969-12-31 19:00:00.000000000 -0500
23383 -+++ linux-2.6.32.48/tools/gcc/kernexec_plugin.c 2011-11-12 12:46:53.000000000 -0500
23384 +diff -urNp linux-2.6.32.46/tools/gcc/kernexec_plugin.c linux-2.6.32.46/tools/gcc/kernexec_plugin.c
23385 +--- linux-2.6.32.46/tools/gcc/kernexec_plugin.c 1969-12-31 19:00:00.000000000 -0500
23386 ++++ linux-2.6.32.46/tools/gcc/kernexec_plugin.c 2011-10-06 09:37:16.000000000 -0400
23387 @@ -0,0 +1,273 @@
23388 +/*
23389 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
23390 @@ -81845,9 +81932,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/kernexec_plugin.c linux-2.6.32.48/tools/gcc
23391 +
23392 + return 0;
23393 +}
23394 -diff -urNp linux-2.6.32.48/tools/gcc/Makefile linux-2.6.32.48/tools/gcc/Makefile
23395 ---- linux-2.6.32.48/tools/gcc/Makefile 1969-12-31 19:00:00.000000000 -0500
23396 -+++ linux-2.6.32.48/tools/gcc/Makefile 2011-11-12 12:46:53.000000000 -0500
23397 +diff -urNp linux-2.6.32.46/tools/gcc/Makefile linux-2.6.32.46/tools/gcc/Makefile
23398 +--- linux-2.6.32.46/tools/gcc/Makefile 1969-12-31 19:00:00.000000000 -0500
23399 ++++ linux-2.6.32.46/tools/gcc/Makefile 2011-10-06 09:37:14.000000000 -0400
23400 @@ -0,0 +1,21 @@
23401 +#CC := gcc
23402 +#PLUGIN_SOURCE_FILES := pax_plugin.c
23403 @@ -81870,9 +81957,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/Makefile linux-2.6.32.48/tools/gcc/Makefile
23404 +kallocstat_plugin-objs := kallocstat_plugin.o
23405 +kernexec_plugin-objs := kernexec_plugin.o
23406 +checker_plugin-objs := checker_plugin.o
23407 -diff -urNp linux-2.6.32.48/tools/gcc/stackleak_plugin.c linux-2.6.32.48/tools/gcc/stackleak_plugin.c
23408 ---- linux-2.6.32.48/tools/gcc/stackleak_plugin.c 1969-12-31 19:00:00.000000000 -0500
23409 -+++ linux-2.6.32.48/tools/gcc/stackleak_plugin.c 2011-11-12 12:46:53.000000000 -0500
23410 +diff -urNp linux-2.6.32.46/tools/gcc/stackleak_plugin.c linux-2.6.32.46/tools/gcc/stackleak_plugin.c
23411 +--- linux-2.6.32.46/tools/gcc/stackleak_plugin.c 1969-12-31 19:00:00.000000000 -0500
23412 ++++ linux-2.6.32.46/tools/gcc/stackleak_plugin.c 2011-10-06 09:37:14.000000000 -0400
23413 @@ -0,0 +1,251 @@
23414 +/*
23415 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
23416 @@ -82125,9 +82212,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/stackleak_plugin.c linux-2.6.32.48/tools/gc
23417 +
23418 + return 0;
23419 +}
23420 -diff -urNp linux-2.6.32.48/usr/gen_init_cpio.c linux-2.6.32.48/usr/gen_init_cpio.c
23421 ---- linux-2.6.32.48/usr/gen_init_cpio.c 2009-12-02 22:51:21.000000000 -0500
23422 -+++ linux-2.6.32.48/usr/gen_init_cpio.c 2011-11-12 12:46:53.000000000 -0500
23423 +diff -urNp linux-2.6.32.46/usr/gen_init_cpio.c linux-2.6.32.46/usr/gen_init_cpio.c
23424 +--- linux-2.6.32.46/usr/gen_init_cpio.c 2011-03-27 14:31:47.000000000 -0400
23425 ++++ linux-2.6.32.46/usr/gen_init_cpio.c 2011-04-17 15:56:46.000000000 -0400
23426 @@ -299,7 +299,7 @@ static int cpio_mkfile(const char *name,
23427 int retval;
23428 int rc = -1;
23429 @@ -82150,9 +82237,9 @@ diff -urNp linux-2.6.32.48/usr/gen_init_cpio.c linux-2.6.32.48/usr/gen_init_cpio
23430 } else
23431 break;
23432 }
23433 -diff -urNp linux-2.6.32.48/virt/kvm/kvm_main.c linux-2.6.32.48/virt/kvm/kvm_main.c
23434 ---- linux-2.6.32.48/virt/kvm/kvm_main.c 2011-11-12 12:44:30.000000000 -0500
23435 -+++ linux-2.6.32.48/virt/kvm/kvm_main.c 2011-11-12 12:46:53.000000000 -0500
23436 +diff -urNp linux-2.6.32.46/virt/kvm/kvm_main.c linux-2.6.32.46/virt/kvm/kvm_main.c
23437 +--- linux-2.6.32.46/virt/kvm/kvm_main.c 2011-03-27 14:31:47.000000000 -0400
23438 ++++ linux-2.6.32.46/virt/kvm/kvm_main.c 2011-08-05 20:33:55.000000000 -0400
23439 @@ -2494,7 +2494,7 @@ asmlinkage void kvm_handle_fault_on_rebo
23440 if (kvm_rebooting)
23441 /* spin while reset goes on */
23442
23443 diff --git a/2.6.32/0000_README b/3.0.8/0000_README
23444 similarity index 89%
23445 copy from 2.6.32/0000_README
23446 copy to 3.0.8/0000_README
23447 index 5e969f0..1680d79 100644
23448 --- a/2.6.32/0000_README
23449 +++ b/3.0.8/0000_README
23450 @@ -3,7 +3,15 @@ README
23451
23452 Individual Patch Descriptions:
23453 -----------------------------------------------------------------------------
23454 -Patch: 4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
23455 +Patch: 1007_linux-3.0.8.patch
23456 +From: http://www.kernel.org
23457 +Desc: Linux 3.0.8
23458 +
23459 +Patch: 1008_linux-3.0.9.patch
23460 +From: http://www.kernel.org
23461 +Desc: Linux 3.0.9
23462 +
23463 +Patch: 4420_grsecurity-2.2.2-3.0.8-201111010529.patch
23464 From: http://www.grsecurity.net
23465 Desc: hardened-sources base patch from upstream grsecurity
23466
23467 @@ -46,7 +54,3 @@ Patch: 4445_disable-compat_vdso.patch
23468 From: Gordon Malm <gengor@g.o>
23469 Kerin Millar <kerframil@×××××.com>
23470 Desc: Disables VDSO_COMPAT operation completely
23471 -
23472 -Patch: 4450_check_ssp_fix.patch
23473 -From: Magnus Granberg <zorry@g.o>
23474 -Desc: Fixes kernel check script for ssp
23475
23476 diff --git a/3.0.8/1007_linux-3.0.8.patch b/3.0.8/1007_linux-3.0.8.patch
23477 new file mode 100644
23478 index 0000000..62a4bb6
23479 --- /dev/null
23480 +++ b/3.0.8/1007_linux-3.0.8.patch
23481 @@ -0,0 +1,1472 @@
23482 +diff --git a/Makefile b/Makefile
23483 +index 11c4249..9f6e3cd 100644
23484 +--- a/Makefile
23485 ++++ b/Makefile
23486 +@@ -1,6 +1,6 @@
23487 + VERSION = 3
23488 + PATCHLEVEL = 0
23489 +-SUBLEVEL = 7
23490 ++SUBLEVEL = 8
23491 + EXTRAVERSION =
23492 + NAME = Sneaky Weasel
23493 +
23494 +diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c
23495 +index 4960686..4372763 100644
23496 +--- a/arch/arm/kernel/perf_event_v7.c
23497 ++++ b/arch/arm/kernel/perf_event_v7.c
23498 +@@ -264,8 +264,8 @@ static const unsigned armv7_a9_perf_map[PERF_COUNT_HW_MAX] = {
23499 + [PERF_COUNT_HW_CPU_CYCLES] = ARMV7_PERFCTR_CPU_CYCLES,
23500 + [PERF_COUNT_HW_INSTRUCTIONS] =
23501 + ARMV7_PERFCTR_INST_OUT_OF_RENAME_STAGE,
23502 +- [PERF_COUNT_HW_CACHE_REFERENCES] = ARMV7_PERFCTR_COHERENT_LINE_HIT,
23503 +- [PERF_COUNT_HW_CACHE_MISSES] = ARMV7_PERFCTR_COHERENT_LINE_MISS,
23504 ++ [PERF_COUNT_HW_CACHE_REFERENCES] = ARMV7_PERFCTR_DCACHE_ACCESS,
23505 ++ [PERF_COUNT_HW_CACHE_MISSES] = ARMV7_PERFCTR_DCACHE_REFILL,
23506 + [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV7_PERFCTR_PC_WRITE,
23507 + [PERF_COUNT_HW_BRANCH_MISSES] = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,
23508 + [PERF_COUNT_HW_BUS_CYCLES] = ARMV7_PERFCTR_CLOCK_CYCLES,
23509 +diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
23510 +index c19571c..4a4eba5 100644
23511 +--- a/arch/arm/mm/init.c
23512 ++++ b/arch/arm/mm/init.c
23513 +@@ -473,6 +473,13 @@ static void __init free_unused_memmap(struct meminfo *mi)
23514 + */
23515 + bank_start = min(bank_start,
23516 + ALIGN(prev_bank_end, PAGES_PER_SECTION));
23517 ++#else
23518 ++ /*
23519 ++ * Align down here since the VM subsystem insists that the
23520 ++ * memmap entries are valid from the bank start aligned to
23521 ++ * MAX_ORDER_NR_PAGES.
23522 ++ */
23523 ++ bank_start = round_down(bank_start, MAX_ORDER_NR_PAGES);
23524 + #endif
23525 + /*
23526 + * If we had a previous bank, and there is a space
23527 +diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
23528 +index 3032644..87488b9 100644
23529 +--- a/arch/x86/mm/init.c
23530 ++++ b/arch/x86/mm/init.c
23531 +@@ -63,9 +63,8 @@ static void __init find_early_table_space(unsigned long end, int use_pse,
23532 + #ifdef CONFIG_X86_32
23533 + /* for fixmap */
23534 + tables += roundup(__end_of_fixed_addresses * sizeof(pte_t), PAGE_SIZE);
23535 +-
23536 +- good_end = max_pfn_mapped << PAGE_SHIFT;
23537 + #endif
23538 ++ good_end = max_pfn_mapped << PAGE_SHIFT;
23539 +
23540 + base = memblock_find_in_range(start, good_end, tables, PAGE_SIZE);
23541 + if (base == MEMBLOCK_ERROR)
23542 +diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c
23543 +index be44256..7835b8f 100644
23544 +--- a/crypto/ghash-generic.c
23545 ++++ b/crypto/ghash-generic.c
23546 +@@ -67,6 +67,9 @@ static int ghash_update(struct shash_desc *desc,
23547 + struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
23548 + u8 *dst = dctx->buffer;
23549 +
23550 ++ if (!ctx->gf128)
23551 ++ return -ENOKEY;
23552 ++
23553 + if (dctx->bytes) {
23554 + int n = min(srclen, dctx->bytes);
23555 + u8 *pos = dst + (GHASH_BLOCK_SIZE - dctx->bytes);
23556 +@@ -119,6 +122,9 @@ static int ghash_final(struct shash_desc *desc, u8 *dst)
23557 + struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
23558 + u8 *buf = dctx->buffer;
23559 +
23560 ++ if (!ctx->gf128)
23561 ++ return -ENOKEY;
23562 ++
23563 + ghash_flush(ctx, dctx);
23564 + memcpy(dst, buf, GHASH_BLOCK_SIZE);
23565 +
23566 +diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c
23567 +index 41841a3..17cef86 100644
23568 +--- a/drivers/firewire/sbp2.c
23569 ++++ b/drivers/firewire/sbp2.c
23570 +@@ -1198,6 +1198,10 @@ static int sbp2_remove(struct device *dev)
23571 + {
23572 + struct fw_unit *unit = fw_unit(dev);
23573 + struct sbp2_target *tgt = dev_get_drvdata(&unit->device);
23574 ++ struct sbp2_logical_unit *lu;
23575 ++
23576 ++ list_for_each_entry(lu, &tgt->lu_list, link)
23577 ++ cancel_delayed_work_sync(&lu->work);
23578 +
23579 + sbp2_target_put(tgt);
23580 + return 0;
23581 +diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
23582 +index ebdb0fd..9a0aee2 100644
23583 +--- a/drivers/gpu/drm/radeon/atom.c
23584 ++++ b/drivers/gpu/drm/radeon/atom.c
23585 +@@ -277,7 +277,12 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
23586 + case ATOM_ARG_FB:
23587 + idx = U8(*ptr);
23588 + (*ptr)++;
23589 +- val = gctx->scratch[((gctx->fb_base + idx) / 4)];
23590 ++ if ((gctx->fb_base + (idx * 4)) > gctx->scratch_size_bytes) {
23591 ++ DRM_ERROR("ATOM: fb read beyond scratch region: %d vs. %d\n",
23592 ++ gctx->fb_base + (idx * 4), gctx->scratch_size_bytes);
23593 ++ val = 0;
23594 ++ } else
23595 ++ val = gctx->scratch[(gctx->fb_base / 4) + idx];
23596 + if (print)
23597 + DEBUG("FB[0x%02X]", idx);
23598 + break;
23599 +@@ -531,7 +536,11 @@ static void atom_put_dst(atom_exec_context *ctx, int arg, uint8_t attr,
23600 + case ATOM_ARG_FB:
23601 + idx = U8(*ptr);
23602 + (*ptr)++;
23603 +- gctx->scratch[((gctx->fb_base + idx) / 4)] = val;
23604 ++ if ((gctx->fb_base + (idx * 4)) > gctx->scratch_size_bytes) {
23605 ++ DRM_ERROR("ATOM: fb write beyond scratch region: %d vs. %d\n",
23606 ++ gctx->fb_base + (idx * 4), gctx->scratch_size_bytes);
23607 ++ } else
23608 ++ gctx->scratch[(gctx->fb_base / 4) + idx] = val;
23609 + DEBUG("FB[0x%02X]", idx);
23610 + break;
23611 + case ATOM_ARG_PLL:
23612 +@@ -1367,11 +1376,13 @@ int atom_allocate_fb_scratch(struct atom_context *ctx)
23613 +
23614 + usage_bytes = firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb * 1024;
23615 + }
23616 ++ ctx->scratch_size_bytes = 0;
23617 + if (usage_bytes == 0)
23618 + usage_bytes = 20 * 1024;
23619 + /* allocate some scratch memory */
23620 + ctx->scratch = kzalloc(usage_bytes, GFP_KERNEL);
23621 + if (!ctx->scratch)
23622 + return -ENOMEM;
23623 ++ ctx->scratch_size_bytes = usage_bytes;
23624 + return 0;
23625 + }
23626 +diff --git a/drivers/gpu/drm/radeon/atom.h b/drivers/gpu/drm/radeon/atom.h
23627 +index a589a55..93cfe20 100644
23628 +--- a/drivers/gpu/drm/radeon/atom.h
23629 ++++ b/drivers/gpu/drm/radeon/atom.h
23630 +@@ -137,6 +137,7 @@ struct atom_context {
23631 + int cs_equal, cs_above;
23632 + int io_mode;
23633 + uint32_t *scratch;
23634 ++ int scratch_size_bytes;
23635 + };
23636 +
23637 + extern int atom_debug;
23638 +diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
23639 +index b7f0726..e2b2d78 100644
23640 +--- a/drivers/gpu/drm/ttm/ttm_bo.c
23641 ++++ b/drivers/gpu/drm/ttm/ttm_bo.c
23642 +@@ -392,10 +392,12 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
23643 + * Create and bind a ttm if required.
23644 + */
23645 +
23646 +- if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED) && (bo->ttm == NULL)) {
23647 +- ret = ttm_bo_add_ttm(bo, false);
23648 +- if (ret)
23649 +- goto out_err;
23650 ++ if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED)) {
23651 ++ if (bo->ttm == NULL) {
23652 ++ ret = ttm_bo_add_ttm(bo, false);
23653 ++ if (ret)
23654 ++ goto out_err;
23655 ++ }
23656 +
23657 + ret = ttm_tt_set_placement_caching(bo->ttm, mem->placement);
23658 + if (ret)
23659 +diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
23660 +index 77dbf40..ae3c6f5 100644
23661 +--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
23662 ++++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
23663 +@@ -635,13 +635,13 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
23664 + if (ret)
23665 + return ret;
23666 +
23667 +- ttm_bo_free_old_node(bo);
23668 + if ((man->flags & TTM_MEMTYPE_FLAG_FIXED) &&
23669 + (bo->ttm != NULL)) {
23670 + ttm_tt_unbind(bo->ttm);
23671 + ttm_tt_destroy(bo->ttm);
23672 + bo->ttm = NULL;
23673 + }
23674 ++ ttm_bo_free_old_node(bo);
23675 + } else {
23676 + /**
23677 + * This should help pipeline ordinary buffer moves.
23678 +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
23679 +index a756ee6..c946d90 100644
23680 +--- a/drivers/hid/hid-ids.h
23681 ++++ b/drivers/hid/hid-ids.h
23682 +@@ -568,6 +568,9 @@
23683 + #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001
23684 + #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE 0x0600
23685 +
23686 ++#define USB_VENDOR_ID_SIGMA_MICRO 0x1c4f
23687 ++#define USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD 0x0002
23688 ++
23689 + #define USB_VENDOR_ID_SKYCABLE 0x1223
23690 + #define USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER 0x3F07
23691 +
23692 +diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
23693 +index 0ec91c1..56d0539 100644
23694 +--- a/drivers/hid/hid-magicmouse.c
23695 ++++ b/drivers/hid/hid-magicmouse.c
23696 +@@ -501,9 +501,17 @@ static int magicmouse_probe(struct hid_device *hdev,
23697 + }
23698 + report->size = 6;
23699 +
23700 ++ /*
23701 ++ * Some devices repond with 'invalid report id' when feature
23702 ++ * report switching it into multitouch mode is sent to it.
23703 ++ *
23704 ++ * This results in -EIO from the _raw low-level transport callback,
23705 ++ * but there seems to be no other way of switching the mode.
23706 ++ * Thus the super-ugly hacky success check below.
23707 ++ */
23708 + ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature),
23709 + HID_FEATURE_REPORT);
23710 +- if (ret != sizeof(feature)) {
23711 ++ if (ret != -EIO && ret != sizeof(feature)) {
23712 + hid_err(hdev, "unable to request touch data (%d)\n", ret);
23713 + goto err_stop_hw;
23714 + }
23715 +diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
23716 +index 621959d..4bdb5d4 100644
23717 +--- a/drivers/hid/usbhid/hid-quirks.c
23718 ++++ b/drivers/hid/usbhid/hid-quirks.c
23719 +@@ -89,6 +89,7 @@ static const struct hid_blacklist {
23720 +
23721 + { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH, HID_QUIRK_MULTI_INPUT },
23722 + { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS, HID_QUIRK_MULTI_INPUT },
23723 ++ { USB_VENDOR_ID_SIGMA_MICRO, USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD, HID_QUIRK_NO_INIT_REPORTS },
23724 + { 0, 0 }
23725 + };
23726 +
23727 +diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
23728 +index f2b377c..36d7f27 100644
23729 +--- a/drivers/hwmon/w83627ehf.c
23730 ++++ b/drivers/hwmon/w83627ehf.c
23731 +@@ -390,7 +390,7 @@ temp_from_reg(u16 reg, s16 regval)
23732 + {
23733 + if (is_word_sized(reg))
23734 + return LM75_TEMP_FROM_REG(regval);
23735 +- return regval * 1000;
23736 ++ return ((s8)regval) * 1000;
23737 + }
23738 +
23739 + static inline u16
23740 +@@ -398,7 +398,8 @@ temp_to_reg(u16 reg, long temp)
23741 + {
23742 + if (is_word_sized(reg))
23743 + return LM75_TEMP_TO_REG(temp);
23744 +- return DIV_ROUND_CLOSEST(SENSORS_LIMIT(temp, -127000, 128000), 1000);
23745 ++ return (s8)DIV_ROUND_CLOSEST(SENSORS_LIMIT(temp, -127000, 128000),
23746 ++ 1000);
23747 + }
23748 +
23749 + /* Some of analog inputs have internal scaling (2x), 8mV is ADC LSB */
23750 +@@ -1715,7 +1716,8 @@ static void w83627ehf_device_remove_files(struct device *dev)
23751 + }
23752 +
23753 + /* Get the monitoring functions started */
23754 +-static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data)
23755 ++static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data,
23756 ++ enum kinds kind)
23757 + {
23758 + int i;
23759 + u8 tmp, diode;
23760 +@@ -1746,10 +1748,16 @@ static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data)
23761 + w83627ehf_write_value(data, W83627EHF_REG_VBAT, tmp | 0x01);
23762 +
23763 + /* Get thermal sensor types */
23764 +- diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
23765 ++ switch (kind) {
23766 ++ case w83627ehf:
23767 ++ diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
23768 ++ break;
23769 ++ default:
23770 ++ diode = 0x70;
23771 ++ }
23772 + for (i = 0; i < 3; i++) {
23773 + if ((tmp & (0x02 << i)))
23774 +- data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 2;
23775 ++ data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3;
23776 + else
23777 + data->temp_type[i] = 4; /* thermistor */
23778 + }
23779 +@@ -2016,7 +2024,7 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
23780 + }
23781 +
23782 + /* Initialize the chip */
23783 +- w83627ehf_init_device(data);
23784 ++ w83627ehf_init_device(data, sio_data->kind);
23785 +
23786 + data->vrm = vid_which_vrm();
23787 + superio_enter(sio_data->sioreg);
23788 +diff --git a/drivers/media/video/uvc/uvc_entity.c b/drivers/media/video/uvc/uvc_entity.c
23789 +index 48fea37..29e2399 100644
23790 +--- a/drivers/media/video/uvc/uvc_entity.c
23791 ++++ b/drivers/media/video/uvc/uvc_entity.c
23792 +@@ -49,7 +49,7 @@ static int uvc_mc_register_entity(struct uvc_video_chain *chain,
23793 + if (remote == NULL)
23794 + return -EINVAL;
23795 +
23796 +- source = (UVC_ENTITY_TYPE(remote) != UVC_TT_STREAMING)
23797 ++ source = (UVC_ENTITY_TYPE(remote) == UVC_TT_STREAMING)
23798 + ? (remote->vdev ? &remote->vdev->entity : NULL)
23799 + : &remote->subdev.entity;
23800 + if (source == NULL)
23801 +diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
23802 +index d347116..1658575 100644
23803 +--- a/drivers/platform/x86/samsung-laptop.c
23804 ++++ b/drivers/platform/x86/samsung-laptop.c
23805 +@@ -601,6 +601,16 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
23806 + .callback = dmi_check_cb,
23807 + },
23808 + {
23809 ++ .ident = "N150/N210/N220",
23810 ++ .matches = {
23811 ++ DMI_MATCH(DMI_SYS_VENDOR,
23812 ++ "SAMSUNG ELECTRONICS CO., LTD."),
23813 ++ DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"),
23814 ++ DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
23815 ++ },
23816 ++ .callback = dmi_check_cb,
23817 ++ },
23818 ++ {
23819 + .ident = "N150/N210/N220/N230",
23820 + .matches = {
23821 + DMI_MATCH(DMI_SYS_VENDOR,
23822 +diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
23823 +index fc7e57b..53e7d72 100644
23824 +--- a/fs/cifs/cifsfs.c
23825 ++++ b/fs/cifs/cifsfs.c
23826 +@@ -566,6 +566,12 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
23827 + struct inode *dir = dentry->d_inode;
23828 + struct dentry *child;
23829 +
23830 ++ if (!dir) {
23831 ++ dput(dentry);
23832 ++ dentry = ERR_PTR(-ENOENT);
23833 ++ break;
23834 ++ }
23835 ++
23836 + /* skip separators */
23837 + while (*s == sep)
23838 + s++;
23839 +@@ -581,10 +587,6 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
23840 + mutex_unlock(&dir->i_mutex);
23841 + dput(dentry);
23842 + dentry = child;
23843 +- if (!dentry->d_inode) {
23844 +- dput(dentry);
23845 +- dentry = ERR_PTR(-ENOENT);
23846 +- }
23847 + } while (!IS_ERR(dentry));
23848 + _FreeXid(xid);
23849 + kfree(full_path);
23850 +diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
23851 +index 168a80f..5cb8614 100644
23852 +--- a/fs/fuse/dev.c
23853 ++++ b/fs/fuse/dev.c
23854 +@@ -258,10 +258,14 @@ void fuse_queue_forget(struct fuse_conn *fc, struct fuse_forget_link *forget,
23855 + forget->forget_one.nlookup = nlookup;
23856 +
23857 + spin_lock(&fc->lock);
23858 +- fc->forget_list_tail->next = forget;
23859 +- fc->forget_list_tail = forget;
23860 +- wake_up(&fc->waitq);
23861 +- kill_fasync(&fc->fasync, SIGIO, POLL_IN);
23862 ++ if (fc->connected) {
23863 ++ fc->forget_list_tail->next = forget;
23864 ++ fc->forget_list_tail = forget;
23865 ++ wake_up(&fc->waitq);
23866 ++ kill_fasync(&fc->fasync, SIGIO, POLL_IN);
23867 ++ } else {
23868 ++ kfree(forget);
23869 ++ }
23870 + spin_unlock(&fc->lock);
23871 + }
23872 +
23873 +diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h
23874 +index d685752..4e7f64b 100644
23875 +--- a/fs/hfsplus/hfsplus_fs.h
23876 ++++ b/fs/hfsplus/hfsplus_fs.h
23877 +@@ -13,6 +13,7 @@
23878 + #include <linux/fs.h>
23879 + #include <linux/mutex.h>
23880 + #include <linux/buffer_head.h>
23881 ++#include <linux/blkdev.h>
23882 + #include "hfsplus_raw.h"
23883 +
23884 + #define DBG_BNODE_REFS 0x00000001
23885 +@@ -110,7 +111,9 @@ struct hfsplus_vh;
23886 + struct hfs_btree;
23887 +
23888 + struct hfsplus_sb_info {
23889 ++ void *s_vhdr_buf;
23890 + struct hfsplus_vh *s_vhdr;
23891 ++ void *s_backup_vhdr_buf;
23892 + struct hfsplus_vh *s_backup_vhdr;
23893 + struct hfs_btree *ext_tree;
23894 + struct hfs_btree *cat_tree;
23895 +@@ -258,6 +261,15 @@ struct hfsplus_readdir_data {
23896 + struct hfsplus_cat_key key;
23897 + };
23898 +
23899 ++/*
23900 ++ * Find minimum acceptible I/O size for an hfsplus sb.
23901 ++ */
23902 ++static inline unsigned short hfsplus_min_io_size(struct super_block *sb)
23903 ++{
23904 ++ return max_t(unsigned short, bdev_logical_block_size(sb->s_bdev),
23905 ++ HFSPLUS_SECTOR_SIZE);
23906 ++}
23907 ++
23908 + #define hfs_btree_open hfsplus_btree_open
23909 + #define hfs_btree_close hfsplus_btree_close
23910 + #define hfs_btree_write hfsplus_btree_write
23911 +@@ -436,8 +448,8 @@ int hfsplus_compare_dentry(const struct dentry *parent,
23912 + /* wrapper.c */
23913 + int hfsplus_read_wrapper(struct super_block *);
23914 + int hfs_part_find(struct super_block *, sector_t *, sector_t *);
23915 +-int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
23916 +- void *data, int rw);
23917 ++int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
23918 ++ void *buf, void **data, int rw);
23919 +
23920 + /* time macros */
23921 + #define __hfsp_mt2ut(t) (be32_to_cpu(t) - 2082844800U)
23922 +diff --git a/fs/hfsplus/part_tbl.c b/fs/hfsplus/part_tbl.c
23923 +index 40ad88c..eb355d8 100644
23924 +--- a/fs/hfsplus/part_tbl.c
23925 ++++ b/fs/hfsplus/part_tbl.c
23926 +@@ -88,11 +88,12 @@ static int hfs_parse_old_pmap(struct super_block *sb, struct old_pmap *pm,
23927 + return -ENOENT;
23928 + }
23929 +
23930 +-static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
23931 +- sector_t *part_start, sector_t *part_size)
23932 ++static int hfs_parse_new_pmap(struct super_block *sb, void *buf,
23933 ++ struct new_pmap *pm, sector_t *part_start, sector_t *part_size)
23934 + {
23935 + struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb);
23936 + int size = be32_to_cpu(pm->pmMapBlkCnt);
23937 ++ int buf_size = hfsplus_min_io_size(sb);
23938 + int res;
23939 + int i = 0;
23940 +
23941 +@@ -107,11 +108,14 @@ static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
23942 + if (++i >= size)
23943 + return -ENOENT;
23944 +
23945 +- res = hfsplus_submit_bio(sb->s_bdev,
23946 +- *part_start + HFS_PMAP_BLK + i,
23947 +- pm, READ);
23948 +- if (res)
23949 +- return res;
23950 ++ pm = (struct new_pmap *)((u8 *)pm + HFSPLUS_SECTOR_SIZE);
23951 ++ if ((u8 *)pm - (u8 *)buf >= buf_size) {
23952 ++ res = hfsplus_submit_bio(sb,
23953 ++ *part_start + HFS_PMAP_BLK + i,
23954 ++ buf, (void **)&pm, READ);
23955 ++ if (res)
23956 ++ return res;
23957 ++ }
23958 + } while (pm->pmSig == cpu_to_be16(HFS_NEW_PMAP_MAGIC));
23959 +
23960 + return -ENOENT;
23961 +@@ -124,15 +128,15 @@ static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
23962 + int hfs_part_find(struct super_block *sb,
23963 + sector_t *part_start, sector_t *part_size)
23964 + {
23965 +- void *data;
23966 ++ void *buf, *data;
23967 + int res;
23968 +
23969 +- data = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
23970 +- if (!data)
23971 ++ buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
23972 ++ if (!buf)
23973 + return -ENOMEM;
23974 +
23975 +- res = hfsplus_submit_bio(sb->s_bdev, *part_start + HFS_PMAP_BLK,
23976 +- data, READ);
23977 ++ res = hfsplus_submit_bio(sb, *part_start + HFS_PMAP_BLK,
23978 ++ buf, &data, READ);
23979 + if (res)
23980 + goto out;
23981 +
23982 +@@ -141,13 +145,13 @@ int hfs_part_find(struct super_block *sb,
23983 + res = hfs_parse_old_pmap(sb, data, part_start, part_size);
23984 + break;
23985 + case HFS_NEW_PMAP_MAGIC:
23986 +- res = hfs_parse_new_pmap(sb, data, part_start, part_size);
23987 ++ res = hfs_parse_new_pmap(sb, buf, data, part_start, part_size);
23988 + break;
23989 + default:
23990 + res = -ENOENT;
23991 + break;
23992 + }
23993 + out:
23994 +- kfree(data);
23995 ++ kfree(buf);
23996 + return res;
23997 + }
23998 +diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
23999 +index 84a47b7..c3a76fd 100644
24000 +--- a/fs/hfsplus/super.c
24001 ++++ b/fs/hfsplus/super.c
24002 +@@ -197,17 +197,17 @@ int hfsplus_sync_fs(struct super_block *sb, int wait)
24003 + write_backup = 1;
24004 + }
24005 +
24006 +- error2 = hfsplus_submit_bio(sb->s_bdev,
24007 ++ error2 = hfsplus_submit_bio(sb,
24008 + sbi->part_start + HFSPLUS_VOLHEAD_SECTOR,
24009 +- sbi->s_vhdr, WRITE_SYNC);
24010 ++ sbi->s_vhdr_buf, NULL, WRITE_SYNC);
24011 + if (!error)
24012 + error = error2;
24013 + if (!write_backup)
24014 + goto out;
24015 +
24016 +- error2 = hfsplus_submit_bio(sb->s_bdev,
24017 ++ error2 = hfsplus_submit_bio(sb,
24018 + sbi->part_start + sbi->sect_count - 2,
24019 +- sbi->s_backup_vhdr, WRITE_SYNC);
24020 ++ sbi->s_backup_vhdr_buf, NULL, WRITE_SYNC);
24021 + if (!error)
24022 + error2 = error;
24023 + out:
24024 +@@ -251,8 +251,8 @@ static void hfsplus_put_super(struct super_block *sb)
24025 + hfs_btree_close(sbi->ext_tree);
24026 + iput(sbi->alloc_file);
24027 + iput(sbi->hidden_dir);
24028 +- kfree(sbi->s_vhdr);
24029 +- kfree(sbi->s_backup_vhdr);
24030 ++ kfree(sbi->s_vhdr_buf);
24031 ++ kfree(sbi->s_backup_vhdr_buf);
24032 + unload_nls(sbi->nls);
24033 + kfree(sb->s_fs_info);
24034 + sb->s_fs_info = NULL;
24035 +@@ -508,8 +508,8 @@ out_close_cat_tree:
24036 + out_close_ext_tree:
24037 + hfs_btree_close(sbi->ext_tree);
24038 + out_free_vhdr:
24039 +- kfree(sbi->s_vhdr);
24040 +- kfree(sbi->s_backup_vhdr);
24041 ++ kfree(sbi->s_vhdr_buf);
24042 ++ kfree(sbi->s_backup_vhdr_buf);
24043 + out_unload_nls:
24044 + unload_nls(sbi->nls);
24045 + unload_nls(nls);
24046 +diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
24047 +index 4ac88ff..7b8112d 100644
24048 +--- a/fs/hfsplus/wrapper.c
24049 ++++ b/fs/hfsplus/wrapper.c
24050 +@@ -31,25 +31,67 @@ static void hfsplus_end_io_sync(struct bio *bio, int err)
24051 + complete(bio->bi_private);
24052 + }
24053 +
24054 +-int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
24055 +- void *data, int rw)
24056 ++/*
24057 ++ * hfsplus_submit_bio - Perfrom block I/O
24058 ++ * @sb: super block of volume for I/O
24059 ++ * @sector: block to read or write, for blocks of HFSPLUS_SECTOR_SIZE bytes
24060 ++ * @buf: buffer for I/O
24061 ++ * @data: output pointer for location of requested data
24062 ++ * @rw: direction of I/O
24063 ++ *
24064 ++ * The unit of I/O is hfsplus_min_io_size(sb), which may be bigger than
24065 ++ * HFSPLUS_SECTOR_SIZE, and @buf must be sized accordingly. On reads
24066 ++ * @data will return a pointer to the start of the requested sector,
24067 ++ * which may not be the same location as @buf.
24068 ++ *
24069 ++ * If @sector is not aligned to the bdev logical block size it will
24070 ++ * be rounded down. For writes this means that @buf should contain data
24071 ++ * that starts at the rounded-down address. As long as the data was
24072 ++ * read using hfsplus_submit_bio() and the same buffer is used things
24073 ++ * will work correctly.
24074 ++ */
24075 ++int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
24076 ++ void *buf, void **data, int rw)
24077 + {
24078 + DECLARE_COMPLETION_ONSTACK(wait);
24079 + struct bio *bio;
24080 + int ret = 0;
24081 ++ unsigned int io_size;
24082 ++ loff_t start;
24083 ++ int offset;
24084 ++
24085 ++ /*
24086 ++ * Align sector to hardware sector size and find offset. We
24087 ++ * assume that io_size is a power of two, which _should_
24088 ++ * be true.
24089 ++ */
24090 ++ io_size = hfsplus_min_io_size(sb);
24091 ++ start = (loff_t)sector << HFSPLUS_SECTOR_SHIFT;
24092 ++ offset = start & (io_size - 1);
24093 ++ sector &= ~((io_size >> HFSPLUS_SECTOR_SHIFT) - 1);
24094 +
24095 + bio = bio_alloc(GFP_NOIO, 1);
24096 + bio->bi_sector = sector;
24097 +- bio->bi_bdev = bdev;
24098 ++ bio->bi_bdev = sb->s_bdev;
24099 + bio->bi_end_io = hfsplus_end_io_sync;
24100 + bio->bi_private = &wait;
24101 +
24102 +- /*
24103 +- * We always submit one sector at a time, so bio_add_page must not fail.
24104 +- */
24105 +- if (bio_add_page(bio, virt_to_page(data), HFSPLUS_SECTOR_SIZE,
24106 +- offset_in_page(data)) != HFSPLUS_SECTOR_SIZE)
24107 +- BUG();
24108 ++ if (!(rw & WRITE) && data)
24109 ++ *data = (u8 *)buf + offset;
24110 ++
24111 ++ while (io_size > 0) {
24112 ++ unsigned int page_offset = offset_in_page(buf);
24113 ++ unsigned int len = min_t(unsigned int, PAGE_SIZE - page_offset,
24114 ++ io_size);
24115 ++
24116 ++ ret = bio_add_page(bio, virt_to_page(buf), len, page_offset);
24117 ++ if (ret != len) {
24118 ++ ret = -EIO;
24119 ++ goto out;
24120 ++ }
24121 ++ io_size -= len;
24122 ++ buf = (u8 *)buf + len;
24123 ++ }
24124 +
24125 + submit_bio(rw, bio);
24126 + wait_for_completion(&wait);
24127 +@@ -57,8 +99,9 @@ int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
24128 + if (!bio_flagged(bio, BIO_UPTODATE))
24129 + ret = -EIO;
24130 +
24131 ++out:
24132 + bio_put(bio);
24133 +- return ret;
24134 ++ return ret < 0 ? ret : 0;
24135 + }
24136 +
24137 + static int hfsplus_read_mdb(void *bufptr, struct hfsplus_wd *wd)
24138 +@@ -147,17 +190,17 @@ int hfsplus_read_wrapper(struct super_block *sb)
24139 + }
24140 +
24141 + error = -ENOMEM;
24142 +- sbi->s_vhdr = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
24143 +- if (!sbi->s_vhdr)
24144 ++ sbi->s_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
24145 ++ if (!sbi->s_vhdr_buf)
24146 + goto out;
24147 +- sbi->s_backup_vhdr = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
24148 +- if (!sbi->s_backup_vhdr)
24149 ++ sbi->s_backup_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
24150 ++ if (!sbi->s_backup_vhdr_buf)
24151 + goto out_free_vhdr;
24152 +
24153 + reread:
24154 +- error = hfsplus_submit_bio(sb->s_bdev,
24155 +- part_start + HFSPLUS_VOLHEAD_SECTOR,
24156 +- sbi->s_vhdr, READ);
24157 ++ error = hfsplus_submit_bio(sb, part_start + HFSPLUS_VOLHEAD_SECTOR,
24158 ++ sbi->s_vhdr_buf, (void **)&sbi->s_vhdr,
24159 ++ READ);
24160 + if (error)
24161 + goto out_free_backup_vhdr;
24162 +
24163 +@@ -186,9 +229,9 @@ reread:
24164 + goto reread;
24165 + }
24166 +
24167 +- error = hfsplus_submit_bio(sb->s_bdev,
24168 +- part_start + part_size - 2,
24169 +- sbi->s_backup_vhdr, READ);
24170 ++ error = hfsplus_submit_bio(sb, part_start + part_size - 2,
24171 ++ sbi->s_backup_vhdr_buf,
24172 ++ (void **)&sbi->s_backup_vhdr, READ);
24173 + if (error)
24174 + goto out_free_backup_vhdr;
24175 +
24176 +@@ -232,9 +275,9 @@ reread:
24177 + return 0;
24178 +
24179 + out_free_backup_vhdr:
24180 +- kfree(sbi->s_backup_vhdr);
24181 ++ kfree(sbi->s_backup_vhdr_buf);
24182 + out_free_vhdr:
24183 +- kfree(sbi->s_vhdr);
24184 ++ kfree(sbi->s_vhdr_buf);
24185 + out:
24186 + return error;
24187 + }
24188 +diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h
24189 +index 8633521..8731516 100644
24190 +--- a/fs/xfs/linux-2.6/xfs_linux.h
24191 ++++ b/fs/xfs/linux-2.6/xfs_linux.h
24192 +@@ -70,6 +70,8 @@
24193 + #include <linux/ctype.h>
24194 + #include <linux/writeback.h>
24195 + #include <linux/capability.h>
24196 ++#include <linux/kthread.h>
24197 ++#include <linux/freezer.h>
24198 + #include <linux/list_sort.h>
24199 +
24200 + #include <asm/page.h>
24201 +diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
24202 +index a1a881e..347cae9 100644
24203 +--- a/fs/xfs/linux-2.6/xfs_super.c
24204 ++++ b/fs/xfs/linux-2.6/xfs_super.c
24205 +@@ -1412,37 +1412,35 @@ xfs_fs_fill_super(
24206 + sb->s_time_gran = 1;
24207 + set_posix_acl_flag(sb);
24208 +
24209 +- error = xfs_syncd_init(mp);
24210 +- if (error)
24211 +- goto out_filestream_unmount;
24212 +-
24213 + xfs_inode_shrinker_register(mp);
24214 +
24215 + error = xfs_mountfs(mp);
24216 + if (error)
24217 +- goto out_syncd_stop;
24218 ++ goto out_filestream_unmount;
24219 ++
24220 ++ error = xfs_syncd_init(mp);
24221 ++ if (error)
24222 ++ goto out_unmount;
24223 +
24224 + root = igrab(VFS_I(mp->m_rootip));
24225 + if (!root) {
24226 + error = ENOENT;
24227 +- goto fail_unmount;
24228 ++ goto out_syncd_stop;
24229 + }
24230 + if (is_bad_inode(root)) {
24231 + error = EINVAL;
24232 +- goto fail_vnrele;
24233 ++ goto out_syncd_stop;
24234 + }
24235 + sb->s_root = d_alloc_root(root);
24236 + if (!sb->s_root) {
24237 + error = ENOMEM;
24238 +- goto fail_vnrele;
24239 ++ goto out_iput;
24240 + }
24241 +
24242 + return 0;
24243 +
24244 +- out_syncd_stop:
24245 +- xfs_inode_shrinker_unregister(mp);
24246 +- xfs_syncd_stop(mp);
24247 + out_filestream_unmount:
24248 ++ xfs_inode_shrinker_unregister(mp);
24249 + xfs_filestream_unmount(mp);
24250 + out_free_sb:
24251 + xfs_freesb(mp);
24252 +@@ -1456,17 +1454,12 @@ xfs_fs_fill_super(
24253 + out:
24254 + return -error;
24255 +
24256 +- fail_vnrele:
24257 +- if (sb->s_root) {
24258 +- dput(sb->s_root);
24259 +- sb->s_root = NULL;
24260 +- } else {
24261 +- iput(root);
24262 +- }
24263 +-
24264 +- fail_unmount:
24265 +- xfs_inode_shrinker_unregister(mp);
24266 ++ out_iput:
24267 ++ iput(root);
24268 ++ out_syncd_stop:
24269 + xfs_syncd_stop(mp);
24270 ++ out_unmount:
24271 ++ xfs_inode_shrinker_unregister(mp);
24272 +
24273 + /*
24274 + * Blow away any referenced inode in the filestreams cache.
24275 +@@ -1667,24 +1660,13 @@ xfs_init_workqueues(void)
24276 + */
24277 + xfs_syncd_wq = alloc_workqueue("xfssyncd", WQ_CPU_INTENSIVE, 8);
24278 + if (!xfs_syncd_wq)
24279 +- goto out;
24280 +-
24281 +- xfs_ail_wq = alloc_workqueue("xfsail", WQ_CPU_INTENSIVE, 8);
24282 +- if (!xfs_ail_wq)
24283 +- goto out_destroy_syncd;
24284 +-
24285 ++ return -ENOMEM;
24286 + return 0;
24287 +-
24288 +-out_destroy_syncd:
24289 +- destroy_workqueue(xfs_syncd_wq);
24290 +-out:
24291 +- return -ENOMEM;
24292 + }
24293 +
24294 + STATIC void
24295 + xfs_destroy_workqueues(void)
24296 + {
24297 +- destroy_workqueue(xfs_ail_wq);
24298 + destroy_workqueue(xfs_syncd_wq);
24299 + }
24300 +
24301 +diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c
24302 +index 9e0e2fa..8126fc2 100644
24303 +--- a/fs/xfs/quota/xfs_dquot_item.c
24304 ++++ b/fs/xfs/quota/xfs_dquot_item.c
24305 +@@ -183,13 +183,14 @@ xfs_qm_dqunpin_wait(
24306 + * search the buffer cache can be a time consuming thing, and AIL lock is a
24307 + * spinlock.
24308 + */
24309 +-STATIC void
24310 ++STATIC bool
24311 + xfs_qm_dquot_logitem_pushbuf(
24312 + struct xfs_log_item *lip)
24313 + {
24314 + struct xfs_dq_logitem *qlip = DQUOT_ITEM(lip);
24315 + struct xfs_dquot *dqp = qlip->qli_dquot;
24316 + struct xfs_buf *bp;
24317 ++ bool ret = true;
24318 +
24319 + ASSERT(XFS_DQ_IS_LOCKED(dqp));
24320 +
24321 +@@ -201,17 +202,20 @@ xfs_qm_dquot_logitem_pushbuf(
24322 + if (completion_done(&dqp->q_flush) ||
24323 + !(lip->li_flags & XFS_LI_IN_AIL)) {
24324 + xfs_dqunlock(dqp);
24325 +- return;
24326 ++ return true;
24327 + }
24328 +
24329 + bp = xfs_incore(dqp->q_mount->m_ddev_targp, qlip->qli_format.qlf_blkno,
24330 + dqp->q_mount->m_quotainfo->qi_dqchunklen, XBF_TRYLOCK);
24331 + xfs_dqunlock(dqp);
24332 + if (!bp)
24333 +- return;
24334 ++ return true;
24335 + if (XFS_BUF_ISDELAYWRITE(bp))
24336 + xfs_buf_delwri_promote(bp);
24337 ++ if (XFS_BUF_ISPINNED(bp))
24338 ++ ret = false;
24339 + xfs_buf_relse(bp);
24340 ++ return ret;
24341 + }
24342 +
24343 + /*
24344 +diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
24345 +index 7b7e005..a7342e8 100644
24346 +--- a/fs/xfs/xfs_buf_item.c
24347 ++++ b/fs/xfs/xfs_buf_item.c
24348 +@@ -632,7 +632,7 @@ xfs_buf_item_push(
24349 + * the xfsbufd to get this buffer written. We have to unlock the buffer
24350 + * to allow the xfsbufd to write it, too.
24351 + */
24352 +-STATIC void
24353 ++STATIC bool
24354 + xfs_buf_item_pushbuf(
24355 + struct xfs_log_item *lip)
24356 + {
24357 +@@ -646,6 +646,7 @@ xfs_buf_item_pushbuf(
24358 +
24359 + xfs_buf_delwri_promote(bp);
24360 + xfs_buf_relse(bp);
24361 ++ return true;
24362 + }
24363 +
24364 + STATIC void
24365 +diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c
24366 +index b1e88d5..391044c 100644
24367 +--- a/fs/xfs/xfs_inode_item.c
24368 ++++ b/fs/xfs/xfs_inode_item.c
24369 +@@ -713,13 +713,14 @@ xfs_inode_item_committed(
24370 + * marked delayed write. If that's the case, we'll promote it and that will
24371 + * allow the caller to write the buffer by triggering the xfsbufd to run.
24372 + */
24373 +-STATIC void
24374 ++STATIC bool
24375 + xfs_inode_item_pushbuf(
24376 + struct xfs_log_item *lip)
24377 + {
24378 + struct xfs_inode_log_item *iip = INODE_ITEM(lip);
24379 + struct xfs_inode *ip = iip->ili_inode;
24380 + struct xfs_buf *bp;
24381 ++ bool ret = true;
24382 +
24383 + ASSERT(xfs_isilocked(ip, XFS_ILOCK_SHARED));
24384 +
24385 +@@ -730,7 +731,7 @@ xfs_inode_item_pushbuf(
24386 + if (completion_done(&ip->i_flush) ||
24387 + !(lip->li_flags & XFS_LI_IN_AIL)) {
24388 + xfs_iunlock(ip, XFS_ILOCK_SHARED);
24389 +- return;
24390 ++ return true;
24391 + }
24392 +
24393 + bp = xfs_incore(ip->i_mount->m_ddev_targp, iip->ili_format.ilf_blkno,
24394 +@@ -738,10 +739,13 @@ xfs_inode_item_pushbuf(
24395 +
24396 + xfs_iunlock(ip, XFS_ILOCK_SHARED);
24397 + if (!bp)
24398 +- return;
24399 ++ return true;
24400 + if (XFS_BUF_ISDELAYWRITE(bp))
24401 + xfs_buf_delwri_promote(bp);
24402 ++ if (XFS_BUF_ISPINNED(bp))
24403 ++ ret = false;
24404 + xfs_buf_relse(bp);
24405 ++ return ret;
24406 + }
24407 +
24408 + /*
24409 +diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c
24410 +index c83f63b..efc147f 100644
24411 +--- a/fs/xfs/xfs_trans.c
24412 ++++ b/fs/xfs/xfs_trans.c
24413 +@@ -1426,6 +1426,7 @@ xfs_trans_committed(
24414 + static inline void
24415 + xfs_log_item_batch_insert(
24416 + struct xfs_ail *ailp,
24417 ++ struct xfs_ail_cursor *cur,
24418 + struct xfs_log_item **log_items,
24419 + int nr_items,
24420 + xfs_lsn_t commit_lsn)
24421 +@@ -1434,7 +1435,7 @@ xfs_log_item_batch_insert(
24422 +
24423 + spin_lock(&ailp->xa_lock);
24424 + /* xfs_trans_ail_update_bulk drops ailp->xa_lock */
24425 +- xfs_trans_ail_update_bulk(ailp, log_items, nr_items, commit_lsn);
24426 ++ xfs_trans_ail_update_bulk(ailp, cur, log_items, nr_items, commit_lsn);
24427 +
24428 + for (i = 0; i < nr_items; i++)
24429 + IOP_UNPIN(log_items[i], 0);
24430 +@@ -1452,6 +1453,13 @@ xfs_log_item_batch_insert(
24431 + * as an iclog write error even though we haven't started any IO yet. Hence in
24432 + * this case all we need to do is IOP_COMMITTED processing, followed by an
24433 + * IOP_UNPIN(aborted) call.
24434 ++ *
24435 ++ * The AIL cursor is used to optimise the insert process. If commit_lsn is not
24436 ++ * at the end of the AIL, the insert cursor avoids the need to walk
24437 ++ * the AIL to find the insertion point on every xfs_log_item_batch_insert()
24438 ++ * call. This saves a lot of needless list walking and is a net win, even
24439 ++ * though it slightly increases that amount of AIL lock traffic to set it up
24440 ++ * and tear it down.
24441 + */
24442 + void
24443 + xfs_trans_committed_bulk(
24444 +@@ -1463,8 +1471,13 @@ xfs_trans_committed_bulk(
24445 + #define LOG_ITEM_BATCH_SIZE 32
24446 + struct xfs_log_item *log_items[LOG_ITEM_BATCH_SIZE];
24447 + struct xfs_log_vec *lv;
24448 ++ struct xfs_ail_cursor cur;
24449 + int i = 0;
24450 +
24451 ++ spin_lock(&ailp->xa_lock);
24452 ++ xfs_trans_ail_cursor_last(ailp, &cur, commit_lsn);
24453 ++ spin_unlock(&ailp->xa_lock);
24454 ++
24455 + /* unpin all the log items */
24456 + for (lv = log_vector; lv; lv = lv->lv_next ) {
24457 + struct xfs_log_item *lip = lv->lv_item;
24458 +@@ -1493,7 +1506,9 @@ xfs_trans_committed_bulk(
24459 + /*
24460 + * Not a bulk update option due to unusual item_lsn.
24461 + * Push into AIL immediately, rechecking the lsn once
24462 +- * we have the ail lock. Then unpin the item.
24463 ++ * we have the ail lock. Then unpin the item. This does
24464 ++ * not affect the AIL cursor the bulk insert path is
24465 ++ * using.
24466 + */
24467 + spin_lock(&ailp->xa_lock);
24468 + if (XFS_LSN_CMP(item_lsn, lip->li_lsn) > 0)
24469 +@@ -1507,7 +1522,7 @@ xfs_trans_committed_bulk(
24470 + /* Item is a candidate for bulk AIL insert. */
24471 + log_items[i++] = lv->lv_item;
24472 + if (i >= LOG_ITEM_BATCH_SIZE) {
24473 +- xfs_log_item_batch_insert(ailp, log_items,
24474 ++ xfs_log_item_batch_insert(ailp, &cur, log_items,
24475 + LOG_ITEM_BATCH_SIZE, commit_lsn);
24476 + i = 0;
24477 + }
24478 +@@ -1515,7 +1530,11 @@ xfs_trans_committed_bulk(
24479 +
24480 + /* make sure we insert the remainder! */
24481 + if (i)
24482 +- xfs_log_item_batch_insert(ailp, log_items, i, commit_lsn);
24483 ++ xfs_log_item_batch_insert(ailp, &cur, log_items, i, commit_lsn);
24484 ++
24485 ++ spin_lock(&ailp->xa_lock);
24486 ++ xfs_trans_ail_cursor_done(ailp, &cur);
24487 ++ spin_unlock(&ailp->xa_lock);
24488 + }
24489 +
24490 + /*
24491 +diff --git a/fs/xfs/xfs_trans.h b/fs/xfs/xfs_trans.h
24492 +index 06a9759..53597f4 100644
24493 +--- a/fs/xfs/xfs_trans.h
24494 ++++ b/fs/xfs/xfs_trans.h
24495 +@@ -350,7 +350,7 @@ typedef struct xfs_item_ops {
24496 + void (*iop_unlock)(xfs_log_item_t *);
24497 + xfs_lsn_t (*iop_committed)(xfs_log_item_t *, xfs_lsn_t);
24498 + void (*iop_push)(xfs_log_item_t *);
24499 +- void (*iop_pushbuf)(xfs_log_item_t *);
24500 ++ bool (*iop_pushbuf)(xfs_log_item_t *);
24501 + void (*iop_committing)(xfs_log_item_t *, xfs_lsn_t);
24502 + } xfs_item_ops_t;
24503 +
24504 +diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c
24505 +index 5fc2380..a4c281b 100644
24506 +--- a/fs/xfs/xfs_trans_ail.c
24507 ++++ b/fs/xfs/xfs_trans_ail.c
24508 +@@ -28,8 +28,6 @@
24509 + #include "xfs_trans_priv.h"
24510 + #include "xfs_error.h"
24511 +
24512 +-struct workqueue_struct *xfs_ail_wq; /* AIL workqueue */
24513 +-
24514 + #ifdef DEBUG
24515 + /*
24516 + * Check that the list is sorted as it should be.
24517 +@@ -272,9 +270,9 @@ xfs_trans_ail_cursor_clear(
24518 + }
24519 +
24520 + /*
24521 +- * Return the item in the AIL with the current lsn.
24522 +- * Return the current tree generation number for use
24523 +- * in calls to xfs_trans_next_ail().
24524 ++ * Initialise the cursor to the first item in the AIL with the given @lsn.
24525 ++ * This searches the list from lowest LSN to highest. Pass a @lsn of zero
24526 ++ * to initialise the cursor to the first item in the AIL.
24527 + */
24528 + xfs_log_item_t *
24529 + xfs_trans_ail_cursor_first(
24530 +@@ -300,31 +298,97 @@ out:
24531 + }
24532 +
24533 + /*
24534 +- * splice the log item list into the AIL at the given LSN.
24535 ++ * Initialise the cursor to the last item in the AIL with the given @lsn.
24536 ++ * This searches the list from highest LSN to lowest. If there is no item with
24537 ++ * the value of @lsn, then it sets the cursor to the last item with an LSN lower
24538 ++ * than @lsn.
24539 ++ */
24540 ++static struct xfs_log_item *
24541 ++__xfs_trans_ail_cursor_last(
24542 ++ struct xfs_ail *ailp,
24543 ++ xfs_lsn_t lsn)
24544 ++{
24545 ++ xfs_log_item_t *lip;
24546 ++
24547 ++ list_for_each_entry_reverse(lip, &ailp->xa_ail, li_ail) {
24548 ++ if (XFS_LSN_CMP(lip->li_lsn, lsn) <= 0)
24549 ++ return lip;
24550 ++ }
24551 ++ return NULL;
24552 ++}
24553 ++
24554 ++/*
24555 ++ * Initialise the cursor to the last item in the AIL with the given @lsn.
24556 ++ * This searches the list from highest LSN to lowest.
24557 ++ */
24558 ++struct xfs_log_item *
24559 ++xfs_trans_ail_cursor_last(
24560 ++ struct xfs_ail *ailp,
24561 ++ struct xfs_ail_cursor *cur,
24562 ++ xfs_lsn_t lsn)
24563 ++{
24564 ++ xfs_trans_ail_cursor_init(ailp, cur);
24565 ++ cur->item = __xfs_trans_ail_cursor_last(ailp, lsn);
24566 ++ return cur->item;
24567 ++}
24568 ++
24569 ++/*
24570 ++ * splice the log item list into the AIL at the given LSN. We splice to the
24571 ++ * tail of the given LSN to maintain insert order for push traversals. The
24572 ++ * cursor is optional, allowing repeated updates to the same LSN to avoid
24573 ++ * repeated traversals.
24574 + */
24575 + static void
24576 + xfs_ail_splice(
24577 +- struct xfs_ail *ailp,
24578 +- struct list_head *list,
24579 +- xfs_lsn_t lsn)
24580 ++ struct xfs_ail *ailp,
24581 ++ struct xfs_ail_cursor *cur,
24582 ++ struct list_head *list,
24583 ++ xfs_lsn_t lsn)
24584 + {
24585 +- xfs_log_item_t *next_lip;
24586 ++ struct xfs_log_item *lip = cur ? cur->item : NULL;
24587 ++ struct xfs_log_item *next_lip;
24588 +
24589 +- /* If the list is empty, just insert the item. */
24590 +- if (list_empty(&ailp->xa_ail)) {
24591 +- list_splice(list, &ailp->xa_ail);
24592 +- return;
24593 ++ /*
24594 ++ * Get a new cursor if we don't have a placeholder or the existing one
24595 ++ * has been invalidated.
24596 ++ */
24597 ++ if (!lip || (__psint_t)lip & 1) {
24598 ++ lip = __xfs_trans_ail_cursor_last(ailp, lsn);
24599 ++
24600 ++ if (!lip) {
24601 ++ /* The list is empty, so just splice and return. */
24602 ++ if (cur)
24603 ++ cur->item = NULL;
24604 ++ list_splice(list, &ailp->xa_ail);
24605 ++ return;
24606 ++ }
24607 + }
24608 +
24609 +- list_for_each_entry_reverse(next_lip, &ailp->xa_ail, li_ail) {
24610 +- if (XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0)
24611 +- break;
24612 ++ /*
24613 ++ * Our cursor points to the item we want to insert _after_, so we have
24614 ++ * to update the cursor to point to the end of the list we are splicing
24615 ++ * in so that it points to the correct location for the next splice.
24616 ++ * i.e. before the splice
24617 ++ *
24618 ++ * lsn -> lsn -> lsn + x -> lsn + x ...
24619 ++ * ^
24620 ++ * | cursor points here
24621 ++ *
24622 ++ * After the splice we have:
24623 ++ *
24624 ++ * lsn -> lsn -> lsn -> lsn -> .... -> lsn -> lsn + x -> lsn + x ...
24625 ++ * ^ ^
24626 ++ * | cursor points here | needs to move here
24627 ++ *
24628 ++ * So we set the cursor to the last item in the list to be spliced
24629 ++ * before we execute the splice, resulting in the cursor pointing to
24630 ++ * the correct item after the splice occurs.
24631 ++ */
24632 ++ if (cur) {
24633 ++ next_lip = list_entry(list->prev, struct xfs_log_item, li_ail);
24634 ++ cur->item = next_lip;
24635 + }
24636 +-
24637 +- ASSERT(&next_lip->li_ail == &ailp->xa_ail ||
24638 +- XFS_LSN_CMP(next_lip->li_lsn, lsn) <= 0);
24639 +-
24640 +- list_splice_init(list, &next_lip->li_ail);
24641 ++ list_splice(list, &lip->li_ail);
24642 + }
24643 +
24644 + /*
24645 +@@ -340,16 +404,10 @@ xfs_ail_delete(
24646 + xfs_trans_ail_cursor_clear(ailp, lip);
24647 + }
24648 +
24649 +-/*
24650 +- * xfs_ail_worker does the work of pushing on the AIL. It will requeue itself
24651 +- * to run at a later time if there is more work to do to complete the push.
24652 +- */
24653 +-STATIC void
24654 +-xfs_ail_worker(
24655 +- struct work_struct *work)
24656 ++static long
24657 ++xfsaild_push(
24658 ++ struct xfs_ail *ailp)
24659 + {
24660 +- struct xfs_ail *ailp = container_of(to_delayed_work(work),
24661 +- struct xfs_ail, xa_work);
24662 + xfs_mount_t *mp = ailp->xa_mount;
24663 + struct xfs_ail_cursor *cur = &ailp->xa_cursors;
24664 + xfs_log_item_t *lip;
24665 +@@ -412,8 +470,13 @@ xfs_ail_worker(
24666 +
24667 + case XFS_ITEM_PUSHBUF:
24668 + XFS_STATS_INC(xs_push_ail_pushbuf);
24669 +- IOP_PUSHBUF(lip);
24670 +- ailp->xa_last_pushed_lsn = lsn;
24671 ++
24672 ++ if (!IOP_PUSHBUF(lip)) {
24673 ++ stuck++;
24674 ++ flush_log = 1;
24675 ++ } else {
24676 ++ ailp->xa_last_pushed_lsn = lsn;
24677 ++ }
24678 + push_xfsbufd = 1;
24679 + break;
24680 +
24681 +@@ -425,7 +488,6 @@ xfs_ail_worker(
24682 +
24683 + case XFS_ITEM_LOCKED:
24684 + XFS_STATS_INC(xs_push_ail_locked);
24685 +- ailp->xa_last_pushed_lsn = lsn;
24686 + stuck++;
24687 + break;
24688 +
24689 +@@ -486,20 +548,6 @@ out_done:
24690 + /* We're past our target or empty, so idle */
24691 + ailp->xa_last_pushed_lsn = 0;
24692 +
24693 +- /*
24694 +- * We clear the XFS_AIL_PUSHING_BIT first before checking
24695 +- * whether the target has changed. If the target has changed,
24696 +- * this pushes the requeue race directly onto the result of the
24697 +- * atomic test/set bit, so we are guaranteed that either the
24698 +- * the pusher that changed the target or ourselves will requeue
24699 +- * the work (but not both).
24700 +- */
24701 +- clear_bit(XFS_AIL_PUSHING_BIT, &ailp->xa_flags);
24702 +- smp_rmb();
24703 +- if (XFS_LSN_CMP(ailp->xa_target, target) == 0 ||
24704 +- test_and_set_bit(XFS_AIL_PUSHING_BIT, &ailp->xa_flags))
24705 +- return;
24706 +-
24707 + tout = 50;
24708 + } else if (XFS_LSN_CMP(lsn, target) >= 0) {
24709 + /*
24710 +@@ -522,9 +570,30 @@ out_done:
24711 + tout = 20;
24712 + }
24713 +
24714 +- /* There is more to do, requeue us. */
24715 +- queue_delayed_work(xfs_syncd_wq, &ailp->xa_work,
24716 +- msecs_to_jiffies(tout));
24717 ++ return tout;
24718 ++}
24719 ++
24720 ++static int
24721 ++xfsaild(
24722 ++ void *data)
24723 ++{
24724 ++ struct xfs_ail *ailp = data;
24725 ++ long tout = 0; /* milliseconds */
24726 ++
24727 ++ while (!kthread_should_stop()) {
24728 ++ if (tout && tout <= 20)
24729 ++ __set_current_state(TASK_KILLABLE);
24730 ++ else
24731 ++ __set_current_state(TASK_INTERRUPTIBLE);
24732 ++ schedule_timeout(tout ?
24733 ++ msecs_to_jiffies(tout) : MAX_SCHEDULE_TIMEOUT);
24734 ++
24735 ++ try_to_freeze();
24736 ++
24737 ++ tout = xfsaild_push(ailp);
24738 ++ }
24739 ++
24740 ++ return 0;
24741 + }
24742 +
24743 + /*
24744 +@@ -559,8 +628,9 @@ xfs_ail_push(
24745 + */
24746 + smp_wmb();
24747 + xfs_trans_ail_copy_lsn(ailp, &ailp->xa_target, &threshold_lsn);
24748 +- if (!test_and_set_bit(XFS_AIL_PUSHING_BIT, &ailp->xa_flags))
24749 +- queue_delayed_work(xfs_syncd_wq, &ailp->xa_work, 0);
24750 ++ smp_wmb();
24751 ++
24752 ++ wake_up_process(ailp->xa_task);
24753 + }
24754 +
24755 + /*
24756 +@@ -645,6 +715,7 @@ xfs_trans_unlocked_item(
24757 + void
24758 + xfs_trans_ail_update_bulk(
24759 + struct xfs_ail *ailp,
24760 ++ struct xfs_ail_cursor *cur,
24761 + struct xfs_log_item **log_items,
24762 + int nr_items,
24763 + xfs_lsn_t lsn) __releases(ailp->xa_lock)
24764 +@@ -674,7 +745,7 @@ xfs_trans_ail_update_bulk(
24765 + list_add(&lip->li_ail, &tmp);
24766 + }
24767 +
24768 +- xfs_ail_splice(ailp, &tmp, lsn);
24769 ++ xfs_ail_splice(ailp, cur, &tmp, lsn);
24770 +
24771 + if (!mlip_changed) {
24772 + spin_unlock(&ailp->xa_lock);
24773 +@@ -794,9 +865,18 @@ xfs_trans_ail_init(
24774 + ailp->xa_mount = mp;
24775 + INIT_LIST_HEAD(&ailp->xa_ail);
24776 + spin_lock_init(&ailp->xa_lock);
24777 +- INIT_DELAYED_WORK(&ailp->xa_work, xfs_ail_worker);
24778 ++
24779 ++ ailp->xa_task = kthread_run(xfsaild, ailp, "xfsaild/%s",
24780 ++ ailp->xa_mount->m_fsname);
24781 ++ if (IS_ERR(ailp->xa_task))
24782 ++ goto out_free_ailp;
24783 ++
24784 + mp->m_ail = ailp;
24785 + return 0;
24786 ++
24787 ++out_free_ailp:
24788 ++ kmem_free(ailp);
24789 ++ return ENOMEM;
24790 + }
24791 +
24792 + void
24793 +@@ -805,6 +885,6 @@ xfs_trans_ail_destroy(
24794 + {
24795 + struct xfs_ail *ailp = mp->m_ail;
24796 +
24797 +- cancel_delayed_work_sync(&ailp->xa_work);
24798 ++ kthread_stop(ailp->xa_task);
24799 + kmem_free(ailp);
24800 + }
24801 +diff --git a/fs/xfs/xfs_trans_priv.h b/fs/xfs/xfs_trans_priv.h
24802 +index 6b164e9..fe2e3cb 100644
24803 +--- a/fs/xfs/xfs_trans_priv.h
24804 ++++ b/fs/xfs/xfs_trans_priv.h
24805 +@@ -64,24 +64,19 @@ struct xfs_ail_cursor {
24806 + */
24807 + struct xfs_ail {
24808 + struct xfs_mount *xa_mount;
24809 ++ struct task_struct *xa_task;
24810 + struct list_head xa_ail;
24811 + xfs_lsn_t xa_target;
24812 + struct xfs_ail_cursor xa_cursors;
24813 + spinlock_t xa_lock;
24814 +- struct delayed_work xa_work;
24815 + xfs_lsn_t xa_last_pushed_lsn;
24816 +- unsigned long xa_flags;
24817 + };
24818 +
24819 +-#define XFS_AIL_PUSHING_BIT 0
24820 +-
24821 + /*
24822 + * From xfs_trans_ail.c
24823 + */
24824 +-
24825 +-extern struct workqueue_struct *xfs_ail_wq; /* AIL workqueue */
24826 +-
24827 + void xfs_trans_ail_update_bulk(struct xfs_ail *ailp,
24828 ++ struct xfs_ail_cursor *cur,
24829 + struct xfs_log_item **log_items, int nr_items,
24830 + xfs_lsn_t lsn) __releases(ailp->xa_lock);
24831 + static inline void
24832 +@@ -90,7 +85,7 @@ xfs_trans_ail_update(
24833 + struct xfs_log_item *lip,
24834 + xfs_lsn_t lsn) __releases(ailp->xa_lock)
24835 + {
24836 +- xfs_trans_ail_update_bulk(ailp, &lip, 1, lsn);
24837 ++ xfs_trans_ail_update_bulk(ailp, NULL, &lip, 1, lsn);
24838 + }
24839 +
24840 + void xfs_trans_ail_delete_bulk(struct xfs_ail *ailp,
24841 +@@ -111,10 +106,13 @@ xfs_lsn_t xfs_ail_min_lsn(struct xfs_ail *ailp);
24842 + void xfs_trans_unlocked_item(struct xfs_ail *,
24843 + xfs_log_item_t *);
24844 +
24845 +-struct xfs_log_item *xfs_trans_ail_cursor_first(struct xfs_ail *ailp,
24846 ++struct xfs_log_item * xfs_trans_ail_cursor_first(struct xfs_ail *ailp,
24847 ++ struct xfs_ail_cursor *cur,
24848 ++ xfs_lsn_t lsn);
24849 ++struct xfs_log_item * xfs_trans_ail_cursor_last(struct xfs_ail *ailp,
24850 + struct xfs_ail_cursor *cur,
24851 + xfs_lsn_t lsn);
24852 +-struct xfs_log_item *xfs_trans_ail_cursor_next(struct xfs_ail *ailp,
24853 ++struct xfs_log_item * xfs_trans_ail_cursor_next(struct xfs_ail *ailp,
24854 + struct xfs_ail_cursor *cur);
24855 + void xfs_trans_ail_cursor_done(struct xfs_ail *ailp,
24856 + struct xfs_ail_cursor *cur);
24857 +diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
24858 +index c8008dd..640ded8 100644
24859 +--- a/kernel/posix-cpu-timers.c
24860 ++++ b/kernel/posix-cpu-timers.c
24861 +@@ -274,9 +274,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times)
24862 + struct task_cputime sum;
24863 + unsigned long flags;
24864 +
24865 +- spin_lock_irqsave(&cputimer->lock, flags);
24866 + if (!cputimer->running) {
24867 +- cputimer->running = 1;
24868 + /*
24869 + * The POSIX timer interface allows for absolute time expiry
24870 + * values through the TIMER_ABSTIME flag, therefore we have
24871 +@@ -284,8 +282,11 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times)
24872 + * it.
24873 + */
24874 + thread_group_cputime(tsk, &sum);
24875 ++ spin_lock_irqsave(&cputimer->lock, flags);
24876 ++ cputimer->running = 1;
24877 + update_gt_cputime(&cputimer->cputime, &sum);
24878 +- }
24879 ++ } else
24880 ++ spin_lock_irqsave(&cputimer->lock, flags);
24881 + *times = cputimer->cputime;
24882 + spin_unlock_irqrestore(&cputimer->lock, flags);
24883 + }
24884 +diff --git a/kernel/sys.c b/kernel/sys.c
24885 +index 5c942cf..f88dadc 100644
24886 +--- a/kernel/sys.c
24887 ++++ b/kernel/sys.c
24888 +@@ -1135,7 +1135,7 @@ DECLARE_RWSEM(uts_sem);
24889 + static int override_release(char __user *release, int len)
24890 + {
24891 + int ret = 0;
24892 +- char buf[len];
24893 ++ char buf[65];
24894 +
24895 + if (current->personality & UNAME26) {
24896 + char *rest = UTS_RELEASE;
24897 +diff --git a/mm/migrate.c b/mm/migrate.c
24898 +index 666e4e6..14d0a6a 100644
24899 +--- a/mm/migrate.c
24900 ++++ b/mm/migrate.c
24901 +@@ -120,10 +120,10 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma,
24902 +
24903 + ptep = pte_offset_map(pmd, addr);
24904 +
24905 +- if (!is_swap_pte(*ptep)) {
24906 +- pte_unmap(ptep);
24907 +- goto out;
24908 +- }
24909 ++ /*
24910 ++ * Peek to check is_swap_pte() before taking ptlock? No, we
24911 ++ * can race mremap's move_ptes(), which skips anon_vma lock.
24912 ++ */
24913 +
24914 + ptl = pte_lockptr(mm, pmd);
24915 + }
24916 +diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
24917 +index 4680b1e..373e14f 100644
24918 +--- a/net/x25/af_x25.c
24919 ++++ b/net/x25/af_x25.c
24920 +@@ -295,7 +295,8 @@ static struct sock *x25_find_listener(struct x25_address *addr,
24921 + * Found a listening socket, now check the incoming
24922 + * call user data vs this sockets call user data
24923 + */
24924 +- if(skb->len > 0 && x25_sk(s)->cudmatchlength > 0) {
24925 ++ if (x25_sk(s)->cudmatchlength > 0 &&
24926 ++ skb->len >= x25_sk(s)->cudmatchlength) {
24927 + if((memcmp(x25_sk(s)->calluserdata.cuddata,
24928 + skb->data,
24929 + x25_sk(s)->cudmatchlength)) == 0) {
24930 +diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
24931 +index 486f6de..981b6fd 100644
24932 +--- a/sound/pci/hda/hda_intel.c
24933 ++++ b/sound/pci/hda/hda_intel.c
24934 +@@ -2352,6 +2352,7 @@ static struct snd_pci_quirk position_fix_list[] __devinitdata = {
24935 + SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB),
24936 + SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB),
24937 + SND_PCI_QUIRK(0x1028, 0x01f6, "Dell Latitude 131L", POS_FIX_LPIB),
24938 ++ SND_PCI_QUIRK(0x1028, 0x02c6, "Dell Inspiron 1010", POS_FIX_LPIB),
24939 + SND_PCI_QUIRK(0x1028, 0x0470, "Dell Inspiron 1120", POS_FIX_LPIB),
24940 + SND_PCI_QUIRK(0x103c, 0x306d, "HP dv3", POS_FIX_LPIB),
24941 + SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB),
24942 +diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
24943 +index 7bbc5f2..cf1fa36 100644
24944 +--- a/sound/pci/hda/patch_conexant.c
24945 ++++ b/sound/pci/hda/patch_conexant.c
24946 +@@ -3097,6 +3097,7 @@ static const struct snd_pci_quirk cxt5066_cfg_tbl[] = {
24947 + SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD),
24948 + SND_PCI_QUIRK(0x17aa, 0x21c6, "Thinkpad Edge 13", CXT5066_ASUS),
24949 + SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD),
24950 ++ SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520 & W520", CXT5066_AUTO),
24951 + SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT5066_THINKPAD),
24952 + SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT5066_THINKPAD),
24953 + SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo U350", CXT5066_ASUS),
24954
24955 diff --git a/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch b/3.0.8/4420_grsecurity-2.2.2-3.0.8-201111010529.patch
24956 similarity index 65%
24957 rename from 2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
24958 rename to 3.0.8/4420_grsecurity-2.2.2-3.0.8-201111010529.patch
24959 index fa7931f..f64b14d 100644
24960 --- a/2.6.32/4420_grsecurity-2.2.2-2.6.32.48-201111121310.patch
24961 +++ b/3.0.8/4420_grsecurity-2.2.2-3.0.8-201111010529.patch
24962 @@ -1,7 +1,7 @@
24963 -diff -urNp linux-2.6.32.48/arch/alpha/include/asm/elf.h linux-2.6.32.48/arch/alpha/include/asm/elf.h
24964 ---- linux-2.6.32.48/arch/alpha/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
24965 -+++ linux-2.6.32.48/arch/alpha/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
24966 -@@ -91,6 +91,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
24967 +diff -urNp linux-3.0.8/arch/alpha/include/asm/elf.h linux-3.0.8/arch/alpha/include/asm/elf.h
24968 +--- linux-3.0.8/arch/alpha/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
24969 ++++ linux-3.0.8/arch/alpha/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
24970 +@@ -90,6 +90,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
24971
24972 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
24973
24974 @@ -15,9 +15,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/include/asm/elf.h linux-2.6.32.48/arch/alp
24975 /* $0 is set by ld.so to a pointer to a function which might be
24976 registered using atexit. This provides a mean for the dynamic
24977 linker to call DT_FINI functions for shared libraries that have
24978 -diff -urNp linux-2.6.32.48/arch/alpha/include/asm/pgtable.h linux-2.6.32.48/arch/alpha/include/asm/pgtable.h
24979 ---- linux-2.6.32.48/arch/alpha/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
24980 -+++ linux-2.6.32.48/arch/alpha/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
24981 +diff -urNp linux-3.0.8/arch/alpha/include/asm/pgtable.h linux-3.0.8/arch/alpha/include/asm/pgtable.h
24982 +--- linux-3.0.8/arch/alpha/include/asm/pgtable.h 2011-07-21 22:17:23.000000000 -0400
24983 ++++ linux-3.0.8/arch/alpha/include/asm/pgtable.h 2011-08-23 21:47:55.000000000 -0400
24984 @@ -101,6 +101,17 @@ struct vm_area_struct;
24985 #define PAGE_SHARED __pgprot(_PAGE_VALID | __ACCESS_BITS)
24986 #define PAGE_COPY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
24987 @@ -36,9 +36,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/include/asm/pgtable.h linux-2.6.32.48/arch
24988 #define PAGE_KERNEL __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE)
24989
24990 #define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x))
24991 -diff -urNp linux-2.6.32.48/arch/alpha/kernel/module.c linux-2.6.32.48/arch/alpha/kernel/module.c
24992 ---- linux-2.6.32.48/arch/alpha/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
24993 -+++ linux-2.6.32.48/arch/alpha/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
24994 +diff -urNp linux-3.0.8/arch/alpha/kernel/module.c linux-3.0.8/arch/alpha/kernel/module.c
24995 +--- linux-3.0.8/arch/alpha/kernel/module.c 2011-07-21 22:17:23.000000000 -0400
24996 ++++ linux-3.0.8/arch/alpha/kernel/module.c 2011-08-23 21:47:55.000000000 -0400
24997 @@ -182,7 +182,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs,
24998
24999 /* The small sections were sorted to the end of the segment.
25000 @@ -48,10 +48,10 @@ diff -urNp linux-2.6.32.48/arch/alpha/kernel/module.c linux-2.6.32.48/arch/alpha
25001 got = sechdrs[me->arch.gotsecindex].sh_addr;
25002
25003 for (i = 0; i < n; i++) {
25004 -diff -urNp linux-2.6.32.48/arch/alpha/kernel/osf_sys.c linux-2.6.32.48/arch/alpha/kernel/osf_sys.c
25005 ---- linux-2.6.32.48/arch/alpha/kernel/osf_sys.c 2011-11-12 12:44:28.000000000 -0500
25006 -+++ linux-2.6.32.48/arch/alpha/kernel/osf_sys.c 2011-11-12 12:46:42.000000000 -0500
25007 -@@ -1172,7 +1172,7 @@ arch_get_unmapped_area_1(unsigned long a
25008 +diff -urNp linux-3.0.8/arch/alpha/kernel/osf_sys.c linux-3.0.8/arch/alpha/kernel/osf_sys.c
25009 +--- linux-3.0.8/arch/alpha/kernel/osf_sys.c 2011-07-21 22:17:23.000000000 -0400
25010 ++++ linux-3.0.8/arch/alpha/kernel/osf_sys.c 2011-08-23 21:47:55.000000000 -0400
25011 +@@ -1145,7 +1145,7 @@ arch_get_unmapped_area_1(unsigned long a
25012 /* At this point: (!vma || addr < vma->vm_end). */
25013 if (limit - len < addr)
25014 return -ENOMEM;
25015 @@ -60,7 +60,7 @@ diff -urNp linux-2.6.32.48/arch/alpha/kernel/osf_sys.c linux-2.6.32.48/arch/alph
25016 return addr;
25017 addr = vma->vm_end;
25018 vma = vma->vm_next;
25019 -@@ -1208,6 +1208,10 @@ arch_get_unmapped_area(struct file *filp
25020 +@@ -1181,6 +1181,10 @@ arch_get_unmapped_area(struct file *filp
25021 merely specific addresses, but regions of memory -- perhaps
25022 this feature should be incorporated into all ports? */
25023
25024 @@ -71,7 +71,7 @@ diff -urNp linux-2.6.32.48/arch/alpha/kernel/osf_sys.c linux-2.6.32.48/arch/alph
25025 if (addr) {
25026 addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
25027 if (addr != (unsigned long) -ENOMEM)
25028 -@@ -1215,8 +1219,8 @@ arch_get_unmapped_area(struct file *filp
25029 +@@ -1188,8 +1192,8 @@ arch_get_unmapped_area(struct file *filp
25030 }
25031
25032 /* Next, try allocating at TASK_UNMAPPED_BASE. */
25033 @@ -82,9 +82,9 @@ diff -urNp linux-2.6.32.48/arch/alpha/kernel/osf_sys.c linux-2.6.32.48/arch/alph
25034 if (addr != (unsigned long) -ENOMEM)
25035 return addr;
25036
25037 -diff -urNp linux-2.6.32.48/arch/alpha/mm/fault.c linux-2.6.32.48/arch/alpha/mm/fault.c
25038 ---- linux-2.6.32.48/arch/alpha/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
25039 -+++ linux-2.6.32.48/arch/alpha/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
25040 +diff -urNp linux-3.0.8/arch/alpha/mm/fault.c linux-3.0.8/arch/alpha/mm/fault.c
25041 +--- linux-3.0.8/arch/alpha/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
25042 ++++ linux-3.0.8/arch/alpha/mm/fault.c 2011-08-23 21:47:55.000000000 -0400
25043 @@ -54,6 +54,124 @@ __load_new_mm_context(struct mm_struct *
25044 __reload_thread(pcb);
25045 }
25046 @@ -241,10 +241,10 @@ diff -urNp linux-2.6.32.48/arch/alpha/mm/fault.c linux-2.6.32.48/arch/alpha/mm/f
25047 } else if (!cause) {
25048 /* Allow reads even for write-only mappings */
25049 if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
25050 -diff -urNp linux-2.6.32.48/arch/arm/include/asm/elf.h linux-2.6.32.48/arch/arm/include/asm/elf.h
25051 ---- linux-2.6.32.48/arch/arm/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
25052 -+++ linux-2.6.32.48/arch/arm/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
25053 -@@ -109,7 +109,14 @@ int dump_task_regs(struct task_struct *t
25054 +diff -urNp linux-3.0.8/arch/arm/include/asm/elf.h linux-3.0.8/arch/arm/include/asm/elf.h
25055 +--- linux-3.0.8/arch/arm/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
25056 ++++ linux-3.0.8/arch/arm/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
25057 +@@ -116,7 +116,14 @@ int dump_task_regs(struct task_struct *t
25058 the loader. We need to make sure that it is out of the way of the program
25059 that it will "exec", and that there is sufficient room for the brk. */
25060
25061 @@ -260,20 +260,31 @@ diff -urNp linux-2.6.32.48/arch/arm/include/asm/elf.h linux-2.6.32.48/arch/arm/i
25062
25063 /* When the program starts, a1 contains a pointer to a function to be
25064 registered with atexit, as per the SVR4 ABI. A value of 0 means we
25065 -diff -urNp linux-2.6.32.48/arch/arm/include/asm/kmap_types.h linux-2.6.32.48/arch/arm/include/asm/kmap_types.h
25066 ---- linux-2.6.32.48/arch/arm/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
25067 -+++ linux-2.6.32.48/arch/arm/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
25068 -@@ -19,6 +19,7 @@ enum km_type {
25069 - KM_SOFTIRQ0,
25070 - KM_SOFTIRQ1,
25071 +@@ -126,10 +133,6 @@ int dump_task_regs(struct task_struct *t
25072 + extern void elf_set_personality(const struct elf32_hdr *);
25073 + #define SET_PERSONALITY(ex) elf_set_personality(&(ex))
25074 +
25075 +-struct mm_struct;
25076 +-extern unsigned long arch_randomize_brk(struct mm_struct *mm);
25077 +-#define arch_randomize_brk arch_randomize_brk
25078 +-
25079 + extern int vectors_user_mapping(void);
25080 + #define arch_setup_additional_pages(bprm, uses_interp) vectors_user_mapping()
25081 + #define ARCH_HAS_SETUP_ADDITIONAL_PAGES
25082 +diff -urNp linux-3.0.8/arch/arm/include/asm/kmap_types.h linux-3.0.8/arch/arm/include/asm/kmap_types.h
25083 +--- linux-3.0.8/arch/arm/include/asm/kmap_types.h 2011-07-21 22:17:23.000000000 -0400
25084 ++++ linux-3.0.8/arch/arm/include/asm/kmap_types.h 2011-08-23 21:47:55.000000000 -0400
25085 +@@ -21,6 +21,7 @@ enum km_type {
25086 + KM_L1_CACHE,
25087 KM_L2_CACHE,
25088 + KM_KDB,
25089 + KM_CLEARPAGE,
25090 KM_TYPE_NR
25091 };
25092
25093 -diff -urNp linux-2.6.32.48/arch/arm/include/asm/uaccess.h linux-2.6.32.48/arch/arm/include/asm/uaccess.h
25094 ---- linux-2.6.32.48/arch/arm/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
25095 -+++ linux-2.6.32.48/arch/arm/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
25096 +diff -urNp linux-3.0.8/arch/arm/include/asm/uaccess.h linux-3.0.8/arch/arm/include/asm/uaccess.h
25097 +--- linux-3.0.8/arch/arm/include/asm/uaccess.h 2011-07-21 22:17:23.000000000 -0400
25098 ++++ linux-3.0.8/arch/arm/include/asm/uaccess.h 2011-08-23 21:47:55.000000000 -0400
25099 @@ -22,6 +22,8 @@
25100 #define VERIFY_READ 0
25101 #define VERIFY_WRITE 1
25102 @@ -329,10 +340,10 @@ diff -urNp linux-2.6.32.48/arch/arm/include/asm/uaccess.h linux-2.6.32.48/arch/a
25103 if (access_ok(VERIFY_WRITE, to, n))
25104 n = __copy_to_user(to, from, n);
25105 return n;
25106 -diff -urNp linux-2.6.32.48/arch/arm/kernel/armksyms.c linux-2.6.32.48/arch/arm/kernel/armksyms.c
25107 ---- linux-2.6.32.48/arch/arm/kernel/armksyms.c 2009-12-02 22:51:21.000000000 -0500
25108 -+++ linux-2.6.32.48/arch/arm/kernel/armksyms.c 2011-11-12 12:46:42.000000000 -0500
25109 -@@ -118,8 +118,8 @@ EXPORT_SYMBOL(__strncpy_from_user);
25110 +diff -urNp linux-3.0.8/arch/arm/kernel/armksyms.c linux-3.0.8/arch/arm/kernel/armksyms.c
25111 +--- linux-3.0.8/arch/arm/kernel/armksyms.c 2011-07-21 22:17:23.000000000 -0400
25112 ++++ linux-3.0.8/arch/arm/kernel/armksyms.c 2011-08-23 21:47:55.000000000 -0400
25113 +@@ -98,8 +98,8 @@ EXPORT_SYMBOL(__strncpy_from_user);
25114 #ifdef CONFIG_MMU
25115 EXPORT_SYMBOL(copy_page);
25116
25117 @@ -343,42 +354,55 @@ diff -urNp linux-2.6.32.48/arch/arm/kernel/armksyms.c linux-2.6.32.48/arch/arm/k
25118 EXPORT_SYMBOL(__clear_user);
25119
25120 EXPORT_SYMBOL(__get_user_1);
25121 -diff -urNp linux-2.6.32.48/arch/arm/kernel/kgdb.c linux-2.6.32.48/arch/arm/kernel/kgdb.c
25122 ---- linux-2.6.32.48/arch/arm/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
25123 -+++ linux-2.6.32.48/arch/arm/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
25124 -@@ -190,7 +190,7 @@ void kgdb_arch_exit(void)
25125 - * and we handle the normal undef case within the do_undefinstr
25126 - * handler.
25127 - */
25128 --struct kgdb_arch arch_kgdb_ops = {
25129 -+const struct kgdb_arch arch_kgdb_ops = {
25130 - #ifndef __ARMEB__
25131 - .gdb_bpt_instr = {0xfe, 0xde, 0xff, 0xe7}
25132 - #else /* ! __ARMEB__ */
25133 -diff -urNp linux-2.6.32.48/arch/arm/kernel/traps.c linux-2.6.32.48/arch/arm/kernel/traps.c
25134 ---- linux-2.6.32.48/arch/arm/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
25135 -+++ linux-2.6.32.48/arch/arm/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
25136 -@@ -247,6 +247,8 @@ static void __die(const char *str, int e
25137 -
25138 - DEFINE_SPINLOCK(die_lock);
25139 +diff -urNp linux-3.0.8/arch/arm/kernel/process.c linux-3.0.8/arch/arm/kernel/process.c
25140 +--- linux-3.0.8/arch/arm/kernel/process.c 2011-07-21 22:17:23.000000000 -0400
25141 ++++ linux-3.0.8/arch/arm/kernel/process.c 2011-08-23 21:47:55.000000000 -0400
25142 +@@ -28,7 +28,6 @@
25143 + #include <linux/tick.h>
25144 + #include <linux/utsname.h>
25145 + #include <linux/uaccess.h>
25146 +-#include <linux/random.h>
25147 + #include <linux/hw_breakpoint.h>
25148 +
25149 + #include <asm/cacheflush.h>
25150 +@@ -479,12 +478,6 @@ unsigned long get_wchan(struct task_stru
25151 + return 0;
25152 + }
25153 +
25154 +-unsigned long arch_randomize_brk(struct mm_struct *mm)
25155 +-{
25156 +- unsigned long range_end = mm->brk + 0x02000000;
25157 +- return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
25158 +-}
25159 +-
25160 + #ifdef CONFIG_MMU
25161 + /*
25162 + * The vectors page is always readable from user space for the
25163 +diff -urNp linux-3.0.8/arch/arm/kernel/traps.c linux-3.0.8/arch/arm/kernel/traps.c
25164 +--- linux-3.0.8/arch/arm/kernel/traps.c 2011-07-21 22:17:23.000000000 -0400
25165 ++++ linux-3.0.8/arch/arm/kernel/traps.c 2011-08-23 21:48:14.000000000 -0400
25166 +@@ -257,6 +257,8 @@ static int __die(const char *str, int er
25167 +
25168 + static DEFINE_SPINLOCK(die_lock);
25169
25170 +extern void gr_handle_kernel_exploit(void);
25171 +
25172 /*
25173 * This function is protected against re-entrancy.
25174 */
25175 -@@ -271,6 +273,8 @@ NORET_TYPE void die(const char *str, str
25176 +@@ -284,6 +286,9 @@ void die(const char *str, struct pt_regs
25177 + panic("Fatal exception in interrupt");
25178 if (panic_on_oops)
25179 panic("Fatal exception");
25180 -
25181 ++
25182 + gr_handle_kernel_exploit();
25183 +
25184 - do_exit(SIGSEGV);
25185 + if (ret != NOTIFY_STOP)
25186 + do_exit(SIGSEGV);
25187 }
25188 -
25189 -diff -urNp linux-2.6.32.48/arch/arm/lib/copy_from_user.S linux-2.6.32.48/arch/arm/lib/copy_from_user.S
25190 ---- linux-2.6.32.48/arch/arm/lib/copy_from_user.S 2009-12-02 22:51:21.000000000 -0500
25191 -+++ linux-2.6.32.48/arch/arm/lib/copy_from_user.S 2011-11-12 12:46:42.000000000 -0500
25192 +diff -urNp linux-3.0.8/arch/arm/lib/copy_from_user.S linux-3.0.8/arch/arm/lib/copy_from_user.S
25193 +--- linux-3.0.8/arch/arm/lib/copy_from_user.S 2011-07-21 22:17:23.000000000 -0400
25194 ++++ linux-3.0.8/arch/arm/lib/copy_from_user.S 2011-08-23 21:47:55.000000000 -0400
25195 @@ -16,7 +16,7 @@
25196 /*
25197 * Prototype:
25198 @@ -400,11 +424,11 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/copy_from_user.S linux-2.6.32.48/arch/ar
25199 -ENDPROC(__copy_from_user)
25200 +ENDPROC(___copy_from_user)
25201
25202 - .section .fixup,"ax"
25203 + .pushsection .fixup,"ax"
25204 .align 0
25205 -diff -urNp linux-2.6.32.48/arch/arm/lib/copy_to_user.S linux-2.6.32.48/arch/arm/lib/copy_to_user.S
25206 ---- linux-2.6.32.48/arch/arm/lib/copy_to_user.S 2009-12-02 22:51:21.000000000 -0500
25207 -+++ linux-2.6.32.48/arch/arm/lib/copy_to_user.S 2011-11-12 12:46:42.000000000 -0500
25208 +diff -urNp linux-3.0.8/arch/arm/lib/copy_to_user.S linux-3.0.8/arch/arm/lib/copy_to_user.S
25209 +--- linux-3.0.8/arch/arm/lib/copy_to_user.S 2011-07-21 22:17:23.000000000 -0400
25210 ++++ linux-3.0.8/arch/arm/lib/copy_to_user.S 2011-08-23 21:47:55.000000000 -0400
25211 @@ -16,7 +16,7 @@
25212 /*
25213 * Prototype:
25214 @@ -425,13 +449,13 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/copy_to_user.S linux-2.6.32.48/arch/arm/
25215
25216 -ENDPROC(__copy_to_user)
25217 +ENDPROC(___copy_to_user)
25218 + ENDPROC(__copy_to_user_std)
25219
25220 - .section .fixup,"ax"
25221 - .align 0
25222 -diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess.S linux-2.6.32.48/arch/arm/lib/uaccess.S
25223 ---- linux-2.6.32.48/arch/arm/lib/uaccess.S 2009-12-02 22:51:21.000000000 -0500
25224 -+++ linux-2.6.32.48/arch/arm/lib/uaccess.S 2011-11-12 12:46:42.000000000 -0500
25225 -@@ -19,7 +19,7 @@
25226 + .pushsection .fixup,"ax"
25227 +diff -urNp linux-3.0.8/arch/arm/lib/uaccess.S linux-3.0.8/arch/arm/lib/uaccess.S
25228 +--- linux-3.0.8/arch/arm/lib/uaccess.S 2011-07-21 22:17:23.000000000 -0400
25229 ++++ linux-3.0.8/arch/arm/lib/uaccess.S 2011-08-23 21:47:55.000000000 -0400
25230 +@@ -20,7 +20,7 @@
25231
25232 #define PAGE_SHIFT 12
25233
25234 @@ -440,7 +464,7 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess.S linux-2.6.32.48/arch/arm/lib/u
25235 * Purpose : copy a block to user memory from kernel memory
25236 * Params : to - user memory
25237 * : from - kernel memory
25238 -@@ -39,7 +39,7 @@ USER( strgtbt r3, [r0], #1) @ May fau
25239 +@@ -40,7 +40,7 @@ USER( T(strgtb) r3, [r0], #1) @ May f
25240 sub r2, r2, ip
25241 b .Lc2u_dest_aligned
25242
25243 @@ -449,24 +473,24 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess.S linux-2.6.32.48/arch/arm/lib/u
25244 stmfd sp!, {r2, r4 - r7, lr}
25245 cmp r2, #4
25246 blt .Lc2u_not_enough
25247 -@@ -277,14 +277,14 @@ USER( strgebt r3, [r0], #1) @ May fau
25248 +@@ -278,14 +278,14 @@ USER( T(strgeb) r3, [r0], #1) @ May f
25249 ldrgtb r3, [r1], #0
25250 - USER( strgtbt r3, [r0], #1) @ May fault
25251 + USER( T(strgtb) r3, [r0], #1) @ May fault
25252 b .Lc2u_finished
25253 -ENDPROC(__copy_to_user)
25254 +ENDPROC(___copy_to_user)
25255
25256 - .section .fixup,"ax"
25257 + .pushsection .fixup,"ax"
25258 .align 0
25259 9001: ldmfd sp!, {r0, r4 - r7, pc}
25260 - .previous
25261 + .popsection
25262
25263 -/* Prototype: unsigned long __copy_from_user(void *to,const void *from,unsigned long n);
25264 +/* Prototype: unsigned long ___copy_from_user(void *to,const void *from,unsigned long n);
25265 * Purpose : copy a block from user memory to kernel memory
25266 * Params : to - kernel memory
25267 * : from - user memory
25268 -@@ -303,7 +303,7 @@ USER( ldrgtbt r3, [r1], #1) @ May fau
25269 +@@ -304,7 +304,7 @@ USER( T(ldrgtb) r3, [r1], #1) @ May f
25270 sub r2, r2, ip
25271 b .Lcfu_dest_aligned
25272
25273 @@ -475,19 +499,19 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess.S linux-2.6.32.48/arch/arm/lib/u
25274 stmfd sp!, {r0, r2, r4 - r7, lr}
25275 cmp r2, #4
25276 blt .Lcfu_not_enough
25277 -@@ -543,7 +543,7 @@ USER( ldrgebt r3, [r1], #1) @ May fau
25278 - USER( ldrgtbt r3, [r1], #1) @ May fault
25279 +@@ -544,7 +544,7 @@ USER( T(ldrgeb) r3, [r1], #1) @ May f
25280 + USER( T(ldrgtb) r3, [r1], #1) @ May fault
25281 strgtb r3, [r0], #1
25282 b .Lcfu_finished
25283 -ENDPROC(__copy_from_user)
25284 +ENDPROC(___copy_from_user)
25285
25286 - .section .fixup,"ax"
25287 + .pushsection .fixup,"ax"
25288 .align 0
25289 -diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c
25290 ---- linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c 2009-12-02 22:51:21.000000000 -0500
25291 -+++ linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c 2011-11-12 12:46:42.000000000 -0500
25292 -@@ -97,7 +97,7 @@ out:
25293 +diff -urNp linux-3.0.8/arch/arm/lib/uaccess_with_memcpy.c linux-3.0.8/arch/arm/lib/uaccess_with_memcpy.c
25294 +--- linux-3.0.8/arch/arm/lib/uaccess_with_memcpy.c 2011-07-21 22:17:23.000000000 -0400
25295 ++++ linux-3.0.8/arch/arm/lib/uaccess_with_memcpy.c 2011-08-23 21:47:55.000000000 -0400
25296 +@@ -103,7 +103,7 @@ out:
25297 }
25298
25299 unsigned long
25300 @@ -496,106 +520,22 @@ diff -urNp linux-2.6.32.48/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.32.48/ar
25301 {
25302 /*
25303 * This test is stubbed out of the main function above to keep
25304 -diff -urNp linux-2.6.32.48/arch/arm/mach-at91/pm.c linux-2.6.32.48/arch/arm/mach-at91/pm.c
25305 ---- linux-2.6.32.48/arch/arm/mach-at91/pm.c 2009-12-02 22:51:21.000000000 -0500
25306 -+++ linux-2.6.32.48/arch/arm/mach-at91/pm.c 2011-11-12 12:46:42.000000000 -0500
25307 -@@ -348,7 +348,7 @@ static void at91_pm_end(void)
25308 - }
25309 -
25310 -
25311 --static struct platform_suspend_ops at91_pm_ops ={
25312 -+static const struct platform_suspend_ops at91_pm_ops ={
25313 - .valid = at91_pm_valid_state,
25314 - .begin = at91_pm_begin,
25315 - .enter = at91_pm_enter,
25316 -diff -urNp linux-2.6.32.48/arch/arm/mach-omap1/pm.c linux-2.6.32.48/arch/arm/mach-omap1/pm.c
25317 ---- linux-2.6.32.48/arch/arm/mach-omap1/pm.c 2009-12-02 22:51:21.000000000 -0500
25318 -+++ linux-2.6.32.48/arch/arm/mach-omap1/pm.c 2011-11-12 12:46:42.000000000 -0500
25319 -@@ -647,7 +647,7 @@ static struct irqaction omap_wakeup_irq
25320 -
25321 -
25322 -
25323 --static struct platform_suspend_ops omap_pm_ops ={
25324 -+static const struct platform_suspend_ops omap_pm_ops ={
25325 - .prepare = omap_pm_prepare,
25326 - .enter = omap_pm_enter,
25327 - .finish = omap_pm_finish,
25328 -diff -urNp linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c
25329 ---- linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c 2009-12-02 22:51:21.000000000 -0500
25330 -+++ linux-2.6.32.48/arch/arm/mach-omap2/pm24xx.c 2011-11-12 12:46:42.000000000 -0500
25331 -@@ -326,7 +326,7 @@ static void omap2_pm_finish(void)
25332 - enable_hlt();
25333 - }
25334 -
25335 --static struct platform_suspend_ops omap_pm_ops = {
25336 -+static const struct platform_suspend_ops omap_pm_ops = {
25337 - .prepare = omap2_pm_prepare,
25338 - .enter = omap2_pm_enter,
25339 - .finish = omap2_pm_finish,
25340 -diff -urNp linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c
25341 ---- linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c 2009-12-02 22:51:21.000000000 -0500
25342 -+++ linux-2.6.32.48/arch/arm/mach-omap2/pm34xx.c 2011-11-12 12:46:42.000000000 -0500
25343 -@@ -401,7 +401,7 @@ static void omap3_pm_end(void)
25344 - return;
25345 +diff -urNp linux-3.0.8/arch/arm/mach-ux500/mbox-db5500.c linux-3.0.8/arch/arm/mach-ux500/mbox-db5500.c
25346 +--- linux-3.0.8/arch/arm/mach-ux500/mbox-db5500.c 2011-07-21 22:17:23.000000000 -0400
25347 ++++ linux-3.0.8/arch/arm/mach-ux500/mbox-db5500.c 2011-08-23 21:48:14.000000000 -0400
25348 +@@ -168,7 +168,7 @@ static ssize_t mbox_read_fifo(struct dev
25349 + return sprintf(buf, "0x%X\n", mbox_value);
25350 }
25351
25352 --static struct platform_suspend_ops omap_pm_ops = {
25353 -+static const struct platform_suspend_ops omap_pm_ops = {
25354 - .begin = omap3_pm_begin,
25355 - .end = omap3_pm_end,
25356 - .prepare = omap3_pm_prepare,
25357 -diff -urNp linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c
25358 ---- linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c 2009-12-02 22:51:21.000000000 -0500
25359 -+++ linux-2.6.32.48/arch/arm/mach-pnx4008/pm.c 2011-11-12 12:46:42.000000000 -0500
25360 -@@ -116,7 +116,7 @@ static int pnx4008_pm_valid(suspend_stat
25361 - (state == PM_SUSPEND_MEM);
25362 - }
25363 +-static DEVICE_ATTR(fifo, S_IWUGO | S_IRUGO, mbox_read_fifo, mbox_write_fifo);
25364 ++static DEVICE_ATTR(fifo, S_IWUSR | S_IRUGO, mbox_read_fifo, mbox_write_fifo);
25365
25366 --static struct platform_suspend_ops pnx4008_pm_ops = {
25367 -+static const struct platform_suspend_ops pnx4008_pm_ops = {
25368 - .enter = pnx4008_pm_enter,
25369 - .valid = pnx4008_pm_valid,
25370 - };
25371 -diff -urNp linux-2.6.32.48/arch/arm/mach-pxa/pm.c linux-2.6.32.48/arch/arm/mach-pxa/pm.c
25372 ---- linux-2.6.32.48/arch/arm/mach-pxa/pm.c 2009-12-02 22:51:21.000000000 -0500
25373 -+++ linux-2.6.32.48/arch/arm/mach-pxa/pm.c 2011-11-12 12:46:42.000000000 -0500
25374 -@@ -95,7 +95,7 @@ void pxa_pm_finish(void)
25375 - pxa_cpu_pm_fns->finish();
25376 - }
25377 -
25378 --static struct platform_suspend_ops pxa_pm_ops = {
25379 -+static const struct platform_suspend_ops pxa_pm_ops = {
25380 - .valid = pxa_pm_valid,
25381 - .enter = pxa_pm_enter,
25382 - .prepare = pxa_pm_prepare,
25383 -diff -urNp linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c
25384 ---- linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c 2009-12-02 22:51:21.000000000 -0500
25385 -+++ linux-2.6.32.48/arch/arm/mach-pxa/sharpsl_pm.c 2011-11-12 12:46:42.000000000 -0500
25386 -@@ -891,7 +891,7 @@ static void sharpsl_apm_get_power_status
25387 - }
25388 -
25389 - #ifdef CONFIG_PM
25390 --static struct platform_suspend_ops sharpsl_pm_ops = {
25391 -+static const struct platform_suspend_ops sharpsl_pm_ops = {
25392 - .prepare = pxa_pm_prepare,
25393 - .finish = pxa_pm_finish,
25394 - .enter = corgi_pxa_pm_enter,
25395 -diff -urNp linux-2.6.32.48/arch/arm/mach-sa1100/pm.c linux-2.6.32.48/arch/arm/mach-sa1100/pm.c
25396 ---- linux-2.6.32.48/arch/arm/mach-sa1100/pm.c 2009-12-02 22:51:21.000000000 -0500
25397 -+++ linux-2.6.32.48/arch/arm/mach-sa1100/pm.c 2011-11-12 12:46:42.000000000 -0500
25398 -@@ -120,7 +120,7 @@ unsigned long sleep_phys_sp(void *sp)
25399 - return virt_to_phys(sp);
25400 - }
25401 -
25402 --static struct platform_suspend_ops sa11x0_pm_ops = {
25403 -+static const struct platform_suspend_ops sa11x0_pm_ops = {
25404 - .enter = sa11x0_pm_enter,
25405 - .valid = suspend_valid_only_mem,
25406 - };
25407 -diff -urNp linux-2.6.32.48/arch/arm/mm/fault.c linux-2.6.32.48/arch/arm/mm/fault.c
25408 ---- linux-2.6.32.48/arch/arm/mm/fault.c 2011-11-12 12:44:28.000000000 -0500
25409 -+++ linux-2.6.32.48/arch/arm/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
25410 -@@ -166,6 +166,13 @@ __do_user_fault(struct task_struct *tsk,
25411 + static int mbox_show(struct seq_file *s, void *data)
25412 + {
25413 +diff -urNp linux-3.0.8/arch/arm/mm/fault.c linux-3.0.8/arch/arm/mm/fault.c
25414 +--- linux-3.0.8/arch/arm/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
25415 ++++ linux-3.0.8/arch/arm/mm/fault.c 2011-08-23 21:47:55.000000000 -0400
25416 +@@ -182,6 +182,13 @@ __do_user_fault(struct task_struct *tsk,
25417 }
25418 #endif
25419
25420 @@ -609,7 +549,7 @@ diff -urNp linux-2.6.32.48/arch/arm/mm/fault.c linux-2.6.32.48/arch/arm/mm/fault
25421 tsk->thread.address = addr;
25422 tsk->thread.error_code = fsr;
25423 tsk->thread.trap_no = 14;
25424 -@@ -357,6 +364,33 @@ do_page_fault(unsigned long addr, unsign
25425 +@@ -379,6 +386,33 @@ do_page_fault(unsigned long addr, unsign
25426 }
25427 #endif /* CONFIG_MMU */
25428
25429 @@ -643,10 +583,10 @@ diff -urNp linux-2.6.32.48/arch/arm/mm/fault.c linux-2.6.32.48/arch/arm/mm/fault
25430 /*
25431 * First Level Translation Fault Handler
25432 *
25433 -diff -urNp linux-2.6.32.48/arch/arm/mm/mmap.c linux-2.6.32.48/arch/arm/mm/mmap.c
25434 ---- linux-2.6.32.48/arch/arm/mm/mmap.c 2011-11-12 12:44:28.000000000 -0500
25435 -+++ linux-2.6.32.48/arch/arm/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
25436 -@@ -63,6 +63,10 @@ arch_get_unmapped_area(struct file *filp
25437 +diff -urNp linux-3.0.8/arch/arm/mm/mmap.c linux-3.0.8/arch/arm/mm/mmap.c
25438 +--- linux-3.0.8/arch/arm/mm/mmap.c 2011-07-21 22:17:23.000000000 -0400
25439 ++++ linux-3.0.8/arch/arm/mm/mmap.c 2011-08-23 21:47:55.000000000 -0400
25440 +@@ -65,6 +65,10 @@ arch_get_unmapped_area(struct file *filp
25441 if (len > TASK_SIZE)
25442 return -ENOMEM;
25443
25444 @@ -657,7 +597,7 @@ diff -urNp linux-2.6.32.48/arch/arm/mm/mmap.c linux-2.6.32.48/arch/arm/mm/mmap.c
25445 if (addr) {
25446 if (do_align)
25447 addr = COLOUR_ALIGN(addr, pgoff);
25448 -@@ -70,15 +74,14 @@ arch_get_unmapped_area(struct file *filp
25449 +@@ -72,15 +76,14 @@ arch_get_unmapped_area(struct file *filp
25450 addr = PAGE_ALIGN(addr);
25451
25452 vma = find_vma(mm, addr);
25453 @@ -675,9 +615,9 @@ diff -urNp linux-2.6.32.48/arch/arm/mm/mmap.c linux-2.6.32.48/arch/arm/mm/mmap.c
25454 + start_addr = addr = mm->mmap_base;
25455 + mm->cached_hole_size = 0;
25456 }
25457 -
25458 - full_search:
25459 -@@ -94,14 +97,14 @@ full_search:
25460 + /* 8 bits of randomness in 20 address space bits */
25461 + if ((current->flags & PF_RANDOMIZE) &&
25462 +@@ -100,14 +103,14 @@ full_search:
25463 * Start a new search - just in case we missed
25464 * some holes.
25465 */
25466 @@ -695,22 +635,10 @@ diff -urNp linux-2.6.32.48/arch/arm/mm/mmap.c linux-2.6.32.48/arch/arm/mm/mmap.c
25467 /*
25468 * Remember the place where we stopped the search:
25469 */
25470 -diff -urNp linux-2.6.32.48/arch/arm/plat-s3c/pm.c linux-2.6.32.48/arch/arm/plat-s3c/pm.c
25471 ---- linux-2.6.32.48/arch/arm/plat-s3c/pm.c 2009-12-02 22:51:21.000000000 -0500
25472 -+++ linux-2.6.32.48/arch/arm/plat-s3c/pm.c 2011-11-12 12:46:42.000000000 -0500
25473 -@@ -355,7 +355,7 @@ static void s3c_pm_finish(void)
25474 - s3c_pm_check_cleanup();
25475 - }
25476 -
25477 --static struct platform_suspend_ops s3c_pm_ops = {
25478 -+static const struct platform_suspend_ops s3c_pm_ops = {
25479 - .enter = s3c_pm_enter,
25480 - .prepare = s3c_pm_prepare,
25481 - .finish = s3c_pm_finish,
25482 -diff -urNp linux-2.6.32.48/arch/avr32/include/asm/elf.h linux-2.6.32.48/arch/avr32/include/asm/elf.h
25483 ---- linux-2.6.32.48/arch/avr32/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
25484 -+++ linux-2.6.32.48/arch/avr32/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
25485 -@@ -85,8 +85,14 @@ typedef struct user_fpu_struct elf_fpreg
25486 +diff -urNp linux-3.0.8/arch/avr32/include/asm/elf.h linux-3.0.8/arch/avr32/include/asm/elf.h
25487 +--- linux-3.0.8/arch/avr32/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
25488 ++++ linux-3.0.8/arch/avr32/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
25489 +@@ -84,8 +84,14 @@ typedef struct user_fpu_struct elf_fpreg
25490 the loader. We need to make sure that it is out of the way of the program
25491 that it will "exec", and that there is sufficient room for the brk. */
25492
25493 @@ -726,9 +654,9 @@ diff -urNp linux-2.6.32.48/arch/avr32/include/asm/elf.h linux-2.6.32.48/arch/avr
25494
25495 /* This yields a mask that user programs can use to figure out what
25496 instruction set this CPU supports. This could be done in user space,
25497 -diff -urNp linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h
25498 ---- linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
25499 -+++ linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
25500 +diff -urNp linux-3.0.8/arch/avr32/include/asm/kmap_types.h linux-3.0.8/arch/avr32/include/asm/kmap_types.h
25501 +--- linux-3.0.8/arch/avr32/include/asm/kmap_types.h 2011-07-21 22:17:23.000000000 -0400
25502 ++++ linux-3.0.8/arch/avr32/include/asm/kmap_types.h 2011-08-23 21:47:55.000000000 -0400
25503 @@ -22,7 +22,8 @@ D(10) KM_IRQ0,
25504 D(11) KM_IRQ1,
25505 D(12) KM_SOFTIRQ0,
25506 @@ -739,21 +667,9 @@ diff -urNp linux-2.6.32.48/arch/avr32/include/asm/kmap_types.h linux-2.6.32.48/a
25507 };
25508
25509 #undef D
25510 -diff -urNp linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c
25511 ---- linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c 2009-12-02 22:51:21.000000000 -0500
25512 -+++ linux-2.6.32.48/arch/avr32/mach-at32ap/pm.c 2011-11-12 12:46:42.000000000 -0500
25513 -@@ -176,7 +176,7 @@ out:
25514 - return 0;
25515 - }
25516 -
25517 --static struct platform_suspend_ops avr32_pm_ops = {
25518 -+static const struct platform_suspend_ops avr32_pm_ops = {
25519 - .valid = avr32_pm_valid_state,
25520 - .enter = avr32_pm_enter,
25521 - };
25522 -diff -urNp linux-2.6.32.48/arch/avr32/mm/fault.c linux-2.6.32.48/arch/avr32/mm/fault.c
25523 ---- linux-2.6.32.48/arch/avr32/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
25524 -+++ linux-2.6.32.48/arch/avr32/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
25525 +diff -urNp linux-3.0.8/arch/avr32/mm/fault.c linux-3.0.8/arch/avr32/mm/fault.c
25526 +--- linux-3.0.8/arch/avr32/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
25527 ++++ linux-3.0.8/arch/avr32/mm/fault.c 2011-08-23 21:47:55.000000000 -0400
25528 @@ -41,6 +41,23 @@ static inline int notify_page_fault(stru
25529
25530 int exception_trace = 1;
25531 @@ -778,7 +694,7 @@ diff -urNp linux-2.6.32.48/arch/avr32/mm/fault.c linux-2.6.32.48/arch/avr32/mm/f
25532 /*
25533 * This routine handles page faults. It determines the address and the
25534 * problem, and then passes it off to one of the appropriate routines.
25535 -@@ -157,6 +174,16 @@ bad_area:
25536 +@@ -156,6 +173,16 @@ bad_area:
25537 up_read(&mm->mmap_sem);
25538
25539 if (user_mode(regs)) {
25540 @@ -795,33 +711,9 @@ diff -urNp linux-2.6.32.48/arch/avr32/mm/fault.c linux-2.6.32.48/arch/avr32/mm/f
25541 if (exception_trace && printk_ratelimit())
25542 printk("%s%s[%d]: segfault at %08lx pc %08lx "
25543 "sp %08lx ecr %lu\n",
25544 -diff -urNp linux-2.6.32.48/arch/blackfin/kernel/kgdb.c linux-2.6.32.48/arch/blackfin/kernel/kgdb.c
25545 ---- linux-2.6.32.48/arch/blackfin/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
25546 -+++ linux-2.6.32.48/arch/blackfin/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
25547 -@@ -428,7 +428,7 @@ int kgdb_arch_handle_exception(int vecto
25548 - return -1; /* this means that we do not want to exit from the handler */
25549 - }
25550 -
25551 --struct kgdb_arch arch_kgdb_ops = {
25552 -+const struct kgdb_arch arch_kgdb_ops = {
25553 - .gdb_bpt_instr = {0xa1},
25554 - #ifdef CONFIG_SMP
25555 - .flags = KGDB_HW_BREAKPOINT|KGDB_THR_PROC_SWAP,
25556 -diff -urNp linux-2.6.32.48/arch/blackfin/mach-common/pm.c linux-2.6.32.48/arch/blackfin/mach-common/pm.c
25557 ---- linux-2.6.32.48/arch/blackfin/mach-common/pm.c 2009-12-02 22:51:21.000000000 -0500
25558 -+++ linux-2.6.32.48/arch/blackfin/mach-common/pm.c 2011-11-12 12:46:42.000000000 -0500
25559 -@@ -255,7 +255,7 @@ static int bfin_pm_enter(suspend_state_t
25560 - return 0;
25561 - }
25562 -
25563 --struct platform_suspend_ops bfin_pm_ops = {
25564 -+const struct platform_suspend_ops bfin_pm_ops = {
25565 - .enter = bfin_pm_enter,
25566 - .valid = bfin_pm_valid,
25567 - };
25568 -diff -urNp linux-2.6.32.48/arch/frv/include/asm/kmap_types.h linux-2.6.32.48/arch/frv/include/asm/kmap_types.h
25569 ---- linux-2.6.32.48/arch/frv/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
25570 -+++ linux-2.6.32.48/arch/frv/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
25571 +diff -urNp linux-3.0.8/arch/frv/include/asm/kmap_types.h linux-3.0.8/arch/frv/include/asm/kmap_types.h
25572 +--- linux-3.0.8/arch/frv/include/asm/kmap_types.h 2011-07-21 22:17:23.000000000 -0400
25573 ++++ linux-3.0.8/arch/frv/include/asm/kmap_types.h 2011-08-23 21:47:55.000000000 -0400
25574 @@ -23,6 +23,7 @@ enum km_type {
25575 KM_IRQ1,
25576 KM_SOFTIRQ0,
25577 @@ -830,9 +722,9 @@ diff -urNp linux-2.6.32.48/arch/frv/include/asm/kmap_types.h linux-2.6.32.48/arc
25578 KM_TYPE_NR
25579 };
25580
25581 -diff -urNp linux-2.6.32.48/arch/frv/mm/elf-fdpic.c linux-2.6.32.48/arch/frv/mm/elf-fdpic.c
25582 ---- linux-2.6.32.48/arch/frv/mm/elf-fdpic.c 2009-12-02 22:51:21.000000000 -0500
25583 -+++ linux-2.6.32.48/arch/frv/mm/elf-fdpic.c 2011-11-12 12:46:42.000000000 -0500
25584 +diff -urNp linux-3.0.8/arch/frv/mm/elf-fdpic.c linux-3.0.8/arch/frv/mm/elf-fdpic.c
25585 +--- linux-3.0.8/arch/frv/mm/elf-fdpic.c 2011-07-21 22:17:23.000000000 -0400
25586 ++++ linux-3.0.8/arch/frv/mm/elf-fdpic.c 2011-08-23 21:47:55.000000000 -0400
25587 @@ -73,8 +73,7 @@ unsigned long arch_get_unmapped_area(str
25588 if (addr) {
25589 addr = PAGE_ALIGN(addr);
25590 @@ -861,134 +753,10 @@ diff -urNp linux-2.6.32.48/arch/frv/mm/elf-fdpic.c linux-2.6.32.48/arch/frv/mm/e
25591 goto success;
25592 addr = vma->vm_end;
25593 }
25594 -diff -urNp linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c
25595 ---- linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c 2009-12-02 22:51:21.000000000 -0500
25596 -+++ linux-2.6.32.48/arch/ia64/hp/common/hwsw_iommu.c 2011-11-12 12:46:42.000000000 -0500
25597 -@@ -17,7 +17,7 @@
25598 - #include <linux/swiotlb.h>
25599 - #include <asm/machvec.h>
25600 -
25601 --extern struct dma_map_ops sba_dma_ops, swiotlb_dma_ops;
25602 -+extern const struct dma_map_ops sba_dma_ops, swiotlb_dma_ops;
25603 -
25604 - /* swiotlb declarations & definitions: */
25605 - extern int swiotlb_late_init_with_default_size (size_t size);
25606 -@@ -33,7 +33,7 @@ static inline int use_swiotlb(struct dev
25607 - !sba_dma_ops.dma_supported(dev, *dev->dma_mask);
25608 - }
25609 -
25610 --struct dma_map_ops *hwsw_dma_get_ops(struct device *dev)
25611 -+const struct dma_map_ops *hwsw_dma_get_ops(struct device *dev)
25612 - {
25613 - if (use_swiotlb(dev))
25614 - return &swiotlb_dma_ops;
25615 -diff -urNp linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c
25616 ---- linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c 2011-11-12 12:44:28.000000000 -0500
25617 -+++ linux-2.6.32.48/arch/ia64/hp/common/sba_iommu.c 2011-11-12 12:46:42.000000000 -0500
25618 -@@ -2097,7 +2097,7 @@ static struct acpi_driver acpi_sba_ioc_d
25619 - },
25620 - };
25621 -
25622 --extern struct dma_map_ops swiotlb_dma_ops;
25623 -+extern const struct dma_map_ops swiotlb_dma_ops;
25624 -
25625 - static int __init
25626 - sba_init(void)
25627 -@@ -2211,7 +2211,7 @@ sba_page_override(char *str)
25628 -
25629 - __setup("sbapagesize=",sba_page_override);
25630 -
25631 --struct dma_map_ops sba_dma_ops = {
25632 -+const struct dma_map_ops sba_dma_ops = {
25633 - .alloc_coherent = sba_alloc_coherent,
25634 - .free_coherent = sba_free_coherent,
25635 - .map_page = sba_map_page,
25636 -diff -urNp linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c
25637 ---- linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c 2009-12-02 22:51:21.000000000 -0500
25638 -+++ linux-2.6.32.48/arch/ia64/ia32/binfmt_elf32.c 2011-11-12 12:46:42.000000000 -0500
25639 -@@ -45,6 +45,13 @@ randomize_stack_top(unsigned long stack_
25640 -
25641 - #define elf_read_implies_exec(ex, have_pt_gnu_stack) (!(have_pt_gnu_stack))
25642 -
25643 -+#ifdef CONFIG_PAX_ASLR
25644 -+#define PAX_ELF_ET_DYN_BASE (current->personality == PER_LINUX32 ? 0x08048000UL : 0x4000000000000000UL)
25645 -+
25646 -+#define PAX_DELTA_MMAP_LEN (current->personality == PER_LINUX32 ? 16 : 3*PAGE_SHIFT - 13)
25647 -+#define PAX_DELTA_STACK_LEN (current->personality == PER_LINUX32 ? 16 : 3*PAGE_SHIFT - 13)
25648 -+#endif
25649 -+
25650 - /* Ugly but avoids duplication */
25651 - #include "../../../fs/binfmt_elf.c"
25652 -
25653 -diff -urNp linux-2.6.32.48/arch/ia64/ia32/ia32priv.h linux-2.6.32.48/arch/ia64/ia32/ia32priv.h
25654 ---- linux-2.6.32.48/arch/ia64/ia32/ia32priv.h 2009-12-02 22:51:21.000000000 -0500
25655 -+++ linux-2.6.32.48/arch/ia64/ia32/ia32priv.h 2011-11-12 12:46:42.000000000 -0500
25656 -@@ -296,7 +296,14 @@ typedef struct compat_siginfo {
25657 - #define ELF_DATA ELFDATA2LSB
25658 - #define ELF_ARCH EM_386
25659 -
25660 --#define IA32_STACK_TOP IA32_PAGE_OFFSET
25661 -+#ifdef CONFIG_PAX_RANDUSTACK
25662 -+#define __IA32_DELTA_STACK (current->mm->delta_stack)
25663 -+#else
25664 -+#define __IA32_DELTA_STACK 0UL
25665 -+#endif
25666 -+
25667 -+#define IA32_STACK_TOP (IA32_PAGE_OFFSET - __IA32_DELTA_STACK)
25668 -+
25669 - #define IA32_GATE_OFFSET IA32_PAGE_OFFSET
25670 - #define IA32_GATE_END IA32_PAGE_OFFSET + PAGE_SIZE
25671 -
25672 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h
25673 ---- linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
25674 -+++ linux-2.6.32.48/arch/ia64/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
25675 -@@ -12,7 +12,7 @@
25676 -
25677 - #define ARCH_HAS_DMA_GET_REQUIRED_MASK
25678 -
25679 --extern struct dma_map_ops *dma_ops;
25680 -+extern const struct dma_map_ops *dma_ops;
25681 - extern struct ia64_machine_vector ia64_mv;
25682 - extern void set_iommu_machvec(void);
25683 -
25684 -@@ -24,7 +24,7 @@ extern void machvec_dma_sync_sg(struct d
25685 - static inline void *dma_alloc_coherent(struct device *dev, size_t size,
25686 - dma_addr_t *daddr, gfp_t gfp)
25687 - {
25688 -- struct dma_map_ops *ops = platform_dma_get_ops(dev);
25689 -+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
25690 - void *caddr;
25691 -
25692 - caddr = ops->alloc_coherent(dev, size, daddr, gfp);
25693 -@@ -35,7 +35,7 @@ static inline void *dma_alloc_coherent(s
25694 - static inline void dma_free_coherent(struct device *dev, size_t size,
25695 - void *caddr, dma_addr_t daddr)
25696 - {
25697 -- struct dma_map_ops *ops = platform_dma_get_ops(dev);
25698 -+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
25699 - debug_dma_free_coherent(dev, size, caddr, daddr);
25700 - ops->free_coherent(dev, size, caddr, daddr);
25701 - }
25702 -@@ -49,13 +49,13 @@ static inline void dma_free_coherent(str
25703 -
25704 - static inline int dma_mapping_error(struct device *dev, dma_addr_t daddr)
25705 - {
25706 -- struct dma_map_ops *ops = platform_dma_get_ops(dev);
25707 -+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
25708 - return ops->mapping_error(dev, daddr);
25709 - }
25710 -
25711 - static inline int dma_supported(struct device *dev, u64 mask)
25712 - {
25713 -- struct dma_map_ops *ops = platform_dma_get_ops(dev);
25714 -+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
25715 - return ops->dma_supported(dev, mask);
25716 - }
25717 -
25718 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/elf.h linux-2.6.32.48/arch/ia64/include/asm/elf.h
25719 ---- linux-2.6.32.48/arch/ia64/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
25720 -+++ linux-2.6.32.48/arch/ia64/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
25721 -@@ -43,6 +43,13 @@
25722 +diff -urNp linux-3.0.8/arch/ia64/include/asm/elf.h linux-3.0.8/arch/ia64/include/asm/elf.h
25723 +--- linux-3.0.8/arch/ia64/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
25724 ++++ linux-3.0.8/arch/ia64/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
25725 +@@ -42,6 +42,13 @@
25726 */
25727 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL)
25728
25729 @@ -1002,30 +770,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/elf.h linux-2.6.32.48/arch/ia64
25730 #define PT_IA_64_UNWIND 0x70000001
25731
25732 /* IA-64 relocations: */
25733 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/machvec.h linux-2.6.32.48/arch/ia64/include/asm/machvec.h
25734 ---- linux-2.6.32.48/arch/ia64/include/asm/machvec.h 2009-12-02 22:51:21.000000000 -0500
25735 -+++ linux-2.6.32.48/arch/ia64/include/asm/machvec.h 2011-11-12 12:46:42.000000000 -0500
25736 -@@ -45,7 +45,7 @@ typedef void ia64_mv_kernel_launch_event
25737 - /* DMA-mapping interface: */
25738 - typedef void ia64_mv_dma_init (void);
25739 - typedef u64 ia64_mv_dma_get_required_mask (struct device *);
25740 --typedef struct dma_map_ops *ia64_mv_dma_get_ops(struct device *);
25741 -+typedef const struct dma_map_ops *ia64_mv_dma_get_ops(struct device *);
25742 -
25743 - /*
25744 - * WARNING: The legacy I/O space is _architected_. Platforms are
25745 -@@ -251,7 +251,7 @@ extern void machvec_init_from_cmdline(co
25746 - # endif /* CONFIG_IA64_GENERIC */
25747 -
25748 - extern void swiotlb_dma_init(void);
25749 --extern struct dma_map_ops *dma_get_ops(struct device *);
25750 -+extern const struct dma_map_ops *dma_get_ops(struct device *);
25751 -
25752 - /*
25753 - * Define default versions so we can extend machvec for new platforms without having
25754 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/pgtable.h linux-2.6.32.48/arch/ia64/include/asm/pgtable.h
25755 ---- linux-2.6.32.48/arch/ia64/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
25756 -+++ linux-2.6.32.48/arch/ia64/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
25757 +diff -urNp linux-3.0.8/arch/ia64/include/asm/pgtable.h linux-3.0.8/arch/ia64/include/asm/pgtable.h
25758 +--- linux-3.0.8/arch/ia64/include/asm/pgtable.h 2011-07-21 22:17:23.000000000 -0400
25759 ++++ linux-3.0.8/arch/ia64/include/asm/pgtable.h 2011-08-23 21:47:55.000000000 -0400
25760 @@ -12,7 +12,7 @@
25761 * David Mosberger-Tang <davidm@××××××.com>
25762 */
25763 @@ -1053,9 +800,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/pgtable.h linux-2.6.32.48/arch/
25764 #define PAGE_GATE __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
25765 #define PAGE_KERNEL __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)
25766 #define PAGE_KERNELRX __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
25767 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/spinlock.h linux-2.6.32.48/arch/ia64/include/asm/spinlock.h
25768 ---- linux-2.6.32.48/arch/ia64/include/asm/spinlock.h 2009-12-02 22:51:21.000000000 -0500
25769 -+++ linux-2.6.32.48/arch/ia64/include/asm/spinlock.h 2011-11-12 12:46:42.000000000 -0500
25770 +diff -urNp linux-3.0.8/arch/ia64/include/asm/spinlock.h linux-3.0.8/arch/ia64/include/asm/spinlock.h
25771 +--- linux-3.0.8/arch/ia64/include/asm/spinlock.h 2011-07-21 22:17:23.000000000 -0400
25772 ++++ linux-3.0.8/arch/ia64/include/asm/spinlock.h 2011-08-23 21:47:55.000000000 -0400
25773 @@ -72,7 +72,7 @@ static __always_inline void __ticket_spi
25774 unsigned short *p = (unsigned short *)&lock->lock + 1, tmp;
25775
25776 @@ -1064,10 +811,10 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/spinlock.h linux-2.6.32.48/arch
25777 + ACCESS_ONCE_RW(*p) = (tmp + 2) & ~1;
25778 }
25779
25780 - static __always_inline void __ticket_spin_unlock_wait(raw_spinlock_t *lock)
25781 -diff -urNp linux-2.6.32.48/arch/ia64/include/asm/uaccess.h linux-2.6.32.48/arch/ia64/include/asm/uaccess.h
25782 ---- linux-2.6.32.48/arch/ia64/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
25783 -+++ linux-2.6.32.48/arch/ia64/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
25784 + static __always_inline void __ticket_spin_unlock_wait(arch_spinlock_t *lock)
25785 +diff -urNp linux-3.0.8/arch/ia64/include/asm/uaccess.h linux-3.0.8/arch/ia64/include/asm/uaccess.h
25786 +--- linux-3.0.8/arch/ia64/include/asm/uaccess.h 2011-07-21 22:17:23.000000000 -0400
25787 ++++ linux-3.0.8/arch/ia64/include/asm/uaccess.h 2011-08-23 21:47:55.000000000 -0400
25788 @@ -257,7 +257,7 @@ __copy_from_user (void *to, const void _
25789 const void *__cu_from = (from); \
25790 long __cu_len = (n); \
25791 @@ -1086,30 +833,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/include/asm/uaccess.h linux-2.6.32.48/arch/
25792 __cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \
25793 __cu_len; \
25794 })
25795 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c
25796 ---- linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c 2009-12-02 22:51:21.000000000 -0500
25797 -+++ linux-2.6.32.48/arch/ia64/kernel/dma-mapping.c 2011-11-12 12:46:42.000000000 -0500
25798 -@@ -3,7 +3,7 @@
25799 - /* Set this to 1 if there is a HW IOMMU in the system */
25800 - int iommu_detected __read_mostly;
25801 -
25802 --struct dma_map_ops *dma_ops;
25803 -+const struct dma_map_ops *dma_ops;
25804 - EXPORT_SYMBOL(dma_ops);
25805 -
25806 - #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)
25807 -@@ -16,7 +16,7 @@ static int __init dma_init(void)
25808 - }
25809 - fs_initcall(dma_init);
25810 -
25811 --struct dma_map_ops *dma_get_ops(struct device *dev)
25812 -+const struct dma_map_ops *dma_get_ops(struct device *dev)
25813 - {
25814 - return dma_ops;
25815 - }
25816 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/module.c linux-2.6.32.48/arch/ia64/kernel/module.c
25817 ---- linux-2.6.32.48/arch/ia64/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
25818 -+++ linux-2.6.32.48/arch/ia64/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
25819 +diff -urNp linux-3.0.8/arch/ia64/kernel/module.c linux-3.0.8/arch/ia64/kernel/module.c
25820 +--- linux-3.0.8/arch/ia64/kernel/module.c 2011-07-21 22:17:23.000000000 -0400
25821 ++++ linux-3.0.8/arch/ia64/kernel/module.c 2011-08-23 21:47:55.000000000 -0400
25822 @@ -315,8 +315,7 @@ module_alloc (unsigned long size)
25823 void
25824 module_free (struct module *mod, void *module_region)
25825 @@ -1198,75 +924,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/module.c linux-2.6.32.48/arch/ia64/k
25826 mod->arch.gp = gp;
25827 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
25828 }
25829 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/pci-dma.c linux-2.6.32.48/arch/ia64/kernel/pci-dma.c
25830 ---- linux-2.6.32.48/arch/ia64/kernel/pci-dma.c 2009-12-02 22:51:21.000000000 -0500
25831 -+++ linux-2.6.32.48/arch/ia64/kernel/pci-dma.c 2011-11-12 12:46:42.000000000 -0500
25832 -@@ -43,7 +43,7 @@ struct device fallback_dev = {
25833 - .dma_mask = &fallback_dev.coherent_dma_mask,
25834 - };
25835 -
25836 --extern struct dma_map_ops intel_dma_ops;
25837 -+extern const struct dma_map_ops intel_dma_ops;
25838 -
25839 - static int __init pci_iommu_init(void)
25840 - {
25841 -@@ -96,15 +96,34 @@ int iommu_dma_supported(struct device *d
25842 - }
25843 - EXPORT_SYMBOL(iommu_dma_supported);
25844 -
25845 -+extern void *intel_alloc_coherent(struct device *hwdev, size_t size, dma_addr_t *dma_handle, gfp_t flags);
25846 -+extern void intel_free_coherent(struct device *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle);
25847 -+extern int intel_map_sg(struct device *hwdev, struct scatterlist *sglist, int nelems, enum dma_data_direction dir, struct dma_attrs *attrs);
25848 -+extern void intel_unmap_sg(struct device *hwdev, struct scatterlist *sglist, int nelems, enum dma_data_direction dir, struct dma_attrs *attrs);
25849 -+extern dma_addr_t intel_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs);
25850 -+extern void intel_unmap_page(struct device *dev, dma_addr_t dev_addr, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs);
25851 -+extern int intel_mapping_error(struct device *dev, dma_addr_t dma_addr);
25852 -+
25853 -+static const struct dma_map_ops intel_iommu_dma_ops = {
25854 -+ /* from drivers/pci/intel-iommu.c:intel_dma_ops */
25855 -+ .alloc_coherent = intel_alloc_coherent,
25856 -+ .free_coherent = intel_free_coherent,
25857 -+ .map_sg = intel_map_sg,
25858 -+ .unmap_sg = intel_unmap_sg,
25859 -+ .map_page = intel_map_page,
25860 -+ .unmap_page = intel_unmap_page,
25861 -+ .mapping_error = intel_mapping_error,
25862 -+
25863 -+ .sync_single_for_cpu = machvec_dma_sync_single,
25864 -+ .sync_sg_for_cpu = machvec_dma_sync_sg,
25865 -+ .sync_single_for_device = machvec_dma_sync_single,
25866 -+ .sync_sg_for_device = machvec_dma_sync_sg,
25867 -+ .dma_supported = iommu_dma_supported,
25868 -+};
25869 -+
25870 - void __init pci_iommu_alloc(void)
25871 - {
25872 -- dma_ops = &intel_dma_ops;
25873 --
25874 -- dma_ops->sync_single_for_cpu = machvec_dma_sync_single;
25875 -- dma_ops->sync_sg_for_cpu = machvec_dma_sync_sg;
25876 -- dma_ops->sync_single_for_device = machvec_dma_sync_single;
25877 -- dma_ops->sync_sg_for_device = machvec_dma_sync_sg;
25878 -- dma_ops->dma_supported = iommu_dma_supported;
25879 -+ dma_ops = &intel_iommu_dma_ops;
25880 -
25881 - /*
25882 - * The order of these functions is important for
25883 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c
25884 ---- linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c 2009-12-02 22:51:21.000000000 -0500
25885 -+++ linux-2.6.32.48/arch/ia64/kernel/pci-swiotlb.c 2011-11-12 12:46:42.000000000 -0500
25886 -@@ -21,7 +21,7 @@ static void *ia64_swiotlb_alloc_coherent
25887 - return swiotlb_alloc_coherent(dev, size, dma_handle, gfp);
25888 - }
25889 -
25890 --struct dma_map_ops swiotlb_dma_ops = {
25891 -+const struct dma_map_ops swiotlb_dma_ops = {
25892 - .alloc_coherent = ia64_swiotlb_alloc_coherent,
25893 - .free_coherent = swiotlb_free_coherent,
25894 - .map_page = swiotlb_map_page,
25895 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c
25896 ---- linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c 2011-11-12 12:44:28.000000000 -0500
25897 -+++ linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c 2011-11-12 12:46:42.000000000 -0500
25898 +diff -urNp linux-3.0.8/arch/ia64/kernel/sys_ia64.c linux-3.0.8/arch/ia64/kernel/sys_ia64.c
25899 +--- linux-3.0.8/arch/ia64/kernel/sys_ia64.c 2011-07-21 22:17:23.000000000 -0400
25900 ++++ linux-3.0.8/arch/ia64/kernel/sys_ia64.c 2011-08-23 21:47:55.000000000 -0400
25901 @@ -43,6 +43,13 @@ arch_get_unmapped_area (struct file *fil
25902 if (REGION_NUMBER(addr) == RGN_HPAGE)
25903 addr = 0;
25904 @@ -1299,34 +959,22 @@ diff -urNp linux-2.6.32.48/arch/ia64/kernel/sys_ia64.c linux-2.6.32.48/arch/ia64
25905 /* Remember the address where we stopped this search: */
25906 mm->free_area_cache = addr + len;
25907 return addr;
25908 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/topology.c linux-2.6.32.48/arch/ia64/kernel/topology.c
25909 ---- linux-2.6.32.48/arch/ia64/kernel/topology.c 2009-12-02 22:51:21.000000000 -0500
25910 -+++ linux-2.6.32.48/arch/ia64/kernel/topology.c 2011-11-12 12:46:42.000000000 -0500
25911 -@@ -282,7 +282,7 @@ static ssize_t cache_show(struct kobject
25912 - return ret;
25913 - }
25914 -
25915 --static struct sysfs_ops cache_sysfs_ops = {
25916 -+static const struct sysfs_ops cache_sysfs_ops = {
25917 - .show = cache_show
25918 - };
25919 -
25920 -diff -urNp linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S
25921 ---- linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S 2009-12-02 22:51:21.000000000 -0500
25922 -+++ linux-2.6.32.48/arch/ia64/kernel/vmlinux.lds.S 2011-11-12 12:46:42.000000000 -0500
25923 -@@ -190,7 +190,7 @@ SECTIONS
25924 - /* Per-cpu data: */
25925 - . = ALIGN(PERCPU_PAGE_SIZE);
25926 - PERCPU_VADDR(PERCPU_ADDR, :percpu)
25927 -- __phys_per_cpu_start = __per_cpu_load;
25928 -+ __phys_per_cpu_start = per_cpu_load;
25929 - . = __phys_per_cpu_start + PERCPU_PAGE_SIZE; /* ensure percpu data fits
25930 - * into percpu page size
25931 - */
25932 -diff -urNp linux-2.6.32.48/arch/ia64/mm/fault.c linux-2.6.32.48/arch/ia64/mm/fault.c
25933 ---- linux-2.6.32.48/arch/ia64/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
25934 -+++ linux-2.6.32.48/arch/ia64/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
25935 -@@ -72,6 +72,23 @@ mapped_kernel_page_is_present (unsigned
25936 +diff -urNp linux-3.0.8/arch/ia64/kernel/vmlinux.lds.S linux-3.0.8/arch/ia64/kernel/vmlinux.lds.S
25937 +--- linux-3.0.8/arch/ia64/kernel/vmlinux.lds.S 2011-07-21 22:17:23.000000000 -0400
25938 ++++ linux-3.0.8/arch/ia64/kernel/vmlinux.lds.S 2011-08-23 21:47:55.000000000 -0400
25939 +@@ -199,7 +199,7 @@ SECTIONS {
25940 + /* Per-cpu data: */
25941 + . = ALIGN(PERCPU_PAGE_SIZE);
25942 + PERCPU_VADDR(SMP_CACHE_BYTES, PERCPU_ADDR, :percpu)
25943 +- __phys_per_cpu_start = __per_cpu_load;
25944 ++ __phys_per_cpu_start = per_cpu_load;
25945 + /*
25946 + * ensure percpu data fits
25947 + * into percpu page size
25948 +diff -urNp linux-3.0.8/arch/ia64/mm/fault.c linux-3.0.8/arch/ia64/mm/fault.c
25949 +--- linux-3.0.8/arch/ia64/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
25950 ++++ linux-3.0.8/arch/ia64/mm/fault.c 2011-08-23 21:47:55.000000000 -0400
25951 +@@ -73,6 +73,23 @@ mapped_kernel_page_is_present (unsigned
25952 return pte_present(pte);
25953 }
25954
25955 @@ -1350,7 +998,7 @@ diff -urNp linux-2.6.32.48/arch/ia64/mm/fault.c linux-2.6.32.48/arch/ia64/mm/fau
25956 void __kprobes
25957 ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *regs)
25958 {
25959 -@@ -145,9 +162,23 @@ ia64_do_page_fault (unsigned long addres
25960 +@@ -146,9 +163,23 @@ ia64_do_page_fault (unsigned long addres
25961 mask = ( (((isr >> IA64_ISR_X_BIT) & 1UL) << VM_EXEC_BIT)
25962 | (((isr >> IA64_ISR_W_BIT) & 1UL) << VM_WRITE_BIT));
25963
25964 @@ -1372,13 +1020,13 @@ diff -urNp linux-2.6.32.48/arch/ia64/mm/fault.c linux-2.6.32.48/arch/ia64/mm/fau
25965
25966 + }
25967 +
25968 - survive:
25969 /*
25970 * If for any reason at all we couldn't handle the fault, make
25971 -diff -urNp linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c
25972 ---- linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c 2009-12-02 22:51:21.000000000 -0500
25973 -+++ linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c 2011-11-12 12:46:42.000000000 -0500
25974 -@@ -172,7 +172,7 @@ unsigned long hugetlb_get_unmapped_area(
25975 + * sure we exit gracefully rather than endlessly redo the
25976 +diff -urNp linux-3.0.8/arch/ia64/mm/hugetlbpage.c linux-3.0.8/arch/ia64/mm/hugetlbpage.c
25977 +--- linux-3.0.8/arch/ia64/mm/hugetlbpage.c 2011-07-21 22:17:23.000000000 -0400
25978 ++++ linux-3.0.8/arch/ia64/mm/hugetlbpage.c 2011-08-23 21:47:55.000000000 -0400
25979 +@@ -171,7 +171,7 @@ unsigned long hugetlb_get_unmapped_area(
25980 /* At this point: (!vmm || addr < vmm->vm_end). */
25981 if (REGION_OFFSET(addr) + len > RGN_MAP_LIMIT)
25982 return -ENOMEM;
25983 @@ -1387,10 +1035,10 @@ diff -urNp linux-2.6.32.48/arch/ia64/mm/hugetlbpage.c linux-2.6.32.48/arch/ia64/
25984 return addr;
25985 addr = ALIGN(vmm->vm_end, HPAGE_SIZE);
25986 }
25987 -diff -urNp linux-2.6.32.48/arch/ia64/mm/init.c linux-2.6.32.48/arch/ia64/mm/init.c
25988 ---- linux-2.6.32.48/arch/ia64/mm/init.c 2009-12-02 22:51:21.000000000 -0500
25989 -+++ linux-2.6.32.48/arch/ia64/mm/init.c 2011-11-12 12:46:42.000000000 -0500
25990 -@@ -122,6 +122,19 @@ ia64_init_addr_space (void)
25991 +diff -urNp linux-3.0.8/arch/ia64/mm/init.c linux-3.0.8/arch/ia64/mm/init.c
25992 +--- linux-3.0.8/arch/ia64/mm/init.c 2011-07-21 22:17:23.000000000 -0400
25993 ++++ linux-3.0.8/arch/ia64/mm/init.c 2011-08-23 21:47:55.000000000 -0400
25994 +@@ -120,6 +120,19 @@ ia64_init_addr_space (void)
25995 vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
25996 vma->vm_end = vma->vm_start + PAGE_SIZE;
25997 vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
25998 @@ -1410,21 +1058,9 @@ diff -urNp linux-2.6.32.48/arch/ia64/mm/init.c linux-2.6.32.48/arch/ia64/mm/init
25999 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
26000 down_write(&current->mm->mmap_sem);
26001 if (insert_vm_struct(current->mm, vma)) {
26002 -diff -urNp linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c
26003 ---- linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c 2009-12-02 22:51:21.000000000 -0500
26004 -+++ linux-2.6.32.48/arch/ia64/sn/pci/pci_dma.c 2011-11-12 12:46:42.000000000 -0500
26005 -@@ -464,7 +464,7 @@ int sn_pci_legacy_write(struct pci_bus *
26006 - return ret;
26007 - }
26008 -
26009 --static struct dma_map_ops sn_dma_ops = {
26010 -+static const struct dma_map_ops sn_dma_ops = {
26011 - .alloc_coherent = sn_dma_alloc_coherent,
26012 - .free_coherent = sn_dma_free_coherent,
26013 - .map_page = sn_dma_map_page,
26014 -diff -urNp linux-2.6.32.48/arch/m32r/lib/usercopy.c linux-2.6.32.48/arch/m32r/lib/usercopy.c
26015 ---- linux-2.6.32.48/arch/m32r/lib/usercopy.c 2009-12-02 22:51:21.000000000 -0500
26016 -+++ linux-2.6.32.48/arch/m32r/lib/usercopy.c 2011-11-12 12:46:42.000000000 -0500
26017 +diff -urNp linux-3.0.8/arch/m32r/lib/usercopy.c linux-3.0.8/arch/m32r/lib/usercopy.c
26018 +--- linux-3.0.8/arch/m32r/lib/usercopy.c 2011-07-21 22:17:23.000000000 -0400
26019 ++++ linux-3.0.8/arch/m32r/lib/usercopy.c 2011-08-23 21:47:55.000000000 -0400
26020 @@ -14,6 +14,9 @@
26021 unsigned long
26022 __generic_copy_to_user(void __user *to, const void *from, unsigned long n)
26023 @@ -1445,36 +1081,33 @@ diff -urNp linux-2.6.32.48/arch/m32r/lib/usercopy.c linux-2.6.32.48/arch/m32r/li
26024 prefetchw(to);
26025 if (access_ok(VERIFY_READ, from, n))
26026 __copy_user_zeroing(to,from,n);
26027 -diff -urNp linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c
26028 ---- linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c 2009-12-02 22:51:21.000000000 -0500
26029 -+++ linux-2.6.32.48/arch/mips/alchemy/devboards/pm.c 2011-11-12 12:46:42.000000000 -0500
26030 -@@ -78,7 +78,7 @@ static void db1x_pm_end(void)
26031 -
26032 - }
26033 -
26034 --static struct platform_suspend_ops db1x_pm_ops = {
26035 -+static const struct platform_suspend_ops db1x_pm_ops = {
26036 - .valid = suspend_valid_only_mem,
26037 - .begin = db1x_pm_begin,
26038 - .enter = db1x_pm_enter,
26039 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/elf.h linux-2.6.32.48/arch/mips/include/asm/elf.h
26040 ---- linux-2.6.32.48/arch/mips/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
26041 -+++ linux-2.6.32.48/arch/mips/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
26042 -@@ -368,4 +368,11 @@ extern int dump_task_fpu(struct task_str
26043 +diff -urNp linux-3.0.8/arch/mips/include/asm/elf.h linux-3.0.8/arch/mips/include/asm/elf.h
26044 +--- linux-3.0.8/arch/mips/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
26045 ++++ linux-3.0.8/arch/mips/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
26046 +@@ -372,13 +372,16 @@ extern const char *__elf_platform;
26047 #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
26048 #endif
26049
26050 +#ifdef CONFIG_PAX_ASLR
26051 -+#define PAX_ELF_ET_DYN_BASE (test_thread_flag(TIF_32BIT_ADDR) ? 0x00400000UL : 0x00400000UL)
26052 ++#define PAX_ELF_ET_DYN_BASE (TASK_IS_32BIT_ADDR ? 0x00400000UL : 0x00400000UL)
26053 +
26054 -+#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_32BIT_ADDR) ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26055 -+#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_32BIT_ADDR) ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26056 ++#define PAX_DELTA_MMAP_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26057 ++#define PAX_DELTA_STACK_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26058 +#endif
26059 +
26060 + #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
26061 + struct linux_binprm;
26062 + extern int arch_setup_additional_pages(struct linux_binprm *bprm,
26063 + int uses_interp);
26064 +
26065 +-struct mm_struct;
26066 +-extern unsigned long arch_randomize_brk(struct mm_struct *mm);
26067 +-#define arch_randomize_brk arch_randomize_brk
26068 +-
26069 #endif /* _ASM_ELF_H */
26070 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/page.h linux-2.6.32.48/arch/mips/include/asm/page.h
26071 ---- linux-2.6.32.48/arch/mips/include/asm/page.h 2009-12-02 22:51:21.000000000 -0500
26072 -+++ linux-2.6.32.48/arch/mips/include/asm/page.h 2011-11-12 12:46:42.000000000 -0500
26073 +diff -urNp linux-3.0.8/arch/mips/include/asm/page.h linux-3.0.8/arch/mips/include/asm/page.h
26074 +--- linux-3.0.8/arch/mips/include/asm/page.h 2011-07-21 22:17:23.000000000 -0400
26075 ++++ linux-3.0.8/arch/mips/include/asm/page.h 2011-08-23 21:47:55.000000000 -0400
26076 @@ -93,7 +93,7 @@ extern void copy_user_highpage(struct pa
26077 #ifdef CONFIG_CPU_MIPS32
26078 typedef struct { unsigned long pte_low, pte_high; } pte_t;
26079 @@ -1484,22 +1117,9 @@ diff -urNp linux-2.6.32.48/arch/mips/include/asm/page.h linux-2.6.32.48/arch/mip
26080 #else
26081 typedef struct { unsigned long long pte; } pte_t;
26082 #define pte_val(x) ((x).pte)
26083 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/reboot.h linux-2.6.32.48/arch/mips/include/asm/reboot.h
26084 ---- linux-2.6.32.48/arch/mips/include/asm/reboot.h 2009-12-02 22:51:21.000000000 -0500
26085 -+++ linux-2.6.32.48/arch/mips/include/asm/reboot.h 2011-11-12 12:46:42.000000000 -0500
26086 -@@ -9,7 +9,7 @@
26087 - #ifndef _ASM_REBOOT_H
26088 - #define _ASM_REBOOT_H
26089 -
26090 --extern void (*_machine_restart)(char *command);
26091 --extern void (*_machine_halt)(void);
26092 -+extern void (*__noreturn _machine_restart)(char *command);
26093 -+extern void (*__noreturn _machine_halt)(void);
26094 -
26095 - #endif /* _ASM_REBOOT_H */
26096 -diff -urNp linux-2.6.32.48/arch/mips/include/asm/system.h linux-2.6.32.48/arch/mips/include/asm/system.h
26097 ---- linux-2.6.32.48/arch/mips/include/asm/system.h 2009-12-02 22:51:21.000000000 -0500
26098 -+++ linux-2.6.32.48/arch/mips/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
26099 +diff -urNp linux-3.0.8/arch/mips/include/asm/system.h linux-3.0.8/arch/mips/include/asm/system.h
26100 +--- linux-3.0.8/arch/mips/include/asm/system.h 2011-07-21 22:17:23.000000000 -0400
26101 ++++ linux-3.0.8/arch/mips/include/asm/system.h 2011-08-23 21:47:55.000000000 -0400
26102 @@ -230,6 +230,6 @@ extern void per_cpu_trap_init(void);
26103 */
26104 #define __ARCH_WANT_UNLOCKED_CTXSW
26105 @@ -1508,55 +1128,44 @@ diff -urNp linux-2.6.32.48/arch/mips/include/asm/system.h linux-2.6.32.48/arch/m
26106 +#define arch_align_stack(x) ((x) & ~0xfUL)
26107
26108 #endif /* _ASM_SYSTEM_H */
26109 -diff -urNp linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c
26110 ---- linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c 2009-12-02 22:51:21.000000000 -0500
26111 -+++ linux-2.6.32.48/arch/mips/kernel/binfmt_elfn32.c 2011-11-12 12:46:42.000000000 -0500
26112 +diff -urNp linux-3.0.8/arch/mips/kernel/binfmt_elfn32.c linux-3.0.8/arch/mips/kernel/binfmt_elfn32.c
26113 +--- linux-3.0.8/arch/mips/kernel/binfmt_elfn32.c 2011-07-21 22:17:23.000000000 -0400
26114 ++++ linux-3.0.8/arch/mips/kernel/binfmt_elfn32.c 2011-08-23 21:47:55.000000000 -0400
26115 @@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
26116 #undef ELF_ET_DYN_BASE
26117 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
26118
26119 +#ifdef CONFIG_PAX_ASLR
26120 -+#define PAX_ELF_ET_DYN_BASE (test_thread_flag(TIF_32BIT_ADDR) ? 0x00400000UL : 0x00400000UL)
26121 ++#define PAX_ELF_ET_DYN_BASE (TASK_IS_32BIT_ADDR ? 0x00400000UL : 0x00400000UL)
26122 +
26123 -+#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_32BIT_ADDR) ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26124 -+#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_32BIT_ADDR) ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26125 ++#define PAX_DELTA_MMAP_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26126 ++#define PAX_DELTA_STACK_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26127 +#endif
26128 +
26129 #include <asm/processor.h>
26130 #include <linux/module.h>
26131 #include <linux/elfcore.h>
26132 -diff -urNp linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c
26133 ---- linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c 2009-12-02 22:51:21.000000000 -0500
26134 -+++ linux-2.6.32.48/arch/mips/kernel/binfmt_elfo32.c 2011-11-12 12:46:42.000000000 -0500
26135 +diff -urNp linux-3.0.8/arch/mips/kernel/binfmt_elfo32.c linux-3.0.8/arch/mips/kernel/binfmt_elfo32.c
26136 +--- linux-3.0.8/arch/mips/kernel/binfmt_elfo32.c 2011-07-21 22:17:23.000000000 -0400
26137 ++++ linux-3.0.8/arch/mips/kernel/binfmt_elfo32.c 2011-08-23 21:47:55.000000000 -0400
26138 @@ -52,6 +52,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
26139 #undef ELF_ET_DYN_BASE
26140 #define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
26141
26142 +#ifdef CONFIG_PAX_ASLR
26143 -+#define PAX_ELF_ET_DYN_BASE (test_thread_flag(TIF_32BIT_ADDR) ? 0x00400000UL : 0x00400000UL)
26144 ++#define PAX_ELF_ET_DYN_BASE (TASK_IS_32BIT_ADDR ? 0x00400000UL : 0x00400000UL)
26145 +
26146 -+#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_32BIT_ADDR) ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26147 -+#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_32BIT_ADDR) ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26148 ++#define PAX_DELTA_MMAP_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26149 ++#define PAX_DELTA_STACK_LEN (TASK_IS_32BIT_ADDR ? 27-PAGE_SHIFT : 36-PAGE_SHIFT)
26150 +#endif
26151 +
26152 #include <asm/processor.h>
26153
26154 /*
26155 -diff -urNp linux-2.6.32.48/arch/mips/kernel/kgdb.c linux-2.6.32.48/arch/mips/kernel/kgdb.c
26156 ---- linux-2.6.32.48/arch/mips/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
26157 -+++ linux-2.6.32.48/arch/mips/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
26158 -@@ -245,6 +245,7 @@ int kgdb_arch_handle_exception(int vecto
26159 - return -1;
26160 - }
26161 -
26162 -+/* cannot be const */
26163 - struct kgdb_arch arch_kgdb_ops;
26164 -
26165 - /*
26166 -diff -urNp linux-2.6.32.48/arch/mips/kernel/process.c linux-2.6.32.48/arch/mips/kernel/process.c
26167 ---- linux-2.6.32.48/arch/mips/kernel/process.c 2009-12-02 22:51:21.000000000 -0500
26168 -+++ linux-2.6.32.48/arch/mips/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
26169 -@@ -470,15 +470,3 @@ unsigned long get_wchan(struct task_stru
26170 +diff -urNp linux-3.0.8/arch/mips/kernel/process.c linux-3.0.8/arch/mips/kernel/process.c
26171 +--- linux-3.0.8/arch/mips/kernel/process.c 2011-07-21 22:17:23.000000000 -0400
26172 ++++ linux-3.0.8/arch/mips/kernel/process.c 2011-08-23 21:47:55.000000000 -0400
26173 +@@ -473,15 +473,3 @@ unsigned long get_wchan(struct task_stru
26174 out:
26175 return pc;
26176 }
26177 @@ -1572,44 +1181,37 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/process.c linux-2.6.32.48/arch/mips/
26178 -
26179 - return sp & ALMASK;
26180 -}
26181 -diff -urNp linux-2.6.32.48/arch/mips/kernel/reset.c linux-2.6.32.48/arch/mips/kernel/reset.c
26182 ---- linux-2.6.32.48/arch/mips/kernel/reset.c 2009-12-02 22:51:21.000000000 -0500
26183 -+++ linux-2.6.32.48/arch/mips/kernel/reset.c 2011-11-12 12:46:42.000000000 -0500
26184 -@@ -19,8 +19,8 @@
26185 - * So handle all using function pointers to machine specific
26186 - * functions.
26187 - */
26188 --void (*_machine_restart)(char *command);
26189 --void (*_machine_halt)(void);
26190 -+void (*__noreturn _machine_restart)(char *command);
26191 -+void (*__noreturn _machine_halt)(void);
26192 - void (*pm_power_off)(void);
26193 -
26194 - EXPORT_SYMBOL(pm_power_off);
26195 -@@ -29,16 +29,19 @@ void machine_restart(char *command)
26196 - {
26197 - if (_machine_restart)
26198 - _machine_restart(command);
26199 -+ BUG();
26200 - }
26201 -
26202 - void machine_halt(void)
26203 - {
26204 - if (_machine_halt)
26205 - _machine_halt();
26206 -+ BUG();
26207 - }
26208 +diff -urNp linux-3.0.8/arch/mips/mm/fault.c linux-3.0.8/arch/mips/mm/fault.c
26209 +--- linux-3.0.8/arch/mips/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
26210 ++++ linux-3.0.8/arch/mips/mm/fault.c 2011-08-23 21:47:55.000000000 -0400
26211 +@@ -28,6 +28,23 @@
26212 + #include <asm/highmem.h> /* For VMALLOC_END */
26213 + #include <linux/kdebug.h>
26214
26215 - void machine_power_off(void)
26216 - {
26217 - if (pm_power_off)
26218 - pm_power_off();
26219 -+ BUG();
26220 - }
26221 -diff -urNp linux-2.6.32.48/arch/mips/kernel/syscall.c linux-2.6.32.48/arch/mips/kernel/syscall.c
26222 ---- linux-2.6.32.48/arch/mips/kernel/syscall.c 2011-11-12 12:44:28.000000000 -0500
26223 -+++ linux-2.6.32.48/arch/mips/kernel/syscall.c 2011-11-12 12:46:42.000000000 -0500
26224 -@@ -102,17 +102,21 @@ unsigned long arch_get_unmapped_area(str
26225 ++#ifdef CONFIG_PAX_PAGEEXEC
26226 ++void pax_report_insns(void *pc, void *sp)
26227 ++{
26228 ++ unsigned long i;
26229 ++
26230 ++ printk(KERN_ERR "PAX: bytes at PC: ");
26231 ++ for (i = 0; i < 5; i++) {
26232 ++ unsigned int c;
26233 ++ if (get_user(c, (unsigned int *)pc+i))
26234 ++ printk(KERN_CONT "???????? ");
26235 ++ else
26236 ++ printk(KERN_CONT "%08x ", c);
26237 ++ }
26238 ++ printk("\n");
26239 ++}
26240 ++#endif
26241 ++
26242 + /*
26243 + * This routine handles page faults. It determines the address,
26244 + * and the problem, and then passes it off to one of the appropriate
26245 +diff -urNp linux-3.0.8/arch/mips/mm/mmap.c linux-3.0.8/arch/mips/mm/mmap.c
26246 +--- linux-3.0.8/arch/mips/mm/mmap.c 2011-07-21 22:17:23.000000000 -0400
26247 ++++ linux-3.0.8/arch/mips/mm/mmap.c 2011-08-23 21:47:55.000000000 -0400
26248 +@@ -48,14 +48,18 @@ unsigned long arch_get_unmapped_area(str
26249 do_color_align = 0;
26250 if (filp || (flags & MAP_SHARED))
26251 do_color_align = 1;
26252 @@ -1624,68 +1226,56 @@ diff -urNp linux-2.6.32.48/arch/mips/kernel/syscall.c linux-2.6.32.48/arch/mips/
26253 else
26254 addr = PAGE_ALIGN(addr);
26255 vmm = find_vma(current->mm, addr);
26256 -- if (task_size - len >= addr &&
26257 +- if (TASK_SIZE - len >= addr &&
26258 - (!vmm || addr + len <= vmm->vm_start))
26259 -+ if (task_size - len >= addr && check_heap_stack_gap(vmm, addr, len))
26260 ++ if (TASK_SIZE - len >= addr && check_heap_stack_gap(vmm, addr, len))
26261 return addr;
26262 }
26263 -- addr = TASK_UNMAPPED_BASE;
26264 -+ addr = current->mm->mmap_base;
26265 - if (do_color_align)
26266 - addr = COLOUR_ALIGN(addr, pgoff);
26267 - else
26268 -@@ -122,7 +126,7 @@ unsigned long arch_get_unmapped_area(str
26269 + addr = current->mm->mmap_base;
26270 +@@ -68,7 +72,7 @@ unsigned long arch_get_unmapped_area(str
26271 /* At this point: (!vmm || addr < vmm->vm_end). */
26272 - if (task_size - len < addr)
26273 + if (TASK_SIZE - len < addr)
26274 return -ENOMEM;
26275 - if (!vmm || addr + len <= vmm->vm_start)
26276 + if (check_heap_stack_gap(vmm, addr, len))
26277 return addr;
26278 addr = vmm->vm_end;
26279 if (do_color_align)
26280 -diff -urNp linux-2.6.32.48/arch/mips/Makefile linux-2.6.32.48/arch/mips/Makefile
26281 ---- linux-2.6.32.48/arch/mips/Makefile 2009-12-02 22:51:21.000000000 -0500
26282 -+++ linux-2.6.32.48/arch/mips/Makefile 2011-11-12 12:46:42.000000000 -0500
26283 -@@ -51,6 +51,8 @@ endif
26284 - cflags-y := -ffunction-sections
26285 - cflags-y += $(call cc-option, -mno-check-zero-division)
26286 -
26287 -+cflags-y += -Wno-sign-compare -Wno-extra
26288 -+
26289 - ifdef CONFIG_32BIT
26290 - ld-emul = $(32bit-emul)
26291 - vmlinux-32 = vmlinux
26292 -diff -urNp linux-2.6.32.48/arch/mips/mm/fault.c linux-2.6.32.48/arch/mips/mm/fault.c
26293 ---- linux-2.6.32.48/arch/mips/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
26294 -+++ linux-2.6.32.48/arch/mips/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
26295 -@@ -26,6 +26,23 @@
26296 - #include <asm/ptrace.h>
26297 - #include <asm/highmem.h> /* For VMALLOC_END */
26298 -
26299 -+#ifdef CONFIG_PAX_PAGEEXEC
26300 -+void pax_report_insns(void *pc, void *sp)
26301 -+{
26302 -+ unsigned long i;
26303 -+
26304 -+ printk(KERN_ERR "PAX: bytes at PC: ");
26305 -+ for (i = 0; i < 5; i++) {
26306 -+ unsigned int c;
26307 -+ if (get_user(c, (unsigned int *)pc+i))
26308 -+ printk(KERN_CONT "???????? ");
26309 -+ else
26310 -+ printk(KERN_CONT "%08x ", c);
26311 -+ }
26312 -+ printk("\n");
26313 -+}
26314 -+#endif
26315 -+
26316 - /*
26317 - * This routine handles page faults. It determines the address,
26318 - * and the problem, and then passes it off to one of the appropriate
26319 -diff -urNp linux-2.6.32.48/arch/parisc/include/asm/elf.h linux-2.6.32.48/arch/parisc/include/asm/elf.h
26320 ---- linux-2.6.32.48/arch/parisc/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
26321 -+++ linux-2.6.32.48/arch/parisc/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
26322 -@@ -343,6 +343,13 @@ struct pt_regs; /* forward declaration..
26323 +@@ -93,30 +97,3 @@ void arch_pick_mmap_layout(struct mm_str
26324 + mm->get_unmapped_area = arch_get_unmapped_area;
26325 + mm->unmap_area = arch_unmap_area;
26326 + }
26327 +-
26328 +-static inline unsigned long brk_rnd(void)
26329 +-{
26330 +- unsigned long rnd = get_random_int();
26331 +-
26332 +- rnd = rnd << PAGE_SHIFT;
26333 +- /* 8MB for 32bit, 256MB for 64bit */
26334 +- if (TASK_IS_32BIT_ADDR)
26335 +- rnd = rnd & 0x7ffffful;
26336 +- else
26337 +- rnd = rnd & 0xffffffful;
26338 +-
26339 +- return rnd;
26340 +-}
26341 +-
26342 +-unsigned long arch_randomize_brk(struct mm_struct *mm)
26343 +-{
26344 +- unsigned long base = mm->brk;
26345 +- unsigned long ret;
26346 +-
26347 +- ret = PAGE_ALIGN(base + brk_rnd());
26348 +-
26349 +- if (ret < mm->brk)
26350 +- return mm->brk;
26351 +-
26352 +- return ret;
26353 +-}
26354 +diff -urNp linux-3.0.8/arch/parisc/include/asm/elf.h linux-3.0.8/arch/parisc/include/asm/elf.h
26355 +--- linux-3.0.8/arch/parisc/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
26356 ++++ linux-3.0.8/arch/parisc/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
26357 +@@ -342,6 +342,13 @@ struct pt_regs; /* forward declaration..
26358
26359 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x01000000)
26360
26361 @@ -1699,10 +1289,10 @@ diff -urNp linux-2.6.32.48/arch/parisc/include/asm/elf.h linux-2.6.32.48/arch/pa
26362 /* This yields a mask that user programs can use to figure out what
26363 instruction set this CPU supports. This could be done in user space,
26364 but it's not easy, and we've already done it here. */
26365 -diff -urNp linux-2.6.32.48/arch/parisc/include/asm/pgtable.h linux-2.6.32.48/arch/parisc/include/asm/pgtable.h
26366 ---- linux-2.6.32.48/arch/parisc/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
26367 -+++ linux-2.6.32.48/arch/parisc/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
26368 -@@ -207,6 +207,17 @@
26369 +diff -urNp linux-3.0.8/arch/parisc/include/asm/pgtable.h linux-3.0.8/arch/parisc/include/asm/pgtable.h
26370 +--- linux-3.0.8/arch/parisc/include/asm/pgtable.h 2011-07-21 22:17:23.000000000 -0400
26371 ++++ linux-3.0.8/arch/parisc/include/asm/pgtable.h 2011-08-23 21:47:55.000000000 -0400
26372 +@@ -210,6 +210,17 @@ struct vm_area_struct;
26373 #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED)
26374 #define PAGE_COPY PAGE_EXECREAD
26375 #define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_EXEC |_PAGE_ACCESSED)
26376 @@ -1718,12 +1308,12 @@ diff -urNp linux-2.6.32.48/arch/parisc/include/asm/pgtable.h linux-2.6.32.48/arc
26377 +#endif
26378 +
26379 #define PAGE_KERNEL __pgprot(_PAGE_KERNEL)
26380 - #define PAGE_KERNEL_RO __pgprot(_PAGE_KERNEL & ~_PAGE_WRITE)
26381 - #define PAGE_KERNEL_UNC __pgprot(_PAGE_KERNEL | _PAGE_NO_CACHE)
26382 -diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/parisc/kernel/module.c
26383 ---- linux-2.6.32.48/arch/parisc/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
26384 -+++ linux-2.6.32.48/arch/parisc/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
26385 -@@ -95,16 +95,38 @@
26386 + #define PAGE_KERNEL_EXEC __pgprot(_PAGE_KERNEL_EXEC)
26387 + #define PAGE_KERNEL_RWX __pgprot(_PAGE_KERNEL_RWX)
26388 +diff -urNp linux-3.0.8/arch/parisc/kernel/module.c linux-3.0.8/arch/parisc/kernel/module.c
26389 +--- linux-3.0.8/arch/parisc/kernel/module.c 2011-07-21 22:17:23.000000000 -0400
26390 ++++ linux-3.0.8/arch/parisc/kernel/module.c 2011-08-23 21:47:55.000000000 -0400
26391 +@@ -98,16 +98,38 @@
26392
26393 /* three functions to determine where in the module core
26394 * or init pieces the location is */
26395 @@ -1766,7 +1356,7 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/pari
26396 }
26397
26398 static inline int in_local(struct module *me, void *loc)
26399 -@@ -364,13 +386,13 @@ int module_frob_arch_sections(CONST Elf_
26400 +@@ -373,13 +395,13 @@ int module_frob_arch_sections(CONST Elf_
26401 }
26402
26403 /* align things a bit */
26404 @@ -1787,7 +1377,7 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/pari
26405
26406 me->arch.got_max = gots;
26407 me->arch.fdesc_max = fdescs;
26408 -@@ -388,7 +410,7 @@ static Elf64_Word get_got(struct module
26409 +@@ -397,7 +419,7 @@ static Elf64_Word get_got(struct module
26410
26411 BUG_ON(value == 0);
26412
26413 @@ -1796,7 +1386,7 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/pari
26414 for (i = 0; got[i].addr; i++)
26415 if (got[i].addr == value)
26416 goto out;
26417 -@@ -406,7 +428,7 @@ static Elf64_Word get_got(struct module
26418 +@@ -415,7 +437,7 @@ static Elf64_Word get_got(struct module
26419 #ifdef CONFIG_64BIT
26420 static Elf_Addr get_fdesc(struct module *me, unsigned long value)
26421 {
26422 @@ -1805,7 +1395,7 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/pari
26423
26424 if (!value) {
26425 printk(KERN_ERR "%s: zero OPD requested!\n", me->name);
26426 -@@ -424,7 +446,7 @@ static Elf_Addr get_fdesc(struct module
26427 +@@ -433,7 +455,7 @@ static Elf_Addr get_fdesc(struct module
26428
26429 /* Create new one */
26430 fdesc->addr = value;
26431 @@ -1814,7 +1404,7 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/pari
26432 return (Elf_Addr)fdesc;
26433 }
26434 #endif /* CONFIG_64BIT */
26435 -@@ -848,7 +870,7 @@ register_unwind_table(struct module *me,
26436 +@@ -857,7 +879,7 @@ register_unwind_table(struct module *me,
26437
26438 table = (unsigned char *)sechdrs[me->arch.unwind_section].sh_addr;
26439 end = table + sechdrs[me->arch.unwind_section].sh_size;
26440 @@ -1823,9 +1413,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/module.c linux-2.6.32.48/arch/pari
26441
26442 DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n",
26443 me->arch.unwind_section, table, end, gp);
26444 -diff -urNp linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c
26445 ---- linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c 2011-11-12 12:44:28.000000000 -0500
26446 -+++ linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c 2011-11-12 12:46:42.000000000 -0500
26447 +diff -urNp linux-3.0.8/arch/parisc/kernel/sys_parisc.c linux-3.0.8/arch/parisc/kernel/sys_parisc.c
26448 +--- linux-3.0.8/arch/parisc/kernel/sys_parisc.c 2011-07-21 22:17:23.000000000 -0400
26449 ++++ linux-3.0.8/arch/parisc/kernel/sys_parisc.c 2011-08-23 21:47:55.000000000 -0400
26450 @@ -43,7 +43,7 @@ static unsigned long get_unshared_area(u
26451 /* At this point: (!vma || addr < vma->vm_end). */
26452 if (TASK_SIZE - len < addr)
26453 @@ -1853,9 +1443,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/sys_parisc.c linux-2.6.32.48/arch/
26454
26455 if (filp) {
26456 addr = get_shared_area(filp->f_mapping, addr, len, pgoff);
26457 -diff -urNp linux-2.6.32.48/arch/parisc/kernel/traps.c linux-2.6.32.48/arch/parisc/kernel/traps.c
26458 ---- linux-2.6.32.48/arch/parisc/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
26459 -+++ linux-2.6.32.48/arch/parisc/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
26460 +diff -urNp linux-3.0.8/arch/parisc/kernel/traps.c linux-3.0.8/arch/parisc/kernel/traps.c
26461 +--- linux-3.0.8/arch/parisc/kernel/traps.c 2011-07-21 22:17:23.000000000 -0400
26462 ++++ linux-3.0.8/arch/parisc/kernel/traps.c 2011-08-23 21:47:55.000000000 -0400
26463 @@ -733,9 +733,7 @@ void notrace handle_interruption(int cod
26464
26465 down_read(&current->mm->mmap_sem);
26466 @@ -1867,9 +1457,9 @@ diff -urNp linux-2.6.32.48/arch/parisc/kernel/traps.c linux-2.6.32.48/arch/paris
26467 fault_address = regs->iaoq[0];
26468 fault_space = regs->iasq[0];
26469
26470 -diff -urNp linux-2.6.32.48/arch/parisc/mm/fault.c linux-2.6.32.48/arch/parisc/mm/fault.c
26471 ---- linux-2.6.32.48/arch/parisc/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
26472 -+++ linux-2.6.32.48/arch/parisc/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
26473 +diff -urNp linux-3.0.8/arch/parisc/mm/fault.c linux-3.0.8/arch/parisc/mm/fault.c
26474 +--- linux-3.0.8/arch/parisc/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
26475 ++++ linux-3.0.8/arch/parisc/mm/fault.c 2011-08-23 21:47:55.000000000 -0400
26476 @@ -15,6 +15,7 @@
26477 #include <linux/sched.h>
26478 #include <linux/interrupt.h>
26479 @@ -2039,91 +1629,10 @@ diff -urNp linux-2.6.32.48/arch/parisc/mm/fault.c linux-2.6.32.48/arch/parisc/mm
26480
26481 /*
26482 * If for any reason at all we couldn't handle the fault, make
26483 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/device.h linux-2.6.32.48/arch/powerpc/include/asm/device.h
26484 ---- linux-2.6.32.48/arch/powerpc/include/asm/device.h 2009-12-02 22:51:21.000000000 -0500
26485 -+++ linux-2.6.32.48/arch/powerpc/include/asm/device.h 2011-11-12 12:46:42.000000000 -0500
26486 -@@ -14,7 +14,7 @@ struct dev_archdata {
26487 - struct device_node *of_node;
26488 -
26489 - /* DMA operations on that device */
26490 -- struct dma_map_ops *dma_ops;
26491 -+ const struct dma_map_ops *dma_ops;
26492 -
26493 - /*
26494 - * When an iommu is in use, dma_data is used as a ptr to the base of the
26495 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h
26496 ---- linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
26497 -+++ linux-2.6.32.48/arch/powerpc/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
26498 -@@ -69,9 +69,9 @@ static inline unsigned long device_to_ma
26499 - #ifdef CONFIG_PPC64
26500 - extern struct dma_map_ops dma_iommu_ops;
26501 - #endif
26502 --extern struct dma_map_ops dma_direct_ops;
26503 -+extern const struct dma_map_ops dma_direct_ops;
26504 -
26505 --static inline struct dma_map_ops *get_dma_ops(struct device *dev)
26506 -+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
26507 - {
26508 - /* We don't handle the NULL dev case for ISA for now. We could
26509 - * do it via an out of line call but it is not needed for now. The
26510 -@@ -84,7 +84,7 @@ static inline struct dma_map_ops *get_dm
26511 - return dev->archdata.dma_ops;
26512 - }
26513 -
26514 --static inline void set_dma_ops(struct device *dev, struct dma_map_ops *ops)
26515 -+static inline void set_dma_ops(struct device *dev, const struct dma_map_ops *ops)
26516 - {
26517 - dev->archdata.dma_ops = ops;
26518 - }
26519 -@@ -118,7 +118,7 @@ static inline void set_dma_offset(struct
26520 -
26521 - static inline int dma_supported(struct device *dev, u64 mask)
26522 - {
26523 -- struct dma_map_ops *dma_ops = get_dma_ops(dev);
26524 -+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
26525 -
26526 - if (unlikely(dma_ops == NULL))
26527 - return 0;
26528 -@@ -132,7 +132,7 @@ static inline int dma_supported(struct d
26529 -
26530 - static inline int dma_set_mask(struct device *dev, u64 dma_mask)
26531 - {
26532 -- struct dma_map_ops *dma_ops = get_dma_ops(dev);
26533 -+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
26534 -
26535 - if (unlikely(dma_ops == NULL))
26536 - return -EIO;
26537 -@@ -147,7 +147,7 @@ static inline int dma_set_mask(struct de
26538 - static inline void *dma_alloc_coherent(struct device *dev, size_t size,
26539 - dma_addr_t *dma_handle, gfp_t flag)
26540 - {
26541 -- struct dma_map_ops *dma_ops = get_dma_ops(dev);
26542 -+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
26543 - void *cpu_addr;
26544 -
26545 - BUG_ON(!dma_ops);
26546 -@@ -162,7 +162,7 @@ static inline void *dma_alloc_coherent(s
26547 - static inline void dma_free_coherent(struct device *dev, size_t size,
26548 - void *cpu_addr, dma_addr_t dma_handle)
26549 - {
26550 -- struct dma_map_ops *dma_ops = get_dma_ops(dev);
26551 -+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
26552 -
26553 - BUG_ON(!dma_ops);
26554 -
26555 -@@ -173,7 +173,7 @@ static inline void dma_free_coherent(str
26556 -
26557 - static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
26558 - {
26559 -- struct dma_map_ops *dma_ops = get_dma_ops(dev);
26560 -+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
26561 -
26562 - if (dma_ops->mapping_error)
26563 - return dma_ops->mapping_error(dev, dma_addr);
26564 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/elf.h linux-2.6.32.48/arch/powerpc/include/asm/elf.h
26565 ---- linux-2.6.32.48/arch/powerpc/include/asm/elf.h 2011-11-12 12:44:28.000000000 -0500
26566 -+++ linux-2.6.32.48/arch/powerpc/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
26567 -@@ -179,8 +179,19 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E
26568 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/elf.h linux-3.0.8/arch/powerpc/include/asm/elf.h
26569 +--- linux-3.0.8/arch/powerpc/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
26570 ++++ linux-3.0.8/arch/powerpc/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
26571 +@@ -178,8 +178,19 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E
26572 the loader. We need to make sure that it is out of the way of the program
26573 that it will "exec", and that there is sufficient room for the brk. */
26574
26575 @@ -2135,8 +1644,8 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/elf.h linux-2.6.32.48/arch/p
26576 +#define PAX_ELF_ET_DYN_BASE (0x10000000UL)
26577 +
26578 +#ifdef __powerpc64__
26579 -+#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_32BIT) ? 16 : 28)
26580 -+#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_32BIT) ? 16 : 28)
26581 ++#define PAX_DELTA_MMAP_LEN (is_32bit_task() ? 16 : 28)
26582 ++#define PAX_DELTA_STACK_LEN (is_32bit_task() ? 16 : 28)
26583 +#else
26584 +#define PAX_DELTA_MMAP_LEN 15
26585 +#define PAX_DELTA_STACK_LEN 15
26586 @@ -2145,7 +1654,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/elf.h linux-2.6.32.48/arch/p
26587
26588 /*
26589 * Our registers are always unsigned longs, whether we're a 32 bit
26590 -@@ -275,9 +286,6 @@ extern int arch_setup_additional_pages(s
26591 +@@ -274,9 +285,6 @@ extern int arch_setup_additional_pages(s
26592 (0x7ff >> (PAGE_SHIFT - 12)) : \
26593 (0x3ffff >> (PAGE_SHIFT - 12)))
26594
26595 @@ -2155,35 +1664,34 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/elf.h linux-2.6.32.48/arch/p
26596 #endif /* __KERNEL__ */
26597
26598 /*
26599 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/iommu.h linux-2.6.32.48/arch/powerpc/include/asm/iommu.h
26600 ---- linux-2.6.32.48/arch/powerpc/include/asm/iommu.h 2009-12-02 22:51:21.000000000 -0500
26601 -+++ linux-2.6.32.48/arch/powerpc/include/asm/iommu.h 2011-11-12 12:46:42.000000000 -0500
26602 -@@ -116,6 +116,9 @@ extern void iommu_init_early_iSeries(voi
26603 - extern void iommu_init_early_dart(void);
26604 - extern void iommu_init_early_pasemi(void);
26605 -
26606 -+/* dma-iommu.c */
26607 -+extern int dma_iommu_dma_supported(struct device *dev, u64 mask);
26608 -+
26609 - #ifdef CONFIG_PCI
26610 - extern void pci_iommu_init(void);
26611 - extern void pci_direct_iommu_init(void);
26612 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h
26613 ---- linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
26614 -+++ linux-2.6.32.48/arch/powerpc/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
26615 -@@ -26,6 +26,7 @@ enum km_type {
26616 - KM_SOFTIRQ1,
26617 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/kmap_types.h linux-3.0.8/arch/powerpc/include/asm/kmap_types.h
26618 +--- linux-3.0.8/arch/powerpc/include/asm/kmap_types.h 2011-07-21 22:17:23.000000000 -0400
26619 ++++ linux-3.0.8/arch/powerpc/include/asm/kmap_types.h 2011-08-23 21:47:55.000000000 -0400
26620 +@@ -27,6 +27,7 @@ enum km_type {
26621 KM_PPC_SYNC_PAGE,
26622 KM_PPC_SYNC_ICACHE,
26623 + KM_KDB,
26624 + KM_CLEARPAGE,
26625 KM_TYPE_NR
26626 };
26627
26628 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page_64.h linux-2.6.32.48/arch/powerpc/include/asm/page_64.h
26629 ---- linux-2.6.32.48/arch/powerpc/include/asm/page_64.h 2009-12-02 22:51:21.000000000 -0500
26630 -+++ linux-2.6.32.48/arch/powerpc/include/asm/page_64.h 2011-11-12 12:46:42.000000000 -0500
26631 -@@ -180,15 +180,18 @@ do { \
26632 - * stack by default, so in the absense of a PT_GNU_STACK program header
26633 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/mman.h linux-3.0.8/arch/powerpc/include/asm/mman.h
26634 +--- linux-3.0.8/arch/powerpc/include/asm/mman.h 2011-07-21 22:17:23.000000000 -0400
26635 ++++ linux-3.0.8/arch/powerpc/include/asm/mman.h 2011-08-23 21:47:55.000000000 -0400
26636 +@@ -44,7 +44,7 @@ static inline unsigned long arch_calc_vm
26637 + }
26638 + #define arch_calc_vm_prot_bits(prot) arch_calc_vm_prot_bits(prot)
26639 +
26640 +-static inline pgprot_t arch_vm_get_page_prot(unsigned long vm_flags)
26641 ++static inline pgprot_t arch_vm_get_page_prot(vm_flags_t vm_flags)
26642 + {
26643 + return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0);
26644 + }
26645 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/page_64.h linux-3.0.8/arch/powerpc/include/asm/page_64.h
26646 +--- linux-3.0.8/arch/powerpc/include/asm/page_64.h 2011-07-21 22:17:23.000000000 -0400
26647 ++++ linux-3.0.8/arch/powerpc/include/asm/page_64.h 2011-08-23 21:47:55.000000000 -0400
26648 +@@ -155,15 +155,18 @@ do { \
26649 + * stack by default, so in the absence of a PT_GNU_STACK program header
26650 * we turn execute permission off.
26651 */
26652 -#define VM_STACK_DEFAULT_FLAGS32 (VM_READ | VM_WRITE | VM_EXEC | \
26653 @@ -2197,16 +1705,16 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page_64.h linux-2.6.32.48/ar
26654
26655 +#ifndef CONFIG_PAX_PAGEEXEC
26656 #define VM_STACK_DEFAULT_FLAGS \
26657 - (test_thread_flag(TIF_32BIT) ? \
26658 + (is_32bit_task() ? \
26659 VM_STACK_DEFAULT_FLAGS32 : VM_STACK_DEFAULT_FLAGS64)
26660 +#endif
26661
26662 #include <asm-generic/getorder.h>
26663
26664 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page.h linux-2.6.32.48/arch/powerpc/include/asm/page.h
26665 ---- linux-2.6.32.48/arch/powerpc/include/asm/page.h 2009-12-02 22:51:21.000000000 -0500
26666 -+++ linux-2.6.32.48/arch/powerpc/include/asm/page.h 2011-11-12 12:46:42.000000000 -0500
26667 -@@ -116,8 +116,9 @@ extern phys_addr_t kernstart_addr;
26668 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/page.h linux-3.0.8/arch/powerpc/include/asm/page.h
26669 +--- linux-3.0.8/arch/powerpc/include/asm/page.h 2011-07-21 22:17:23.000000000 -0400
26670 ++++ linux-3.0.8/arch/powerpc/include/asm/page.h 2011-08-23 21:47:55.000000000 -0400
26671 +@@ -129,8 +129,9 @@ extern phys_addr_t kernstart_addr;
26672 * and needs to be executable. This means the whole heap ends
26673 * up being executable.
26674 */
26675 @@ -2218,7 +1726,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page.h linux-2.6.32.48/arch/
26676
26677 #define VM_DATA_DEFAULT_FLAGS64 (VM_READ | VM_WRITE | \
26678 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
26679 -@@ -145,6 +146,9 @@ extern phys_addr_t kernstart_addr;
26680 +@@ -158,6 +159,9 @@ extern phys_addr_t kernstart_addr;
26681 #define is_kernel_addr(x) ((x) >= PAGE_OFFSET)
26682 #endif
26683
26684 @@ -2228,23 +1736,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/page.h linux-2.6.32.48/arch/
26685 #ifndef __ASSEMBLY__
26686
26687 #undef STRICT_MM_TYPECHECKS
26688 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pci.h linux-2.6.32.48/arch/powerpc/include/asm/pci.h
26689 ---- linux-2.6.32.48/arch/powerpc/include/asm/pci.h 2009-12-02 22:51:21.000000000 -0500
26690 -+++ linux-2.6.32.48/arch/powerpc/include/asm/pci.h 2011-11-12 12:46:42.000000000 -0500
26691 -@@ -65,8 +65,8 @@ static inline int pci_get_legacy_ide_irq
26692 - }
26693 -
26694 - #ifdef CONFIG_PCI
26695 --extern void set_pci_dma_ops(struct dma_map_ops *dma_ops);
26696 --extern struct dma_map_ops *get_pci_dma_ops(void);
26697 -+extern void set_pci_dma_ops(const struct dma_map_ops *dma_ops);
26698 -+extern const struct dma_map_ops *get_pci_dma_ops(void);
26699 - #else /* CONFIG_PCI */
26700 - #define set_pci_dma_ops(d)
26701 - #define get_pci_dma_ops() NULL
26702 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h
26703 ---- linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
26704 -+++ linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
26705 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/pgtable.h linux-3.0.8/arch/powerpc/include/asm/pgtable.h
26706 +--- linux-3.0.8/arch/powerpc/include/asm/pgtable.h 2011-07-21 22:17:23.000000000 -0400
26707 ++++ linux-3.0.8/arch/powerpc/include/asm/pgtable.h 2011-08-23 21:47:55.000000000 -0400
26708 @@ -2,6 +2,7 @@
26709 #define _ASM_POWERPC_PGTABLE_H
26710 #ifdef __KERNEL__
26711 @@ -2253,9 +1747,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pgtable.h linux-2.6.32.48/ar
26712 #ifndef __ASSEMBLY__
26713 #include <asm/processor.h> /* For TASK_SIZE */
26714 #include <asm/mmu.h>
26715 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h
26716 ---- linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h 2009-12-02 22:51:21.000000000 -0500
26717 -+++ linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h 2011-11-12 12:46:42.000000000 -0500
26718 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/pte-hash32.h linux-3.0.8/arch/powerpc/include/asm/pte-hash32.h
26719 +--- linux-3.0.8/arch/powerpc/include/asm/pte-hash32.h 2011-07-21 22:17:23.000000000 -0400
26720 ++++ linux-3.0.8/arch/powerpc/include/asm/pte-hash32.h 2011-08-23 21:47:55.000000000 -0400
26721 @@ -21,6 +21,7 @@
26722 #define _PAGE_FILE 0x004 /* when !present: nonlinear file mapping */
26723 #define _PAGE_USER 0x004 /* usermode access allowed */
26724 @@ -2264,22 +1758,10 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/pte-hash32.h linux-2.6.32.48
26725 #define _PAGE_COHERENT 0x010 /* M: enforce memory coherence (SMP systems) */
26726 #define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */
26727 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */
26728 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h
26729 ---- linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h 2009-12-02 22:51:21.000000000 -0500
26730 -+++ linux-2.6.32.48/arch/powerpc/include/asm/ptrace.h 2011-11-12 12:46:42.000000000 -0500
26731 -@@ -103,7 +103,7 @@ extern unsigned long profile_pc(struct p
26732 - } while(0)
26733 -
26734 - struct task_struct;
26735 --extern unsigned long ptrace_get_reg(struct task_struct *task, int regno);
26736 -+extern unsigned long ptrace_get_reg(struct task_struct *task, unsigned int regno);
26737 - extern int ptrace_put_reg(struct task_struct *task, int regno,
26738 - unsigned long data);
26739 -
26740 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/reg.h linux-2.6.32.48/arch/powerpc/include/asm/reg.h
26741 ---- linux-2.6.32.48/arch/powerpc/include/asm/reg.h 2011-11-12 12:44:28.000000000 -0500
26742 -+++ linux-2.6.32.48/arch/powerpc/include/asm/reg.h 2011-11-12 12:46:42.000000000 -0500
26743 -@@ -191,6 +191,7 @@
26744 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/reg.h linux-3.0.8/arch/powerpc/include/asm/reg.h
26745 +--- linux-3.0.8/arch/powerpc/include/asm/reg.h 2011-07-21 22:17:23.000000000 -0400
26746 ++++ linux-3.0.8/arch/powerpc/include/asm/reg.h 2011-08-23 21:47:55.000000000 -0400
26747 +@@ -209,6 +209,7 @@
26748 #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */
26749 #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
26750 #define DSISR_NOHPTE 0x40000000 /* no translation found */
26751 @@ -2287,21 +1769,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/reg.h linux-2.6.32.48/arch/p
26752 #define DSISR_PROTFAULT 0x08000000 /* protection fault */
26753 #define DSISR_ISSTORE 0x02000000 /* access was a store */
26754 #define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */
26755 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h
26756 ---- linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h 2009-12-02 22:51:21.000000000 -0500
26757 -+++ linux-2.6.32.48/arch/powerpc/include/asm/swiotlb.h 2011-11-12 12:46:42.000000000 -0500
26758 -@@ -13,7 +13,7 @@
26759 -
26760 - #include <linux/swiotlb.h>
26761 -
26762 --extern struct dma_map_ops swiotlb_dma_ops;
26763 -+extern const struct dma_map_ops swiotlb_dma_ops;
26764 -
26765 - static inline void dma_mark_clean(void *addr, size_t size) {}
26766 -
26767 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/system.h linux-2.6.32.48/arch/powerpc/include/asm/system.h
26768 ---- linux-2.6.32.48/arch/powerpc/include/asm/system.h 2011-11-12 12:44:28.000000000 -0500
26769 -+++ linux-2.6.32.48/arch/powerpc/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
26770 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/system.h linux-3.0.8/arch/powerpc/include/asm/system.h
26771 +--- linux-3.0.8/arch/powerpc/include/asm/system.h 2011-07-21 22:17:23.000000000 -0400
26772 ++++ linux-3.0.8/arch/powerpc/include/asm/system.h 2011-08-23 21:47:55.000000000 -0400
26773 @@ -531,7 +531,7 @@ __cmpxchg_local(volatile void *ptr, unsi
26774 #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
26775 #endif
26776 @@ -2311,9 +1781,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/system.h linux-2.6.32.48/arc
26777
26778 /* Used in very early kernel initialization. */
26779 extern unsigned long reloc_offset(void);
26780 -diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h
26781 ---- linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
26782 -+++ linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
26783 +diff -urNp linux-3.0.8/arch/powerpc/include/asm/uaccess.h linux-3.0.8/arch/powerpc/include/asm/uaccess.h
26784 +--- linux-3.0.8/arch/powerpc/include/asm/uaccess.h 2011-07-21 22:17:23.000000000 -0400
26785 ++++ linux-3.0.8/arch/powerpc/include/asm/uaccess.h 2011-08-23 21:47:55.000000000 -0400
26786 @@ -13,6 +13,8 @@
26787 #define VERIFY_READ 0
26788 #define VERIFY_WRITE 1
26789 @@ -2491,58 +1961,10 @@ diff -urNp linux-2.6.32.48/arch/powerpc/include/asm/uaccess.h linux-2.6.32.48/ar
26790 extern unsigned long __clear_user(void __user *addr, unsigned long size);
26791
26792 static inline unsigned long clear_user(void __user *addr, unsigned long size)
26793 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c
26794 ---- linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c 2009-12-02 22:51:21.000000000 -0500
26795 -+++ linux-2.6.32.48/arch/powerpc/kernel/cacheinfo.c 2011-11-12 12:46:42.000000000 -0500
26796 -@@ -642,7 +642,7 @@ static struct kobj_attribute *cache_inde
26797 - &cache_assoc_attr,
26798 - };
26799 -
26800 --static struct sysfs_ops cache_index_ops = {
26801 -+static const struct sysfs_ops cache_index_ops = {
26802 - .show = cache_index_show,
26803 - };
26804 -
26805 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma.c linux-2.6.32.48/arch/powerpc/kernel/dma.c
26806 ---- linux-2.6.32.48/arch/powerpc/kernel/dma.c 2009-12-02 22:51:21.000000000 -0500
26807 -+++ linux-2.6.32.48/arch/powerpc/kernel/dma.c 2011-11-12 12:46:42.000000000 -0500
26808 -@@ -134,7 +134,7 @@ static inline void dma_direct_sync_singl
26809 - }
26810 - #endif
26811 -
26812 --struct dma_map_ops dma_direct_ops = {
26813 -+const struct dma_map_ops dma_direct_ops = {
26814 - .alloc_coherent = dma_direct_alloc_coherent,
26815 - .free_coherent = dma_direct_free_coherent,
26816 - .map_sg = dma_direct_map_sg,
26817 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c
26818 ---- linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c 2009-12-02 22:51:21.000000000 -0500
26819 -+++ linux-2.6.32.48/arch/powerpc/kernel/dma-iommu.c 2011-11-12 12:46:42.000000000 -0500
26820 -@@ -70,7 +70,7 @@ static void dma_iommu_unmap_sg(struct de
26821 - }
26822 -
26823 - /* We support DMA to/from any memory page via the iommu */
26824 --static int dma_iommu_dma_supported(struct device *dev, u64 mask)
26825 -+int dma_iommu_dma_supported(struct device *dev, u64 mask)
26826 - {
26827 - struct iommu_table *tbl = get_iommu_table_base(dev);
26828 -
26829 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c
26830 ---- linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c 2009-12-02 22:51:21.000000000 -0500
26831 -+++ linux-2.6.32.48/arch/powerpc/kernel/dma-swiotlb.c 2011-11-12 12:46:42.000000000 -0500
26832 -@@ -31,7 +31,7 @@ unsigned int ppc_swiotlb_enable;
26833 - * map_page, and unmap_page on highmem, use normal dma_ops
26834 - * for everything else.
26835 - */
26836 --struct dma_map_ops swiotlb_dma_ops = {
26837 -+const struct dma_map_ops swiotlb_dma_ops = {
26838 - .alloc_coherent = dma_direct_alloc_coherent,
26839 - .free_coherent = dma_direct_free_coherent,
26840 - .map_sg = swiotlb_map_sg_attrs,
26841 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S
26842 ---- linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S 2009-12-02 22:51:21.000000000 -0500
26843 -+++ linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S 2011-11-12 12:46:42.000000000 -0500
26844 -@@ -455,6 +455,7 @@ storage_fault_common:
26845 +diff -urNp linux-3.0.8/arch/powerpc/kernel/exceptions-64e.S linux-3.0.8/arch/powerpc/kernel/exceptions-64e.S
26846 +--- linux-3.0.8/arch/powerpc/kernel/exceptions-64e.S 2011-07-21 22:17:23.000000000 -0400
26847 ++++ linux-3.0.8/arch/powerpc/kernel/exceptions-64e.S 2011-08-23 21:47:55.000000000 -0400
26848 +@@ -567,6 +567,7 @@ storage_fault_common:
26849 std r14,_DAR(r1)
26850 std r15,_DSISR(r1)
26851 addi r3,r1,STACK_FRAME_OVERHEAD
26852 @@ -2550,7 +1972,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S linux-2.6.32.48/
26853 mr r4,r14
26854 mr r5,r15
26855 ld r14,PACA_EXGEN+EX_R14(r13)
26856 -@@ -464,8 +465,7 @@ storage_fault_common:
26857 +@@ -576,8 +577,7 @@ storage_fault_common:
26858 cmpdi r3,0
26859 bne- 1f
26860 b .ret_from_except_lite
26861 @@ -2560,10 +1982,10 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64e.S linux-2.6.32.48/
26862 addi r3,r1,STACK_FRAME_OVERHEAD
26863 ld r4,_DAR(r1)
26864 bl .bad_page_fault
26865 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S
26866 ---- linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S 2009-12-02 22:51:21.000000000 -0500
26867 -+++ linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S 2011-11-12 12:46:42.000000000 -0500
26868 -@@ -818,10 +818,10 @@ handle_page_fault:
26869 +diff -urNp linux-3.0.8/arch/powerpc/kernel/exceptions-64s.S linux-3.0.8/arch/powerpc/kernel/exceptions-64s.S
26870 +--- linux-3.0.8/arch/powerpc/kernel/exceptions-64s.S 2011-07-21 22:17:23.000000000 -0400
26871 ++++ linux-3.0.8/arch/powerpc/kernel/exceptions-64s.S 2011-08-23 21:47:55.000000000 -0400
26872 +@@ -956,10 +956,10 @@ handle_page_fault:
26873 11: ld r4,_DAR(r1)
26874 ld r5,_DSISR(r1)
26875 addi r3,r1,STACK_FRAME_OVERHEAD
26876 @@ -2575,42 +1997,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/exceptions-64s.S linux-2.6.32.48/
26877 mr r5,r3
26878 addi r3,r1,STACK_FRAME_OVERHEAD
26879 lwz r4,_DAR(r1)
26880 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c
26881 ---- linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c 2009-12-02 22:51:21.000000000 -0500
26882 -+++ linux-2.6.32.48/arch/powerpc/kernel/ibmebus.c 2011-11-12 12:46:42.000000000 -0500
26883 -@@ -127,7 +127,7 @@ static int ibmebus_dma_supported(struct
26884 - return 1;
26885 - }
26886 -
26887 --static struct dma_map_ops ibmebus_dma_ops = {
26888 -+static const struct dma_map_ops ibmebus_dma_ops = {
26889 - .alloc_coherent = ibmebus_alloc_coherent,
26890 - .free_coherent = ibmebus_free_coherent,
26891 - .map_sg = ibmebus_map_sg,
26892 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/kgdb.c linux-2.6.32.48/arch/powerpc/kernel/kgdb.c
26893 ---- linux-2.6.32.48/arch/powerpc/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
26894 -+++ linux-2.6.32.48/arch/powerpc/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
26895 -@@ -126,7 +126,7 @@ static int kgdb_handle_breakpoint(struct
26896 - if (kgdb_handle_exception(0, SIGTRAP, 0, regs) != 0)
26897 - return 0;
26898 -
26899 -- if (*(u32 *) (regs->nip) == *(u32 *) (&arch_kgdb_ops.gdb_bpt_instr))
26900 -+ if (*(u32 *) (regs->nip) == *(const u32 *) (&arch_kgdb_ops.gdb_bpt_instr))
26901 - regs->nip += 4;
26902 -
26903 - return 1;
26904 -@@ -353,7 +353,7 @@ int kgdb_arch_handle_exception(int vecto
26905 - /*
26906 - * Global data
26907 - */
26908 --struct kgdb_arch arch_kgdb_ops = {
26909 -+const struct kgdb_arch arch_kgdb_ops = {
26910 - .gdb_bpt_instr = {0x7d, 0x82, 0x10, 0x08},
26911 - };
26912 -
26913 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module_32.c linux-2.6.32.48/arch/powerpc/kernel/module_32.c
26914 ---- linux-2.6.32.48/arch/powerpc/kernel/module_32.c 2009-12-02 22:51:21.000000000 -0500
26915 -+++ linux-2.6.32.48/arch/powerpc/kernel/module_32.c 2011-11-12 12:46:42.000000000 -0500
26916 +diff -urNp linux-3.0.8/arch/powerpc/kernel/module_32.c linux-3.0.8/arch/powerpc/kernel/module_32.c
26917 +--- linux-3.0.8/arch/powerpc/kernel/module_32.c 2011-07-21 22:17:23.000000000 -0400
26918 ++++ linux-3.0.8/arch/powerpc/kernel/module_32.c 2011-08-23 21:47:55.000000000 -0400
26919 @@ -162,7 +162,7 @@ int module_frob_arch_sections(Elf32_Ehdr
26920 me->arch.core_plt_section = i;
26921 }
26922 @@ -2640,9 +2029,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module_32.c linux-2.6.32.48/arch/
26923
26924 /* Find this entry, or if that fails, the next avail. entry */
26925 while (entry->jump[0]) {
26926 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module.c linux-2.6.32.48/arch/powerpc/kernel/module.c
26927 ---- linux-2.6.32.48/arch/powerpc/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
26928 -+++ linux-2.6.32.48/arch/powerpc/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
26929 +diff -urNp linux-3.0.8/arch/powerpc/kernel/module.c linux-3.0.8/arch/powerpc/kernel/module.c
26930 +--- linux-3.0.8/arch/powerpc/kernel/module.c 2011-07-21 22:17:23.000000000 -0400
26931 ++++ linux-3.0.8/arch/powerpc/kernel/module.c 2011-08-23 21:47:55.000000000 -0400
26932 @@ -31,11 +31,24 @@
26933
26934 LIST_HEAD(module_bug_list);
26935 @@ -2682,31 +2071,10 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/module.c linux-2.6.32.48/arch/pow
26936 static const Elf_Shdr *find_section(const Elf_Ehdr *hdr,
26937 const Elf_Shdr *sechdrs,
26938 const char *name)
26939 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/pci-common.c linux-2.6.32.48/arch/powerpc/kernel/pci-common.c
26940 ---- linux-2.6.32.48/arch/powerpc/kernel/pci-common.c 2011-11-12 12:44:28.000000000 -0500
26941 -+++ linux-2.6.32.48/arch/powerpc/kernel/pci-common.c 2011-11-12 12:46:42.000000000 -0500
26942 -@@ -50,14 +50,14 @@ resource_size_t isa_mem_base;
26943 - unsigned int ppc_pci_flags = 0;
26944 -
26945 -
26946 --static struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
26947 -+static const struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
26948 -
26949 --void set_pci_dma_ops(struct dma_map_ops *dma_ops)
26950 -+void set_pci_dma_ops(const struct dma_map_ops *dma_ops)
26951 - {
26952 - pci_dma_ops = dma_ops;
26953 - }
26954 -
26955 --struct dma_map_ops *get_pci_dma_ops(void)
26956 -+const struct dma_map_ops *get_pci_dma_ops(void)
26957 - {
26958 - return pci_dma_ops;
26959 - }
26960 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/process.c linux-2.6.32.48/arch/powerpc/kernel/process.c
26961 ---- linux-2.6.32.48/arch/powerpc/kernel/process.c 2011-11-12 12:44:28.000000000 -0500
26962 -+++ linux-2.6.32.48/arch/powerpc/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
26963 -@@ -539,8 +539,8 @@ void show_regs(struct pt_regs * regs)
26964 +diff -urNp linux-3.0.8/arch/powerpc/kernel/process.c linux-3.0.8/arch/powerpc/kernel/process.c
26965 +--- linux-3.0.8/arch/powerpc/kernel/process.c 2011-07-21 22:17:23.000000000 -0400
26966 ++++ linux-3.0.8/arch/powerpc/kernel/process.c 2011-08-23 21:48:14.000000000 -0400
26967 +@@ -676,8 +676,8 @@ void show_regs(struct pt_regs * regs)
26968 * Lookup NIP late so we have the best change of getting the
26969 * above info out without failing
26970 */
26971 @@ -2717,7 +2085,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/process.c linux-2.6.32.48/arch/po
26972 #endif
26973 show_stack(current, (unsigned long *) regs->gpr[1]);
26974 if (!user_mode(regs))
26975 -@@ -1034,10 +1034,10 @@ void show_stack(struct task_struct *tsk,
26976 +@@ -1183,10 +1183,10 @@ void show_stack(struct task_struct *tsk,
26977 newsp = stack[0];
26978 ip = stack[STACK_FRAME_LR_SAVE];
26979 if (!firstframe || ip != lr) {
26980 @@ -2730,7 +2098,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/process.c linux-2.6.32.48/arch/po
26981 (void *)current->ret_stack[curr_frame].ret);
26982 curr_frame--;
26983 }
26984 -@@ -1057,7 +1057,7 @@ void show_stack(struct task_struct *tsk,
26985 +@@ -1206,7 +1206,7 @@ void show_stack(struct task_struct *tsk,
26986 struct pt_regs *regs = (struct pt_regs *)
26987 (sp + STACK_FRAME_OVERHEAD);
26988 lr = regs->link;
26989 @@ -2739,7 +2107,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/process.c linux-2.6.32.48/arch/po
26990 regs->trap, (void *)regs->nip, (void *)lr);
26991 firstframe = 1;
26992 }
26993 -@@ -1134,58 +1134,3 @@ void thread_info_cache_init(void)
26994 +@@ -1281,58 +1281,3 @@ void thread_info_cache_init(void)
26995 }
26996
26997 #endif /* THREAD_SHIFT < PAGE_SHIFT */
26998 @@ -2798,31 +2166,10 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/process.c linux-2.6.32.48/arch/po
26999 -
27000 - return ret;
27001 -}
27002 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/ptrace.c linux-2.6.32.48/arch/powerpc/kernel/ptrace.c
27003 ---- linux-2.6.32.48/arch/powerpc/kernel/ptrace.c 2009-12-02 22:51:21.000000000 -0500
27004 -+++ linux-2.6.32.48/arch/powerpc/kernel/ptrace.c 2011-11-12 12:46:42.000000000 -0500
27005 -@@ -86,7 +86,7 @@ static int set_user_trap(struct task_str
27006 - /*
27007 - * Get contents of register REGNO in task TASK.
27008 - */
27009 --unsigned long ptrace_get_reg(struct task_struct *task, int regno)
27010 -+unsigned long ptrace_get_reg(struct task_struct *task, unsigned int regno)
27011 - {
27012 - if (task->thread.regs == NULL)
27013 - return -EIO;
27014 -@@ -894,7 +894,7 @@ long arch_ptrace(struct task_struct *chi
27015 -
27016 - CHECK_FULL_REGS(child->thread.regs);
27017 - if (index < PT_FPR0) {
27018 -- tmp = ptrace_get_reg(child, (int) index);
27019 -+ tmp = ptrace_get_reg(child, index);
27020 - } else {
27021 - flush_fp_to_thread(child);
27022 - tmp = ((unsigned long *)child->thread.fpr)
27023 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_32.c linux-2.6.32.48/arch/powerpc/kernel/signal_32.c
27024 ---- linux-2.6.32.48/arch/powerpc/kernel/signal_32.c 2009-12-02 22:51:21.000000000 -0500
27025 -+++ linux-2.6.32.48/arch/powerpc/kernel/signal_32.c 2011-11-12 12:46:42.000000000 -0500
27026 -@@ -857,7 +857,7 @@ int handle_rt_signal32(unsigned long sig
27027 +diff -urNp linux-3.0.8/arch/powerpc/kernel/signal_32.c linux-3.0.8/arch/powerpc/kernel/signal_32.c
27028 +--- linux-3.0.8/arch/powerpc/kernel/signal_32.c 2011-07-21 22:17:23.000000000 -0400
27029 ++++ linux-3.0.8/arch/powerpc/kernel/signal_32.c 2011-08-23 21:47:55.000000000 -0400
27030 +@@ -859,7 +859,7 @@ int handle_rt_signal32(unsigned long sig
27031 /* Save user registers on the stack */
27032 frame = &rt_sf->uc.uc_mcontext;
27033 addr = frame;
27034 @@ -2831,10 +2178,10 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_32.c linux-2.6.32.48/arch/
27035 if (save_user_regs(regs, frame, 0, 1))
27036 goto badframe;
27037 regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
27038 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_64.c linux-2.6.32.48/arch/powerpc/kernel/signal_64.c
27039 ---- linux-2.6.32.48/arch/powerpc/kernel/signal_64.c 2009-12-02 22:51:21.000000000 -0500
27040 -+++ linux-2.6.32.48/arch/powerpc/kernel/signal_64.c 2011-11-12 12:46:42.000000000 -0500
27041 -@@ -429,7 +429,7 @@ int handle_rt_signal64(int signr, struct
27042 +diff -urNp linux-3.0.8/arch/powerpc/kernel/signal_64.c linux-3.0.8/arch/powerpc/kernel/signal_64.c
27043 +--- linux-3.0.8/arch/powerpc/kernel/signal_64.c 2011-07-21 22:17:23.000000000 -0400
27044 ++++ linux-3.0.8/arch/powerpc/kernel/signal_64.c 2011-08-23 21:47:55.000000000 -0400
27045 +@@ -430,7 +430,7 @@ int handle_rt_signal64(int signr, struct
27046 current->thread.fpscr.val = 0;
27047
27048 /* Set up to return from userspace. */
27049 @@ -2843,26 +2190,10 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/signal_64.c linux-2.6.32.48/arch/
27050 regs->link = current->mm->context.vdso_base + vdso64_rt_sigtramp;
27051 } else {
27052 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
27053 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c
27054 ---- linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c 2009-12-02 22:51:21.000000000 -0500
27055 -+++ linux-2.6.32.48/arch/powerpc/kernel/sys_ppc32.c 2011-11-12 12:46:42.000000000 -0500
27056 -@@ -563,10 +563,10 @@ asmlinkage long compat_sys_sysctl(struct
27057 - if (oldlenp) {
27058 - if (!error) {
27059 - if (get_user(oldlen, oldlenp) ||
27060 -- put_user(oldlen, (compat_size_t __user *)compat_ptr(tmp.oldlenp)))
27061 -+ put_user(oldlen, (compat_size_t __user *)compat_ptr(tmp.oldlenp)) ||
27062 -+ copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused)))
27063 - error = -EFAULT;
27064 - }
27065 -- copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused));
27066 - }
27067 - return error;
27068 - }
27069 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/traps.c linux-2.6.32.48/arch/powerpc/kernel/traps.c
27070 ---- linux-2.6.32.48/arch/powerpc/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
27071 -+++ linux-2.6.32.48/arch/powerpc/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
27072 -@@ -99,6 +99,8 @@ static void pmac_backlight_unblank(void)
27073 +diff -urNp linux-3.0.8/arch/powerpc/kernel/traps.c linux-3.0.8/arch/powerpc/kernel/traps.c
27074 +--- linux-3.0.8/arch/powerpc/kernel/traps.c 2011-07-21 22:17:23.000000000 -0400
27075 ++++ linux-3.0.8/arch/powerpc/kernel/traps.c 2011-08-23 21:48:14.000000000 -0400
27076 +@@ -98,6 +98,8 @@ static void pmac_backlight_unblank(void)
27077 static inline void pmac_backlight_unblank(void) { }
27078 #endif
27079
27080 @@ -2871,7 +2202,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/traps.c linux-2.6.32.48/arch/powe
27081 int die(const char *str, struct pt_regs *regs, long err)
27082 {
27083 static struct {
27084 -@@ -168,6 +170,8 @@ int die(const char *str, struct pt_regs
27085 +@@ -171,6 +173,8 @@ int die(const char *str, struct pt_regs
27086 if (panic_on_oops)
27087 panic("Fatal exception");
27088
27089 @@ -2880,9 +2211,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/traps.c linux-2.6.32.48/arch/powe
27090 oops_exit();
27091 do_exit(err);
27092
27093 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/vdso.c linux-2.6.32.48/arch/powerpc/kernel/vdso.c
27094 ---- linux-2.6.32.48/arch/powerpc/kernel/vdso.c 2009-12-02 22:51:21.000000000 -0500
27095 -+++ linux-2.6.32.48/arch/powerpc/kernel/vdso.c 2011-11-12 12:46:42.000000000 -0500
27096 +diff -urNp linux-3.0.8/arch/powerpc/kernel/vdso.c linux-3.0.8/arch/powerpc/kernel/vdso.c
27097 +--- linux-3.0.8/arch/powerpc/kernel/vdso.c 2011-07-21 22:17:23.000000000 -0400
27098 ++++ linux-3.0.8/arch/powerpc/kernel/vdso.c 2011-08-23 21:47:55.000000000 -0400
27099 @@ -36,6 +36,7 @@
27100 #include <asm/firmware.h>
27101 #include <asm/vdso.h>
27102 @@ -2909,34 +2240,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/kernel/vdso.c linux-2.6.32.48/arch/power
27103 if (IS_ERR_VALUE(vdso_base)) {
27104 rc = vdso_base;
27105 goto fail_mmapsem;
27106 -diff -urNp linux-2.6.32.48/arch/powerpc/kernel/vio.c linux-2.6.32.48/arch/powerpc/kernel/vio.c
27107 ---- linux-2.6.32.48/arch/powerpc/kernel/vio.c 2009-12-02 22:51:21.000000000 -0500
27108 -+++ linux-2.6.32.48/arch/powerpc/kernel/vio.c 2011-11-12 12:46:42.000000000 -0500
27109 -@@ -601,11 +601,12 @@ static void vio_dma_iommu_unmap_sg(struc
27110 - vio_cmo_dealloc(viodev, alloc_size);
27111 - }
27112 -
27113 --struct dma_map_ops vio_dma_mapping_ops = {
27114 -+static const struct dma_map_ops vio_dma_mapping_ops = {
27115 - .alloc_coherent = vio_dma_iommu_alloc_coherent,
27116 - .free_coherent = vio_dma_iommu_free_coherent,
27117 - .map_sg = vio_dma_iommu_map_sg,
27118 - .unmap_sg = vio_dma_iommu_unmap_sg,
27119 -+ .dma_supported = dma_iommu_dma_supported,
27120 - .map_page = vio_dma_iommu_map_page,
27121 - .unmap_page = vio_dma_iommu_unmap_page,
27122 -
27123 -@@ -857,7 +858,6 @@ static void vio_cmo_bus_remove(struct vi
27124 -
27125 - static void vio_cmo_set_dma_ops(struct vio_dev *viodev)
27126 - {
27127 -- vio_dma_mapping_ops.dma_supported = dma_iommu_ops.dma_supported;
27128 - viodev->dev.archdata.dma_ops = &vio_dma_mapping_ops;
27129 - }
27130 -
27131 -diff -urNp linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c
27132 ---- linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c 2009-12-02 22:51:21.000000000 -0500
27133 -+++ linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c 2011-11-12 12:46:42.000000000 -0500
27134 +diff -urNp linux-3.0.8/arch/powerpc/lib/usercopy_64.c linux-3.0.8/arch/powerpc/lib/usercopy_64.c
27135 +--- linux-3.0.8/arch/powerpc/lib/usercopy_64.c 2011-07-21 22:17:23.000000000 -0400
27136 ++++ linux-3.0.8/arch/powerpc/lib/usercopy_64.c 2011-08-23 21:47:55.000000000 -0400
27137 @@ -9,22 +9,6 @@
27138 #include <linux/module.h>
27139 #include <asm/uaccess.h>
27140 @@ -2968,25 +2274,13 @@ diff -urNp linux-2.6.32.48/arch/powerpc/lib/usercopy_64.c linux-2.6.32.48/arch/p
27141 -EXPORT_SYMBOL(copy_to_user);
27142 EXPORT_SYMBOL(copy_in_user);
27143
27144 -diff -urNp linux-2.6.32.48/arch/powerpc/Makefile linux-2.6.32.48/arch/powerpc/Makefile
27145 ---- linux-2.6.32.48/arch/powerpc/Makefile 2011-11-12 12:44:28.000000000 -0500
27146 -+++ linux-2.6.32.48/arch/powerpc/Makefile 2011-11-12 12:46:42.000000000 -0500
27147 -@@ -74,6 +74,8 @@ KBUILD_AFLAGS += -Iarch/$(ARCH)
27148 - KBUILD_CFLAGS += -msoft-float -pipe -Iarch/$(ARCH) $(CFLAGS-y)
27149 - CPP = $(CC) -E $(KBUILD_CFLAGS)
27150 -
27151 -+cflags-y += -Wno-sign-compare -Wno-extra
27152 -+
27153 - CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
27154 -
27155 - ifeq ($(CONFIG_PPC64),y)
27156 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/mm/fault.c
27157 ---- linux-2.6.32.48/arch/powerpc/mm/fault.c 2009-12-02 22:51:21.000000000 -0500
27158 -+++ linux-2.6.32.48/arch/powerpc/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
27159 -@@ -30,6 +30,10 @@
27160 - #include <linux/kprobes.h>
27161 - #include <linux/kdebug.h>
27162 +diff -urNp linux-3.0.8/arch/powerpc/mm/fault.c linux-3.0.8/arch/powerpc/mm/fault.c
27163 +--- linux-3.0.8/arch/powerpc/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
27164 ++++ linux-3.0.8/arch/powerpc/mm/fault.c 2011-08-23 21:47:55.000000000 -0400
27165 +@@ -32,6 +32,10 @@
27166 #include <linux/perf_event.h>
27167 + #include <linux/magic.h>
27168 + #include <linux/ratelimit.h>
27169 +#include <linux/slab.h>
27170 +#include <linux/pagemap.h>
27171 +#include <linux/compiler.h>
27172 @@ -2994,15 +2288,15 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/
27173
27174 #include <asm/firmware.h>
27175 #include <asm/page.h>
27176 -@@ -40,6 +44,7 @@
27177 - #include <asm/uaccess.h>
27178 +@@ -43,6 +47,7 @@
27179 #include <asm/tlbflush.h>
27180 #include <asm/siginfo.h>
27181 + #include <mm/mmu_decl.h>
27182 +#include <asm/ptrace.h>
27183
27184 -
27185 #ifdef CONFIG_KPROBES
27186 -@@ -64,6 +69,33 @@ static inline int notify_page_fault(stru
27187 + static inline int notify_page_fault(struct pt_regs *regs)
27188 +@@ -66,6 +71,33 @@ static inline int notify_page_fault(stru
27189 }
27190 #endif
27191
27192 @@ -3036,7 +2330,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/
27193 /*
27194 * Check whether the instruction at regs->nip is a store using
27195 * an update addressing form which will update r1.
27196 -@@ -134,7 +166,7 @@ int __kprobes do_page_fault(struct pt_re
27197 +@@ -136,7 +168,7 @@ int __kprobes do_page_fault(struct pt_re
27198 * indicate errors in DSISR but can validly be set in SRR1.
27199 */
27200 if (trap == 0x400)
27201 @@ -3045,7 +2339,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/
27202 else
27203 is_write = error_code & DSISR_ISSTORE;
27204 #else
27205 -@@ -250,7 +282,7 @@ good_area:
27206 +@@ -259,7 +291,7 @@ good_area:
27207 * "undefined". Of those that can be set, this is the only
27208 * one which seems bad.
27209 */
27210 @@ -3054,7 +2348,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/
27211 /* Guarded storage error. */
27212 goto bad_area;
27213 #endif /* CONFIG_8xx */
27214 -@@ -265,7 +297,7 @@ good_area:
27215 +@@ -274,7 +306,7 @@ good_area:
27216 * processors use the same I/D cache coherency mechanism
27217 * as embedded.
27218 */
27219 @@ -3063,7 +2357,7 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/
27220 goto bad_area;
27221 #endif /* CONFIG_PPC_STD_MMU */
27222
27223 -@@ -335,6 +367,23 @@ bad_area:
27224 +@@ -343,6 +375,23 @@ bad_area:
27225 bad_area_nosemaphore:
27226 /* User mode accesses cause a SIGSEGV */
27227 if (user_mode(regs)) {
27228 @@ -3087,21 +2381,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/fault.c linux-2.6.32.48/arch/powerpc/
27229 _exception(SIGSEGV, regs, code, address);
27230 return 0;
27231 }
27232 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/mem.c linux-2.6.32.48/arch/powerpc/mm/mem.c
27233 ---- linux-2.6.32.48/arch/powerpc/mm/mem.c 2009-12-02 22:51:21.000000000 -0500
27234 -+++ linux-2.6.32.48/arch/powerpc/mm/mem.c 2011-11-12 12:46:42.000000000 -0500
27235 -@@ -250,7 +250,7 @@ static int __init mark_nonram_nosave(voi
27236 - {
27237 - unsigned long lmb_next_region_start_pfn,
27238 - lmb_region_max_pfn;
27239 -- int i;
27240 -+ unsigned int i;
27241 -
27242 - for (i = 0; i < lmb.memory.cnt - 1; i++) {
27243 - lmb_region_max_pfn =
27244 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/mmap_64.c linux-2.6.32.48/arch/powerpc/mm/mmap_64.c
27245 ---- linux-2.6.32.48/arch/powerpc/mm/mmap_64.c 2009-12-02 22:51:21.000000000 -0500
27246 -+++ linux-2.6.32.48/arch/powerpc/mm/mmap_64.c 2011-11-12 12:46:42.000000000 -0500
27247 +diff -urNp linux-3.0.8/arch/powerpc/mm/mmap_64.c linux-3.0.8/arch/powerpc/mm/mmap_64.c
27248 +--- linux-3.0.8/arch/powerpc/mm/mmap_64.c 2011-07-21 22:17:23.000000000 -0400
27249 ++++ linux-3.0.8/arch/powerpc/mm/mmap_64.c 2011-08-23 21:47:55.000000000 -0400
27250 @@ -99,10 +99,22 @@ void arch_pick_mmap_layout(struct mm_str
27251 */
27252 if (mmap_is_legacy()) {
27253 @@ -3125,9 +2407,9 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/mmap_64.c linux-2.6.32.48/arch/powerp
27254 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
27255 mm->unmap_area = arch_unmap_area_topdown;
27256 }
27257 -diff -urNp linux-2.6.32.48/arch/powerpc/mm/slice.c linux-2.6.32.48/arch/powerpc/mm/slice.c
27258 ---- linux-2.6.32.48/arch/powerpc/mm/slice.c 2009-12-02 22:51:21.000000000 -0500
27259 -+++ linux-2.6.32.48/arch/powerpc/mm/slice.c 2011-11-12 12:46:42.000000000 -0500
27260 +diff -urNp linux-3.0.8/arch/powerpc/mm/slice.c linux-3.0.8/arch/powerpc/mm/slice.c
27261 +--- linux-3.0.8/arch/powerpc/mm/slice.c 2011-07-21 22:17:23.000000000 -0400
27262 ++++ linux-3.0.8/arch/powerpc/mm/slice.c 2011-08-23 21:47:55.000000000 -0400
27263 @@ -98,7 +98,7 @@ static int slice_area_is_free(struct mm_
27264 if ((mm->task_size - len) < addr)
27265 return 0;
27266 @@ -3194,127 +2476,50 @@ diff -urNp linux-2.6.32.48/arch/powerpc/mm/slice.c linux-2.6.32.48/arch/powerpc/
27267 /* If hint, make sure it matches our alignment restrictions */
27268 if (!fixed && addr) {
27269 addr = _ALIGN_UP(addr, 1ul << pshift);
27270 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c
27271 ---- linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c 2009-12-02 22:51:21.000000000 -0500
27272 -+++ linux-2.6.32.48/arch/powerpc/platforms/52xx/lite5200_pm.c 2011-11-12 12:46:42.000000000 -0500
27273 -@@ -235,7 +235,7 @@ static void lite5200_pm_end(void)
27274 - lite5200_pm_target_state = PM_SUSPEND_ON;
27275 - }
27276 -
27277 --static struct platform_suspend_ops lite5200_pm_ops = {
27278 -+static const struct platform_suspend_ops lite5200_pm_ops = {
27279 - .valid = lite5200_pm_valid,
27280 - .begin = lite5200_pm_begin,
27281 - .prepare = lite5200_pm_prepare,
27282 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c
27283 ---- linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c 2009-12-02 22:51:21.000000000 -0500
27284 -+++ linux-2.6.32.48/arch/powerpc/platforms/52xx/mpc52xx_pm.c 2011-11-12 12:46:42.000000000 -0500
27285 -@@ -180,7 +180,7 @@ void mpc52xx_pm_finish(void)
27286 - iounmap(mbar);
27287 - }
27288 -
27289 --static struct platform_suspend_ops mpc52xx_pm_ops = {
27290 -+static const struct platform_suspend_ops mpc52xx_pm_ops = {
27291 - .valid = mpc52xx_pm_valid,
27292 - .prepare = mpc52xx_pm_prepare,
27293 - .enter = mpc52xx_pm_enter,
27294 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c
27295 ---- linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c 2009-12-02 22:51:21.000000000 -0500
27296 -+++ linux-2.6.32.48/arch/powerpc/platforms/83xx/suspend.c 2011-11-12 12:46:42.000000000 -0500
27297 -@@ -273,7 +273,7 @@ static int mpc83xx_is_pci_agent(void)
27298 - return ret;
27299 - }
27300 -
27301 --static struct platform_suspend_ops mpc83xx_suspend_ops = {
27302 -+static const struct platform_suspend_ops mpc83xx_suspend_ops = {
27303 - .valid = mpc83xx_suspend_valid,
27304 - .begin = mpc83xx_suspend_begin,
27305 - .enter = mpc83xx_suspend_enter,
27306 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c
27307 ---- linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c 2009-12-02 22:51:21.000000000 -0500
27308 -+++ linux-2.6.32.48/arch/powerpc/platforms/cell/iommu.c 2011-11-12 12:46:42.000000000 -0500
27309 -@@ -642,7 +642,7 @@ static int dma_fixed_dma_supported(struc
27310 -
27311 - static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask);
27312 -
27313 --struct dma_map_ops dma_iommu_fixed_ops = {
27314 -+const struct dma_map_ops dma_iommu_fixed_ops = {
27315 - .alloc_coherent = dma_fixed_alloc_coherent,
27316 - .free_coherent = dma_fixed_free_coherent,
27317 - .map_sg = dma_fixed_map_sg,
27318 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c
27319 ---- linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c 2009-12-02 22:51:21.000000000 -0500
27320 -+++ linux-2.6.32.48/arch/powerpc/platforms/ps3/system-bus.c 2011-11-12 12:46:42.000000000 -0500
27321 -@@ -694,7 +694,7 @@ static int ps3_dma_supported(struct devi
27322 - return mask >= DMA_BIT_MASK(32);
27323 - }
27324 -
27325 --static struct dma_map_ops ps3_sb_dma_ops = {
27326 -+static const struct dma_map_ops ps3_sb_dma_ops = {
27327 - .alloc_coherent = ps3_alloc_coherent,
27328 - .free_coherent = ps3_free_coherent,
27329 - .map_sg = ps3_sb_map_sg,
27330 -@@ -704,7 +704,7 @@ static struct dma_map_ops ps3_sb_dma_ops
27331 - .unmap_page = ps3_unmap_page,
27332 - };
27333 -
27334 --static struct dma_map_ops ps3_ioc0_dma_ops = {
27335 -+static const struct dma_map_ops ps3_ioc0_dma_ops = {
27336 - .alloc_coherent = ps3_alloc_coherent,
27337 - .free_coherent = ps3_free_coherent,
27338 - .map_sg = ps3_ioc0_map_sg,
27339 -diff -urNp linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig
27340 ---- linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig 2009-12-02 22:51:21.000000000 -0500
27341 -+++ linux-2.6.32.48/arch/powerpc/platforms/pseries/Kconfig 2011-11-12 12:46:42.000000000 -0500
27342 -@@ -2,6 +2,8 @@ config PPC_PSERIES
27343 - depends on PPC64 && PPC_BOOK3S
27344 - bool "IBM pSeries & new (POWER5-based) iSeries"
27345 - select MPIC
27346 -+ select PCI_MSI
27347 -+ select XICS
27348 - select PPC_I8259
27349 - select PPC_RTAS
27350 - select RTAS_ERROR_LOGGING
27351 -diff -urNp linux-2.6.32.48/arch/s390/include/asm/elf.h linux-2.6.32.48/arch/s390/include/asm/elf.h
27352 ---- linux-2.6.32.48/arch/s390/include/asm/elf.h 2009-12-02 22:51:21.000000000 -0500
27353 -+++ linux-2.6.32.48/arch/s390/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
27354 -@@ -164,6 +164,13 @@ extern unsigned int vdso_enabled;
27355 +diff -urNp linux-3.0.8/arch/s390/include/asm/elf.h linux-3.0.8/arch/s390/include/asm/elf.h
27356 +--- linux-3.0.8/arch/s390/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
27357 ++++ linux-3.0.8/arch/s390/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
27358 +@@ -162,8 +162,14 @@ extern unsigned int vdso_enabled;
27359 + the loader. We need to make sure that it is out of the way of the program
27360 that it will "exec", and that there is sufficient room for the brk. */
27361 - #define ELF_ET_DYN_BASE (STACK_TOP / 3 * 2)
27362
27363 +-extern unsigned long randomize_et_dyn(unsigned long base);
27364 +-#define ELF_ET_DYN_BASE (randomize_et_dyn(STACK_TOP / 3 * 2))
27365 ++#define ELF_ET_DYN_BASE (STACK_TOP / 3 * 2)
27366 ++
27367 +#ifdef CONFIG_PAX_ASLR
27368 +#define PAX_ELF_ET_DYN_BASE (test_thread_flag(TIF_31BIT) ? 0x10000UL : 0x80000000UL)
27369 +
27370 +#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_31BIT) ? 15 : 26 )
27371 +#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_31BIT) ? 15 : 26 )
27372 +#endif
27373 -+
27374 +
27375 /* This yields a mask that user programs can use to figure out what
27376 instruction set this CPU supports. */
27377 +@@ -210,7 +216,4 @@ struct linux_binprm;
27378 + #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
27379 + int arch_setup_additional_pages(struct linux_binprm *, int);
27380
27381 -diff -urNp linux-2.6.32.48/arch/s390/include/asm/setup.h linux-2.6.32.48/arch/s390/include/asm/setup.h
27382 ---- linux-2.6.32.48/arch/s390/include/asm/setup.h 2009-12-02 22:51:21.000000000 -0500
27383 -+++ linux-2.6.32.48/arch/s390/include/asm/setup.h 2011-11-12 12:46:42.000000000 -0500
27384 -@@ -50,13 +50,13 @@ extern unsigned long memory_end;
27385 - void detect_memory_layout(struct mem_chunk chunk[]);
27386 -
27387 - #ifdef CONFIG_S390_SWITCH_AMODE
27388 --extern unsigned int switch_amode;
27389 -+#define switch_amode (1)
27390 - #else
27391 - #define switch_amode (0)
27392 +-extern unsigned long arch_randomize_brk(struct mm_struct *mm);
27393 +-#define arch_randomize_brk arch_randomize_brk
27394 +-
27395 #endif
27396 +diff -urNp linux-3.0.8/arch/s390/include/asm/system.h linux-3.0.8/arch/s390/include/asm/system.h
27397 +--- linux-3.0.8/arch/s390/include/asm/system.h 2011-07-21 22:17:23.000000000 -0400
27398 ++++ linux-3.0.8/arch/s390/include/asm/system.h 2011-08-23 21:47:55.000000000 -0400
27399 +@@ -255,7 +255,7 @@ extern void (*_machine_restart)(char *co
27400 + extern void (*_machine_halt)(void);
27401 + extern void (*_machine_power_off)(void);
27402
27403 - #ifdef CONFIG_S390_EXEC_PROTECT
27404 --extern unsigned int s390_noexec;
27405 -+#define s390_noexec (1)
27406 - #else
27407 - #define s390_noexec (0)
27408 - #endif
27409 -diff -urNp linux-2.6.32.48/arch/s390/include/asm/uaccess.h linux-2.6.32.48/arch/s390/include/asm/uaccess.h
27410 ---- linux-2.6.32.48/arch/s390/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
27411 -+++ linux-2.6.32.48/arch/s390/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
27412 -@@ -232,6 +232,10 @@ static inline unsigned long __must_check
27413 +-extern unsigned long arch_align_stack(unsigned long sp);
27414 ++#define arch_align_stack(x) ((x) & ~0xfUL)
27415 +
27416 + static inline int tprot(unsigned long addr)
27417 + {
27418 +diff -urNp linux-3.0.8/arch/s390/include/asm/uaccess.h linux-3.0.8/arch/s390/include/asm/uaccess.h
27419 +--- linux-3.0.8/arch/s390/include/asm/uaccess.h 2011-07-21 22:17:23.000000000 -0400
27420 ++++ linux-3.0.8/arch/s390/include/asm/uaccess.h 2011-08-23 21:47:55.000000000 -0400
27421 +@@ -235,6 +235,10 @@ static inline unsigned long __must_check
27422 copy_to_user(void __user *to, const void *from, unsigned long n)
27423 {
27424 might_fault();
27425 @@ -3325,7 +2530,7 @@ diff -urNp linux-2.6.32.48/arch/s390/include/asm/uaccess.h linux-2.6.32.48/arch/
27426 if (access_ok(VERIFY_WRITE, to, n))
27427 n = __copy_to_user(to, from, n);
27428 return n;
27429 -@@ -257,6 +261,9 @@ copy_to_user(void __user *to, const void
27430 +@@ -260,6 +264,9 @@ copy_to_user(void __user *to, const void
27431 static inline unsigned long __must_check
27432 __copy_from_user(void *to, const void __user *from, unsigned long n)
27433 {
27434 @@ -3335,61 +2540,21 @@ diff -urNp linux-2.6.32.48/arch/s390/include/asm/uaccess.h linux-2.6.32.48/arch/
27435 if (__builtin_constant_p(n) && (n <= 256))
27436 return uaccess.copy_from_user_small(n, from, to);
27437 else
27438 -@@ -283,6 +290,10 @@ static inline unsigned long __must_check
27439 - copy_from_user(void *to, const void __user *from, unsigned long n)
27440 - {
27441 +@@ -294,6 +301,10 @@ copy_from_user(void *to, const void __us
27442 + unsigned int sz = __compiletime_object_size(to);
27443 +
27444 might_fault();
27445 +
27446 + if ((long)n < 0)
27447 + return n;
27448 +
27449 - if (access_ok(VERIFY_READ, from, n))
27450 - n = __copy_from_user(to, from, n);
27451 - else
27452 -diff -urNp linux-2.6.32.48/arch/s390/Kconfig linux-2.6.32.48/arch/s390/Kconfig
27453 ---- linux-2.6.32.48/arch/s390/Kconfig 2009-12-02 22:51:21.000000000 -0500
27454 -+++ linux-2.6.32.48/arch/s390/Kconfig 2011-11-12 12:46:42.000000000 -0500
27455 -@@ -194,28 +194,26 @@ config AUDIT_ARCH
27456 -
27457 - config S390_SWITCH_AMODE
27458 - bool "Switch kernel/user addressing modes"
27459 -+ default y
27460 - help
27461 - This option allows to switch the addressing modes of kernel and user
27462 -- space. The kernel parameter switch_amode=on will enable this feature,
27463 -- default is disabled. Enabling this (via kernel parameter) on machines
27464 -- earlier than IBM System z9-109 EC/BC will reduce system performance.
27465 -+ space. Enabling this on machines earlier than IBM System z9-109 EC/BC
27466 -+ will reduce system performance.
27467 -
27468 - Note that this option will also be selected by selecting the execute
27469 -- protection option below. Enabling the execute protection via the
27470 -- noexec kernel parameter will also switch the addressing modes,
27471 -- independent of the switch_amode kernel parameter.
27472 -+ protection option below. Enabling the execute protection will also
27473 -+ switch the addressing modes, independent of this option.
27474 -
27475 -
27476 - config S390_EXEC_PROTECT
27477 - bool "Data execute protection"
27478 -+ default y
27479 - select S390_SWITCH_AMODE
27480 - help
27481 - This option allows to enable a buffer overflow protection for user
27482 - space programs and it also selects the addressing mode option above.
27483 -- The kernel parameter noexec=on will enable this feature and also
27484 -- switch the addressing modes, default is disabled. Enabling this (via
27485 -- kernel parameter) on machines earlier than IBM System z9-109 EC/BC
27486 -- will reduce system performance.
27487 -+ Enabling this on machines earlier than IBM System z9-109 EC/BC will
27488 -+ reduce system performance.
27489 -
27490 - comment "Code generation options"
27491 -
27492 -diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/kernel/module.c
27493 ---- linux-2.6.32.48/arch/s390/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
27494 -+++ linux-2.6.32.48/arch/s390/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
27495 -@@ -166,11 +166,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr,
27496 + if (unlikely(sz != -1 && sz < n)) {
27497 + copy_from_user_overflow();
27498 + return n;
27499 +diff -urNp linux-3.0.8/arch/s390/kernel/module.c linux-3.0.8/arch/s390/kernel/module.c
27500 +--- linux-3.0.8/arch/s390/kernel/module.c 2011-07-21 22:17:23.000000000 -0400
27501 ++++ linux-3.0.8/arch/s390/kernel/module.c 2011-08-23 21:47:55.000000000 -0400
27502 +@@ -168,11 +168,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr,
27503
27504 /* Increase core size by size of got & plt and set start
27505 offsets for got and plt. */
27506 @@ -3406,7 +2571,7 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
27507 return 0;
27508 }
27509
27510 -@@ -256,7 +256,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27511 +@@ -258,7 +258,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27512 if (info->got_initialized == 0) {
27513 Elf_Addr *gotent;
27514
27515 @@ -3415,7 +2580,7 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
27516 info->got_offset;
27517 *gotent = val;
27518 info->got_initialized = 1;
27519 -@@ -280,7 +280,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27520 +@@ -282,7 +282,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27521 else if (r_type == R_390_GOTENT ||
27522 r_type == R_390_GOTPLTENT)
27523 *(unsigned int *) loc =
27524 @@ -3424,7 +2589,7 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
27525 else if (r_type == R_390_GOT64 ||
27526 r_type == R_390_GOTPLT64)
27527 *(unsigned long *) loc = val;
27528 -@@ -294,7 +294,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27529 +@@ -296,7 +296,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27530 case R_390_PLTOFF64: /* 16 bit offset from GOT to PLT. */
27531 if (info->plt_initialized == 0) {
27532 unsigned int *ip;
27533 @@ -3433,7 +2598,7 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
27534 info->plt_offset;
27535 #ifndef CONFIG_64BIT
27536 ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */
27537 -@@ -319,7 +319,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27538 +@@ -321,7 +321,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27539 val - loc + 0xffffUL < 0x1ffffeUL) ||
27540 (r_type == R_390_PLT32DBL &&
27541 val - loc + 0xffffffffULL < 0x1fffffffeULL)))
27542 @@ -3442,7 +2607,7 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
27543 me->arch.plt_offset +
27544 info->plt_offset;
27545 val += rela->r_addend - loc;
27546 -@@ -341,7 +341,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27547 +@@ -343,7 +343,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27548 case R_390_GOTOFF32: /* 32 bit offset to GOT. */
27549 case R_390_GOTOFF64: /* 64 bit offset to GOT. */
27550 val = val + rela->r_addend -
27551 @@ -3451,7 +2616,7 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
27552 if (r_type == R_390_GOTOFF16)
27553 *(unsigned short *) loc = val;
27554 else if (r_type == R_390_GOTOFF32)
27555 -@@ -351,7 +351,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27556 +@@ -353,7 +353,7 @@ apply_rela(Elf_Rela *rela, Elf_Addr base
27557 break;
27558 case R_390_GOTPC: /* 32 bit PC relative offset to GOT. */
27559 case R_390_GOTPCDBL: /* 32 bit PC rel. off. to GOT shifted by 1. */
27560 @@ -3460,66 +2625,65 @@ diff -urNp linux-2.6.32.48/arch/s390/kernel/module.c linux-2.6.32.48/arch/s390/k
27561 rela->r_addend - loc;
27562 if (r_type == R_390_GOTPC)
27563 *(unsigned int *) loc = val;
27564 -diff -urNp linux-2.6.32.48/arch/s390/kernel/setup.c linux-2.6.32.48/arch/s390/kernel/setup.c
27565 ---- linux-2.6.32.48/arch/s390/kernel/setup.c 2009-12-02 22:51:21.000000000 -0500
27566 -+++ linux-2.6.32.48/arch/s390/kernel/setup.c 2011-11-12 12:46:42.000000000 -0500
27567 -@@ -306,9 +306,6 @@ static int __init early_parse_mem(char *
27568 - early_param("mem", early_parse_mem);
27569 -
27570 - #ifdef CONFIG_S390_SWITCH_AMODE
27571 --unsigned int switch_amode = 0;
27572 --EXPORT_SYMBOL_GPL(switch_amode);
27573 --
27574 - static int set_amode_and_uaccess(unsigned long user_amode,
27575 - unsigned long user32_amode)
27576 - {
27577 -@@ -334,17 +331,6 @@ static int set_amode_and_uaccess(unsigne
27578 - return 0;
27579 +diff -urNp linux-3.0.8/arch/s390/kernel/process.c linux-3.0.8/arch/s390/kernel/process.c
27580 +--- linux-3.0.8/arch/s390/kernel/process.c 2011-07-21 22:17:23.000000000 -0400
27581 ++++ linux-3.0.8/arch/s390/kernel/process.c 2011-08-23 21:47:55.000000000 -0400
27582 +@@ -319,39 +319,3 @@ unsigned long get_wchan(struct task_stru
27583 }
27584 + return 0;
27585 }
27586 -
27587 --/*
27588 -- * Switch kernel/user addressing modes?
27589 -- */
27590 --static int __init early_parse_switch_amode(char *p)
27591 +-unsigned long arch_align_stack(unsigned long sp)
27592 -{
27593 -- switch_amode = 1;
27594 -- return 0;
27595 +- if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
27596 +- sp -= get_random_int() & ~PAGE_MASK;
27597 +- return sp & ~0xf;
27598 -}
27599 --early_param("switch_amode", early_parse_switch_amode);
27600 -
27601 - #else /* CONFIG_S390_SWITCH_AMODE */
27602 - static inline int set_amode_and_uaccess(unsigned long user_amode,
27603 - unsigned long user32_amode)
27604 -@@ -353,24 +339,6 @@ static inline int set_amode_and_uaccess(
27605 - }
27606 - #endif /* CONFIG_S390_SWITCH_AMODE */
27607 -
27608 --#ifdef CONFIG_S390_EXEC_PROTECT
27609 --unsigned int s390_noexec = 0;
27610 --EXPORT_SYMBOL_GPL(s390_noexec);
27611 +-static inline unsigned long brk_rnd(void)
27612 +-{
27613 +- /* 8MB for 32bit, 1GB for 64bit */
27614 +- if (is_32bit_task())
27615 +- return (get_random_int() & 0x7ffUL) << PAGE_SHIFT;
27616 +- else
27617 +- return (get_random_int() & 0x3ffffUL) << PAGE_SHIFT;
27618 +-}
27619 -
27620 --/*
27621 -- * Enable execute protection?
27622 -- */
27623 --static int __init early_parse_noexec(char *p)
27624 +-unsigned long arch_randomize_brk(struct mm_struct *mm)
27625 -{
27626 -- if (!strncmp(p, "off", 3))
27627 -- return 0;
27628 -- switch_amode = 1;
27629 -- s390_noexec = 1;
27630 -- return 0;
27631 +- unsigned long ret = PAGE_ALIGN(mm->brk + brk_rnd());
27632 +-
27633 +- if (ret < mm->brk)
27634 +- return mm->brk;
27635 +- return ret;
27636 -}
27637 --early_param("noexec", early_parse_noexec);
27638 --#endif /* CONFIG_S390_EXEC_PROTECT */
27639 -
27640 - static void setup_addressing_mode(void)
27641 - {
27642 - if (s390_noexec) {
27643 -diff -urNp linux-2.6.32.48/arch/s390/mm/mmap.c linux-2.6.32.48/arch/s390/mm/mmap.c
27644 ---- linux-2.6.32.48/arch/s390/mm/mmap.c 2009-12-02 22:51:21.000000000 -0500
27645 -+++ linux-2.6.32.48/arch/s390/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
27646 -@@ -78,10 +78,22 @@ void arch_pick_mmap_layout(struct mm_str
27647 +-unsigned long randomize_et_dyn(unsigned long base)
27648 +-{
27649 +- unsigned long ret = PAGE_ALIGN(base + brk_rnd());
27650 +-
27651 +- if (!(current->flags & PF_RANDOMIZE))
27652 +- return base;
27653 +- if (ret < base)
27654 +- return base;
27655 +- return ret;
27656 +-}
27657 +diff -urNp linux-3.0.8/arch/s390/kernel/setup.c linux-3.0.8/arch/s390/kernel/setup.c
27658 +--- linux-3.0.8/arch/s390/kernel/setup.c 2011-07-21 22:17:23.000000000 -0400
27659 ++++ linux-3.0.8/arch/s390/kernel/setup.c 2011-08-23 21:47:55.000000000 -0400
27660 +@@ -271,7 +271,7 @@ static int __init early_parse_mem(char *
27661 + }
27662 + early_param("mem", early_parse_mem);
27663 +
27664 +-unsigned int user_mode = HOME_SPACE_MODE;
27665 ++unsigned int user_mode = SECONDARY_SPACE_MODE;
27666 + EXPORT_SYMBOL_GPL(user_mode);
27667 +
27668 + static int set_amode_and_uaccess(unsigned long user_amode,
27669 +diff -urNp linux-3.0.8/arch/s390/mm/mmap.c linux-3.0.8/arch/s390/mm/mmap.c
27670 +--- linux-3.0.8/arch/s390/mm/mmap.c 2011-07-21 22:17:23.000000000 -0400
27671 ++++ linux-3.0.8/arch/s390/mm/mmap.c 2011-08-23 21:47:55.000000000 -0400
27672 +@@ -91,10 +91,22 @@ void arch_pick_mmap_layout(struct mm_str
27673 */
27674 if (mmap_is_legacy()) {
27675 mm->mmap_base = TASK_UNMAPPED_BASE;
27676 @@ -3542,7 +2706,7 @@ diff -urNp linux-2.6.32.48/arch/s390/mm/mmap.c linux-2.6.32.48/arch/s390/mm/mmap
27677 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
27678 mm->unmap_area = arch_unmap_area_topdown;
27679 }
27680 -@@ -153,10 +165,22 @@ void arch_pick_mmap_layout(struct mm_str
27681 +@@ -166,10 +178,22 @@ void arch_pick_mmap_layout(struct mm_str
27682 */
27683 if (mmap_is_legacy()) {
27684 mm->mmap_base = TASK_UNMAPPED_BASE;
27685 @@ -3565,9 +2729,9 @@ diff -urNp linux-2.6.32.48/arch/s390/mm/mmap.c linux-2.6.32.48/arch/s390/mm/mmap
27686 mm->get_unmapped_area = s390_get_unmapped_area_topdown;
27687 mm->unmap_area = arch_unmap_area_topdown;
27688 }
27689 -diff -urNp linux-2.6.32.48/arch/score/include/asm/system.h linux-2.6.32.48/arch/score/include/asm/system.h
27690 ---- linux-2.6.32.48/arch/score/include/asm/system.h 2009-12-02 22:51:21.000000000 -0500
27691 -+++ linux-2.6.32.48/arch/score/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
27692 +diff -urNp linux-3.0.8/arch/score/include/asm/system.h linux-3.0.8/arch/score/include/asm/system.h
27693 +--- linux-3.0.8/arch/score/include/asm/system.h 2011-07-21 22:17:23.000000000 -0400
27694 ++++ linux-3.0.8/arch/score/include/asm/system.h 2011-08-23 21:47:55.000000000 -0400
27695 @@ -17,7 +17,7 @@ do { \
27696 #define finish_arch_switch(prev) do {} while (0)
27697
27698 @@ -3577,9 +2741,9 @@ diff -urNp linux-2.6.32.48/arch/score/include/asm/system.h linux-2.6.32.48/arch/
27699
27700 #define mb() barrier()
27701 #define rmb() barrier()
27702 -diff -urNp linux-2.6.32.48/arch/score/kernel/process.c linux-2.6.32.48/arch/score/kernel/process.c
27703 ---- linux-2.6.32.48/arch/score/kernel/process.c 2009-12-02 22:51:21.000000000 -0500
27704 -+++ linux-2.6.32.48/arch/score/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
27705 +diff -urNp linux-3.0.8/arch/score/kernel/process.c linux-3.0.8/arch/score/kernel/process.c
27706 +--- linux-3.0.8/arch/score/kernel/process.c 2011-07-21 22:17:23.000000000 -0400
27707 ++++ linux-3.0.8/arch/score/kernel/process.c 2011-08-23 21:47:55.000000000 -0400
27708 @@ -161,8 +161,3 @@ unsigned long get_wchan(struct task_stru
27709
27710 return task_pt_regs(task)->cp0_epc;
27711 @@ -3589,57 +2753,9 @@ diff -urNp linux-2.6.32.48/arch/score/kernel/process.c linux-2.6.32.48/arch/scor
27712 -{
27713 - return sp;
27714 -}
27715 -diff -urNp linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c
27716 ---- linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c 2009-12-02 22:51:21.000000000 -0500
27717 -+++ linux-2.6.32.48/arch/sh/boards/mach-hp6xx/pm.c 2011-11-12 12:46:42.000000000 -0500
27718 -@@ -143,7 +143,7 @@ static int hp6x0_pm_enter(suspend_state_
27719 - return 0;
27720 - }
27721 -
27722 --static struct platform_suspend_ops hp6x0_pm_ops = {
27723 -+static const struct platform_suspend_ops hp6x0_pm_ops = {
27724 - .enter = hp6x0_pm_enter,
27725 - .valid = suspend_valid_only_mem,
27726 - };
27727 -diff -urNp linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c
27728 ---- linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c 2009-12-02 22:51:21.000000000 -0500
27729 -+++ linux-2.6.32.48/arch/sh/kernel/cpu/sh4/sq.c 2011-11-12 12:46:42.000000000 -0500
27730 -@@ -327,7 +327,7 @@ static struct attribute *sq_sysfs_attrs[
27731 - NULL,
27732 - };
27733 -
27734 --static struct sysfs_ops sq_sysfs_ops = {
27735 -+static const struct sysfs_ops sq_sysfs_ops = {
27736 - .show = sq_sysfs_show,
27737 - .store = sq_sysfs_store,
27738 - };
27739 -diff -urNp linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c
27740 ---- linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c 2009-12-02 22:51:21.000000000 -0500
27741 -+++ linux-2.6.32.48/arch/sh/kernel/cpu/shmobile/pm.c 2011-11-12 12:46:42.000000000 -0500
27742 -@@ -58,7 +58,7 @@ static int sh_pm_enter(suspend_state_t s
27743 - return 0;
27744 - }
27745 -
27746 --static struct platform_suspend_ops sh_pm_ops = {
27747 -+static const struct platform_suspend_ops sh_pm_ops = {
27748 - .enter = sh_pm_enter,
27749 - .valid = suspend_valid_only_mem,
27750 - };
27751 -diff -urNp linux-2.6.32.48/arch/sh/kernel/kgdb.c linux-2.6.32.48/arch/sh/kernel/kgdb.c
27752 ---- linux-2.6.32.48/arch/sh/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
27753 -+++ linux-2.6.32.48/arch/sh/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
27754 -@@ -271,7 +271,7 @@ void kgdb_arch_exit(void)
27755 - {
27756 - }
27757 -
27758 --struct kgdb_arch arch_kgdb_ops = {
27759 -+const struct kgdb_arch arch_kgdb_ops = {
27760 - /* Breakpoint instruction: trapa #0x3c */
27761 - #ifdef CONFIG_CPU_LITTLE_ENDIAN
27762 - .gdb_bpt_instr = { 0x3c, 0xc3 },
27763 -diff -urNp linux-2.6.32.48/arch/sh/mm/mmap.c linux-2.6.32.48/arch/sh/mm/mmap.c
27764 ---- linux-2.6.32.48/arch/sh/mm/mmap.c 2011-11-12 12:44:28.000000000 -0500
27765 -+++ linux-2.6.32.48/arch/sh/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
27766 +diff -urNp linux-3.0.8/arch/sh/mm/mmap.c linux-3.0.8/arch/sh/mm/mmap.c
27767 +--- linux-3.0.8/arch/sh/mm/mmap.c 2011-07-21 22:17:23.000000000 -0400
27768 ++++ linux-3.0.8/arch/sh/mm/mmap.c 2011-08-23 21:47:55.000000000 -0400
27769 @@ -74,8 +74,7 @@ unsigned long arch_get_unmapped_area(str
27770 addr = PAGE_ALIGN(addr);
27771
27772 @@ -3714,18 +2830,18 @@ diff -urNp linux-2.6.32.48/arch/sh/mm/mmap.c linux-2.6.32.48/arch/sh/mm/mmap.c
27773
27774 bottomup:
27775 /*
27776 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h
27777 ---- linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h 2011-11-12 12:44:28.000000000 -0500
27778 -+++ linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h 2011-11-12 12:46:42.000000000 -0500
27779 +diff -urNp linux-3.0.8/arch/sparc/include/asm/atomic_64.h linux-3.0.8/arch/sparc/include/asm/atomic_64.h
27780 +--- linux-3.0.8/arch/sparc/include/asm/atomic_64.h 2011-07-21 22:17:23.000000000 -0400
27781 ++++ linux-3.0.8/arch/sparc/include/asm/atomic_64.h 2011-08-23 21:48:14.000000000 -0400
27782 @@ -14,18 +14,40 @@
27783 #define ATOMIC64_INIT(i) { (i) }
27784
27785 - #define atomic_read(v) ((v)->counter)
27786 + #define atomic_read(v) (*(volatile int *)&(v)->counter)
27787 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
27788 +{
27789 + return v->counter;
27790 +}
27791 - #define atomic64_read(v) ((v)->counter)
27792 + #define atomic64_read(v) (*(volatile long *)&(v)->counter)
27793 +static inline long atomic64_read_unchecked(const atomic64_unchecked_t *v)
27794 +{
27795 + return v->counter;
27796 @@ -3909,56 +3025,22 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/atomic_64.h linux-2.6.32.48/ar
27797 }
27798
27799 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
27800 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/cache.h linux-2.6.32.48/arch/sparc/include/asm/cache.h
27801 ---- linux-2.6.32.48/arch/sparc/include/asm/cache.h 2009-12-02 22:51:21.000000000 -0500
27802 -+++ linux-2.6.32.48/arch/sparc/include/asm/cache.h 2011-11-12 12:46:42.000000000 -0500
27803 -@@ -8,7 +8,7 @@
27804 - #define _SPARC_CACHE_H
27805 +diff -urNp linux-3.0.8/arch/sparc/include/asm/cache.h linux-3.0.8/arch/sparc/include/asm/cache.h
27806 +--- linux-3.0.8/arch/sparc/include/asm/cache.h 2011-07-21 22:17:23.000000000 -0400
27807 ++++ linux-3.0.8/arch/sparc/include/asm/cache.h 2011-08-23 21:47:55.000000000 -0400
27808 +@@ -10,7 +10,7 @@
27809 + #define ARCH_SLAB_MINALIGN __alignof__(unsigned long long)
27810
27811 #define L1_CACHE_SHIFT 5
27812 -#define L1_CACHE_BYTES 32
27813 +#define L1_CACHE_BYTES 32UL
27814 - #define L1_CACHE_ALIGN(x) ((((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1)))
27815
27816 #ifdef CONFIG_SPARC32
27817 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h
27818 ---- linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
27819 -+++ linux-2.6.32.48/arch/sparc/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
27820 -@@ -14,10 +14,10 @@ extern int dma_set_mask(struct device *d
27821 - #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
27822 - #define dma_is_consistent(d, h) (1)
27823 -
27824 --extern struct dma_map_ops *dma_ops, pci32_dma_ops;
27825 -+extern const struct dma_map_ops *dma_ops, pci32_dma_ops;
27826 - extern struct bus_type pci_bus_type;
27827 -
27828 --static inline struct dma_map_ops *get_dma_ops(struct device *dev)
27829 -+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
27830 - {
27831 - #if defined(CONFIG_SPARC32) && defined(CONFIG_PCI)
27832 - if (dev->bus == &pci_bus_type)
27833 -@@ -31,7 +31,7 @@ static inline struct dma_map_ops *get_dm
27834 - static inline void *dma_alloc_coherent(struct device *dev, size_t size,
27835 - dma_addr_t *dma_handle, gfp_t flag)
27836 - {
27837 -- struct dma_map_ops *ops = get_dma_ops(dev);
27838 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
27839 - void *cpu_addr;
27840 -
27841 - cpu_addr = ops->alloc_coherent(dev, size, dma_handle, flag);
27842 -@@ -42,7 +42,7 @@ static inline void *dma_alloc_coherent(s
27843 - static inline void dma_free_coherent(struct device *dev, size_t size,
27844 - void *cpu_addr, dma_addr_t dma_handle)
27845 - {
27846 -- struct dma_map_ops *ops = get_dma_ops(dev);
27847 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
27848 -
27849 - debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
27850 - ops->free_coherent(dev, size, cpu_addr, dma_handle);
27851 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_32.h linux-2.6.32.48/arch/sparc/include/asm/elf_32.h
27852 ---- linux-2.6.32.48/arch/sparc/include/asm/elf_32.h 2009-12-02 22:51:21.000000000 -0500
27853 -+++ linux-2.6.32.48/arch/sparc/include/asm/elf_32.h 2011-11-12 12:46:42.000000000 -0500
27854 -@@ -116,6 +116,13 @@ typedef struct {
27855 + #define SMP_CACHE_BYTES_SHIFT 5
27856 +diff -urNp linux-3.0.8/arch/sparc/include/asm/elf_32.h linux-3.0.8/arch/sparc/include/asm/elf_32.h
27857 +--- linux-3.0.8/arch/sparc/include/asm/elf_32.h 2011-07-21 22:17:23.000000000 -0400
27858 ++++ linux-3.0.8/arch/sparc/include/asm/elf_32.h 2011-08-23 21:47:55.000000000 -0400
27859 +@@ -114,6 +114,13 @@ typedef struct {
27860
27861 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE)
27862
27863 @@ -3972,10 +3054,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_32.h linux-2.6.32.48/arch/
27864 /* This yields a mask that user programs can use to figure out what
27865 instruction set this cpu supports. This can NOT be done in userspace
27866 on Sparc. */
27867 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_64.h linux-2.6.32.48/arch/sparc/include/asm/elf_64.h
27868 ---- linux-2.6.32.48/arch/sparc/include/asm/elf_64.h 2011-11-12 12:44:28.000000000 -0500
27869 -+++ linux-2.6.32.48/arch/sparc/include/asm/elf_64.h 2011-11-12 12:46:42.000000000 -0500
27870 -@@ -163,6 +163,12 @@ typedef struct {
27871 +diff -urNp linux-3.0.8/arch/sparc/include/asm/elf_64.h linux-3.0.8/arch/sparc/include/asm/elf_64.h
27872 +--- linux-3.0.8/arch/sparc/include/asm/elf_64.h 2011-10-24 08:05:21.000000000 -0400
27873 ++++ linux-3.0.8/arch/sparc/include/asm/elf_64.h 2011-08-23 21:47:55.000000000 -0400
27874 +@@ -180,6 +180,13 @@ typedef struct {
27875 #define ELF_ET_DYN_BASE 0x0000010000000000UL
27876 #define COMPAT_ELF_ET_DYN_BASE 0x0000000070000000UL
27877
27878 @@ -3985,13 +3067,14 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/elf_64.h linux-2.6.32.48/arch/
27879 +#define PAX_DELTA_MMAP_LEN (test_thread_flag(TIF_32BIT) ? 14 : 28)
27880 +#define PAX_DELTA_STACK_LEN (test_thread_flag(TIF_32BIT) ? 15 : 29)
27881 +#endif
27882 ++
27883 + extern unsigned long sparc64_elf_hwcap;
27884 + #define ELF_HWCAP sparc64_elf_hwcap
27885
27886 - /* This yields a mask that user programs can use to figure out what
27887 - instruction set this cpu supports. */
27888 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h
27889 ---- linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h 2009-12-02 22:51:21.000000000 -0500
27890 -+++ linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h 2011-11-12 12:46:42.000000000 -0500
27891 -@@ -43,6 +43,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
27892 +diff -urNp linux-3.0.8/arch/sparc/include/asm/pgtable_32.h linux-3.0.8/arch/sparc/include/asm/pgtable_32.h
27893 +--- linux-3.0.8/arch/sparc/include/asm/pgtable_32.h 2011-07-21 22:17:23.000000000 -0400
27894 ++++ linux-3.0.8/arch/sparc/include/asm/pgtable_32.h 2011-08-23 21:47:55.000000000 -0400
27895 +@@ -45,6 +45,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
27896 BTFIXUPDEF_INT(page_none)
27897 BTFIXUPDEF_INT(page_copy)
27898 BTFIXUPDEF_INT(page_readonly)
27899 @@ -4005,7 +3088,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h linux-2.6.32.48/a
27900 BTFIXUPDEF_INT(page_kernel)
27901
27902 #define PMD_SHIFT SUN4C_PMD_SHIFT
27903 -@@ -64,6 +71,16 @@ extern pgprot_t PAGE_SHARED;
27904 +@@ -66,6 +73,16 @@ extern pgprot_t PAGE_SHARED;
27905 #define PAGE_COPY __pgprot(BTFIXUP_INT(page_copy))
27906 #define PAGE_READONLY __pgprot(BTFIXUP_INT(page_readonly))
27907
27908 @@ -4022,9 +3105,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtable_32.h linux-2.6.32.48/a
27909 extern unsigned long page_kernel;
27910
27911 #ifdef MODULE
27912 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h
27913 ---- linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h 2009-12-02 22:51:21.000000000 -0500
27914 -+++ linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h 2011-11-12 12:46:42.000000000 -0500
27915 +diff -urNp linux-3.0.8/arch/sparc/include/asm/pgtsrmmu.h linux-3.0.8/arch/sparc/include/asm/pgtsrmmu.h
27916 +--- linux-3.0.8/arch/sparc/include/asm/pgtsrmmu.h 2011-07-21 22:17:23.000000000 -0400
27917 ++++ linux-3.0.8/arch/sparc/include/asm/pgtsrmmu.h 2011-08-23 21:47:55.000000000 -0400
27918 @@ -115,6 +115,13 @@
27919 SRMMU_EXEC | SRMMU_REF)
27920 #define SRMMU_PAGE_RDONLY __pgprot(SRMMU_VALID | SRMMU_CACHE | \
27921 @@ -4039,15 +3122,15 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.32.48/arc
27922 #define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
27923 SRMMU_DIRTY | SRMMU_REF)
27924
27925 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h
27926 ---- linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h 2009-12-02 22:51:21.000000000 -0500
27927 -+++ linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h 2011-11-12 12:46:42.000000000 -0500
27928 -@@ -92,14 +92,19 @@ static inline void __raw_spin_lock_flags
27929 +diff -urNp linux-3.0.8/arch/sparc/include/asm/spinlock_64.h linux-3.0.8/arch/sparc/include/asm/spinlock_64.h
27930 +--- linux-3.0.8/arch/sparc/include/asm/spinlock_64.h 2011-10-24 08:05:30.000000000 -0400
27931 ++++ linux-3.0.8/arch/sparc/include/asm/spinlock_64.h 2011-10-16 21:55:27.000000000 -0400
27932 +@@ -92,14 +92,19 @@ static inline void arch_spin_lock_flags(
27933
27934 /* Multi-reader locks, these are much saner than the 32-bit Sparc ones... */
27935
27936 --static void inline arch_read_lock(raw_rwlock_t *lock)
27937 -+static inline void arch_read_lock(raw_rwlock_t *lock)
27938 +-static void inline arch_read_lock(arch_rwlock_t *lock)
27939 ++static inline void arch_read_lock(arch_rwlock_t *lock)
27940 {
27941 unsigned long tmp1, tmp2;
27942
27943 @@ -4064,7 +3147,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.48/
27944 " cas [%2], %0, %1\n"
27945 " cmp %0, %1\n"
27946 " bne,pn %%icc, 1b\n"
27947 -@@ -112,10 +117,10 @@ static void inline arch_read_lock(raw_rw
27948 +@@ -112,10 +117,10 @@ static void inline arch_read_lock(arch_r
27949 " .previous"
27950 : "=&r" (tmp1), "=&r" (tmp2)
27951 : "r" (lock)
27952 @@ -4072,12 +3155,12 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.48/
27953 + : "memory", "cc");
27954 }
27955
27956 --static int inline arch_read_trylock(raw_rwlock_t *lock)
27957 -+static inline int arch_read_trylock(raw_rwlock_t *lock)
27958 +-static int inline arch_read_trylock(arch_rwlock_t *lock)
27959 ++static inline int arch_read_trylock(arch_rwlock_t *lock)
27960 {
27961 int tmp1, tmp2;
27962
27963 -@@ -123,7 +128,12 @@ static int inline arch_read_trylock(raw_
27964 +@@ -123,7 +128,12 @@ static int inline arch_read_trylock(arch
27965 "1: ldsw [%2], %0\n"
27966 " brlz,a,pn %0, 2f\n"
27967 " mov 0, %0\n"
27968 @@ -4091,12 +3174,12 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.48/
27969 " cas [%2], %0, %1\n"
27970 " cmp %0, %1\n"
27971 " bne,pn %%icc, 1b\n"
27972 -@@ -136,13 +146,18 @@ static int inline arch_read_trylock(raw_
27973 +@@ -136,13 +146,18 @@ static int inline arch_read_trylock(arch
27974 return tmp1;
27975 }
27976
27977 --static void inline arch_read_unlock(raw_rwlock_t *lock)
27978 -+static inline void arch_read_unlock(raw_rwlock_t *lock)
27979 +-static void inline arch_read_unlock(arch_rwlock_t *lock)
27980 ++static inline void arch_read_unlock(arch_rwlock_t *lock)
27981 {
27982 unsigned long tmp1, tmp2;
27983
27984 @@ -4112,36 +3195,36 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/spinlock_64.h linux-2.6.32.48/
27985 " cas [%2], %0, %1\n"
27986 " cmp %0, %1\n"
27987 " bne,pn %%xcc, 1b\n"
27988 -@@ -152,7 +167,7 @@ static void inline arch_read_unlock(raw_
27989 +@@ -152,7 +167,7 @@ static void inline arch_read_unlock(arch
27990 : "memory");
27991 }
27992
27993 --static void inline arch_write_lock(raw_rwlock_t *lock)
27994 -+static inline void arch_write_lock(raw_rwlock_t *lock)
27995 +-static void inline arch_write_lock(arch_rwlock_t *lock)
27996 ++static inline void arch_write_lock(arch_rwlock_t *lock)
27997 {
27998 unsigned long mask, tmp1, tmp2;
27999
28000 -@@ -177,7 +192,7 @@ static void inline arch_write_lock(raw_r
28001 +@@ -177,7 +192,7 @@ static void inline arch_write_lock(arch_
28002 : "memory");
28003 }
28004
28005 --static void inline arch_write_unlock(raw_rwlock_t *lock)
28006 -+static inline void arch_write_unlock(raw_rwlock_t *lock)
28007 +-static void inline arch_write_unlock(arch_rwlock_t *lock)
28008 ++static inline void arch_write_unlock(arch_rwlock_t *lock)
28009 {
28010 __asm__ __volatile__(
28011 " stw %%g0, [%0]"
28012 -@@ -186,7 +201,7 @@ static void inline arch_write_unlock(raw
28013 +@@ -186,7 +201,7 @@ static void inline arch_write_unlock(arc
28014 : "memory");
28015 }
28016
28017 --static int inline arch_write_trylock(raw_rwlock_t *lock)
28018 -+static inline int arch_write_trylock(raw_rwlock_t *lock)
28019 +-static int inline arch_write_trylock(arch_rwlock_t *lock)
28020 ++static inline int arch_write_trylock(arch_rwlock_t *lock)
28021 {
28022 unsigned long mask, tmp1, tmp2, result;
28023
28024 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h
28025 ---- linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h 2009-12-02 22:51:21.000000000 -0500
28026 -+++ linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h 2011-11-12 12:46:42.000000000 -0500
28027 +diff -urNp linux-3.0.8/arch/sparc/include/asm/thread_info_32.h linux-3.0.8/arch/sparc/include/asm/thread_info_32.h
28028 +--- linux-3.0.8/arch/sparc/include/asm/thread_info_32.h 2011-07-21 22:17:23.000000000 -0400
28029 ++++ linux-3.0.8/arch/sparc/include/asm/thread_info_32.h 2011-08-23 21:47:55.000000000 -0400
28030 @@ -50,6 +50,8 @@ struct thread_info {
28031 unsigned long w_saved;
28032
28033 @@ -4151,10 +3234,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_32.h linux-2.6.32.
28034 };
28035
28036 /*
28037 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h
28038 ---- linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h 2011-11-12 12:44:28.000000000 -0500
28039 -+++ linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h 2011-11-12 12:46:42.000000000 -0500
28040 -@@ -68,6 +68,8 @@ struct thread_info {
28041 +diff -urNp linux-3.0.8/arch/sparc/include/asm/thread_info_64.h linux-3.0.8/arch/sparc/include/asm/thread_info_64.h
28042 +--- linux-3.0.8/arch/sparc/include/asm/thread_info_64.h 2011-07-21 22:17:23.000000000 -0400
28043 ++++ linux-3.0.8/arch/sparc/include/asm/thread_info_64.h 2011-08-23 21:47:55.000000000 -0400
28044 +@@ -63,6 +63,8 @@ struct thread_info {
28045 struct pt_regs *kern_una_regs;
28046 unsigned int kern_una_insn;
28047
28048 @@ -4163,9 +3246,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/thread_info_64.h linux-2.6.32.
28049 unsigned long fpregs[0] __attribute__ ((aligned(64)));
28050 };
28051
28052 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h
28053 ---- linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h 2009-12-02 22:51:21.000000000 -0500
28054 -+++ linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h 2011-11-12 12:46:42.000000000 -0500
28055 +diff -urNp linux-3.0.8/arch/sparc/include/asm/uaccess_32.h linux-3.0.8/arch/sparc/include/asm/uaccess_32.h
28056 +--- linux-3.0.8/arch/sparc/include/asm/uaccess_32.h 2011-07-21 22:17:23.000000000 -0400
28057 ++++ linux-3.0.8/arch/sparc/include/asm/uaccess_32.h 2011-08-23 21:47:55.000000000 -0400
28058 @@ -249,27 +249,46 @@ extern unsigned long __copy_user(void __
28059
28060 static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
28061 @@ -4217,10 +3300,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_32.h linux-2.6.32.48/a
28062 return __copy_user((__force void __user *) to, from, n);
28063 }
28064
28065 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h
28066 ---- linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h 2009-12-02 22:51:21.000000000 -0500
28067 -+++ linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h 2011-11-12 12:46:42.000000000 -0500
28068 -@@ -9,6 +9,7 @@
28069 +diff -urNp linux-3.0.8/arch/sparc/include/asm/uaccess_64.h linux-3.0.8/arch/sparc/include/asm/uaccess_64.h
28070 +--- linux-3.0.8/arch/sparc/include/asm/uaccess_64.h 2011-07-21 22:17:23.000000000 -0400
28071 ++++ linux-3.0.8/arch/sparc/include/asm/uaccess_64.h 2011-08-23 21:47:55.000000000 -0400
28072 +@@ -10,6 +10,7 @@
28073 #include <linux/compiler.h>
28074 #include <linux/string.h>
28075 #include <linux/thread_info.h>
28076 @@ -4228,7 +3311,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h linux-2.6.32.48/a
28077 #include <asm/asi.h>
28078 #include <asm/system.h>
28079 #include <asm/spitfire.h>
28080 -@@ -212,8 +213,15 @@ extern unsigned long copy_from_user_fixu
28081 +@@ -213,8 +214,15 @@ extern unsigned long copy_from_user_fixu
28082 static inline unsigned long __must_check
28083 copy_from_user(void *to, const void __user *from, unsigned long size)
28084 {
28085 @@ -4244,8 +3327,8 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h linux-2.6.32.48/a
28086 + ret = ___copy_from_user(to, from, size);
28087 if (unlikely(ret))
28088 ret = copy_from_user_fixup(to, from, size);
28089 - return ret;
28090 -@@ -228,8 +236,15 @@ extern unsigned long copy_to_user_fixup(
28091 +
28092 +@@ -230,8 +238,15 @@ extern unsigned long copy_to_user_fixup(
28093 static inline unsigned long __must_check
28094 copy_to_user(void __user *to, const void *from, unsigned long size)
28095 {
28096 @@ -4262,9 +3345,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess_64.h linux-2.6.32.48/a
28097 if (unlikely(ret))
28098 ret = copy_to_user_fixup(to, from, size);
28099 return ret;
28100 -diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess.h linux-2.6.32.48/arch/sparc/include/asm/uaccess.h
28101 ---- linux-2.6.32.48/arch/sparc/include/asm/uaccess.h 2009-12-02 22:51:21.000000000 -0500
28102 -+++ linux-2.6.32.48/arch/sparc/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
28103 +diff -urNp linux-3.0.8/arch/sparc/include/asm/uaccess.h linux-3.0.8/arch/sparc/include/asm/uaccess.h
28104 +--- linux-3.0.8/arch/sparc/include/asm/uaccess.h 2011-07-21 22:17:23.000000000 -0400
28105 ++++ linux-3.0.8/arch/sparc/include/asm/uaccess.h 2011-08-23 21:47:55.000000000 -0400
28106 @@ -1,5 +1,13 @@
28107 #ifndef ___ASM_SPARC_UACCESS_H
28108 #define ___ASM_SPARC_UACCESS_H
28109 @@ -4279,84 +3362,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/include/asm/uaccess.h linux-2.6.32.48/arch
28110 #if defined(__sparc__) && defined(__arch64__)
28111 #include <asm/uaccess_64.h>
28112 #else
28113 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/iommu.c linux-2.6.32.48/arch/sparc/kernel/iommu.c
28114 ---- linux-2.6.32.48/arch/sparc/kernel/iommu.c 2009-12-02 22:51:21.000000000 -0500
28115 -+++ linux-2.6.32.48/arch/sparc/kernel/iommu.c 2011-11-12 12:46:42.000000000 -0500
28116 -@@ -826,7 +826,7 @@ static void dma_4u_sync_sg_for_cpu(struc
28117 - spin_unlock_irqrestore(&iommu->lock, flags);
28118 - }
28119 -
28120 --static struct dma_map_ops sun4u_dma_ops = {
28121 -+static const struct dma_map_ops sun4u_dma_ops = {
28122 - .alloc_coherent = dma_4u_alloc_coherent,
28123 - .free_coherent = dma_4u_free_coherent,
28124 - .map_page = dma_4u_map_page,
28125 -@@ -837,7 +837,7 @@ static struct dma_map_ops sun4u_dma_ops
28126 - .sync_sg_for_cpu = dma_4u_sync_sg_for_cpu,
28127 - };
28128 -
28129 --struct dma_map_ops *dma_ops = &sun4u_dma_ops;
28130 -+const struct dma_map_ops *dma_ops = &sun4u_dma_ops;
28131 - EXPORT_SYMBOL(dma_ops);
28132 -
28133 - extern int pci64_dma_supported(struct pci_dev *pdev, u64 device_mask);
28134 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/ioport.c linux-2.6.32.48/arch/sparc/kernel/ioport.c
28135 ---- linux-2.6.32.48/arch/sparc/kernel/ioport.c 2009-12-02 22:51:21.000000000 -0500
28136 -+++ linux-2.6.32.48/arch/sparc/kernel/ioport.c 2011-11-12 12:46:42.000000000 -0500
28137 -@@ -392,7 +392,7 @@ static void sbus_sync_sg_for_device(stru
28138 - BUG();
28139 - }
28140 -
28141 --struct dma_map_ops sbus_dma_ops = {
28142 -+const struct dma_map_ops sbus_dma_ops = {
28143 - .alloc_coherent = sbus_alloc_coherent,
28144 - .free_coherent = sbus_free_coherent,
28145 - .map_page = sbus_map_page,
28146 -@@ -403,7 +403,7 @@ struct dma_map_ops sbus_dma_ops = {
28147 - .sync_sg_for_device = sbus_sync_sg_for_device,
28148 - };
28149 -
28150 --struct dma_map_ops *dma_ops = &sbus_dma_ops;
28151 -+const struct dma_map_ops *dma_ops = &sbus_dma_ops;
28152 - EXPORT_SYMBOL(dma_ops);
28153 -
28154 - static int __init sparc_register_ioport(void)
28155 -@@ -640,7 +640,7 @@ static void pci32_sync_sg_for_device(str
28156 - }
28157 - }
28158 -
28159 --struct dma_map_ops pci32_dma_ops = {
28160 -+const struct dma_map_ops pci32_dma_ops = {
28161 - .alloc_coherent = pci32_alloc_coherent,
28162 - .free_coherent = pci32_free_coherent,
28163 - .map_page = pci32_map_page,
28164 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c
28165 ---- linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c 2009-12-02 22:51:21.000000000 -0500
28166 -+++ linux-2.6.32.48/arch/sparc/kernel/kgdb_32.c 2011-11-12 12:46:42.000000000 -0500
28167 -@@ -158,7 +158,7 @@ void kgdb_arch_exit(void)
28168 - {
28169 - }
28170 -
28171 --struct kgdb_arch arch_kgdb_ops = {
28172 -+const struct kgdb_arch arch_kgdb_ops = {
28173 - /* Breakpoint instruction: ta 0x7d */
28174 - .gdb_bpt_instr = { 0x91, 0xd0, 0x20, 0x7d },
28175 - };
28176 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c
28177 ---- linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c 2009-12-02 22:51:21.000000000 -0500
28178 -+++ linux-2.6.32.48/arch/sparc/kernel/kgdb_64.c 2011-11-12 12:46:42.000000000 -0500
28179 -@@ -180,7 +180,7 @@ void kgdb_arch_exit(void)
28180 - {
28181 - }
28182 -
28183 --struct kgdb_arch arch_kgdb_ops = {
28184 -+const struct kgdb_arch arch_kgdb_ops = {
28185 - /* Breakpoint instruction: ta 0x72 */
28186 - .gdb_bpt_instr = { 0x91, 0xd0, 0x20, 0x72 },
28187 - };
28188 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/Makefile linux-2.6.32.48/arch/sparc/kernel/Makefile
28189 ---- linux-2.6.32.48/arch/sparc/kernel/Makefile 2011-11-12 12:44:28.000000000 -0500
28190 -+++ linux-2.6.32.48/arch/sparc/kernel/Makefile 2011-11-12 12:46:42.000000000 -0500
28191 +diff -urNp linux-3.0.8/arch/sparc/kernel/Makefile linux-3.0.8/arch/sparc/kernel/Makefile
28192 +--- linux-3.0.8/arch/sparc/kernel/Makefile 2011-10-24 08:05:30.000000000 -0400
28193 ++++ linux-3.0.8/arch/sparc/kernel/Makefile 2011-10-16 21:55:27.000000000 -0400
28194 @@ -3,7 +3,7 @@
28195 #
28196
28197 @@ -4366,22 +3374,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/Makefile linux-2.6.32.48/arch/sparc
28198
28199 extra-y := head_$(BITS).o
28200 extra-y += init_task.o
28201 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c
28202 ---- linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c 2009-12-02 22:51:21.000000000 -0500
28203 -+++ linux-2.6.32.48/arch/sparc/kernel/pci_sun4v.c 2011-11-12 12:46:42.000000000 -0500
28204 -@@ -525,7 +525,7 @@ static void dma_4v_unmap_sg(struct devic
28205 - spin_unlock_irqrestore(&iommu->lock, flags);
28206 - }
28207 -
28208 --static struct dma_map_ops sun4v_dma_ops = {
28209 -+static const struct dma_map_ops sun4v_dma_ops = {
28210 - .alloc_coherent = dma_4v_alloc_coherent,
28211 - .free_coherent = dma_4v_free_coherent,
28212 - .map_page = dma_4v_map_page,
28213 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_32.c linux-2.6.32.48/arch/sparc/kernel/process_32.c
28214 ---- linux-2.6.32.48/arch/sparc/kernel/process_32.c 2011-11-12 12:44:28.000000000 -0500
28215 -+++ linux-2.6.32.48/arch/sparc/kernel/process_32.c 2011-11-12 12:46:42.000000000 -0500
28216 -@@ -196,7 +196,7 @@ void __show_backtrace(unsigned long fp)
28217 +diff -urNp linux-3.0.8/arch/sparc/kernel/process_32.c linux-3.0.8/arch/sparc/kernel/process_32.c
28218 +--- linux-3.0.8/arch/sparc/kernel/process_32.c 2011-07-21 22:17:23.000000000 -0400
28219 ++++ linux-3.0.8/arch/sparc/kernel/process_32.c 2011-08-23 21:48:14.000000000 -0400
28220 +@@ -204,7 +204,7 @@ void __show_backtrace(unsigned long fp)
28221 rw->ins[4], rw->ins[5],
28222 rw->ins[6],
28223 rw->ins[7]);
28224 @@ -4390,7 +3386,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_32.c linux-2.6.32.48/arch/s
28225 rw = (struct reg_window32 *) rw->ins[6];
28226 }
28227 spin_unlock_irqrestore(&sparc_backtrace_lock, flags);
28228 -@@ -263,14 +263,14 @@ void show_regs(struct pt_regs *r)
28229 +@@ -271,14 +271,14 @@ void show_regs(struct pt_regs *r)
28230
28231 printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx %s\n",
28232 r->psr, r->pc, r->npc, r->y, print_tainted());
28233 @@ -4407,7 +3403,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_32.c linux-2.6.32.48/arch/s
28234
28235 printk("%%L: %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
28236 rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3],
28237 -@@ -305,7 +305,7 @@ void show_stack(struct task_struct *tsk,
28238 +@@ -313,7 +313,7 @@ void show_stack(struct task_struct *tsk,
28239 rw = (struct reg_window32 *) fp;
28240 pc = rw->ins[7];
28241 printk("[%08lx : ", pc);
28242 @@ -4416,9 +3412,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_32.c linux-2.6.32.48/arch/s
28243 fp = rw->ins[6];
28244 } while (++count < 16);
28245 printk("\n");
28246 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_64.c linux-2.6.32.48/arch/sparc/kernel/process_64.c
28247 ---- linux-2.6.32.48/arch/sparc/kernel/process_64.c 2011-11-12 12:44:28.000000000 -0500
28248 -+++ linux-2.6.32.48/arch/sparc/kernel/process_64.c 2011-11-12 12:46:42.000000000 -0500
28249 +diff -urNp linux-3.0.8/arch/sparc/kernel/process_64.c linux-3.0.8/arch/sparc/kernel/process_64.c
28250 +--- linux-3.0.8/arch/sparc/kernel/process_64.c 2011-07-21 22:17:23.000000000 -0400
28251 ++++ linux-3.0.8/arch/sparc/kernel/process_64.c 2011-08-23 21:48:14.000000000 -0400
28252 @@ -180,14 +180,14 @@ static void show_regwindow(struct pt_reg
28253 printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n",
28254 rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]);
28255 @@ -4443,9 +3439,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_64.c linux-2.6.32.48/arch/s
28256 - printk("RPC: <%pS>\n", (void *) regs->u_regs[15]);
28257 + printk("RPC: <%pA>\n", (void *) regs->u_regs[15]);
28258 show_regwindow(regs);
28259 + show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]);
28260 }
28261 -
28262 -@@ -284,7 +284,7 @@ void arch_trigger_all_cpu_backtrace(void
28263 +@@ -285,7 +285,7 @@ void arch_trigger_all_cpu_backtrace(void
28264 ((tp && tp->task) ? tp->task->pid : -1));
28265
28266 if (gp->tstate & TSTATE_PRIV) {
28267 @@ -4454,10 +3450,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/process_64.c linux-2.6.32.48/arch/s
28268 (void *) gp->tpc,
28269 (void *) gp->o7,
28270 (void *) gp->i7,
28271 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c
28272 ---- linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c 2011-11-12 12:44:28.000000000 -0500
28273 -+++ linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c 2011-11-12 12:46:42.000000000 -0500
28274 -@@ -57,7 +57,7 @@ unsigned long arch_get_unmapped_area(str
28275 +diff -urNp linux-3.0.8/arch/sparc/kernel/sys_sparc_32.c linux-3.0.8/arch/sparc/kernel/sys_sparc_32.c
28276 +--- linux-3.0.8/arch/sparc/kernel/sys_sparc_32.c 2011-07-21 22:17:23.000000000 -0400
28277 ++++ linux-3.0.8/arch/sparc/kernel/sys_sparc_32.c 2011-08-23 21:47:55.000000000 -0400
28278 +@@ -56,7 +56,7 @@ unsigned long arch_get_unmapped_area(str
28279 if (ARCH_SUN4C && len > 0x20000000)
28280 return -ENOMEM;
28281 if (!addr)
28282 @@ -4466,7 +3462,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c linux-2.6.32.48/arch
28283
28284 if (flags & MAP_SHARED)
28285 addr = COLOUR_ALIGN(addr);
28286 -@@ -72,7 +72,7 @@ unsigned long arch_get_unmapped_area(str
28287 +@@ -71,7 +71,7 @@ unsigned long arch_get_unmapped_area(str
28288 }
28289 if (TASK_SIZE - PAGE_SIZE - len < addr)
28290 return -ENOMEM;
28291 @@ -4475,10 +3471,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_32.c linux-2.6.32.48/arch
28292 return addr;
28293 addr = vmm->vm_end;
28294 if (flags & MAP_SHARED)
28295 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c
28296 ---- linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c 2011-11-12 12:44:28.000000000 -0500
28297 -+++ linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c 2011-11-12 12:46:42.000000000 -0500
28298 -@@ -125,7 +125,7 @@ unsigned long arch_get_unmapped_area(str
28299 +diff -urNp linux-3.0.8/arch/sparc/kernel/sys_sparc_64.c linux-3.0.8/arch/sparc/kernel/sys_sparc_64.c
28300 +--- linux-3.0.8/arch/sparc/kernel/sys_sparc_64.c 2011-07-21 22:17:23.000000000 -0400
28301 ++++ linux-3.0.8/arch/sparc/kernel/sys_sparc_64.c 2011-08-23 21:47:55.000000000 -0400
28302 +@@ -124,7 +124,7 @@ unsigned long arch_get_unmapped_area(str
28303 /* We do not accept a shared mapping if it would violate
28304 * cache aliasing constraints.
28305 */
28306 @@ -4487,7 +3483,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28307 ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
28308 return -EINVAL;
28309 return addr;
28310 -@@ -140,6 +140,10 @@ unsigned long arch_get_unmapped_area(str
28311 +@@ -139,6 +139,10 @@ unsigned long arch_get_unmapped_area(str
28312 if (filp || (flags & MAP_SHARED))
28313 do_color_align = 1;
28314
28315 @@ -4498,7 +3494,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28316 if (addr) {
28317 if (do_color_align)
28318 addr = COLOUR_ALIGN(addr, pgoff);
28319 -@@ -147,15 +151,14 @@ unsigned long arch_get_unmapped_area(str
28320 +@@ -146,15 +150,14 @@ unsigned long arch_get_unmapped_area(str
28321 addr = PAGE_ALIGN(addr);
28322
28323 vma = find_vma(mm, addr);
28324 @@ -4517,7 +3513,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28325 mm->cached_hole_size = 0;
28326 }
28327
28328 -@@ -175,14 +178,14 @@ full_search:
28329 +@@ -174,14 +177,14 @@ full_search:
28330 vma = find_vma(mm, VA_EXCLUDE_END);
28331 }
28332 if (unlikely(task_size < addr)) {
28333 @@ -4535,7 +3531,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28334 /*
28335 * Remember the place where we stopped the search:
28336 */
28337 -@@ -216,7 +219,7 @@ arch_get_unmapped_area_topdown(struct fi
28338 +@@ -215,7 +218,7 @@ arch_get_unmapped_area_topdown(struct fi
28339 /* We do not accept a shared mapping if it would violate
28340 * cache aliasing constraints.
28341 */
28342 @@ -4544,7 +3540,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28343 ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
28344 return -EINVAL;
28345 return addr;
28346 -@@ -237,8 +240,7 @@ arch_get_unmapped_area_topdown(struct fi
28347 +@@ -236,8 +239,7 @@ arch_get_unmapped_area_topdown(struct fi
28348 addr = PAGE_ALIGN(addr);
28349
28350 vma = find_vma(mm, addr);
28351 @@ -4554,7 +3550,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28352 return addr;
28353 }
28354
28355 -@@ -259,7 +261,7 @@ arch_get_unmapped_area_topdown(struct fi
28356 +@@ -258,7 +260,7 @@ arch_get_unmapped_area_topdown(struct fi
28357 /* make sure it can fit in the remaining address space */
28358 if (likely(addr > len)) {
28359 vma = find_vma(mm, addr-len);
28360 @@ -4563,7 +3559,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28361 /* remember the address as a hint for next time */
28362 return (mm->free_area_cache = addr-len);
28363 }
28364 -@@ -268,18 +270,18 @@ arch_get_unmapped_area_topdown(struct fi
28365 +@@ -267,18 +269,18 @@ arch_get_unmapped_area_topdown(struct fi
28366 if (unlikely(mm->mmap_base < len))
28367 goto bottomup;
28368
28369 @@ -4586,7 +3582,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28370 /* remember the address as a hint for next time */
28371 return (mm->free_area_cache = addr);
28372 }
28373 -@@ -289,10 +291,8 @@ arch_get_unmapped_area_topdown(struct fi
28374 +@@ -288,10 +290,8 @@ arch_get_unmapped_area_topdown(struct fi
28375 mm->cached_hole_size = vma->vm_start - addr;
28376
28377 /* try just below the current vma->vm_start */
28378 @@ -4599,8 +3595,8 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28379
28380 bottomup:
28381 /*
28382 -@@ -384,6 +384,12 @@ void arch_pick_mmap_layout(struct mm_str
28383 - current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY ||
28384 +@@ -390,6 +390,12 @@ void arch_pick_mmap_layout(struct mm_str
28385 + gap == RLIM_INFINITY ||
28386 sysctl_legacy_va_layout) {
28387 mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
28388 +
28389 @@ -4612,7 +3608,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28390 mm->get_unmapped_area = arch_get_unmapped_area;
28391 mm->unmap_area = arch_unmap_area;
28392 } else {
28393 -@@ -398,6 +404,12 @@ void arch_pick_mmap_layout(struct mm_str
28394 +@@ -402,6 +408,12 @@ void arch_pick_mmap_layout(struct mm_str
28395 gap = (task_size / 6 * 5);
28396
28397 mm->mmap_base = PAGE_ALIGN(task_size - gap - random_factor);
28398 @@ -4625,9 +3621,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/sys_sparc_64.c linux-2.6.32.48/arch
28399 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
28400 mm->unmap_area = arch_unmap_area_topdown;
28401 }
28402 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_32.c linux-2.6.32.48/arch/sparc/kernel/traps_32.c
28403 ---- linux-2.6.32.48/arch/sparc/kernel/traps_32.c 2009-12-02 22:51:21.000000000 -0500
28404 -+++ linux-2.6.32.48/arch/sparc/kernel/traps_32.c 2011-11-12 12:46:42.000000000 -0500
28405 +diff -urNp linux-3.0.8/arch/sparc/kernel/traps_32.c linux-3.0.8/arch/sparc/kernel/traps_32.c
28406 +--- linux-3.0.8/arch/sparc/kernel/traps_32.c 2011-07-21 22:17:23.000000000 -0400
28407 ++++ linux-3.0.8/arch/sparc/kernel/traps_32.c 2011-08-23 21:48:14.000000000 -0400
28408 @@ -44,6 +44,8 @@ static void instruction_dump(unsigned lo
28409 #define __SAVE __asm__ __volatile__("save %sp, -0x40, %sp\n\t")
28410 #define __RESTORE __asm__ __volatile__("restore %g0, %g0, %g0\n\t")
28411 @@ -4657,10 +3653,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_32.c linux-2.6.32.48/arch/spa
28412 do_exit(SIGSEGV);
28413 }
28414
28415 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/sparc/kernel/traps_64.c
28416 ---- linux-2.6.32.48/arch/sparc/kernel/traps_64.c 2009-12-02 22:51:21.000000000 -0500
28417 -+++ linux-2.6.32.48/arch/sparc/kernel/traps_64.c 2011-11-12 12:46:42.000000000 -0500
28418 -@@ -73,7 +73,7 @@ static void dump_tl1_traplog(struct tl1_
28419 +diff -urNp linux-3.0.8/arch/sparc/kernel/traps_64.c linux-3.0.8/arch/sparc/kernel/traps_64.c
28420 +--- linux-3.0.8/arch/sparc/kernel/traps_64.c 2011-07-21 22:17:23.000000000 -0400
28421 ++++ linux-3.0.8/arch/sparc/kernel/traps_64.c 2011-08-23 21:48:14.000000000 -0400
28422 +@@ -75,7 +75,7 @@ static void dump_tl1_traplog(struct tl1_
28423 i + 1,
28424 p->trapstack[i].tstate, p->trapstack[i].tpc,
28425 p->trapstack[i].tnpc, p->trapstack[i].tt);
28426 @@ -4669,7 +3665,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28427 }
28428 }
28429
28430 -@@ -93,6 +93,12 @@ void bad_trap(struct pt_regs *regs, long
28431 +@@ -95,6 +95,12 @@ void bad_trap(struct pt_regs *regs, long
28432
28433 lvl -= 0x100;
28434 if (regs->tstate & TSTATE_PRIV) {
28435 @@ -4682,7 +3678,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28436 sprintf(buffer, "Kernel bad sw trap %lx", lvl);
28437 die_if_kernel(buffer, regs);
28438 }
28439 -@@ -111,11 +117,16 @@ void bad_trap(struct pt_regs *regs, long
28440 +@@ -113,11 +119,16 @@ void bad_trap(struct pt_regs *regs, long
28441 void bad_trap_tl1(struct pt_regs *regs, long lvl)
28442 {
28443 char buffer[32];
28444 @@ -4700,7 +3696,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28445 dump_tl1_traplog((struct tl1_traplog *)(regs + 1));
28446
28447 sprintf (buffer, "Bad trap %lx at tl>0", lvl);
28448 -@@ -1139,7 +1150,7 @@ static void cheetah_log_errors(struct pt
28449 +@@ -1141,7 +1152,7 @@ static void cheetah_log_errors(struct pt
28450 regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
28451 printk("%s" "ERROR(%d): ",
28452 (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id());
28453 @@ -4709,7 +3705,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28454 printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n",
28455 (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
28456 (afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
28457 -@@ -1746,7 +1757,7 @@ void cheetah_plus_parity_error(int type,
28458 +@@ -1748,7 +1759,7 @@ void cheetah_plus_parity_error(int type,
28459 smp_processor_id(),
28460 (type & 0x1) ? 'I' : 'D',
28461 regs->tpc);
28462 @@ -4718,7 +3714,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28463 panic("Irrecoverable Cheetah+ parity error.");
28464 }
28465
28466 -@@ -1754,7 +1765,7 @@ void cheetah_plus_parity_error(int type,
28467 +@@ -1756,7 +1767,7 @@ void cheetah_plus_parity_error(int type,
28468 smp_processor_id(),
28469 (type & 0x1) ? 'I' : 'D',
28470 regs->tpc);
28471 @@ -4727,7 +3723,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28472 }
28473
28474 struct sun4v_error_entry {
28475 -@@ -1961,9 +1972,9 @@ void sun4v_itlb_error_report(struct pt_r
28476 +@@ -1963,9 +1974,9 @@ void sun4v_itlb_error_report(struct pt_r
28477
28478 printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
28479 regs->tpc, tl);
28480 @@ -4739,7 +3735,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28481 (void *) regs->u_regs[UREG_I7]);
28482 printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
28483 "pte[%lx] error[%lx]\n",
28484 -@@ -1985,9 +1996,9 @@ void sun4v_dtlb_error_report(struct pt_r
28485 +@@ -1987,9 +1998,9 @@ void sun4v_dtlb_error_report(struct pt_r
28486
28487 printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
28488 regs->tpc, tl);
28489 @@ -4751,16 +3747,23 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28490 (void *) regs->u_regs[UREG_I7]);
28491 printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] "
28492 "pte[%lx] error[%lx]\n",
28493 -@@ -2191,7 +2202,7 @@ void show_stack(struct task_struct *tsk,
28494 +@@ -2195,13 +2206,13 @@ void show_stack(struct task_struct *tsk,
28495 fp = (unsigned long)sf->fp + STACK_BIAS;
28496 }
28497
28498 - printk(" [%016lx] %pS\n", pc, (void *) pc);
28499 + printk(" [%016lx] %pA\n", pc, (void *) pc);
28500 - } while (++count < 16);
28501 - }
28502 -
28503 -@@ -2233,6 +2244,8 @@ static inline struct reg_window *kernel_
28504 + #ifdef CONFIG_FUNCTION_GRAPH_TRACER
28505 + if ((pc + 8UL) == (unsigned long) &return_to_handler) {
28506 + int index = tsk->curr_ret_stack;
28507 + if (tsk->ret_stack && index >= graph) {
28508 + pc = tsk->ret_stack[index - graph].ret;
28509 +- printk(" [%016lx] %pS\n", pc, (void *) pc);
28510 ++ printk(" [%016lx] %pA\n", pc, (void *) pc);
28511 + graph++;
28512 + }
28513 + }
28514 +@@ -2226,6 +2237,8 @@ static inline struct reg_window *kernel_
28515 return (struct reg_window *) (fp + STACK_BIAS);
28516 }
28517
28518 @@ -4769,55 +3772,42 @@ diff -urNp linux-2.6.32.48/arch/sparc/kernel/traps_64.c linux-2.6.32.48/arch/spa
28519 void die_if_kernel(char *str, struct pt_regs *regs)
28520 {
28521 static int die_counter;
28522 -@@ -2260,7 +2273,7 @@ void die_if_kernel(char *str, struct pt_
28523 +@@ -2254,7 +2267,7 @@ void die_if_kernel(char *str, struct pt_
28524 while (rw &&
28525 - count++ < 30&&
28526 - is_kernel_stack(current, rw)) {
28527 + count++ < 30 &&
28528 + kstack_valid(tp, (unsigned long) rw)) {
28529 - printk("Caller[%016lx]: %pS\n", rw->ins[7],
28530 + printk("Caller[%016lx]: %pA\n", rw->ins[7],
28531 (void *) rw->ins[7]);
28532
28533 rw = kernel_stack_up(rw);
28534 -@@ -2273,8 +2286,11 @@ void die_if_kernel(char *str, struct pt_
28535 +@@ -2267,8 +2280,10 @@ void die_if_kernel(char *str, struct pt_
28536 }
28537 user_instruction_dump ((unsigned int __user *) regs->tpc);
28538 }
28539 - if (regs->tstate & TSTATE_PRIV)
28540 + if (regs->tstate & TSTATE_PRIV) {
28541 -+ gr_handle_kernel_exploit();
28542 ++ gr_handle_kernel_exploit();
28543 do_exit(SIGKILL);
28544 + }
28545 -+
28546 do_exit(SIGSEGV);
28547 }
28548 EXPORT_SYMBOL(die_if_kernel);
28549 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S
28550 ---- linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S 2009-12-02 22:51:21.000000000 -0500
28551 -+++ linux-2.6.32.48/arch/sparc/kernel/una_asm_64.S 2011-11-12 12:46:42.000000000 -0500
28552 -@@ -127,7 +127,7 @@ do_int_load:
28553 - wr %o5, 0x0, %asi
28554 - retl
28555 - mov 0, %o0
28556 -- .size __do_int_load, .-__do_int_load
28557 -+ .size do_int_load, .-do_int_load
28558 -
28559 - .section __ex_table,"a"
28560 - .word 4b, __retl_efault
28561 -diff -urNp linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c
28562 ---- linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c 2009-12-02 22:51:21.000000000 -0500
28563 -+++ linux-2.6.32.48/arch/sparc/kernel/unaligned_64.c 2011-11-12 12:46:42.000000000 -0500
28564 -@@ -288,7 +288,7 @@ static void log_unaligned(struct pt_regs
28565 - if (count < 5) {
28566 - last_time = jiffies;
28567 - count++;
28568 +diff -urNp linux-3.0.8/arch/sparc/kernel/unaligned_64.c linux-3.0.8/arch/sparc/kernel/unaligned_64.c
28569 +--- linux-3.0.8/arch/sparc/kernel/unaligned_64.c 2011-10-24 08:05:21.000000000 -0400
28570 ++++ linux-3.0.8/arch/sparc/kernel/unaligned_64.c 2011-08-23 21:48:14.000000000 -0400
28571 +@@ -279,7 +279,7 @@ static void log_unaligned(struct pt_regs
28572 + static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
28573 +
28574 + if (__ratelimit(&ratelimit)) {
28575 - printk("Kernel unaligned access at TPC[%lx] %pS\n",
28576 + printk("Kernel unaligned access at TPC[%lx] %pA\n",
28577 regs->tpc, (void *) regs->tpc);
28578 }
28579 }
28580 -diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc/lib/atomic_64.S
28581 ---- linux-2.6.32.48/arch/sparc/lib/atomic_64.S 2009-12-02 22:51:21.000000000 -0500
28582 -+++ linux-2.6.32.48/arch/sparc/lib/atomic_64.S 2011-11-12 12:46:42.000000000 -0500
28583 +diff -urNp linux-3.0.8/arch/sparc/lib/atomic_64.S linux-3.0.8/arch/sparc/lib/atomic_64.S
28584 +--- linux-3.0.8/arch/sparc/lib/atomic_64.S 2011-07-21 22:17:23.000000000 -0400
28585 ++++ linux-3.0.8/arch/sparc/lib/atomic_64.S 2011-08-23 21:47:55.000000000 -0400
28586 @@ -18,7 +18,12 @@
28587 atomic_add: /* %o0 = increment, %o1 = atomic_ptr */
28588 BACKOFF_SETUP(%o2)
28589 @@ -4831,7 +3821,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28590 +
28591 cas [%o1], %g1, %g7
28592 cmp %g1, %g7
28593 - bne,pn %icc, 2f
28594 + bne,pn %icc, BACKOFF_LABEL(2f, 1b)
28595 @@ -28,12 +33,32 @@ atomic_add: /* %o0 = increment, %o1 = at
28596 2: BACKOFF_SPIN(%o2, %o3, 1b)
28597 .size atomic_add, .-atomic_add
28598 @@ -4865,7 +3855,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28599 +
28600 cas [%o1], %g1, %g7
28601 cmp %g1, %g7
28602 - bne,pn %icc, 2f
28603 + bne,pn %icc, BACKOFF_LABEL(2f, 1b)
28604 @@ -43,12 +68,32 @@ atomic_sub: /* %o0 = decrement, %o1 = at
28605 2: BACKOFF_SPIN(%o2, %o3, 1b)
28606 .size atomic_sub, .-atomic_sub
28607 @@ -4899,8 +3889,8 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28608 +
28609 cas [%o1], %g1, %g7
28610 cmp %g1, %g7
28611 - bne,pn %icc, 2f
28612 -@@ -59,12 +104,33 @@ atomic_add_ret: /* %o0 = increment, %o1
28613 + bne,pn %icc, BACKOFF_LABEL(2f, 1b)
28614 +@@ -58,12 +103,33 @@ atomic_add_ret: /* %o0 = increment, %o1
28615 2: BACKOFF_SPIN(%o2, %o3, 1b)
28616 .size atomic_add_ret, .-atomic_add_ret
28617
28618 @@ -4934,8 +3924,8 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28619 +
28620 cas [%o1], %g1, %g7
28621 cmp %g1, %g7
28622 - bne,pn %icc, 2f
28623 -@@ -80,7 +146,12 @@ atomic_sub_ret: /* %o0 = decrement, %o1
28624 + bne,pn %icc, BACKOFF_LABEL(2f, 1b)
28625 +@@ -78,7 +144,12 @@ atomic_sub_ret: /* %o0 = decrement, %o1
28626 atomic64_add: /* %o0 = increment, %o1 = atomic_ptr */
28627 BACKOFF_SETUP(%o2)
28628 1: ldx [%o1], %g1
28629 @@ -4948,8 +3938,8 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28630 +
28631 casx [%o1], %g1, %g7
28632 cmp %g1, %g7
28633 - bne,pn %xcc, 2f
28634 -@@ -90,12 +161,32 @@ atomic64_add: /* %o0 = increment, %o1 =
28635 + bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
28636 +@@ -88,12 +159,32 @@ atomic64_add: /* %o0 = increment, %o1 =
28637 2: BACKOFF_SPIN(%o2, %o3, 1b)
28638 .size atomic64_add, .-atomic64_add
28639
28640 @@ -4982,8 +3972,8 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28641 +
28642 casx [%o1], %g1, %g7
28643 cmp %g1, %g7
28644 - bne,pn %xcc, 2f
28645 -@@ -105,12 +196,32 @@ atomic64_sub: /* %o0 = decrement, %o1 =
28646 + bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
28647 +@@ -103,12 +194,32 @@ atomic64_sub: /* %o0 = decrement, %o1 =
28648 2: BACKOFF_SPIN(%o2, %o3, 1b)
28649 .size atomic64_sub, .-atomic64_sub
28650
28651 @@ -5016,8 +4006,8 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28652 +
28653 casx [%o1], %g1, %g7
28654 cmp %g1, %g7
28655 - bne,pn %xcc, 2f
28656 -@@ -121,12 +232,33 @@ atomic64_add_ret: /* %o0 = increment, %o
28657 + bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
28658 +@@ -118,12 +229,33 @@ atomic64_add_ret: /* %o0 = increment, %o
28659 2: BACKOFF_SPIN(%o2, %o3, 1b)
28660 .size atomic64_add_ret, .-atomic64_add_ret
28661
28662 @@ -5051,11 +4041,11 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/atomic_64.S linux-2.6.32.48/arch/sparc
28663 +
28664 casx [%o1], %g1, %g7
28665 cmp %g1, %g7
28666 - bne,pn %xcc, 2f
28667 -diff -urNp linux-2.6.32.48/arch/sparc/lib/ksyms.c linux-2.6.32.48/arch/sparc/lib/ksyms.c
28668 ---- linux-2.6.32.48/arch/sparc/lib/ksyms.c 2009-12-02 22:51:21.000000000 -0500
28669 -+++ linux-2.6.32.48/arch/sparc/lib/ksyms.c 2011-11-12 12:46:42.000000000 -0500
28670 -@@ -144,12 +144,18 @@ EXPORT_SYMBOL(__downgrade_write);
28671 + bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
28672 +diff -urNp linux-3.0.8/arch/sparc/lib/ksyms.c linux-3.0.8/arch/sparc/lib/ksyms.c
28673 +--- linux-3.0.8/arch/sparc/lib/ksyms.c 2011-07-21 22:17:23.000000000 -0400
28674 ++++ linux-3.0.8/arch/sparc/lib/ksyms.c 2011-08-23 21:48:14.000000000 -0400
28675 +@@ -142,12 +142,18 @@ EXPORT_SYMBOL(__downgrade_write);
28676
28677 /* Atomic counter implementation. */
28678 EXPORT_SYMBOL(atomic_add);
28679 @@ -5074,9 +4064,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/ksyms.c linux-2.6.32.48/arch/sparc/lib
28680 EXPORT_SYMBOL(atomic64_sub_ret);
28681
28682 /* Atomic bit operations. */
28683 -diff -urNp linux-2.6.32.48/arch/sparc/lib/Makefile linux-2.6.32.48/arch/sparc/lib/Makefile
28684 ---- linux-2.6.32.48/arch/sparc/lib/Makefile 2009-12-02 22:51:21.000000000 -0500
28685 -+++ linux-2.6.32.48/arch/sparc/lib/Makefile 2011-11-12 12:46:42.000000000 -0500
28686 +diff -urNp linux-3.0.8/arch/sparc/lib/Makefile linux-3.0.8/arch/sparc/lib/Makefile
28687 +--- linux-3.0.8/arch/sparc/lib/Makefile 2011-10-24 08:05:21.000000000 -0400
28688 ++++ linux-3.0.8/arch/sparc/lib/Makefile 2011-08-23 21:47:55.000000000 -0400
28689 @@ -2,7 +2,7 @@
28690 #
28691
28692 @@ -5086,110 +4076,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/lib/Makefile linux-2.6.32.48/arch/sparc/li
28693
28694 lib-$(CONFIG_SPARC32) += mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o
28695 lib-$(CONFIG_SPARC32) += memcpy.o memset.o
28696 -diff -urNp linux-2.6.32.48/arch/sparc/lib/rwsem_64.S linux-2.6.32.48/arch/sparc/lib/rwsem_64.S
28697 ---- linux-2.6.32.48/arch/sparc/lib/rwsem_64.S 2009-12-02 22:51:21.000000000 -0500
28698 -+++ linux-2.6.32.48/arch/sparc/lib/rwsem_64.S 2011-11-12 12:46:42.000000000 -0500
28699 -@@ -11,7 +11,12 @@
28700 - .globl __down_read
28701 - __down_read:
28702 - 1: lduw [%o0], %g1
28703 -- add %g1, 1, %g7
28704 -+ addcc %g1, 1, %g7
28705 -+
28706 -+#ifdef CONFIG_PAX_REFCOUNT
28707 -+ tvs %icc, 6
28708 -+#endif
28709 -+
28710 - cas [%o0], %g1, %g7
28711 - cmp %g1, %g7
28712 - bne,pn %icc, 1b
28713 -@@ -33,7 +38,12 @@ __down_read:
28714 - .globl __down_read_trylock
28715 - __down_read_trylock:
28716 - 1: lduw [%o0], %g1
28717 -- add %g1, 1, %g7
28718 -+ addcc %g1, 1, %g7
28719 -+
28720 -+#ifdef CONFIG_PAX_REFCOUNT
28721 -+ tvs %icc, 6
28722 -+#endif
28723 -+
28724 - cmp %g7, 0
28725 - bl,pn %icc, 2f
28726 - mov 0, %o1
28727 -@@ -51,7 +61,12 @@ __down_write:
28728 - or %g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g1
28729 - 1:
28730 - lduw [%o0], %g3
28731 -- add %g3, %g1, %g7
28732 -+ addcc %g3, %g1, %g7
28733 -+
28734 -+#ifdef CONFIG_PAX_REFCOUNT
28735 -+ tvs %icc, 6
28736 -+#endif
28737 -+
28738 - cas [%o0], %g3, %g7
28739 - cmp %g3, %g7
28740 - bne,pn %icc, 1b
28741 -@@ -77,7 +92,12 @@ __down_write_trylock:
28742 - cmp %g3, 0
28743 - bne,pn %icc, 2f
28744 - mov 0, %o1
28745 -- add %g3, %g1, %g7
28746 -+ addcc %g3, %g1, %g7
28747 -+
28748 -+#ifdef CONFIG_PAX_REFCOUNT
28749 -+ tvs %icc, 6
28750 -+#endif
28751 -+
28752 - cas [%o0], %g3, %g7
28753 - cmp %g3, %g7
28754 - bne,pn %icc, 1b
28755 -@@ -90,7 +110,12 @@ __down_write_trylock:
28756 - __up_read:
28757 - 1:
28758 - lduw [%o0], %g1
28759 -- sub %g1, 1, %g7
28760 -+ subcc %g1, 1, %g7
28761 -+
28762 -+#ifdef CONFIG_PAX_REFCOUNT
28763 -+ tvs %icc, 6
28764 -+#endif
28765 -+
28766 - cas [%o0], %g1, %g7
28767 - cmp %g1, %g7
28768 - bne,pn %icc, 1b
28769 -@@ -118,7 +143,12 @@ __up_write:
28770 - or %g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g1
28771 - 1:
28772 - lduw [%o0], %g3
28773 -- sub %g3, %g1, %g7
28774 -+ subcc %g3, %g1, %g7
28775 -+
28776 -+#ifdef CONFIG_PAX_REFCOUNT
28777 -+ tvs %icc, 6
28778 -+#endif
28779 -+
28780 - cas [%o0], %g3, %g7
28781 - cmp %g3, %g7
28782 - bne,pn %icc, 1b
28783 -@@ -143,7 +173,12 @@ __downgrade_write:
28784 - or %g1, %lo(RWSEM_WAITING_BIAS), %g1
28785 - 1:
28786 - lduw [%o0], %g3
28787 -- sub %g3, %g1, %g7
28788 -+ subcc %g3, %g1, %g7
28789 -+
28790 -+#ifdef CONFIG_PAX_REFCOUNT
28791 -+ tvs %icc, 6
28792 -+#endif
28793 -+
28794 - cas [%o0], %g3, %g7
28795 - cmp %g3, %g7
28796 - bne,pn %icc, 1b
28797 -diff -urNp linux-2.6.32.48/arch/sparc/Makefile linux-2.6.32.48/arch/sparc/Makefile
28798 ---- linux-2.6.32.48/arch/sparc/Makefile 2011-11-12 12:44:28.000000000 -0500
28799 -+++ linux-2.6.32.48/arch/sparc/Makefile 2011-11-12 12:46:42.000000000 -0500
28800 +diff -urNp linux-3.0.8/arch/sparc/Makefile linux-3.0.8/arch/sparc/Makefile
28801 +--- linux-3.0.8/arch/sparc/Makefile 2011-07-21 22:17:23.000000000 -0400
28802 ++++ linux-3.0.8/arch/sparc/Makefile 2011-08-23 21:48:14.000000000 -0400
28803 @@ -75,7 +75,7 @@ drivers-$(CONFIG_OPROFILE) += arch/sparc
28804 # Export what is needed by arch/sparc/boot/Makefile
28805 export VMLINUX_INIT VMLINUX_MAIN
28806 @@ -5199,10 +4088,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/Makefile linux-2.6.32.48/arch/sparc/Makefi
28807 VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y)
28808 VMLINUX_MAIN += $(drivers-y) $(net-y)
28809
28810 -diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_32.c linux-2.6.32.48/arch/sparc/mm/fault_32.c
28811 ---- linux-2.6.32.48/arch/sparc/mm/fault_32.c 2009-12-02 22:51:21.000000000 -0500
28812 -+++ linux-2.6.32.48/arch/sparc/mm/fault_32.c 2011-11-12 12:46:42.000000000 -0500
28813 -@@ -21,6 +21,9 @@
28814 +diff -urNp linux-3.0.8/arch/sparc/mm/fault_32.c linux-3.0.8/arch/sparc/mm/fault_32.c
28815 +--- linux-3.0.8/arch/sparc/mm/fault_32.c 2011-07-21 22:17:23.000000000 -0400
28816 ++++ linux-3.0.8/arch/sparc/mm/fault_32.c 2011-08-23 21:47:55.000000000 -0400
28817 +@@ -22,6 +22,9 @@
28818 #include <linux/interrupt.h>
28819 #include <linux/module.h>
28820 #include <linux/kdebug.h>
28821 @@ -5212,7 +4101,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_32.c linux-2.6.32.48/arch/sparc/m
28822
28823 #include <asm/system.h>
28824 #include <asm/page.h>
28825 -@@ -167,6 +170,267 @@ static unsigned long compute_si_addr(str
28826 +@@ -209,6 +212,268 @@ static unsigned long compute_si_addr(str
28827 return safe_compute_effective_address(regs, insn);
28828 }
28829
28830 @@ -5248,6 +4137,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_32.c linux-2.6.32.48/arch/sparc/m
28831 +{
28832 + int ret;
28833 +
28834 ++ INIT_LIST_HEAD(&vma->anon_vma_chain);
28835 + vma->vm_mm = current->mm;
28836 + vma->vm_start = addr;
28837 + vma->vm_end = addr + PAGE_SIZE;
28838 @@ -5477,10 +4367,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_32.c linux-2.6.32.48/arch/sparc/m
28839 +}
28840 +#endif
28841 +
28842 - asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
28843 - unsigned long address)
28844 + static noinline void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
28845 + int text_fault)
28846 {
28847 -@@ -231,6 +495,24 @@ good_area:
28848 +@@ -281,6 +546,24 @@ good_area:
28849 if(!(vma->vm_flags & VM_WRITE))
28850 goto bad_area;
28851 } else {
28852 @@ -5505,10 +4395,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_32.c linux-2.6.32.48/arch/sparc/m
28853 /* Allow reads even for write-only mappings */
28854 if(!(vma->vm_flags & (VM_READ | VM_EXEC)))
28855 goto bad_area;
28856 -diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/mm/fault_64.c
28857 ---- linux-2.6.32.48/arch/sparc/mm/fault_64.c 2009-12-02 22:51:21.000000000 -0500
28858 -+++ linux-2.6.32.48/arch/sparc/mm/fault_64.c 2011-11-12 12:46:42.000000000 -0500
28859 -@@ -20,6 +20,9 @@
28860 +diff -urNp linux-3.0.8/arch/sparc/mm/fault_64.c linux-3.0.8/arch/sparc/mm/fault_64.c
28861 +--- linux-3.0.8/arch/sparc/mm/fault_64.c 2011-07-21 22:17:23.000000000 -0400
28862 ++++ linux-3.0.8/arch/sparc/mm/fault_64.c 2011-08-23 21:48:14.000000000 -0400
28863 +@@ -21,6 +21,9 @@
28864 #include <linux/kprobes.h>
28865 #include <linux/kdebug.h>
28866 #include <linux/percpu.h>
28867 @@ -5518,7 +4408,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/m
28868
28869 #include <asm/page.h>
28870 #include <asm/pgtable.h>
28871 -@@ -78,7 +81,7 @@ static void bad_kernel_pc(struct pt_regs
28872 +@@ -74,7 +77,7 @@ static void __kprobes bad_kernel_pc(stru
28873 printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n",
28874 regs->tpc);
28875 printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]);
28876 @@ -5527,7 +4417,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/m
28877 printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr);
28878 dump_stack();
28879 unhandled_fault(regs->tpc, current, regs);
28880 -@@ -249,6 +252,456 @@ static void noinline bogus_32bit_fault_a
28881 +@@ -272,6 +275,457 @@ static void noinline __kprobes bogus_32b
28882 show_regs(regs);
28883 }
28884
28885 @@ -5563,6 +4453,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/m
28886 +{
28887 + int ret;
28888 +
28889 ++ INIT_LIST_HEAD(&vma->anon_vma_chain);
28890 + vma->vm_mm = current->mm;
28891 + vma->vm_start = addr;
28892 + vma->vm_end = addr + PAGE_SIZE;
28893 @@ -5984,7 +4875,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/m
28894 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
28895 {
28896 struct mm_struct *mm = current->mm;
28897 -@@ -315,6 +768,29 @@ asmlinkage void __kprobes do_sparc64_fau
28898 +@@ -340,6 +794,29 @@ asmlinkage void __kprobes do_sparc64_fau
28899 if (!vma)
28900 goto bad_area;
28901
28902 @@ -6014,10 +4905,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/fault_64.c linux-2.6.32.48/arch/sparc/m
28903 /* Pure DTLB misses do not tell us whether the fault causing
28904 * load/store/atomic was a write or not, it only says that there
28905 * was no match. So in such a case we (carefully) read the
28906 -diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c
28907 ---- linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c 2009-12-02 22:51:21.000000000 -0500
28908 -+++ linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c 2011-11-12 12:46:42.000000000 -0500
28909 -@@ -69,7 +69,7 @@ full_search:
28910 +diff -urNp linux-3.0.8/arch/sparc/mm/hugetlbpage.c linux-3.0.8/arch/sparc/mm/hugetlbpage.c
28911 +--- linux-3.0.8/arch/sparc/mm/hugetlbpage.c 2011-07-21 22:17:23.000000000 -0400
28912 ++++ linux-3.0.8/arch/sparc/mm/hugetlbpage.c 2011-08-23 21:47:55.000000000 -0400
28913 +@@ -68,7 +68,7 @@ full_search:
28914 }
28915 return -ENOMEM;
28916 }
28917 @@ -6026,7 +4917,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/spar
28918 /*
28919 * Remember the place where we stopped the search:
28920 */
28921 -@@ -108,7 +108,7 @@ hugetlb_get_unmapped_area_topdown(struct
28922 +@@ -107,7 +107,7 @@ hugetlb_get_unmapped_area_topdown(struct
28923 /* make sure it can fit in the remaining address space */
28924 if (likely(addr > len)) {
28925 vma = find_vma(mm, addr-len);
28926 @@ -6035,7 +4926,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/spar
28927 /* remember the address as a hint for next time */
28928 return (mm->free_area_cache = addr-len);
28929 }
28930 -@@ -117,16 +117,17 @@ hugetlb_get_unmapped_area_topdown(struct
28931 +@@ -116,16 +116,17 @@ hugetlb_get_unmapped_area_topdown(struct
28932 if (unlikely(mm->mmap_base < len))
28933 goto bottomup;
28934
28935 @@ -6055,7 +4946,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/spar
28936 /* remember the address as a hint for next time */
28937 return (mm->free_area_cache = addr);
28938 }
28939 -@@ -136,8 +137,8 @@ hugetlb_get_unmapped_area_topdown(struct
28940 +@@ -135,8 +136,8 @@ hugetlb_get_unmapped_area_topdown(struct
28941 mm->cached_hole_size = vma->vm_start - addr;
28942
28943 /* try just below the current vma->vm_start */
28944 @@ -6066,7 +4957,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/spar
28945
28946 bottomup:
28947 /*
28948 -@@ -183,8 +184,7 @@ hugetlb_get_unmapped_area(struct file *f
28949 +@@ -182,8 +183,7 @@ hugetlb_get_unmapped_area(struct file *f
28950 if (addr) {
28951 addr = ALIGN(addr, HPAGE_SIZE);
28952 vma = find_vma(mm, addr);
28953 @@ -6076,10 +4967,10 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/hugetlbpage.c linux-2.6.32.48/arch/spar
28954 return addr;
28955 }
28956 if (mm->get_unmapped_area == arch_get_unmapped_area)
28957 -diff -urNp linux-2.6.32.48/arch/sparc/mm/init_32.c linux-2.6.32.48/arch/sparc/mm/init_32.c
28958 ---- linux-2.6.32.48/arch/sparc/mm/init_32.c 2009-12-02 22:51:21.000000000 -0500
28959 -+++ linux-2.6.32.48/arch/sparc/mm/init_32.c 2011-11-12 12:46:42.000000000 -0500
28960 -@@ -317,6 +317,9 @@ extern void device_scan(void);
28961 +diff -urNp linux-3.0.8/arch/sparc/mm/init_32.c linux-3.0.8/arch/sparc/mm/init_32.c
28962 +--- linux-3.0.8/arch/sparc/mm/init_32.c 2011-07-21 22:17:23.000000000 -0400
28963 ++++ linux-3.0.8/arch/sparc/mm/init_32.c 2011-08-23 21:47:55.000000000 -0400
28964 +@@ -316,6 +316,9 @@ extern void device_scan(void);
28965 pgprot_t PAGE_SHARED __read_mostly;
28966 EXPORT_SYMBOL(PAGE_SHARED);
28967
28968 @@ -6089,7 +4980,7 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/init_32.c linux-2.6.32.48/arch/sparc/mm
28969 void __init paging_init(void)
28970 {
28971 switch(sparc_cpu_model) {
28972 -@@ -345,17 +348,17 @@ void __init paging_init(void)
28973 +@@ -344,17 +347,17 @@ void __init paging_init(void)
28974
28975 /* Initialize the protection map with non-constant, MMU dependent values. */
28976 protection_map[0] = PAGE_NONE;
28977 @@ -6113,9 +5004,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/init_32.c linux-2.6.32.48/arch/sparc/mm
28978 protection_map[12] = PAGE_READONLY;
28979 protection_map[13] = PAGE_READONLY;
28980 protection_map[14] = PAGE_SHARED;
28981 -diff -urNp linux-2.6.32.48/arch/sparc/mm/Makefile linux-2.6.32.48/arch/sparc/mm/Makefile
28982 ---- linux-2.6.32.48/arch/sparc/mm/Makefile 2009-12-02 22:51:21.000000000 -0500
28983 -+++ linux-2.6.32.48/arch/sparc/mm/Makefile 2011-11-12 12:46:42.000000000 -0500
28984 +diff -urNp linux-3.0.8/arch/sparc/mm/Makefile linux-3.0.8/arch/sparc/mm/Makefile
28985 +--- linux-3.0.8/arch/sparc/mm/Makefile 2011-07-21 22:17:23.000000000 -0400
28986 ++++ linux-3.0.8/arch/sparc/mm/Makefile 2011-08-23 21:47:55.000000000 -0400
28987 @@ -2,7 +2,7 @@
28988 #
28989
28990 @@ -6125,9 +5016,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/Makefile linux-2.6.32.48/arch/sparc/mm/
28991
28992 obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o
28993 obj-y += fault_$(BITS).o
28994 -diff -urNp linux-2.6.32.48/arch/sparc/mm/srmmu.c linux-2.6.32.48/arch/sparc/mm/srmmu.c
28995 ---- linux-2.6.32.48/arch/sparc/mm/srmmu.c 2009-12-02 22:51:21.000000000 -0500
28996 -+++ linux-2.6.32.48/arch/sparc/mm/srmmu.c 2011-11-12 12:46:42.000000000 -0500
28997 +diff -urNp linux-3.0.8/arch/sparc/mm/srmmu.c linux-3.0.8/arch/sparc/mm/srmmu.c
28998 +--- linux-3.0.8/arch/sparc/mm/srmmu.c 2011-07-21 22:17:23.000000000 -0400
28999 ++++ linux-3.0.8/arch/sparc/mm/srmmu.c 2011-08-23 21:47:55.000000000 -0400
29000 @@ -2200,6 +2200,13 @@ void __init ld_mmu_srmmu(void)
29001 PAGE_SHARED = pgprot_val(SRMMU_PAGE_SHARED);
29002 BTFIXUPSET_INT(page_copy, pgprot_val(SRMMU_PAGE_COPY));
29003 @@ -6142,9 +5033,9 @@ diff -urNp linux-2.6.32.48/arch/sparc/mm/srmmu.c linux-2.6.32.48/arch/sparc/mm/s
29004 BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL));
29005 page_kernel = pgprot_val(SRMMU_PAGE_KERNEL);
29006
29007 -diff -urNp linux-2.6.32.48/arch/um/include/asm/kmap_types.h linux-2.6.32.48/arch/um/include/asm/kmap_types.h
29008 ---- linux-2.6.32.48/arch/um/include/asm/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
29009 -+++ linux-2.6.32.48/arch/um/include/asm/kmap_types.h 2011-11-12 12:46:42.000000000 -0500
29010 +diff -urNp linux-3.0.8/arch/um/include/asm/kmap_types.h linux-3.0.8/arch/um/include/asm/kmap_types.h
29011 +--- linux-3.0.8/arch/um/include/asm/kmap_types.h 2011-07-21 22:17:23.000000000 -0400
29012 ++++ linux-3.0.8/arch/um/include/asm/kmap_types.h 2011-08-23 21:47:55.000000000 -0400
29013 @@ -23,6 +23,7 @@ enum km_type {
29014 KM_IRQ1,
29015 KM_SOFTIRQ0,
29016 @@ -6153,9 +5044,9 @@ diff -urNp linux-2.6.32.48/arch/um/include/asm/kmap_types.h linux-2.6.32.48/arch
29017 KM_TYPE_NR
29018 };
29019
29020 -diff -urNp linux-2.6.32.48/arch/um/include/asm/page.h linux-2.6.32.48/arch/um/include/asm/page.h
29021 ---- linux-2.6.32.48/arch/um/include/asm/page.h 2009-12-02 22:51:21.000000000 -0500
29022 -+++ linux-2.6.32.48/arch/um/include/asm/page.h 2011-11-12 12:46:42.000000000 -0500
29023 +diff -urNp linux-3.0.8/arch/um/include/asm/page.h linux-3.0.8/arch/um/include/asm/page.h
29024 +--- linux-3.0.8/arch/um/include/asm/page.h 2011-07-21 22:17:23.000000000 -0400
29025 ++++ linux-3.0.8/arch/um/include/asm/page.h 2011-08-23 21:47:55.000000000 -0400
29026 @@ -14,6 +14,9 @@
29027 #define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
29028 #define PAGE_MASK (~(PAGE_SIZE-1))
29029 @@ -6166,10 +5057,10 @@ diff -urNp linux-2.6.32.48/arch/um/include/asm/page.h linux-2.6.32.48/arch/um/in
29030 #ifndef __ASSEMBLY__
29031
29032 struct page;
29033 -diff -urNp linux-2.6.32.48/arch/um/kernel/process.c linux-2.6.32.48/arch/um/kernel/process.c
29034 ---- linux-2.6.32.48/arch/um/kernel/process.c 2009-12-02 22:51:21.000000000 -0500
29035 -+++ linux-2.6.32.48/arch/um/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
29036 -@@ -393,22 +393,6 @@ int singlestepping(void * t)
29037 +diff -urNp linux-3.0.8/arch/um/kernel/process.c linux-3.0.8/arch/um/kernel/process.c
29038 +--- linux-3.0.8/arch/um/kernel/process.c 2011-07-21 22:17:23.000000000 -0400
29039 ++++ linux-3.0.8/arch/um/kernel/process.c 2011-08-23 21:47:55.000000000 -0400
29040 +@@ -404,22 +404,6 @@ int singlestepping(void * t)
29041 return 2;
29042 }
29043
29044 @@ -6192,9 +5083,35 @@ diff -urNp linux-2.6.32.48/arch/um/kernel/process.c linux-2.6.32.48/arch/um/kern
29045 unsigned long get_wchan(struct task_struct *p)
29046 {
29047 unsigned long stack_page, sp, ip;
29048 -diff -urNp linux-2.6.32.48/arch/um/sys-i386/syscalls.c linux-2.6.32.48/arch/um/sys-i386/syscalls.c
29049 ---- linux-2.6.32.48/arch/um/sys-i386/syscalls.c 2009-12-02 22:51:21.000000000 -0500
29050 -+++ linux-2.6.32.48/arch/um/sys-i386/syscalls.c 2011-11-12 12:46:42.000000000 -0500
29051 +diff -urNp linux-3.0.8/arch/um/Makefile linux-3.0.8/arch/um/Makefile
29052 +--- linux-3.0.8/arch/um/Makefile 2011-07-21 22:17:23.000000000 -0400
29053 ++++ linux-3.0.8/arch/um/Makefile 2011-10-20 04:46:01.000000000 -0400
29054 +@@ -49,6 +49,10 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINE
29055 + $(patsubst -I%,,$(KBUILD_CFLAGS)))) $(ARCH_INCLUDE) $(MODE_INCLUDE) \
29056 + $(filter -I%,$(CFLAGS)) -D_FILE_OFFSET_BITS=64
29057 +
29058 ++ifdef CONSTIFY_PLUGIN
29059 ++USER_CFLAGS += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
29060 ++endif
29061 ++
29062 + include $(srctree)/$(ARCH_DIR)/Makefile-$(SUBARCH)
29063 +
29064 + #This will adjust *FLAGS accordingly to the platform.
29065 +diff -urNp linux-3.0.8/arch/um/sys-i386/shared/sysdep/system.h linux-3.0.8/arch/um/sys-i386/shared/sysdep/system.h
29066 +--- linux-3.0.8/arch/um/sys-i386/shared/sysdep/system.h 2011-07-21 22:17:23.000000000 -0400
29067 ++++ linux-3.0.8/arch/um/sys-i386/shared/sysdep/system.h 2011-10-20 04:46:01.000000000 -0400
29068 +@@ -17,7 +17,7 @@
29069 + # define AT_VECTOR_SIZE_ARCH 1
29070 + #endif
29071 +
29072 +-extern unsigned long arch_align_stack(unsigned long sp);
29073 ++#define arch_align_stack(x) ((x) & ~0xfUL)
29074 +
29075 + void default_idle(void);
29076 +
29077 +diff -urNp linux-3.0.8/arch/um/sys-i386/syscalls.c linux-3.0.8/arch/um/sys-i386/syscalls.c
29078 +--- linux-3.0.8/arch/um/sys-i386/syscalls.c 2011-07-21 22:17:23.000000000 -0400
29079 ++++ linux-3.0.8/arch/um/sys-i386/syscalls.c 2011-08-23 21:47:55.000000000 -0400
29080 @@ -11,6 +11,21 @@
29081 #include "asm/uaccess.h"
29082 #include "asm/unistd.h"
29083 @@ -6215,11 +5132,23 @@ diff -urNp linux-2.6.32.48/arch/um/sys-i386/syscalls.c linux-2.6.32.48/arch/um/s
29084 +}
29085 +
29086 /*
29087 - * Perform the select(nd, in, out, ex, tv) and mmap() system
29088 - * calls. Linux/i386 didn't use to be able to handle more than
29089 -diff -urNp linux-2.6.32.48/arch/x86/boot/bitops.h linux-2.6.32.48/arch/x86/boot/bitops.h
29090 ---- linux-2.6.32.48/arch/x86/boot/bitops.h 2009-12-02 22:51:21.000000000 -0500
29091 -+++ linux-2.6.32.48/arch/x86/boot/bitops.h 2011-11-12 12:46:42.000000000 -0500
29092 + * The prototype on i386 is:
29093 + *
29094 +diff -urNp linux-3.0.8/arch/um/sys-x86_64/shared/sysdep/system.h linux-3.0.8/arch/um/sys-x86_64/shared/sysdep/system.h
29095 +--- linux-3.0.8/arch/um/sys-x86_64/shared/sysdep/system.h 2011-07-21 22:17:23.000000000 -0400
29096 ++++ linux-3.0.8/arch/um/sys-x86_64/shared/sysdep/system.h 2011-10-20 04:46:01.000000000 -0400
29097 +@@ -17,7 +17,7 @@
29098 + # define AT_VECTOR_SIZE_ARCH 1
29099 + #endif
29100 +
29101 +-extern unsigned long arch_align_stack(unsigned long sp);
29102 ++#define arch_align_stack(x) ((x) & ~0xfUL)
29103 +
29104 + void default_idle(void);
29105 +
29106 +diff -urNp linux-3.0.8/arch/x86/boot/bitops.h linux-3.0.8/arch/x86/boot/bitops.h
29107 +--- linux-3.0.8/arch/x86/boot/bitops.h 2011-07-21 22:17:23.000000000 -0400
29108 ++++ linux-3.0.8/arch/x86/boot/bitops.h 2011-08-23 21:47:55.000000000 -0400
29109 @@ -26,7 +26,7 @@ static inline int variable_test_bit(int
29110 u8 v;
29111 const u32 *p = (const u32 *)addr;
29112 @@ -6238,10 +5167,10 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/bitops.h linux-2.6.32.48/arch/x86/boot/
29113 }
29114
29115 #endif /* BOOT_BITOPS_H */
29116 -diff -urNp linux-2.6.32.48/arch/x86/boot/boot.h linux-2.6.32.48/arch/x86/boot/boot.h
29117 ---- linux-2.6.32.48/arch/x86/boot/boot.h 2009-12-02 22:51:21.000000000 -0500
29118 -+++ linux-2.6.32.48/arch/x86/boot/boot.h 2011-11-12 12:46:42.000000000 -0500
29119 -@@ -82,7 +82,7 @@ static inline void io_delay(void)
29120 +diff -urNp linux-3.0.8/arch/x86/boot/boot.h linux-3.0.8/arch/x86/boot/boot.h
29121 +--- linux-3.0.8/arch/x86/boot/boot.h 2011-07-21 22:17:23.000000000 -0400
29122 ++++ linux-3.0.8/arch/x86/boot/boot.h 2011-08-23 21:47:55.000000000 -0400
29123 +@@ -85,7 +85,7 @@ static inline void io_delay(void)
29124 static inline u16 ds(void)
29125 {
29126 u16 seg;
29127 @@ -6250,7 +5179,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/boot.h linux-2.6.32.48/arch/x86/boot/bo
29128 return seg;
29129 }
29130
29131 -@@ -178,7 +178,7 @@ static inline void wrgs32(u32 v, addr_t
29132 +@@ -181,7 +181,7 @@ static inline void wrgs32(u32 v, addr_t
29133 static inline int memcmp(const void *s1, const void *s2, size_t len)
29134 {
29135 u8 diff;
29136 @@ -6259,9 +5188,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/boot.h linux-2.6.32.48/arch/x86/boot/bo
29137 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
29138 return diff;
29139 }
29140 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_32.S linux-2.6.32.48/arch/x86/boot/compressed/head_32.S
29141 ---- linux-2.6.32.48/arch/x86/boot/compressed/head_32.S 2009-12-02 22:51:21.000000000 -0500
29142 -+++ linux-2.6.32.48/arch/x86/boot/compressed/head_32.S 2011-11-12 12:46:42.000000000 -0500
29143 +diff -urNp linux-3.0.8/arch/x86/boot/compressed/head_32.S linux-3.0.8/arch/x86/boot/compressed/head_32.S
29144 +--- linux-3.0.8/arch/x86/boot/compressed/head_32.S 2011-07-21 22:17:23.000000000 -0400
29145 ++++ linux-3.0.8/arch/x86/boot/compressed/head_32.S 2011-08-23 21:47:55.000000000 -0400
29146 @@ -76,7 +76,7 @@ ENTRY(startup_32)
29147 notl %eax
29148 andl %eax, %ebx
29149 @@ -6271,7 +5200,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_32.S linux-2.6.32.48/ar
29150 #endif
29151
29152 /* Target address to relocate to for decompression */
29153 -@@ -149,7 +149,7 @@ relocated:
29154 +@@ -162,7 +162,7 @@ relocated:
29155 * and where it was actually loaded.
29156 */
29157 movl %ebp, %ebx
29158 @@ -6280,7 +5209,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_32.S linux-2.6.32.48/ar
29159 jz 2f /* Nothing to be done if loaded at compiled addr. */
29160 /*
29161 * Process relocations.
29162 -@@ -157,8 +157,7 @@ relocated:
29163 +@@ -170,8 +170,7 @@ relocated:
29164
29165 1: subl $4, %edi
29166 movl (%edi), %ecx
29167 @@ -6290,9 +5219,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_32.S linux-2.6.32.48/ar
29168 addl %ebx, -__PAGE_OFFSET(%ebx, %ecx)
29169 jmp 1b
29170 2:
29171 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_64.S linux-2.6.32.48/arch/x86/boot/compressed/head_64.S
29172 ---- linux-2.6.32.48/arch/x86/boot/compressed/head_64.S 2009-12-02 22:51:21.000000000 -0500
29173 -+++ linux-2.6.32.48/arch/x86/boot/compressed/head_64.S 2011-11-12 12:46:42.000000000 -0500
29174 +diff -urNp linux-3.0.8/arch/x86/boot/compressed/head_64.S linux-3.0.8/arch/x86/boot/compressed/head_64.S
29175 +--- linux-3.0.8/arch/x86/boot/compressed/head_64.S 2011-07-21 22:17:23.000000000 -0400
29176 ++++ linux-3.0.8/arch/x86/boot/compressed/head_64.S 2011-08-23 21:47:55.000000000 -0400
29177 @@ -91,7 +91,7 @@ ENTRY(startup_32)
29178 notl %eax
29179 andl %eax, %ebx
29180 @@ -6302,16 +5231,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_64.S linux-2.6.32.48/ar
29181 #endif
29182
29183 /* Target address to relocate to for decompression */
29184 -@@ -183,7 +183,7 @@ no_longmode:
29185 - hlt
29186 - jmp 1b
29187 -
29188 --#include "../../kernel/verify_cpu_64.S"
29189 -+#include "../../kernel/verify_cpu.S"
29190 -
29191 - /*
29192 - * Be careful here startup_64 needs to be at a predictable
29193 -@@ -234,7 +234,7 @@ ENTRY(startup_64)
29194 +@@ -233,7 +233,7 @@ ENTRY(startup_64)
29195 notq %rax
29196 andq %rax, %rbp
29197 #else
29198 @@ -6320,10 +5240,10 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/head_64.S linux-2.6.32.48/ar
29199 #endif
29200
29201 /* Target address to relocate to for decompression */
29202 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/Makefile linux-2.6.32.48/arch/x86/boot/compressed/Makefile
29203 ---- linux-2.6.32.48/arch/x86/boot/compressed/Makefile 2009-12-02 22:51:21.000000000 -0500
29204 -+++ linux-2.6.32.48/arch/x86/boot/compressed/Makefile 2011-11-12 12:46:42.000000000 -0500
29205 -@@ -13,6 +13,9 @@ cflags-$(CONFIG_X86_64) := -mcmodel=smal
29206 +diff -urNp linux-3.0.8/arch/x86/boot/compressed/Makefile linux-3.0.8/arch/x86/boot/compressed/Makefile
29207 +--- linux-3.0.8/arch/x86/boot/compressed/Makefile 2011-07-21 22:17:23.000000000 -0400
29208 ++++ linux-3.0.8/arch/x86/boot/compressed/Makefile 2011-08-23 21:47:55.000000000 -0400
29209 +@@ -14,6 +14,9 @@ cflags-$(CONFIG_X86_64) := -mcmodel=smal
29210 KBUILD_CFLAGS += $(cflags-y)
29211 KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
29212 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
29213 @@ -6333,10 +5253,10 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/Makefile linux-2.6.32.48/arc
29214
29215 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
29216 GCOV_PROFILE := n
29217 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/misc.c linux-2.6.32.48/arch/x86/boot/compressed/misc.c
29218 ---- linux-2.6.32.48/arch/x86/boot/compressed/misc.c 2009-12-02 22:51:21.000000000 -0500
29219 -+++ linux-2.6.32.48/arch/x86/boot/compressed/misc.c 2011-11-12 12:46:42.000000000 -0500
29220 -@@ -288,7 +288,7 @@ static void parse_elf(void *output)
29221 +diff -urNp linux-3.0.8/arch/x86/boot/compressed/misc.c linux-3.0.8/arch/x86/boot/compressed/misc.c
29222 +--- linux-3.0.8/arch/x86/boot/compressed/misc.c 2011-07-21 22:17:23.000000000 -0400
29223 ++++ linux-3.0.8/arch/x86/boot/compressed/misc.c 2011-08-23 21:47:55.000000000 -0400
29224 +@@ -310,7 +310,7 @@ static void parse_elf(void *output)
29225 case PT_LOAD:
29226 #ifdef CONFIG_RELOCATABLE
29227 dest = output;
29228 @@ -6345,7 +5265,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/misc.c linux-2.6.32.48/arch/
29229 #else
29230 dest = (void *)(phdr->p_paddr);
29231 #endif
29232 -@@ -335,7 +335,7 @@ asmlinkage void decompress_kernel(void *
29233 +@@ -363,7 +363,7 @@ asmlinkage void decompress_kernel(void *
29234 error("Destination address too large");
29235 #endif
29236 #ifndef CONFIG_RELOCATABLE
29237 @@ -6354,26 +5274,14 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/misc.c linux-2.6.32.48/arch/
29238 error("Wrong destination address");
29239 #endif
29240
29241 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c
29242 ---- linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c 2009-12-02 22:51:21.000000000 -0500
29243 -+++ linux-2.6.32.48/arch/x86/boot/compressed/mkpiggy.c 2011-11-12 12:46:42.000000000 -0500
29244 -@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
29245 +diff -urNp linux-3.0.8/arch/x86/boot/compressed/relocs.c linux-3.0.8/arch/x86/boot/compressed/relocs.c
29246 +--- linux-3.0.8/arch/x86/boot/compressed/relocs.c 2011-07-21 22:17:23.000000000 -0400
29247 ++++ linux-3.0.8/arch/x86/boot/compressed/relocs.c 2011-08-23 21:47:55.000000000 -0400
29248 +@@ -13,8 +13,11 @@
29249
29250 - offs = (olen > ilen) ? olen - ilen : 0;
29251 - offs += olen >> 12; /* Add 8 bytes for each 32K block */
29252 -- offs += 32*1024 + 18; /* Add 32K + 18 bytes slack */
29253 -+ offs += 64*1024; /* Add 64K bytes slack */
29254 - offs = (offs+4095) & ~4095; /* Round to a 4K boundary */
29255 + static void die(char *fmt, ...);
29256
29257 - printf(".section \".rodata.compressed\",\"a\",@progbits\n");
29258 -diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arch/x86/boot/compressed/relocs.c
29259 ---- linux-2.6.32.48/arch/x86/boot/compressed/relocs.c 2009-12-02 22:51:21.000000000 -0500
29260 -+++ linux-2.6.32.48/arch/x86/boot/compressed/relocs.c 2011-11-12 12:46:42.000000000 -0500
29261 -@@ -10,8 +10,11 @@
29262 - #define USE_BSD
29263 - #include <endian.h>
29264 -
29265 -+#include "../../../../include/linux/autoconf.h"
29266 ++#include "../../../../include/generated/autoconf.h"
29267 +
29268 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
29269 static Elf32_Ehdr ehdr;
29270 @@ -6381,16 +5289,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29271 static unsigned long reloc_count, reloc_idx;
29272 static unsigned long *relocs;
29273
29274 -@@ -37,7 +40,7 @@ static const char* safe_abs_relocs[] = {
29275 -
29276 - static int is_safe_abs_reloc(const char* sym_name)
29277 - {
29278 -- int i;
29279 -+ unsigned int i;
29280 -
29281 - for (i = 0; i < ARRAY_SIZE(safe_abs_relocs); i++) {
29282 - if (!strcmp(sym_name, safe_abs_relocs[i]))
29283 -@@ -245,9 +248,39 @@ static void read_ehdr(FILE *fp)
29284 +@@ -270,9 +273,39 @@ static void read_ehdr(FILE *fp)
29285 }
29286 }
29287
29288 @@ -6431,7 +5330,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29289 Elf32_Shdr shdr;
29290
29291 secs = calloc(ehdr.e_shnum, sizeof(struct section));
29292 -@@ -282,7 +315,7 @@ static void read_shdrs(FILE *fp)
29293 +@@ -307,7 +340,7 @@ static void read_shdrs(FILE *fp)
29294
29295 static void read_strtabs(FILE *fp)
29296 {
29297 @@ -6440,7 +5339,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29298 for (i = 0; i < ehdr.e_shnum; i++) {
29299 struct section *sec = &secs[i];
29300 if (sec->shdr.sh_type != SHT_STRTAB) {
29301 -@@ -307,7 +340,7 @@ static void read_strtabs(FILE *fp)
29302 +@@ -332,7 +365,7 @@ static void read_strtabs(FILE *fp)
29303
29304 static void read_symtabs(FILE *fp)
29305 {
29306 @@ -6449,7 +5348,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29307 for (i = 0; i < ehdr.e_shnum; i++) {
29308 struct section *sec = &secs[i];
29309 if (sec->shdr.sh_type != SHT_SYMTAB) {
29310 -@@ -340,7 +373,9 @@ static void read_symtabs(FILE *fp)
29311 +@@ -365,7 +398,9 @@ static void read_symtabs(FILE *fp)
29312
29313 static void read_relocs(FILE *fp)
29314 {
29315 @@ -6460,7 +5359,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29316 for (i = 0; i < ehdr.e_shnum; i++) {
29317 struct section *sec = &secs[i];
29318 if (sec->shdr.sh_type != SHT_REL) {
29319 -@@ -360,9 +395,18 @@ static void read_relocs(FILE *fp)
29320 +@@ -385,9 +420,18 @@ static void read_relocs(FILE *fp)
29321 die("Cannot read symbol table: %s\n",
29322 strerror(errno));
29323 }
29324 @@ -6480,7 +5379,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29325 rel->r_info = elf32_to_cpu(rel->r_info);
29326 }
29327 }
29328 -@@ -371,14 +415,14 @@ static void read_relocs(FILE *fp)
29329 +@@ -396,14 +440,14 @@ static void read_relocs(FILE *fp)
29330
29331 static void print_absolute_symbols(void)
29332 {
29333 @@ -6497,7 +5396,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29334
29335 if (sec->shdr.sh_type != SHT_SYMTAB) {
29336 continue;
29337 -@@ -406,14 +450,14 @@ static void print_absolute_symbols(void)
29338 +@@ -431,14 +475,14 @@ static void print_absolute_symbols(void)
29339
29340 static void print_absolute_relocs(void)
29341 {
29342 @@ -6514,7 +5413,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29343 if (sec->shdr.sh_type != SHT_REL) {
29344 continue;
29345 }
29346 -@@ -474,13 +518,13 @@ static void print_absolute_relocs(void)
29347 +@@ -499,13 +543,13 @@ static void print_absolute_relocs(void)
29348
29349 static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym))
29350 {
29351 @@ -6530,12 +5429,12 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29352 struct section *sec = &secs[i];
29353
29354 if (sec->shdr.sh_type != SHT_REL) {
29355 -@@ -504,6 +548,21 @@ static void walk_relocs(void (*visit)(El
29356 - if (sym->st_shndx == SHN_ABS) {
29357 +@@ -530,6 +574,22 @@ static void walk_relocs(void (*visit)(El
29358 + !is_rel_reloc(sym_name(sym_strtab, sym))) {
29359 continue;
29360 }
29361 + /* Don't relocate actual per-cpu variables, they are absolute indices, not addresses */
29362 -+ if (!strcmp(sec_name(sym->st_shndx), ".data.percpu") && strcmp(sym_name(sym_strtab, sym), "__per_cpu_load"))
29363 ++ if (!strcmp(sec_name(sym->st_shndx), ".data..percpu") && strcmp(sym_name(sym_strtab, sym), "__per_cpu_load"))
29364 + continue;
29365 +
29366 +#if defined(CONFIG_PAX_KERNEXEC) && defined(CONFIG_X86_32)
29367 @@ -6549,10 +5448,11 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29368 + if (!strcmp(sec_name(sym->st_shndx), ".text") && strcmp(sym_name(sym_strtab, sym), "__LOAD_PHYSICAL_ADDR"))
29369 + continue;
29370 +#endif
29371 - if (r_type == R_386_NONE || r_type == R_386_PC32) {
29372 - /*
29373 - * NONE can be ignored and and PC relative
29374 -@@ -541,7 +600,7 @@ static int cmp_relocs(const void *va, co
29375 ++
29376 + switch (r_type) {
29377 + case R_386_NONE:
29378 + case R_386_PC32:
29379 +@@ -571,7 +631,7 @@ static int cmp_relocs(const void *va, co
29380
29381 static void emit_relocs(int as_text)
29382 {
29383 @@ -6561,7 +5461,7 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29384 /* Count how many relocations I have and allocate space for them. */
29385 reloc_count = 0;
29386 walk_relocs(count_reloc);
29387 -@@ -634,6 +693,7 @@ int main(int argc, char **argv)
29388 +@@ -665,6 +725,7 @@ int main(int argc, char **argv)
29389 fname, strerror(errno));
29390 }
29391 read_ehdr(fp);
29392 @@ -6569,9 +5469,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/compressed/relocs.c linux-2.6.32.48/arc
29393 read_shdrs(fp);
29394 read_strtabs(fp);
29395 read_symtabs(fp);
29396 -diff -urNp linux-2.6.32.48/arch/x86/boot/cpucheck.c linux-2.6.32.48/arch/x86/boot/cpucheck.c
29397 ---- linux-2.6.32.48/arch/x86/boot/cpucheck.c 2009-12-02 22:51:21.000000000 -0500
29398 -+++ linux-2.6.32.48/arch/x86/boot/cpucheck.c 2011-11-12 12:46:42.000000000 -0500
29399 +diff -urNp linux-3.0.8/arch/x86/boot/cpucheck.c linux-3.0.8/arch/x86/boot/cpucheck.c
29400 +--- linux-3.0.8/arch/x86/boot/cpucheck.c 2011-07-21 22:17:23.000000000 -0400
29401 ++++ linux-3.0.8/arch/x86/boot/cpucheck.c 2011-08-23 21:47:55.000000000 -0400
29402 @@ -74,7 +74,7 @@ static int has_fpu(void)
29403 u16 fcw = -1, fsw = -1;
29404 u32 cr0;
29405 @@ -6667,9 +5567,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/cpucheck.c linux-2.6.32.48/arch/x86/boo
29406
29407 err = check_flags();
29408 }
29409 -diff -urNp linux-2.6.32.48/arch/x86/boot/header.S linux-2.6.32.48/arch/x86/boot/header.S
29410 ---- linux-2.6.32.48/arch/x86/boot/header.S 2009-12-02 22:51:21.000000000 -0500
29411 -+++ linux-2.6.32.48/arch/x86/boot/header.S 2011-11-12 12:46:42.000000000 -0500
29412 +diff -urNp linux-3.0.8/arch/x86/boot/header.S linux-3.0.8/arch/x86/boot/header.S
29413 +--- linux-3.0.8/arch/x86/boot/header.S 2011-07-21 22:17:23.000000000 -0400
29414 ++++ linux-3.0.8/arch/x86/boot/header.S 2011-08-23 21:47:55.000000000 -0400
29415 @@ -224,7 +224,7 @@ setup_data: .quad 0 # 64-bit physical
29416 # single linked list of
29417 # struct setup_data
29418 @@ -6679,9 +5579,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/header.S linux-2.6.32.48/arch/x86/boot/
29419
29420 #define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset)
29421 #define VO_INIT_SIZE (VO__end - VO__text)
29422 -diff -urNp linux-2.6.32.48/arch/x86/boot/Makefile linux-2.6.32.48/arch/x86/boot/Makefile
29423 ---- linux-2.6.32.48/arch/x86/boot/Makefile 2009-12-02 22:51:21.000000000 -0500
29424 -+++ linux-2.6.32.48/arch/x86/boot/Makefile 2011-11-12 12:46:42.000000000 -0500
29425 +diff -urNp linux-3.0.8/arch/x86/boot/Makefile linux-3.0.8/arch/x86/boot/Makefile
29426 +--- linux-3.0.8/arch/x86/boot/Makefile 2011-07-21 22:17:23.000000000 -0400
29427 ++++ linux-3.0.8/arch/x86/boot/Makefile 2011-08-23 21:47:55.000000000 -0400
29428 @@ -69,6 +69,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
29429 $(call cc-option, -fno-stack-protector) \
29430 $(call cc-option, -mpreferred-stack-boundary=2)
29431 @@ -6692,9 +5592,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/Makefile linux-2.6.32.48/arch/x86/boot/
29432 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
29433 GCOV_PROFILE := n
29434
29435 -diff -urNp linux-2.6.32.48/arch/x86/boot/memory.c linux-2.6.32.48/arch/x86/boot/memory.c
29436 ---- linux-2.6.32.48/arch/x86/boot/memory.c 2009-12-02 22:51:21.000000000 -0500
29437 -+++ linux-2.6.32.48/arch/x86/boot/memory.c 2011-11-12 12:46:42.000000000 -0500
29438 +diff -urNp linux-3.0.8/arch/x86/boot/memory.c linux-3.0.8/arch/x86/boot/memory.c
29439 +--- linux-3.0.8/arch/x86/boot/memory.c 2011-07-21 22:17:23.000000000 -0400
29440 ++++ linux-3.0.8/arch/x86/boot/memory.c 2011-08-23 21:47:55.000000000 -0400
29441 @@ -19,7 +19,7 @@
29442
29443 static int detect_memory_e820(void)
29444 @@ -6704,10 +5604,10 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/memory.c linux-2.6.32.48/arch/x86/boot/
29445 struct biosregs ireg, oreg;
29446 struct e820entry *desc = boot_params.e820_map;
29447 static struct e820entry buf; /* static so it is zeroed */
29448 -diff -urNp linux-2.6.32.48/arch/x86/boot/video.c linux-2.6.32.48/arch/x86/boot/video.c
29449 ---- linux-2.6.32.48/arch/x86/boot/video.c 2009-12-02 22:51:21.000000000 -0500
29450 -+++ linux-2.6.32.48/arch/x86/boot/video.c 2011-11-12 12:46:42.000000000 -0500
29451 -@@ -90,7 +90,7 @@ static void store_mode_params(void)
29452 +diff -urNp linux-3.0.8/arch/x86/boot/video.c linux-3.0.8/arch/x86/boot/video.c
29453 +--- linux-3.0.8/arch/x86/boot/video.c 2011-07-21 22:17:23.000000000 -0400
29454 ++++ linux-3.0.8/arch/x86/boot/video.c 2011-08-23 21:47:55.000000000 -0400
29455 +@@ -96,7 +96,7 @@ static void store_mode_params(void)
29456 static unsigned int get_entry(void)
29457 {
29458 char entry_buf[4];
29459 @@ -6716,9 +5616,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/video.c linux-2.6.32.48/arch/x86/boot/v
29460 int key;
29461 unsigned int v;
29462
29463 -diff -urNp linux-2.6.32.48/arch/x86/boot/video-vesa.c linux-2.6.32.48/arch/x86/boot/video-vesa.c
29464 ---- linux-2.6.32.48/arch/x86/boot/video-vesa.c 2009-12-02 22:51:21.000000000 -0500
29465 -+++ linux-2.6.32.48/arch/x86/boot/video-vesa.c 2011-11-12 12:46:42.000000000 -0500
29466 +diff -urNp linux-3.0.8/arch/x86/boot/video-vesa.c linux-3.0.8/arch/x86/boot/video-vesa.c
29467 +--- linux-3.0.8/arch/x86/boot/video-vesa.c 2011-07-21 22:17:23.000000000 -0400
29468 ++++ linux-3.0.8/arch/x86/boot/video-vesa.c 2011-08-23 21:47:55.000000000 -0400
29469 @@ -200,6 +200,7 @@ static void vesa_store_pm_info(void)
29470
29471 boot_params.screen_info.vesapm_seg = oreg.es;
29472 @@ -6727,9 +5627,9 @@ diff -urNp linux-2.6.32.48/arch/x86/boot/video-vesa.c linux-2.6.32.48/arch/x86/b
29473 }
29474
29475 /*
29476 -diff -urNp linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S
29477 ---- linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S 2009-12-02 22:51:21.000000000 -0500
29478 -+++ linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S 2011-11-12 12:46:42.000000000 -0500
29479 +diff -urNp linux-3.0.8/arch/x86/crypto/aes-x86_64-asm_64.S linux-3.0.8/arch/x86/crypto/aes-x86_64-asm_64.S
29480 +--- linux-3.0.8/arch/x86/crypto/aes-x86_64-asm_64.S 2011-07-21 22:17:23.000000000 -0400
29481 ++++ linux-3.0.8/arch/x86/crypto/aes-x86_64-asm_64.S 2011-10-06 04:17:55.000000000 -0400
29482 @@ -8,6 +8,8 @@
29483 * including this sentence is retained in full.
29484 */
29485 @@ -6748,9 +5648,9 @@ diff -urNp linux-2.6.32.48/arch/x86/crypto/aes-x86_64-asm_64.S linux-2.6.32.48/a
29486 #define epilogue(r1,r2,r3,r4,r5,r6,r7,r8,r9) \
29487 movq r1,r2; \
29488 movq r3,r4; \
29489 -diff -urNp linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S
29490 ---- linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S 2009-12-02 22:51:21.000000000 -0500
29491 -+++ linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-11-12 12:46:42.000000000 -0500
29492 +diff -urNp linux-3.0.8/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-3.0.8/arch/x86/crypto/salsa20-x86_64-asm_64.S
29493 +--- linux-3.0.8/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-07-21 22:17:23.000000000 -0400
29494 ++++ linux-3.0.8/arch/x86/crypto/salsa20-x86_64-asm_64.S 2011-10-06 04:17:55.000000000 -0400
29495 @@ -1,3 +1,5 @@
29496 +#include <asm/alternative-asm.h>
29497 +
29498 @@ -6779,9 +5679,9 @@ diff -urNp linux-2.6.32.48/arch/x86/crypto/salsa20-x86_64-asm_64.S linux-2.6.32.
29499 mov %rsi,%rdx
29500 + pax_force_retaddr
29501 ret
29502 -diff -urNp linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S
29503 ---- linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S 2009-12-02 22:51:21.000000000 -0500
29504 -+++ linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-11-12 12:46:42.000000000 -0500
29505 +diff -urNp linux-3.0.8/arch/x86/crypto/twofish-x86_64-asm_64.S linux-3.0.8/arch/x86/crypto/twofish-x86_64-asm_64.S
29506 +--- linux-3.0.8/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-07-21 22:17:23.000000000 -0400
29507 ++++ linux-3.0.8/arch/x86/crypto/twofish-x86_64-asm_64.S 2011-10-06 04:17:55.000000000 -0400
29508 @@ -21,6 +21,7 @@
29509 .text
29510
29511 @@ -6804,10 +5704,10 @@ diff -urNp linux-2.6.32.48/arch/x86/crypto/twofish-x86_64-asm_64.S linux-2.6.32.
29512 movq $1,%rax
29513 + pax_force_retaddr
29514 ret
29515 -diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_aout.c linux-2.6.32.48/arch/x86/ia32/ia32_aout.c
29516 ---- linux-2.6.32.48/arch/x86/ia32/ia32_aout.c 2011-11-12 12:44:28.000000000 -0500
29517 -+++ linux-2.6.32.48/arch/x86/ia32/ia32_aout.c 2011-11-12 12:46:42.000000000 -0500
29518 -@@ -169,6 +169,8 @@ static int aout_core_dump(long signr, st
29519 +diff -urNp linux-3.0.8/arch/x86/ia32/ia32_aout.c linux-3.0.8/arch/x86/ia32/ia32_aout.c
29520 +--- linux-3.0.8/arch/x86/ia32/ia32_aout.c 2011-07-21 22:17:23.000000000 -0400
29521 ++++ linux-3.0.8/arch/x86/ia32/ia32_aout.c 2011-08-23 21:48:14.000000000 -0400
29522 +@@ -162,6 +162,8 @@ static int aout_core_dump(long signr, st
29523 unsigned long dump_start, dump_size;
29524 struct user32 dump;
29525
29526 @@ -6816,31 +5716,20 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_aout.c linux-2.6.32.48/arch/x86/ia
29527 fs = get_fs();
29528 set_fs(KERNEL_DS);
29529 has_dumped = 1;
29530 -@@ -218,12 +220,6 @@ static int aout_core_dump(long signr, st
29531 - dump_size = dump.u_ssize << PAGE_SHIFT;
29532 - DUMP_WRITE(dump_start, dump_size);
29533 - }
29534 -- /*
29535 -- * Finally dump the task struct. Not be used by gdb, but
29536 -- * could be useful
29537 -- */
29538 -- set_fs(KERNEL_DS);
29539 -- DUMP_WRITE(current, sizeof(*current));
29540 - end_coredump:
29541 - set_fs(fs);
29542 - return has_dumped;
29543 -diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia32/ia32entry.S
29544 ---- linux-2.6.32.48/arch/x86/ia32/ia32entry.S 2011-11-12 12:44:28.000000000 -0500
29545 -+++ linux-2.6.32.48/arch/x86/ia32/ia32entry.S 2011-11-12 12:46:42.000000000 -0500
29546 -@@ -13,6 +13,7 @@
29547 +diff -urNp linux-3.0.8/arch/x86/ia32/ia32entry.S linux-3.0.8/arch/x86/ia32/ia32entry.S
29548 +--- linux-3.0.8/arch/x86/ia32/ia32entry.S 2011-07-21 22:17:23.000000000 -0400
29549 ++++ linux-3.0.8/arch/x86/ia32/ia32entry.S 2011-10-11 10:44:33.000000000 -0400
29550 +@@ -13,7 +13,9 @@
29551 #include <asm/thread_info.h>
29552 #include <asm/segment.h>
29553 #include <asm/irqflags.h>
29554 +#include <asm/pgtable.h>
29555 #include <linux/linkage.h>
29556 ++#include <asm/alternative-asm.h>
29557
29558 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
29559 -@@ -93,6 +94,29 @@ ENTRY(native_irq_enable_sysexit)
29560 + #include <linux/elf-em.h>
29561 +@@ -95,6 +97,29 @@ ENTRY(native_irq_enable_sysexit)
29562 ENDPROC(native_irq_enable_sysexit)
29563 #endif
29564
29565 @@ -6861,16 +5750,16 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29566 +#endif
29567 + .endm
29568 +
29569 -+.macro pax_erase_kstack
29570 ++ .macro pax_erase_kstack
29571 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
29572 + call pax_erase_kstack
29573 +#endif
29574 -+.endm
29575 ++ .endm
29576 +
29577 /*
29578 * 32bit SYSENTER instruction entry.
29579 *
29580 -@@ -119,7 +143,7 @@ ENTRY(ia32_sysenter_target)
29581 +@@ -121,7 +146,7 @@ ENTRY(ia32_sysenter_target)
29582 CFI_REGISTER rsp,rbp
29583 SWAPGS_UNSAFE_STACK
29584 movq PER_CPU_VAR(kernel_stack), %rsp
29585 @@ -6879,17 +5768,17 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29586 /*
29587 * No need to follow this irqs on/off section: the syscall
29588 * disabled irqs, here we enable it straight after entry:
29589 -@@ -135,7 +159,8 @@ ENTRY(ia32_sysenter_target)
29590 - pushfq
29591 - CFI_ADJUST_CFA_OFFSET 8
29592 +@@ -134,7 +159,8 @@ ENTRY(ia32_sysenter_target)
29593 + CFI_REL_OFFSET rsp,0
29594 + pushfq_cfi
29595 /*CFI_REL_OFFSET rflags,0*/
29596 - movl 8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d
29597 + GET_THREAD_INFO(%r10)
29598 + movl TI_sysenter_return(%r10), %r10d
29599 CFI_REGISTER rip,r10
29600 - pushq $__USER32_CS
29601 - CFI_ADJUST_CFA_OFFSET 8
29602 -@@ -150,6 +175,12 @@ ENTRY(ia32_sysenter_target)
29603 + pushq_cfi $__USER32_CS
29604 + /*CFI_REL_OFFSET cs,0*/
29605 +@@ -146,6 +172,12 @@ ENTRY(ia32_sysenter_target)
29606 SAVE_ARGS 0,0,1
29607 /* no need to do an access_ok check here because rbp has been
29608 32bit zero extended */
29609 @@ -6902,7 +5791,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29610 1: movl (%rbp),%ebp
29611 .section __ex_table,"a"
29612 .quad 1b,ia32_badarg
29613 -@@ -172,6 +203,8 @@ sysenter_dispatch:
29614 +@@ -168,6 +200,8 @@ sysenter_dispatch:
29615 testl $_TIF_ALLWORK_MASK,TI_flags(%r10)
29616 jnz sysexit_audit
29617 sysexit_from_sys_call:
29618 @@ -6911,7 +5800,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29619 andl $~TS_COMPAT,TI_status(%r10)
29620 /* clear IF, that popfq doesn't enable interrupts early */
29621 andl $~0x200,EFLAGS-R11(%rsp)
29622 -@@ -200,6 +233,9 @@ sysexit_from_sys_call:
29623 +@@ -194,6 +228,9 @@ sysexit_from_sys_call:
29624 movl %eax,%esi /* 2nd arg: syscall number */
29625 movl $AUDIT_ARCH_I386,%edi /* 1st arg: audit arch */
29626 call audit_syscall_entry
29627 @@ -6921,7 +5810,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29628 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall number */
29629 cmpq $(IA32_NR_syscalls-1),%rax
29630 ja ia32_badsys
29631 -@@ -252,6 +288,9 @@ sysenter_tracesys:
29632 +@@ -246,6 +283,9 @@ sysenter_tracesys:
29633 movq $-ENOSYS,RAX(%rsp)/* ptrace can change this for a bad syscall */
29634 movq %rsp,%rdi /* &pt_regs -> arg1 */
29635 call syscall_trace_enter
29636 @@ -6931,7 +5820,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29637 LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */
29638 RESTORE_REST
29639 cmpq $(IA32_NR_syscalls-1),%rax
29640 -@@ -283,19 +322,24 @@ ENDPROC(ia32_sysenter_target)
29641 +@@ -277,19 +317,24 @@ ENDPROC(ia32_sysenter_target)
29642 ENTRY(ia32_cstar_target)
29643 CFI_STARTPROC32 simple
29644 CFI_SIGNAL_FRAME
29645 @@ -6958,7 +5847,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29646 movl %eax,%eax /* zero extension */
29647 movq %rax,ORIG_RAX-ARGOFFSET(%rsp)
29648 movq %rcx,RIP-ARGOFFSET(%rsp)
29649 -@@ -311,6 +355,12 @@ ENTRY(ia32_cstar_target)
29650 +@@ -305,6 +350,12 @@ ENTRY(ia32_cstar_target)
29651 /* no need to do an access_ok check here because r8 has been
29652 32bit zero extended */
29653 /* hardware stack frame is complete now */
29654 @@ -6971,7 +5860,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29655 1: movl (%r8),%r9d
29656 .section __ex_table,"a"
29657 .quad 1b,ia32_badarg
29658 -@@ -333,6 +383,8 @@ cstar_dispatch:
29659 +@@ -327,6 +378,8 @@ cstar_dispatch:
29660 testl $_TIF_ALLWORK_MASK,TI_flags(%r10)
29661 jnz sysretl_audit
29662 sysretl_from_sys_call:
29663 @@ -6980,7 +5869,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29664 andl $~TS_COMPAT,TI_status(%r10)
29665 RESTORE_ARGS 1,-ARG_SKIP,1,1,1
29666 movl RIP-ARGOFFSET(%rsp),%ecx
29667 -@@ -370,6 +422,9 @@ cstar_tracesys:
29668 +@@ -364,6 +417,9 @@ cstar_tracesys:
29669 movq $-ENOSYS,RAX(%rsp) /* ptrace can change this for a bad syscall */
29670 movq %rsp,%rdi /* &pt_regs -> arg1 */
29671 call syscall_trace_enter
29672 @@ -6990,7 +5879,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29673 LOAD_ARGS32 ARGOFFSET, 1 /* reload args from stack in case ptrace changed it */
29674 RESTORE_REST
29675 xchgl %ebp,%r9d
29676 -@@ -415,6 +470,7 @@ ENTRY(ia32_syscall)
29677 +@@ -409,6 +465,7 @@ ENTRY(ia32_syscall)
29678 CFI_REL_OFFSET rip,RIP-RIP
29679 PARAVIRT_ADJUST_EXCEPTION_FRAME
29680 SWAPGS
29681 @@ -6998,7 +5887,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29682 /*
29683 * No need to follow this irqs on/off section: the syscall
29684 * disabled irqs and here we enable it straight after entry:
29685 -@@ -448,6 +504,9 @@ ia32_tracesys:
29686 +@@ -441,6 +498,9 @@ ia32_tracesys:
29687 movq $-ENOSYS,RAX(%rsp) /* ptrace can change this for a bad syscall */
29688 movq %rsp,%rdi /* &pt_regs -> arg1 */
29689 call syscall_trace_enter
29690 @@ -7008,9 +5897,17 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32entry.S linux-2.6.32.48/arch/x86/ia
29691 LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */
29692 RESTORE_REST
29693 cmpq $(IA32_NR_syscalls-1),%rax
29694 -diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_signal.c linux-2.6.32.48/arch/x86/ia32/ia32_signal.c
29695 ---- linux-2.6.32.48/arch/x86/ia32/ia32_signal.c 2009-12-02 22:51:21.000000000 -0500
29696 -+++ linux-2.6.32.48/arch/x86/ia32/ia32_signal.c 2011-11-12 12:46:42.000000000 -0500
29697 +@@ -455,6 +515,7 @@ ia32_badsys:
29698 +
29699 + quiet_ni_syscall:
29700 + movq $-ENOSYS,%rax
29701 ++ pax_force_retaddr
29702 + ret
29703 + CFI_ENDPROC
29704 +
29705 +diff -urNp linux-3.0.8/arch/x86/ia32/ia32_signal.c linux-3.0.8/arch/x86/ia32/ia32_signal.c
29706 +--- linux-3.0.8/arch/x86/ia32/ia32_signal.c 2011-07-21 22:17:23.000000000 -0400
29707 ++++ linux-3.0.8/arch/x86/ia32/ia32_signal.c 2011-10-06 04:17:55.000000000 -0400
29708 @@ -167,7 +167,7 @@ asmlinkage long sys32_sigaltstack(const
29709 }
29710 seg = get_fs();
29711 @@ -7087,9 +5984,9 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/ia32_signal.c linux-2.6.32.48/arch/x86/
29712 } put_user_catch(err);
29713
29714 if (err)
29715 -diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia32/sys_ia32.c
29716 ---- linux-2.6.32.48/arch/x86/ia32/sys_ia32.c 2011-11-12 12:44:28.000000000 -0500
29717 -+++ linux-2.6.32.48/arch/x86/ia32/sys_ia32.c 2011-11-12 12:46:42.000000000 -0500
29718 +diff -urNp linux-3.0.8/arch/x86/ia32/sys_ia32.c linux-3.0.8/arch/x86/ia32/sys_ia32.c
29719 +--- linux-3.0.8/arch/x86/ia32/sys_ia32.c 2011-07-21 22:17:23.000000000 -0400
29720 ++++ linux-3.0.8/arch/x86/ia32/sys_ia32.c 2011-10-06 04:17:55.000000000 -0400
29721 @@ -69,8 +69,8 @@ asmlinkage long sys32_ftruncate64(unsign
29722 */
29723 static int cp_stat64(struct stat64 __user *ubuf, struct kstat *stat)
29724 @@ -7112,7 +6009,16 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia3
29725 sigsetsize);
29726 set_fs(old_fs);
29727 if (ret)
29728 -@@ -371,7 +371,7 @@ asmlinkage long sys32_sched_rr_get_inter
29729 +@@ -332,7 +332,7 @@ asmlinkage long sys32_alarm(unsigned int
29730 + return alarm_setitimer(seconds);
29731 + }
29732 +
29733 +-asmlinkage long sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr,
29734 ++asmlinkage long sys32_waitpid(compat_pid_t pid, unsigned int __user *stat_addr,
29735 + int options)
29736 + {
29737 + return compat_sys_wait4(pid, stat_addr, options, NULL);
29738 +@@ -353,7 +353,7 @@ asmlinkage long sys32_sched_rr_get_inter
29739 mm_segment_t old_fs = get_fs();
29740
29741 set_fs(KERNEL_DS);
29742 @@ -7121,7 +6027,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia3
29743 set_fs(old_fs);
29744 if (put_compat_timespec(&t, interval))
29745 return -EFAULT;
29746 -@@ -387,7 +387,7 @@ asmlinkage long sys32_rt_sigpending(comp
29747 +@@ -369,7 +369,7 @@ asmlinkage long sys32_rt_sigpending(comp
29748 mm_segment_t old_fs = get_fs();
29749
29750 set_fs(KERNEL_DS);
29751 @@ -7130,7 +6036,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia3
29752 set_fs(old_fs);
29753 if (!ret) {
29754 switch (_NSIG_WORDS) {
29755 -@@ -412,7 +412,7 @@ asmlinkage long sys32_rt_sigqueueinfo(in
29756 +@@ -394,7 +394,7 @@ asmlinkage long sys32_rt_sigqueueinfo(in
29757 if (copy_siginfo_from_user32(&info, uinfo))
29758 return -EFAULT;
29759 set_fs(KERNEL_DS);
29760 @@ -7139,7 +6045,7 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia3
29761 set_fs(old_fs);
29762 return ret;
29763 }
29764 -@@ -513,7 +513,7 @@ asmlinkage long sys32_sendfile(int out_f
29765 +@@ -439,7 +439,7 @@ asmlinkage long sys32_sendfile(int out_f
29766 return -EFAULT;
29767
29768 set_fs(KERNEL_DS);
29769 @@ -7148,10 +6054,10 @@ diff -urNp linux-2.6.32.48/arch/x86/ia32/sys_ia32.c linux-2.6.32.48/arch/x86/ia3
29770 count);
29771 set_fs(old_fs);
29772
29773 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h
29774 ---- linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h 2009-12-02 22:51:21.000000000 -0500
29775 -+++ linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h 2011-11-12 12:46:42.000000000 -0500
29776 -@@ -19,4 +19,18 @@
29777 +diff -urNp linux-3.0.8/arch/x86/include/asm/alternative-asm.h linux-3.0.8/arch/x86/include/asm/alternative-asm.h
29778 +--- linux-3.0.8/arch/x86/include/asm/alternative-asm.h 2011-07-21 22:17:23.000000000 -0400
29779 ++++ linux-3.0.8/arch/x86/include/asm/alternative-asm.h 2011-10-07 19:07:23.000000000 -0400
29780 +@@ -15,6 +15,20 @@
29781 .endm
29782 #endif
29783
29784 @@ -7169,23 +6075,25 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/alternative-asm.h linux-2.6.32.4
29785 + .endm
29786 +#endif
29787 +
29788 - #endif /* __ASSEMBLY__ */
29789 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/alternative.h linux-2.6.32.48/arch/x86/include/asm/alternative.h
29790 ---- linux-2.6.32.48/arch/x86/include/asm/alternative.h 2009-12-02 22:51:21.000000000 -0500
29791 -+++ linux-2.6.32.48/arch/x86/include/asm/alternative.h 2011-11-12 12:46:42.000000000 -0500
29792 -@@ -85,7 +85,7 @@ static inline void alternatives_smp_swit
29793 - " .byte 662b-661b\n" /* sourcelen */ \
29794 - " .byte 664f-663f\n" /* replacementlen */ \
29795 + .macro altinstruction_entry orig alt feature orig_len alt_len
29796 + .align 8
29797 + .quad \orig
29798 +diff -urNp linux-3.0.8/arch/x86/include/asm/alternative.h linux-3.0.8/arch/x86/include/asm/alternative.h
29799 +--- linux-3.0.8/arch/x86/include/asm/alternative.h 2011-07-21 22:17:23.000000000 -0400
29800 ++++ linux-3.0.8/arch/x86/include/asm/alternative.h 2011-08-23 21:47:55.000000000 -0400
29801 +@@ -93,7 +93,7 @@ static inline int alternatives_text_rese
29802 + ".section .discard,\"aw\",@progbits\n" \
29803 + " .byte 0xff + (664f-663f) - (662b-661b)\n" /* rlen <= slen */ \
29804 ".previous\n" \
29805 - ".section .altinstr_replacement, \"ax\"\n" \
29806 + ".section .altinstr_replacement, \"a\"\n" \
29807 "663:\n\t" newinstr "\n664:\n" /* replacement */ \
29808 ".previous"
29809
29810 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/apic.h linux-2.6.32.48/arch/x86/include/asm/apic.h
29811 ---- linux-2.6.32.48/arch/x86/include/asm/apic.h 2009-12-02 22:51:21.000000000 -0500
29812 -+++ linux-2.6.32.48/arch/x86/include/asm/apic.h 2011-11-12 12:46:42.000000000 -0500
29813 -@@ -46,7 +46,7 @@ static inline void generic_apic_probe(vo
29814 +diff -urNp linux-3.0.8/arch/x86/include/asm/apic.h linux-3.0.8/arch/x86/include/asm/apic.h
29815 +--- linux-3.0.8/arch/x86/include/asm/apic.h 2011-07-21 22:17:23.000000000 -0400
29816 ++++ linux-3.0.8/arch/x86/include/asm/apic.h 2011-08-23 21:48:14.000000000 -0400
29817 +@@ -45,7 +45,7 @@ static inline void generic_apic_probe(vo
29818
29819 #ifdef CONFIG_X86_LOCAL_APIC
29820
29821 @@ -7194,9 +6102,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/apic.h linux-2.6.32.48/arch/x86/
29822 extern int local_apic_timer_c2_ok;
29823
29824 extern int disable_apic;
29825 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/apm.h linux-2.6.32.48/arch/x86/include/asm/apm.h
29826 ---- linux-2.6.32.48/arch/x86/include/asm/apm.h 2009-12-02 22:51:21.000000000 -0500
29827 -+++ linux-2.6.32.48/arch/x86/include/asm/apm.h 2011-11-12 12:46:42.000000000 -0500
29828 +diff -urNp linux-3.0.8/arch/x86/include/asm/apm.h linux-3.0.8/arch/x86/include/asm/apm.h
29829 +--- linux-3.0.8/arch/x86/include/asm/apm.h 2011-07-21 22:17:23.000000000 -0400
29830 ++++ linux-3.0.8/arch/x86/include/asm/apm.h 2011-08-23 21:47:55.000000000 -0400
29831 @@ -34,7 +34,7 @@ static inline void apm_bios_call_asm(u32
29832 __asm__ __volatile__(APM_DO_ZERO_SEGS
29833 "pushl %%edi\n\t"
29834 @@ -7215,266 +6123,401 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/apm.h linux-2.6.32.48/arch/x86/i
29835 "setc %%bl\n\t"
29836 "popl %%ebp\n\t"
29837 "popl %%edi\n\t"
29838 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_32.h linux-2.6.32.48/arch/x86/include/asm/atomic_32.h
29839 ---- linux-2.6.32.48/arch/x86/include/asm/atomic_32.h 2009-12-02 22:51:21.000000000 -0500
29840 -+++ linux-2.6.32.48/arch/x86/include/asm/atomic_32.h 2011-11-12 12:46:42.000000000 -0500
29841 -@@ -25,6 +25,17 @@ static inline int atomic_read(const atom
29842 +diff -urNp linux-3.0.8/arch/x86/include/asm/atomic64_32.h linux-3.0.8/arch/x86/include/asm/atomic64_32.h
29843 +--- linux-3.0.8/arch/x86/include/asm/atomic64_32.h 2011-07-21 22:17:23.000000000 -0400
29844 ++++ linux-3.0.8/arch/x86/include/asm/atomic64_32.h 2011-08-23 21:47:55.000000000 -0400
29845 +@@ -12,6 +12,14 @@ typedef struct {
29846 + u64 __aligned(8) counter;
29847 + } atomic64_t;
29848 +
29849 ++#ifdef CONFIG_PAX_REFCOUNT
29850 ++typedef struct {
29851 ++ u64 __aligned(8) counter;
29852 ++} atomic64_unchecked_t;
29853 ++#else
29854 ++typedef atomic64_t atomic64_unchecked_t;
29855 ++#endif
29856 ++
29857 + #define ATOMIC64_INIT(val) { (val) }
29858 +
29859 + #ifdef CONFIG_X86_CMPXCHG64
29860 +@@ -38,6 +46,21 @@ static inline long long atomic64_cmpxchg
29861 }
29862
29863 /**
29864 -+ * atomic_read_unchecked - read atomic variable
29865 -+ * @v: pointer of type atomic_unchecked_t
29866 ++ * atomic64_cmpxchg_unchecked - cmpxchg atomic64 variable
29867 ++ * @p: pointer to type atomic64_unchecked_t
29868 ++ * @o: expected value
29869 ++ * @n: new value
29870 + *
29871 -+ * Atomically reads the value of @v.
29872 ++ * Atomically sets @v to @n if it was equal to @o and returns
29873 ++ * the old value.
29874 + */
29875 -+static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
29876 ++
29877 ++static inline long long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long long o, long long n)
29878 +{
29879 -+ return v->counter;
29880 ++ return cmpxchg64(&v->counter, o, n);
29881 +}
29882 +
29883 +/**
29884 - * atomic_set - set atomic variable
29885 - * @v: pointer of type atomic_t
29886 - * @i: required value
29887 -@@ -37,6 +48,18 @@ static inline void atomic_set(atomic_t *
29888 + * atomic64_xchg - xchg atomic64 variable
29889 + * @v: pointer to type atomic64_t
29890 + * @n: value to assign
29891 +@@ -77,6 +100,24 @@ static inline void atomic64_set(atomic64
29892 }
29893
29894 /**
29895 -+ * atomic_set_unchecked - set atomic variable
29896 -+ * @v: pointer of type atomic_unchecked_t
29897 ++ * atomic64_set_unchecked - set atomic64 variable
29898 ++ * @v: pointer to type atomic64_unchecked_t
29899 ++ * @n: value to assign
29900 ++ *
29901 ++ * Atomically sets the value of @v to @n.
29902 ++ */
29903 ++static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long long i)
29904 ++{
29905 ++ unsigned high = (unsigned)(i >> 32);
29906 ++ unsigned low = (unsigned)i;
29907 ++ asm volatile(ATOMIC64_ALTERNATIVE(set)
29908 ++ : "+b" (low), "+c" (high)
29909 ++ : "S" (v)
29910 ++ : "eax", "edx", "memory"
29911 ++ );
29912 ++}
29913 ++
29914 ++/**
29915 + * atomic64_read - read atomic64 variable
29916 + * @v: pointer to type atomic64_t
29917 + *
29918 +@@ -93,6 +134,22 @@ static inline long long atomic64_read(at
29919 + }
29920 +
29921 + /**
29922 ++ * atomic64_read_unchecked - read atomic64 variable
29923 ++ * @v: pointer to type atomic64_unchecked_t
29924 ++ *
29925 ++ * Atomically reads the value of @v and returns it.
29926 ++ */
29927 ++static inline long long atomic64_read_unchecked(atomic64_unchecked_t *v)
29928 ++{
29929 ++ long long r;
29930 ++ asm volatile(ATOMIC64_ALTERNATIVE(read_unchecked)
29931 ++ : "=A" (r), "+c" (v)
29932 ++ : : "memory"
29933 ++ );
29934 ++ return r;
29935 ++ }
29936 ++
29937 ++/**
29938 + * atomic64_add_return - add and return
29939 + * @i: integer value to add
29940 + * @v: pointer to type atomic64_t
29941 +@@ -108,6 +165,22 @@ static inline long long atomic64_add_ret
29942 + return i;
29943 + }
29944 +
29945 ++/**
29946 ++ * atomic64_add_return_unchecked - add and return
29947 ++ * @i: integer value to add
29948 ++ * @v: pointer to type atomic64_unchecked_t
29949 ++ *
29950 ++ * Atomically adds @i to @v and returns @i + *@v
29951 ++ */
29952 ++static inline long long atomic64_add_return_unchecked(long long i, atomic64_unchecked_t *v)
29953 ++{
29954 ++ asm volatile(ATOMIC64_ALTERNATIVE(add_return_unchecked)
29955 ++ : "+A" (i), "+c" (v)
29956 ++ : : "memory"
29957 ++ );
29958 ++ return i;
29959 ++}
29960 ++
29961 + /*
29962 + * Other variants with different arithmetic operators:
29963 + */
29964 +@@ -131,6 +204,17 @@ static inline long long atomic64_inc_ret
29965 + return a;
29966 + }
29967 +
29968 ++static inline long long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
29969 ++{
29970 ++ long long a;
29971 ++ asm volatile(ATOMIC64_ALTERNATIVE(inc_return_unchecked)
29972 ++ : "=A" (a)
29973 ++ : "S" (v)
29974 ++ : "memory", "ecx"
29975 ++ );
29976 ++ return a;
29977 ++}
29978 ++
29979 + static inline long long atomic64_dec_return(atomic64_t *v)
29980 + {
29981 + long long a;
29982 +@@ -159,6 +243,22 @@ static inline long long atomic64_add(lon
29983 + }
29984 +
29985 + /**
29986 ++ * atomic64_add_unchecked - add integer to atomic64 variable
29987 ++ * @i: integer value to add
29988 ++ * @v: pointer to type atomic64_unchecked_t
29989 ++ *
29990 ++ * Atomically adds @i to @v.
29991 ++ */
29992 ++static inline long long atomic64_add_unchecked(long long i, atomic64_unchecked_t *v)
29993 ++{
29994 ++ asm volatile(ATOMIC64_ALTERNATIVE_(add_unchecked, add_return_unchecked)
29995 ++ : "+A" (i), "+c" (v)
29996 ++ : : "memory"
29997 ++ );
29998 ++ return i;
29999 ++}
30000 ++
30001 ++/**
30002 + * atomic64_sub - subtract the atomic64 variable
30003 + * @i: integer value to subtract
30004 + * @v: pointer to type atomic64_t
30005 +diff -urNp linux-3.0.8/arch/x86/include/asm/atomic64_64.h linux-3.0.8/arch/x86/include/asm/atomic64_64.h
30006 +--- linux-3.0.8/arch/x86/include/asm/atomic64_64.h 2011-07-21 22:17:23.000000000 -0400
30007 ++++ linux-3.0.8/arch/x86/include/asm/atomic64_64.h 2011-08-23 21:47:55.000000000 -0400
30008 +@@ -18,7 +18,19 @@
30009 + */
30010 + static inline long atomic64_read(const atomic64_t *v)
30011 + {
30012 +- return (*(volatile long *)&(v)->counter);
30013 ++ return (*(volatile const long *)&(v)->counter);
30014 ++}
30015 ++
30016 ++/**
30017 ++ * atomic64_read_unchecked - read atomic64 variable
30018 ++ * @v: pointer of type atomic64_unchecked_t
30019 ++ *
30020 ++ * Atomically reads the value of @v.
30021 ++ * Doesn't imply a read memory barrier.
30022 ++ */
30023 ++static inline long atomic64_read_unchecked(const atomic64_unchecked_t *v)
30024 ++{
30025 ++ return (*(volatile const long *)&(v)->counter);
30026 + }
30027 +
30028 + /**
30029 +@@ -34,6 +46,18 @@ static inline void atomic64_set(atomic64
30030 + }
30031 +
30032 + /**
30033 ++ * atomic64_set_unchecked - set atomic64 variable
30034 ++ * @v: pointer to type atomic64_unchecked_t
30035 + * @i: required value
30036 + *
30037 + * Atomically sets the value of @v to @i.
30038 + */
30039 -+static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
30040 ++static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
30041 +{
30042 + v->counter = i;
30043 +}
30044 +
30045 +/**
30046 - * atomic_add - add integer to atomic variable
30047 + * atomic64_add - add integer to atomic64 variable
30048 * @i: integer value to add
30049 - * @v: pointer of type atomic_t
30050 -@@ -45,7 +68,29 @@ static inline void atomic_set(atomic_t *
30051 + * @v: pointer to type atomic64_t
30052 +@@ -42,6 +66,28 @@ static inline void atomic64_set(atomic64
30053 */
30054 - static inline void atomic_add(int i, atomic_t *v)
30055 + static inline void atomic64_add(long i, atomic64_t *v)
30056 {
30057 -- asm volatile(LOCK_PREFIX "addl %1,%0"
30058 -+ asm volatile(LOCK_PREFIX "addl %1,%0\n"
30059 ++ asm volatile(LOCK_PREFIX "addq %1,%0\n"
30060 +
30061 +#ifdef CONFIG_PAX_REFCOUNT
30062 + "jno 0f\n"
30063 -+ LOCK_PREFIX "subl %1,%0\n"
30064 ++ LOCK_PREFIX "subq %1,%0\n"
30065 + "int $4\n0:\n"
30066 + _ASM_EXTABLE(0b, 0b)
30067 +#endif
30068 +
30069 -+ : "+m" (v->counter)
30070 -+ : "ir" (i));
30071 ++ : "=m" (v->counter)
30072 ++ : "er" (i), "m" (v->counter));
30073 +}
30074 +
30075 +/**
30076 -+ * atomic_add_unchecked - add integer to atomic variable
30077 ++ * atomic64_add_unchecked - add integer to atomic64 variable
30078 + * @i: integer value to add
30079 -+ * @v: pointer of type atomic_unchecked_t
30080 ++ * @v: pointer to type atomic64_unchecked_t
30081 + *
30082 + * Atomically adds @i to @v.
30083 + */
30084 -+static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
30085 ++static inline void atomic64_add_unchecked(long i, atomic64_unchecked_t *v)
30086 +{
30087 -+ asm volatile(LOCK_PREFIX "addl %1,%0\n"
30088 - : "+m" (v->counter)
30089 - : "ir" (i));
30090 - }
30091 -@@ -59,7 +104,29 @@ static inline void atomic_add(int i, ato
30092 + asm volatile(LOCK_PREFIX "addq %1,%0"
30093 + : "=m" (v->counter)
30094 + : "er" (i), "m" (v->counter));
30095 +@@ -56,7 +102,29 @@ static inline void atomic64_add(long i,
30096 */
30097 - static inline void atomic_sub(int i, atomic_t *v)
30098 + static inline void atomic64_sub(long i, atomic64_t *v)
30099 {
30100 -- asm volatile(LOCK_PREFIX "subl %1,%0"
30101 -+ asm volatile(LOCK_PREFIX "subl %1,%0\n"
30102 +- asm volatile(LOCK_PREFIX "subq %1,%0"
30103 ++ asm volatile(LOCK_PREFIX "subq %1,%0\n"
30104 +
30105 +#ifdef CONFIG_PAX_REFCOUNT
30106 + "jno 0f\n"
30107 -+ LOCK_PREFIX "addl %1,%0\n"
30108 ++ LOCK_PREFIX "addq %1,%0\n"
30109 + "int $4\n0:\n"
30110 + _ASM_EXTABLE(0b, 0b)
30111 +#endif
30112 +
30113 -+ : "+m" (v->counter)
30114 -+ : "ir" (i));
30115 ++ : "=m" (v->counter)
30116 ++ : "er" (i), "m" (v->counter));
30117 +}
30118 +
30119 +/**
30120 -+ * atomic_sub_unchecked - subtract integer from atomic variable
30121 ++ * atomic64_sub_unchecked - subtract the atomic64 variable
30122 + * @i: integer value to subtract
30123 -+ * @v: pointer of type atomic_unchecked_t
30124 ++ * @v: pointer to type atomic64_unchecked_t
30125 + *
30126 + * Atomically subtracts @i from @v.
30127 + */
30128 -+static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
30129 ++static inline void atomic64_sub_unchecked(long i, atomic64_unchecked_t *v)
30130 +{
30131 -+ asm volatile(LOCK_PREFIX "subl %1,%0\n"
30132 - : "+m" (v->counter)
30133 - : "ir" (i));
30134 ++ asm volatile(LOCK_PREFIX "subq %1,%0\n"
30135 + : "=m" (v->counter)
30136 + : "er" (i), "m" (v->counter));
30137 }
30138 -@@ -77,7 +144,16 @@ static inline int atomic_sub_and_test(in
30139 +@@ -74,7 +142,16 @@ static inline int atomic64_sub_and_test(
30140 {
30141 unsigned char c;
30142
30143 -- asm volatile(LOCK_PREFIX "subl %2,%0; sete %1"
30144 -+ asm volatile(LOCK_PREFIX "subl %2,%0\n"
30145 +- asm volatile(LOCK_PREFIX "subq %2,%0; sete %1"
30146 ++ asm volatile(LOCK_PREFIX "subq %2,%0\n"
30147 +
30148 +#ifdef CONFIG_PAX_REFCOUNT
30149 + "jno 0f\n"
30150 -+ LOCK_PREFIX "addl %2,%0\n"
30151 ++ LOCK_PREFIX "addq %2,%0\n"
30152 + "int $4\n0:\n"
30153 + _ASM_EXTABLE(0b, 0b)
30154 +#endif
30155 +
30156 + "sete %1\n"
30157 - : "+m" (v->counter), "=qm" (c)
30158 - : "ir" (i) : "memory");
30159 + : "=m" (v->counter), "=qm" (c)
30160 + : "er" (i), "m" (v->counter) : "memory");
30161 return c;
30162 -@@ -91,7 +167,27 @@ static inline int atomic_sub_and_test(in
30163 +@@ -88,6 +165,27 @@ static inline int atomic64_sub_and_test(
30164 */
30165 - static inline void atomic_inc(atomic_t *v)
30166 + static inline void atomic64_inc(atomic64_t *v)
30167 {
30168 -- asm volatile(LOCK_PREFIX "incl %0"
30169 -+ asm volatile(LOCK_PREFIX "incl %0\n"
30170 ++ asm volatile(LOCK_PREFIX "incq %0\n"
30171 +
30172 +#ifdef CONFIG_PAX_REFCOUNT
30173 + "jno 0f\n"
30174 -+ LOCK_PREFIX "decl %0\n"
30175 ++ LOCK_PREFIX "decq %0\n"
30176 + "int $4\n0:\n"
30177 + _ASM_EXTABLE(0b, 0b)
30178 +#endif
30179 +
30180 -+ : "+m" (v->counter));
30181 ++ : "=m" (v->counter)
30182 ++ : "m" (v->counter));
30183 +}
30184 +
30185 +/**
30186 -+ * atomic_inc_unchecked - increment atomic variable
30187 -+ * @v: pointer of type atomic_unchecked_t
30188 ++ * atomic64_inc_unchecked - increment atomic64 variable
30189 ++ * @v: pointer to type atomic64_unchecked_t
30190 + *
30191 + * Atomically increments @v by 1.
30192 + */
30193 -+static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
30194 ++static inline void atomic64_inc_unchecked(atomic64_unchecked_t *v)
30195 +{
30196 -+ asm volatile(LOCK_PREFIX "incl %0\n"
30197 - : "+m" (v->counter));
30198 - }
30199 -
30200 -@@ -103,7 +199,27 @@ static inline void atomic_inc(atomic_t *
30201 + asm volatile(LOCK_PREFIX "incq %0"
30202 + : "=m" (v->counter)
30203 + : "m" (v->counter));
30204 +@@ -101,7 +199,28 @@ static inline void atomic64_inc(atomic64
30205 */
30206 - static inline void atomic_dec(atomic_t *v)
30207 + static inline void atomic64_dec(atomic64_t *v)
30208 {
30209 -- asm volatile(LOCK_PREFIX "decl %0"
30210 -+ asm volatile(LOCK_PREFIX "decl %0\n"
30211 +- asm volatile(LOCK_PREFIX "decq %0"
30212 ++ asm volatile(LOCK_PREFIX "decq %0\n"
30213 +
30214 +#ifdef CONFIG_PAX_REFCOUNT
30215 + "jno 0f\n"
30216 -+ LOCK_PREFIX "incl %0\n"
30217 ++ LOCK_PREFIX "incq %0\n"
30218 + "int $4\n0:\n"
30219 + _ASM_EXTABLE(0b, 0b)
30220 +#endif
30221 +
30222 -+ : "+m" (v->counter));
30223 ++ : "=m" (v->counter)
30224 ++ : "m" (v->counter));
30225 +}
30226 +
30227 +/**
30228 -+ * atomic_dec_unchecked - decrement atomic variable
30229 -+ * @v: pointer of type atomic_unchecked_t
30230 ++ * atomic64_dec_unchecked - decrement atomic64 variable
30231 ++ * @v: pointer to type atomic64_t
30232 + *
30233 + * Atomically decrements @v by 1.
30234 + */
30235 -+static inline void atomic_dec_unchecked(atomic_unchecked_t *v)
30236 ++static inline void atomic64_dec_unchecked(atomic64_unchecked_t *v)
30237 +{
30238 -+ asm volatile(LOCK_PREFIX "decl %0\n"
30239 - : "+m" (v->counter));
30240 ++ asm volatile(LOCK_PREFIX "decq %0\n"
30241 + : "=m" (v->counter)
30242 + : "m" (v->counter));
30243 }
30244 -
30245 -@@ -119,7 +235,16 @@ static inline int atomic_dec_and_test(at
30246 +@@ -118,7 +237,16 @@ static inline int atomic64_dec_and_test(
30247 {
30248 unsigned char c;
30249
30250 -- asm volatile(LOCK_PREFIX "decl %0; sete %1"
30251 -+ asm volatile(LOCK_PREFIX "decl %0\n"
30252 +- asm volatile(LOCK_PREFIX "decq %0; sete %1"
30253 ++ asm volatile(LOCK_PREFIX "decq %0\n"
30254 +
30255 +#ifdef CONFIG_PAX_REFCOUNT
30256 + "jno 0f\n"
30257 -+ LOCK_PREFIX "incl %0\n"
30258 ++ LOCK_PREFIX "incq %0\n"
30259 + "int $4\n0:\n"
30260 + _ASM_EXTABLE(0b, 0b)
30261 +#endif
30262 +
30263 + "sete %1\n"
30264 - : "+m" (v->counter), "=qm" (c)
30265 - : : "memory");
30266 + : "=m" (v->counter), "=qm" (c)
30267 + : "m" (v->counter) : "memory");
30268 return c != 0;
30269 -@@ -137,7 +262,35 @@ static inline int atomic_inc_and_test(at
30270 +@@ -136,7 +264,16 @@ static inline int atomic64_inc_and_test(
30271 {
30272 unsigned char c;
30273
30274 -- asm volatile(LOCK_PREFIX "incl %0; sete %1"
30275 -+ asm volatile(LOCK_PREFIX "incl %0\n"
30276 +- asm volatile(LOCK_PREFIX "incq %0; sete %1"
30277 ++ asm volatile(LOCK_PREFIX "incq %0\n"
30278 +
30279 +#ifdef CONFIG_PAX_REFCOUNT
30280 + "jno 0f\n"
30281 -+ LOCK_PREFIX "decl %0\n"
30282 -+ "into\n0:\n"
30283 ++ LOCK_PREFIX "decq %0\n"
30284 ++ "int $4\n0:\n"
30285 + _ASM_EXTABLE(0b, 0b)
30286 +#endif
30287 +
30288 + "sete %1\n"
30289 -+ : "+m" (v->counter), "=qm" (c)
30290 -+ : : "memory");
30291 -+ return c != 0;
30292 -+}
30293 -+
30294 -+/**
30295 -+ * atomic_inc_and_test_unchecked - increment and test
30296 -+ * @v: pointer of type atomic_unchecked_t
30297 -+ *
30298 -+ * Atomically increments @v by 1
30299 -+ * and returns true if the result is zero, or false for all
30300 -+ * other cases.
30301 -+ */
30302 -+static inline int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
30303 -+{
30304 -+ unsigned char c;
30305 -+
30306 -+ asm volatile(LOCK_PREFIX "incl %0\n"
30307 -+ "sete %1\n"
30308 - : "+m" (v->counter), "=qm" (c)
30309 - : : "memory");
30310 + : "=m" (v->counter), "=qm" (c)
30311 + : "m" (v->counter) : "memory");
30312 return c != 0;
30313 -@@ -156,7 +309,16 @@ static inline int atomic_add_negative(in
30314 +@@ -155,7 +292,16 @@ static inline int atomic64_add_negative(
30315 {
30316 unsigned char c;
30317
30318 -- asm volatile(LOCK_PREFIX "addl %2,%0; sets %1"
30319 -+ asm volatile(LOCK_PREFIX "addl %2,%0\n"
30320 +- asm volatile(LOCK_PREFIX "addq %2,%0; sets %1"
30321 ++ asm volatile(LOCK_PREFIX "addq %2,%0\n"
30322 +
30323 +#ifdef CONFIG_PAX_REFCOUNT
30324 + "jno 0f\n"
30325 -+ LOCK_PREFIX "subl %2,%0\n"
30326 ++ LOCK_PREFIX "subq %2,%0\n"
30327 + "int $4\n0:\n"
30328 + _ASM_EXTABLE(0b, 0b)
30329 +#endif
30330 +
30331 + "sets %1\n"
30332 - : "+m" (v->counter), "=qm" (c)
30333 - : "ir" (i) : "memory");
30334 + : "=m" (v->counter), "=qm" (c)
30335 + : "er" (i), "m" (v->counter) : "memory");
30336 return c;
30337 -@@ -179,6 +341,46 @@ static inline int atomic_add_return(int
30338 - #endif
30339 - /* Modern 486+ processor */
30340 - __i = i;
30341 -+ asm volatile(LOCK_PREFIX "xaddl %0, %1\n"
30342 +@@ -171,7 +317,31 @@ static inline int atomic64_add_negative(
30343 + static inline long atomic64_add_return(long i, atomic64_t *v)
30344 + {
30345 + long __i = i;
30346 +- asm volatile(LOCK_PREFIX "xaddq %0, %1;"
30347 ++ asm volatile(LOCK_PREFIX "xaddq %0, %1\n"
30348 +
30349 +#ifdef CONFIG_PAX_REFCOUNT
30350 + "jno 0f\n"
30351 -+ "movl %0, %1\n"
30352 ++ "movq %0, %1\n"
30353 + "int $4\n0:\n"
30354 + _ASM_EXTABLE(0b, 0b)
30355 +#endif
30356 @@ -7482,77 +6525,63 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_32.h linux-2.6.32.48/arch
30357 + : "+r" (i), "+m" (v->counter)
30358 + : : "memory");
30359 + return i + __i;
30360 -+
30361 -+#ifdef CONFIG_M386
30362 -+no_xadd: /* Legacy 386 processor */
30363 -+ local_irq_save(flags);
30364 -+ __i = atomic_read(v);
30365 -+ atomic_set(v, i + __i);
30366 -+ local_irq_restore(flags);
30367 -+ return i + __i;
30368 -+#endif
30369 +}
30370 +
30371 +/**
30372 -+ * atomic_add_return_unchecked - add integer and return
30373 -+ * @v: pointer of type atomic_unchecked_t
30374 ++ * atomic64_add_return_unchecked - add and return
30375 + * @i: integer value to add
30376 ++ * @v: pointer to type atomic64_unchecked_t
30377 + *
30378 + * Atomically adds @i to @v and returns @i + @v
30379 + */
30380 -+static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
30381 ++static inline long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
30382 +{
30383 -+ int __i;
30384 -+#ifdef CONFIG_M386
30385 -+ unsigned long flags;
30386 -+ if (unlikely(boot_cpu_data.x86 <= 3))
30387 -+ goto no_xadd;
30388 -+#endif
30389 -+ /* Modern 486+ processor */
30390 -+ __i = i;
30391 - asm volatile(LOCK_PREFIX "xaddl %0, %1"
30392 ++ long __i = i;
30393 ++ asm volatile(LOCK_PREFIX "xaddq %0, %1"
30394 : "+r" (i), "+m" (v->counter)
30395 : : "memory");
30396 -@@ -211,11 +413,21 @@ static inline int atomic_cmpxchg(atomic_
30397 - return cmpxchg(&v->counter, old, new);
30398 + return i + __i;
30399 +@@ -183,6 +353,10 @@ static inline long atomic64_sub_return(l
30400 }
30401
30402 -+static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
30403 + #define atomic64_inc_return(v) (atomic64_add_return(1, (v)))
30404 ++static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
30405 +{
30406 -+ return cmpxchg(&v->counter, old, new);
30407 ++ return atomic64_add_return_unchecked(1, v);
30408 +}
30409 -+
30410 - static inline int atomic_xchg(atomic_t *v, int new)
30411 - {
30412 - return xchg(&v->counter, new);
30413 + #define atomic64_dec_return(v) (atomic64_sub_return(1, (v)))
30414 +
30415 + static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
30416 +@@ -190,6 +364,11 @@ static inline long atomic64_cmpxchg(atom
30417 + return cmpxchg(&v->counter, old, new);
30418 }
30419
30420 -+static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
30421 ++static inline long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long old, long new)
30422 +{
30423 -+ return xchg(&v->counter, new);
30424 ++ return cmpxchg(&v->counter, old, new);
30425 +}
30426 +
30427 - /**
30428 - * atomic_add_unless - add unless the number is already a given value
30429 - * @v: pointer of type atomic_t
30430 -@@ -227,22 +439,39 @@ static inline int atomic_xchg(atomic_t *
30431 + static inline long atomic64_xchg(atomic64_t *v, long new)
30432 + {
30433 + return xchg(&v->counter, new);
30434 +@@ -206,17 +385,30 @@ static inline long atomic64_xchg(atomic6
30435 */
30436 - static inline int atomic_add_unless(atomic_t *v, int a, int u)
30437 + static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
30438 {
30439 -- int c, old;
30440 -+ int c, old, new;
30441 - c = atomic_read(v);
30442 +- long c, old;
30443 ++ long c, old, new;
30444 + c = atomic64_read(v);
30445 for (;;) {
30446 - if (unlikely(c == (u)))
30447 + if (unlikely(c == u))
30448 break;
30449 -- old = atomic_cmpxchg((v), c, c + (a));
30450 +- old = atomic64_cmpxchg((v), c, c + (a));
30451 +
30452 -+ asm volatile("addl %2,%0\n"
30453 ++ asm volatile("add %2,%0\n"
30454 +
30455 +#ifdef CONFIG_PAX_REFCOUNT
30456 + "jno 0f\n"
30457 -+ "subl %2,%0\n"
30458 ++ "sub %2,%0\n"
30459 + "int $4\n0:\n"
30460 + _ASM_EXTABLE(0b, 0b)
30461 +#endif
30462 @@ -7560,7 +6589,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_32.h linux-2.6.32.48/arch
30463 + : "=r" (new)
30464 + : "0" (c), "ir" (a));
30465 +
30466 -+ old = atomic_cmpxchg(v, c, new);
30467 ++ old = atomic64_cmpxchg(v, c, new);
30468 if (likely(old == c))
30469 break;
30470 c = old;
30471 @@ -7569,175 +6598,19 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_32.h linux-2.6.32.48/arch
30472 + return c != u;
30473 }
30474
30475 - #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
30476 -
30477 - #define atomic_inc_return(v) (atomic_add_return(1, v))
30478 -+static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
30479 -+{
30480 -+ return atomic_add_return_unchecked(1, v);
30481 -+}
30482 - #define atomic_dec_return(v) (atomic_sub_return(1, v))
30483 -
30484 - /* These are x86-specific, used by some header files */
30485 -@@ -266,9 +495,18 @@ typedef struct {
30486 - u64 __aligned(8) counter;
30487 - } atomic64_t;
30488 -
30489 -+#ifdef CONFIG_PAX_REFCOUNT
30490 -+typedef struct {
30491 -+ u64 __aligned(8) counter;
30492 -+} atomic64_unchecked_t;
30493 -+#else
30494 -+typedef atomic64_t atomic64_unchecked_t;
30495 -+#endif
30496 -+
30497 - #define ATOMIC64_INIT(val) { (val) }
30498 -
30499 - extern u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old_val, u64 new_val);
30500 -+extern u64 atomic64_cmpxchg_unchecked(atomic64_unchecked_t *ptr, u64 old_val, u64 new_val);
30501 -
30502 - /**
30503 - * atomic64_xchg - xchg atomic64 variable
30504 -@@ -279,6 +517,7 @@ extern u64 atomic64_cmpxchg(atomic64_t *
30505 - * the old value.
30506 + #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
30507 +diff -urNp linux-3.0.8/arch/x86/include/asm/atomic.h linux-3.0.8/arch/x86/include/asm/atomic.h
30508 +--- linux-3.0.8/arch/x86/include/asm/atomic.h 2011-07-21 22:17:23.000000000 -0400
30509 ++++ linux-3.0.8/arch/x86/include/asm/atomic.h 2011-08-23 21:47:55.000000000 -0400
30510 +@@ -22,7 +22,18 @@
30511 */
30512 - extern u64 atomic64_xchg(atomic64_t *ptr, u64 new_val);
30513 -+extern u64 atomic64_xchg_unchecked(atomic64_unchecked_t *ptr, u64 new_val);
30514 -
30515 - /**
30516 - * atomic64_set - set atomic64 variable
30517 -@@ -290,6 +529,15 @@ extern u64 atomic64_xchg(atomic64_t *ptr
30518 - extern void atomic64_set(atomic64_t *ptr, u64 new_val);
30519 -
30520 - /**
30521 -+ * atomic64_unchecked_set - set atomic64 variable
30522 -+ * @ptr: pointer to type atomic64_unchecked_t
30523 -+ * @new_val: value to assign
30524 -+ *
30525 -+ * Atomically sets the value of @ptr to @new_val.
30526 -+ */
30527 -+extern void atomic64_set_unchecked(atomic64_unchecked_t *ptr, u64 new_val);
30528 -+
30529 -+/**
30530 - * atomic64_read - read atomic64 variable
30531 - * @ptr: pointer to type atomic64_t
30532 - *
30533 -@@ -317,7 +565,33 @@ static inline u64 atomic64_read(atomic64
30534 - return res;
30535 - }
30536 -
30537 --extern u64 atomic64_read(atomic64_t *ptr);
30538 -+/**
30539 -+ * atomic64_read_unchecked - read atomic64 variable
30540 -+ * @ptr: pointer to type atomic64_unchecked_t
30541 -+ *
30542 -+ * Atomically reads the value of @ptr and returns it.
30543 -+ */
30544 -+static inline u64 atomic64_read_unchecked(atomic64_unchecked_t *ptr)
30545 -+{
30546 -+ u64 res;
30547 -+
30548 -+ /*
30549 -+ * Note, we inline this atomic64_unchecked_t primitive because
30550 -+ * it only clobbers EAX/EDX and leaves the others
30551 -+ * untouched. We also (somewhat subtly) rely on the
30552 -+ * fact that cmpxchg8b returns the current 64-bit value
30553 -+ * of the memory location we are touching:
30554 -+ */
30555 -+ asm volatile(
30556 -+ "mov %%ebx, %%eax\n\t"
30557 -+ "mov %%ecx, %%edx\n\t"
30558 -+ LOCK_PREFIX "cmpxchg8b %1\n"
30559 -+ : "=&A" (res)
30560 -+ : "m" (*ptr)
30561 -+ );
30562 -+
30563 -+ return res;
30564 + static inline int atomic_read(const atomic_t *v)
30565 + {
30566 +- return (*(volatile int *)&(v)->counter);
30567 ++ return (*(volatile const int *)&(v)->counter);
30568 +}
30569 -
30570 - /**
30571 - * atomic64_add_return - add and return
30572 -@@ -332,8 +606,11 @@ extern u64 atomic64_add_return(u64 delta
30573 - * Other variants with different arithmetic operators:
30574 - */
30575 - extern u64 atomic64_sub_return(u64 delta, atomic64_t *ptr);
30576 -+extern u64 atomic64_sub_return_unchecked(u64 delta, atomic64_unchecked_t *ptr);
30577 - extern u64 atomic64_inc_return(atomic64_t *ptr);
30578 -+extern u64 atomic64_inc_return_unchecked(atomic64_unchecked_t *ptr);
30579 - extern u64 atomic64_dec_return(atomic64_t *ptr);
30580 -+extern u64 atomic64_dec_return_unchecked(atomic64_unchecked_t *ptr);
30581 -
30582 - /**
30583 - * atomic64_add - add integer to atomic64 variable
30584 -@@ -345,6 +622,15 @@ extern u64 atomic64_dec_return(atomic64_
30585 - extern void atomic64_add(u64 delta, atomic64_t *ptr);
30586 -
30587 - /**
30588 -+ * atomic64_add_unchecked - add integer to atomic64 variable
30589 -+ * @delta: integer value to add
30590 -+ * @ptr: pointer to type atomic64_unchecked_t
30591 -+ *
30592 -+ * Atomically adds @delta to @ptr.
30593 -+ */
30594 -+extern void atomic64_add_unchecked(u64 delta, atomic64_unchecked_t *ptr);
30595 -+
30596 -+/**
30597 - * atomic64_sub - subtract the atomic64 variable
30598 - * @delta: integer value to subtract
30599 - * @ptr: pointer to type atomic64_t
30600 -@@ -354,6 +640,15 @@ extern void atomic64_add(u64 delta, atom
30601 - extern void atomic64_sub(u64 delta, atomic64_t *ptr);
30602 -
30603 - /**
30604 -+ * atomic64_sub_unchecked - subtract the atomic64 variable
30605 -+ * @delta: integer value to subtract
30606 -+ * @ptr: pointer to type atomic64_unchecked_t
30607 -+ *
30608 -+ * Atomically subtracts @delta from @ptr.
30609 -+ */
30610 -+extern void atomic64_sub_unchecked(u64 delta, atomic64_unchecked_t *ptr);
30611 -+
30612 -+/**
30613 - * atomic64_sub_and_test - subtract value from variable and test result
30614 - * @delta: integer value to subtract
30615 - * @ptr: pointer to type atomic64_t
30616 -@@ -373,6 +668,14 @@ extern int atomic64_sub_and_test(u64 del
30617 - extern void atomic64_inc(atomic64_t *ptr);
30618 -
30619 - /**
30620 -+ * atomic64_inc_unchecked - increment atomic64 variable
30621 -+ * @ptr: pointer to type atomic64_unchecked_t
30622 -+ *
30623 -+ * Atomically increments @ptr by 1.
30624 -+ */
30625 -+extern void atomic64_inc_unchecked(atomic64_unchecked_t *ptr);
30626 -+
30627 -+/**
30628 - * atomic64_dec - decrement atomic64 variable
30629 - * @ptr: pointer to type atomic64_t
30630 - *
30631 -@@ -381,6 +684,14 @@ extern void atomic64_inc(atomic64_t *ptr
30632 - extern void atomic64_dec(atomic64_t *ptr);
30633 -
30634 - /**
30635 -+ * atomic64_dec_unchecked - decrement atomic64 variable
30636 -+ * @ptr: pointer to type atomic64_unchecked_t
30637 -+ *
30638 -+ * Atomically decrements @ptr by 1.
30639 -+ */
30640 -+extern void atomic64_dec_unchecked(atomic64_unchecked_t *ptr);
30641 +
30642 +/**
30643 - * atomic64_dec_and_test - decrement and test
30644 - * @ptr: pointer to type atomic64_t
30645 - *
30646 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch/x86/include/asm/atomic_64.h
30647 ---- linux-2.6.32.48/arch/x86/include/asm/atomic_64.h 2009-12-02 22:51:21.000000000 -0500
30648 -+++ linux-2.6.32.48/arch/x86/include/asm/atomic_64.h 2011-11-12 12:46:42.000000000 -0500
30649 -@@ -24,6 +24,17 @@ static inline int atomic_read(const atom
30650 - }
30651 -
30652 - /**
30653 + * atomic_read_unchecked - read atomic variable
30654 + * @v: pointer of type atomic_unchecked_t
30655 + *
30656 @@ -7745,14 +6618,11 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30657 + */
30658 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
30659 +{
30660 -+ return v->counter;
30661 -+}
30662 -+
30663 -+/**
30664 - * atomic_set - set atomic variable
30665 - * @v: pointer of type atomic_t
30666 - * @i: required value
30667 -@@ -36,6 +47,18 @@ static inline void atomic_set(atomic_t *
30668 ++ return (*(volatile const int *)&(v)->counter);
30669 + }
30670 +
30671 + /**
30672 +@@ -38,6 +49,18 @@ static inline void atomic_set(atomic_t *
30673 }
30674
30675 /**
30676 @@ -7771,7 +6641,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30677 * atomic_add - add integer to atomic variable
30678 * @i: integer value to add
30679 * @v: pointer of type atomic_t
30680 -@@ -44,7 +67,29 @@ static inline void atomic_set(atomic_t *
30681 +@@ -46,7 +69,29 @@ static inline void atomic_set(atomic_t *
30682 */
30683 static inline void atomic_add(int i, atomic_t *v)
30684 {
30685 @@ -7785,8 +6655,8 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30686 + _ASM_EXTABLE(0b, 0b)
30687 +#endif
30688 +
30689 -+ : "=m" (v->counter)
30690 -+ : "ir" (i), "m" (v->counter));
30691 ++ : "+m" (v->counter)
30692 ++ : "ir" (i));
30693 +}
30694 +
30695 +/**
30696 @@ -7799,10 +6669,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30697 +static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
30698 +{
30699 + asm volatile(LOCK_PREFIX "addl %1,%0\n"
30700 - : "=m" (v->counter)
30701 - : "ir" (i), "m" (v->counter));
30702 + : "+m" (v->counter)
30703 + : "ir" (i));
30704 }
30705 -@@ -58,7 +103,29 @@ static inline void atomic_add(int i, ato
30706 +@@ -60,7 +105,29 @@ static inline void atomic_add(int i, ato
30707 */
30708 static inline void atomic_sub(int i, atomic_t *v)
30709 {
30710 @@ -7816,12 +6686,12 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30711 + _ASM_EXTABLE(0b, 0b)
30712 +#endif
30713 +
30714 -+ : "=m" (v->counter)
30715 -+ : "ir" (i), "m" (v->counter));
30716 ++ : "+m" (v->counter)
30717 ++ : "ir" (i));
30718 +}
30719 +
30720 +/**
30721 -+ * atomic_sub_unchecked - subtract the atomic variable
30722 ++ * atomic_sub_unchecked - subtract integer from atomic variable
30723 + * @i: integer value to subtract
30724 + * @v: pointer of type atomic_unchecked_t
30725 + *
30726 @@ -7830,10 +6700,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30727 +static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
30728 +{
30729 + asm volatile(LOCK_PREFIX "subl %1,%0\n"
30730 - : "=m" (v->counter)
30731 - : "ir" (i), "m" (v->counter));
30732 + : "+m" (v->counter)
30733 + : "ir" (i));
30734 }
30735 -@@ -76,7 +143,16 @@ static inline int atomic_sub_and_test(in
30736 +@@ -78,7 +145,16 @@ static inline int atomic_sub_and_test(in
30737 {
30738 unsigned char c;
30739
30740 @@ -7848,10 +6718,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30741 +#endif
30742 +
30743 + "sete %1\n"
30744 - : "=m" (v->counter), "=qm" (c)
30745 - : "ir" (i), "m" (v->counter) : "memory");
30746 + : "+m" (v->counter), "=qm" (c)
30747 + : "ir" (i) : "memory");
30748 return c;
30749 -@@ -90,7 +166,28 @@ static inline int atomic_sub_and_test(in
30750 +@@ -92,7 +168,27 @@ static inline int atomic_sub_and_test(in
30751 */
30752 static inline void atomic_inc(atomic_t *v)
30753 {
30754 @@ -7865,8 +6735,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30755 + _ASM_EXTABLE(0b, 0b)
30756 +#endif
30757 +
30758 -+ : "=m" (v->counter)
30759 -+ : "m" (v->counter));
30760 ++ : "+m" (v->counter));
30761 +}
30762 +
30763 +/**
30764 @@ -7878,10 +6747,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30765 +static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
30766 +{
30767 + asm volatile(LOCK_PREFIX "incl %0\n"
30768 - : "=m" (v->counter)
30769 - : "m" (v->counter));
30770 + : "+m" (v->counter));
30771 }
30772 -@@ -103,7 +200,28 @@ static inline void atomic_inc(atomic_t *
30773 +
30774 +@@ -104,7 +200,27 @@ static inline void atomic_inc(atomic_t *
30775 */
30776 static inline void atomic_dec(atomic_t *v)
30777 {
30778 @@ -7895,8 +6764,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30779 + _ASM_EXTABLE(0b, 0b)
30780 +#endif
30781 +
30782 -+ : "=m" (v->counter)
30783 -+ : "m" (v->counter));
30784 ++ : "+m" (v->counter));
30785 +}
30786 +
30787 +/**
30788 @@ -7908,10 +6776,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30789 +static inline void atomic_dec_unchecked(atomic_unchecked_t *v)
30790 +{
30791 + asm volatile(LOCK_PREFIX "decl %0\n"
30792 - : "=m" (v->counter)
30793 - : "m" (v->counter));
30794 + : "+m" (v->counter));
30795 }
30796 -@@ -120,7 +238,16 @@ static inline int atomic_dec_and_test(at
30797 +
30798 +@@ -120,7 +236,16 @@ static inline int atomic_dec_and_test(at
30799 {
30800 unsigned char c;
30801
30802 @@ -7926,10 +6794,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30803 +#endif
30804 +
30805 + "sete %1\n"
30806 - : "=m" (v->counter), "=qm" (c)
30807 - : "m" (v->counter) : "memory");
30808 + : "+m" (v->counter), "=qm" (c)
30809 + : : "memory");
30810 return c != 0;
30811 -@@ -138,7 +265,35 @@ static inline int atomic_inc_and_test(at
30812 +@@ -138,7 +263,35 @@ static inline int atomic_inc_and_test(at
30813 {
30814 unsigned char c;
30815
30816 @@ -7944,8 +6812,8 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30817 +#endif
30818 +
30819 + "sete %1\n"
30820 -+ : "=m" (v->counter), "=qm" (c)
30821 -+ : "m" (v->counter) : "memory");
30822 ++ : "+m" (v->counter), "=qm" (c)
30823 ++ : : "memory");
30824 + return c != 0;
30825 +}
30826 +
30827 @@ -7963,10 +6831,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30828 +
30829 + asm volatile(LOCK_PREFIX "incl %0\n"
30830 + "sete %1\n"
30831 - : "=m" (v->counter), "=qm" (c)
30832 - : "m" (v->counter) : "memory");
30833 + : "+m" (v->counter), "=qm" (c)
30834 + : : "memory");
30835 return c != 0;
30836 -@@ -157,7 +312,16 @@ static inline int atomic_add_negative(in
30837 +@@ -157,7 +310,16 @@ static inline int atomic_add_negative(in
30838 {
30839 unsigned char c;
30840
30841 @@ -7981,14 +6849,13 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30842 +#endif
30843 +
30844 + "sets %1\n"
30845 - : "=m" (v->counter), "=qm" (c)
30846 - : "ir" (i), "m" (v->counter) : "memory");
30847 + : "+m" (v->counter), "=qm" (c)
30848 + : "ir" (i) : "memory");
30849 return c;
30850 -@@ -173,7 +337,31 @@ static inline int atomic_add_negative(in
30851 - static inline int atomic_add_return(int i, atomic_t *v)
30852 - {
30853 - int __i = i;
30854 -- asm volatile(LOCK_PREFIX "xaddl %0, %1"
30855 +@@ -180,6 +342,46 @@ static inline int atomic_add_return(int
30856 + #endif
30857 + /* Modern 486+ processor */
30858 + __i = i;
30859 + asm volatile(LOCK_PREFIX "xaddl %0, %1\n"
30860 +
30861 +#ifdef CONFIG_PAX_REFCOUNT
30862 @@ -8001,334 +6868,71 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
30863 + : "+r" (i), "+m" (v->counter)
30864 + : : "memory");
30865 + return i + __i;
30866 ++
30867 ++#ifdef CONFIG_M386
30868 ++no_xadd: /* Legacy 386 processor */
30869 ++ local_irq_save(flags);
30870 ++ __i = atomic_read(v);
30871 ++ atomic_set(v, i + __i);
30872 ++ local_irq_restore(flags);
30873 ++ return i + __i;
30874 ++#endif
30875 +}
30876 +
30877 +/**
30878 -+ * atomic_add_return_unchecked - add and return
30879 -+ * @i: integer value to add
30880 ++ * atomic_add_return_unchecked - add integer and return
30881 + * @v: pointer of type atomic_unchecked_t
30882 ++ * @i: integer value to add
30883 + *
30884 + * Atomically adds @i to @v and returns @i + @v
30885 + */
30886 +static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
30887 +{
30888 -+ int __i = i;
30889 -+ asm volatile(LOCK_PREFIX "xaddl %0, %1\n"
30890 - : "+r" (i), "+m" (v->counter)
30891 - : : "memory");
30892 - return i + __i;
30893 -@@ -185,6 +373,10 @@ static inline int atomic_sub_return(int
30894 - }
30895 -
30896 - #define atomic_inc_return(v) (atomic_add_return(1, v))
30897 -+static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
30898 -+{
30899 -+ return atomic_add_return_unchecked(1, v);
30900 -+}
30901 - #define atomic_dec_return(v) (atomic_sub_return(1, v))
30902 -
30903 - /* The 64-bit atomic type */
30904 -@@ -204,6 +396,18 @@ static inline long atomic64_read(const a
30905 - }
30906 -
30907 - /**
30908 -+ * atomic64_read_unchecked - read atomic64 variable
30909 -+ * @v: pointer of type atomic64_unchecked_t
30910 -+ *
30911 -+ * Atomically reads the value of @v.
30912 -+ * Doesn't imply a read memory barrier.
30913 -+ */
30914 -+static inline long atomic64_read_unchecked(const atomic64_unchecked_t *v)
30915 -+{
30916 -+ return v->counter;
30917 -+}
30918 -+
30919 -+/**
30920 - * atomic64_set - set atomic64 variable
30921 - * @v: pointer to type atomic64_t
30922 - * @i: required value
30923 -@@ -216,6 +420,18 @@ static inline void atomic64_set(atomic64
30924 - }
30925 -
30926 - /**
30927 -+ * atomic64_set_unchecked - set atomic64 variable
30928 -+ * @v: pointer to type atomic64_unchecked_t
30929 -+ * @i: required value
30930 -+ *
30931 -+ * Atomically sets the value of @v to @i.
30932 -+ */
30933 -+static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
30934 -+{
30935 -+ v->counter = i;
30936 -+}
30937 -+
30938 -+/**
30939 - * atomic64_add - add integer to atomic64 variable
30940 - * @i: integer value to add
30941 - * @v: pointer to type atomic64_t
30942 -@@ -224,6 +440,28 @@ static inline void atomic64_set(atomic64
30943 - */
30944 - static inline void atomic64_add(long i, atomic64_t *v)
30945 - {
30946 -+ asm volatile(LOCK_PREFIX "addq %1,%0\n"
30947 -+
30948 -+#ifdef CONFIG_PAX_REFCOUNT
30949 -+ "jno 0f\n"
30950 -+ LOCK_PREFIX "subq %1,%0\n"
30951 -+ "int $4\n0:\n"
30952 -+ _ASM_EXTABLE(0b, 0b)
30953 -+#endif
30954 -+
30955 -+ : "=m" (v->counter)
30956 -+ : "er" (i), "m" (v->counter));
30957 -+}
30958 -+
30959 -+/**
30960 -+ * atomic64_add_unchecked - add integer to atomic64 variable
30961 -+ * @i: integer value to add
30962 -+ * @v: pointer to type atomic64_unchecked_t
30963 -+ *
30964 -+ * Atomically adds @i to @v.
30965 -+ */
30966 -+static inline void atomic64_add_unchecked(long i, atomic64_unchecked_t *v)
30967 -+{
30968 - asm volatile(LOCK_PREFIX "addq %1,%0"
30969 - : "=m" (v->counter)
30970 - : "er" (i), "m" (v->counter));
30971 -@@ -238,7 +476,15 @@ static inline void atomic64_add(long i,
30972 - */
30973 - static inline void atomic64_sub(long i, atomic64_t *v)
30974 - {
30975 -- asm volatile(LOCK_PREFIX "subq %1,%0"
30976 -+ asm volatile(LOCK_PREFIX "subq %1,%0\n"
30977 -+
30978 -+#ifdef CONFIG_PAX_REFCOUNT
30979 -+ "jno 0f\n"
30980 -+ LOCK_PREFIX "addq %1,%0\n"
30981 -+ "int $4\n0:\n"
30982 -+ _ASM_EXTABLE(0b, 0b)
30983 -+#endif
30984 -+
30985 - : "=m" (v->counter)
30986 - : "er" (i), "m" (v->counter));
30987 - }
30988 -@@ -256,7 +502,16 @@ static inline int atomic64_sub_and_test(
30989 - {
30990 - unsigned char c;
30991 -
30992 -- asm volatile(LOCK_PREFIX "subq %2,%0; sete %1"
30993 -+ asm volatile(LOCK_PREFIX "subq %2,%0\n"
30994 -+
30995 -+#ifdef CONFIG_PAX_REFCOUNT
30996 -+ "jno 0f\n"
30997 -+ LOCK_PREFIX "addq %2,%0\n"
30998 -+ "int $4\n0:\n"
30999 -+ _ASM_EXTABLE(0b, 0b)
31000 -+#endif
31001 -+
31002 -+ "sete %1\n"
31003 - : "=m" (v->counter), "=qm" (c)
31004 - : "er" (i), "m" (v->counter) : "memory");
31005 - return c;
31006 -@@ -270,6 +525,27 @@ static inline int atomic64_sub_and_test(
31007 - */
31008 - static inline void atomic64_inc(atomic64_t *v)
31009 - {
31010 -+ asm volatile(LOCK_PREFIX "incq %0\n"
31011 -+
31012 -+#ifdef CONFIG_PAX_REFCOUNT
31013 -+ "jno 0f\n"
31014 -+ LOCK_PREFIX "decq %0\n"
31015 -+ "int $4\n0:\n"
31016 -+ _ASM_EXTABLE(0b, 0b)
31017 -+#endif
31018 -+
31019 -+ : "=m" (v->counter)
31020 -+ : "m" (v->counter));
31021 -+}
31022 -+
31023 -+/**
31024 -+ * atomic64_inc_unchecked - increment atomic64 variable
31025 -+ * @v: pointer to type atomic64_unchecked_t
31026 -+ *
31027 -+ * Atomically increments @v by 1.
31028 -+ */
31029 -+static inline void atomic64_inc_unchecked(atomic64_unchecked_t *v)
31030 -+{
31031 - asm volatile(LOCK_PREFIX "incq %0"
31032 - : "=m" (v->counter)
31033 - : "m" (v->counter));
31034 -@@ -283,7 +559,28 @@ static inline void atomic64_inc(atomic64
31035 - */
31036 - static inline void atomic64_dec(atomic64_t *v)
31037 - {
31038 -- asm volatile(LOCK_PREFIX "decq %0"
31039 -+ asm volatile(LOCK_PREFIX "decq %0\n"
31040 -+
31041 -+#ifdef CONFIG_PAX_REFCOUNT
31042 -+ "jno 0f\n"
31043 -+ LOCK_PREFIX "incq %0\n"
31044 -+ "int $4\n0:\n"
31045 -+ _ASM_EXTABLE(0b, 0b)
31046 -+#endif
31047 -+
31048 -+ : "=m" (v->counter)
31049 -+ : "m" (v->counter));
31050 -+}
31051 -+
31052 -+/**
31053 -+ * atomic64_dec_unchecked - decrement atomic64 variable
31054 -+ * @v: pointer to type atomic64_t
31055 -+ *
31056 -+ * Atomically decrements @v by 1.
31057 -+ */
31058 -+static inline void atomic64_dec_unchecked(atomic64_unchecked_t *v)
31059 -+{
31060 -+ asm volatile(LOCK_PREFIX "decq %0\n"
31061 - : "=m" (v->counter)
31062 - : "m" (v->counter));
31063 - }
31064 -@@ -300,7 +597,16 @@ static inline int atomic64_dec_and_test(
31065 - {
31066 - unsigned char c;
31067 -
31068 -- asm volatile(LOCK_PREFIX "decq %0; sete %1"
31069 -+ asm volatile(LOCK_PREFIX "decq %0\n"
31070 -+
31071 -+#ifdef CONFIG_PAX_REFCOUNT
31072 -+ "jno 0f\n"
31073 -+ LOCK_PREFIX "incq %0\n"
31074 -+ "int $4\n0:\n"
31075 -+ _ASM_EXTABLE(0b, 0b)
31076 -+#endif
31077 -+
31078 -+ "sete %1\n"
31079 - : "=m" (v->counter), "=qm" (c)
31080 - : "m" (v->counter) : "memory");
31081 - return c != 0;
31082 -@@ -318,7 +624,16 @@ static inline int atomic64_inc_and_test(
31083 - {
31084 - unsigned char c;
31085 -
31086 -- asm volatile(LOCK_PREFIX "incq %0; sete %1"
31087 -+ asm volatile(LOCK_PREFIX "incq %0\n"
31088 -+
31089 -+#ifdef CONFIG_PAX_REFCOUNT
31090 -+ "jno 0f\n"
31091 -+ LOCK_PREFIX "decq %0\n"
31092 -+ "int $4\n0:\n"
31093 -+ _ASM_EXTABLE(0b, 0b)
31094 -+#endif
31095 -+
31096 -+ "sete %1\n"
31097 - : "=m" (v->counter), "=qm" (c)
31098 - : "m" (v->counter) : "memory");
31099 - return c != 0;
31100 -@@ -337,7 +652,16 @@ static inline int atomic64_add_negative(
31101 - {
31102 - unsigned char c;
31103 -
31104 -- asm volatile(LOCK_PREFIX "addq %2,%0; sets %1"
31105 -+ asm volatile(LOCK_PREFIX "addq %2,%0\n"
31106 -+
31107 -+#ifdef CONFIG_PAX_REFCOUNT
31108 -+ "jno 0f\n"
31109 -+ LOCK_PREFIX "subq %2,%0\n"
31110 -+ "int $4\n0:\n"
31111 -+ _ASM_EXTABLE(0b, 0b)
31112 -+#endif
31113 -+
31114 -+ "sets %1\n"
31115 - : "=m" (v->counter), "=qm" (c)
31116 - : "er" (i), "m" (v->counter) : "memory");
31117 - return c;
31118 -@@ -353,7 +677,31 @@ static inline int atomic64_add_negative(
31119 - static inline long atomic64_add_return(long i, atomic64_t *v)
31120 - {
31121 - long __i = i;
31122 -- asm volatile(LOCK_PREFIX "xaddq %0, %1;"
31123 -+ asm volatile(LOCK_PREFIX "xaddq %0, %1\n"
31124 -+
31125 -+#ifdef CONFIG_PAX_REFCOUNT
31126 -+ "jno 0f\n"
31127 -+ "movq %0, %1\n"
31128 -+ "int $4\n0:\n"
31129 -+ _ASM_EXTABLE(0b, 0b)
31130 ++ int __i;
31131 ++#ifdef CONFIG_M386
31132 ++ unsigned long flags;
31133 ++ if (unlikely(boot_cpu_data.x86 <= 3))
31134 ++ goto no_xadd;
31135 +#endif
31136 -+
31137 -+ : "+r" (i), "+m" (v->counter)
31138 -+ : : "memory");
31139 -+ return i + __i;
31140 -+}
31141 -+
31142 -+/**
31143 -+ * atomic64_add_return_unchecked - add and return
31144 -+ * @i: integer value to add
31145 -+ * @v: pointer to type atomic64_unchecked_t
31146 -+ *
31147 -+ * Atomically adds @i to @v and returns @i + @v
31148 -+ */
31149 -+static inline long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
31150 -+{
31151 -+ long __i = i;
31152 -+ asm volatile(LOCK_PREFIX "xaddq %0, %1"
31153 ++ /* Modern 486+ processor */
31154 ++ __i = i;
31155 + asm volatile(LOCK_PREFIX "xaddl %0, %1"
31156 : "+r" (i), "+m" (v->counter)
31157 : : "memory");
31158 - return i + __i;
31159 -@@ -365,6 +713,10 @@ static inline long atomic64_sub_return(l
31160 +@@ -208,6 +410,10 @@ static inline int atomic_sub_return(int
31161 }
31162
31163 - #define atomic64_inc_return(v) (atomic64_add_return(1, (v)))
31164 -+static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
31165 -+{
31166 -+ return atomic64_add_return_unchecked(1, v);
31167 -+}
31168 - #define atomic64_dec_return(v) (atomic64_sub_return(1, (v)))
31169 -
31170 - static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new)
31171 -@@ -372,21 +724,41 @@ static inline long atomic64_cmpxchg(atom
31172 - return cmpxchg(&v->counter, old, new);
31173 - }
31174 -
31175 -+static inline long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long old, long new)
31176 + #define atomic_inc_return(v) (atomic_add_return(1, v))
31177 ++static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
31178 +{
31179 -+ return cmpxchg(&v->counter, old, new);
31180 ++ return atomic_add_return_unchecked(1, v);
31181 +}
31182 -+
31183 - static inline long atomic64_xchg(atomic64_t *v, long new)
31184 - {
31185 - return xchg(&v->counter, new);
31186 - }
31187 + #define atomic_dec_return(v) (atomic_sub_return(1, v))
31188
31189 -+static inline long atomic64_xchg_unchecked(atomic64_unchecked_t *v, long new)
31190 -+{
31191 -+ return xchg(&v->counter, new);
31192 -+}
31193 -+
31194 - static inline long atomic_cmpxchg(atomic_t *v, int old, int new)
31195 - {
31196 + static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
31197 +@@ -215,11 +421,21 @@ static inline int atomic_cmpxchg(atomic_
31198 return cmpxchg(&v->counter, old, new);
31199 }
31200
31201 -+static inline long atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
31202 ++static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
31203 +{
31204 + return cmpxchg(&v->counter, old, new);
31205 +}
31206 +
31207 - static inline long atomic_xchg(atomic_t *v, int new)
31208 + static inline int atomic_xchg(atomic_t *v, int new)
31209 {
31210 return xchg(&v->counter, new);
31211 }
31212
31213 -+static inline long atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
31214 ++static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
31215 +{
31216 + return xchg(&v->counter, new);
31217 +}
31218 +
31219 /**
31220 - * atomic_add_unless - add unless the number is a given value
31221 + * atomic_add_unless - add unless the number is already a given value
31222 * @v: pointer of type atomic_t
31223 -@@ -398,17 +770,30 @@ static inline long atomic_xchg(atomic_t
31224 +@@ -231,21 +447,77 @@ static inline int atomic_xchg(atomic_t *
31225 */
31226 static inline int atomic_add_unless(atomic_t *v, int a, int u)
31227 {
31228 @@ -8363,44 +6967,56 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/atomic_64.h linux-2.6.32.48/arch
31229 }
31230
31231 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
31232 -@@ -424,17 +809,30 @@ static inline int atomic_add_unless(atom
31233 - */
31234 - static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
31235 - {
31236 -- long c, old;
31237 -+ long c, old, new;
31238 - c = atomic64_read(v);
31239 - for (;;) {
31240 -- if (unlikely(c == (u)))
31241 -+ if (unlikely(c == u))
31242 - break;
31243 -- old = atomic64_cmpxchg((v), c, c + (a));
31244 +
31245 ++/**
31246 ++ * atomic_inc_not_zero_hint - increment if not null
31247 ++ * @v: pointer of type atomic_t
31248 ++ * @hint: probable value of the atomic before the increment
31249 ++ *
31250 ++ * This version of atomic_inc_not_zero() gives a hint of probable
31251 ++ * value of the atomic. This helps processor to not read the memory
31252 ++ * before doing the atomic read/modify/write cycle, lowering
31253 ++ * number of bus transactions on some arches.
31254 ++ *
31255 ++ * Returns: 0 if increment was not done, 1 otherwise.
31256 ++ */
31257 ++#define atomic_inc_not_zero_hint atomic_inc_not_zero_hint
31258 ++static inline int atomic_inc_not_zero_hint(atomic_t *v, int hint)
31259 ++{
31260 ++ int val, c = hint, new;
31261 +
31262 -+ asm volatile("addq %2,%0\n"
31263 ++ /* sanity test, should be removed by compiler if hint is a constant */
31264 ++ if (!hint)
31265 ++ return atomic_inc_not_zero(v);
31266 ++
31267 ++ do {
31268 ++ asm volatile("incl %0\n"
31269 +
31270 +#ifdef CONFIG_PAX_REFCOUNT
31271 + "jno 0f\n"
31272 -+ "subq %2,%0\n"
31273 ++ "decl %0\n"
31274 + "int $4\n0:\n"
31275 + _ASM_EXTABLE(0b, 0b)
31276 +#endif
31277 +
31278 + : "=r" (new)
31279 -+ : "0" (c), "er" (a));
31280 ++ : "0" (c));
31281 +
31282 -+ old = atomic64_cmpxchg(v, c, new);
31283 - if (likely(old == c))
31284 - break;
31285 - c = old;
31286 - }
31287 -- return c != (u);
31288 -+ return c != u;
31289 - }
31290 -
31291 - /**
31292 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/bitops.h linux-2.6.32.48/arch/x86/include/asm/bitops.h
31293 ---- linux-2.6.32.48/arch/x86/include/asm/bitops.h 2009-12-02 22:51:21.000000000 -0500
31294 -+++ linux-2.6.32.48/arch/x86/include/asm/bitops.h 2011-11-12 12:46:42.000000000 -0500
31295 ++ val = atomic_cmpxchg(v, c, new);
31296 ++ if (val == c)
31297 ++ return 1;
31298 ++ c = val;
31299 ++ } while (c);
31300 ++
31301 ++ return 0;
31302 ++}
31303 ++
31304 + /*
31305 + * atomic_dec_if_positive - decrement by 1 if old value positive
31306 + * @v: pointer of type atomic_t
31307 +diff -urNp linux-3.0.8/arch/x86/include/asm/bitops.h linux-3.0.8/arch/x86/include/asm/bitops.h
31308 +--- linux-3.0.8/arch/x86/include/asm/bitops.h 2011-07-21 22:17:23.000000000 -0400
31309 ++++ linux-3.0.8/arch/x86/include/asm/bitops.h 2011-08-23 21:47:55.000000000 -0400
31310 @@ -38,7 +38,7 @@
31311 * a mask operation on a byte.
31312 */
31313 @@ -8410,9 +7026,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/bitops.h linux-2.6.32.48/arch/x8
31314 #define CONST_MASK(nr) (1 << ((nr) & 7))
31315
31316 /**
31317 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/boot.h linux-2.6.32.48/arch/x86/include/asm/boot.h
31318 ---- linux-2.6.32.48/arch/x86/include/asm/boot.h 2009-12-02 22:51:21.000000000 -0500
31319 -+++ linux-2.6.32.48/arch/x86/include/asm/boot.h 2011-11-12 12:46:42.000000000 -0500
31320 +diff -urNp linux-3.0.8/arch/x86/include/asm/boot.h linux-3.0.8/arch/x86/include/asm/boot.h
31321 +--- linux-3.0.8/arch/x86/include/asm/boot.h 2011-07-21 22:17:23.000000000 -0400
31322 ++++ linux-3.0.8/arch/x86/include/asm/boot.h 2011-08-23 21:47:55.000000000 -0400
31323 @@ -11,10 +11,15 @@
31324 #include <asm/pgtable_types.h>
31325
31326 @@ -8430,102 +7046,40 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/boot.h linux-2.6.32.48/arch/x86/
31327 /* Minimum kernel alignment, as a power of two */
31328 #ifdef CONFIG_X86_64
31329 #define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT
31330 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/cacheflush.h linux-2.6.32.48/arch/x86/include/asm/cacheflush.h
31331 ---- linux-2.6.32.48/arch/x86/include/asm/cacheflush.h 2009-12-02 22:51:21.000000000 -0500
31332 -+++ linux-2.6.32.48/arch/x86/include/asm/cacheflush.h 2011-11-12 12:46:42.000000000 -0500
31333 -@@ -60,7 +60,7 @@ PAGEFLAG(WC, WC)
31334 - static inline unsigned long get_page_memtype(struct page *pg)
31335 - {
31336 - if (!PageUncached(pg) && !PageWC(pg))
31337 +diff -urNp linux-3.0.8/arch/x86/include/asm/cacheflush.h linux-3.0.8/arch/x86/include/asm/cacheflush.h
31338 +--- linux-3.0.8/arch/x86/include/asm/cacheflush.h 2011-07-21 22:17:23.000000000 -0400
31339 ++++ linux-3.0.8/arch/x86/include/asm/cacheflush.h 2011-08-23 21:47:55.000000000 -0400
31340 +@@ -26,7 +26,7 @@ static inline unsigned long get_page_mem
31341 + unsigned long pg_flags = pg->flags & _PGMT_MASK;
31342 +
31343 + if (pg_flags == _PGMT_DEFAULT)
31344 - return -1;
31345 + return ~0UL;
31346 - else if (!PageUncached(pg) && PageWC(pg))
31347 + else if (pg_flags == _PGMT_WC)
31348 return _PAGE_CACHE_WC;
31349 - else if (PageUncached(pg) && !PageWC(pg))
31350 -@@ -85,7 +85,7 @@ static inline void set_page_memtype(stru
31351 - SetPageWC(pg);
31352 - break;
31353 - default:
31354 -- case -1:
31355 -+ case ~0UL:
31356 - ClearPageUncached(pg);
31357 - ClearPageWC(pg);
31358 - break;
31359 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/cache.h linux-2.6.32.48/arch/x86/include/asm/cache.h
31360 ---- linux-2.6.32.48/arch/x86/include/asm/cache.h 2009-12-02 22:51:21.000000000 -0500
31361 -+++ linux-2.6.32.48/arch/x86/include/asm/cache.h 2011-11-12 12:46:42.000000000 -0500
31362 -@@ -5,9 +5,10 @@
31363 + else if (pg_flags == _PGMT_UC_MINUS)
31364 +diff -urNp linux-3.0.8/arch/x86/include/asm/cache.h linux-3.0.8/arch/x86/include/asm/cache.h
31365 +--- linux-3.0.8/arch/x86/include/asm/cache.h 2011-07-21 22:17:23.000000000 -0400
31366 ++++ linux-3.0.8/arch/x86/include/asm/cache.h 2011-08-23 21:47:55.000000000 -0400
31367 +@@ -5,12 +5,13 @@
31368
31369 /* L1 cache line size */
31370 #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
31371 -#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
31372 +#define L1_CACHE_BYTES (_AC(1,UL) << L1_CACHE_SHIFT)
31373
31374 - #define __read_mostly __attribute__((__section__(".data.read_mostly")))
31375 -+#define __read_only __attribute__((__section__(".data.read_only")))
31376 + #define __read_mostly __attribute__((__section__(".data..read_mostly")))
31377 ++#define __read_only __attribute__((__section__(".data..read_only")))
31378
31379 - #ifdef CONFIG_X86_VSMP
31380 - /* vSMP Internode cacheline shift */
31381 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/calling.h linux-2.6.32.48/arch/x86/include/asm/calling.h
31382 ---- linux-2.6.32.48/arch/x86/include/asm/calling.h 2009-12-02 22:51:21.000000000 -0500
31383 -+++ linux-2.6.32.48/arch/x86/include/asm/calling.h 2011-11-12 12:46:42.000000000 -0500
31384 -@@ -52,32 +52,32 @@ For 32-bit we have the following convent
31385 - * for assembly code:
31386 - */
31387 + #define INTERNODE_CACHE_SHIFT CONFIG_X86_INTERNODE_CACHE_SHIFT
31388 +-#define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT)
31389 ++#define INTERNODE_CACHE_BYTES (_AC(1,UL) << INTERNODE_CACHE_SHIFT)
31390
31391 --#define R15 0
31392 --#define R14 8
31393 --#define R13 16
31394 --#define R12 24
31395 --#define RBP 32
31396 --#define RBX 40
31397 -+#define R15 (0)
31398 -+#define R14 (8)
31399 -+#define R13 (16)
31400 -+#define R12 (24)
31401 -+#define RBP (32)
31402 -+#define RBX (40)
31403 -
31404 - /* arguments: interrupts/non tracing syscalls only save up to here: */
31405 --#define R11 48
31406 --#define R10 56
31407 --#define R9 64
31408 --#define R8 72
31409 --#define RAX 80
31410 --#define RCX 88
31411 --#define RDX 96
31412 --#define RSI 104
31413 --#define RDI 112
31414 --#define ORIG_RAX 120 /* + error_code */
31415 -+#define R11 (48)
31416 -+#define R10 (56)
31417 -+#define R9 (64)
31418 -+#define R8 (72)
31419 -+#define RAX (80)
31420 -+#define RCX (88)
31421 -+#define RDX (96)
31422 -+#define RSI (104)
31423 -+#define RDI (112)
31424 -+#define ORIG_RAX (120) /* + error_code */
31425 - /* end of arguments */
31426 -
31427 - /* cpu exception frame or undefined in case of fast syscall: */
31428 --#define RIP 128
31429 --#define CS 136
31430 --#define EFLAGS 144
31431 --#define RSP 152
31432 --#define SS 160
31433 -+#define RIP (128)
31434 -+#define CS (136)
31435 -+#define EFLAGS (144)
31436 -+#define RSP (152)
31437 -+#define SS (160)
31438 -
31439 - #define ARGOFFSET R11
31440 - #define SWFRAME ORIG_RAX
31441 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/checksum_32.h linux-2.6.32.48/arch/x86/include/asm/checksum_32.h
31442 ---- linux-2.6.32.48/arch/x86/include/asm/checksum_32.h 2009-12-02 22:51:21.000000000 -0500
31443 -+++ linux-2.6.32.48/arch/x86/include/asm/checksum_32.h 2011-11-12 12:46:42.000000000 -0500
31444 + #ifdef CONFIG_X86_VSMP
31445 + #ifdef CONFIG_SMP
31446 +diff -urNp linux-3.0.8/arch/x86/include/asm/checksum_32.h linux-3.0.8/arch/x86/include/asm/checksum_32.h
31447 +--- linux-3.0.8/arch/x86/include/asm/checksum_32.h 2011-07-21 22:17:23.000000000 -0400
31448 ++++ linux-3.0.8/arch/x86/include/asm/checksum_32.h 2011-08-23 21:47:55.000000000 -0400
31449 @@ -31,6 +31,14 @@ asmlinkage __wsum csum_partial_copy_gene
31450 int len, __wsum sum,
31451 int *src_err_ptr, int *dst_err_ptr);
31452 @@ -8559,9 +7113,21 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/checksum_32.h linux-2.6.32.48/ar
31453 len, sum, NULL, err_ptr);
31454
31455 if (len)
31456 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc_defs.h linux-2.6.32.48/arch/x86/include/asm/desc_defs.h
31457 ---- linux-2.6.32.48/arch/x86/include/asm/desc_defs.h 2009-12-02 22:51:21.000000000 -0500
31458 -+++ linux-2.6.32.48/arch/x86/include/asm/desc_defs.h 2011-11-12 12:46:42.000000000 -0500
31459 +diff -urNp linux-3.0.8/arch/x86/include/asm/cpufeature.h linux-3.0.8/arch/x86/include/asm/cpufeature.h
31460 +--- linux-3.0.8/arch/x86/include/asm/cpufeature.h 2011-07-21 22:17:23.000000000 -0400
31461 ++++ linux-3.0.8/arch/x86/include/asm/cpufeature.h 2011-08-23 21:47:55.000000000 -0400
31462 +@@ -358,7 +358,7 @@ static __always_inline __pure bool __sta
31463 + ".section .discard,\"aw\",@progbits\n"
31464 + " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
31465 + ".previous\n"
31466 +- ".section .altinstr_replacement,\"ax\"\n"
31467 ++ ".section .altinstr_replacement,\"a\"\n"
31468 + "3: movb $1,%0\n"
31469 + "4:\n"
31470 + ".previous\n"
31471 +diff -urNp linux-3.0.8/arch/x86/include/asm/desc_defs.h linux-3.0.8/arch/x86/include/asm/desc_defs.h
31472 +--- linux-3.0.8/arch/x86/include/asm/desc_defs.h 2011-07-21 22:17:23.000000000 -0400
31473 ++++ linux-3.0.8/arch/x86/include/asm/desc_defs.h 2011-08-23 21:47:55.000000000 -0400
31474 @@ -31,6 +31,12 @@ struct desc_struct {
31475 unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
31476 unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
31477 @@ -8575,26 +7141,26 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc_defs.h linux-2.6.32.48/arch
31478 };
31479 } __attribute__((packed));
31480
31481 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/include/asm/desc.h
31482 ---- linux-2.6.32.48/arch/x86/include/asm/desc.h 2009-12-02 22:51:21.000000000 -0500
31483 -+++ linux-2.6.32.48/arch/x86/include/asm/desc.h 2011-11-12 12:46:42.000000000 -0500
31484 +diff -urNp linux-3.0.8/arch/x86/include/asm/desc.h linux-3.0.8/arch/x86/include/asm/desc.h
31485 +--- linux-3.0.8/arch/x86/include/asm/desc.h 2011-07-21 22:17:23.000000000 -0400
31486 ++++ linux-3.0.8/arch/x86/include/asm/desc.h 2011-08-23 21:47:55.000000000 -0400
31487 @@ -4,6 +4,7 @@
31488 #include <asm/desc_defs.h>
31489 #include <asm/ldt.h>
31490 #include <asm/mmu.h>
31491 +#include <asm/pgtable.h>
31492 +
31493 #include <linux/smp.h>
31494
31495 - static inline void fill_ldt(struct desc_struct *desc,
31496 -@@ -15,6 +16,7 @@ static inline void fill_ldt(struct desc_
31497 - desc->base1 = (info->base_addr & 0x00ff0000) >> 16;
31498 - desc->type = (info->read_exec_only ^ 1) << 1;
31499 - desc->type |= info->contents << 2;
31500 -+ desc->type |= info->seg_not_present ^ 1;
31501 - desc->s = 1;
31502 - desc->dpl = 0x3;
31503 - desc->p = info->seg_not_present ^ 1;
31504 -@@ -31,16 +33,12 @@ static inline void fill_ldt(struct desc_
31505 +@@ -16,6 +17,7 @@ static inline void fill_ldt(struct desc_
31506 +
31507 + desc->type = (info->read_exec_only ^ 1) << 1;
31508 + desc->type |= info->contents << 2;
31509 ++ desc->type |= info->seg_not_present ^ 1;
31510 +
31511 + desc->s = 1;
31512 + desc->dpl = 0x3;
31513 +@@ -34,17 +36,12 @@ static inline void fill_ldt(struct desc_
31514 }
31515
31516 extern struct desc_ptr idt_descr;
31517 @@ -8603,6 +7169,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31518 -struct gdt_page {
31519 - struct desc_struct gdt[GDT_ENTRIES];
31520 -} __attribute__((aligned(PAGE_SIZE)));
31521 +-
31522 -DECLARE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page);
31523 +extern gate_desc idt_table[256];
31524
31525 @@ -8614,54 +7181,51 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31526 }
31527
31528 #ifdef CONFIG_X86_64
31529 -@@ -65,9 +63,14 @@ static inline void pack_gate(gate_desc *
31530 +@@ -69,8 +66,14 @@ static inline void pack_gate(gate_desc *
31531 unsigned long base, unsigned dpl, unsigned flags,
31532 unsigned short seg)
31533 {
31534 - gate->a = (seg << 16) | (base & 0xffff);
31535 -- gate->b = (base & 0xffff0000) |
31536 -- (((0x80 | type | (dpl << 5)) & 0xff) << 8);
31537 -+ gate->gate.offset_low = base;
31538 -+ gate->gate.seg = seg;
31539 -+ gate->gate.reserved = 0;
31540 -+ gate->gate.type = type;
31541 -+ gate->gate.s = 0;
31542 -+ gate->gate.dpl = dpl;
31543 -+ gate->gate.p = 1;
31544 -+ gate->gate.offset_high = base >> 16;
31545 +- gate->b = (base & 0xffff0000) | (((0x80 | type | (dpl << 5)) & 0xff) << 8);
31546 ++ gate->gate.offset_low = base;
31547 ++ gate->gate.seg = seg;
31548 ++ gate->gate.reserved = 0;
31549 ++ gate->gate.type = type;
31550 ++ gate->gate.s = 0;
31551 ++ gate->gate.dpl = dpl;
31552 ++ gate->gate.p = 1;
31553 ++ gate->gate.offset_high = base >> 16;
31554 }
31555
31556 #endif
31557 -@@ -115,13 +118,17 @@ static inline void paravirt_free_ldt(str
31558 - static inline void native_write_idt_entry(gate_desc *idt, int entry,
31559 - const gate_desc *gate)
31560 +@@ -115,12 +118,16 @@ static inline void paravirt_free_ldt(str
31561 +
31562 + static inline void native_write_idt_entry(gate_desc *idt, int entry, const gate_desc *gate)
31563 {
31564 + pax_open_kernel();
31565 memcpy(&idt[entry], gate, sizeof(*gate));
31566 + pax_close_kernel();
31567 }
31568
31569 - static inline void native_write_ldt_entry(struct desc_struct *ldt, int entry,
31570 - const void *desc)
31571 + static inline void native_write_ldt_entry(struct desc_struct *ldt, int entry, const void *desc)
31572 {
31573 + pax_open_kernel();
31574 memcpy(&ldt[entry], desc, 8);
31575 + pax_close_kernel();
31576 }
31577
31578 - static inline void native_write_gdt_entry(struct desc_struct *gdt, int entry,
31579 -@@ -139,7 +146,10 @@ static inline void native_write_gdt_entr
31580 - size = sizeof(struct desc_struct);
31581 - break;
31582 + static inline void
31583 +@@ -134,7 +141,9 @@ native_write_gdt_entry(struct desc_struc
31584 + default: size = sizeof(*gdt); break;
31585 }
31586 -+
31587 +
31588 + pax_open_kernel();
31589 memcpy(&gdt[entry], desc, size);
31590 + pax_close_kernel();
31591 }
31592
31593 static inline void pack_descriptor(struct desc_struct *desc, unsigned long base,
31594 -@@ -211,7 +221,9 @@ static inline void native_set_ldt(const
31595 +@@ -207,7 +216,9 @@ static inline void native_set_ldt(const
31596
31597 static inline void native_load_tr_desc(void)
31598 {
31599 @@ -8671,9 +7235,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31600 }
31601
31602 static inline void native_load_gdt(const struct desc_ptr *dtr)
31603 -@@ -246,8 +258,10 @@ static inline void native_load_tls(struc
31604 - unsigned int i;
31605 +@@ -244,8 +255,10 @@ static inline void native_load_tls(struc
31606 struct desc_struct *gdt = get_cpu_gdt_table(cpu);
31607 + unsigned int i;
31608
31609 + pax_open_kernel();
31610 for (i = 0; i < GDT_ENTRY_TLS_ENTRIES; i++)
31611 @@ -8682,7 +7246,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31612 }
31613
31614 #define _LDT_empty(info) \
31615 -@@ -309,7 +323,7 @@ static inline void set_desc_limit(struct
31616 +@@ -307,7 +320,7 @@ static inline void set_desc_limit(struct
31617 desc->limit = (limit >> 16) & 0xf;
31618 }
31619
31620 @@ -8691,7 +7255,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31621 unsigned dpl, unsigned ist, unsigned seg)
31622 {
31623 gate_desc s;
31624 -@@ -327,7 +341,7 @@ static inline void _set_gate(int gate, u
31625 +@@ -326,7 +339,7 @@ static inline void _set_gate(int gate, u
31626 * Pentium F0 0F bugfix can have resulted in the mapped
31627 * IDT being write-protected.
31628 */
31629 @@ -8700,7 +7264,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31630 {
31631 BUG_ON((unsigned)n > 0xFF);
31632 _set_gate(n, GATE_INTERRUPT, addr, 0, 0, __KERNEL_CS);
31633 -@@ -356,19 +370,19 @@ static inline void alloc_intr_gate(unsig
31634 +@@ -356,19 +369,19 @@ static inline void alloc_intr_gate(unsig
31635 /*
31636 * This routine sets up an interrupt gate at directory privilege level 3.
31637 */
31638 @@ -8723,7 +7287,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31639 {
31640 BUG_ON((unsigned)n > 0xFF);
31641 _set_gate(n, GATE_TRAP, addr, 0, 0, __KERNEL_CS);
31642 -@@ -377,19 +391,31 @@ static inline void set_trap_gate(unsigne
31643 +@@ -377,19 +390,31 @@ static inline void set_trap_gate(unsigne
31644 static inline void set_task_gate(unsigned int n, unsigned int gdt_entry)
31645 {
31646 BUG_ON((unsigned)n > 0xFF);
31647 @@ -8758,76 +7322,22 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/desc.h linux-2.6.32.48/arch/x86/
31648 +#endif
31649 +
31650 #endif /* _ASM_X86_DESC_H */
31651 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/device.h linux-2.6.32.48/arch/x86/include/asm/device.h
31652 ---- linux-2.6.32.48/arch/x86/include/asm/device.h 2009-12-02 22:51:21.000000000 -0500
31653 -+++ linux-2.6.32.48/arch/x86/include/asm/device.h 2011-11-12 12:46:42.000000000 -0500
31654 -@@ -6,7 +6,7 @@ struct dev_archdata {
31655 - void *acpi_handle;
31656 - #endif
31657 - #ifdef CONFIG_X86_64
31658 --struct dma_map_ops *dma_ops;
31659 -+ const struct dma_map_ops *dma_ops;
31660 - #endif
31661 - #ifdef CONFIG_DMAR
31662 - void *iommu; /* hook for IOMMU specific extension */
31663 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h
31664 ---- linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
31665 -+++ linux-2.6.32.48/arch/x86/include/asm/dma-mapping.h 2011-11-12 12:46:42.000000000 -0500
31666 -@@ -25,9 +25,9 @@ extern int iommu_merge;
31667 - extern struct device x86_dma_fallback_dev;
31668 - extern int panic_on_overflow;
31669 -
31670 --extern struct dma_map_ops *dma_ops;
31671 -+extern const struct dma_map_ops *dma_ops;
31672 -
31673 --static inline struct dma_map_ops *get_dma_ops(struct device *dev)
31674 -+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
31675 - {
31676 - #ifdef CONFIG_X86_32
31677 - return dma_ops;
31678 -@@ -44,7 +44,7 @@ static inline struct dma_map_ops *get_dm
31679 - /* Make sure we keep the same behaviour */
31680 - static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
31681 - {
31682 -- struct dma_map_ops *ops = get_dma_ops(dev);
31683 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
31684 - if (ops->mapping_error)
31685 - return ops->mapping_error(dev, dma_addr);
31686 -
31687 -@@ -122,7 +122,7 @@ static inline void *
31688 - dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
31689 - gfp_t gfp)
31690 - {
31691 -- struct dma_map_ops *ops = get_dma_ops(dev);
31692 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
31693 - void *memory;
31694 -
31695 - gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32);
31696 -@@ -149,7 +149,7 @@ dma_alloc_coherent(struct device *dev, s
31697 - static inline void dma_free_coherent(struct device *dev, size_t size,
31698 - void *vaddr, dma_addr_t bus)
31699 - {
31700 -- struct dma_map_ops *ops = get_dma_ops(dev);
31701 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
31702 -
31703 - WARN_ON(irqs_disabled()); /* for portability */
31704 -
31705 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/e820.h linux-2.6.32.48/arch/x86/include/asm/e820.h
31706 ---- linux-2.6.32.48/arch/x86/include/asm/e820.h 2009-12-02 22:51:21.000000000 -0500
31707 -+++ linux-2.6.32.48/arch/x86/include/asm/e820.h 2011-11-12 12:46:42.000000000 -0500
31708 -@@ -133,7 +133,7 @@ extern char *default_machine_specific_me
31709 +diff -urNp linux-3.0.8/arch/x86/include/asm/e820.h linux-3.0.8/arch/x86/include/asm/e820.h
31710 +--- linux-3.0.8/arch/x86/include/asm/e820.h 2011-07-21 22:17:23.000000000 -0400
31711 ++++ linux-3.0.8/arch/x86/include/asm/e820.h 2011-08-23 21:47:55.000000000 -0400
31712 +@@ -69,7 +69,7 @@ struct e820map {
31713 + #define ISA_START_ADDRESS 0xa0000
31714 #define ISA_END_ADDRESS 0x100000
31715 - #define is_ISA_range(s, e) ((s) >= ISA_START_ADDRESS && (e) < ISA_END_ADDRESS)
31716
31717 -#define BIOS_BEGIN 0x000a0000
31718 +#define BIOS_BEGIN 0x000c0000
31719 #define BIOS_END 0x00100000
31720
31721 - #ifdef __KERNEL__
31722 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/elf.h linux-2.6.32.48/arch/x86/include/asm/elf.h
31723 ---- linux-2.6.32.48/arch/x86/include/asm/elf.h 2011-11-12 12:44:28.000000000 -0500
31724 -+++ linux-2.6.32.48/arch/x86/include/asm/elf.h 2011-11-12 12:46:42.000000000 -0500
31725 -@@ -257,7 +257,25 @@ extern int force_personality32;
31726 + #define BIOS_ROM_BASE 0xffe00000
31727 +diff -urNp linux-3.0.8/arch/x86/include/asm/elf.h linux-3.0.8/arch/x86/include/asm/elf.h
31728 +--- linux-3.0.8/arch/x86/include/asm/elf.h 2011-07-21 22:17:23.000000000 -0400
31729 ++++ linux-3.0.8/arch/x86/include/asm/elf.h 2011-08-23 21:47:55.000000000 -0400
31730 +@@ -237,7 +237,25 @@ extern int force_personality32;
31731 the loader. We need to make sure that it is out of the way of the program
31732 that it will "exec", and that there is sufficient room for the brk. */
31733
31734 @@ -8853,7 +7363,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/elf.h linux-2.6.32.48/arch/x86/i
31735
31736 /* This yields a mask that user programs can use to figure out what
31737 instruction set this CPU supports. This could be done in user space,
31738 -@@ -310,9 +328,7 @@ do { \
31739 +@@ -290,9 +308,7 @@ do { \
31740
31741 #define ARCH_DLINFO \
31742 do { \
31743 @@ -8864,7 +7374,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/elf.h linux-2.6.32.48/arch/x86/i
31744 } while (0)
31745
31746 #define AT_SYSINFO 32
31747 -@@ -323,7 +339,7 @@ do { \
31748 +@@ -303,7 +319,7 @@ do { \
31749
31750 #endif /* !CONFIG_X86_32 */
31751
31752 @@ -8873,7 +7383,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/elf.h linux-2.6.32.48/arch/x86/i
31753
31754 #define VDSO_ENTRY \
31755 ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall))
31756 -@@ -337,7 +353,4 @@ extern int arch_setup_additional_pages(s
31757 +@@ -317,7 +333,4 @@ extern int arch_setup_additional_pages(s
31758 extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
31759 #define compat_arch_setup_additional_pages syscall32_setup_pages
31760
31761 @@ -8881,9 +7391,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/elf.h linux-2.6.32.48/arch/x86/i
31762 -#define arch_randomize_brk arch_randomize_brk
31763 -
31764 #endif /* _ASM_X86_ELF_H */
31765 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h
31766 ---- linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h 2009-12-02 22:51:21.000000000 -0500
31767 -+++ linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h 2011-11-12 12:46:42.000000000 -0500
31768 +diff -urNp linux-3.0.8/arch/x86/include/asm/emergency-restart.h linux-3.0.8/arch/x86/include/asm/emergency-restart.h
31769 +--- linux-3.0.8/arch/x86/include/asm/emergency-restart.h 2011-07-21 22:17:23.000000000 -0400
31770 ++++ linux-3.0.8/arch/x86/include/asm/emergency-restart.h 2011-08-23 21:47:55.000000000 -0400
31771 @@ -15,6 +15,6 @@ enum reboot_type {
31772
31773 extern enum reboot_type reboot_type;
31774 @@ -8892,9 +7402,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/emergency-restart.h linux-2.6.32
31775 +extern void machine_emergency_restart(void) __noreturn;
31776
31777 #endif /* _ASM_X86_EMERGENCY_RESTART_H */
31778 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/futex.h linux-2.6.32.48/arch/x86/include/asm/futex.h
31779 ---- linux-2.6.32.48/arch/x86/include/asm/futex.h 2009-12-02 22:51:21.000000000 -0500
31780 -+++ linux-2.6.32.48/arch/x86/include/asm/futex.h 2011-11-12 12:46:42.000000000 -0500
31781 +diff -urNp linux-3.0.8/arch/x86/include/asm/futex.h linux-3.0.8/arch/x86/include/asm/futex.h
31782 +--- linux-3.0.8/arch/x86/include/asm/futex.h 2011-07-21 22:17:23.000000000 -0400
31783 ++++ linux-3.0.8/arch/x86/include/asm/futex.h 2011-10-06 04:17:55.000000000 -0400
31784 @@ -12,16 +12,18 @@
31785 #include <asm/system.h>
31786
31787 @@ -8915,7 +7425,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/futex.h linux-2.6.32.48/arch/x86
31788 asm volatile("1:\tmovl %2, %0\n" \
31789 "\tmovl\t%0, %3\n" \
31790 "\t" insn "\n" \
31791 -@@ -34,10 +36,10 @@
31792 +@@ -34,7 +36,7 @@
31793 _ASM_EXTABLE(1b, 4b) \
31794 _ASM_EXTABLE(2b, 4b) \
31795 : "=&a" (oldval), "=&r" (ret), \
31796 @@ -8923,11 +7433,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/futex.h linux-2.6.32.48/arch/x86
31797 + "+m" (*(u32 __user *)____m(uaddr)), "=&r" (tem) \
31798 : "r" (oparg), "i" (-EFAULT), "1" (0))
31799
31800 --static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr)
31801 -+static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
31802 - {
31803 - int op = (encoded_op >> 28) & 7;
31804 - int cmp = (encoded_op >> 24) & 15;
31805 + static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
31806 @@ -61,10 +63,10 @@ static inline int futex_atomic_op_inuser
31807
31808 switch (op) {
31809 @@ -8941,39 +7447,26 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/futex.h linux-2.6.32.48/arch/x86
31810 uaddr, oparg);
31811 break;
31812 case FUTEX_OP_OR:
31813 -@@ -109,7 +111,7 @@ static inline int futex_atomic_op_inuser
31814 - return ret;
31815 - }
31816 -
31817 --static inline int futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval,
31818 -+static inline int futex_atomic_cmpxchg_inatomic(u32 __user *uaddr, int oldval,
31819 - int newval)
31820 - {
31821 -
31822 -@@ -119,16 +121,16 @@ static inline int futex_atomic_cmpxchg_i
31823 - return -ENOSYS;
31824 - #endif
31825 -
31826 -- if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
31827 -+ if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
31828 +@@ -123,13 +125,13 @@ static inline int futex_atomic_cmpxchg_i
31829 + if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
31830 return -EFAULT;
31831
31832 -- asm volatile("1:\t" LOCK_PREFIX "cmpxchgl %3, %1\n"
31833 -+ asm volatile("1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgl %3, %1\n"
31834 +- asm volatile("1:\t" LOCK_PREFIX "cmpxchgl %4, %2\n"
31835 ++ asm volatile("1:\t" LOCK_PREFIX __copyuser_seg"cmpxchgl %4, %2\n"
31836 "2:\t.section .fixup, \"ax\"\n"
31837 - "3:\tmov %2, %0\n"
31838 + "3:\tmov %3, %0\n"
31839 "\tjmp 2b\n"
31840 "\t.previous\n"
31841 _ASM_EXTABLE(1b, 3b)
31842 -- : "=a" (oldval), "+m" (*uaddr)
31843 -+ : "=a" (oldval), "+m" (*(u32 *)____m(uaddr))
31844 - : "i" (-EFAULT), "r" (newval), "0" (oldval)
31845 +- : "+r" (ret), "=a" (oldval), "+m" (*uaddr)
31846 ++ : "+r" (ret), "=a" (oldval), "+m" (*(u32 __user *)____m(uaddr))
31847 + : "i" (-EFAULT), "r" (newval), "1" (oldval)
31848 : "memory"
31849 );
31850 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/hw_irq.h linux-2.6.32.48/arch/x86/include/asm/hw_irq.h
31851 ---- linux-2.6.32.48/arch/x86/include/asm/hw_irq.h 2009-12-02 22:51:21.000000000 -0500
31852 -+++ linux-2.6.32.48/arch/x86/include/asm/hw_irq.h 2011-11-12 12:46:42.000000000 -0500
31853 -@@ -92,8 +92,8 @@ extern void setup_ioapic_dest(void);
31854 +diff -urNp linux-3.0.8/arch/x86/include/asm/hw_irq.h linux-3.0.8/arch/x86/include/asm/hw_irq.h
31855 +--- linux-3.0.8/arch/x86/include/asm/hw_irq.h 2011-07-21 22:17:23.000000000 -0400
31856 ++++ linux-3.0.8/arch/x86/include/asm/hw_irq.h 2011-08-23 21:47:55.000000000 -0400
31857 +@@ -137,8 +137,8 @@ extern void setup_ioapic_dest(void);
31858 extern void enable_IO_APIC(void);
31859
31860 /* Statistics */
31861 @@ -8984,22 +7477,22 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/hw_irq.h linux-2.6.32.48/arch/x8
31862
31863 /* EISA */
31864 extern void eisa_set_level_irq(unsigned int irq);
31865 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/i387.h linux-2.6.32.48/arch/x86/include/asm/i387.h
31866 ---- linux-2.6.32.48/arch/x86/include/asm/i387.h 2009-12-02 22:51:21.000000000 -0500
31867 -+++ linux-2.6.32.48/arch/x86/include/asm/i387.h 2011-11-12 12:46:42.000000000 -0500
31868 -@@ -60,6 +60,11 @@ static inline int fxrstor_checking(struc
31869 +diff -urNp linux-3.0.8/arch/x86/include/asm/i387.h linux-3.0.8/arch/x86/include/asm/i387.h
31870 +--- linux-3.0.8/arch/x86/include/asm/i387.h 2011-07-21 22:17:23.000000000 -0400
31871 ++++ linux-3.0.8/arch/x86/include/asm/i387.h 2011-10-06 04:17:55.000000000 -0400
31872 +@@ -92,6 +92,11 @@ static inline int fxrstor_checking(struc
31873 {
31874 int err;
31875
31876 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
31877 + if ((unsigned long)fx < PAX_USER_SHADOW_BASE)
31878 -+ fx = (struct i387_fxsave_struct *)((void *)fx + PAX_USER_SHADOW_BASE);
31879 ++ fx = (struct i387_fxsave_struct __user *)((void *)fx + PAX_USER_SHADOW_BASE);
31880 +#endif
31881 +
31882 - asm volatile("1: rex64/fxrstor (%[fx])\n\t"
31883 - "2:\n"
31884 - ".section .fixup,\"ax\"\n"
31885 -@@ -105,6 +110,11 @@ static inline int fxsave_user(struct i38
31886 + /* See comment in fxsave() below. */
31887 + #ifdef CONFIG_AS_FXSAVEQ
31888 + asm volatile("1: fxrstorq %[fx]\n\t"
31889 +@@ -121,6 +126,11 @@ static inline int fxsave_user(struct i38
31890 {
31891 int err;
31892
31893 @@ -9008,11 +7501,11 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/i387.h linux-2.6.32.48/arch/x86/
31894 + fx = (struct i387_fxsave_struct __user *)((void __user *)fx + PAX_USER_SHADOW_BASE);
31895 +#endif
31896 +
31897 - asm volatile("1: rex64/fxsave (%[fx])\n\t"
31898 - "2:\n"
31899 - ".section .fixup,\"ax\"\n"
31900 -@@ -195,13 +205,8 @@ static inline int fxrstor_checking(struc
31901 - }
31902 + /*
31903 + * Clear the bytes not touched by the fxsave and reserved
31904 + * for the SW usage.
31905 +@@ -213,13 +223,8 @@ static inline void fpu_fxsave(struct fpu
31906 + #endif /* CONFIG_X86_64 */
31907
31908 /* We need a safe address that is cheap to find and that is already
31909 - in L1 during context switch. The best choices are unfortunately
31910 @@ -9027,7 +7520,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/i387.h linux-2.6.32.48/arch/x86/
31911
31912 /*
31913 * These must be called with preempt disabled
31914 -@@ -291,7 +296,7 @@ static inline void kernel_fpu_begin(void
31915 +@@ -312,7 +317,7 @@ static inline void kernel_fpu_begin(void
31916 struct thread_info *me = current_thread_info();
31917 preempt_disable();
31918 if (me->status & TS_USEDFPU)
31919 @@ -9036,39 +7529,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/i387.h linux-2.6.32.48/arch/x86/
31920 else
31921 clts();
31922 }
31923 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/io_32.h linux-2.6.32.48/arch/x86/include/asm/io_32.h
31924 ---- linux-2.6.32.48/arch/x86/include/asm/io_32.h 2009-12-02 22:51:21.000000000 -0500
31925 -+++ linux-2.6.32.48/arch/x86/include/asm/io_32.h 2011-11-12 12:46:42.000000000 -0500
31926 -@@ -3,6 +3,7 @@
31927 -
31928 - #include <linux/string.h>
31929 - #include <linux/compiler.h>
31930 -+#include <asm/processor.h>
31931 -
31932 - /*
31933 - * This file contains the definitions for the x86 IO instructions
31934 -@@ -42,6 +43,17 @@
31935 -
31936 - #ifdef __KERNEL__
31937 -
31938 -+#define ARCH_HAS_VALID_PHYS_ADDR_RANGE
31939 -+static inline int valid_phys_addr_range(unsigned long addr, size_t count)
31940 -+{
31941 -+ return ((addr + count + PAGE_SIZE - 1) >> PAGE_SHIFT) < (1ULL << (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) ? 1 : 0;
31942 -+}
31943 -+
31944 -+static inline int valid_mmap_phys_addr_range(unsigned long pfn, size_t count)
31945 -+{
31946 -+ return (pfn + (count >> PAGE_SHIFT)) < (1ULL << (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) ? 1 : 0;
31947 -+}
31948 -+
31949 - #include <asm-generic/iomap.h>
31950 -
31951 - #include <linux/vmalloc.h>
31952 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/io_64.h linux-2.6.32.48/arch/x86/include/asm/io_64.h
31953 ---- linux-2.6.32.48/arch/x86/include/asm/io_64.h 2009-12-02 22:51:21.000000000 -0500
31954 -+++ linux-2.6.32.48/arch/x86/include/asm/io_64.h 2011-11-12 12:46:42.000000000 -0500
31955 -@@ -140,6 +140,17 @@ __OUTS(l)
31956 +diff -urNp linux-3.0.8/arch/x86/include/asm/io.h linux-3.0.8/arch/x86/include/asm/io.h
31957 +--- linux-3.0.8/arch/x86/include/asm/io.h 2011-07-21 22:17:23.000000000 -0400
31958 ++++ linux-3.0.8/arch/x86/include/asm/io.h 2011-08-23 21:47:55.000000000 -0400
31959 +@@ -196,6 +196,17 @@ extern void set_iounmap_nonlazy(void);
31960
31961 #include <linux/vmalloc.h>
31962
31963 @@ -9083,25 +7547,13 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/io_64.h linux-2.6.32.48/arch/x86
31964 + return (pfn + (count >> PAGE_SHIFT)) < (1ULL << (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) ? 1 : 0;
31965 +}
31966 +
31967 - #include <asm-generic/iomap.h>
31968 -
31969 - void __memcpy_fromio(void *, unsigned long, unsigned);
31970 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/iommu.h linux-2.6.32.48/arch/x86/include/asm/iommu.h
31971 ---- linux-2.6.32.48/arch/x86/include/asm/iommu.h 2009-12-02 22:51:21.000000000 -0500
31972 -+++ linux-2.6.32.48/arch/x86/include/asm/iommu.h 2011-11-12 12:46:42.000000000 -0500
31973 -@@ -3,7 +3,7 @@
31974 -
31975 - extern void pci_iommu_shutdown(void);
31976 - extern void no_iommu_init(void);
31977 --extern struct dma_map_ops nommu_dma_ops;
31978 -+extern const struct dma_map_ops nommu_dma_ops;
31979 - extern int force_iommu, no_iommu;
31980 - extern int iommu_detected;
31981 - extern int iommu_pass_through;
31982 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/irqflags.h linux-2.6.32.48/arch/x86/include/asm/irqflags.h
31983 ---- linux-2.6.32.48/arch/x86/include/asm/irqflags.h 2009-12-02 22:51:21.000000000 -0500
31984 -+++ linux-2.6.32.48/arch/x86/include/asm/irqflags.h 2011-11-12 12:46:42.000000000 -0500
31985 -@@ -142,6 +142,11 @@ static inline unsigned long __raw_local_
31986 + /*
31987 + * Convert a virtual cached pointer to an uncached pointer
31988 + */
31989 +diff -urNp linux-3.0.8/arch/x86/include/asm/irqflags.h linux-3.0.8/arch/x86/include/asm/irqflags.h
31990 +--- linux-3.0.8/arch/x86/include/asm/irqflags.h 2011-07-21 22:17:23.000000000 -0400
31991 ++++ linux-3.0.8/arch/x86/include/asm/irqflags.h 2011-08-23 21:47:55.000000000 -0400
31992 +@@ -140,6 +140,11 @@ static inline unsigned long arch_local_i
31993 sti; \
31994 sysexit
31995
31996 @@ -9113,13 +7565,13 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/irqflags.h linux-2.6.32.48/arch/
31997 #else
31998 #define INTERRUPT_RETURN iret
31999 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
32000 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/kprobes.h linux-2.6.32.48/arch/x86/include/asm/kprobes.h
32001 ---- linux-2.6.32.48/arch/x86/include/asm/kprobes.h 2009-12-02 22:51:21.000000000 -0500
32002 -+++ linux-2.6.32.48/arch/x86/include/asm/kprobes.h 2011-11-12 12:46:42.000000000 -0500
32003 -@@ -34,13 +34,8 @@ typedef u8 kprobe_opcode_t;
32004 - #define BREAKPOINT_INSTRUCTION 0xcc
32005 - #define RELATIVEJUMP_INSTRUCTION 0xe9
32006 - #define MAX_INSN_SIZE 16
32007 +diff -urNp linux-3.0.8/arch/x86/include/asm/kprobes.h linux-3.0.8/arch/x86/include/asm/kprobes.h
32008 +--- linux-3.0.8/arch/x86/include/asm/kprobes.h 2011-07-21 22:17:23.000000000 -0400
32009 ++++ linux-3.0.8/arch/x86/include/asm/kprobes.h 2011-08-23 21:47:55.000000000 -0400
32010 +@@ -37,13 +37,8 @@ typedef u8 kprobe_opcode_t;
32011 + #define RELATIVEJUMP_SIZE 5
32012 + #define RELATIVECALL_OPCODE 0xe8
32013 + #define RELATIVE_ADDR_SIZE 4
32014 -#define MAX_STACK_SIZE 64
32015 -#define MIN_STACK_SIZE(ADDR) \
32016 - (((MAX_STACK_SIZE) < (((unsigned long)current_thread_info()) + \
32017 @@ -9132,24 +7584,30 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/kprobes.h linux-2.6.32.48/arch/x
32018
32019 #define flush_insn_slot(p) do { } while (0)
32020
32021 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/kvm_host.h linux-2.6.32.48/arch/x86/include/asm/kvm_host.h
32022 ---- linux-2.6.32.48/arch/x86/include/asm/kvm_host.h 2011-11-12 12:44:28.000000000 -0500
32023 -+++ linux-2.6.32.48/arch/x86/include/asm/kvm_host.h 2011-11-12 12:46:42.000000000 -0500
32024 -@@ -534,9 +534,9 @@ struct kvm_x86_ops {
32025 - bool (*gb_page_enable)(void);
32026 +diff -urNp linux-3.0.8/arch/x86/include/asm/kvm_host.h linux-3.0.8/arch/x86/include/asm/kvm_host.h
32027 +--- linux-3.0.8/arch/x86/include/asm/kvm_host.h 2011-07-21 22:17:23.000000000 -0400
32028 ++++ linux-3.0.8/arch/x86/include/asm/kvm_host.h 2011-08-26 19:49:56.000000000 -0400
32029 +@@ -441,7 +441,7 @@ struct kvm_arch {
32030 + unsigned int n_used_mmu_pages;
32031 + unsigned int n_requested_mmu_pages;
32032 + unsigned int n_max_mmu_pages;
32033 +- atomic_t invlpg_counter;
32034 ++ atomic_unchecked_t invlpg_counter;
32035 + struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
32036 + /*
32037 + * Hash table of struct kvm_mmu_page.
32038 +@@ -619,7 +619,7 @@ struct kvm_x86_ops {
32039 + enum x86_intercept_stage stage);
32040
32041 const struct trace_print_flags *exit_reasons_str;
32042 -};
32043 +} __do_const;
32044
32045 --extern struct kvm_x86_ops *kvm_x86_ops;
32046 -+extern const struct kvm_x86_ops *kvm_x86_ops;
32047 -
32048 - int kvm_mmu_module_init(void);
32049 - void kvm_mmu_module_exit(void);
32050 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/local.h linux-2.6.32.48/arch/x86/include/asm/local.h
32051 ---- linux-2.6.32.48/arch/x86/include/asm/local.h 2009-12-02 22:51:21.000000000 -0500
32052 -+++ linux-2.6.32.48/arch/x86/include/asm/local.h 2011-11-12 12:46:42.000000000 -0500
32053 + struct kvm_arch_async_pf {
32054 + u32 token;
32055 +diff -urNp linux-3.0.8/arch/x86/include/asm/local.h linux-3.0.8/arch/x86/include/asm/local.h
32056 +--- linux-3.0.8/arch/x86/include/asm/local.h 2011-07-21 22:17:23.000000000 -0400
32057 ++++ linux-3.0.8/arch/x86/include/asm/local.h 2011-08-23 21:47:55.000000000 -0400
32058 @@ -18,26 +18,58 @@ typedef struct {
32059
32060 static inline void local_inc(local_t *l)
32061 @@ -9302,52 +7760,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/local.h linux-2.6.32.48/arch/x86
32062 : "+r" (i), "+m" (l->a.counter)
32063 : : "memory");
32064 return i + __i;
32065 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/microcode.h linux-2.6.32.48/arch/x86/include/asm/microcode.h
32066 ---- linux-2.6.32.48/arch/x86/include/asm/microcode.h 2009-12-02 22:51:21.000000000 -0500
32067 -+++ linux-2.6.32.48/arch/x86/include/asm/microcode.h 2011-11-12 12:46:42.000000000 -0500
32068 -@@ -12,13 +12,13 @@ struct device;
32069 - enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND };
32070 -
32071 - struct microcode_ops {
32072 -- enum ucode_state (*request_microcode_user) (int cpu,
32073 -+ enum ucode_state (* const request_microcode_user) (int cpu,
32074 - const void __user *buf, size_t size);
32075 -
32076 -- enum ucode_state (*request_microcode_fw) (int cpu,
32077 -+ enum ucode_state (* const request_microcode_fw) (int cpu,
32078 - struct device *device);
32079 -
32080 -- void (*microcode_fini_cpu) (int cpu);
32081 -+ void (* const microcode_fini_cpu) (int cpu);
32082 -
32083 - /*
32084 - * The generic 'microcode_core' part guarantees that
32085 -@@ -38,18 +38,18 @@ struct ucode_cpu_info {
32086 - extern struct ucode_cpu_info ucode_cpu_info[];
32087 -
32088 - #ifdef CONFIG_MICROCODE_INTEL
32089 --extern struct microcode_ops * __init init_intel_microcode(void);
32090 -+extern const struct microcode_ops * __init init_intel_microcode(void);
32091 - #else
32092 --static inline struct microcode_ops * __init init_intel_microcode(void)
32093 -+static inline const struct microcode_ops * __init init_intel_microcode(void)
32094 - {
32095 - return NULL;
32096 - }
32097 - #endif /* CONFIG_MICROCODE_INTEL */
32098 -
32099 - #ifdef CONFIG_MICROCODE_AMD
32100 --extern struct microcode_ops * __init init_amd_microcode(void);
32101 -+extern const struct microcode_ops * __init init_amd_microcode(void);
32102 - #else
32103 --static inline struct microcode_ops * __init init_amd_microcode(void)
32104 -+static inline const struct microcode_ops * __init init_amd_microcode(void)
32105 - {
32106 - return NULL;
32107 - }
32108 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/mman.h linux-2.6.32.48/arch/x86/include/asm/mman.h
32109 ---- linux-2.6.32.48/arch/x86/include/asm/mman.h 2009-12-02 22:51:21.000000000 -0500
32110 -+++ linux-2.6.32.48/arch/x86/include/asm/mman.h 2011-11-12 12:46:42.000000000 -0500
32111 +diff -urNp linux-3.0.8/arch/x86/include/asm/mman.h linux-3.0.8/arch/x86/include/asm/mman.h
32112 +--- linux-3.0.8/arch/x86/include/asm/mman.h 2011-07-21 22:17:23.000000000 -0400
32113 ++++ linux-3.0.8/arch/x86/include/asm/mman.h 2011-08-23 21:47:55.000000000 -0400
32114 @@ -5,4 +5,14 @@
32115
32116 #include <asm-generic/mman.h>
32117 @@ -9363,9 +7778,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mman.h linux-2.6.32.48/arch/x86/
32118 +#endif
32119 +
32120 #endif /* _ASM_X86_MMAN_H */
32121 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu_context.h linux-2.6.32.48/arch/x86/include/asm/mmu_context.h
32122 ---- linux-2.6.32.48/arch/x86/include/asm/mmu_context.h 2011-11-12 12:44:28.000000000 -0500
32123 -+++ linux-2.6.32.48/arch/x86/include/asm/mmu_context.h 2011-11-12 12:46:42.000000000 -0500
32124 +diff -urNp linux-3.0.8/arch/x86/include/asm/mmu_context.h linux-3.0.8/arch/x86/include/asm/mmu_context.h
32125 +--- linux-3.0.8/arch/x86/include/asm/mmu_context.h 2011-07-21 22:17:23.000000000 -0400
32126 ++++ linux-3.0.8/arch/x86/include/asm/mmu_context.h 2011-08-23 21:48:14.000000000 -0400
32127 @@ -24,6 +24,18 @@ void destroy_context(struct mm_struct *m
32128
32129 static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
32130 @@ -9389,7 +7804,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu_context.h linux-2.6.32.48/ar
32131 struct task_struct *tsk)
32132 {
32133 unsigned cpu = smp_processor_id();
32134 -+#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)) && defined(CONFIG_SMP)
32135 ++#if defined(CONFIG_X86_32) && defined(CONFIG_SMP) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
32136 + int tlbstate = TLBSTATE_OK;
32137 +#endif
32138
32139 @@ -9423,7 +7838,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu_context.h linux-2.6.32.48/ar
32140 - }
32141 +
32142 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP)
32143 -+ if (!nx_enabled) {
32144 ++ if (!(__supported_pte_mask & _PAGE_NX)) {
32145 + smp_mb__before_clear_bit();
32146 + cpu_clear(cpu, prev->context.cpu_user_cs_mask);
32147 + smp_mb__after_clear_bit();
32148 @@ -9468,13 +7883,13 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu_context.h linux-2.6.32.48/ar
32149 load_LDT_nolock(&next->context);
32150 +
32151 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
32152 -+ if (!nx_enabled)
32153 ++ if (!(__supported_pte_mask & _PAGE_NX))
32154 + cpu_set(cpu, next->context.cpu_user_cs_mask);
32155 +#endif
32156 +
32157 +#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC))
32158 +#ifdef CONFIG_PAX_PAGEEXEC
32159 -+ if (!((next->pax_flags & MF_PAX_PAGEEXEC) && nx_enabled))
32160 ++ if (!((next->pax_flags & MF_PAX_PAGEEXEC) && (__supported_pte_mask & _PAGE_NX)))
32161 +#endif
32162 + set_user_cs(next->context.user_cs_base, next->context.user_cs_limit, cpu);
32163 +#endif
32164 @@ -9486,16 +7901,21 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu_context.h linux-2.6.32.48/ar
32165 }
32166
32167 #define activate_mm(prev, next) \
32168 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu.h linux-2.6.32.48/arch/x86/include/asm/mmu.h
32169 ---- linux-2.6.32.48/arch/x86/include/asm/mmu.h 2009-12-02 22:51:21.000000000 -0500
32170 -+++ linux-2.6.32.48/arch/x86/include/asm/mmu.h 2011-11-12 12:46:42.000000000 -0500
32171 -@@ -9,10 +9,23 @@
32172 +diff -urNp linux-3.0.8/arch/x86/include/asm/mmu.h linux-3.0.8/arch/x86/include/asm/mmu.h
32173 +--- linux-3.0.8/arch/x86/include/asm/mmu.h 2011-07-21 22:17:23.000000000 -0400
32174 ++++ linux-3.0.8/arch/x86/include/asm/mmu.h 2011-08-23 21:47:55.000000000 -0400
32175 +@@ -9,7 +9,7 @@
32176 * we put the segment information here.
32177 */
32178 typedef struct {
32179 - void *ldt;
32180 + struct desc_struct *ldt;
32181 int size;
32182 +
32183 + #ifdef CONFIG_X86_64
32184 +@@ -18,7 +18,19 @@ typedef struct {
32185 + #endif
32186 +
32187 struct mutex lock;
32188 - void *vdso;
32189 + unsigned long vdso;
32190 @@ -9511,13 +7931,12 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/mmu.h linux-2.6.32.48/arch/x86/i
32191 +
32192 +#endif
32193 +#endif
32194 -+
32195 } mm_context_t;
32196
32197 #ifdef CONFIG_SMP
32198 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/module.h linux-2.6.32.48/arch/x86/include/asm/module.h
32199 ---- linux-2.6.32.48/arch/x86/include/asm/module.h 2009-12-02 22:51:21.000000000 -0500
32200 -+++ linux-2.6.32.48/arch/x86/include/asm/module.h 2011-11-12 12:46:42.000000000 -0500
32201 +diff -urNp linux-3.0.8/arch/x86/include/asm/module.h linux-3.0.8/arch/x86/include/asm/module.h
32202 +--- linux-3.0.8/arch/x86/include/asm/module.h 2011-07-21 22:17:23.000000000 -0400
32203 ++++ linux-3.0.8/arch/x86/include/asm/module.h 2011-10-07 19:24:31.000000000 -0400
32204 @@ -5,6 +5,7 @@
32205
32206 #ifdef CONFIG_X86_64
32207 @@ -9526,23 +7945,12 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/module.h linux-2.6.32.48/arch/x8
32208 #elif defined CONFIG_M386
32209 #define MODULE_PROC_FAMILY "386 "
32210 #elif defined CONFIG_M486
32211 -@@ -59,13 +60,24 @@
32212 +@@ -59,8 +60,18 @@
32213 #error unknown processor family
32214 #endif
32215
32216 -#ifdef CONFIG_X86_32
32217 --# ifdef CONFIG_4KSTACKS
32218 --# define MODULE_STACKSIZE "4KSTACKS "
32219 --# else
32220 --# define MODULE_STACKSIZE ""
32221 --# endif
32222 --# define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_STACKSIZE
32223 -+#if defined(CONFIG_X86_32) && defined(CONFIG_4KSTACKS)
32224 -+#define MODULE_STACKSIZE "4KSTACKS "
32225 -+#else
32226 -+#define MODULE_STACKSIZE ""
32227 -+#endif
32228 -+
32229 +-# define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
32230 +#ifdef CONFIG_PAX_KERNEXEC
32231 +#define MODULE_PAX_KERNEXEC "KERNEXEC "
32232 +#else
32233 @@ -9555,12 +7963,12 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/module.h linux-2.6.32.48/arch/x8
32234 +#define MODULE_PAX_UDEREF ""
32235 +#endif
32236 +
32237 -+#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_STACKSIZE MODULE_PAX_KERNEXEC MODULE_PAX_UDEREF
32238 ++#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_PAX_KERNEXEC MODULE_PAX_UDEREF
32239 +
32240 #endif /* _ASM_X86_MODULE_H */
32241 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/page_64_types.h linux-2.6.32.48/arch/x86/include/asm/page_64_types.h
32242 ---- linux-2.6.32.48/arch/x86/include/asm/page_64_types.h 2009-12-02 22:51:21.000000000 -0500
32243 -+++ linux-2.6.32.48/arch/x86/include/asm/page_64_types.h 2011-11-12 12:46:42.000000000 -0500
32244 +diff -urNp linux-3.0.8/arch/x86/include/asm/page_64_types.h linux-3.0.8/arch/x86/include/asm/page_64_types.h
32245 +--- linux-3.0.8/arch/x86/include/asm/page_64_types.h 2011-07-21 22:17:23.000000000 -0400
32246 ++++ linux-3.0.8/arch/x86/include/asm/page_64_types.h 2011-08-23 21:47:55.000000000 -0400
32247 @@ -56,7 +56,7 @@ void copy_page(void *to, void *from);
32248
32249 /* duplicated to the one in bootmem.h */
32250 @@ -9570,10 +7978,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/page_64_types.h linux-2.6.32.48/
32251
32252 extern unsigned long __phys_addr(unsigned long);
32253 #define __phys_reloc_hide(x) (x)
32254 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt.h linux-2.6.32.48/arch/x86/include/asm/paravirt.h
32255 ---- linux-2.6.32.48/arch/x86/include/asm/paravirt.h 2009-12-02 22:51:21.000000000 -0500
32256 -+++ linux-2.6.32.48/arch/x86/include/asm/paravirt.h 2011-11-12 12:46:42.000000000 -0500
32257 -@@ -648,6 +648,18 @@ static inline void set_pgd(pgd_t *pgdp,
32258 +diff -urNp linux-3.0.8/arch/x86/include/asm/paravirt.h linux-3.0.8/arch/x86/include/asm/paravirt.h
32259 +--- linux-3.0.8/arch/x86/include/asm/paravirt.h 2011-07-21 22:17:23.000000000 -0400
32260 ++++ linux-3.0.8/arch/x86/include/asm/paravirt.h 2011-08-23 21:47:55.000000000 -0400
32261 +@@ -658,6 +658,18 @@ static inline void set_pgd(pgd_t *pgdp,
32262 val);
32263 }
32264
32265 @@ -9592,7 +8000,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt.h linux-2.6.32.48/arch/
32266 static inline void pgd_clear(pgd_t *pgdp)
32267 {
32268 set_pgd(pgdp, __pgd(0));
32269 -@@ -729,6 +741,21 @@ static inline void __set_fixmap(unsigned
32270 +@@ -739,6 +751,21 @@ static inline void __set_fixmap(unsigned
32271 pv_mmu_ops.set_fixmap(idx, phys, flags);
32272 }
32273
32274 @@ -9613,8 +8021,8 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt.h linux-2.6.32.48/arch/
32275 +
32276 #if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT_SPINLOCKS)
32277
32278 - static inline int __raw_spin_is_locked(struct raw_spinlock *lock)
32279 -@@ -945,7 +972,7 @@ extern void default_banner(void);
32280 + static inline int arch_spin_is_locked(struct arch_spinlock *lock)
32281 +@@ -955,7 +982,7 @@ extern void default_banner(void);
32282
32283 #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4)
32284 #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4)
32285 @@ -9623,7 +8031,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt.h linux-2.6.32.48/arch/
32286 #endif
32287
32288 #define INTERRUPT_RETURN \
32289 -@@ -1022,6 +1049,21 @@ extern void default_banner(void);
32290 +@@ -1032,6 +1059,21 @@ extern void default_banner(void);
32291 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_irq_enable_sysexit), \
32292 CLBR_NONE, \
32293 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_irq_enable_sysexit))
32294 @@ -9645,9 +8053,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt.h linux-2.6.32.48/arch/
32295 #endif /* CONFIG_X86_32 */
32296
32297 #endif /* __ASSEMBLY__ */
32298 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h
32299 ---- linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h 2009-12-02 22:51:21.000000000 -0500
32300 -+++ linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h 2011-11-12 12:46:42.000000000 -0500
32301 +diff -urNp linux-3.0.8/arch/x86/include/asm/paravirt_types.h linux-3.0.8/arch/x86/include/asm/paravirt_types.h
32302 +--- linux-3.0.8/arch/x86/include/asm/paravirt_types.h 2011-07-21 22:17:23.000000000 -0400
32303 ++++ linux-3.0.8/arch/x86/include/asm/paravirt_types.h 2011-08-23 21:47:55.000000000 -0400
32304 @@ -78,19 +78,19 @@ struct pv_init_ops {
32305 */
32306 unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
32307 @@ -9689,7 +8097,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h linux-2.6.32.48
32308
32309 struct pv_mmu_ops {
32310 unsigned long (*read_cr2)(void);
32311 -@@ -301,6 +301,7 @@ struct pv_mmu_ops {
32312 +@@ -306,6 +306,7 @@ struct pv_mmu_ops {
32313 struct paravirt_callee_save make_pud;
32314
32315 void (*set_pgd)(pgd_t *pudp, pgd_t pgdval);
32316 @@ -9697,7 +8105,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h linux-2.6.32.48
32317 #endif /* PAGETABLE_LEVELS == 4 */
32318 #endif /* PAGETABLE_LEVELS >= 3 */
32319
32320 -@@ -316,6 +317,12 @@ struct pv_mmu_ops {
32321 +@@ -317,6 +318,12 @@ struct pv_mmu_ops {
32322 an mfn. We can tell which is which from the index. */
32323 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
32324 phys_addr_t phys, pgprot_t flags);
32325 @@ -9709,55 +8117,19 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/paravirt_types.h linux-2.6.32.48
32326 +
32327 };
32328
32329 - struct raw_spinlock;
32330 -@@ -326,7 +333,7 @@ struct pv_lock_ops {
32331 - void (*spin_lock_flags)(struct raw_spinlock *lock, unsigned long flags);
32332 - int (*spin_trylock)(struct raw_spinlock *lock);
32333 - void (*spin_unlock)(struct raw_spinlock *lock);
32334 + struct arch_spinlock;
32335 +@@ -327,7 +334,7 @@ struct pv_lock_ops {
32336 + void (*spin_lock_flags)(struct arch_spinlock *lock, unsigned long flags);
32337 + int (*spin_trylock)(struct arch_spinlock *lock);
32338 + void (*spin_unlock)(struct arch_spinlock *lock);
32339 -};
32340 +} __no_const;
32341
32342 /* This contains all the paravirt structures: we get a convenient
32343 * number for each function using the offset which we use to indicate
32344 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pci_x86.h linux-2.6.32.48/arch/x86/include/asm/pci_x86.h
32345 ---- linux-2.6.32.48/arch/x86/include/asm/pci_x86.h 2009-12-02 22:51:21.000000000 -0500
32346 -+++ linux-2.6.32.48/arch/x86/include/asm/pci_x86.h 2011-11-12 12:46:42.000000000 -0500
32347 -@@ -89,16 +89,16 @@ extern int (*pcibios_enable_irq)(struct
32348 - extern void (*pcibios_disable_irq)(struct pci_dev *dev);
32349 -
32350 - struct pci_raw_ops {
32351 -- int (*read)(unsigned int domain, unsigned int bus, unsigned int devfn,
32352 -+ int (* const read)(unsigned int domain, unsigned int bus, unsigned int devfn,
32353 - int reg, int len, u32 *val);
32354 -- int (*write)(unsigned int domain, unsigned int bus, unsigned int devfn,
32355 -+ int (* const write)(unsigned int domain, unsigned int bus, unsigned int devfn,
32356 - int reg, int len, u32 val);
32357 - };
32358 -
32359 --extern struct pci_raw_ops *raw_pci_ops;
32360 --extern struct pci_raw_ops *raw_pci_ext_ops;
32361 -+extern const struct pci_raw_ops *raw_pci_ops;
32362 -+extern const struct pci_raw_ops *raw_pci_ext_ops;
32363 -
32364 --extern struct pci_raw_ops pci_direct_conf1;
32365 -+extern const struct pci_raw_ops pci_direct_conf1;
32366 - extern bool port_cf9_safe;
32367 -
32368 - /* arch_initcall level */
32369 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/percpu.h linux-2.6.32.48/arch/x86/include/asm/percpu.h
32370 ---- linux-2.6.32.48/arch/x86/include/asm/percpu.h 2009-12-02 22:51:21.000000000 -0500
32371 -+++ linux-2.6.32.48/arch/x86/include/asm/percpu.h 2011-11-12 12:46:42.000000000 -0500
32372 -@@ -78,6 +78,7 @@ do { \
32373 - if (0) { \
32374 - T__ tmp__; \
32375 - tmp__ = (val); \
32376 -+ (void)tmp__; \
32377 - } \
32378 - switch (sizeof(var)) { \
32379 - case 1: \
32380 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgalloc.h linux-2.6.32.48/arch/x86/include/asm/pgalloc.h
32381 ---- linux-2.6.32.48/arch/x86/include/asm/pgalloc.h 2011-11-12 12:44:28.000000000 -0500
32382 -+++ linux-2.6.32.48/arch/x86/include/asm/pgalloc.h 2011-11-12 12:46:42.000000000 -0500
32383 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgalloc.h linux-3.0.8/arch/x86/include/asm/pgalloc.h
32384 +--- linux-3.0.8/arch/x86/include/asm/pgalloc.h 2011-07-21 22:17:23.000000000 -0400
32385 ++++ linux-3.0.8/arch/x86/include/asm/pgalloc.h 2011-08-23 21:47:55.000000000 -0400
32386 @@ -63,6 +63,13 @@ static inline void pmd_populate_kernel(s
32387 pmd_t *pmd, pte_t *pte)
32388 {
32389 @@ -9772,9 +8144,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgalloc.h linux-2.6.32.48/arch/x
32390 set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE));
32391 }
32392
32393 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h
32394 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h 2009-12-02 22:51:21.000000000 -0500
32395 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h 2011-11-12 12:46:42.000000000 -0500
32396 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable-2level.h linux-3.0.8/arch/x86/include/asm/pgtable-2level.h
32397 +--- linux-3.0.8/arch/x86/include/asm/pgtable-2level.h 2011-07-21 22:17:23.000000000 -0400
32398 ++++ linux-3.0.8/arch/x86/include/asm/pgtable-2level.h 2011-08-23 21:47:55.000000000 -0400
32399 @@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t
32400
32401 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
32402 @@ -9785,33 +8157,33 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-2level.h linux-2.6.32.48
32403 }
32404
32405 static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
32406 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h
32407 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h 2011-11-12 12:44:28.000000000 -0500
32408 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h 2011-11-12 12:46:42.000000000 -0500
32409 -@@ -26,9 +26,6 @@
32410 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable_32.h linux-3.0.8/arch/x86/include/asm/pgtable_32.h
32411 +--- linux-3.0.8/arch/x86/include/asm/pgtable_32.h 2011-07-21 22:17:23.000000000 -0400
32412 ++++ linux-3.0.8/arch/x86/include/asm/pgtable_32.h 2011-08-23 21:47:55.000000000 -0400
32413 +@@ -25,9 +25,6 @@
32414 struct mm_struct;
32415 struct vm_area_struct;
32416
32417 -extern pgd_t swapper_pg_dir[1024];
32418 --extern pgd_t trampoline_pg_dir[1024];
32419 +-extern pgd_t initial_page_table[1024];
32420 -
32421 static inline void pgtable_cache_init(void) { }
32422 static inline void check_pgt_cache(void) { }
32423 void paging_init(void);
32424 -@@ -49,6 +46,12 @@ extern void set_pmd_pfn(unsigned long, u
32425 +@@ -48,6 +45,12 @@ extern void set_pmd_pfn(unsigned long, u
32426 # include <asm/pgtable-2level.h>
32427 #endif
32428
32429 +extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
32430 -+extern pgd_t trampoline_pg_dir[PTRS_PER_PGD];
32431 ++extern pgd_t initial_page_table[PTRS_PER_PGD];
32432 +#ifdef CONFIG_X86_PAE
32433 +extern pmd_t swapper_pm_dir[PTRS_PER_PGD][PTRS_PER_PMD];
32434 +#endif
32435 +
32436 #if defined(CONFIG_HIGHPTE)
32437 - #define __KM_PTE \
32438 - (in_nmi() ? KM_NMI_PTE : \
32439 -@@ -73,7 +76,9 @@ extern void set_pmd_pfn(unsigned long, u
32440 + #define pte_offset_map(dir, address) \
32441 + ((pte_t *)kmap_atomic(pmd_page(*(dir))) + \
32442 +@@ -62,7 +65,9 @@ extern void set_pmd_pfn(unsigned long, u
32443 /* Clear a kernel PTE and flush it from the TLB */
32444 #define kpte_clear_flush(ptep, vaddr) \
32445 do { \
32446 @@ -9821,7 +8193,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h linux-2.6.32.48/arc
32447 __flush_tlb_one((vaddr)); \
32448 } while (0)
32449
32450 -@@ -85,6 +90,9 @@ do { \
32451 +@@ -74,6 +79,9 @@ do { \
32452
32453 #endif /* !__ASSEMBLY__ */
32454
32455 @@ -9831,9 +8203,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32.h linux-2.6.32.48/arc
32456 /*
32457 * kern_addr_valid() is (1) for FLATMEM and (0) for
32458 * SPARSEMEM and DISCONTIGMEM
32459 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h
32460 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h 2009-12-02 22:51:21.000000000 -0500
32461 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h 2011-11-12 12:46:42.000000000 -0500
32462 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable_32_types.h linux-3.0.8/arch/x86/include/asm/pgtable_32_types.h
32463 +--- linux-3.0.8/arch/x86/include/asm/pgtable_32_types.h 2011-07-21 22:17:23.000000000 -0400
32464 ++++ linux-3.0.8/arch/x86/include/asm/pgtable_32_types.h 2011-08-23 21:47:55.000000000 -0400
32465 @@ -8,7 +8,7 @@
32466 */
32467 #ifdef CONFIG_X86_PAE
32468 @@ -9863,9 +8235,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_32_types.h linux-2.6.32.
32469 #define MODULES_VADDR VMALLOC_START
32470 #define MODULES_END VMALLOC_END
32471 #define MODULES_LEN (MODULES_VADDR - MODULES_END)
32472 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h
32473 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h 2011-11-12 12:44:28.000000000 -0500
32474 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h 2011-11-12 12:46:42.000000000 -0500
32475 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable-3level.h linux-3.0.8/arch/x86/include/asm/pgtable-3level.h
32476 +--- linux-3.0.8/arch/x86/include/asm/pgtable-3level.h 2011-07-21 22:17:23.000000000 -0400
32477 ++++ linux-3.0.8/arch/x86/include/asm/pgtable-3level.h 2011-08-23 21:47:55.000000000 -0400
32478 @@ -38,12 +38,16 @@ static inline void native_set_pte_atomic
32479
32480 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
32481 @@ -9883,9 +8255,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable-3level.h linux-2.6.32.48
32482 }
32483
32484 /*
32485 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h
32486 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h 2009-12-02 22:51:21.000000000 -0500
32487 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h 2011-11-12 12:46:42.000000000 -0500
32488 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable_64.h linux-3.0.8/arch/x86/include/asm/pgtable_64.h
32489 +--- linux-3.0.8/arch/x86/include/asm/pgtable_64.h 2011-07-21 22:17:23.000000000 -0400
32490 ++++ linux-3.0.8/arch/x86/include/asm/pgtable_64.h 2011-08-23 21:47:55.000000000 -0400
32491 @@ -16,10 +16,13 @@
32492
32493 extern pud_t level3_kernel_pgt[512];
32494 @@ -9902,7 +8274,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h linux-2.6.32.48/arc
32495
32496 #define swapper_pg_dir init_level4_pgt
32497
32498 -@@ -74,7 +77,9 @@ static inline pte_t native_ptep_get_and_
32499 +@@ -61,7 +64,9 @@ static inline void native_set_pte_atomic
32500
32501 static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
32502 {
32503 @@ -9912,7 +8284,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h linux-2.6.32.48/arc
32504 }
32505
32506 static inline void native_pmd_clear(pmd_t *pmd)
32507 -@@ -94,6 +99,13 @@ static inline void native_pud_clear(pud_
32508 +@@ -107,6 +112,13 @@ static inline void native_pud_clear(pud_
32509
32510 static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd)
32511 {
32512 @@ -9926,9 +8298,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64.h linux-2.6.32.48/arc
32513 *pgdp = pgd;
32514 }
32515
32516 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h
32517 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h 2009-12-02 22:51:21.000000000 -0500
32518 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h 2011-11-12 12:46:42.000000000 -0500
32519 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable_64_types.h linux-3.0.8/arch/x86/include/asm/pgtable_64_types.h
32520 +--- linux-3.0.8/arch/x86/include/asm/pgtable_64_types.h 2011-07-21 22:17:23.000000000 -0400
32521 ++++ linux-3.0.8/arch/x86/include/asm/pgtable_64_types.h 2011-08-23 21:47:55.000000000 -0400
32522 @@ -59,5 +59,10 @@ typedef struct { pteval_t pte; } pte_t;
32523 #define MODULES_VADDR _AC(0xffffffffa0000000, UL)
32524 #define MODULES_END _AC(0xffffffffff000000, UL)
32525 @@ -9940,10 +8312,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_64_types.h linux-2.6.32.
32526 +#define ktva_ktla(addr) (addr)
32527
32528 #endif /* _ASM_X86_PGTABLE_64_DEFS_H */
32529 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x86/include/asm/pgtable.h
32530 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable.h 2009-12-02 22:51:21.000000000 -0500
32531 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable.h 2011-11-12 12:46:42.000000000 -0500
32532 -@@ -39,6 +39,7 @@ extern struct list_head pgd_list;
32533 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable.h linux-3.0.8/arch/x86/include/asm/pgtable.h
32534 +--- linux-3.0.8/arch/x86/include/asm/pgtable.h 2011-07-21 22:17:23.000000000 -0400
32535 ++++ linux-3.0.8/arch/x86/include/asm/pgtable.h 2011-08-23 21:47:55.000000000 -0400
32536 +@@ -44,6 +44,7 @@ extern struct mm_struct *pgd_page_get_mm
32537
32538 #ifndef __PAGETABLE_PUD_FOLDED
32539 #define set_pgd(pgdp, pgd) native_set_pgd(pgdp, pgd)
32540 @@ -9951,7 +8323,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32541 #define pgd_clear(pgd) native_pgd_clear(pgd)
32542 #endif
32543
32544 -@@ -74,12 +75,51 @@ extern struct list_head pgd_list;
32545 +@@ -81,12 +82,51 @@ extern struct mm_struct *pgd_page_get_mm
32546
32547 #define arch_end_context_switch(prev) do {} while(0)
32548
32549 @@ -10003,7 +8375,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32550 static inline int pte_dirty(pte_t pte)
32551 {
32552 return pte_flags(pte) & _PAGE_DIRTY;
32553 -@@ -167,9 +207,29 @@ static inline pte_t pte_wrprotect(pte_t
32554 +@@ -196,9 +236,29 @@ static inline pte_t pte_wrprotect(pte_t
32555 return pte_clear_flags(pte, _PAGE_RW);
32556 }
32557
32558 @@ -10034,7 +8406,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32559 }
32560
32561 static inline pte_t pte_mkdirty(pte_t pte)
32562 -@@ -302,6 +362,15 @@ pte_t *populate_extra_pte(unsigned long
32563 +@@ -390,6 +450,15 @@ pte_t *populate_extra_pte(unsigned long
32564 #endif
32565
32566 #ifndef __ASSEMBLY__
32567 @@ -10050,7 +8422,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32568 #include <linux/mm_types.h>
32569
32570 static inline int pte_none(pte_t pte)
32571 -@@ -472,7 +541,7 @@ static inline pud_t *pud_offset(pgd_t *p
32572 +@@ -560,7 +629,7 @@ static inline pud_t *pud_offset(pgd_t *p
32573
32574 static inline int pgd_bad(pgd_t pgd)
32575 {
32576 @@ -10059,7 +8431,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32577 }
32578
32579 static inline int pgd_none(pgd_t pgd)
32580 -@@ -495,7 +564,12 @@ static inline int pgd_none(pgd_t pgd)
32581 +@@ -583,7 +652,12 @@ static inline int pgd_none(pgd_t pgd)
32582 * pgd_offset() returns a (pgd_t *)
32583 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
32584 */
32585 @@ -10073,7 +8445,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32586 /*
32587 * a shortcut which implies the use of the kernel's pgd, instead
32588 * of a process's
32589 -@@ -506,6 +580,20 @@ static inline int pgd_none(pgd_t pgd)
32590 +@@ -594,6 +668,20 @@ static inline int pgd_none(pgd_t pgd)
32591 #define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET)
32592 #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY)
32593
32594 @@ -10094,7 +8466,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32595 #ifndef __ASSEMBLY__
32596
32597 extern int direct_gbpages;
32598 -@@ -611,11 +699,23 @@ static inline void ptep_set_wrprotect(st
32599 +@@ -758,11 +846,23 @@ static inline void pmdp_set_wrprotect(st
32600 * dst and src can be on the same page, but the range must not overlap,
32601 * and must not cross a page boundary.
32602 */
32603 @@ -10120,10 +8492,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable.h linux-2.6.32.48/arch/x
32604
32605 #include <asm-generic/pgtable.h>
32606 #endif /* __ASSEMBLY__ */
32607 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h
32608 ---- linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h 2009-12-02 22:51:21.000000000 -0500
32609 -+++ linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h 2011-11-12 12:46:42.000000000 -0500
32610 -@@ -16,12 +16,11 @@
32611 +diff -urNp linux-3.0.8/arch/x86/include/asm/pgtable_types.h linux-3.0.8/arch/x86/include/asm/pgtable_types.h
32612 +--- linux-3.0.8/arch/x86/include/asm/pgtable_types.h 2011-07-21 22:17:23.000000000 -0400
32613 ++++ linux-3.0.8/arch/x86/include/asm/pgtable_types.h 2011-08-23 21:47:55.000000000 -0400
32614 +@@ -16,13 +16,12 @@
32615 #define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
32616 #define _PAGE_BIT_PAT 7 /* on 4KB pages */
32617 #define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
32618 @@ -10134,11 +8506,13 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32619 #define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */
32620 -#define _PAGE_BIT_SPECIAL _PAGE_BIT_UNUSED1
32621 -#define _PAGE_BIT_CPA_TEST _PAGE_BIT_UNUSED1
32622 +-#define _PAGE_BIT_SPLITTING _PAGE_BIT_UNUSED1 /* only valid on a PSE pmd */
32623 +#define _PAGE_BIT_CPA_TEST _PAGE_BIT_SPECIAL
32624 ++#define _PAGE_BIT_SPLITTING _PAGE_BIT_SPECIAL /* only valid on a PSE pmd */
32625 #define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
32626
32627 /* If _PAGE_BIT_PRESENT is clear, we use these: */
32628 -@@ -39,7 +38,6 @@
32629 +@@ -40,7 +39,6 @@
32630 #define _PAGE_DIRTY (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY)
32631 #define _PAGE_PSE (_AT(pteval_t, 1) << _PAGE_BIT_PSE)
32632 #define _PAGE_GLOBAL (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL)
32633 @@ -10146,7 +8520,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32634 #define _PAGE_IOMAP (_AT(pteval_t, 1) << _PAGE_BIT_IOMAP)
32635 #define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT)
32636 #define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)
32637 -@@ -55,8 +53,10 @@
32638 +@@ -57,8 +55,10 @@
32639
32640 #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
32641 #define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX)
32642 @@ -10158,7 +8532,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32643 #endif
32644
32645 #define _PAGE_FILE (_AT(pteval_t, 1) << _PAGE_BIT_FILE)
32646 -@@ -93,6 +93,9 @@
32647 +@@ -96,6 +96,9 @@
32648 #define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
32649 _PAGE_ACCESSED)
32650
32651 @@ -10168,7 +8542,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32652 #define __PAGE_KERNEL_EXEC \
32653 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
32654 #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
32655 -@@ -103,8 +106,8 @@
32656 +@@ -106,8 +109,8 @@
32657 #define __PAGE_KERNEL_WC (__PAGE_KERNEL | _PAGE_CACHE_WC)
32658 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
32659 #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD)
32660 @@ -10179,7 +8553,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32661 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
32662 #define __PAGE_KERNEL_LARGE_NOCACHE (__PAGE_KERNEL | _PAGE_CACHE_UC | _PAGE_PSE)
32663 #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
32664 -@@ -163,8 +166,8 @@
32665 +@@ -166,8 +169,8 @@
32666 * bits are combined, this will alow user to access the high address mapped
32667 * VDSO in the presence of CONFIG_COMPAT_VDSO
32668 */
32669 @@ -10190,7 +8564,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32670 #define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */
32671 #endif
32672
32673 -@@ -202,7 +205,17 @@ static inline pgdval_t pgd_flags(pgd_t p
32674 +@@ -205,7 +208,17 @@ static inline pgdval_t pgd_flags(pgd_t p
32675 {
32676 return native_pgd_val(pgd) & PTE_FLAGS_MASK;
32677 }
32678 @@ -10208,7 +8582,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32679 #if PAGETABLE_LEVELS > 3
32680 typedef struct { pudval_t pud; } pud_t;
32681
32682 -@@ -216,8 +229,6 @@ static inline pudval_t native_pud_val(pu
32683 +@@ -219,8 +232,6 @@ static inline pudval_t native_pud_val(pu
32684 return pud.pud;
32685 }
32686 #else
32687 @@ -10217,7 +8591,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32688 static inline pudval_t native_pud_val(pud_t pud)
32689 {
32690 return native_pgd_val(pud.pgd);
32691 -@@ -237,8 +248,6 @@ static inline pmdval_t native_pmd_val(pm
32692 +@@ -240,8 +251,6 @@ static inline pmdval_t native_pmd_val(pm
32693 return pmd.pmd;
32694 }
32695 #else
32696 @@ -10226,27 +8600,18 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/pgtable_types.h linux-2.6.32.48/
32697 static inline pmdval_t native_pmd_val(pmd_t pmd)
32698 {
32699 return native_pgd_val(pmd.pud.pgd);
32700 -@@ -278,7 +287,16 @@ typedef struct page *pgtable_t;
32701 +@@ -281,7 +290,6 @@ typedef struct page *pgtable_t;
32702
32703 extern pteval_t __supported_pte_mask;
32704 extern void set_nx(void);
32705 -+
32706 -+#ifdef CONFIG_X86_32
32707 -+#ifdef CONFIG_X86_PAE
32708 - extern int nx_enabled;
32709 -+#else
32710 -+#define nx_enabled (0)
32711 -+#endif
32712 -+#else
32713 -+#define nx_enabled (1)
32714 -+#endif
32715 +-extern int nx_enabled;
32716
32717 #define pgprot_writecombine pgprot_writecombine
32718 extern pgprot_t pgprot_writecombine(pgprot_t prot);
32719 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch/x86/include/asm/processor.h
32720 ---- linux-2.6.32.48/arch/x86/include/asm/processor.h 2011-11-12 12:44:28.000000000 -0500
32721 -+++ linux-2.6.32.48/arch/x86/include/asm/processor.h 2011-11-12 12:46:42.000000000 -0500
32722 -@@ -272,7 +272,7 @@ struct tss_struct {
32723 +diff -urNp linux-3.0.8/arch/x86/include/asm/processor.h linux-3.0.8/arch/x86/include/asm/processor.h
32724 +--- linux-3.0.8/arch/x86/include/asm/processor.h 2011-07-21 22:17:23.000000000 -0400
32725 ++++ linux-3.0.8/arch/x86/include/asm/processor.h 2011-08-23 21:47:55.000000000 -0400
32726 +@@ -266,7 +266,7 @@ struct tss_struct {
32727
32728 } ____cacheline_aligned;
32729
32730 @@ -10255,7 +8620,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32731
32732 /*
32733 * Save the original ist values for checking stack pointers during debugging
32734 -@@ -911,11 +911,18 @@ static inline void spin_lock_prefetch(co
32735 +@@ -860,11 +860,18 @@ static inline void spin_lock_prefetch(co
32736 */
32737 #define TASK_SIZE PAGE_OFFSET
32738 #define TASK_SIZE_MAX TASK_SIZE
32739 @@ -10276,7 +8641,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32740 .vm86_info = NULL, \
32741 .sysenter_cs = __KERNEL_CS, \
32742 .io_bitmap_ptr = NULL, \
32743 -@@ -929,7 +936,7 @@ static inline void spin_lock_prefetch(co
32744 +@@ -878,7 +885,7 @@ static inline void spin_lock_prefetch(co
32745 */
32746 #define INIT_TSS { \
32747 .x86_tss = { \
32748 @@ -10285,7 +8650,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32749 .ss0 = __KERNEL_DS, \
32750 .ss1 = __KERNEL_CS, \
32751 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \
32752 -@@ -940,11 +947,7 @@ static inline void spin_lock_prefetch(co
32753 +@@ -889,11 +896,7 @@ static inline void spin_lock_prefetch(co
32754 extern unsigned long thread_saved_pc(struct task_struct *tsk);
32755
32756 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
32757 @@ -10298,7 +8663,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32758
32759 /*
32760 * The below -8 is to reserve 8 bytes on top of the ring0 stack.
32761 -@@ -959,7 +962,7 @@ extern unsigned long thread_saved_pc(str
32762 +@@ -908,7 +911,7 @@ extern unsigned long thread_saved_pc(str
32763 #define task_pt_regs(task) \
32764 ({ \
32765 struct pt_regs *__regs__; \
32766 @@ -10307,7 +8672,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32767 __regs__ - 1; \
32768 })
32769
32770 -@@ -969,13 +972,13 @@ extern unsigned long thread_saved_pc(str
32771 +@@ -918,13 +921,13 @@ extern unsigned long thread_saved_pc(str
32772 /*
32773 * User space process size. 47bits minus one guard page.
32774 */
32775 @@ -10323,7 +8688,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32776
32777 #define TASK_SIZE (test_thread_flag(TIF_IA32) ? \
32778 IA32_PAGE_OFFSET : TASK_SIZE_MAX)
32779 -@@ -986,11 +989,11 @@ extern unsigned long thread_saved_pc(str
32780 +@@ -935,11 +938,11 @@ extern unsigned long thread_saved_pc(str
32781 #define STACK_TOP_MAX TASK_SIZE_MAX
32782
32783 #define INIT_THREAD { \
32784 @@ -10337,7 +8702,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32785 }
32786
32787 /*
32788 -@@ -1012,6 +1015,10 @@ extern void start_thread(struct pt_regs
32789 +@@ -961,6 +964,10 @@ extern void start_thread(struct pt_regs
32790 */
32791 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
32792
32793 @@ -10348,10 +8713,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/processor.h linux-2.6.32.48/arch
32794 #define KSTK_EIP(task) (task_pt_regs(task)->ip)
32795
32796 /* Get/set a process' ability to use the timestamp counter instruction */
32797 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/ptrace.h linux-2.6.32.48/arch/x86/include/asm/ptrace.h
32798 ---- linux-2.6.32.48/arch/x86/include/asm/ptrace.h 2009-12-02 22:51:21.000000000 -0500
32799 -+++ linux-2.6.32.48/arch/x86/include/asm/ptrace.h 2011-11-12 12:46:42.000000000 -0500
32800 -@@ -151,28 +151,29 @@ static inline unsigned long regs_return_
32801 +diff -urNp linux-3.0.8/arch/x86/include/asm/ptrace.h linux-3.0.8/arch/x86/include/asm/ptrace.h
32802 +--- linux-3.0.8/arch/x86/include/asm/ptrace.h 2011-07-21 22:17:23.000000000 -0400
32803 ++++ linux-3.0.8/arch/x86/include/asm/ptrace.h 2011-08-23 21:47:55.000000000 -0400
32804 +@@ -153,28 +153,29 @@ static inline unsigned long regs_return_
32805 }
32806
32807 /*
32808 @@ -10387,9 +8752,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/ptrace.h linux-2.6.32.48/arch/x8
32809 #endif
32810 }
32811
32812 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/reboot.h linux-2.6.32.48/arch/x86/include/asm/reboot.h
32813 ---- linux-2.6.32.48/arch/x86/include/asm/reboot.h 2009-12-02 22:51:21.000000000 -0500
32814 -+++ linux-2.6.32.48/arch/x86/include/asm/reboot.h 2011-11-12 12:46:42.000000000 -0500
32815 +diff -urNp linux-3.0.8/arch/x86/include/asm/reboot.h linux-3.0.8/arch/x86/include/asm/reboot.h
32816 +--- linux-3.0.8/arch/x86/include/asm/reboot.h 2011-07-21 22:17:23.000000000 -0400
32817 ++++ linux-3.0.8/arch/x86/include/asm/reboot.h 2011-08-23 21:47:55.000000000 -0400
32818 @@ -6,19 +6,19 @@
32819 struct pt_regs;
32820
32821 @@ -10411,30 +8776,30 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/reboot.h linux-2.6.32.48/arch/x8
32822
32823 void native_machine_crash_shutdown(struct pt_regs *regs);
32824 void native_machine_shutdown(void);
32825 --void machine_real_restart(const unsigned char *code, int length);
32826 -+void machine_real_restart(const unsigned char *code, unsigned int length) __noreturn;
32827 -
32828 - typedef void (*nmi_shootdown_cb)(int, struct die_args*);
32829 - void nmi_shootdown_cpus(nmi_shootdown_cb callback);
32830 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86/include/asm/rwsem.h
32831 ---- linux-2.6.32.48/arch/x86/include/asm/rwsem.h 2011-11-12 12:44:28.000000000 -0500
32832 -+++ linux-2.6.32.48/arch/x86/include/asm/rwsem.h 2011-11-12 12:46:42.000000000 -0500
32833 -@@ -118,6 +118,14 @@ static inline void __down_read(struct rw
32834 +-void machine_real_restart(unsigned int type);
32835 ++void machine_real_restart(unsigned int type) __noreturn;
32836 + /* These must match dispatch_table in reboot_32.S */
32837 + #define MRR_BIOS 0
32838 + #define MRR_APM 1
32839 +diff -urNp linux-3.0.8/arch/x86/include/asm/rwsem.h linux-3.0.8/arch/x86/include/asm/rwsem.h
32840 +--- linux-3.0.8/arch/x86/include/asm/rwsem.h 2011-07-21 22:17:23.000000000 -0400
32841 ++++ linux-3.0.8/arch/x86/include/asm/rwsem.h 2011-08-23 21:47:55.000000000 -0400
32842 +@@ -64,6 +64,14 @@ static inline void __down_read(struct rw
32843 {
32844 asm volatile("# beginning down_read\n\t"
32845 LOCK_PREFIX _ASM_INC "(%1)\n\t"
32846 +
32847 +#ifdef CONFIG_PAX_REFCOUNT
32848 + "jno 0f\n"
32849 -+ LOCK_PREFIX _ASM_DEC "(%1)\n\t"
32850 ++ LOCK_PREFIX _ASM_DEC "(%1)\n"
32851 + "int $4\n0:\n"
32852 + _ASM_EXTABLE(0b, 0b)
32853 +#endif
32854 +
32855 - /* adds 0x00000001, returns the old value */
32856 + /* adds 0x00000001 */
32857 " jns 1f\n"
32858 " call call_rwsem_down_read_failed\n"
32859 -@@ -139,6 +147,14 @@ static inline int __down_read_trylock(st
32860 +@@ -85,6 +93,14 @@ static inline int __down_read_trylock(st
32861 "1:\n\t"
32862 " mov %1,%2\n\t"
32863 " add %3,%2\n\t"
32864 @@ -10449,8 +8814,8 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
32865 " jle 2f\n\t"
32866 LOCK_PREFIX " cmpxchg %2,%0\n\t"
32867 " jnz 1b\n\t"
32868 -@@ -160,6 +176,14 @@ static inline void __down_write_nested(s
32869 - tmp = RWSEM_ACTIVE_WRITE_BIAS;
32870 +@@ -104,6 +120,14 @@ static inline void __down_write_nested(s
32871 + long tmp;
32872 asm volatile("# beginning down_write\n\t"
32873 LOCK_PREFIX " xadd %1,(%2)\n\t"
32874 +
32875 @@ -10461,11 +8826,11 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
32876 + _ASM_EXTABLE(0b, 0b)
32877 +#endif
32878 +
32879 - /* subtract 0x0000ffff, returns the old value */
32880 + /* adds 0xffff0001, returns the old value */
32881 " test %1,%1\n\t"
32882 /* was the count 0 before? */
32883 -@@ -198,6 +222,14 @@ static inline void __up_read(struct rw_s
32884 - rwsem_count_t tmp = -RWSEM_ACTIVE_READ_BIAS;
32885 +@@ -141,6 +165,14 @@ static inline void __up_read(struct rw_s
32886 + long tmp;
32887 asm volatile("# beginning __up_read\n\t"
32888 LOCK_PREFIX " xadd %1,(%2)\n\t"
32889 +
32890 @@ -10478,9 +8843,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
32891 +
32892 /* subtracts 1, returns the old value */
32893 " jns 1f\n\t"
32894 - " call call_rwsem_wake\n"
32895 -@@ -216,6 +248,14 @@ static inline void __up_write(struct rw_
32896 - rwsem_count_t tmp;
32897 + " call call_rwsem_wake\n" /* expects old value in %edx */
32898 +@@ -159,6 +191,14 @@ static inline void __up_write(struct rw_
32899 + long tmp;
32900 asm volatile("# beginning __up_write\n\t"
32901 LOCK_PREFIX " xadd %1,(%2)\n\t"
32902 +
32903 @@ -10491,10 +8856,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
32904 + _ASM_EXTABLE(0b, 0b)
32905 +#endif
32906 +
32907 - /* tries to transition
32908 - 0xffff0001 -> 0x00000000 */
32909 - " jz 1f\n"
32910 -@@ -234,6 +274,14 @@ static inline void __downgrade_write(str
32911 + /* subtracts 0xffff0001, returns the old value */
32912 + " jns 1f\n\t"
32913 + " call call_rwsem_wake\n" /* expects old value in %edx */
32914 +@@ -176,6 +216,14 @@ static inline void __downgrade_write(str
32915 {
32916 asm volatile("# beginning __downgrade_write\n\t"
32917 LOCK_PREFIX _ASM_ADD "%2,(%1)\n\t"
32918 @@ -10509,9 +8874,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
32919 /*
32920 * transitions 0xZZZZ0001 -> 0xYYYY0001 (i386)
32921 * 0xZZZZZZZZ00000001 -> 0xYYYYYYYY00000001 (x86_64)
32922 -@@ -253,7 +301,15 @@ static inline void __downgrade_write(str
32923 - static inline void rwsem_atomic_add(rwsem_count_t delta,
32924 - struct rw_semaphore *sem)
32925 +@@ -194,7 +242,15 @@ static inline void __downgrade_write(str
32926 + */
32927 + static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
32928 {
32929 - asm volatile(LOCK_PREFIX _ASM_ADD "%1,%0"
32930 + asm volatile(LOCK_PREFIX _ASM_ADD "%1,%0\n"
32931 @@ -10526,9 +8891,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
32932 : "+m" (sem->count)
32933 : "er" (delta));
32934 }
32935 -@@ -266,7 +322,15 @@ static inline rwsem_count_t rwsem_atomic
32936 +@@ -206,7 +262,15 @@ static inline long rwsem_atomic_update(l
32937 {
32938 - rwsem_count_t tmp = delta;
32939 + long tmp = delta;
32940
32941 - asm volatile(LOCK_PREFIX "xadd %0,%1"
32942 + asm volatile(LOCK_PREFIX "xadd %0,%1\n"
32943 @@ -10543,10 +8908,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/rwsem.h linux-2.6.32.48/arch/x86
32944 : "+r" (tmp), "+m" (sem->count)
32945 : : "memory");
32946
32947 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/segment.h linux-2.6.32.48/arch/x86/include/asm/segment.h
32948 ---- linux-2.6.32.48/arch/x86/include/asm/segment.h 2009-12-02 22:51:21.000000000 -0500
32949 -+++ linux-2.6.32.48/arch/x86/include/asm/segment.h 2011-11-12 12:46:42.000000000 -0500
32950 -@@ -62,10 +62,15 @@
32951 +diff -urNp linux-3.0.8/arch/x86/include/asm/segment.h linux-3.0.8/arch/x86/include/asm/segment.h
32952 +--- linux-3.0.8/arch/x86/include/asm/segment.h 2011-07-21 22:17:23.000000000 -0400
32953 ++++ linux-3.0.8/arch/x86/include/asm/segment.h 2011-09-17 00:53:42.000000000 -0400
32954 +@@ -64,10 +64,15 @@
32955 * 26 - ESPFIX small SS
32956 * 27 - per-cpu [ offset to per-cpu data area ]
32957 * 28 - stack_canary-20 [ for stack protector ]
32958 @@ -10564,38 +8929,29 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/segment.h linux-2.6.32.48/arch/x
32959 #define GDT_ENTRY_TLS_MIN 6
32960 #define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
32961
32962 -@@ -77,6 +82,8 @@
32963 +@@ -79,6 +84,8 @@
32964
32965 - #define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0)
32966 + #define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE+0)
32967
32968 +#define GDT_ENTRY_KERNEXEC_KERNEL_CS (4)
32969 +
32970 - #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1)
32971 -
32972 - #define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4)
32973 -@@ -88,7 +95,7 @@
32974 - #define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14)
32975 - #define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)
32976 + #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE+1)
32977
32978 --#define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE + 15)
32979 -+#define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE + 15)
32980 - #ifdef CONFIG_SMP
32981 - #define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8)
32982 - #else
32983 -@@ -102,6 +109,12 @@
32984 + #define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE+4)
32985 +@@ -104,6 +111,12 @@
32986 #define __KERNEL_STACK_CANARY 0
32987 #endif
32988
32989 -+#define GDT_ENTRY_PCIBIOS_CS (GDT_ENTRY_KERNEL_BASE + 17)
32990 ++#define GDT_ENTRY_PCIBIOS_CS (GDT_ENTRY_KERNEL_BASE+17)
32991 +#define __PCIBIOS_CS (GDT_ENTRY_PCIBIOS_CS * 8)
32992 +
32993 -+#define GDT_ENTRY_PCIBIOS_DS (GDT_ENTRY_KERNEL_BASE + 18)
32994 ++#define GDT_ENTRY_PCIBIOS_DS (GDT_ENTRY_KERNEL_BASE+18)
32995 +#define __PCIBIOS_DS (GDT_ENTRY_PCIBIOS_DS * 8)
32996 +
32997 #define GDT_ENTRY_DOUBLEFAULT_TSS 31
32998
32999 /*
33000 -@@ -139,7 +152,7 @@
33001 +@@ -141,7 +154,7 @@
33002 */
33003
33004 /* Matches PNP_CS32 and PNP_CS16 (they must be consecutive) */
33005 @@ -10604,7 +8960,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/segment.h linux-2.6.32.48/arch/x
33006
33007
33008 #else
33009 -@@ -163,6 +176,8 @@
33010 +@@ -165,6 +178,8 @@
33011 #define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS * 8 + 3)
33012 #define __USER32_DS __USER_DS
33013
33014 @@ -10613,39 +8969,27 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/segment.h linux-2.6.32.48/arch/x
33015 #define GDT_ENTRY_TSS 8 /* needs two entries */
33016 #define GDT_ENTRY_LDT 10 /* needs two entries */
33017 #define GDT_ENTRY_TLS_MIN 12
33018 -@@ -183,6 +198,7 @@
33019 +@@ -185,6 +200,7 @@
33020 #endif
33021
33022 - #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)
33023 -+#define __KERNEXEC_KERNEL_CS (GDT_ENTRY_KERNEXEC_KERNEL_CS * 8)
33024 - #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
33025 - #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS* 8 + 3)
33026 - #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3)
33027 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/smp.h linux-2.6.32.48/arch/x86/include/asm/smp.h
33028 ---- linux-2.6.32.48/arch/x86/include/asm/smp.h 2011-11-12 12:44:28.000000000 -0500
33029 -+++ linux-2.6.32.48/arch/x86/include/asm/smp.h 2011-11-12 12:46:42.000000000 -0500
33030 -@@ -24,7 +24,7 @@ extern unsigned int num_processors;
33031 - DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_map);
33032 - DECLARE_PER_CPU(cpumask_var_t, cpu_core_map);
33033 + #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8)
33034 ++#define __KERNEXEC_KERNEL_CS (GDT_ENTRY_KERNEXEC_KERNEL_CS*8)
33035 + #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
33036 + #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3)
33037 + #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3)
33038 +diff -urNp linux-3.0.8/arch/x86/include/asm/smp.h linux-3.0.8/arch/x86/include/asm/smp.h
33039 +--- linux-3.0.8/arch/x86/include/asm/smp.h 2011-07-21 22:17:23.000000000 -0400
33040 ++++ linux-3.0.8/arch/x86/include/asm/smp.h 2011-08-23 21:47:55.000000000 -0400
33041 +@@ -36,7 +36,7 @@ DECLARE_PER_CPU(cpumask_var_t, cpu_core_
33042 + /* cpus sharing the last level cache: */
33043 + DECLARE_PER_CPU(cpumask_var_t, cpu_llc_shared_map);
33044 DECLARE_PER_CPU(u16, cpu_llc_id);
33045 -DECLARE_PER_CPU(int, cpu_number);
33046 +DECLARE_PER_CPU(unsigned int, cpu_number);
33047
33048 static inline struct cpumask *cpu_sibling_mask(int cpu)
33049 {
33050 -@@ -40,10 +40,7 @@ DECLARE_EARLY_PER_CPU(u16, x86_cpu_to_ap
33051 - DECLARE_EARLY_PER_CPU(u16, x86_bios_cpu_apicid);
33052 -
33053 - /* Static state in head.S used to set up a CPU */
33054 --extern struct {
33055 -- void *sp;
33056 -- unsigned short ss;
33057 --} stack_start;
33058 -+extern unsigned long stack_start; /* Initial stack pointer address */
33059 -
33060 - struct smp_ops {
33061 - void (*smp_prepare_boot_cpu)(void);
33062 -@@ -60,7 +57,7 @@ struct smp_ops {
33063 +@@ -77,7 +77,7 @@ struct smp_ops {
33064
33065 void (*send_call_func_ipi)(const struct cpumask *mask);
33066 void (*send_call_func_single_ipi)(int cpu);
33067 @@ -10654,7 +8998,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/smp.h linux-2.6.32.48/arch/x86/i
33068
33069 /* Globals due to paravirt */
33070 extern void set_cpu_sibling_map(int cpu);
33071 -@@ -175,14 +172,8 @@ extern unsigned disabled_cpus __cpuinitd
33072 +@@ -192,14 +192,8 @@ extern unsigned disabled_cpus __cpuinitd
33073 extern int safe_smp_processor_id(void);
33074
33075 #elif defined(CONFIG_X86_64_SMP)
33076 @@ -10671,11 +9015,11 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/smp.h linux-2.6.32.48/arch/x86/i
33077 #define safe_smp_processor_id() smp_processor_id()
33078
33079 #endif
33080 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/spinlock.h linux-2.6.32.48/arch/x86/include/asm/spinlock.h
33081 ---- linux-2.6.32.48/arch/x86/include/asm/spinlock.h 2009-12-02 22:51:21.000000000 -0500
33082 -+++ linux-2.6.32.48/arch/x86/include/asm/spinlock.h 2011-11-12 12:46:42.000000000 -0500
33083 -@@ -249,6 +249,14 @@ static inline int __raw_write_can_lock(r
33084 - static inline void __raw_read_lock(raw_rwlock_t *rw)
33085 +diff -urNp linux-3.0.8/arch/x86/include/asm/spinlock.h linux-3.0.8/arch/x86/include/asm/spinlock.h
33086 +--- linux-3.0.8/arch/x86/include/asm/spinlock.h 2011-07-21 22:17:23.000000000 -0400
33087 ++++ linux-3.0.8/arch/x86/include/asm/spinlock.h 2011-08-23 21:47:55.000000000 -0400
33088 +@@ -249,6 +249,14 @@ static inline int arch_write_can_lock(ar
33089 + static inline void arch_read_lock(arch_rwlock_t *rw)
33090 {
33091 asm volatile(LOCK_PREFIX " subl $1,(%0)\n\t"
33092 +
33093 @@ -10689,8 +9033,8 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/spinlock.h linux-2.6.32.48/arch/
33094 "jns 1f\n"
33095 "call __read_lock_failed\n\t"
33096 "1:\n"
33097 -@@ -258,6 +266,14 @@ static inline void __raw_read_lock(raw_r
33098 - static inline void __raw_write_lock(raw_rwlock_t *rw)
33099 +@@ -258,6 +266,14 @@ static inline void arch_read_lock(arch_r
33100 + static inline void arch_write_lock(arch_rwlock_t *rw)
33101 {
33102 asm volatile(LOCK_PREFIX " subl %1,(%0)\n\t"
33103 +
33104 @@ -10704,9 +9048,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/spinlock.h linux-2.6.32.48/arch/
33105 "jz 1f\n"
33106 "call __write_lock_failed\n\t"
33107 "1:\n"
33108 -@@ -286,12 +302,29 @@ static inline int __raw_write_trylock(ra
33109 +@@ -286,12 +302,29 @@ static inline int arch_write_trylock(arc
33110
33111 - static inline void __raw_read_unlock(raw_rwlock_t *rw)
33112 + static inline void arch_read_unlock(arch_rwlock_t *rw)
33113 {
33114 - asm volatile(LOCK_PREFIX "incl %0" :"+m" (rw->lock) : : "memory");
33115 + asm volatile(LOCK_PREFIX "incl %0\n"
33116 @@ -10721,7 +9065,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/spinlock.h linux-2.6.32.48/arch/
33117 + :"+m" (rw->lock) : : "memory");
33118 }
33119
33120 - static inline void __raw_write_unlock(raw_rwlock_t *rw)
33121 + static inline void arch_write_unlock(arch_rwlock_t *rw)
33122 {
33123 - asm volatile(LOCK_PREFIX "addl %1, %0"
33124 + asm volatile(LOCK_PREFIX "addl %1, %0\n"
33125 @@ -10736,9 +9080,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/spinlock.h linux-2.6.32.48/arch/
33126 : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory");
33127 }
33128
33129 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/stackprotector.h linux-2.6.32.48/arch/x86/include/asm/stackprotector.h
33130 ---- linux-2.6.32.48/arch/x86/include/asm/stackprotector.h 2009-12-02 22:51:21.000000000 -0500
33131 -+++ linux-2.6.32.48/arch/x86/include/asm/stackprotector.h 2011-11-12 12:46:42.000000000 -0500
33132 +diff -urNp linux-3.0.8/arch/x86/include/asm/stackprotector.h linux-3.0.8/arch/x86/include/asm/stackprotector.h
33133 +--- linux-3.0.8/arch/x86/include/asm/stackprotector.h 2011-07-21 22:17:23.000000000 -0400
33134 ++++ linux-3.0.8/arch/x86/include/asm/stackprotector.h 2011-08-23 21:47:55.000000000 -0400
33135 @@ -48,7 +48,7 @@
33136 * head_32 for boot CPU and setup_per_cpu_areas() for others.
33137 */
33138 @@ -10757,25 +9101,90 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/stackprotector.h linux-2.6.32.48
33139 asm volatile ("mov %0, %%gs" : : "r" (0));
33140 #endif
33141 }
33142 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/system.h linux-2.6.32.48/arch/x86/include/asm/system.h
33143 ---- linux-2.6.32.48/arch/x86/include/asm/system.h 2011-11-12 12:44:28.000000000 -0500
33144 -+++ linux-2.6.32.48/arch/x86/include/asm/system.h 2011-11-12 12:46:42.000000000 -0500
33145 -@@ -132,7 +132,7 @@ do { \
33146 - "thread_return:\n\t" \
33147 +diff -urNp linux-3.0.8/arch/x86/include/asm/stacktrace.h linux-3.0.8/arch/x86/include/asm/stacktrace.h
33148 +--- linux-3.0.8/arch/x86/include/asm/stacktrace.h 2011-07-21 22:17:23.000000000 -0400
33149 ++++ linux-3.0.8/arch/x86/include/asm/stacktrace.h 2011-08-23 21:47:55.000000000 -0400
33150 +@@ -11,28 +11,20 @@
33151 +
33152 + extern int kstack_depth_to_print;
33153 +
33154 +-struct thread_info;
33155 ++struct task_struct;
33156 + struct stacktrace_ops;
33157 +
33158 +-typedef unsigned long (*walk_stack_t)(struct thread_info *tinfo,
33159 +- unsigned long *stack,
33160 +- unsigned long bp,
33161 +- const struct stacktrace_ops *ops,
33162 +- void *data,
33163 +- unsigned long *end,
33164 +- int *graph);
33165 +-
33166 +-extern unsigned long
33167 +-print_context_stack(struct thread_info *tinfo,
33168 +- unsigned long *stack, unsigned long bp,
33169 +- const struct stacktrace_ops *ops, void *data,
33170 +- unsigned long *end, int *graph);
33171 +-
33172 +-extern unsigned long
33173 +-print_context_stack_bp(struct thread_info *tinfo,
33174 +- unsigned long *stack, unsigned long bp,
33175 +- const struct stacktrace_ops *ops, void *data,
33176 +- unsigned long *end, int *graph);
33177 ++typedef unsigned long walk_stack_t(struct task_struct *task,
33178 ++ void *stack_start,
33179 ++ unsigned long *stack,
33180 ++ unsigned long bp,
33181 ++ const struct stacktrace_ops *ops,
33182 ++ void *data,
33183 ++ unsigned long *end,
33184 ++ int *graph);
33185 ++
33186 ++extern walk_stack_t print_context_stack;
33187 ++extern walk_stack_t print_context_stack_bp;
33188 +
33189 + /* Generic stack tracer with callbacks */
33190 +
33191 +@@ -40,7 +32,7 @@ struct stacktrace_ops {
33192 + void (*address)(void *data, unsigned long address, int reliable);
33193 + /* On negative return stop dumping */
33194 + int (*stack)(void *data, char *name);
33195 +- walk_stack_t walk_stack;
33196 ++ walk_stack_t *walk_stack;
33197 + };
33198 +
33199 + void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
33200 +diff -urNp linux-3.0.8/arch/x86/include/asm/sys_ia32.h linux-3.0.8/arch/x86/include/asm/sys_ia32.h
33201 +--- linux-3.0.8/arch/x86/include/asm/sys_ia32.h 2011-07-21 22:17:23.000000000 -0400
33202 ++++ linux-3.0.8/arch/x86/include/asm/sys_ia32.h 2011-10-06 04:17:55.000000000 -0400
33203 +@@ -40,7 +40,7 @@ asmlinkage long sys32_rt_sigprocmask(int
33204 + compat_sigset_t __user *, unsigned int);
33205 + asmlinkage long sys32_alarm(unsigned int);
33206 +
33207 +-asmlinkage long sys32_waitpid(compat_pid_t, unsigned int *, int);
33208 ++asmlinkage long sys32_waitpid(compat_pid_t, unsigned int __user *, int);
33209 + asmlinkage long sys32_sysfs(int, u32, u32);
33210 +
33211 + asmlinkage long sys32_sched_rr_get_interval(compat_pid_t,
33212 +diff -urNp linux-3.0.8/arch/x86/include/asm/system.h linux-3.0.8/arch/x86/include/asm/system.h
33213 +--- linux-3.0.8/arch/x86/include/asm/system.h 2011-07-21 22:17:23.000000000 -0400
33214 ++++ linux-3.0.8/arch/x86/include/asm/system.h 2011-08-23 21:47:55.000000000 -0400
33215 +@@ -129,7 +129,7 @@ do { \
33216 + "call __switch_to\n\t" \
33217 "movq "__percpu_arg([current_task])",%%rsi\n\t" \
33218 __switch_canary \
33219 - "movq %P[thread_info](%%rsi),%%r8\n\t" \
33220 + "movq "__percpu_arg([thread_info])",%%r8\n\t" \
33221 "movq %%rax,%%rdi\n\t" \
33222 - "testl %[_tif_fork],%P[ti_flags](%%r8)\n\t" \
33223 + "testl %[_tif_fork],%P[ti_flags](%%r8)\n\t" \
33224 "jnz ret_from_fork\n\t" \
33225 -@@ -143,7 +143,7 @@ do { \
33226 +@@ -140,7 +140,7 @@ do { \
33227 [threadrsp] "i" (offsetof(struct task_struct, thread.sp)), \
33228 [ti_flags] "i" (offsetof(struct thread_info, flags)), \
33229 [_tif_fork] "i" (_TIF_FORK), \
33230 - [thread_info] "i" (offsetof(struct task_struct, stack)), \
33231 -+ [thread_info] "m" (per_cpu_var(current_tinfo)), \
33232 - [current_task] "m" (per_cpu_var(current_task)) \
33233 ++ [thread_info] "m" (current_tinfo), \
33234 + [current_task] "m" (current_task) \
33235 __switch_canary_iparam \
33236 : "memory", "cc" __EXTRA_CLOBBER)
33237 @@ -200,7 +200,7 @@ static inline unsigned long get_limit(un
33238 @@ -10787,7 +9196,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/system.h linux-2.6.32.48/arch/x8
33239 }
33240
33241 static inline void native_clts(void)
33242 -@@ -340,12 +340,12 @@ void enable_hlt(void);
33243 +@@ -397,12 +397,12 @@ void enable_hlt(void);
33244
33245 void cpu_idle_wait(void);
33246
33247 @@ -10802,9 +9211,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/system.h linux-2.6.32.48/arch/x8
33248
33249 /*
33250 * Force strict CPU ordering.
33251 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/arch/x86/include/asm/thread_info.h
33252 ---- linux-2.6.32.48/arch/x86/include/asm/thread_info.h 2011-11-12 12:44:28.000000000 -0500
33253 -+++ linux-2.6.32.48/arch/x86/include/asm/thread_info.h 2011-11-12 12:46:42.000000000 -0500
33254 +diff -urNp linux-3.0.8/arch/x86/include/asm/thread_info.h linux-3.0.8/arch/x86/include/asm/thread_info.h
33255 +--- linux-3.0.8/arch/x86/include/asm/thread_info.h 2011-07-21 22:17:23.000000000 -0400
33256 ++++ linux-3.0.8/arch/x86/include/asm/thread_info.h 2011-08-23 21:47:55.000000000 -0400
33257 @@ -10,6 +10,7 @@
33258 #include <linux/compiler.h>
33259 #include <asm/page.h>
33260 @@ -10851,9 +9260,9 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/ar
33261 #define init_stack (init_thread_union.stack)
33262
33263 #else /* !__ASSEMBLY__ */
33264 -@@ -163,6 +157,23 @@ struct thread_info {
33265 - #define alloc_thread_info(tsk) \
33266 - ((struct thread_info *)__get_free_pages(THREAD_FLAGS, THREAD_ORDER))
33267 +@@ -170,6 +164,23 @@ struct thread_info {
33268 + ret; \
33269 + })
33270
33271 +#ifdef __ASSEMBLY__
33272 +/* how to get the thread information struct from ASM */
33273 @@ -10875,7 +9284,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/ar
33274 #ifdef CONFIG_X86_32
33275
33276 #define STACK_WARN (THREAD_SIZE/8)
33277 -@@ -173,35 +184,13 @@ struct thread_info {
33278 +@@ -180,35 +191,13 @@ struct thread_info {
33279 */
33280 #ifndef __ASSEMBLY__
33281
33282 @@ -10911,7 +9320,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/ar
33283 /*
33284 * macros/functions for gaining access to the thread information structure
33285 * preempt_count needs to be 1 initially, until the scheduler is functional.
33286 -@@ -209,21 +198,8 @@ static inline struct thread_info *curren
33287 +@@ -216,21 +205,8 @@ static inline struct thread_info *curren
33288 #ifndef __ASSEMBLY__
33289 DECLARE_PER_CPU(unsigned long, kernel_stack);
33290
33291 @@ -10935,7 +9344,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/ar
33292 #endif
33293
33294 #endif /* !X86_32 */
33295 -@@ -260,5 +236,16 @@ extern void arch_task_cache_init(void);
33296 +@@ -266,5 +242,16 @@ extern void arch_task_cache_init(void);
33297 extern void free_thread_info(struct thread_info *ti);
33298 extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
33299 #define arch_task_cache_init arch_task_cache_init
33300 @@ -10947,15 +9356,15 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/thread_info.h linux-2.6.32.48/ar
33301 +#define end_of_stack(p) ((unsigned long *)task_stack_page(p) + 1)
33302 +
33303 +#define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
33304 -+extern struct task_struct *alloc_task_struct(void);
33305 ++extern struct task_struct *alloc_task_struct_node(int node);
33306 +extern void free_task_struct(struct task_struct *);
33307 +
33308 #endif
33309 #endif /* _ASM_X86_THREAD_INFO_H */
33310 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h
33311 ---- linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h 2009-12-02 22:51:21.000000000 -0500
33312 -+++ linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h 2011-11-12 12:46:42.000000000 -0500
33313 -@@ -44,6 +44,11 @@ unsigned long __must_check __copy_from_u
33314 +diff -urNp linux-3.0.8/arch/x86/include/asm/uaccess_32.h linux-3.0.8/arch/x86/include/asm/uaccess_32.h
33315 +--- linux-3.0.8/arch/x86/include/asm/uaccess_32.h 2011-07-21 22:17:23.000000000 -0400
33316 ++++ linux-3.0.8/arch/x86/include/asm/uaccess_32.h 2011-08-23 21:48:14.000000000 -0400
33317 +@@ -43,6 +43,11 @@ unsigned long __must_check __copy_from_u
33318 static __always_inline unsigned long __must_check
33319 __copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
33320 {
33321 @@ -10967,7 +9376,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33322 if (__builtin_constant_p(n)) {
33323 unsigned long ret;
33324
33325 -@@ -62,6 +67,8 @@ __copy_to_user_inatomic(void __user *to,
33326 +@@ -61,6 +66,8 @@ __copy_to_user_inatomic(void __user *to,
33327 return ret;
33328 }
33329 }
33330 @@ -10976,7 +9385,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33331 return __copy_to_user_ll(to, from, n);
33332 }
33333
33334 -@@ -83,12 +90,16 @@ static __always_inline unsigned long __m
33335 +@@ -82,12 +89,16 @@ static __always_inline unsigned long __m
33336 __copy_to_user(void __user *to, const void *from, unsigned long n)
33337 {
33338 might_fault();
33339 @@ -10993,7 +9402,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33340 /* Avoid zeroing the tail if the copy fails..
33341 * If 'n' is constant and 1, 2, or 4, we do still zero on a failure,
33342 * but as the zeroing behaviour is only significant when n is not
33343 -@@ -138,6 +149,12 @@ static __always_inline unsigned long
33344 +@@ -137,6 +148,12 @@ static __always_inline unsigned long
33345 __copy_from_user(void *to, const void __user *from, unsigned long n)
33346 {
33347 might_fault();
33348 @@ -11006,7 +9415,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33349 if (__builtin_constant_p(n)) {
33350 unsigned long ret;
33351
33352 -@@ -153,6 +170,8 @@ __copy_from_user(void *to, const void __
33353 +@@ -152,6 +169,8 @@ __copy_from_user(void *to, const void __
33354 return ret;
33355 }
33356 }
33357 @@ -11015,7 +9424,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33358 return __copy_from_user_ll(to, from, n);
33359 }
33360
33361 -@@ -160,6 +179,10 @@ static __always_inline unsigned long __c
33362 +@@ -159,6 +178,10 @@ static __always_inline unsigned long __c
33363 const void __user *from, unsigned long n)
33364 {
33365 might_fault();
33366 @@ -11026,17 +9435,40 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33367 if (__builtin_constant_p(n)) {
33368 unsigned long ret;
33369
33370 -@@ -182,14 +205,62 @@ static __always_inline unsigned long
33371 +@@ -181,15 +204,19 @@ static __always_inline unsigned long
33372 __copy_from_user_inatomic_nocache(void *to, const void __user *from,
33373 unsigned long n)
33374 {
33375 - return __copy_from_user_ll_nocache_nozero(to, from, n);
33376 +-}
33377 + if ((long)n < 0)
33378 + return n;
33379 -+
33380 +
33381 +-unsigned long __must_check copy_to_user(void __user *to,
33382 +- const void *from, unsigned long n);
33383 +-unsigned long __must_check _copy_from_user(void *to,
33384 +- const void __user *from,
33385 +- unsigned long n);
33386 + return __copy_from_user_ll_nocache_nozero(to, from, n);
33387 +}
33388 -+
33389 +
33390 ++extern void copy_to_user_overflow(void)
33391 ++#ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
33392 ++ __compiletime_error("copy_to_user() buffer size is not provably correct")
33393 ++#else
33394 ++ __compiletime_warning("copy_to_user() buffer size is not provably correct")
33395 ++#endif
33396 ++;
33397 +
33398 + extern void copy_from_user_overflow(void)
33399 + #ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
33400 +@@ -199,17 +226,61 @@ extern void copy_from_user_overflow(void
33401 + #endif
33402 + ;
33403 +
33404 +-static inline unsigned long __must_check copy_from_user(void *to,
33405 +- const void __user *from,
33406 +- unsigned long n)
33407 +/**
33408 + * copy_to_user: - Copy a block of data into user space.
33409 + * @to: Destination address, in user space.
33410 @@ -11050,10 +9482,14 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33411 + * Returns number of bytes that could not be copied.
33412 + * On success, this will be zero.
33413 + */
33414 -+static __always_inline unsigned long __must_check
33415 ++static inline unsigned long __must_check
33416 +copy_to_user(void __user *to, const void *from, unsigned long n)
33417 +{
33418 -+ if (access_ok(VERIFY_WRITE, to, n))
33419 ++ int sz = __compiletime_object_size(from);
33420 ++
33421 ++ if (unlikely(sz != -1 && sz < n))
33422 ++ copy_to_user_overflow();
33423 ++ else if (access_ok(VERIFY_WRITE, to, n))
33424 + n = __copy_to_user(to, from, n);
33425 + return n;
33426 +}
33427 @@ -11074,33 +9510,33 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_32.h linux-2.6.32.48/arc
33428 + * If some data could not be copied, this function will pad the copied
33429 + * data to the requested size using zero bytes.
33430 + */
33431 -+static __always_inline unsigned long __must_check
33432 ++static inline unsigned long __must_check
33433 +copy_from_user(void *to, const void __user *from, unsigned long n)
33434 -+{
33435 -+ if (access_ok(VERIFY_READ, from, n))
33436 + {
33437 + int sz = __compiletime_object_size(to);
33438 +
33439 +- if (likely(sz == -1 || sz >= n))
33440 +- n = _copy_from_user(to, from, n);
33441 +- else
33442 ++ if (unlikely(sz != -1 && sz < n))
33443 + copy_from_user_overflow();
33444 +-
33445 ++ else if (access_ok(VERIFY_READ, from, n))
33446 + n = __copy_from_user(to, from, n);
33447 + else if ((long)n > 0) {
33448 + if (!__builtin_constant_p(n))
33449 + check_object_size(to, n, false);
33450 + memset(to, 0, n);
33451 + }
33452 -+ return n;
33453 + return n;
33454 }
33455
33456 --unsigned long __must_check copy_to_user(void __user *to,
33457 -- const void *from, unsigned long n);
33458 --unsigned long __must_check copy_from_user(void *to,
33459 -- const void __user *from,
33460 -- unsigned long n);
33461 - long __must_check strncpy_from_user(char *dst, const char __user *src,
33462 - long count);
33463 - long __must_check __strncpy_from_user(char *dst,
33464 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h
33465 ---- linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h 2009-12-02 22:51:21.000000000 -0500
33466 -+++ linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h 2011-11-12 12:46:42.000000000 -0500
33467 -@@ -9,6 +9,9 @@
33468 - #include <linux/prefetch.h>
33469 - #include <linux/lockdep.h>
33470 +diff -urNp linux-3.0.8/arch/x86/include/asm/uaccess_64.h linux-3.0.8/arch/x86/include/asm/uaccess_64.h
33471 +--- linux-3.0.8/arch/x86/include/asm/uaccess_64.h 2011-07-21 22:17:23.000000000 -0400
33472 ++++ linux-3.0.8/arch/x86/include/asm/uaccess_64.h 2011-10-06 04:17:55.000000000 -0400
33473 +@@ -10,6 +10,9 @@
33474 + #include <asm/alternative.h>
33475 + #include <asm/cpufeature.h>
33476 #include <asm/page.h>
33477 +#include <asm/pgtable.h>
33478 +
33479 @@ -11108,27 +9544,70 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33480
33481 /*
33482 * Copy To/From Userspace
33483 -@@ -19,113 +22,203 @@ __must_check unsigned long
33484 - copy_user_generic(void *to, const void *from, unsigned len);
33485 +@@ -36,26 +39,26 @@ copy_user_generic(void *to, const void *
33486 + return ret;
33487 + }
33488
33489 - __must_check unsigned long
33490 --copy_to_user(void __user *to, const void *from, unsigned len);
33491 -__must_check unsigned long
33492 --copy_from_user(void *to, const void __user *from, unsigned len);
33493 +-_copy_to_user(void __user *to, const void *from, unsigned len);
33494 -__must_check unsigned long
33495 +-_copy_from_user(void *to, const void __user *from, unsigned len);
33496 ++static __always_inline __must_check unsigned long
33497 ++__copy_to_user(void __user *to, const void *from, unsigned len);
33498 ++static __always_inline __must_check unsigned long
33499 ++__copy_from_user(void *to, const void __user *from, unsigned len);
33500 + __must_check unsigned long
33501 copy_in_user(void __user *to, const void __user *from, unsigned len);
33502
33503 + static inline unsigned long __must_check copy_from_user(void *to,
33504 + const void __user *from,
33505 +- unsigned long n)
33506 ++ unsigned n)
33507 + {
33508 +- int sz = __compiletime_object_size(to);
33509 +-
33510 + might_fault();
33511 +- if (likely(sz == -1 || sz >= n))
33512 +- n = _copy_from_user(to, from, n);
33513 +-#ifdef CONFIG_DEBUG_VM
33514 +- else
33515 +- WARN(1, "Buffer overflow detected!\n");
33516 +-#endif
33517 ++
33518 ++ if (access_ok(VERIFY_READ, from, n))
33519 ++ n = __copy_from_user(to, from, n);
33520 ++ else if ((int)n > 0) {
33521 ++ if (!__builtin_constant_p(n))
33522 ++ check_object_size(to, n, false);
33523 ++ memset(to, 0, n);
33524 ++ }
33525 + return n;
33526 + }
33527 +
33528 +@@ -64,110 +67,198 @@ int copy_to_user(void __user *dst, const
33529 + {
33530 + might_fault();
33531 +
33532 +- return _copy_to_user(dst, src, size);
33533 ++ if (access_ok(VERIFY_WRITE, dst, size))
33534 ++ size = __copy_to_user(dst, src, size);
33535 ++ return size;
33536 + }
33537 +
33538 static __always_inline __must_check
33539 -int __copy_from_user(void *dst, const void __user *src, unsigned size)
33540 +unsigned long __copy_from_user(void *dst, const void __user *src, unsigned size)
33541 {
33542 - int ret = 0;
33543 ++ int sz = __compiletime_object_size(dst);
33544 + unsigned ret = 0;
33545
33546 might_fault();
33547 - if (!__builtin_constant_p(size))
33548 - return copy_user_generic(dst, (__force void *)src, size);
33549 +
33550 ++ pax_track_stack();
33551 ++
33552 + if ((int)size < 0)
33553 + return size;
33554 +
33555 @@ -11137,6 +9616,13 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33556 + return size;
33557 +#endif
33558 +
33559 ++ if (unlikely(sz != -1 && sz < size)) {
33560 ++#ifdef CONFIG_DEBUG_VM
33561 ++ WARN(1, "Buffer overflow detected!\n");
33562 ++#endif
33563 ++ return size;
33564 ++ }
33565 ++
33566 + if (!__builtin_constant_p(size)) {
33567 + check_object_size(dst, size, false);
33568 +
33569 @@ -11203,6 +9689,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33570 +unsigned long __copy_to_user(void __user *dst, const void *src, unsigned size)
33571 {
33572 - int ret = 0;
33573 ++ int sz = __compiletime_object_size(src);
33574 + unsigned ret = 0;
33575
33576 might_fault();
33577 @@ -11219,6 +9706,13 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33578 + return size;
33579 +#endif
33580 +
33581 ++ if (unlikely(sz != -1 && sz < size)) {
33582 ++#ifdef CONFIG_DEBUG_VM
33583 ++ WARN(1, "Buffer overflow detected!\n");
33584 ++#endif
33585 ++ return size;
33586 ++ }
33587 ++
33588 + if (!__builtin_constant_p(size)) {
33589 + check_object_size(src, size, true);
33590 +
33591 @@ -11277,31 +9771,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33592 +#endif
33593 +
33594 + return copy_user_generic((__force_kernel void *)dst, src, size);
33595 -+ }
33596 -+}
33597 -+
33598 -+static __always_inline __must_check
33599 -+unsigned long copy_to_user(void __user *to, const void *from, unsigned len)
33600 -+{
33601 -+ if (access_ok(VERIFY_WRITE, to, len))
33602 -+ len = __copy_to_user(to, from, len);
33603 -+ return len;
33604 -+}
33605 -+
33606 -+static __always_inline __must_check
33607 -+unsigned long copy_from_user(void *to, const void __user *from, unsigned len)
33608 -+{
33609 -+ if ((int)len < 0)
33610 -+ return len;
33611 -+
33612 -+ if (access_ok(VERIFY_READ, from, len))
33613 -+ len = __copy_from_user(to, from, len);
33614 -+ else if ((int)len > 0) {
33615 -+ if (!__builtin_constant_p(len))
33616 -+ check_object_size(to, len, false);
33617 -+ memset(to, 0, len);
33618 }
33619 -+ return len;
33620 }
33621
33622 static __always_inline __must_check
33623 @@ -11316,8 +9786,6 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33624 - return copy_user_generic((__force void *)dst,
33625 - (__force void *)src, size);
33626 +
33627 -+ pax_track_stack();
33628 -+
33629 + if ((int)size < 0)
33630 + return size;
33631 +
33632 @@ -11348,7 +9816,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33633 ret, "b", "b", "=q", 1);
33634 if (likely(!ret))
33635 __put_user_asm(tmp, (u8 __user *)dst,
33636 -@@ -134,7 +227,7 @@ int __copy_in_user(void __user *dst, con
33637 +@@ -176,7 +267,7 @@ int __copy_in_user(void __user *dst, con
33638 }
33639 case 2: {
33640 u16 tmp;
33641 @@ -11357,7 +9825,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33642 ret, "w", "w", "=r", 2);
33643 if (likely(!ret))
33644 __put_user_asm(tmp, (u16 __user *)dst,
33645 -@@ -144,7 +237,7 @@ int __copy_in_user(void __user *dst, con
33646 +@@ -186,7 +277,7 @@ int __copy_in_user(void __user *dst, con
33647
33648 case 4: {
33649 u32 tmp;
33650 @@ -11366,7 +9834,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33651 ret, "l", "k", "=r", 4);
33652 if (likely(!ret))
33653 __put_user_asm(tmp, (u32 __user *)dst,
33654 -@@ -153,7 +246,7 @@ int __copy_in_user(void __user *dst, con
33655 +@@ -195,7 +286,7 @@ int __copy_in_user(void __user *dst, con
33656 }
33657 case 8: {
33658 u64 tmp;
33659 @@ -11375,7 +9843,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33660 ret, "q", "", "=r", 8);
33661 if (likely(!ret))
33662 __put_user_asm(tmp, (u64 __user *)dst,
33663 -@@ -161,8 +254,16 @@ int __copy_in_user(void __user *dst, con
33664 +@@ -203,8 +294,16 @@ int __copy_in_user(void __user *dst, con
33665 return ret;
33666 }
33667 default:
33668 @@ -11394,15 +9862,11 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33669 }
33670 }
33671
33672 -@@ -176,33 +277,75 @@ __must_check long strlen_user(const char
33673 - __must_check unsigned long clear_user(void __user *mem, unsigned long len);
33674 - __must_check unsigned long __clear_user(void __user *mem, unsigned long len);
33675 -
33676 --__must_check long __copy_from_user_inatomic(void *dst, const void __user *src,
33677 -- unsigned size);
33678 -+static __must_check __always_inline unsigned long
33679 -+__copy_from_user_inatomic(void *dst, const void __user *src, unsigned size)
33680 -+{
33681 +@@ -221,33 +320,72 @@ __must_check unsigned long __clear_user(
33682 + static __must_check __always_inline int
33683 + __copy_from_user_inatomic(void *dst, const void __user *src, unsigned size)
33684 + {
33685 +- return copy_user_generic(dst, (__force const void *)src, size);
33686 + pax_track_stack();
33687 +
33688 + if ((int)size < 0)
33689 @@ -11415,11 +9879,11 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33690 + if ((unsigned long)src < PAX_USER_SHADOW_BASE)
33691 + src += PAX_USER_SHADOW_BASE;
33692 +#endif
33693 ++
33694 ++ return copy_user_generic(dst, (__force_kernel const void *)src, size);
33695 + }
33696
33697 -static __must_check __always_inline int
33698 -+ return copy_user_generic(dst, (__force_kernel const void *)src, size);
33699 -+}
33700 -+
33701 +static __must_check __always_inline unsigned long
33702 __copy_to_user_inatomic(void __user *dst, const void *src, unsigned size)
33703 {
33704 @@ -11481,12 +9945,12 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess_64.h linux-2.6.32.48/arc
33705 +copy_user_handle_tail(char __user *to, char __user *from, unsigned len, unsigned zerorest);
33706
33707 #endif /* _ASM_X86_UACCESS_64_H */
33708 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x86/include/asm/uaccess.h
33709 ---- linux-2.6.32.48/arch/x86/include/asm/uaccess.h 2011-11-12 12:44:28.000000000 -0500
33710 -+++ linux-2.6.32.48/arch/x86/include/asm/uaccess.h 2011-11-12 12:46:42.000000000 -0500
33711 -@@ -8,12 +8,15 @@
33712 +diff -urNp linux-3.0.8/arch/x86/include/asm/uaccess.h linux-3.0.8/arch/x86/include/asm/uaccess.h
33713 +--- linux-3.0.8/arch/x86/include/asm/uaccess.h 2011-07-21 22:17:23.000000000 -0400
33714 ++++ linux-3.0.8/arch/x86/include/asm/uaccess.h 2011-10-06 04:17:55.000000000 -0400
33715 +@@ -7,12 +7,15 @@
33716 + #include <linux/compiler.h>
33717 #include <linux/thread_info.h>
33718 - #include <linux/prefetch.h>
33719 #include <linux/string.h>
33720 +#include <linux/sched.h>
33721 #include <asm/asm.h>
33722 @@ -11500,7 +9964,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33723 /*
33724 * The fs value determines whether argument validity checking should be
33725 * performed or not. If get_fs() == USER_DS, checking is performed, with
33726 -@@ -29,7 +32,12 @@
33727 +@@ -28,7 +31,12 @@
33728
33729 #define get_ds() (KERNEL_DS)
33730 #define get_fs() (current_thread_info()->addr_limit)
33731 @@ -11513,7 +9977,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33732
33733 #define segment_eq(a, b) ((a).seg == (b).seg)
33734
33735 -@@ -77,7 +85,33 @@
33736 +@@ -76,7 +84,33 @@
33737 * checks that the pointer is in the user space range - after calling
33738 * this function, memory access functions may still return -EFAULT.
33739 */
33740 @@ -11548,7 +10012,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33741
33742 /*
33743 * The exception table consists of pairs of addresses: the first is the
33744 -@@ -183,12 +217,20 @@ extern int __get_user_bad(void);
33745 +@@ -182,12 +216,20 @@ extern int __get_user_bad(void);
33746 asm volatile("call __put_user_" #size : "=a" (__ret_pu) \
33747 : "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
33748
33749 @@ -11572,7 +10036,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33750 "3:\n" \
33751 ".section .fixup,\"ax\"\n" \
33752 "4: movl %3,%0\n" \
33753 -@@ -200,8 +242,8 @@ extern int __get_user_bad(void);
33754 +@@ -199,8 +241,8 @@ extern int __get_user_bad(void);
33755 : "A" (x), "r" (addr), "i" (errret), "0" (err))
33756
33757 #define __put_user_asm_ex_u64(x, addr) \
33758 @@ -11583,7 +10047,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33759 "3:\n" \
33760 _ASM_EXTABLE(1b, 2b - 1b) \
33761 _ASM_EXTABLE(2b, 3b - 2b) \
33762 -@@ -253,7 +295,7 @@ extern void __put_user_8(void);
33763 +@@ -252,7 +294,7 @@ extern void __put_user_8(void);
33764 __typeof__(*(ptr)) __pu_val; \
33765 __chk_user_ptr(ptr); \
33766 might_fault(); \
33767 @@ -11592,7 +10056,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33768 switch (sizeof(*(ptr))) { \
33769 case 1: \
33770 __put_user_x(1, __pu_val, ptr, __ret_pu); \
33771 -@@ -374,7 +416,7 @@ do { \
33772 +@@ -373,7 +415,7 @@ do { \
33773 } while (0)
33774
33775 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \
33776 @@ -11601,7 +10065,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33777 "2:\n" \
33778 ".section .fixup,\"ax\"\n" \
33779 "3: mov %3,%0\n" \
33780 -@@ -382,7 +424,7 @@ do { \
33781 +@@ -381,7 +423,7 @@ do { \
33782 " jmp 2b\n" \
33783 ".previous\n" \
33784 _ASM_EXTABLE(1b, 3b) \
33785 @@ -11610,7 +10074,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33786 : "m" (__m(addr)), "i" (errret), "0" (err))
33787
33788 #define __get_user_size_ex(x, ptr, size) \
33789 -@@ -407,7 +449,7 @@ do { \
33790 +@@ -406,7 +448,7 @@ do { \
33791 } while (0)
33792
33793 #define __get_user_asm_ex(x, addr, itype, rtype, ltype) \
33794 @@ -11619,7 +10083,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33795 "2:\n" \
33796 _ASM_EXTABLE(1b, 2b - 1b) \
33797 : ltype(x) : "m" (__m(addr)))
33798 -@@ -424,13 +466,24 @@ do { \
33799 +@@ -423,13 +465,24 @@ do { \
33800 int __gu_err; \
33801 unsigned long __gu_val; \
33802 __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \
33803 @@ -11646,7 +10110,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33804
33805 /*
33806 * Tell gcc we read from memory instead of writing: this is because
33807 -@@ -438,7 +491,7 @@ struct __large_struct { unsigned long bu
33808 +@@ -437,7 +490,7 @@ struct __large_struct { unsigned long bu
33809 * aliasing issues.
33810 */
33811 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \
33812 @@ -11655,7 +10119,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33813 "2:\n" \
33814 ".section .fixup,\"ax\"\n" \
33815 "3: mov %3,%0\n" \
33816 -@@ -446,10 +499,10 @@ struct __large_struct { unsigned long bu
33817 +@@ -445,10 +498,10 @@ struct __large_struct { unsigned long bu
33818 ".previous\n" \
33819 _ASM_EXTABLE(1b, 3b) \
33820 : "=r"(err) \
33821 @@ -11668,7 +10132,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33822 "2:\n" \
33823 _ASM_EXTABLE(1b, 2b - 1b) \
33824 : : ltype(x), "m" (__m(addr)))
33825 -@@ -488,8 +541,12 @@ struct __large_struct { unsigned long bu
33826 +@@ -487,8 +540,12 @@ struct __large_struct { unsigned long bu
33827 * On error, the variable @x is set to zero.
33828 */
33829
33830 @@ -11681,7 +10145,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33831
33832 /**
33833 * __put_user: - Write a simple value into user space, with less checking.
33834 -@@ -511,8 +568,12 @@ struct __large_struct { unsigned long bu
33835 +@@ -510,8 +567,12 @@ struct __large_struct { unsigned long bu
33836 * Returns zero on success, or -EFAULT on error.
33837 */
33838
33839 @@ -11694,7 +10158,7 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33840
33841 #define __get_user_unaligned __get_user
33842 #define __put_user_unaligned __put_user
33843 -@@ -530,7 +591,7 @@ struct __large_struct { unsigned long bu
33844 +@@ -529,7 +590,7 @@ struct __large_struct { unsigned long bu
33845 #define get_user_ex(x, ptr) do { \
33846 unsigned long __gue_val; \
33847 __get_user_size_ex((__gue_val), (ptr), (sizeof(*(ptr)))); \
33848 @@ -11703,18 +10167,10 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/uaccess.h linux-2.6.32.48/arch/x
33849 } while (0)
33850
33851 #ifdef CONFIG_X86_WP_WORKS_OK
33852 -@@ -567,6 +628,7 @@ extern struct movsl_mask {
33853 -
33854 - #define ARCH_HAS_NOCACHE_UACCESS 1
33855 -
33856 -+#define ARCH_HAS_SORT_EXTABLE
33857 - #ifdef CONFIG_X86_32
33858 - # include "uaccess_32.h"
33859 - #else
33860 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vdso.h linux-2.6.32.48/arch/x86/include/asm/vdso.h
33861 ---- linux-2.6.32.48/arch/x86/include/asm/vdso.h 2009-12-02 22:51:21.000000000 -0500
33862 -+++ linux-2.6.32.48/arch/x86/include/asm/vdso.h 2011-11-12 12:46:42.000000000 -0500
33863 -@@ -25,7 +25,7 @@ extern const char VDSO32_PRELINK[];
33864 +diff -urNp linux-3.0.8/arch/x86/include/asm/vdso.h linux-3.0.8/arch/x86/include/asm/vdso.h
33865 +--- linux-3.0.8/arch/x86/include/asm/vdso.h 2011-07-21 22:17:23.000000000 -0400
33866 ++++ linux-3.0.8/arch/x86/include/asm/vdso.h 2011-10-06 04:17:55.000000000 -0400
33867 +@@ -11,7 +11,7 @@ extern const char VDSO32_PRELINK[];
33868 #define VDSO32_SYMBOL(base, name) \
33869 ({ \
33870 extern const char VDSO32_##name[]; \
33871 @@ -11723,79 +10179,12 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/vdso.h linux-2.6.32.48/arch/x86/
33872 })
33873 #endif
33874
33875 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vgtod.h linux-2.6.32.48/arch/x86/include/asm/vgtod.h
33876 ---- linux-2.6.32.48/arch/x86/include/asm/vgtod.h 2009-12-02 22:51:21.000000000 -0500
33877 -+++ linux-2.6.32.48/arch/x86/include/asm/vgtod.h 2011-11-12 12:46:42.000000000 -0500
33878 -@@ -14,6 +14,7 @@ struct vsyscall_gtod_data {
33879 - int sysctl_enabled;
33880 - struct timezone sys_tz;
33881 - struct { /* extract of a clocksource struct */
33882 -+ char name[8];
33883 - cycle_t (*vread)(void);
33884 - cycle_t cycle_last;
33885 - cycle_t mask;
33886 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vmi.h linux-2.6.32.48/arch/x86/include/asm/vmi.h
33887 ---- linux-2.6.32.48/arch/x86/include/asm/vmi.h 2009-12-02 22:51:21.000000000 -0500
33888 -+++ linux-2.6.32.48/arch/x86/include/asm/vmi.h 2011-11-12 12:46:42.000000000 -0500
33889 -@@ -191,6 +191,7 @@ struct vrom_header {
33890 - u8 reserved[96]; /* Reserved for headers */
33891 - char vmi_init[8]; /* VMI_Init jump point */
33892 - char get_reloc[8]; /* VMI_GetRelocationInfo jump point */
33893 -+ char rom_data[8048]; /* rest of the option ROM */
33894 - } __attribute__((packed));
33895 -
33896 - struct pnp_header {
33897 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vmi_time.h linux-2.6.32.48/arch/x86/include/asm/vmi_time.h
33898 ---- linux-2.6.32.48/arch/x86/include/asm/vmi_time.h 2009-12-02 22:51:21.000000000 -0500
33899 -+++ linux-2.6.32.48/arch/x86/include/asm/vmi_time.h 2011-11-12 12:46:42.000000000 -0500
33900 -@@ -43,7 +43,7 @@ extern struct vmi_timer_ops {
33901 - int (*wallclock_updated)(void);
33902 - void (*set_alarm)(u32 flags, u64 expiry, u64 period);
33903 - void (*cancel_alarm)(u32 flags);
33904 --} vmi_timer_ops;
33905 -+} __no_const vmi_timer_ops;
33906 -
33907 - /* Prototypes */
33908 - extern void __init vmi_time_init(void);
33909 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/vsyscall.h linux-2.6.32.48/arch/x86/include/asm/vsyscall.h
33910 ---- linux-2.6.32.48/arch/x86/include/asm/vsyscall.h 2009-12-02 22:51:21.000000000 -0500
33911 -+++ linux-2.6.32.48/arch/x86/include/asm/vsyscall.h 2011-11-12 12:46:42.000000000 -0500
33912 -@@ -15,9 +15,10 @@ enum vsyscall_num {
33913 -
33914 - #ifdef __KERNEL__
33915 - #include <linux/seqlock.h>
33916 -+#include <linux/getcpu.h>
33917 -+#include <linux/time.h>
33918 -
33919 - #define __section_vgetcpu_mode __attribute__ ((unused, __section__ (".vgetcpu_mode"), aligned(16)))
33920 --#define __section_jiffies __attribute__ ((unused, __section__ (".jiffies"), aligned(16)))
33921 -
33922 - /* Definitions for CONFIG_GENERIC_TIME definitions */
33923 - #define __section_vsyscall_gtod_data __attribute__ \
33924 -@@ -31,7 +32,6 @@ enum vsyscall_num {
33925 - #define VGETCPU_LSL 2
33926 -
33927 - extern int __vgetcpu_mode;
33928 --extern volatile unsigned long __jiffies;
33929 -
33930 - /* kernel space (writeable) */
33931 - extern int vgetcpu_mode;
33932 -@@ -39,6 +39,9 @@ extern struct timezone sys_tz;
33933 -
33934 - extern void map_vsyscall(void);
33935 -
33936 -+extern int vgettimeofday(struct timeval * tv, struct timezone * tz);
33937 -+extern time_t vtime(time_t *t);
33938 -+extern long vgetcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache);
33939 - #endif /* __KERNEL__ */
33940 -
33941 - #endif /* _ASM_X86_VSYSCALL_H */
33942 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/x86_init.h linux-2.6.32.48/arch/x86/include/asm/x86_init.h
33943 ---- linux-2.6.32.48/arch/x86/include/asm/x86_init.h 2009-12-02 22:51:21.000000000 -0500
33944 -+++ linux-2.6.32.48/arch/x86/include/asm/x86_init.h 2011-11-12 12:46:42.000000000 -0500
33945 +diff -urNp linux-3.0.8/arch/x86/include/asm/x86_init.h linux-3.0.8/arch/x86/include/asm/x86_init.h
33946 +--- linux-3.0.8/arch/x86/include/asm/x86_init.h 2011-07-21 22:17:23.000000000 -0400
33947 ++++ linux-3.0.8/arch/x86/include/asm/x86_init.h 2011-08-23 21:47:55.000000000 -0400
33948 @@ -28,7 +28,7 @@ struct x86_init_mpparse {
33949 void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name);
33950 - void (*find_smp_config)(unsigned int reserve);
33951 + void (*find_smp_config)(void);
33952 void (*get_smp_config)(unsigned int early);
33953 -};
33954 +} __no_const;
33955 @@ -11828,8 +10217,17 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/x86_init.h linux-2.6.32.48/arch/
33956 +} __no_const;
33957
33958 /**
33959 + * struct x86_init_mapping - platform specific initial kernel pagetable setup
33960 +@@ -76,7 +76,7 @@ struct x86_init_oem {
33961 + */
33962 + struct x86_init_mapping {
33963 + void (*pagetable_reserve)(u64 start, u64 end);
33964 +-};
33965 ++} __no_const;
33966 +
33967 + /**
33968 * struct x86_init_paging - platform specific paging functions
33969 -@@ -75,7 +75,7 @@ struct x86_init_oem {
33970 +@@ -86,7 +86,7 @@ struct x86_init_mapping {
33971 struct x86_init_paging {
33972 void (*pagetable_setup_start)(pgd_t *base);
33973 void (*pagetable_setup_done)(pgd_t *base);
33974 @@ -11838,25 +10236,43 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/x86_init.h linux-2.6.32.48/arch/
33975
33976 /**
33977 * struct x86_init_timers - platform specific timer setup
33978 -@@ -88,7 +88,7 @@ struct x86_init_timers {
33979 - void (*setup_percpu_clockev)(void);
33980 +@@ -101,7 +101,7 @@ struct x86_init_timers {
33981 void (*tsc_pre_init)(void);
33982 void (*timer_init)(void);
33983 + void (*wallclock_init)(void);
33984 +-};
33985 ++} __no_const;
33986 +
33987 + /**
33988 + * struct x86_init_iommu - platform specific iommu setup
33989 +@@ -109,7 +109,7 @@ struct x86_init_timers {
33990 + */
33991 + struct x86_init_iommu {
33992 + int (*iommu_init)(void);
33993 +-};
33994 ++} __no_const;
33995 +
33996 + /**
33997 + * struct x86_init_pci - platform specific pci init functions
33998 +@@ -123,7 +123,7 @@ struct x86_init_pci {
33999 + int (*init)(void);
34000 + void (*init_irq)(void);
34001 + void (*fixup_irqs)(void);
34002 -};
34003 +} __no_const;
34004
34005 /**
34006 * struct x86_init_ops - functions for platform specific setup
34007 -@@ -101,7 +101,7 @@ struct x86_init_ops {
34008 - struct x86_init_oem oem;
34009 - struct x86_init_paging paging;
34010 +@@ -139,7 +139,7 @@ struct x86_init_ops {
34011 struct x86_init_timers timers;
34012 + struct x86_init_iommu iommu;
34013 + struct x86_init_pci pci;
34014 -};
34015 +} __no_const;
34016
34017 /**
34018 * struct x86_cpuinit_ops - platform specific cpu hotplug setups
34019 -@@ -109,7 +109,7 @@ struct x86_init_ops {
34020 +@@ -147,7 +147,7 @@ struct x86_init_ops {
34021 */
34022 struct x86_cpuinit_ops {
34023 void (*setup_percpu_clockev)(void);
34024 @@ -11865,32 +10281,40 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/x86_init.h linux-2.6.32.48/arch/
34025
34026 /**
34027 * struct x86_platform_ops - platform specific runtime functions
34028 -@@ -121,7 +121,7 @@ struct x86_platform_ops {
34029 - unsigned long (*calibrate_tsc)(void);
34030 - unsigned long (*get_wallclock)(void);
34031 - int (*set_wallclock)(unsigned long nowtime);
34032 +@@ -166,7 +166,7 @@ struct x86_platform_ops {
34033 + bool (*is_untracked_pat_range)(u64 start, u64 end);
34034 + void (*nmi_init)(void);
34035 + int (*i8042_detect)(void);
34036 +-};
34037 ++} __no_const;
34038 +
34039 + struct pci_dev;
34040 +
34041 +@@ -174,7 +174,7 @@ struct x86_msi_ops {
34042 + int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type);
34043 + void (*teardown_msi_irq)(unsigned int irq);
34044 + void (*teardown_msi_irqs)(struct pci_dev *dev);
34045 -};
34046 +} __no_const;
34047
34048 extern struct x86_init_ops x86_init;
34049 extern struct x86_cpuinit_ops x86_cpuinit;
34050 -diff -urNp linux-2.6.32.48/arch/x86/include/asm/xsave.h linux-2.6.32.48/arch/x86/include/asm/xsave.h
34051 ---- linux-2.6.32.48/arch/x86/include/asm/xsave.h 2009-12-02 22:51:21.000000000 -0500
34052 -+++ linux-2.6.32.48/arch/x86/include/asm/xsave.h 2011-11-12 12:46:42.000000000 -0500
34053 -@@ -56,6 +56,12 @@ static inline int xrstor_checking(struct
34054 - static inline int xsave_user(struct xsave_struct __user *buf)
34055 +diff -urNp linux-3.0.8/arch/x86/include/asm/xsave.h linux-3.0.8/arch/x86/include/asm/xsave.h
34056 +--- linux-3.0.8/arch/x86/include/asm/xsave.h 2011-07-21 22:17:23.000000000 -0400
34057 ++++ linux-3.0.8/arch/x86/include/asm/xsave.h 2011-10-06 04:17:55.000000000 -0400
34058 +@@ -65,6 +65,11 @@ static inline int xsave_user(struct xsav
34059 {
34060 int err;
34061 -+
34062 +
34063 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
34064 + if ((unsigned long)buf < PAX_USER_SHADOW_BASE)
34065 + buf = (struct xsave_struct __user *)((void __user*)buf + PAX_USER_SHADOW_BASE);
34066 +#endif
34067 +
34068 - __asm__ __volatile__("1: .byte " REX_PREFIX "0x0f,0xae,0x27\n"
34069 - "2:\n"
34070 - ".section .fixup,\"ax\"\n"
34071 -@@ -78,10 +84,15 @@ static inline int xsave_user(struct xsav
34072 + /*
34073 + * Clear the xsave header first, so that reserved fields are
34074 + * initialized to zero.
34075 +@@ -96,10 +101,15 @@ static inline int xsave_user(struct xsav
34076 static inline int xrestore_user(struct xsave_struct __user *buf, u64 mask)
34077 {
34078 int err;
34079 @@ -11907,19 +10331,19 @@ diff -urNp linux-2.6.32.48/arch/x86/include/asm/xsave.h linux-2.6.32.48/arch/x86
34080 __asm__ __volatile__("1: .byte " REX_PREFIX "0x0f,0xae,0x2f\n"
34081 "2:\n"
34082 ".section .fixup,\"ax\"\n"
34083 -diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
34084 ---- linux-2.6.32.48/arch/x86/Kconfig 2011-11-12 12:44:28.000000000 -0500
34085 -+++ linux-2.6.32.48/arch/x86/Kconfig 2011-11-12 12:46:42.000000000 -0500
34086 -@@ -223,7 +223,7 @@ config X86_TRAMPOLINE
34087 +diff -urNp linux-3.0.8/arch/x86/Kconfig linux-3.0.8/arch/x86/Kconfig
34088 +--- linux-3.0.8/arch/x86/Kconfig 2011-07-21 22:17:23.000000000 -0400
34089 ++++ linux-3.0.8/arch/x86/Kconfig 2011-09-17 00:58:36.000000000 -0400
34090 +@@ -229,7 +229,7 @@ config X86_HT
34091
34092 config X86_32_LAZY_GS
34093 def_bool y
34094 - depends on X86_32 && !CC_STACKPROTECTOR
34095 + depends on X86_32 && !CC_STACKPROTECTOR && !PAX_MEMORY_UDEREF
34096
34097 - config KTIME_SCALAR
34098 - def_bool X86_32
34099 -@@ -1008,7 +1008,7 @@ choice
34100 + config ARCH_HWEIGHT_CFLAGS
34101 + string
34102 +@@ -1018,7 +1018,7 @@ choice
34103
34104 config NOHIGHMEM
34105 bool "off"
34106 @@ -11928,7 +10352,7 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
34107 ---help---
34108 Linux can use up to 64 Gigabytes of physical memory on x86 systems.
34109 However, the address space of 32-bit x86 processors is only 4
34110 -@@ -1045,7 +1045,7 @@ config NOHIGHMEM
34111 +@@ -1055,7 +1055,7 @@ config NOHIGHMEM
34112
34113 config HIGHMEM4G
34114 bool "4GB"
34115 @@ -11937,7 +10361,7 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
34116 ---help---
34117 Select this if you have a 32-bit processor and between 1 and 4
34118 gigabytes of physical RAM.
34119 -@@ -1099,7 +1099,7 @@ config PAGE_OFFSET
34120 +@@ -1109,7 +1109,7 @@ config PAGE_OFFSET
34121 hex
34122 default 0xB0000000 if VMSPLIT_3G_OPT
34123 default 0x80000000 if VMSPLIT_2G
34124 @@ -11946,7 +10370,7 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
34125 default 0x40000000 if VMSPLIT_1G
34126 default 0xC0000000
34127 depends on X86_32
34128 -@@ -1460,6 +1460,7 @@ config SECCOMP
34129 +@@ -1483,6 +1483,7 @@ config SECCOMP
34130
34131 config CC_STACKPROTECTOR
34132 bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
34133 @@ -11954,23 +10378,23 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
34134 ---help---
34135 This option turns on the -fstack-protector GCC feature. This
34136 feature puts, at the beginning of functions, a canary value on
34137 -@@ -1517,6 +1518,7 @@ config KEXEC_JUMP
34138 +@@ -1540,6 +1541,7 @@ config KEXEC_JUMP
34139 config PHYSICAL_START
34140 - hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
34141 + hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
34142 default "0x1000000"
34143 + range 0x400000 0x40000000
34144 ---help---
34145 This gives the physical address where the kernel is loaded.
34146
34147 -@@ -1581,6 +1583,7 @@ config PHYSICAL_ALIGN
34148 - hex
34149 - prompt "Alignment value to which kernel should be aligned" if X86_32
34150 +@@ -1603,6 +1605,7 @@ config X86_NEED_RELOCS
34151 + config PHYSICAL_ALIGN
34152 + hex "Alignment value to which kernel should be aligned" if X86_32
34153 default "0x1000000"
34154 + range 0x400000 0x1000000 if PAX_KERNEXEC
34155 range 0x2000 0x1000000
34156 ---help---
34157 This value puts the alignment restrictions on physical address
34158 -@@ -1612,9 +1615,10 @@ config HOTPLUG_CPU
34159 +@@ -1634,9 +1637,10 @@ config HOTPLUG_CPU
34160 Say N if you want to disable CPU hotplug.
34161
34162 config COMPAT_VDSO
34163 @@ -11981,41 +10405,41 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig linux-2.6.32.48/arch/x86/Kconfig
34164 + depends on !PAX_NOEXEC && !PAX_MEMORY_UDEREF
34165 ---help---
34166 Map the 32-bit VDSO to the predictable old-style address too.
34167 - ---help---
34168 -diff -urNp linux-2.6.32.48/arch/x86/Kconfig.cpu linux-2.6.32.48/arch/x86/Kconfig.cpu
34169 ---- linux-2.6.32.48/arch/x86/Kconfig.cpu 2011-11-12 12:44:28.000000000 -0500
34170 -+++ linux-2.6.32.48/arch/x86/Kconfig.cpu 2011-11-12 12:46:42.000000000 -0500
34171 -@@ -340,7 +340,7 @@ config X86_PPRO_FENCE
34172 +
34173 +diff -urNp linux-3.0.8/arch/x86/Kconfig.cpu linux-3.0.8/arch/x86/Kconfig.cpu
34174 +--- linux-3.0.8/arch/x86/Kconfig.cpu 2011-07-21 22:17:23.000000000 -0400
34175 ++++ linux-3.0.8/arch/x86/Kconfig.cpu 2011-08-23 21:47:55.000000000 -0400
34176 +@@ -338,7 +338,7 @@ config X86_PPRO_FENCE
34177
34178 config X86_F00F_BUG
34179 def_bool y
34180 - depends on M586MMX || M586TSC || M586 || M486 || M386
34181 + depends on (M586MMX || M586TSC || M586 || M486 || M386) && !PAX_KERNEXEC
34182
34183 - config X86_WP_WORKS_OK
34184 + config X86_INVD_BUG
34185 def_bool y
34186 -@@ -360,7 +360,7 @@ config X86_POPAD_OK
34187 +@@ -362,7 +362,7 @@ config X86_POPAD_OK
34188
34189 config X86_ALIGNMENT_16
34190 def_bool y
34191 -- depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
34192 +- depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
34193 + depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK8 || MK7 || MK6 || MCORE2 || MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
34194
34195 config X86_INTEL_USERCOPY
34196 def_bool y
34197 -@@ -406,7 +406,7 @@ config X86_CMPXCHG64
34198 +@@ -408,7 +408,7 @@ config X86_CMPXCHG64
34199 # generates cmov.
34200 config X86_CMOV
34201 def_bool y
34202 -- depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM)
34203 -+ depends on (MK8 || MK7 || MCORE2 || MPSC || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM)
34204 +- depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
34205 ++ depends on (MK8 || MK7 || MCORE2 || MPSC || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
34206
34207 config X86_MINIMUM_CPU_FAMILY
34208 int
34209 -diff -urNp linux-2.6.32.48/arch/x86/Kconfig.debug linux-2.6.32.48/arch/x86/Kconfig.debug
34210 ---- linux-2.6.32.48/arch/x86/Kconfig.debug 2009-12-02 22:51:21.000000000 -0500
34211 -+++ linux-2.6.32.48/arch/x86/Kconfig.debug 2011-11-12 12:46:42.000000000 -0500
34212 -@@ -99,7 +99,7 @@ config X86_PTDUMP
34213 +diff -urNp linux-3.0.8/arch/x86/Kconfig.debug linux-3.0.8/arch/x86/Kconfig.debug
34214 +--- linux-3.0.8/arch/x86/Kconfig.debug 2011-07-21 22:17:23.000000000 -0400
34215 ++++ linux-3.0.8/arch/x86/Kconfig.debug 2011-08-23 21:47:55.000000000 -0400
34216 +@@ -81,7 +81,7 @@ config X86_PTDUMP
34217 config DEBUG_RODATA
34218 bool "Write protect kernel read-only data structures"
34219 default y
34220 @@ -12024,9 +10448,18 @@ diff -urNp linux-2.6.32.48/arch/x86/Kconfig.debug linux-2.6.32.48/arch/x86/Kconf
34221 ---help---
34222 Mark the kernel read-only data as write-protected in the pagetables,
34223 in order to catch accidental (and incorrect) writes to such const
34224 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile
34225 ---- linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile 2009-12-02 22:51:21.000000000 -0500
34226 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile 2011-11-12 12:46:42.000000000 -0500
34227 +@@ -99,7 +99,7 @@ config DEBUG_RODATA_TEST
34228 +
34229 + config DEBUG_SET_MODULE_RONX
34230 + bool "Set loadable kernel module data as NX and text as RO"
34231 +- depends on MODULES
34232 ++ depends on MODULES && BROKEN
34233 + ---help---
34234 + This option helps catch unintended modifications to loadable
34235 + kernel module's text and read-only data. It also prevents execution
34236 +diff -urNp linux-3.0.8/arch/x86/kernel/acpi/realmode/Makefile linux-3.0.8/arch/x86/kernel/acpi/realmode/Makefile
34237 +--- linux-3.0.8/arch/x86/kernel/acpi/realmode/Makefile 2011-07-21 22:17:23.000000000 -0400
34238 ++++ linux-3.0.8/arch/x86/kernel/acpi/realmode/Makefile 2011-08-23 21:47:55.000000000 -0400
34239 @@ -41,6 +41,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
34240 $(call cc-option, -fno-stack-protector) \
34241 $(call cc-option, -mpreferred-stack-boundary=2)
34242 @@ -12037,29 +10470,20 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/Makefile linux-2.6.32.4
34243 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
34244 GCOV_PROFILE := n
34245
34246 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S
34247 ---- linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S 2009-12-02 22:51:21.000000000 -0500
34248 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S 2011-11-12 12:46:42.000000000 -0500
34249 -@@ -91,6 +91,9 @@ _start:
34250 +diff -urNp linux-3.0.8/arch/x86/kernel/acpi/realmode/wakeup.S linux-3.0.8/arch/x86/kernel/acpi/realmode/wakeup.S
34251 +--- linux-3.0.8/arch/x86/kernel/acpi/realmode/wakeup.S 2011-07-21 22:17:23.000000000 -0400
34252 ++++ linux-3.0.8/arch/x86/kernel/acpi/realmode/wakeup.S 2011-08-23 21:48:14.000000000 -0400
34253 +@@ -108,6 +108,9 @@ wakeup_code:
34254 /* Do any other stuff... */
34255
34256 #ifndef CONFIG_64BIT
34257 -+ /* Recheck NX bit overrides (64bit path does this in trampoline) */
34258 ++ /* Recheck NX bit overrides (64bit path does this in trampoline */
34259 + call verify_cpu
34260 +
34261 /* This could also be done in C code... */
34262 movl pmode_cr3, %eax
34263 movl %eax, %cr3
34264 -@@ -104,7 +107,7 @@ _start:
34265 - movl %eax, %ecx
34266 - orl %edx, %ecx
34267 - jz 1f
34268 -- movl $0xc0000080, %ecx
34269 -+ mov $MSR_EFER, %ecx
34270 - wrmsr
34271 - 1:
34272 -
34273 -@@ -114,6 +117,7 @@ _start:
34274 +@@ -131,6 +134,7 @@ wakeup_code:
34275 movl pmode_cr0, %eax
34276 movl %eax, %cr0
34277 jmp pmode_return
34278 @@ -12067,29 +10491,13 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.32.4
34279 #else
34280 pushw $0
34281 pushw trampoline_segment
34282 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c
34283 ---- linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c 2009-12-02 22:51:21.000000000 -0500
34284 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c 2011-11-12 12:46:42.000000000 -0500
34285 -@@ -11,11 +11,12 @@
34286 - #include <linux/cpumask.h>
34287 - #include <asm/segment.h>
34288 - #include <asm/desc.h>
34289 -+#include <asm/e820.h>
34290 -
34291 - #include "realmode/wakeup.h"
34292 - #include "sleep.h"
34293 -
34294 --unsigned long acpi_wakeup_address;
34295 -+unsigned long acpi_wakeup_address = 0x2000;
34296 - unsigned long acpi_realmode_flags;
34297 -
34298 - /* address in low memory of the wakeup routine. */
34299 -@@ -98,9 +99,13 @@ int acpi_save_state_mem(void)
34300 - #else /* CONFIG_64BIT */
34301 - header->trampoline_segment = setup_trampoline() >> 4;
34302 +diff -urNp linux-3.0.8/arch/x86/kernel/acpi/sleep.c linux-3.0.8/arch/x86/kernel/acpi/sleep.c
34303 +--- linux-3.0.8/arch/x86/kernel/acpi/sleep.c 2011-07-21 22:17:23.000000000 -0400
34304 ++++ linux-3.0.8/arch/x86/kernel/acpi/sleep.c 2011-08-23 21:47:55.000000000 -0400
34305 +@@ -94,8 +94,12 @@ int acpi_suspend_lowlevel(void)
34306 + header->trampoline_segment = trampoline_address() >> 4;
34307 #ifdef CONFIG_SMP
34308 -- stack_start.sp = temp_stack + sizeof(temp_stack);
34309 -+ stack_start = (unsigned long)temp_stack + sizeof(temp_stack);
34310 + stack_start = (unsigned long)temp_stack + sizeof(temp_stack);
34311 +
34312 + pax_open_kernel();
34313 early_gdt_descr.address =
34314 @@ -12099,26 +10507,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/sleep.c linux-2.6.32.48/arch/x86
34315 initial_gs = per_cpu_offset(smp_processor_id());
34316 #endif
34317 initial_code = (unsigned long)wakeup_long64;
34318 -@@ -134,14 +139,8 @@ void __init acpi_reserve_bootmem(void)
34319 - return;
34320 - }
34321 -
34322 -- acpi_realmode = (unsigned long)alloc_bootmem_low(WAKEUP_SIZE);
34323 --
34324 -- if (!acpi_realmode) {
34325 -- printk(KERN_ERR "ACPI: Cannot allocate lowmem, S3 disabled.\n");
34326 -- return;
34327 -- }
34328 --
34329 -- acpi_wakeup_address = virt_to_phys((void *)acpi_realmode);
34330 -+ reserve_early(acpi_wakeup_address, acpi_wakeup_address + WAKEUP_SIZE, "ACPI Wakeup Code");
34331 -+ acpi_realmode = (unsigned long)__va(acpi_wakeup_address);;
34332 - }
34333 -
34334 -
34335 -diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S
34336 ---- linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S 2009-12-02 22:51:21.000000000 -0500
34337 -+++ linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S 2011-11-12 12:46:42.000000000 -0500
34338 +diff -urNp linux-3.0.8/arch/x86/kernel/acpi/wakeup_32.S linux-3.0.8/arch/x86/kernel/acpi/wakeup_32.S
34339 +--- linux-3.0.8/arch/x86/kernel/acpi/wakeup_32.S 2011-07-21 22:17:23.000000000 -0400
34340 ++++ linux-3.0.8/arch/x86/kernel/acpi/wakeup_32.S 2011-08-23 21:47:55.000000000 -0400
34341 @@ -30,13 +30,11 @@ wakeup_pmode_return:
34342 # and restore the stack ... but you need gdt for this to work
34343 movl saved_context_esp, %esp
34344 @@ -12135,10 +10526,28 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.32.48/arch
34345
34346 bogus_magic:
34347 jmp bogus_magic
34348 -diff -urNp linux-2.6.32.48/arch/x86/kernel/alternative.c linux-2.6.32.48/arch/x86/kernel/alternative.c
34349 ---- linux-2.6.32.48/arch/x86/kernel/alternative.c 2009-12-02 22:51:21.000000000 -0500
34350 -+++ linux-2.6.32.48/arch/x86/kernel/alternative.c 2011-11-12 12:46:42.000000000 -0500
34351 -@@ -407,7 +407,7 @@ void __init_or_module apply_paravirt(str
34352 +diff -urNp linux-3.0.8/arch/x86/kernel/alternative.c linux-3.0.8/arch/x86/kernel/alternative.c
34353 +--- linux-3.0.8/arch/x86/kernel/alternative.c 2011-07-21 22:17:23.000000000 -0400
34354 ++++ linux-3.0.8/arch/x86/kernel/alternative.c 2011-08-23 21:47:55.000000000 -0400
34355 +@@ -313,7 +313,7 @@ static void alternatives_smp_lock(const
34356 + if (!*poff || ptr < text || ptr >= text_end)
34357 + continue;
34358 + /* turn DS segment override prefix into lock prefix */
34359 +- if (*ptr == 0x3e)
34360 ++ if (*ktla_ktva(ptr) == 0x3e)
34361 + text_poke(ptr, ((unsigned char []){0xf0}), 1);
34362 + };
34363 + mutex_unlock(&text_mutex);
34364 +@@ -334,7 +334,7 @@ static void alternatives_smp_unlock(cons
34365 + if (!*poff || ptr < text || ptr >= text_end)
34366 + continue;
34367 + /* turn lock prefix into DS segment override prefix */
34368 +- if (*ptr == 0xf0)
34369 ++ if (*ktla_ktva(ptr) == 0xf0)
34370 + text_poke(ptr, ((unsigned char []){0x3E}), 1);
34371 + };
34372 + mutex_unlock(&text_mutex);
34373 +@@ -503,7 +503,7 @@ void __init_or_module apply_paravirt(str
34374
34375 BUG_ON(p->len > MAX_PATCH_LEN);
34376 /* prep the buffer with the original instructions */
34377 @@ -12147,7 +10556,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/alternative.c linux-2.6.32.48/arch/x8
34378 used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf,
34379 (unsigned long)p->instr, p->len);
34380
34381 -@@ -475,7 +475,7 @@ void __init alternative_instructions(voi
34382 +@@ -571,7 +571,7 @@ void __init alternative_instructions(voi
34383 if (smp_alt_once)
34384 free_init_pages("SMP alternatives",
34385 (unsigned long)__smp_locks,
34386 @@ -12156,12 +10565,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/alternative.c linux-2.6.32.48/arch/x8
34387
34388 restart_nmi();
34389 }
34390 -@@ -492,13 +492,17 @@ void __init alternative_instructions(voi
34391 +@@ -588,13 +588,17 @@ void __init alternative_instructions(voi
34392 * instructions. And on the local CPU you need to be protected again NMI or MCE
34393 * handlers seeing an inconsistent instruction while you patch.
34394 */
34395 --static void *__init_or_module text_poke_early(void *addr, const void *opcode,
34396 -+static void *__kprobes text_poke_early(void *addr, const void *opcode,
34397 +-void *__init_or_module text_poke_early(void *addr, const void *opcode,
34398 ++void *__kprobes text_poke_early(void *addr, const void *opcode,
34399 size_t len)
34400 {
34401 unsigned long flags;
34402 @@ -12176,7 +10585,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/alternative.c linux-2.6.32.48/arch/x8
34403 local_irq_restore(flags);
34404 /* Could also do a CLFLUSH here to speed up CPU recovery; but
34405 that causes hangs on some VIA CPUs. */
34406 -@@ -520,35 +524,21 @@ static void *__init_or_module text_poke_
34407 +@@ -616,36 +620,22 @@ void *__init_or_module text_poke_early(v
34408 */
34409 void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
34410 {
34411 @@ -12220,22 +10629,11 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/alternative.c linux-2.6.32.48/arch/x8
34412 + BUG_ON((vaddr)[i] != ((const unsigned char *)opcode)[i]);
34413 return addr;
34414 }
34415 -diff -urNp linux-2.6.32.48/arch/x86/kernel/amd_iommu.c linux-2.6.32.48/arch/x86/kernel/amd_iommu.c
34416 ---- linux-2.6.32.48/arch/x86/kernel/amd_iommu.c 2011-11-12 12:44:28.000000000 -0500
34417 -+++ linux-2.6.32.48/arch/x86/kernel/amd_iommu.c 2011-11-12 12:46:42.000000000 -0500
34418 -@@ -2076,7 +2076,7 @@ static void prealloc_protection_domains(
34419 - }
34420 - }
34421
34422 --static struct dma_map_ops amd_iommu_dma_ops = {
34423 -+static const struct dma_map_ops amd_iommu_dma_ops = {
34424 - .alloc_coherent = alloc_coherent,
34425 - .free_coherent = free_coherent,
34426 - .map_page = map_page,
34427 -diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/apic.c linux-2.6.32.48/arch/x86/kernel/apic/apic.c
34428 ---- linux-2.6.32.48/arch/x86/kernel/apic/apic.c 2011-11-12 12:44:28.000000000 -0500
34429 -+++ linux-2.6.32.48/arch/x86/kernel/apic/apic.c 2011-11-12 12:46:42.000000000 -0500
34430 -@@ -170,7 +170,7 @@ int first_system_vector = 0xfe;
34431 +diff -urNp linux-3.0.8/arch/x86/kernel/apic/apic.c linux-3.0.8/arch/x86/kernel/apic/apic.c
34432 +--- linux-3.0.8/arch/x86/kernel/apic/apic.c 2011-07-21 22:17:23.000000000 -0400
34433 ++++ linux-3.0.8/arch/x86/kernel/apic/apic.c 2011-08-23 21:48:14.000000000 -0400
34434 +@@ -173,7 +173,7 @@ int first_system_vector = 0xfe;
34435 /*
34436 * Debug level, exported for io_apic.c
34437 */
34438 @@ -12244,16 +10642,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/apic.c linux-2.6.32.48/arch/x86/
34439
34440 int pic_mode;
34441
34442 -@@ -1794,7 +1794,7 @@ void smp_error_interrupt(struct pt_regs
34443 +@@ -1834,7 +1834,7 @@ void smp_error_interrupt(struct pt_regs
34444 apic_write(APIC_ESR, 0);
34445 v1 = apic_read(APIC_ESR);
34446 ack_APIC_irq();
34447 - atomic_inc(&irq_err_count);
34448 + atomic_inc_unchecked(&irq_err_count);
34449
34450 - /*
34451 - * Here is what the APIC error bits mean:
34452 -@@ -2184,6 +2184,8 @@ static int __cpuinit apic_cluster_num(vo
34453 + apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x(%02x)",
34454 + smp_processor_id(), v0 , v1);
34455 +@@ -2190,6 +2190,8 @@ static int __cpuinit apic_cluster_num(vo
34456 u16 *bios_cpu_apicid;
34457 DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS);
34458
34459 @@ -12262,28 +10660,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/apic.c linux-2.6.32.48/arch/x86/
34460 bios_cpu_apicid = early_per_cpu_ptr(x86_bios_cpu_apicid);
34461 bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
34462
34463 -diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c
34464 ---- linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c 2011-11-12 12:44:28.000000000 -0500
34465 -+++ linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c 2011-11-12 12:46:42.000000000 -0500
34466 -@@ -716,7 +716,7 @@ struct IO_APIC_route_entry **alloc_ioapi
34467 - ioapic_entries = kzalloc(sizeof(*ioapic_entries) * nr_ioapics,
34468 - GFP_ATOMIC);
34469 - if (!ioapic_entries)
34470 -- return 0;
34471 -+ return NULL;
34472 -
34473 - for (apic = 0; apic < nr_ioapics; apic++) {
34474 - ioapic_entries[apic] =
34475 -@@ -733,7 +733,7 @@ nomem:
34476 - kfree(ioapic_entries[apic]);
34477 - kfree(ioapic_entries);
34478 -
34479 -- return 0;
34480 -+ return NULL;
34481 - }
34482 -
34483 - /*
34484 -@@ -1150,7 +1150,7 @@ int IO_APIC_get_PCI_irq_vector(int bus,
34485 +diff -urNp linux-3.0.8/arch/x86/kernel/apic/io_apic.c linux-3.0.8/arch/x86/kernel/apic/io_apic.c
34486 +--- linux-3.0.8/arch/x86/kernel/apic/io_apic.c 2011-07-21 22:17:23.000000000 -0400
34487 ++++ linux-3.0.8/arch/x86/kernel/apic/io_apic.c 2011-08-23 21:47:55.000000000 -0400
34488 +@@ -1028,7 +1028,7 @@ int IO_APIC_get_PCI_irq_vector(int bus,
34489 }
34490 EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
34491
34492 @@ -12292,37 +10672,37 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apic/io_apic.c linux-2.6.32.48/arch/x
34493 {
34494 /* Used to the online set of cpus does not change
34495 * during assign_irq_vector.
34496 -@@ -1158,7 +1158,7 @@ void lock_vector_lock(void)
34497 - spin_lock(&vector_lock);
34498 +@@ -1036,7 +1036,7 @@ void lock_vector_lock(void)
34499 + raw_spin_lock(&vector_lock);
34500 }
34501
34502 -void unlock_vector_lock(void)
34503 +void unlock_vector_lock(void) __releases(vector_lock)
34504 {
34505 - spin_unlock(&vector_lock);
34506 + raw_spin_unlock(&vector_lock);
34507 }
34508 -@@ -2542,7 +2542,7 @@ static void ack_apic_edge(unsigned int i
34509 +@@ -2364,7 +2364,7 @@ static void ack_apic_edge(struct irq_dat
34510 ack_APIC_irq();
34511 }
34512
34513 -atomic_t irq_mis_count;
34514 +atomic_unchecked_t irq_mis_count;
34515
34516 - static void ack_apic_level(unsigned int irq)
34517 - {
34518 -@@ -2626,7 +2626,7 @@ static void ack_apic_level(unsigned int
34519 -
34520 - /* Tail end of version 0x11 I/O APIC bug workaround */
34521 + /*
34522 + * IO-APIC versions below 0x20 don't support EOI register.
34523 +@@ -2472,7 +2472,7 @@ static void ack_apic_level(struct irq_da
34524 + * at the cpu.
34525 + */
34526 if (!(v & (1 << (i & 0x1f)))) {
34527 - atomic_inc(&irq_mis_count);
34528 + atomic_inc_unchecked(&irq_mis_count);
34529 - spin_lock(&ioapic_lock);
34530 - __mask_and_edge_IO_APIC_irq(cfg);
34531 - __unmask_and_level_IO_APIC_irq(cfg);
34532 -diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/kernel/apm_32.c
34533 ---- linux-2.6.32.48/arch/x86/kernel/apm_32.c 2009-12-02 22:51:21.000000000 -0500
34534 -+++ linux-2.6.32.48/arch/x86/kernel/apm_32.c 2011-11-12 12:46:42.000000000 -0500
34535 -@@ -410,7 +410,7 @@ static DEFINE_SPINLOCK(user_list_lock);
34536 +
34537 + eoi_ioapic_irq(irq, cfg);
34538 + }
34539 +diff -urNp linux-3.0.8/arch/x86/kernel/apm_32.c linux-3.0.8/arch/x86/kernel/apm_32.c
34540 +--- linux-3.0.8/arch/x86/kernel/apm_32.c 2011-07-21 22:17:23.000000000 -0400
34541 ++++ linux-3.0.8/arch/x86/kernel/apm_32.c 2011-08-23 21:47:55.000000000 -0400
34542 +@@ -413,7 +413,7 @@ static DEFINE_MUTEX(apm_mutex);
34543 * This is for buggy BIOS's that refer to (real mode) segment 0x40
34544 * even though they are called in protected mode.
34545 */
34546 @@ -12331,7 +10711,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/ker
34547 (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1);
34548
34549 static const char driver_version[] = "1.16ac"; /* no spaces */
34550 -@@ -588,7 +588,10 @@ static long __apm_bios_call(void *_call)
34551 +@@ -591,7 +591,10 @@ static long __apm_bios_call(void *_call)
34552 BUG_ON(cpu != 0);
34553 gdt = get_cpu_gdt_table(cpu);
34554 save_desc_40 = gdt[0x40 / 8];
34555 @@ -12342,7 +10722,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/ker
34556
34557 apm_irq_save(flags);
34558 APM_DO_SAVE_SEGS;
34559 -@@ -597,7 +600,11 @@ static long __apm_bios_call(void *_call)
34560 +@@ -600,7 +603,11 @@ static long __apm_bios_call(void *_call)
34561 &call->esi);
34562 APM_DO_RESTORE_SEGS;
34563 apm_irq_restore(flags);
34564 @@ -12354,7 +10734,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/ker
34565 put_cpu();
34566
34567 return call->eax & 0xff;
34568 -@@ -664,7 +671,10 @@ static long __apm_bios_call_simple(void
34569 +@@ -667,7 +674,10 @@ static long __apm_bios_call_simple(void
34570 BUG_ON(cpu != 0);
34571 gdt = get_cpu_gdt_table(cpu);
34572 save_desc_40 = gdt[0x40 / 8];
34573 @@ -12365,7 +10745,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/ker
34574
34575 apm_irq_save(flags);
34576 APM_DO_SAVE_SEGS;
34577 -@@ -672,7 +682,11 @@ static long __apm_bios_call_simple(void
34578 +@@ -675,7 +685,11 @@ static long __apm_bios_call_simple(void
34579 &call->eax);
34580 APM_DO_RESTORE_SEGS;
34581 apm_irq_restore(flags);
34582 @@ -12377,16 +10757,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/ker
34583 put_cpu();
34584 return error;
34585 }
34586 -@@ -975,7 +989,7 @@ recalc:
34587 -
34588 - static void apm_power_off(void)
34589 - {
34590 -- unsigned char po_bios_call[] = {
34591 -+ const unsigned char po_bios_call[] = {
34592 - 0xb8, 0x00, 0x10, /* movw $0x1000,ax */
34593 - 0x8e, 0xd0, /* movw ax,ss */
34594 - 0xbc, 0x00, 0xf0, /* movw $0xf000,sp */
34595 -@@ -2357,12 +2371,15 @@ static int __init apm_init(void)
34596 +@@ -2349,12 +2363,15 @@ static int __init apm_init(void)
34597 * code to that CPU.
34598 */
34599 gdt = get_cpu_gdt_table(0);
34600 @@ -12402,97 +10773,60 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/apm_32.c linux-2.6.32.48/arch/x86/ker
34601
34602 proc_create("apm", 0, NULL, &apm_file_ops);
34603
34604 -diff -urNp linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c
34605 ---- linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c 2009-12-02 22:51:21.000000000 -0500
34606 -+++ linux-2.6.32.48/arch/x86/kernel/asm-offsets_32.c 2011-11-12 12:46:42.000000000 -0500
34607 -@@ -51,7 +51,6 @@ void foo(void)
34608 - OFFSET(CPUINFO_x86_vendor_id, cpuinfo_x86, x86_vendor_id);
34609 +diff -urNp linux-3.0.8/arch/x86/kernel/asm-offsets_64.c linux-3.0.8/arch/x86/kernel/asm-offsets_64.c
34610 +--- linux-3.0.8/arch/x86/kernel/asm-offsets_64.c 2011-07-21 22:17:23.000000000 -0400
34611 ++++ linux-3.0.8/arch/x86/kernel/asm-offsets_64.c 2011-08-23 21:47:55.000000000 -0400
34612 +@@ -69,6 +69,7 @@ int main(void)
34613 BLANK();
34614 + #undef ENTRY
34615
34616 -- OFFSET(TI_task, thread_info, task);
34617 - OFFSET(TI_exec_domain, thread_info, exec_domain);
34618 - OFFSET(TI_flags, thread_info, flags);
34619 ++ DEFINE(TSS_size, sizeof(struct tss_struct));
34620 + OFFSET(TSS_ist, tss_struct, x86_tss.ist);
34621 + BLANK();
34622 +
34623 +diff -urNp linux-3.0.8/arch/x86/kernel/asm-offsets.c linux-3.0.8/arch/x86/kernel/asm-offsets.c
34624 +--- linux-3.0.8/arch/x86/kernel/asm-offsets.c 2011-07-21 22:17:23.000000000 -0400
34625 ++++ linux-3.0.8/arch/x86/kernel/asm-offsets.c 2011-08-23 21:47:55.000000000 -0400
34626 +@@ -33,6 +33,8 @@ void common(void) {
34627 OFFSET(TI_status, thread_info, status);
34628 -@@ -60,6 +59,8 @@ void foo(void)
34629 - OFFSET(TI_restart_block, thread_info, restart_block);
34630 - OFFSET(TI_sysenter_return, thread_info, sysenter_return);
34631 - OFFSET(TI_cpu, thread_info, cpu);
34632 + OFFSET(TI_addr_limit, thread_info, addr_limit);
34633 + OFFSET(TI_preempt_count, thread_info, preempt_count);
34634 + OFFSET(TI_lowest_stack, thread_info, lowest_stack);
34635 + DEFINE(TI_task_thread_sp0, offsetof(struct task_struct, thread.sp0) - offsetof(struct task_struct, tinfo));
34636 - BLANK();
34637
34638 - OFFSET(GDS_size, desc_ptr, size);
34639 -@@ -99,6 +100,7 @@ void foo(void)
34640 -
34641 - DEFINE(PAGE_SIZE_asm, PAGE_SIZE);
34642 - DEFINE(PAGE_SHIFT_asm, PAGE_SHIFT);
34643 -+ DEFINE(THREAD_SIZE_asm, THREAD_SIZE);
34644 - DEFINE(PTRS_PER_PTE, PTRS_PER_PTE);
34645 - DEFINE(PTRS_PER_PMD, PTRS_PER_PMD);
34646 - DEFINE(PTRS_PER_PGD, PTRS_PER_PGD);
34647 -@@ -115,6 +117,11 @@ void foo(void)
34648 - OFFSET(PV_CPU_iret, pv_cpu_ops, iret);
34649 + BLANK();
34650 + OFFSET(crypto_tfm_ctx_offset, crypto_tfm, __crt_ctx);
34651 +@@ -53,8 +55,26 @@ void common(void) {
34652 OFFSET(PV_CPU_irq_enable_sysexit, pv_cpu_ops, irq_enable_sysexit);
34653 OFFSET(PV_CPU_read_cr0, pv_cpu_ops, read_cr0);
34654 -+
34655 -+#ifdef CONFIG_PAX_KERNEXEC
34656 -+ OFFSET(PV_CPU_write_cr0, pv_cpu_ops, write_cr0);
34657 -+#endif
34658 -+
34659 - #endif
34660 -
34661 - #ifdef CONFIG_XEN
34662 -diff -urNp linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c
34663 ---- linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c 2009-12-02 22:51:21.000000000 -0500
34664 -+++ linux-2.6.32.48/arch/x86/kernel/asm-offsets_64.c 2011-11-12 12:46:42.000000000 -0500
34665 -@@ -44,6 +44,8 @@ int main(void)
34666 - ENTRY(addr_limit);
34667 - ENTRY(preempt_count);
34668 - ENTRY(status);
34669 -+ ENTRY(lowest_stack);
34670 -+ DEFINE(TI_task_thread_sp0, offsetof(struct task_struct, thread.sp0) - offsetof(struct task_struct, tinfo));
34671 - #ifdef CONFIG_IA32_EMULATION
34672 - ENTRY(sysenter_return);
34673 - #endif
34674 -@@ -63,6 +65,18 @@ int main(void)
34675 - OFFSET(PV_CPU_irq_enable_sysexit, pv_cpu_ops, irq_enable_sysexit);
34676 - OFFSET(PV_CPU_swapgs, pv_cpu_ops, swapgs);
34677 OFFSET(PV_MMU_read_cr2, pv_mmu_ops, read_cr2);
34678 +
34679 +#ifdef CONFIG_PAX_KERNEXEC
34680 -+ OFFSET(PV_CPU_read_cr0, pv_cpu_ops, read_cr0);
34681 + OFFSET(PV_CPU_write_cr0, pv_cpu_ops, write_cr0);
34682 +#endif
34683 +
34684 +#ifdef CONFIG_PAX_MEMORY_UDEREF
34685 + OFFSET(PV_MMU_read_cr3, pv_mmu_ops, read_cr3);
34686 + OFFSET(PV_MMU_write_cr3, pv_mmu_ops, write_cr3);
34687 ++#ifdef CONFIG_X86_64
34688 + OFFSET(PV_MMU_set_pgd_batched, pv_mmu_ops, set_pgd_batched);
34689 +#endif
34690 -+
34691 #endif
34692
34693 -
34694 -@@ -115,6 +129,7 @@ int main(void)
34695 - ENTRY(cr8);
34696 - BLANK();
34697 - #undef ENTRY
34698 -+ DEFINE(TSS_size, sizeof(struct tss_struct));
34699 - DEFINE(TSS_ist, offsetof(struct tss_struct, x86_tss.ist));
34700 - BLANK();
34701 - DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
34702 -@@ -130,6 +145,7 @@ int main(void)
34703 -
34704 - BLANK();
34705 - DEFINE(PAGE_SIZE_asm, PAGE_SIZE);
34706 ++#endif
34707 ++
34708 ++ BLANK();
34709 ++ DEFINE(PAGE_SIZE_asm, PAGE_SIZE);
34710 ++ DEFINE(PAGE_SHIFT_asm, PAGE_SHIFT);
34711 + DEFINE(THREAD_SIZE_asm, THREAD_SIZE);
34712 ++
34713 #ifdef CONFIG_XEN
34714 BLANK();
34715 OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask);
34716 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/amd.c linux-2.6.32.48/arch/x86/kernel/cpu/amd.c
34717 ---- linux-2.6.32.48/arch/x86/kernel/cpu/amd.c 2011-11-12 12:44:28.000000000 -0500
34718 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/amd.c 2011-11-12 12:46:42.000000000 -0500
34719 -@@ -602,7 +602,7 @@ static unsigned int __cpuinit amd_size_c
34720 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/amd.c linux-3.0.8/arch/x86/kernel/cpu/amd.c
34721 +--- linux-3.0.8/arch/x86/kernel/cpu/amd.c 2011-07-21 22:17:23.000000000 -0400
34722 ++++ linux-3.0.8/arch/x86/kernel/cpu/amd.c 2011-08-23 21:47:55.000000000 -0400
34723 +@@ -647,7 +647,7 @@ static unsigned int __cpuinit amd_size_c
34724 unsigned int size)
34725 {
34726 /* AMD errata T13 (order #21922) */
34727 @@ -12501,9 +10835,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/amd.c linux-2.6.32.48/arch/x86/ke
34728 /* Duron Rev A0 */
34729 if (c->x86_model == 3 && c->x86_mask == 0)
34730 size = 64;
34731 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86/kernel/cpu/common.c
34732 ---- linux-2.6.32.48/arch/x86/kernel/cpu/common.c 2011-11-12 12:44:28.000000000 -0500
34733 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/common.c 2011-11-12 12:46:42.000000000 -0500
34734 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/common.c linux-3.0.8/arch/x86/kernel/cpu/common.c
34735 +--- linux-3.0.8/arch/x86/kernel/cpu/common.c 2011-07-21 22:17:23.000000000 -0400
34736 ++++ linux-3.0.8/arch/x86/kernel/cpu/common.c 2011-08-23 21:47:55.000000000 -0400
34737 @@ -83,60 +83,6 @@ static const struct cpu_dev __cpuinitcon
34738
34739 static const struct cpu_dev *this_cpu __cpuinitdata = &default_cpu;
34740 @@ -12565,7 +10899,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34741 static int __init x86_xsave_setup(char *s)
34742 {
34743 setup_clear_cpu_cap(X86_FEATURE_XSAVE);
34744 -@@ -344,7 +290,7 @@ void switch_to_new_gdt(int cpu)
34745 +@@ -371,7 +317,7 @@ void switch_to_new_gdt(int cpu)
34746 {
34747 struct desc_ptr gdt_descr;
34748
34749 @@ -12574,7 +10908,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34750 gdt_descr.size = GDT_SIZE - 1;
34751 load_gdt(&gdt_descr);
34752 /* Reload the per-cpu base */
34753 -@@ -798,6 +744,10 @@ static void __cpuinit identify_cpu(struc
34754 +@@ -840,6 +786,10 @@ static void __cpuinit identify_cpu(struc
34755 /* Filter out anything that depends on CPUID levels we don't have */
34756 filter_cpuid_features(c, true);
34757
34758 @@ -12585,7 +10919,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34759 /* If the model name is still unset, do table lookup. */
34760 if (!c->x86_model_id[0]) {
34761 const char *p;
34762 -@@ -980,6 +930,9 @@ static __init int setup_disablecpuid(cha
34763 +@@ -1019,6 +969,9 @@ static __init int setup_disablecpuid(cha
34764 }
34765 __setup("clearcpuid=", setup_disablecpuid);
34766
34767 @@ -12595,7 +10929,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34768 #ifdef CONFIG_X86_64
34769 struct desc_ptr idt_descr = { NR_VECTORS * 16 - 1, (unsigned long) idt_table };
34770
34771 -@@ -995,7 +948,7 @@ DEFINE_PER_CPU(struct task_struct *, cur
34772 +@@ -1034,7 +987,7 @@ DEFINE_PER_CPU(struct task_struct *, cur
34773 EXPORT_PER_CPU_SYMBOL(current_task);
34774
34775 DEFINE_PER_CPU(unsigned long, kernel_stack) =
34776 @@ -12604,7 +10938,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34777 EXPORT_PER_CPU_SYMBOL(kernel_stack);
34778
34779 DEFINE_PER_CPU(char *, irq_stack_ptr) =
34780 -@@ -1060,7 +1013,7 @@ struct pt_regs * __cpuinit idle_regs(str
34781 +@@ -1099,7 +1052,7 @@ struct pt_regs * __cpuinit idle_regs(str
34782 {
34783 memset(regs, 0, sizeof(struct pt_regs));
34784 regs->fs = __KERNEL_PERCPU;
34785 @@ -12613,16 +10947,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34786
34787 return regs;
34788 }
34789 -@@ -1101,7 +1054,7 @@ void __cpuinit cpu_init(void)
34790 +@@ -1154,7 +1107,7 @@ void __cpuinit cpu_init(void)
34791 int i;
34792
34793 cpu = stack_smp_processor_id();
34794 - t = &per_cpu(init_tss, cpu);
34795 + t = init_tss + cpu;
34796 - orig_ist = &per_cpu(orig_ist, cpu);
34797 + oist = &per_cpu(orig_ist, cpu);
34798
34799 #ifdef CONFIG_NUMA
34800 -@@ -1127,7 +1080,7 @@ void __cpuinit cpu_init(void)
34801 +@@ -1180,7 +1133,7 @@ void __cpuinit cpu_init(void)
34802 switch_to_new_gdt(cpu);
34803 loadsegment(fs, 0);
34804
34805 @@ -12631,15 +10965,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34806
34807 memset(me->thread.tls_array, 0, GDT_ENTRY_TLS_ENTRIES * 8);
34808 syscall_init();
34809 -@@ -1136,7 +1089,6 @@ void __cpuinit cpu_init(void)
34810 +@@ -1189,7 +1142,6 @@ void __cpuinit cpu_init(void)
34811 wrmsrl(MSR_KERNEL_GS_BASE, 0);
34812 barrier();
34813
34814 -- check_efer();
34815 +- x86_configure_nx();
34816 if (cpu != 0)
34817 enable_x2apic();
34818
34819 -@@ -1199,7 +1151,7 @@ void __cpuinit cpu_init(void)
34820 +@@ -1243,7 +1195,7 @@ void __cpuinit cpu_init(void)
34821 {
34822 int cpu = smp_processor_id();
34823 struct task_struct *curr = current;
34824 @@ -12648,10 +10982,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/common.c linux-2.6.32.48/arch/x86
34825 struct thread_struct *thread = &curr->thread;
34826
34827 if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
34828 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/intel.c linux-2.6.32.48/arch/x86/kernel/cpu/intel.c
34829 ---- linux-2.6.32.48/arch/x86/kernel/cpu/intel.c 2011-11-12 12:44:28.000000000 -0500
34830 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/intel.c 2011-11-12 12:46:42.000000000 -0500
34831 -@@ -162,7 +162,7 @@ static void __cpuinit trap_init_f00f_bug
34832 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/intel.c linux-3.0.8/arch/x86/kernel/cpu/intel.c
34833 +--- linux-3.0.8/arch/x86/kernel/cpu/intel.c 2011-10-24 08:05:23.000000000 -0400
34834 ++++ linux-3.0.8/arch/x86/kernel/cpu/intel.c 2011-08-29 23:30:14.000000000 -0400
34835 +@@ -172,7 +172,7 @@ static void __cpuinit trap_init_f00f_bug
34836 * Update the IDT descriptor and reload the IDT so that
34837 * it uses the read-only mapped virtual address.
34838 */
34839 @@ -12660,48 +10994,24 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/intel.c linux-2.6.32.48/arch/x86/
34840 load_idt(&idt_descr);
34841 }
34842 #endif
34843 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c
34844 ---- linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c 2011-11-12 12:44:28.000000000 -0500
34845 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/intel_cacheinfo.c 2011-11-12 12:46:42.000000000 -0500
34846 -@@ -921,7 +921,7 @@ static ssize_t store(struct kobject *kob
34847 - return ret;
34848 - }
34849 -
34850 --static struct sysfs_ops sysfs_ops = {
34851 -+static const struct sysfs_ops sysfs_ops = {
34852 - .show = show,
34853 - .store = store,
34854 - };
34855 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/Makefile linux-2.6.32.48/arch/x86/kernel/cpu/Makefile
34856 ---- linux-2.6.32.48/arch/x86/kernel/cpu/Makefile 2011-11-12 12:44:28.000000000 -0500
34857 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/Makefile 2011-11-12 12:46:42.000000000 -0500
34858 -@@ -7,10 +7,6 @@ ifdef CONFIG_FUNCTION_TRACER
34859 - CFLAGS_REMOVE_common.o = -pg
34860 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/Makefile linux-3.0.8/arch/x86/kernel/cpu/Makefile
34861 +--- linux-3.0.8/arch/x86/kernel/cpu/Makefile 2011-07-21 22:17:23.000000000 -0400
34862 ++++ linux-3.0.8/arch/x86/kernel/cpu/Makefile 2011-08-23 21:47:55.000000000 -0400
34863 +@@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
34864 + CFLAGS_REMOVE_perf_event.o = -pg
34865 endif
34866
34867 -# Make sure load_percpu_segment has no stackprotector
34868 -nostackp := $(call cc-option, -fno-stack-protector)
34869 -CFLAGS_common.o := $(nostackp)
34870 -
34871 - obj-y := intel_cacheinfo.o addon_cpuid_features.o
34872 + obj-y := intel_cacheinfo.o scattered.o topology.o
34873 obj-y += proc.o capflags.o powerflags.o common.o
34874 - obj-y += vmware.o hypervisor.o sched.o
34875 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c
34876 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c 2011-11-12 12:44:28.000000000 -0500
34877 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce_amd.c 2011-11-12 12:46:42.000000000 -0500
34878 -@@ -385,7 +385,7 @@ static ssize_t store(struct kobject *kob
34879 - return ret;
34880 - }
34881 -
34882 --static struct sysfs_ops threshold_ops = {
34883 -+static const struct sysfs_ops threshold_ops = {
34884 - .show = show,
34885 - .store = store,
34886 - };
34887 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c
34888 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-12 12:44:28.000000000 -0500
34889 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c 2011-11-12 12:46:42.000000000 -0500
34890 -@@ -43,6 +43,7 @@
34891 + obj-y += vmware.o hypervisor.o sched.o mshyperv.o
34892 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce.c linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce.c
34893 +--- linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce.c 2011-07-21 22:17:23.000000000 -0400
34894 ++++ linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce.c 2011-08-23 21:47:55.000000000 -0400
34895 +@@ -46,6 +46,7 @@
34896 #include <asm/ipi.h>
34897 #include <asm/mce.h>
34898 #include <asm/msr.h>
34899 @@ -12709,7 +11019,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34900
34901 #include "mce-internal.h"
34902
34903 -@@ -187,7 +188,7 @@ static void print_mce(struct mce *m)
34904 +@@ -208,7 +209,7 @@ static void print_mce(struct mce *m)
34905 !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
34906 m->cs, m->ip);
34907
34908 @@ -12718,7 +11028,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34909 print_symbol("{%s}", m->ip);
34910 pr_cont("\n");
34911 }
34912 -@@ -221,10 +222,10 @@ static void print_mce_tail(void)
34913 +@@ -236,10 +237,10 @@ static void print_mce(struct mce *m)
34914
34915 #define PANIC_TIMEOUT 5 /* 5 seconds */
34916
34917 @@ -12731,7 +11041,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34918
34919 /* Panic in progress. Enable interrupts and wait for final IPI */
34920 static void wait_for_panic(void)
34921 -@@ -248,7 +249,7 @@ static void mce_panic(char *msg, struct
34922 +@@ -263,7 +264,7 @@ static void mce_panic(char *msg, struct
34923 /*
34924 * Make sure only one CPU runs in machine check panic
34925 */
34926 @@ -12740,7 +11050,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34927 wait_for_panic();
34928 barrier();
34929
34930 -@@ -256,7 +257,7 @@ static void mce_panic(char *msg, struct
34931 +@@ -271,7 +272,7 @@ static void mce_panic(char *msg, struct
34932 console_verbose();
34933 } else {
34934 /* Don't log too much for fake panic */
34935 @@ -12748,8 +11058,8 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34936 + if (atomic_inc_return_unchecked(&mce_fake_paniced) > 1)
34937 return;
34938 }
34939 - print_mce_head();
34940 -@@ -616,7 +617,7 @@ static int mce_timed_out(u64 *t)
34941 + /* First print corrected ones that are still unlogged */
34942 +@@ -638,7 +639,7 @@ static int mce_timed_out(u64 *t)
34943 * might have been modified by someone else.
34944 */
34945 rmb();
34946 @@ -12758,7 +11068,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34947 wait_for_panic();
34948 if (!monarch_timeout)
34949 goto out;
34950 -@@ -1429,14 +1430,14 @@ void __cpuinit mcheck_init(struct cpuinf
34951 +@@ -1452,14 +1453,14 @@ void __cpuinit mcheck_cpu_init(struct cp
34952 */
34953
34954 static DEFINE_SPINLOCK(mce_state_lock);
34955 @@ -12775,7 +11085,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34956 spin_unlock(&mce_state_lock);
34957
34958 return -EBUSY;
34959 -@@ -1444,7 +1445,7 @@ static int mce_open(struct inode *inode,
34960 +@@ -1467,7 +1468,7 @@ static int mce_open(struct inode *inode,
34961
34962 if (file->f_flags & O_EXCL)
34963 open_exclu = 1;
34964 @@ -12784,7 +11094,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34965
34966 spin_unlock(&mce_state_lock);
34967
34968 -@@ -1455,7 +1456,7 @@ static int mce_release(struct inode *ino
34969 +@@ -1478,7 +1479,7 @@ static int mce_release(struct inode *ino
34970 {
34971 spin_lock(&mce_state_lock);
34972
34973 @@ -12793,7 +11103,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34974 open_exclu = 0;
34975
34976 spin_unlock(&mce_state_lock);
34977 -@@ -2082,7 +2083,7 @@ struct dentry *mce_get_debugfs_dir(void)
34978 +@@ -2163,7 +2164,7 @@ struct dentry *mce_get_debugfs_dir(void)
34979 static void mce_reset(void)
34980 {
34981 cpu_missing = 0;
34982 @@ -12802,12 +11112,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.48/arch
34983 atomic_set(&mce_executing, 0);
34984 atomic_set(&mce_callin, 0);
34985 atomic_set(&global_nwo, 0);
34986 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c
34987 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c 2009-12-02 22:51:21.000000000 -0500
34988 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-11-12 12:46:42.000000000 -0500
34989 -@@ -211,7 +211,9 @@ static ssize_t mce_write(struct file *fi
34990 - static int inject_init(void)
34991 - {
34992 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce-inject.c
34993 +--- linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-07-21 22:17:23.000000000 -0400
34994 ++++ linux-3.0.8/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-08-23 21:47:55.000000000 -0400
34995 +@@ -215,7 +215,9 @@ static int inject_init(void)
34996 + if (!alloc_cpumask_var(&mce_inject_cpumask, GFP_KERNEL))
34997 + return -ENOMEM;
34998 printk(KERN_INFO "Machine check injector initialized\n");
34999 - mce_chrdev_ops.write = mce_write;
35000 + pax_open_kernel();
35001 @@ -12816,79 +11126,22 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-2.6.32.
35002 register_die_notifier(&mce_raise_nb);
35003 return 0;
35004 }
35005 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c
35006 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c 2009-12-02 22:51:21.000000000 -0500
35007 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/amd.c 2011-11-12 12:46:42.000000000 -0500
35008 -@@ -108,7 +108,7 @@ amd_validate_add_page(unsigned long base
35009 - return 0;
35010 - }
35011 -
35012 --static struct mtrr_ops amd_mtrr_ops = {
35013 -+static const struct mtrr_ops amd_mtrr_ops = {
35014 - .vendor = X86_VENDOR_AMD,
35015 - .set = amd_set_mtrr,
35016 - .get = amd_get_mtrr,
35017 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c
35018 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c 2009-12-02 22:51:21.000000000 -0500
35019 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/centaur.c 2011-11-12 12:46:42.000000000 -0500
35020 -@@ -110,7 +110,7 @@ centaur_validate_add_page(unsigned long
35021 - return 0;
35022 - }
35023 -
35024 --static struct mtrr_ops centaur_mtrr_ops = {
35025 -+static const struct mtrr_ops centaur_mtrr_ops = {
35026 - .vendor = X86_VENDOR_CENTAUR,
35027 - .set = centaur_set_mcr,
35028 - .get = centaur_get_mcr,
35029 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c
35030 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c 2009-12-02 22:51:21.000000000 -0500
35031 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/cyrix.c 2011-11-12 12:46:42.000000000 -0500
35032 -@@ -265,7 +265,7 @@ static void cyrix_set_all(void)
35033 - post_set();
35034 - }
35035 -
35036 --static struct mtrr_ops cyrix_mtrr_ops = {
35037 -+static const struct mtrr_ops cyrix_mtrr_ops = {
35038 - .vendor = X86_VENDOR_CYRIX,
35039 - .set_all = cyrix_set_all,
35040 - .set = cyrix_set_arr,
35041 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c
35042 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c 2009-12-02 22:51:21.000000000 -0500
35043 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/generic.c 2011-11-12 12:46:42.000000000 -0500
35044 -@@ -752,7 +752,7 @@ int positive_have_wrcomb(void)
35045 - /*
35046 - * Generic structure...
35047 - */
35048 --struct mtrr_ops generic_mtrr_ops = {
35049 -+const struct mtrr_ops generic_mtrr_ops = {
35050 - .use_intel_if = 1,
35051 - .set_all = generic_set_all,
35052 - .get = generic_get_mtrr,
35053 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c
35054 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c 2011-11-12 12:44:28.000000000 -0500
35055 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/main.c 2011-11-12 12:46:42.000000000 -0500
35056 -@@ -60,14 +60,14 @@ static DEFINE_MUTEX(mtrr_mutex);
35057 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/mtrr/main.c linux-3.0.8/arch/x86/kernel/cpu/mtrr/main.c
35058 +--- linux-3.0.8/arch/x86/kernel/cpu/mtrr/main.c 2011-10-24 08:05:23.000000000 -0400
35059 ++++ linux-3.0.8/arch/x86/kernel/cpu/mtrr/main.c 2011-08-29 23:26:21.000000000 -0400
35060 +@@ -62,7 +62,7 @@ static DEFINE_MUTEX(mtrr_mutex);
35061 u64 size_or_mask, size_and_mask;
35062 static bool mtrr_aps_delayed_init;
35063
35064 --static struct mtrr_ops *mtrr_ops[X86_VENDOR_NUM];
35065 +-static const struct mtrr_ops *mtrr_ops[X86_VENDOR_NUM];
35066 +static const struct mtrr_ops *mtrr_ops[X86_VENDOR_NUM] __read_only;
35067
35068 --struct mtrr_ops *mtrr_if;
35069 -+const struct mtrr_ops *mtrr_if;
35070 -
35071 - static void set_mtrr(unsigned int reg, unsigned long base,
35072 - unsigned long size, mtrr_type type);
35073 + const struct mtrr_ops *mtrr_if;
35074
35075 --void set_mtrr_ops(struct mtrr_ops *ops)
35076 -+void set_mtrr_ops(const struct mtrr_ops *ops)
35077 - {
35078 - if (ops->vendor && ops->vendor < X86_VENDOR_NUM)
35079 - mtrr_ops[ops->vendor] = ops;
35080 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h
35081 ---- linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h 2009-12-02 22:51:21.000000000 -0500
35082 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-11-12 12:46:42.000000000 -0500
35083 -@@ -25,14 +25,14 @@ struct mtrr_ops {
35084 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/mtrr/mtrr.h linux-3.0.8/arch/x86/kernel/cpu/mtrr/mtrr.h
35085 +--- linux-3.0.8/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-07-21 22:17:23.000000000 -0400
35086 ++++ linux-3.0.8/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-08-26 19:49:56.000000000 -0400
35087 +@@ -25,7 +25,7 @@ struct mtrr_ops {
35088 int (*validate_add_page)(unsigned long base, unsigned long size,
35089 unsigned int type);
35090 int (*have_wrcomb)(void);
35091 @@ -12897,110 +11150,31 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/mtrr/mtrr.h linux-2.6.32.48/arch/
35092
35093 extern int generic_get_free_region(unsigned long base, unsigned long size,
35094 int replace_reg);
35095 - extern int generic_validate_add_page(unsigned long base, unsigned long size,
35096 - unsigned int type);
35097 +diff -urNp linux-3.0.8/arch/x86/kernel/cpu/perf_event.c linux-3.0.8/arch/x86/kernel/cpu/perf_event.c
35098 +--- linux-3.0.8/arch/x86/kernel/cpu/perf_event.c 2011-10-24 08:05:30.000000000 -0400
35099 ++++ linux-3.0.8/arch/x86/kernel/cpu/perf_event.c 2011-10-16 21:55:27.000000000 -0400
35100 +@@ -781,6 +781,8 @@ static int x86_schedule_events(struct cp
35101 + int i, j, w, wmax, num = 0;
35102 + struct hw_perf_event *hwc;
35103
35104 --extern struct mtrr_ops generic_mtrr_ops;
35105 -+extern const struct mtrr_ops generic_mtrr_ops;
35106 -
35107 - extern int positive_have_wrcomb(void);
35108 -
35109 -@@ -53,10 +53,10 @@ void fill_mtrr_var_range(unsigned int in
35110 - u32 base_lo, u32 base_hi, u32 mask_lo, u32 mask_hi);
35111 - void get_mtrr_state(void);
35112 -
35113 --extern void set_mtrr_ops(struct mtrr_ops *ops);
35114 -+extern void set_mtrr_ops(const struct mtrr_ops *ops);
35115 -
35116 - extern u64 size_or_mask, size_and_mask;
35117 --extern struct mtrr_ops *mtrr_if;
35118 -+extern const struct mtrr_ops *mtrr_if;
35119 -
35120 - #define is_cpu(vnd) (mtrr_if && mtrr_if->vendor == X86_VENDOR_##vnd)
35121 - #define use_intel() (mtrr_if && mtrr_if->use_intel_if == 1)
35122 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c
35123 ---- linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c 2011-11-12 12:44:28.000000000 -0500
35124 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/perfctr-watchdog.c 2011-11-12 12:46:42.000000000 -0500
35125 -@@ -30,11 +30,11 @@ struct nmi_watchdog_ctlblk {
35126 -
35127 - /* Interface defining a CPU specific perfctr watchdog */
35128 - struct wd_ops {
35129 -- int (*reserve)(void);
35130 -- void (*unreserve)(void);
35131 -- int (*setup)(unsigned nmi_hz);
35132 -- void (*rearm)(struct nmi_watchdog_ctlblk *wd, unsigned nmi_hz);
35133 -- void (*stop)(void);
35134 -+ int (* const reserve)(void);
35135 -+ void (* const unreserve)(void);
35136 -+ int (* const setup)(unsigned nmi_hz);
35137 -+ void (* const rearm)(struct nmi_watchdog_ctlblk *wd, unsigned nmi_hz);
35138 -+ void (* const stop)(void);
35139 - unsigned perfctr;
35140 - unsigned evntsel;
35141 - u64 checkbit;
35142 -@@ -645,6 +645,7 @@ static const struct wd_ops p4_wd_ops = {
35143 - #define ARCH_PERFMON_NMI_EVENT_SEL ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL
35144 - #define ARCH_PERFMON_NMI_EVENT_UMASK ARCH_PERFMON_UNHALTED_CORE_CYCLES_UMASK
35145 -
35146 -+/* cannot be const */
35147 - static struct wd_ops intel_arch_wd_ops;
35148 -
35149 - static int setup_intel_arch_watchdog(unsigned nmi_hz)
35150 -@@ -697,6 +698,7 @@ static int setup_intel_arch_watchdog(uns
35151 - return 1;
35152 - }
35153 -
35154 -+/* cannot be const */
35155 - static struct wd_ops intel_arch_wd_ops __read_mostly = {
35156 - .reserve = single_msr_reserve,
35157 - .unreserve = single_msr_unreserve,
35158 -diff -urNp linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c
35159 ---- linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c 2011-11-12 12:44:28.000000000 -0500
35160 -+++ linux-2.6.32.48/arch/x86/kernel/cpu/perf_event.c 2011-11-12 12:46:42.000000000 -0500
35161 -@@ -723,10 +723,10 @@ x86_perf_event_update(struct perf_event
35162 - * count to the generic event atomically:
35163 - */
35164 - again:
35165 -- prev_raw_count = atomic64_read(&hwc->prev_count);
35166 -+ prev_raw_count = atomic64_read_unchecked(&hwc->prev_count);
35167 - rdmsrl(hwc->event_base + idx, new_raw_count);
35168 -
35169 -- if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count,
35170 -+ if (atomic64_cmpxchg_unchecked(&hwc->prev_count, prev_raw_count,
35171 - new_raw_count) != prev_raw_count)
35172 - goto again;
35173 -
35174 -@@ -741,7 +741,7 @@ again:
35175 - delta = (new_raw_count << shift) - (prev_raw_count << shift);
35176 - delta >>= shift;
35177 -
35178 -- atomic64_add(delta, &event->count);
35179 -+ atomic64_add_unchecked(delta, &event->count);
35180 - atomic64_sub(delta, &hwc->period_left);
35181 -
35182 - return new_raw_count;
35183 -@@ -1353,7 +1353,7 @@ x86_perf_event_set_period(struct perf_ev
35184 - * The hw event starts counting from this event offset,
35185 - * mark it to be able to extra future deltas:
35186 - */
35187 -- atomic64_set(&hwc->prev_count, (u64)-left);
35188 -+ atomic64_set_unchecked(&hwc->prev_count, (u64)-left);
35189 ++ pax_track_stack();
35190 ++
35191 + bitmap_zero(used_mask, X86_PMC_IDX_MAX);
35192
35193 - err = checking_wrmsrl(hwc->event_base + idx,
35194 - (u64)(-left) & x86_pmu.event_mask);
35195 -@@ -2357,7 +2357,7 @@ perf_callchain_user(struct pt_regs *regs
35196 + for (i = 0; i < n; i++) {
35197 +@@ -1875,7 +1877,7 @@ perf_callchain_user(struct perf_callchai
35198 break;
35199
35200 - callchain_store(entry, frame.return_address);
35201 + perf_callchain_store(entry, frame.return_address);
35202 - fp = frame.next_frame;
35203 -+ fp = (__force const void __user *)frame.next_frame;
35204 ++ fp = (const void __force_user *)frame.next_frame;
35205 }
35206 }
35207
35208 -diff -urNp linux-2.6.32.48/arch/x86/kernel/crash.c linux-2.6.32.48/arch/x86/kernel/crash.c
35209 ---- linux-2.6.32.48/arch/x86/kernel/crash.c 2011-11-12 12:44:28.000000000 -0500
35210 -+++ linux-2.6.32.48/arch/x86/kernel/crash.c 2011-11-12 12:46:42.000000000 -0500
35211 -@@ -41,7 +41,7 @@ static void kdump_nmi_callback(int cpu,
35212 +diff -urNp linux-3.0.8/arch/x86/kernel/crash.c linux-3.0.8/arch/x86/kernel/crash.c
35213 +--- linux-3.0.8/arch/x86/kernel/crash.c 2011-07-21 22:17:23.000000000 -0400
35214 ++++ linux-3.0.8/arch/x86/kernel/crash.c 2011-08-23 21:47:55.000000000 -0400
35215 +@@ -42,7 +42,7 @@ static void kdump_nmi_callback(int cpu,
35216 regs = args->regs;
35217
35218 #ifdef CONFIG_X86_32
35219 @@ -13009,9 +11183,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/crash.c linux-2.6.32.48/arch/x86/kern
35220 crash_fixup_ss_esp(&fixed_regs, regs);
35221 regs = &fixed_regs;
35222 }
35223 -diff -urNp linux-2.6.32.48/arch/x86/kernel/doublefault_32.c linux-2.6.32.48/arch/x86/kernel/doublefault_32.c
35224 ---- linux-2.6.32.48/arch/x86/kernel/doublefault_32.c 2009-12-02 22:51:21.000000000 -0500
35225 -+++ linux-2.6.32.48/arch/x86/kernel/doublefault_32.c 2011-11-12 12:46:42.000000000 -0500
35226 +diff -urNp linux-3.0.8/arch/x86/kernel/doublefault_32.c linux-3.0.8/arch/x86/kernel/doublefault_32.c
35227 +--- linux-3.0.8/arch/x86/kernel/doublefault_32.c 2011-07-21 22:17:23.000000000 -0400
35228 ++++ linux-3.0.8/arch/x86/kernel/doublefault_32.c 2011-08-23 21:47:55.000000000 -0400
35229 @@ -11,7 +11,7 @@
35230
35231 #define DOUBLEFAULT_STACKSIZE (1024)
35232 @@ -13043,22 +11217,21 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/doublefault_32.c linux-2.6.32.48/arch
35233 .fs = __KERNEL_PERCPU,
35234
35235 .__cr3 = __pa_nodebug(swapper_pg_dir),
35236 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c
35237 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c 2009-12-02 22:51:21.000000000 -0500
35238 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c 2011-11-12 12:46:42.000000000 -0500
35239 -@@ -53,16 +53,12 @@ void dump_trace(struct task_struct *task
35240 - #endif
35241 +diff -urNp linux-3.0.8/arch/x86/kernel/dumpstack_32.c linux-3.0.8/arch/x86/kernel/dumpstack_32.c
35242 +--- linux-3.0.8/arch/x86/kernel/dumpstack_32.c 2011-07-21 22:17:23.000000000 -0400
35243 ++++ linux-3.0.8/arch/x86/kernel/dumpstack_32.c 2011-08-23 21:47:55.000000000 -0400
35244 +@@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task
35245 + bp = stack_frame(task, regs);
35246
35247 for (;;) {
35248 - struct thread_info *context;
35249 + void *stack_start = (void *)((unsigned long)stack & ~(THREAD_SIZE-1));
35250 -+ bp = print_context_stack(task, stack_start, stack, bp, ops, data, NULL, &graph);
35251
35252 - context = (struct thread_info *)
35253 - ((unsigned long)stack & (~(THREAD_SIZE - 1)));
35254 -- bp = print_context_stack(context, stack, bp, ops,
35255 -- data, NULL, &graph);
35256 --
35257 +- bp = ops->walk_stack(context, stack, bp, ops, data, NULL, &graph);
35258 ++ bp = ops->walk_stack(task, stack_start, stack, bp, ops, data, NULL, &graph);
35259 +
35260 - stack = (unsigned long *)context->previous_esp;
35261 - if (!stack)
35262 + if (stack_start == task_stack_page(task))
35263 @@ -13067,7 +11240,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x
35264 if (ops->stack(data, "IRQ") < 0)
35265 break;
35266 touch_nmi_watchdog();
35267 -@@ -112,11 +108,12 @@ void show_registers(struct pt_regs *regs
35268 +@@ -96,21 +94,22 @@ void show_registers(struct pt_regs *regs
35269 * When in-kernel, we also print out the stack and code at the
35270 * time of the fault..
35271 */
35272 @@ -13080,8 +11253,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x
35273 + unsigned long cs_base = get_desc_base(&get_cpu_gdt_table(smp_processor_id())[(0xffff & regs->cs) >> 3]);
35274
35275 printk(KERN_EMERG "Stack:\n");
35276 - show_stack_log_lvl(NULL, regs, &regs->sp,
35277 -@@ -124,10 +121,10 @@ void show_registers(struct pt_regs *regs
35278 + show_stack_log_lvl(NULL, regs, &regs->sp, 0, KERN_EMERG);
35279
35280 printk(KERN_EMERG "Code: ");
35281
35282 @@ -13094,7 +11266,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x
35283 code_len = code_len - code_prologue + 1;
35284 }
35285 for (i = 0; i < code_len; i++, ip++) {
35286 -@@ -136,7 +133,7 @@ void show_registers(struct pt_regs *regs
35287 +@@ -119,7 +118,7 @@ void show_registers(struct pt_regs *regs
35288 printk(" Bad EIP value.");
35289 break;
35290 }
35291 @@ -13103,7 +11275,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x
35292 printk("<%02x> ", c);
35293 else
35294 printk("%02x ", c);
35295 -@@ -149,6 +146,7 @@ int is_valid_bugaddr(unsigned long ip)
35296 +@@ -132,6 +131,7 @@ int is_valid_bugaddr(unsigned long ip)
35297 {
35298 unsigned short ud2;
35299
35300 @@ -13111,20 +11283,21 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_32.c linux-2.6.32.48/arch/x
35301 if (ip < PAGE_OFFSET)
35302 return 0;
35303 if (probe_kernel_address((unsigned short *)ip, ud2))
35304 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c
35305 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c 2009-12-02 22:51:21.000000000 -0500
35306 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c 2011-11-12 12:46:42.000000000 -0500
35307 -@@ -116,8 +116,8 @@ void dump_trace(struct task_struct *task
35308 +diff -urNp linux-3.0.8/arch/x86/kernel/dumpstack_64.c linux-3.0.8/arch/x86/kernel/dumpstack_64.c
35309 +--- linux-3.0.8/arch/x86/kernel/dumpstack_64.c 2011-07-21 22:17:23.000000000 -0400
35310 ++++ linux-3.0.8/arch/x86/kernel/dumpstack_64.c 2011-08-23 21:47:55.000000000 -0400
35311 +@@ -147,9 +147,9 @@ void dump_trace(struct task_struct *task
35312 unsigned long *irq_stack_end =
35313 (unsigned long *)per_cpu(irq_stack_ptr, cpu);
35314 unsigned used = 0;
35315 - struct thread_info *tinfo;
35316 int graph = 0;
35317 + unsigned long dummy;
35318 + void *stack_start;
35319
35320 if (!task)
35321 task = current;
35322 -@@ -146,10 +146,10 @@ void dump_trace(struct task_struct *task
35323 +@@ -167,10 +167,10 @@ void dump_trace(struct task_struct *task
35324 * current stack address. If the stacks consist of nested
35325 * exceptions
35326 */
35327 @@ -13136,37 +11309,37 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack_64.c linux-2.6.32.48/arch/x
35328 estack_end = in_exception_stack(cpu, (unsigned long)stack,
35329 &used, &id);
35330
35331 -@@ -157,7 +157,7 @@ void dump_trace(struct task_struct *task
35332 +@@ -178,7 +178,7 @@ void dump_trace(struct task_struct *task
35333 if (ops->stack(data, id) < 0)
35334 break;
35335
35336 -- bp = print_context_stack(tinfo, stack, bp, ops,
35337 -+ bp = print_context_stack(task, estack_end - EXCEPTION_STKSZ, stack, bp, ops,
35338 - data, estack_end, &graph);
35339 +- bp = ops->walk_stack(tinfo, stack, bp, ops,
35340 ++ bp = ops->walk_stack(task, estack_end - EXCEPTION_STKSZ, stack, bp, ops,
35341 + data, estack_end, &graph);
35342 ops->stack(data, "<EOE>");
35343 /*
35344 -@@ -176,7 +176,7 @@ void dump_trace(struct task_struct *task
35345 - if (stack >= irq_stack && stack < irq_stack_end) {
35346 +@@ -197,7 +197,7 @@ void dump_trace(struct task_struct *task
35347 + if (in_irq_stack(stack, irq_stack, irq_stack_end)) {
35348 if (ops->stack(data, "IRQ") < 0)
35349 break;
35350 -- bp = print_context_stack(tinfo, stack, bp,
35351 -+ bp = print_context_stack(task, irq_stack, stack, bp,
35352 +- bp = ops->walk_stack(tinfo, stack, bp,
35353 ++ bp = ops->walk_stack(task, irq_stack, stack, bp,
35354 ops, data, irq_stack_end, &graph);
35355 /*
35356 * We link to the next stack (which would be
35357 -@@ -195,7 +195,8 @@ void dump_trace(struct task_struct *task
35358 +@@ -218,7 +218,8 @@ void dump_trace(struct task_struct *task
35359 /*
35360 * This handles the process stack:
35361 */
35362 -- bp = print_context_stack(tinfo, stack, bp, ops, data, NULL, &graph);
35363 +- bp = ops->walk_stack(tinfo, stack, bp, ops, data, NULL, &graph);
35364 + stack_start = (void *)((unsigned long)stack & ~(THREAD_SIZE-1));
35365 -+ bp = print_context_stack(task, stack_start, stack, bp, ops, data, NULL, &graph);
35366 ++ bp = ops->walk_stack(task, stack_start, stack, bp, ops, data, NULL, &graph);
35367 put_cpu();
35368 }
35369 EXPORT_SYMBOL(dump_trace);
35370 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/kernel/dumpstack.c
35371 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack.c 2009-12-02 22:51:21.000000000 -0500
35372 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack.c 2011-11-12 12:46:42.000000000 -0500
35373 +diff -urNp linux-3.0.8/arch/x86/kernel/dumpstack.c linux-3.0.8/arch/x86/kernel/dumpstack.c
35374 +--- linux-3.0.8/arch/x86/kernel/dumpstack.c 2011-07-21 22:17:23.000000000 -0400
35375 ++++ linux-3.0.8/arch/x86/kernel/dumpstack.c 2011-08-23 21:48:14.000000000 -0400
35376 @@ -2,6 +2,9 @@
35377 * Copyright (C) 1991, 1992 Linus Torvalds
35378 * Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
35379 @@ -13177,16 +11350,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35380 #include <linux/kallsyms.h>
35381 #include <linux/kprobes.h>
35382 #include <linux/uaccess.h>
35383 -@@ -28,7 +31,7 @@ static int die_counter;
35384 -
35385 - void printk_address(unsigned long address, int reliable)
35386 - {
35387 -- printk(" [<%p>] %s%pS\n", (void *) address,
35388 -+ printk(" [<%p>] %s%pA\n", (void *) address,
35389 - reliable ? "" : "? ", (void *) address);
35390 - }
35391 -
35392 -@@ -36,9 +39,8 @@ void printk_address(unsigned long addres
35393 +@@ -35,9 +38,8 @@ void printk_address(unsigned long addres
35394 static void
35395 print_ftrace_graph_addr(unsigned long addr, void *data,
35396 const struct stacktrace_ops *ops,
35397 @@ -13197,7 +11361,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35398 unsigned long ret_addr;
35399 int index = task->curr_ret_stack;
35400
35401 -@@ -59,7 +61,7 @@ print_ftrace_graph_addr(unsigned long ad
35402 +@@ -58,7 +60,7 @@ print_ftrace_graph_addr(unsigned long ad
35403 static inline void
35404 print_ftrace_graph_addr(unsigned long addr, void *data,
35405 const struct stacktrace_ops *ops,
35406 @@ -13206,7 +11370,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35407 { }
35408 #endif
35409
35410 -@@ -70,10 +72,8 @@ print_ftrace_graph_addr(unsigned long ad
35411 +@@ -69,10 +71,8 @@ print_ftrace_graph_addr(unsigned long ad
35412 * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack
35413 */
35414
35415 @@ -13218,7 +11382,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35416 if (end) {
35417 if (p < end && p >= (end-THREAD_SIZE))
35418 return 1;
35419 -@@ -84,14 +84,14 @@ static inline int valid_stack_ptr(struct
35420 +@@ -83,14 +83,14 @@ static inline int valid_stack_ptr(struct
35421 }
35422
35423 unsigned long
35424 @@ -13235,7 +11399,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35425 unsigned long addr;
35426
35427 addr = *stack;
35428 -@@ -103,7 +103,7 @@ print_context_stack(struct thread_info *
35429 +@@ -102,7 +102,7 @@ print_context_stack(struct thread_info *
35430 } else {
35431 ops->address(data, addr, 0);
35432 }
35433 @@ -13244,25 +11408,52 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35434 }
35435 stack++;
35436 }
35437 -@@ -180,7 +180,7 @@ void dump_stack(void)
35438 - #endif
35439 +@@ -111,7 +111,7 @@ print_context_stack(struct thread_info *
35440 + EXPORT_SYMBOL_GPL(print_context_stack);
35441 +
35442 + unsigned long
35443 +-print_context_stack_bp(struct thread_info *tinfo,
35444 ++print_context_stack_bp(struct task_struct *task, void *stack_start,
35445 + unsigned long *stack, unsigned long bp,
35446 + const struct stacktrace_ops *ops, void *data,
35447 + unsigned long *end, int *graph)
35448 +@@ -119,7 +119,7 @@ print_context_stack_bp(struct thread_inf
35449 + struct stack_frame *frame = (struct stack_frame *)bp;
35450 + unsigned long *ret_addr = &frame->return_address;
35451 +
35452 +- while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) {
35453 ++ while (valid_stack_ptr(stack_start, ret_addr, sizeof(*ret_addr), end)) {
35454 + unsigned long addr = *ret_addr;
35455
35456 + if (!__kernel_text_address(addr))
35457 +@@ -128,7 +128,7 @@ print_context_stack_bp(struct thread_inf
35458 + ops->address(data, addr, 1);
35459 + frame = frame->next_frame;
35460 + ret_addr = &frame->return_address;
35461 +- print_ftrace_graph_addr(addr, data, ops, tinfo, graph);
35462 ++ print_ftrace_graph_addr(addr, data, ops, task, graph);
35463 + }
35464 +
35465 + return (unsigned long)frame;
35466 +@@ -186,7 +186,7 @@ void dump_stack(void)
35467 +
35468 + bp = stack_frame(current, NULL);
35469 printk("Pid: %d, comm: %.20s %s %s %.*s\n",
35470 - current->pid, current->comm, print_tainted(),
35471 + task_pid_nr(current), current->comm, print_tainted(),
35472 init_utsname()->release,
35473 (int)strcspn(init_utsname()->version, " "),
35474 init_utsname()->version);
35475 -@@ -220,6 +220,8 @@ unsigned __kprobes long oops_begin(void)
35476 - return flags;
35477 +@@ -222,6 +222,8 @@ unsigned __kprobes long oops_begin(void)
35478 }
35479 + EXPORT_SYMBOL_GPL(oops_begin);
35480
35481 +extern void gr_handle_kernel_exploit(void);
35482 +
35483 void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
35484 {
35485 if (regs && kexec_should_crash(current))
35486 -@@ -241,7 +243,10 @@ void __kprobes oops_end(unsigned long fl
35487 +@@ -243,7 +245,10 @@ void __kprobes oops_end(unsigned long fl
35488 panic("Fatal exception in interrupt");
35489 if (panic_on_oops)
35490 panic("Fatal exception");
35491 @@ -13274,7 +11465,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35492 }
35493
35494 int __kprobes __die(const char *str, struct pt_regs *regs, long err)
35495 -@@ -295,7 +300,7 @@ void die(const char *str, struct pt_regs
35496 +@@ -269,7 +274,7 @@ int __kprobes __die(const char *str, str
35497 +
35498 + show_registers(regs);
35499 + #ifdef CONFIG_X86_32
35500 +- if (user_mode_vm(regs)) {
35501 ++ if (user_mode(regs)) {
35502 + sp = regs->sp;
35503 + ss = regs->ss & 0xffff;
35504 + } else {
35505 +@@ -297,7 +302,7 @@ void die(const char *str, struct pt_regs
35506 unsigned long flags = oops_begin();
35507 int sig = SIGSEGV;
35508
35509 @@ -13283,33 +11483,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.c linux-2.6.32.48/arch/x86/
35510 report_bug(regs->ip, regs);
35511
35512 if (__die(str, regs, err))
35513 -diff -urNp linux-2.6.32.48/arch/x86/kernel/dumpstack.h linux-2.6.32.48/arch/x86/kernel/dumpstack.h
35514 ---- linux-2.6.32.48/arch/x86/kernel/dumpstack.h 2009-12-02 22:51:21.000000000 -0500
35515 -+++ linux-2.6.32.48/arch/x86/kernel/dumpstack.h 2011-11-12 12:46:42.000000000 -0500
35516 -@@ -15,7 +15,7 @@
35517 - #endif
35518 -
35519 - extern unsigned long
35520 --print_context_stack(struct thread_info *tinfo,
35521 -+print_context_stack(struct task_struct *task, void *stack_start,
35522 - unsigned long *stack, unsigned long bp,
35523 - const struct stacktrace_ops *ops, void *data,
35524 - unsigned long *end, int *graph);
35525 -diff -urNp linux-2.6.32.48/arch/x86/kernel/e820.c linux-2.6.32.48/arch/x86/kernel/e820.c
35526 ---- linux-2.6.32.48/arch/x86/kernel/e820.c 2011-11-12 12:44:28.000000000 -0500
35527 -+++ linux-2.6.32.48/arch/x86/kernel/e820.c 2011-11-12 12:46:42.000000000 -0500
35528 -@@ -733,7 +733,7 @@ struct early_res {
35529 - };
35530 - static struct early_res early_res[MAX_EARLY_RES] __initdata = {
35531 - { 0, PAGE_SIZE, "BIOS data page" }, /* BIOS data page */
35532 -- {}
35533 -+ { 0, 0, {0}, 0 }
35534 - };
35535 -
35536 - static int __init find_overlapped_early(u64 start, u64 end)
35537 -diff -urNp linux-2.6.32.48/arch/x86/kernel/early_printk.c linux-2.6.32.48/arch/x86/kernel/early_printk.c
35538 ---- linux-2.6.32.48/arch/x86/kernel/early_printk.c 2009-12-02 22:51:21.000000000 -0500
35539 -+++ linux-2.6.32.48/arch/x86/kernel/early_printk.c 2011-11-12 12:46:42.000000000 -0500
35540 +diff -urNp linux-3.0.8/arch/x86/kernel/early_printk.c linux-3.0.8/arch/x86/kernel/early_printk.c
35541 +--- linux-3.0.8/arch/x86/kernel/early_printk.c 2011-07-21 22:17:23.000000000 -0400
35542 ++++ linux-3.0.8/arch/x86/kernel/early_printk.c 2011-08-23 21:48:14.000000000 -0400
35543 @@ -7,6 +7,7 @@
35544 #include <linux/pci_regs.h>
35545 #include <linux/pci_ids.h>
35546 @@ -13318,7 +11494,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/early_printk.c linux-2.6.32.48/arch/x
35547 #include <asm/io.h>
35548 #include <asm/processor.h>
35549 #include <asm/fcntl.h>
35550 -@@ -170,6 +171,8 @@ asmlinkage void early_printk(const char
35551 +@@ -179,6 +180,8 @@ asmlinkage void early_printk(const char
35552 int n;
35553 va_list ap;
35554
35555 @@ -13327,286 +11503,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/early_printk.c linux-2.6.32.48/arch/x
35556 va_start(ap, fmt);
35557 n = vscnprintf(buf, sizeof(buf), fmt, ap);
35558 early_console->write(early_console, buf, n);
35559 -diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_32.c linux-2.6.32.48/arch/x86/kernel/efi_32.c
35560 ---- linux-2.6.32.48/arch/x86/kernel/efi_32.c 2009-12-02 22:51:21.000000000 -0500
35561 -+++ linux-2.6.32.48/arch/x86/kernel/efi_32.c 2011-11-12 12:46:42.000000000 -0500
35562 -@@ -38,70 +38,56 @@
35563 - */
35564 -
35565 - static unsigned long efi_rt_eflags;
35566 --static pgd_t efi_bak_pg_dir_pointer[2];
35567 -+static pgd_t __initdata efi_bak_pg_dir_pointer[KERNEL_PGD_PTRS];
35568 -
35569 --void efi_call_phys_prelog(void)
35570 -+void __init efi_call_phys_prelog(void)
35571 - {
35572 -- unsigned long cr4;
35573 -- unsigned long temp;
35574 - struct desc_ptr gdt_descr;
35575 -
35576 -- local_irq_save(efi_rt_eflags);
35577 -+#ifdef CONFIG_PAX_KERNEXEC
35578 -+ struct desc_struct d;
35579 -+#endif
35580 -
35581 -- /*
35582 -- * If I don't have PAE, I should just duplicate two entries in page
35583 -- * directory. If I have PAE, I just need to duplicate one entry in
35584 -- * page directory.
35585 -- */
35586 -- cr4 = read_cr4_safe();
35587 -+ local_irq_save(efi_rt_eflags);
35588 -
35589 -- if (cr4 & X86_CR4_PAE) {
35590 -- efi_bak_pg_dir_pointer[0].pgd =
35591 -- swapper_pg_dir[pgd_index(0)].pgd;
35592 -- swapper_pg_dir[0].pgd =
35593 -- swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
35594 -- } else {
35595 -- efi_bak_pg_dir_pointer[0].pgd =
35596 -- swapper_pg_dir[pgd_index(0)].pgd;
35597 -- efi_bak_pg_dir_pointer[1].pgd =
35598 -- swapper_pg_dir[pgd_index(0x400000)].pgd;
35599 -- swapper_pg_dir[pgd_index(0)].pgd =
35600 -- swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
35601 -- temp = PAGE_OFFSET + 0x400000;
35602 -- swapper_pg_dir[pgd_index(0x400000)].pgd =
35603 -- swapper_pg_dir[pgd_index(temp)].pgd;
35604 -- }
35605 -+ clone_pgd_range(efi_bak_pg_dir_pointer, swapper_pg_dir, KERNEL_PGD_PTRS);
35606 -+ clone_pgd_range(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY,
35607 -+ min_t(unsigned long, KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY));
35608 -
35609 - /*
35610 - * After the lock is released, the original page table is restored.
35611 - */
35612 - __flush_tlb_all();
35613 -
35614 -+#ifdef CONFIG_PAX_KERNEXEC
35615 -+ pack_descriptor(&d, 0, 0xFFFFF, 0x9B, 0xC);
35616 -+ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_CS, &d, DESCTYPE_S);
35617 -+ pack_descriptor(&d, 0, 0xFFFFF, 0x93, 0xC);
35618 -+ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_DS, &d, DESCTYPE_S);
35619 -+#endif
35620 -+
35621 - gdt_descr.address = __pa(get_cpu_gdt_table(0));
35622 - gdt_descr.size = GDT_SIZE - 1;
35623 - load_gdt(&gdt_descr);
35624 - }
35625 -
35626 --void efi_call_phys_epilog(void)
35627 -+void __init efi_call_phys_epilog(void)
35628 - {
35629 -- unsigned long cr4;
35630 - struct desc_ptr gdt_descr;
35631 -
35632 -+#ifdef CONFIG_PAX_KERNEXEC
35633 -+ struct desc_struct d;
35634 -+
35635 -+ memset(&d, 0, sizeof d);
35636 -+ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_CS, &d, DESCTYPE_S);
35637 -+ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_DS, &d, DESCTYPE_S);
35638 -+#endif
35639 -+
35640 - gdt_descr.address = (unsigned long)get_cpu_gdt_table(0);
35641 - gdt_descr.size = GDT_SIZE - 1;
35642 - load_gdt(&gdt_descr);
35643 -
35644 -- cr4 = read_cr4_safe();
35645 --
35646 -- if (cr4 & X86_CR4_PAE) {
35647 -- swapper_pg_dir[pgd_index(0)].pgd =
35648 -- efi_bak_pg_dir_pointer[0].pgd;
35649 -- } else {
35650 -- swapper_pg_dir[pgd_index(0)].pgd =
35651 -- efi_bak_pg_dir_pointer[0].pgd;
35652 -- swapper_pg_dir[pgd_index(0x400000)].pgd =
35653 -- efi_bak_pg_dir_pointer[1].pgd;
35654 -- }
35655 -+ clone_pgd_range(swapper_pg_dir, efi_bak_pg_dir_pointer, KERNEL_PGD_PTRS);
35656 -
35657 - /*
35658 - * After the lock is released, the original page table is restored.
35659 -diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S
35660 ---- linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S 2009-12-02 22:51:21.000000000 -0500
35661 -+++ linux-2.6.32.48/arch/x86/kernel/efi_stub_32.S 2011-11-12 12:46:42.000000000 -0500
35662 -@@ -6,7 +6,9 @@
35663 - */
35664 -
35665 - #include <linux/linkage.h>
35666 -+#include <linux/init.h>
35667 - #include <asm/page_types.h>
35668 -+#include <asm/segment.h>
35669 -
35670 - /*
35671 - * efi_call_phys(void *, ...) is a function with variable parameters.
35672 -@@ -20,7 +22,7 @@
35673 - * service functions will comply with gcc calling convention, too.
35674 - */
35675 -
35676 --.text
35677 -+__INIT
35678 - ENTRY(efi_call_phys)
35679 - /*
35680 - * 0. The function can only be called in Linux kernel. So CS has been
35681 -@@ -36,9 +38,11 @@ ENTRY(efi_call_phys)
35682 - * The mapping of lower virtual memory has been created in prelog and
35683 - * epilog.
35684 - */
35685 -- movl $1f, %edx
35686 -- subl $__PAGE_OFFSET, %edx
35687 -- jmp *%edx
35688 -+ movl $(__KERNEXEC_EFI_DS), %edx
35689 -+ mov %edx, %ds
35690 -+ mov %edx, %es
35691 -+ mov %edx, %ss
35692 -+ ljmp $(__KERNEXEC_EFI_CS),$1f-__PAGE_OFFSET
35693 - 1:
35694 -
35695 - /*
35696 -@@ -47,14 +51,8 @@ ENTRY(efi_call_phys)
35697 - * parameter 2, ..., param n. To make things easy, we save the return
35698 - * address of efi_call_phys in a global variable.
35699 - */
35700 -- popl %edx
35701 -- movl %edx, saved_return_addr
35702 -- /* get the function pointer into ECX*/
35703 -- popl %ecx
35704 -- movl %ecx, efi_rt_function_ptr
35705 -- movl $2f, %edx
35706 -- subl $__PAGE_OFFSET, %edx
35707 -- pushl %edx
35708 -+ popl (saved_return_addr)
35709 -+ popl (efi_rt_function_ptr)
35710 -
35711 - /*
35712 - * 3. Clear PG bit in %CR0.
35713 -@@ -73,9 +71,8 @@ ENTRY(efi_call_phys)
35714 - /*
35715 - * 5. Call the physical function.
35716 - */
35717 -- jmp *%ecx
35718 -+ call *(efi_rt_function_ptr-__PAGE_OFFSET)
35719 -
35720 --2:
35721 - /*
35722 - * 6. After EFI runtime service returns, control will return to
35723 - * following instruction. We'd better readjust stack pointer first.
35724 -@@ -88,35 +85,32 @@ ENTRY(efi_call_phys)
35725 - movl %cr0, %edx
35726 - orl $0x80000000, %edx
35727 - movl %edx, %cr0
35728 -- jmp 1f
35729 --1:
35730 -+
35731 - /*
35732 - * 8. Now restore the virtual mode from flat mode by
35733 - * adding EIP with PAGE_OFFSET.
35734 - */
35735 -- movl $1f, %edx
35736 -- jmp *%edx
35737 -+ ljmp $(__KERNEL_CS),$1f+__PAGE_OFFSET
35738 - 1:
35739 -+ movl $(__KERNEL_DS), %edx
35740 -+ mov %edx, %ds
35741 -+ mov %edx, %es
35742 -+ mov %edx, %ss
35743 -
35744 - /*
35745 - * 9. Balance the stack. And because EAX contain the return value,
35746 - * we'd better not clobber it.
35747 - */
35748 -- leal efi_rt_function_ptr, %edx
35749 -- movl (%edx), %ecx
35750 -- pushl %ecx
35751 -+ pushl (efi_rt_function_ptr)
35752 -
35753 - /*
35754 -- * 10. Push the saved return address onto the stack and return.
35755 -+ * 10. Return to the saved return address.
35756 - */
35757 -- leal saved_return_addr, %edx
35758 -- movl (%edx), %ecx
35759 -- pushl %ecx
35760 -- ret
35761 -+ jmpl *(saved_return_addr)
35762 - ENDPROC(efi_call_phys)
35763 - .previous
35764 -
35765 --.data
35766 -+__INITDATA
35767 - saved_return_addr:
35768 - .long 0
35769 - efi_rt_function_ptr:
35770 -diff -urNp linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S
35771 ---- linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S 2009-12-02 22:51:21.000000000 -0500
35772 -+++ linux-2.6.32.48/arch/x86/kernel/efi_stub_64.S 2011-11-12 12:46:42.000000000 -0500
35773 -@@ -7,6 +7,7 @@
35774 - */
35775 -
35776 - #include <linux/linkage.h>
35777 -+#include <asm/alternative-asm.h>
35778 -
35779 - #define SAVE_XMM \
35780 - mov %rsp, %rax; \
35781 -@@ -40,6 +41,7 @@ ENTRY(efi_call0)
35782 - call *%rdi
35783 - addq $32, %rsp
35784 - RESTORE_XMM
35785 -+ pax_force_retaddr
35786 - ret
35787 - ENDPROC(efi_call0)
35788 -
35789 -@@ -50,6 +52,7 @@ ENTRY(efi_call1)
35790 - call *%rdi
35791 - addq $32, %rsp
35792 - RESTORE_XMM
35793 -+ pax_force_retaddr
35794 - ret
35795 - ENDPROC(efi_call1)
35796 -
35797 -@@ -60,6 +63,7 @@ ENTRY(efi_call2)
35798 - call *%rdi
35799 - addq $32, %rsp
35800 - RESTORE_XMM
35801 -+ pax_force_retaddr
35802 - ret
35803 - ENDPROC(efi_call2)
35804 -
35805 -@@ -71,6 +75,7 @@ ENTRY(efi_call3)
35806 - call *%rdi
35807 - addq $32, %rsp
35808 - RESTORE_XMM
35809 -+ pax_force_retaddr
35810 - ret
35811 - ENDPROC(efi_call3)
35812 -
35813 -@@ -83,6 +88,7 @@ ENTRY(efi_call4)
35814 - call *%rdi
35815 - addq $32, %rsp
35816 - RESTORE_XMM
35817 -+ pax_force_retaddr
35818 - ret
35819 - ENDPROC(efi_call4)
35820 -
35821 -@@ -96,6 +102,7 @@ ENTRY(efi_call5)
35822 - call *%rdi
35823 - addq $48, %rsp
35824 - RESTORE_XMM
35825 -+ pax_force_retaddr
35826 - ret
35827 - ENDPROC(efi_call5)
35828 -
35829 -@@ -112,5 +119,6 @@ ENTRY(efi_call6)
35830 - call *%rdi
35831 - addq $48, %rsp
35832 - RESTORE_XMM
35833 -+ pax_force_retaddr
35834 - ret
35835 - ENDPROC(efi_call6)
35836 -diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/kernel/entry_32.S
35837 ---- linux-2.6.32.48/arch/x86/kernel/entry_32.S 2009-12-02 22:51:21.000000000 -0500
35838 -+++ linux-2.6.32.48/arch/x86/kernel/entry_32.S 2011-11-12 12:46:42.000000000 -0500
35839 +diff -urNp linux-3.0.8/arch/x86/kernel/entry_32.S linux-3.0.8/arch/x86/kernel/entry_32.S
35840 +--- linux-3.0.8/arch/x86/kernel/entry_32.S 2011-07-21 22:17:23.000000000 -0400
35841 ++++ linux-3.0.8/arch/x86/kernel/entry_32.S 2011-10-20 04:46:01.000000000 -0400
35842 @@ -185,13 +185,146 @@
35843 /*CFI_REL_OFFSET gs, PT_GS*/
35844 .endm
35845 @@ -13754,17 +11653,17 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35846 +.macro __SAVE_ALL _DS
35847 cld
35848 PUSH_GS
35849 - pushl %fs
35850 -@@ -224,7 +357,7 @@
35851 - pushl %ebx
35852 - CFI_ADJUST_CFA_OFFSET 4
35853 + pushl_cfi %fs
35854 +@@ -214,7 +347,7 @@
35855 + CFI_REL_OFFSET ecx, 0
35856 + pushl_cfi %ebx
35857 CFI_REL_OFFSET ebx, 0
35858 - movl $(__USER_DS), %edx
35859 + movl $\_DS, %edx
35860 movl %edx, %ds
35861 movl %edx, %es
35862 movl $(__KERNEL_PERCPU), %edx
35863 -@@ -232,6 +365,15 @@
35864 +@@ -222,6 +355,15 @@
35865 SET_KERNEL_GS %edx
35866 .endm
35867
35868 @@ -13778,9 +11677,18 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35869 +.endm
35870 +
35871 .macro RESTORE_INT_REGS
35872 - popl %ebx
35873 - CFI_ADJUST_CFA_OFFSET -4
35874 -@@ -352,7 +494,15 @@ check_userspace:
35875 + popl_cfi %ebx
35876 + CFI_RESTORE ebx
35877 +@@ -307,7 +449,7 @@ ENTRY(ret_from_fork)
35878 + popfl_cfi
35879 + jmp syscall_exit
35880 + CFI_ENDPROC
35881 +-END(ret_from_fork)
35882 ++ENDPROC(ret_from_fork)
35883 +
35884 + /*
35885 + * Interrupt exit functions should be protected against kprobes
35886 +@@ -332,7 +474,15 @@ check_userspace:
35887 movb PT_CS(%esp), %al
35888 andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %eax
35889 cmpl $USER_RPL, %eax
35890 @@ -13796,29 +11704,38 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35891
35892 ENTRY(resume_userspace)
35893 LOCKDEP_SYS_EXIT
35894 -@@ -364,7 +514,7 @@ ENTRY(resume_userspace)
35895 +@@ -344,8 +494,8 @@ ENTRY(resume_userspace)
35896 andl $_TIF_WORK_MASK, %ecx # is there any work to be done on
35897 # int/exception return?
35898 jne work_pending
35899 - jmp restore_all
35900 +-END(ret_from_exception)
35901 + jmp restore_all_pax
35902 - END(ret_from_exception)
35903 ++ENDPROC(ret_from_exception)
35904
35905 #ifdef CONFIG_PREEMPT
35906 -@@ -414,25 +564,36 @@ sysenter_past_esp:
35907 + ENTRY(resume_kernel)
35908 +@@ -360,7 +510,7 @@ need_resched:
35909 + jz restore_all
35910 + call preempt_schedule_irq
35911 + jmp need_resched
35912 +-END(resume_kernel)
35913 ++ENDPROC(resume_kernel)
35914 + #endif
35915 + CFI_ENDPROC
35916 + /*
35917 +@@ -394,23 +544,34 @@ sysenter_past_esp:
35918 /*CFI_REL_OFFSET cs, 0*/
35919 /*
35920 * Push current_thread_info()->sysenter_return to the stack.
35921 - * A tiny bit of offset fixup is necessary - 4*4 means the 4 words
35922 - * pushed above; +8 corresponds to copy_thread's esp0 setting.
35923 */
35924 -- pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp)
35925 -+ pushl $0
35926 - CFI_ADJUST_CFA_OFFSET 4
35927 +- pushl_cfi ((TI_sysenter_return)-THREAD_SIZE+8+4*4)(%esp)
35928 ++ pushl_cfi $0
35929 CFI_REL_OFFSET eip, 0
35930
35931 - pushl %eax
35932 - CFI_ADJUST_CFA_OFFSET 4
35933 + pushl_cfi %eax
35934 SAVE_ALL
35935 + GET_THREAD_INFO(%ebp)
35936 + movl TI_sysenter_return(%ebp),%ebp
35937 @@ -13845,7 +11762,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35938 movl %ebp,PT_EBP(%esp)
35939 .section __ex_table,"a"
35940 .align 4
35941 -@@ -455,12 +616,24 @@ sysenter_do_call:
35942 +@@ -433,12 +594,24 @@ sysenter_do_call:
35943 testl $_TIF_ALLWORK_MASK, %ecx
35944 jne sysexit_audit
35945 sysenter_exit:
35946 @@ -13870,17 +11787,17 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35947 PTGS_TO_GS
35948 ENABLE_INTERRUPTS_SYSEXIT
35949
35950 -@@ -477,6 +650,9 @@ sysenter_audit:
35951 +@@ -455,6 +628,9 @@ sysenter_audit:
35952 movl %eax,%edx /* 2nd arg: syscall number */
35953 movl $AUDIT_ARCH_I386,%eax /* 1st arg: audit arch */
35954 call audit_syscall_entry
35955 +
35956 + pax_erase_kstack
35957 +
35958 - pushl %ebx
35959 - CFI_ADJUST_CFA_OFFSET 4
35960 + pushl_cfi %ebx
35961 movl PT_EAX(%esp),%eax /* reload syscall number */
35962 -@@ -504,11 +680,17 @@ sysexit_audit:
35963 + jmp sysenter_do_call
35964 +@@ -481,11 +657,17 @@ sysexit_audit:
35965
35966 CFI_ENDPROC
35967 .pushsection .fixup,"ax"
35968 @@ -13900,7 +11817,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35969 .popsection
35970 PTGS_TO_GS_EX
35971 ENDPROC(ia32_sysenter_target)
35972 -@@ -538,6 +720,15 @@ syscall_exit:
35973 +@@ -518,6 +700,15 @@ syscall_exit:
35974 testl $_TIF_ALLWORK_MASK, %ecx # current->work
35975 jne syscall_exit_work
35976
35977 @@ -13916,11 +11833,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35978 restore_all:
35979 TRACE_IRQS_IRET
35980 restore_all_notrace:
35981 -@@ -602,10 +793,29 @@ ldt_ss:
35982 +@@ -577,14 +768,34 @@ ldt_ss:
35983 + * compensating for the offset by changing to the ESPFIX segment with
35984 + * a base address that matches for the difference.
35985 + */
35986 +-#define GDT_ESPFIX_SS PER_CPU_VAR(gdt_page) + (GDT_ENTRY_ESPFIX_SS * 8)
35987 ++#define GDT_ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)(%ebx)
35988 + mov %esp, %edx /* load kernel esp */
35989 mov PT_OLDESP(%esp), %eax /* load userspace esp */
35990 mov %dx, %ax /* eax: new kernel esp */
35991 sub %eax, %edx /* offset (low word is 0) */
35992 -- PER_CPU(gdt_page, %ebx)
35993 +#ifdef CONFIG_SMP
35994 + movl PER_CPU_VAR(cpu_number), %ebx
35995 + shll $PAGE_SHIFT_asm, %ebx
35996 @@ -13929,6 +11851,8 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
35997 + movl $cpu_gdt_table, %ebx
35998 +#endif
35999 shr $16, %edx
36000 +- mov %dl, GDT_ESPFIX_SS + 4 /* bits 16..23 */
36001 +- mov %dh, GDT_ESPFIX_SS + 7 /* bits 24..31 */
36002 +
36003 +#ifdef CONFIG_PAX_KERNEXEC
36004 + mov %cr0, %esi
36005 @@ -13936,18 +11860,18 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36006 + mov %esi, %cr0
36007 +#endif
36008 +
36009 - mov %dl, GDT_ENTRY_ESPFIX_SS * 8 + 4(%ebx) /* bits 16..23 */
36010 - mov %dh, GDT_ENTRY_ESPFIX_SS * 8 + 7(%ebx) /* bits 24..31 */
36011 ++ mov %dl, 4 + GDT_ESPFIX_SS /* bits 16..23 */
36012 ++ mov %dh, 7 + GDT_ESPFIX_SS /* bits 24..31 */
36013 +
36014 +#ifdef CONFIG_PAX_KERNEXEC
36015 + bts $16, %esi
36016 + mov %esi, %cr0
36017 +#endif
36018 +
36019 - pushl $__ESPFIX_SS
36020 - CFI_ADJUST_CFA_OFFSET 4
36021 - push %eax /* new kernel esp */
36022 -@@ -636,31 +846,25 @@ work_resched:
36023 + pushl_cfi $__ESPFIX_SS
36024 + pushl_cfi %eax /* new kernel esp */
36025 + /* Disable interrupts, but do not irqtrace this section: we
36026 +@@ -613,34 +824,28 @@ work_resched:
36027 movl TI_flags(%ebp), %ecx
36028 andl $_TIF_WORK_MASK, %ecx # is there any work to be done other
36029 # than syscall tracing?
36030 @@ -13971,11 +11895,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36031
36032 - ALIGN
36033 -work_notifysig_v86:
36034 - pushl %ecx # save ti_flags for do_notify_resume
36035 - CFI_ADJUST_CFA_OFFSET 4
36036 + pushl_cfi %ecx # save ti_flags for do_notify_resume
36037 call save_v86_state # %eax contains pt_regs pointer
36038 - popl %ecx
36039 - CFI_ADJUST_CFA_OFFSET -4
36040 + popl_cfi %ecx
36041 movl %eax, %esp
36042 -#else
36043 - movl %esp, %eax
36044 @@ -13983,7 +11905,13 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36045 #endif
36046 xorl %edx, %edx
36047 call do_notify_resume
36048 -@@ -673,6 +877,9 @@ syscall_trace_entry:
36049 + jmp resume_userspace_sig
36050 +-END(work_pending)
36051 ++ENDPROC(work_pending)
36052 +
36053 + # perform syscall exit tracing
36054 + ALIGN
36055 +@@ -648,11 +853,14 @@ syscall_trace_entry:
36056 movl $-ENOSYS,PT_EAX(%esp)
36057 movl %esp, %eax
36058 call syscall_trace_enter
36059 @@ -13993,7 +11921,19 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36060 /* What it returned is what we'll actually use. */
36061 cmpl $(nr_syscalls), %eax
36062 jnae syscall_call
36063 -@@ -695,6 +902,10 @@ END(syscall_exit_work)
36064 + jmp syscall_exit
36065 +-END(syscall_trace_entry)
36066 ++ENDPROC(syscall_trace_entry)
36067 +
36068 + # perform syscall exit tracing
36069 + ALIGN
36070 +@@ -665,20 +873,24 @@ syscall_exit_work:
36071 + movl %esp, %eax
36072 + call syscall_trace_leave
36073 + jmp resume_userspace
36074 +-END(syscall_exit_work)
36075 ++ENDPROC(syscall_exit_work)
36076 + CFI_ENDPROC
36077
36078 RING0_INT_FRAME # can't unwind into user space anyway
36079 syscall_fault:
36080 @@ -14004,45 +11944,60 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36081 GET_THREAD_INFO(%ebp)
36082 movl $-EFAULT,PT_EAX(%esp)
36083 jmp resume_userspace
36084 -@@ -726,6 +937,33 @@ PTREGSCALL(rt_sigreturn)
36085 - PTREGSCALL(vm86)
36086 - PTREGSCALL(vm86old)
36087 +-END(syscall_fault)
36088 ++ENDPROC(syscall_fault)
36089 +
36090 + syscall_badsys:
36091 + movl $-ENOSYS,PT_EAX(%esp)
36092 + jmp resume_userspace
36093 +-END(syscall_badsys)
36094 ++ENDPROC(syscall_badsys)
36095 + CFI_ENDPROC
36096 + /*
36097 + * End of kprobes section
36098 +@@ -752,6 +964,36 @@ ptregs_clone:
36099 + CFI_ENDPROC
36100 + ENDPROC(ptregs_clone)
36101
36102 + ALIGN;
36103 +ENTRY(kernel_execve)
36104 -+ push %ebp
36105 ++ CFI_STARTPROC
36106 ++ pushl_cfi %ebp
36107 + sub $PT_OLDSS+4,%esp
36108 -+ push %edi
36109 -+ push %ecx
36110 -+ push %eax
36111 ++ pushl_cfi %edi
36112 ++ pushl_cfi %ecx
36113 ++ pushl_cfi %eax
36114 + lea 3*4(%esp),%edi
36115 + mov $PT_OLDSS/4+1,%ecx
36116 + xorl %eax,%eax
36117 + rep stosl
36118 -+ pop %eax
36119 -+ pop %ecx
36120 -+ pop %edi
36121 ++ popl_cfi %eax
36122 ++ popl_cfi %ecx
36123 ++ popl_cfi %edi
36124 + movl $X86_EFLAGS_IF,PT_EFLAGS(%esp)
36125 -+ mov %eax,PT_EBX(%esp)
36126 -+ mov %edx,PT_ECX(%esp)
36127 -+ mov %ecx,PT_EDX(%esp)
36128 -+ mov %esp,%eax
36129 ++ pushl_cfi %esp
36130 + call sys_execve
36131 ++ add $4,%esp
36132 ++ CFI_ADJUST_CFA_OFFSET -4
36133 + GET_THREAD_INFO(%ebp)
36134 + test %eax,%eax
36135 + jz syscall_exit
36136 + add $PT_OLDSS+4,%esp
36137 -+ pop %ebp
36138 ++ CFI_ADJUST_CFA_OFFSET -PT_OLDSS-4
36139 ++ popl_cfi %ebp
36140 + ret
36141 ++ CFI_ENDPROC
36142 ++ENDPROC(kernel_execve)
36143 +
36144 .macro FIXUP_ESPFIX_STACK
36145 /*
36146 * Switch back for ESPFIX stack to the normal zerobased stack
36147 -@@ -735,7 +973,13 @@ PTREGSCALL(vm86old)
36148 +@@ -761,8 +1003,15 @@ ENDPROC(ptregs_clone)
36149 * normal stack and adjusts ESP with the matching offset.
36150 */
36151 /* fixup the stack */
36152 -- PER_CPU(gdt_page, %ebx)
36153 +- mov GDT_ESPFIX_SS + 4, %al /* bits 16..23 */
36154 +- mov GDT_ESPFIX_SS + 7, %ah /* bits 24..31 */
36155 +#ifdef CONFIG_SMP
36156 + movl PER_CPU_VAR(cpu_number), %ebx
36157 + shll $PAGE_SHIFT_asm, %ebx
36158 @@ -14050,18 +12005,202 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36159 +#else
36160 + movl $cpu_gdt_table, %ebx
36161 +#endif
36162 - mov GDT_ENTRY_ESPFIX_SS * 8 + 4(%ebx), %al /* bits 16..23 */
36163 - mov GDT_ENTRY_ESPFIX_SS * 8 + 7(%ebx), %ah /* bits 24..31 */
36164 ++ mov 4 + GDT_ESPFIX_SS, %al /* bits 16..23 */
36165 ++ mov 7 + GDT_ESPFIX_SS, %ah /* bits 24..31 */
36166 shl $16, %eax
36167 -@@ -1198,7 +1442,6 @@ return_to_handler:
36168 + addl %esp, %eax /* the adjusted stack pointer */
36169 + pushl_cfi $__KERNEL_DS
36170 +@@ -815,7 +1064,7 @@ vector=vector+1
36171 + .endr
36172 + 2: jmp common_interrupt
36173 + .endr
36174 +-END(irq_entries_start)
36175 ++ENDPROC(irq_entries_start)
36176 +
36177 + .previous
36178 + END(interrupt)
36179 +@@ -863,7 +1112,7 @@ ENTRY(coprocessor_error)
36180 + pushl_cfi $do_coprocessor_error
36181 + jmp error_code
36182 + CFI_ENDPROC
36183 +-END(coprocessor_error)
36184 ++ENDPROC(coprocessor_error)
36185 +
36186 + ENTRY(simd_coprocessor_error)
36187 + RING0_INT_FRAME
36188 +@@ -889,7 +1138,7 @@ ENTRY(simd_coprocessor_error)
36189 + #endif
36190 + jmp error_code
36191 + CFI_ENDPROC
36192 +-END(simd_coprocessor_error)
36193 ++ENDPROC(simd_coprocessor_error)
36194 +
36195 + ENTRY(device_not_available)
36196 + RING0_INT_FRAME
36197 +@@ -897,7 +1146,7 @@ ENTRY(device_not_available)
36198 + pushl_cfi $do_device_not_available
36199 + jmp error_code
36200 + CFI_ENDPROC
36201 +-END(device_not_available)
36202 ++ENDPROC(device_not_available)
36203 +
36204 + #ifdef CONFIG_PARAVIRT
36205 + ENTRY(native_iret)
36206 +@@ -906,12 +1155,12 @@ ENTRY(native_iret)
36207 + .align 4
36208 + .long native_iret, iret_exc
36209 + .previous
36210 +-END(native_iret)
36211 ++ENDPROC(native_iret)
36212 +
36213 + ENTRY(native_irq_enable_sysexit)
36214 + sti
36215 + sysexit
36216 +-END(native_irq_enable_sysexit)
36217 ++ENDPROC(native_irq_enable_sysexit)
36218 + #endif
36219 +
36220 + ENTRY(overflow)
36221 +@@ -920,7 +1169,7 @@ ENTRY(overflow)
36222 + pushl_cfi $do_overflow
36223 + jmp error_code
36224 + CFI_ENDPROC
36225 +-END(overflow)
36226 ++ENDPROC(overflow)
36227 +
36228 + ENTRY(bounds)
36229 + RING0_INT_FRAME
36230 +@@ -928,7 +1177,7 @@ ENTRY(bounds)
36231 + pushl_cfi $do_bounds
36232 + jmp error_code
36233 + CFI_ENDPROC
36234 +-END(bounds)
36235 ++ENDPROC(bounds)
36236 +
36237 + ENTRY(invalid_op)
36238 + RING0_INT_FRAME
36239 +@@ -936,7 +1185,7 @@ ENTRY(invalid_op)
36240 + pushl_cfi $do_invalid_op
36241 + jmp error_code
36242 + CFI_ENDPROC
36243 +-END(invalid_op)
36244 ++ENDPROC(invalid_op)
36245 +
36246 + ENTRY(coprocessor_segment_overrun)
36247 + RING0_INT_FRAME
36248 +@@ -944,35 +1193,35 @@ ENTRY(coprocessor_segment_overrun)
36249 + pushl_cfi $do_coprocessor_segment_overrun
36250 + jmp error_code
36251 + CFI_ENDPROC
36252 +-END(coprocessor_segment_overrun)
36253 ++ENDPROC(coprocessor_segment_overrun)
36254 +
36255 + ENTRY(invalid_TSS)
36256 + RING0_EC_FRAME
36257 + pushl_cfi $do_invalid_TSS
36258 + jmp error_code
36259 + CFI_ENDPROC
36260 +-END(invalid_TSS)
36261 ++ENDPROC(invalid_TSS)
36262 +
36263 + ENTRY(segment_not_present)
36264 + RING0_EC_FRAME
36265 + pushl_cfi $do_segment_not_present
36266 + jmp error_code
36267 + CFI_ENDPROC
36268 +-END(segment_not_present)
36269 ++ENDPROC(segment_not_present)
36270 +
36271 + ENTRY(stack_segment)
36272 + RING0_EC_FRAME
36273 + pushl_cfi $do_stack_segment
36274 + jmp error_code
36275 + CFI_ENDPROC
36276 +-END(stack_segment)
36277 ++ENDPROC(stack_segment)
36278 +
36279 + ENTRY(alignment_check)
36280 + RING0_EC_FRAME
36281 + pushl_cfi $do_alignment_check
36282 + jmp error_code
36283 + CFI_ENDPROC
36284 +-END(alignment_check)
36285 ++ENDPROC(alignment_check)
36286 +
36287 + ENTRY(divide_error)
36288 + RING0_INT_FRAME
36289 +@@ -980,7 +1229,7 @@ ENTRY(divide_error)
36290 + pushl_cfi $do_divide_error
36291 + jmp error_code
36292 + CFI_ENDPROC
36293 +-END(divide_error)
36294 ++ENDPROC(divide_error)
36295 +
36296 + #ifdef CONFIG_X86_MCE
36297 + ENTRY(machine_check)
36298 +@@ -989,7 +1238,7 @@ ENTRY(machine_check)
36299 + pushl_cfi machine_check_vector
36300 + jmp error_code
36301 + CFI_ENDPROC
36302 +-END(machine_check)
36303 ++ENDPROC(machine_check)
36304 + #endif
36305 +
36306 + ENTRY(spurious_interrupt_bug)
36307 +@@ -998,7 +1247,7 @@ ENTRY(spurious_interrupt_bug)
36308 + pushl_cfi $do_spurious_interrupt_bug
36309 + jmp error_code
36310 + CFI_ENDPROC
36311 +-END(spurious_interrupt_bug)
36312 ++ENDPROC(spurious_interrupt_bug)
36313 + /*
36314 + * End of kprobes section
36315 + */
36316 +@@ -1113,7 +1362,7 @@ BUILD_INTERRUPT3(xen_hvm_callback_vector
36317 +
36318 + ENTRY(mcount)
36319 ret
36320 +-END(mcount)
36321 ++ENDPROC(mcount)
36322 +
36323 + ENTRY(ftrace_caller)
36324 + cmpl $0, function_trace_stop
36325 +@@ -1142,7 +1391,7 @@ ftrace_graph_call:
36326 + .globl ftrace_stub
36327 + ftrace_stub:
36328 + ret
36329 +-END(ftrace_caller)
36330 ++ENDPROC(ftrace_caller)
36331 +
36332 + #else /* ! CONFIG_DYNAMIC_FTRACE */
36333 +
36334 +@@ -1178,7 +1427,7 @@ trace:
36335 + popl %ecx
36336 + popl %eax
36337 + jmp ftrace_stub
36338 +-END(mcount)
36339 ++ENDPROC(mcount)
36340 + #endif /* CONFIG_DYNAMIC_FTRACE */
36341 + #endif /* CONFIG_FUNCTION_TRACER */
36342 +
36343 +@@ -1199,7 +1448,7 @@ ENTRY(ftrace_graph_caller)
36344 + popl %ecx
36345 + popl %eax
36346 + ret
36347 +-END(ftrace_graph_caller)
36348 ++ENDPROC(ftrace_graph_caller)
36349 +
36350 + .globl return_to_handler
36351 + return_to_handler:
36352 +@@ -1213,7 +1462,6 @@ return_to_handler:
36353 + jmp *%ecx
36354 #endif
36355
36356 -.section .rodata,"a"
36357 #include "syscall_table_32.S"
36358
36359 syscall_table_size=(.-sys_call_table)
36360 -@@ -1255,9 +1498,12 @@ error_code:
36361 +@@ -1259,15 +1507,18 @@ error_code:
36362 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart
36363 REG_TO_PTGS %ecx
36364 SET_KERNEL_GS %ecx
36365 @@ -14075,7 +12214,23 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36366 TRACE_IRQS_OFF
36367 movl %esp,%eax # pt_regs pointer
36368 call *%edi
36369 -@@ -1351,6 +1597,9 @@ nmi_stack_correct:
36370 + jmp ret_from_exception
36371 + CFI_ENDPROC
36372 +-END(page_fault)
36373 ++ENDPROC(page_fault)
36374 +
36375 + /*
36376 + * Debug traps and NMI can happen at the one SYSENTER instruction
36377 +@@ -1309,7 +1560,7 @@ debug_stack_correct:
36378 + call do_debug
36379 + jmp ret_from_exception
36380 + CFI_ENDPROC
36381 +-END(debug)
36382 ++ENDPROC(debug)
36383 +
36384 + /*
36385 + * NMI is doubly nasty. It can happen _while_ we're handling
36386 +@@ -1346,6 +1597,9 @@ nmi_stack_correct:
36387 xorl %edx,%edx # zero error code
36388 movl %esp,%eax # pt_regs pointer
36389 call do_nmi
36390 @@ -14085,7 +12240,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36391 jmp restore_all_notrace
36392 CFI_ENDPROC
36393
36394 -@@ -1391,6 +1640,9 @@ nmi_espfix_stack:
36395 +@@ -1382,12 +1636,15 @@ nmi_espfix_stack:
36396 FIXUP_ESPFIX_STACK # %eax == %esp
36397 xorl %edx,%edx # zero error code
36398 call do_nmi
36399 @@ -14095,9 +12250,42 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_32.S linux-2.6.32.48/arch/x86/k
36400 RESTORE_REGS
36401 lss 12+4(%esp), %esp # back to espfix stack
36402 CFI_ADJUST_CFA_OFFSET -24
36403 -diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/kernel/entry_64.S
36404 ---- linux-2.6.32.48/arch/x86/kernel/entry_64.S 2011-11-12 12:44:28.000000000 -0500
36405 -+++ linux-2.6.32.48/arch/x86/kernel/entry_64.S 2011-11-12 12:46:42.000000000 -0500
36406 + jmp irq_return
36407 + CFI_ENDPROC
36408 +-END(nmi)
36409 ++ENDPROC(nmi)
36410 +
36411 + ENTRY(int3)
36412 + RING0_INT_FRAME
36413 +@@ -1399,14 +1656,14 @@ ENTRY(int3)
36414 + call do_int3
36415 + jmp ret_from_exception
36416 + CFI_ENDPROC
36417 +-END(int3)
36418 ++ENDPROC(int3)
36419 +
36420 + ENTRY(general_protection)
36421 + RING0_EC_FRAME
36422 + pushl_cfi $do_general_protection
36423 + jmp error_code
36424 + CFI_ENDPROC
36425 +-END(general_protection)
36426 ++ENDPROC(general_protection)
36427 +
36428 + #ifdef CONFIG_KVM_GUEST
36429 + ENTRY(async_page_fault)
36430 +@@ -1414,7 +1671,7 @@ ENTRY(async_page_fault)
36431 + pushl_cfi $do_async_page_fault
36432 + jmp error_code
36433 + CFI_ENDPROC
36434 +-END(async_page_fault)
36435 ++ENDPROC(async_page_fault)
36436 + #endif
36437 +
36438 + /*
36439 +diff -urNp linux-3.0.8/arch/x86/kernel/entry_64.S linux-3.0.8/arch/x86/kernel/entry_64.S
36440 +--- linux-3.0.8/arch/x86/kernel/entry_64.S 2011-07-21 22:17:23.000000000 -0400
36441 ++++ linux-3.0.8/arch/x86/kernel/entry_64.S 2011-10-20 04:46:01.000000000 -0400
36442 @@ -53,6 +53,8 @@
36443 #include <asm/paravirt.h>
36444 #include <asm/ftrace.h>
36445 @@ -14107,23 +12295,29 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36446
36447 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
36448 #include <linux/elf-em.h>
36449 -@@ -64,6 +66,7 @@
36450 +@@ -66,8 +68,9 @@
36451 #ifdef CONFIG_FUNCTION_TRACER
36452 #ifdef CONFIG_DYNAMIC_FTRACE
36453 ENTRY(mcount)
36454 + pax_force_retaddr
36455 retq
36456 - END(mcount)
36457 +-END(mcount)
36458 ++ENDPROC(mcount)
36459
36460 -@@ -88,6 +91,7 @@ GLOBAL(ftrace_graph_call)
36461 + ENTRY(ftrace_caller)
36462 + cmpl $0, function_trace_stop
36463 +@@ -90,8 +93,9 @@ GLOBAL(ftrace_graph_call)
36464 #endif
36465
36466 GLOBAL(ftrace_stub)
36467 + pax_force_retaddr
36468 retq
36469 - END(ftrace_caller)
36470 +-END(ftrace_caller)
36471 ++ENDPROC(ftrace_caller)
36472
36473 -@@ -108,6 +112,7 @@ ENTRY(mcount)
36474 + #else /* ! CONFIG_DYNAMIC_FTRACE */
36475 + ENTRY(mcount)
36476 +@@ -110,6 +114,7 @@ ENTRY(mcount)
36477 #endif
36478
36479 GLOBAL(ftrace_stub)
36480 @@ -14131,7 +12325,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36481 retq
36482
36483 trace:
36484 -@@ -117,6 +122,7 @@ trace:
36485 +@@ -119,12 +124,13 @@ trace:
36486 movq 8(%rbp), %rsi
36487 subq $MCOUNT_INSN_SIZE, %rdi
36488
36489 @@ -14139,23 +12333,33 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36490 call *ftrace_trace_function
36491
36492 MCOUNT_RESTORE_FRAME
36493 -@@ -142,6 +148,7 @@ ENTRY(ftrace_graph_caller)
36494 +
36495 + jmp ftrace_stub
36496 +-END(mcount)
36497 ++ENDPROC(mcount)
36498 + #endif /* CONFIG_DYNAMIC_FTRACE */
36499 + #endif /* CONFIG_FUNCTION_TRACER */
36500 +
36501 +@@ -144,8 +150,9 @@ ENTRY(ftrace_graph_caller)
36502
36503 MCOUNT_RESTORE_FRAME
36504
36505 + pax_force_retaddr
36506 retq
36507 - END(ftrace_graph_caller)
36508 +-END(ftrace_graph_caller)
36509 ++ENDPROC(ftrace_graph_caller)
36510
36511 -@@ -159,6 +166,7 @@ GLOBAL(return_to_handler)
36512 + GLOBAL(return_to_handler)
36513 + subq $24, %rsp
36514 +@@ -161,6 +168,7 @@ GLOBAL(return_to_handler)
36515 movq 8(%rsp), %rdx
36516 movq (%rsp), %rax
36517 - addq $16, %rsp
36518 -+ pax_force_retaddr
36519 - retq
36520 + addq $24, %rsp
36521 ++ pax_force_fptr %rdi
36522 + jmp *%rdi
36523 #endif
36524
36525 -@@ -174,6 +182,269 @@ ENTRY(native_usergs_sysret64)
36526 +@@ -176,6 +184,269 @@ ENTRY(native_usergs_sysret64)
36527 ENDPROC(native_usergs_sysret64)
36528 #endif /* CONFIG_PARAVIRT */
36529
36530 @@ -14364,11 +12568,11 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36531 +ENDPROC(pax_exit_kernel_user)
36532 +#endif
36533 +
36534 -+.macro pax_erase_kstack
36535 ++ .macro pax_erase_kstack
36536 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
36537 + call pax_erase_kstack
36538 +#endif
36539 -+.endm
36540 ++ .endm
36541 +
36542 +#ifdef CONFIG_PAX_MEMORY_STACKLEAK
36543 +/*
36544 @@ -14425,8 +12629,8 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36545
36546 .macro TRACE_IRQS_IRETQ offset=ARGOFFSET
36547 #ifdef CONFIG_TRACE_IRQFLAGS
36548 -@@ -317,7 +588,7 @@ ENTRY(save_args)
36549 - leaq -ARGOFFSET+16(%rsp),%rdi /* arg1 for handler */
36550 +@@ -318,7 +589,7 @@ ENTRY(save_args)
36551 + leaq -RBP+8(%rsp),%rdi /* arg1 for handler */
36552 movq_cfi rbp, 8 /* push %rbp */
36553 leaq 8(%rsp), %rbp /* mov %rsp, %ebp */
36554 - testl $3, CS(%rdi)
36555 @@ -14434,23 +12638,31 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36556 je 1f
36557 SWAPGS
36558 /*
36559 -@@ -337,6 +608,7 @@ ENTRY(save_args)
36560 +@@ -338,9 +609,10 @@ ENTRY(save_args)
36561 * We entered an interrupt context - irqs are off:
36562 */
36563 2: TRACE_IRQS_OFF
36564 + pax_force_retaddr
36565 ret
36566 CFI_ENDPROC
36567 - END(save_args)
36568 -@@ -352,6 +624,7 @@ ENTRY(save_rest)
36569 +-END(save_args)
36570 ++ENDPROC(save_args)
36571 + .popsection
36572 +
36573 + ENTRY(save_rest)
36574 +@@ -354,9 +626,10 @@ ENTRY(save_rest)
36575 movq_cfi r15, R15+16
36576 movq %r11, 8(%rsp) /* return address */
36577 FIXUP_TOP_OF_STACK %r11, 16
36578 + pax_force_retaddr
36579 ret
36580 CFI_ENDPROC
36581 - END(save_rest)
36582 -@@ -383,7 +656,8 @@ ENTRY(save_paranoid)
36583 +-END(save_rest)
36584 ++ENDPROC(save_rest)
36585 +
36586 + /* save complete stack frame */
36587 + .pushsection .kprobes.text, "ax"
36588 +@@ -385,9 +658,10 @@ ENTRY(save_paranoid)
36589 js 1f /* negative -> in kernel */
36590 SWAPGS
36591 xorl %ebx,%ebx
36592 @@ -14458,8 +12670,11 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36593 +1: pax_force_retaddr
36594 + ret
36595 CFI_ENDPROC
36596 - END(save_paranoid)
36597 +-END(save_paranoid)
36598 ++ENDPROC(save_paranoid)
36599 .popsection
36600 +
36601 + /*
36602 @@ -409,7 +683,7 @@ ENTRY(ret_from_fork)
36603
36604 RESTORE_REST
36605 @@ -14469,6 +12684,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36606 je int_ret_from_sys_call
36607
36608 testl $_TIF_IA32, TI_flags(%rcx) # 32-bit compat task needs IRET
36609 +@@ -419,7 +693,7 @@ ENTRY(ret_from_fork)
36610 + jmp ret_from_sys_call # go to the SYSRET fastpath
36611 +
36612 + CFI_ENDPROC
36613 +-END(ret_from_fork)
36614 ++ENDPROC(ret_from_fork)
36615 +
36616 + /*
36617 + * System call entry. Up to 6 arguments in registers are supported.
36618 @@ -455,7 +729,7 @@ END(ret_from_fork)
36619 ENTRY(system_call)
36620 CFI_STARTPROC simple
36621 @@ -14502,7 +12726,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36622 /*
36623 * sysretq will re-enable interrupts:
36624 */
36625 -@@ -562,6 +839,9 @@ auditsys:
36626 +@@ -560,6 +837,9 @@ auditsys:
36627 movq %rax,%rsi /* 2nd arg: syscall number */
36628 movl $AUDIT_ARCH_X86_64,%edi /* 1st arg: audit arch */
36629 call audit_syscall_entry
36630 @@ -14512,7 +12736,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36631 LOAD_ARGS 0 /* reload call-clobbered registers */
36632 jmp system_call_fastpath
36633
36634 -@@ -592,6 +872,9 @@ tracesys:
36635 +@@ -590,6 +870,9 @@ tracesys:
36636 FIXUP_TOP_OF_STACK %rdi
36637 movq %rsp,%rdi
36638 call syscall_trace_enter
36639 @@ -14522,7 +12746,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36640 /*
36641 * Reload arg registers from stack in case ptrace changed them.
36642 * We don't reload %rax because syscall_trace_enter() returned
36643 -@@ -613,7 +896,7 @@ tracesys:
36644 +@@ -611,7 +894,7 @@ tracesys:
36645 GLOBAL(int_ret_from_sys_call)
36646 DISABLE_INTERRUPTS(CLBR_NONE)
36647 TRACE_IRQS_OFF
36648 @@ -14531,16 +12755,65 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36649 je retint_restore_args
36650 movl $_TIF_ALLWORK_MASK,%edi
36651 /* edi: mask to check */
36652 -@@ -708,6 +991,7 @@ ENTRY(ptregscall_common)
36653 +@@ -668,7 +951,7 @@ int_restore_rest:
36654 + TRACE_IRQS_OFF
36655 + jmp int_with_check
36656 + CFI_ENDPROC
36657 +-END(system_call)
36658 ++ENDPROC(system_call)
36659 +
36660 + /*
36661 + * Certain special system calls that need to save a complete full stack frame.
36662 +@@ -684,7 +967,7 @@ ENTRY(\label)
36663 + call \func
36664 + jmp ptregscall_common
36665 + CFI_ENDPROC
36666 +-END(\label)
36667 ++ENDPROC(\label)
36668 + .endm
36669 +
36670 + PTREGSCALL stub_clone, sys_clone, %r8
36671 +@@ -702,9 +985,10 @@ ENTRY(ptregscall_common)
36672 movq_cfi_restore R12+8, r12
36673 movq_cfi_restore RBP+8, rbp
36674 movq_cfi_restore RBX+8, rbx
36675 + pax_force_retaddr
36676 ret $REST_SKIP /* pop extended registers */
36677 CFI_ENDPROC
36678 - END(ptregscall_common)
36679 -@@ -800,6 +1084,16 @@ END(interrupt)
36680 - CFI_ADJUST_CFA_OFFSET 10*8
36681 +-END(ptregscall_common)
36682 ++ENDPROC(ptregscall_common)
36683 +
36684 + ENTRY(stub_execve)
36685 + CFI_STARTPROC
36686 +@@ -719,7 +1003,7 @@ ENTRY(stub_execve)
36687 + RESTORE_REST
36688 + jmp int_ret_from_sys_call
36689 + CFI_ENDPROC
36690 +-END(stub_execve)
36691 ++ENDPROC(stub_execve)
36692 +
36693 + /*
36694 + * sigreturn is special because it needs to restore all registers on return.
36695 +@@ -737,7 +1021,7 @@ ENTRY(stub_rt_sigreturn)
36696 + RESTORE_REST
36697 + jmp int_ret_from_sys_call
36698 + CFI_ENDPROC
36699 +-END(stub_rt_sigreturn)
36700 ++ENDPROC(stub_rt_sigreturn)
36701 +
36702 + /*
36703 + * Build the entry stubs and pointer table with some assembler magic.
36704 +@@ -772,7 +1056,7 @@ vector=vector+1
36705 + 2: jmp common_interrupt
36706 + .endr
36707 + CFI_ENDPROC
36708 +-END(irq_entries_start)
36709 ++ENDPROC(irq_entries_start)
36710 +
36711 + .previous
36712 + END(interrupt)
36713 +@@ -793,6 +1077,16 @@ END(interrupt)
36714 + CFI_ADJUST_CFA_OFFSET ORIG_RAX-RBP
36715 call save_args
36716 PARTIAL_FRAME 0
36717 +#ifdef CONFIG_PAX_MEMORY_UDEREF
36718 @@ -14556,7 +12829,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36719 call \func
36720 .endm
36721
36722 -@@ -822,7 +1116,7 @@ ret_from_intr:
36723 +@@ -825,7 +1119,7 @@ ret_from_intr:
36724 CFI_ADJUST_CFA_OFFSET -8
36725 exit_intr:
36726 GET_THREAD_INFO(%rcx)
36727 @@ -14565,7 +12838,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36728 je retint_kernel
36729
36730 /* Interrupt came from user space */
36731 -@@ -844,12 +1138,16 @@ retint_swapgs: /* return to user-space
36732 +@@ -847,12 +1141,16 @@ retint_swapgs: /* return to user-space
36733 * The iretq could re-enable interrupts:
36734 */
36735 DISABLE_INTERRUPTS(CLBR_ANY)
36736 @@ -14582,8 +12855,26 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36737 /*
36738 * The iretq could re-enable interrupts:
36739 */
36740 -@@ -1032,6 +1330,16 @@ ENTRY(\sym)
36741 - CFI_ADJUST_CFA_OFFSET 15*8
36742 +@@ -941,7 +1239,7 @@ ENTRY(retint_kernel)
36743 + #endif
36744 +
36745 + CFI_ENDPROC
36746 +-END(common_interrupt)
36747 ++ENDPROC(common_interrupt)
36748 + /*
36749 + * End of kprobes section
36750 + */
36751 +@@ -957,7 +1255,7 @@ ENTRY(\sym)
36752 + interrupt \do_sym
36753 + jmp ret_from_intr
36754 + CFI_ENDPROC
36755 +-END(\sym)
36756 ++ENDPROC(\sym)
36757 + .endm
36758 +
36759 + #ifdef CONFIG_SMP
36760 +@@ -1027,12 +1325,22 @@ ENTRY(\sym)
36761 + CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
36762 call error_entry
36763 DEFAULT_FRAME 0
36764 +#ifdef CONFIG_PAX_MEMORY_UDEREF
36765 @@ -14599,8 +12890,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36766 movq %rsp,%rdi /* pt_regs pointer */
36767 xorl %esi,%esi /* no error code */
36768 call \do_sym
36769 -@@ -1049,6 +1357,16 @@ ENTRY(\sym)
36770 - subq $15*8, %rsp
36771 + jmp error_exit /* %ebx: no swapgs flag */
36772 + CFI_ENDPROC
36773 +-END(\sym)
36774 ++ENDPROC(\sym)
36775 + .endm
36776 +
36777 + .macro paranoidzeroentry sym do_sym
36778 +@@ -1044,15 +1352,25 @@ ENTRY(\sym)
36779 + CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
36780 call save_paranoid
36781 TRACE_IRQS_OFF
36782 +#ifdef CONFIG_PAX_MEMORY_UDEREF
36783 @@ -14616,8 +12914,19 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36784 movq %rsp,%rdi /* pt_regs pointer */
36785 xorl %esi,%esi /* no error code */
36786 call \do_sym
36787 -@@ -1066,9 +1384,24 @@ ENTRY(\sym)
36788 - subq $15*8, %rsp
36789 + jmp paranoid_exit /* %ebx: no swapgs flag */
36790 + CFI_ENDPROC
36791 +-END(\sym)
36792 ++ENDPROC(\sym)
36793 + .endm
36794 +
36795 +-#define INIT_TSS_IST(x) PER_CPU_VAR(init_tss) + (TSS_ist + ((x) - 1) * 8)
36796 ++#define INIT_TSS_IST(x) (TSS_ist + ((x) - 1) * 8)(%r12)
36797 + .macro paranoidzeroentry_ist sym do_sym ist
36798 + ENTRY(\sym)
36799 + INTR_FRAME
36800 +@@ -1062,14 +1380,30 @@ ENTRY(\sym)
36801 + CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
36802 call save_paranoid
36803 TRACE_IRQS_OFF
36804 +#ifdef CONFIG_PAX_MEMORY_UDEREF
36805 @@ -14632,18 +12941,24 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36806 +#endif
36807 movq %rsp,%rdi /* pt_regs pointer */
36808 xorl %esi,%esi /* no error code */
36809 -- PER_CPU(init_tss, %rbp)
36810 +#ifdef CONFIG_SMP
36811 -+ imul $TSS_size, PER_CPU_VAR(cpu_number), %ebp
36812 -+ lea init_tss(%rbp), %rbp
36813 ++ imul $TSS_size, PER_CPU_VAR(cpu_number), %r12d
36814 ++ lea init_tss(%r12), %r12
36815 +#else
36816 -+ lea init_tss(%rip), %rbp
36817 ++ lea init_tss(%rip), %r12
36818 +#endif
36819 - subq $EXCEPTION_STKSZ, TSS_ist + (\ist - 1) * 8(%rbp)
36820 + subq $EXCEPTION_STKSZ, INIT_TSS_IST(\ist)
36821 call \do_sym
36822 - addq $EXCEPTION_STKSZ, TSS_ist + (\ist - 1) * 8(%rbp)
36823 -@@ -1085,6 +1418,16 @@ ENTRY(\sym)
36824 - CFI_ADJUST_CFA_OFFSET 15*8
36825 + addq $EXCEPTION_STKSZ, INIT_TSS_IST(\ist)
36826 + jmp paranoid_exit /* %ebx: no swapgs flag */
36827 + CFI_ENDPROC
36828 +-END(\sym)
36829 ++ENDPROC(\sym)
36830 + .endm
36831 +
36832 + .macro errorentry sym do_sym
36833 +@@ -1080,13 +1414,23 @@ ENTRY(\sym)
36834 + CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
36835 call error_entry
36836 DEFAULT_FRAME 0
36837 +#ifdef CONFIG_PAX_MEMORY_UDEREF
36838 @@ -14659,7 +12974,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36839 movq %rsp,%rdi /* pt_regs pointer */
36840 movq ORIG_RAX(%rsp),%rsi /* get error code */
36841 movq $-1,ORIG_RAX(%rsp) /* no syscall to restart */
36842 -@@ -1104,6 +1447,16 @@ ENTRY(\sym)
36843 + call \do_sym
36844 + jmp error_exit /* %ebx: no swapgs flag */
36845 + CFI_ENDPROC
36846 +-END(\sym)
36847 ++ENDPROC(\sym)
36848 + .endm
36849 +
36850 + /* error code is on the stack already */
36851 +@@ -1099,13 +1443,23 @@ ENTRY(\sym)
36852 call save_paranoid
36853 DEFAULT_FRAME 0
36854 TRACE_IRQS_OFF
36855 @@ -14676,47 +12999,85 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36856 movq %rsp,%rdi /* pt_regs pointer */
36857 movq ORIG_RAX(%rsp),%rsi /* get error code */
36858 movq $-1,ORIG_RAX(%rsp) /* no syscall to restart */
36859 -@@ -1141,6 +1494,7 @@ gs_change:
36860 - SWAPGS
36861 - popf
36862 - CFI_ADJUST_CFA_OFFSET -8
36863 -+ pax_force_retaddr
36864 - ret
36865 + call \do_sym
36866 + jmp paranoid_exit /* %ebx: no swapgs flag */
36867 CFI_ENDPROC
36868 - END(native_load_gs_index)
36869 -@@ -1195,6 +1549,7 @@ ENTRY(kernel_thread)
36870 - */
36871 - RESTORE_ALL
36872 - UNFAKE_STACK_FRAME
36873 +-END(\sym)
36874 ++ENDPROC(\sym)
36875 + .endm
36876 +
36877 + zeroentry divide_error do_divide_error
36878 +@@ -1134,9 +1488,10 @@ gs_change:
36879 + 2: mfence /* workaround */
36880 + SWAPGS
36881 + popfq_cfi
36882 + pax_force_retaddr
36883 ret
36884 CFI_ENDPROC
36885 - END(kernel_thread)
36886 -@@ -1208,6 +1563,7 @@ ENTRY(child_rip)
36887 +-END(native_load_gs_index)
36888 ++ENDPROC(native_load_gs_index)
36889 +
36890 + .section __ex_table,"a"
36891 + .align 8
36892 +@@ -1158,13 +1513,14 @@ ENTRY(kernel_thread_helper)
36893 + * Here we are in the child and the registers are set as they were
36894 + * at kernel_thread() invocation in the parent.
36895 */
36896 - movq %rdi, %rax
36897 - movq %rsi, %rdi
36898 -+ pax_force_fptr %rax
36899 - call *%rax
36900 ++ pax_force_fptr %rsi
36901 + call *%rsi
36902 # exit
36903 mov %eax, %edi
36904 -@@ -1243,6 +1599,7 @@ ENTRY(kernel_execve)
36905 + call do_exit
36906 + ud2 # padding for call trace
36907 + CFI_ENDPROC
36908 +-END(kernel_thread_helper)
36909 ++ENDPROC(kernel_thread_helper)
36910 +
36911 + /*
36912 + * execve(). This function needs to use IRET, not SYSRET, to set up all state properly.
36913 +@@ -1193,9 +1549,10 @@ ENTRY(kernel_execve)
36914 je int_ret_from_sys_call
36915 RESTORE_ARGS
36916 UNFAKE_STACK_FRAME
36917 + pax_force_retaddr
36918 ret
36919 CFI_ENDPROC
36920 - END(kernel_execve)
36921 -@@ -1263,6 +1620,7 @@ ENTRY(call_softirq)
36922 +-END(kernel_execve)
36923 ++ENDPROC(kernel_execve)
36924 +
36925 + /* Call softirq on interrupt stack. Interrupts are off. */
36926 + ENTRY(call_softirq)
36927 +@@ -1213,9 +1570,10 @@ ENTRY(call_softirq)
36928 CFI_DEF_CFA_REGISTER rsp
36929 CFI_ADJUST_CFA_OFFSET -8
36930 decl PER_CPU_VAR(irq_count)
36931 + pax_force_retaddr
36932 ret
36933 CFI_ENDPROC
36934 - END(call_softirq)
36935 -@@ -1405,16 +1763,31 @@ ENTRY(paranoid_exit)
36936 +-END(call_softirq)
36937 ++ENDPROC(call_softirq)
36938 +
36939 + #ifdef CONFIG_XEN
36940 + zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
36941 +@@ -1253,7 +1611,7 @@ ENTRY(xen_do_hypervisor_callback) # do
36942 + decl PER_CPU_VAR(irq_count)
36943 + jmp error_exit
36944 + CFI_ENDPROC
36945 +-END(xen_do_hypervisor_callback)
36946 ++ENDPROC(xen_do_hypervisor_callback)
36947 +
36948 + /*
36949 + * Hypervisor uses this for application faults while it executes.
36950 +@@ -1312,7 +1670,7 @@ ENTRY(xen_failsafe_callback)
36951 + SAVE_ALL
36952 + jmp error_exit
36953 + CFI_ENDPROC
36954 +-END(xen_failsafe_callback)
36955 ++ENDPROC(xen_failsafe_callback)
36956 +
36957 + apicinterrupt XEN_HVM_EVTCHN_CALLBACK \
36958 + xen_hvm_callback_vector xen_evtchn_do_upcall
36959 +@@ -1361,16 +1719,31 @@ ENTRY(paranoid_exit)
36960 TRACE_IRQS_OFF
36961 testl %ebx,%ebx /* swapgs needed? */
36962 jnz paranoid_restore
36963 @@ -14749,7 +13110,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36964 jmp irq_return
36965 paranoid_userspace:
36966 GET_THREAD_INFO(%rcx)
36967 -@@ -1470,12 +1843,13 @@ ENTRY(error_entry)
36968 +@@ -1399,7 +1772,7 @@ paranoid_schedule:
36969 + TRACE_IRQS_OFF
36970 + jmp paranoid_userspace
36971 + CFI_ENDPROC
36972 +-END(paranoid_exit)
36973 ++ENDPROC(paranoid_exit)
36974 +
36975 + /*
36976 + * Exception entry point. This expects an error code/orig_rax on the stack.
36977 +@@ -1426,12 +1799,13 @@ ENTRY(error_entry)
36978 movq_cfi r14, R14+8
36979 movq_cfi r15, R15+8
36980 xorl %ebx,%ebx
36981 @@ -14762,10 +13132,28 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
36982 TRACE_IRQS_OFF
36983 + pax_force_retaddr
36984 ret
36985 +
36986 + /*
36987 +@@ -1458,7 +1832,7 @@ bstep_iret:
36988 + movq %rcx,RIP+8(%rsp)
36989 + jmp error_swapgs
36990 + CFI_ENDPROC
36991 +-END(error_entry)
36992 ++ENDPROC(error_entry)
36993 +
36994 +
36995 + /* ebx: no swapgs flag (1: don't need swapgs, 0: need it) */
36996 +@@ -1478,7 +1852,7 @@ ENTRY(error_exit)
36997 + jnz retint_careful
36998 + jmp retint_swapgs
36999 CFI_ENDPROC
37000 +-END(error_exit)
37001 ++ENDPROC(error_exit)
37002 +
37003
37004 -@@ -1529,6 +1903,16 @@ ENTRY(nmi)
37005 - CFI_ADJUST_CFA_OFFSET 15*8
37006 + /* runs on exception stack */
37007 +@@ -1490,6 +1864,16 @@ ENTRY(nmi)
37008 + CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
37009 call save_paranoid
37010 DEFAULT_FRAME 0
37011 +#ifdef CONFIG_PAX_MEMORY_UDEREF
37012 @@ -14781,7 +13169,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
37013 /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
37014 movq %rsp,%rdi
37015 movq $-1,%rsi
37016 -@@ -1539,12 +1923,28 @@ ENTRY(nmi)
37017 +@@ -1500,12 +1884,28 @@ ENTRY(nmi)
37018 DISABLE_INTERRUPTS(CLBR_NONE)
37019 testl %ebx,%ebx /* swapgs needed? */
37020 jnz nmi_restore
37021 @@ -14811,11 +13199,28 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/entry_64.S linux-2.6.32.48/arch/x86/k
37022 jmp irq_return
37023 nmi_userspace:
37024 GET_THREAD_INFO(%rcx)
37025 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/kernel/ftrace.c
37026 ---- linux-2.6.32.48/arch/x86/kernel/ftrace.c 2009-12-02 22:51:21.000000000 -0500
37027 -+++ linux-2.6.32.48/arch/x86/kernel/ftrace.c 2011-11-12 12:46:42.000000000 -0500
37028 -@@ -103,7 +103,7 @@ static void *mod_code_ip; /* holds the
37029 - static void *mod_code_newcode; /* holds the text to write to the IP */
37030 +@@ -1534,14 +1934,14 @@ nmi_schedule:
37031 + jmp paranoid_exit
37032 + CFI_ENDPROC
37033 + #endif
37034 +-END(nmi)
37035 ++ENDPROC(nmi)
37036 +
37037 + ENTRY(ignore_sysret)
37038 + CFI_STARTPROC
37039 + mov $-ENOSYS,%eax
37040 + sysret
37041 + CFI_ENDPROC
37042 +-END(ignore_sysret)
37043 ++ENDPROC(ignore_sysret)
37044 +
37045 + /*
37046 + * End of kprobes section
37047 +diff -urNp linux-3.0.8/arch/x86/kernel/ftrace.c linux-3.0.8/arch/x86/kernel/ftrace.c
37048 +--- linux-3.0.8/arch/x86/kernel/ftrace.c 2011-07-21 22:17:23.000000000 -0400
37049 ++++ linux-3.0.8/arch/x86/kernel/ftrace.c 2011-08-23 21:47:55.000000000 -0400
37050 +@@ -126,7 +126,7 @@ static void *mod_code_ip; /* holds the
37051 + static const void *mod_code_newcode; /* holds the text to write to the IP */
37052
37053 static unsigned nmi_wait_count;
37054 -static atomic_t nmi_update_count = ATOMIC_INIT(0);
37055 @@ -14823,7 +13228,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/ker
37056
37057 int ftrace_arch_read_dyn_info(char *buf, int size)
37058 {
37059 -@@ -111,7 +111,7 @@ int ftrace_arch_read_dyn_info(char *buf,
37060 +@@ -134,7 +134,7 @@ int ftrace_arch_read_dyn_info(char *buf,
37061
37062 r = snprintf(buf, size, "%u %u",
37063 nmi_wait_count,
37064 @@ -14832,8 +13237,8 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/ker
37065 return r;
37066 }
37067
37068 -@@ -149,8 +149,10 @@ void ftrace_nmi_enter(void)
37069 - {
37070 +@@ -177,8 +177,10 @@ void ftrace_nmi_enter(void)
37071 +
37072 if (atomic_inc_return(&nmi_running) & MOD_CODE_WRITE_FLAG) {
37073 smp_rmb();
37074 + pax_open_kernel();
37075 @@ -14844,16 +13249,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/ker
37076 }
37077 /* Must have previous changes seen before executions */
37078 smp_mb();
37079 -@@ -215,7 +217,7 @@ do_ftrace_mod_code(unsigned long ip, voi
37080 -
37081 -
37082 -
37083 --static unsigned char ftrace_nop[MCOUNT_INSN_SIZE];
37084 -+static unsigned char ftrace_nop[MCOUNT_INSN_SIZE] __read_only;
37085 -
37086 - static unsigned char *ftrace_nop_replace(void)
37087 - {
37088 -@@ -228,6 +230,8 @@ ftrace_modify_code(unsigned long ip, uns
37089 +@@ -271,6 +273,8 @@ ftrace_modify_code(unsigned long ip, uns
37090 {
37091 unsigned char replaced[MCOUNT_INSN_SIZE];
37092
37093 @@ -14862,7 +13258,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/ker
37094 /*
37095 * Note: Due to modules and __init, code can
37096 * disappear and change, we need to protect against faulting
37097 -@@ -284,7 +288,7 @@ int ftrace_update_ftrace_func(ftrace_fun
37098 +@@ -327,7 +331,7 @@ int ftrace_update_ftrace_func(ftrace_fun
37099 unsigned char old[MCOUNT_INSN_SIZE], *new;
37100 int ret;
37101
37102 @@ -14871,26 +13267,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/ker
37103 new = ftrace_call_replace(ip, (unsigned long)func);
37104 ret = ftrace_modify_code(ip, old, new);
37105
37106 -@@ -337,15 +341,15 @@ int __init ftrace_dyn_arch_init(void *da
37107 - switch (faulted) {
37108 - case 0:
37109 - pr_info("ftrace: converting mcount calls to 0f 1f 44 00 00\n");
37110 -- memcpy(ftrace_nop, ftrace_test_p6nop, MCOUNT_INSN_SIZE);
37111 -+ memcpy(ftrace_nop, ktla_ktva(ftrace_test_p6nop), MCOUNT_INSN_SIZE);
37112 - break;
37113 - case 1:
37114 - pr_info("ftrace: converting mcount calls to 66 66 66 66 90\n");
37115 -- memcpy(ftrace_nop, ftrace_test_nop5, MCOUNT_INSN_SIZE);
37116 -+ memcpy(ftrace_nop, ktla_ktva(ftrace_test_nop5), MCOUNT_INSN_SIZE);
37117 - break;
37118 - case 2:
37119 - pr_info("ftrace: converting mcount calls to jmp . + 5\n");
37120 -- memcpy(ftrace_nop, ftrace_test_jmp, MCOUNT_INSN_SIZE);
37121 -+ memcpy(ftrace_nop, ktla_ktva(ftrace_test_jmp), MCOUNT_INSN_SIZE);
37122 - break;
37123 - }
37124 -
37125 -@@ -366,6 +370,8 @@ static int ftrace_mod_jmp(unsigned long
37126 +@@ -353,6 +357,8 @@ static int ftrace_mod_jmp(unsigned long
37127 {
37128 unsigned char code[MCOUNT_INSN_SIZE];
37129
37130 @@ -14899,35 +13276,30 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ftrace.c linux-2.6.32.48/arch/x86/ker
37131 if (probe_kernel_read(code, (void *)ip, MCOUNT_INSN_SIZE))
37132 return -EFAULT;
37133
37134 -diff -urNp linux-2.6.32.48/arch/x86/kernel/head32.c linux-2.6.32.48/arch/x86/kernel/head32.c
37135 ---- linux-2.6.32.48/arch/x86/kernel/head32.c 2009-12-02 22:51:21.000000000 -0500
37136 -+++ linux-2.6.32.48/arch/x86/kernel/head32.c 2011-11-12 12:46:42.000000000 -0500
37137 -@@ -16,6 +16,7 @@
37138 - #include <asm/apic.h>
37139 +diff -urNp linux-3.0.8/arch/x86/kernel/head32.c linux-3.0.8/arch/x86/kernel/head32.c
37140 +--- linux-3.0.8/arch/x86/kernel/head32.c 2011-07-21 22:17:23.000000000 -0400
37141 ++++ linux-3.0.8/arch/x86/kernel/head32.c 2011-08-23 21:47:55.000000000 -0400
37142 +@@ -19,6 +19,7 @@
37143 #include <asm/io_apic.h>
37144 #include <asm/bios_ebda.h>
37145 + #include <asm/tlbflush.h>
37146 +#include <asm/boot.h>
37147
37148 static void __init i386_default_early_setup(void)
37149 {
37150 -@@ -31,7 +32,7 @@ void __init i386_start_kernel(void)
37151 +@@ -33,7 +34,7 @@ void __init i386_start_kernel(void)
37152 {
37153 - reserve_trampoline_memory();
37154 + memblock_init();
37155
37156 -- reserve_early(__pa_symbol(&_text), __pa_symbol(&__bss_stop), "TEXT DATA BSS");
37157 -+ reserve_early(LOAD_PHYSICAL_ADDR, __pa_symbol(&__bss_stop), "TEXT DATA BSS");
37158 +- memblock_x86_reserve_range(__pa_symbol(&_text), __pa_symbol(&__bss_stop), "TEXT DATA BSS");
37159 ++ memblock_x86_reserve_range(LOAD_PHYSICAL_ADDR, __pa_symbol(&__bss_stop), "TEXT DATA BSS");
37160
37161 #ifdef CONFIG_BLK_DEV_INITRD
37162 /* Reserve INITRD */
37163 -diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/kernel/head_32.S
37164 ---- linux-2.6.32.48/arch/x86/kernel/head_32.S 2011-11-12 12:44:28.000000000 -0500
37165 -+++ linux-2.6.32.48/arch/x86/kernel/head_32.S 2011-11-12 12:46:42.000000000 -0500
37166 -@@ -19,10 +19,17 @@
37167 - #include <asm/setup.h>
37168 - #include <asm/processor-flags.h>
37169 - #include <asm/percpu.h>
37170 -+#include <asm/msr-index.h>
37171 -
37172 +diff -urNp linux-3.0.8/arch/x86/kernel/head_32.S linux-3.0.8/arch/x86/kernel/head_32.S
37173 +--- linux-3.0.8/arch/x86/kernel/head_32.S 2011-07-21 22:17:23.000000000 -0400
37174 ++++ linux-3.0.8/arch/x86/kernel/head_32.S 2011-08-23 21:47:55.000000000 -0400
37175 +@@ -25,6 +25,12 @@
37176 /* Physical address */
37177 #define pa(X) ((X) - __PAGE_OFFSET)
37178
37179 @@ -14940,7 +13312,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37180 /*
37181 * References to members of the new_cpu_data structure.
37182 */
37183 -@@ -52,11 +59,7 @@
37184 +@@ -54,11 +60,7 @@
37185 * and small than max_low_pfn, otherwise will waste some page table entries
37186 */
37187
37188 @@ -14951,9 +13323,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37189 -#endif
37190 +#define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PTE)
37191
37192 - /* Enough space to fit pagetables for the low memory linear map */
37193 - MAPPING_BEYOND_END = \
37194 -@@ -73,6 +76,12 @@ INIT_MAP_SIZE = PAGE_TABLE_SIZE(KERNEL_P
37195 + /* Number of possible pages in the lowmem region */
37196 + LOWMEM_PAGES = (((1<<32) - __PAGE_OFFSET) >> PAGE_SHIFT)
37197 +@@ -77,6 +79,12 @@ INIT_MAP_SIZE = PAGE_TABLE_SIZE(KERNEL_P
37198 RESERVE_BRK(pagetables, INIT_MAP_SIZE)
37199
37200 /*
37201 @@ -14966,7 +13338,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37202 * 32-bit kernel entrypoint; only used by the boot CPU. On entry,
37203 * %esi points to the real-mode code as a 32-bit pointer.
37204 * CS and DS must be 4 GB flat segments, but we don't depend on
37205 -@@ -80,7 +89,16 @@ RESERVE_BRK(pagetables, INIT_MAP_SIZE)
37206 +@@ -84,6 +92,13 @@ RESERVE_BRK(pagetables, INIT_MAP_SIZE)
37207 * can.
37208 */
37209 __HEAD
37210 @@ -14978,19 +13350,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37211 +#endif
37212 +
37213 ENTRY(startup_32)
37214 -+ movl pa(stack_start),%ecx
37215 -+
37216 - /* test KEEP_SEGMENTS flag to see if the bootloader is asking
37217 - us to not reload segments */
37218 - testb $(1<<6), BP_loadflags(%esi)
37219 -@@ -95,7 +113,60 @@ ENTRY(startup_32)
37220 - movl %eax,%es
37221 - movl %eax,%fs
37222 - movl %eax,%gs
37223 -+ movl %eax,%ss
37224 + movl pa(stack_start),%ecx
37225 +
37226 +@@ -105,6 +120,57 @@ ENTRY(startup_32)
37227 2:
37228 -+ leal -__PAGE_OFFSET(%ecx),%esp
37229 -+
37230 + leal -__PAGE_OFFSET(%ecx),%esp
37231 +
37232 +#ifdef CONFIG_SMP
37233 + movl $pa(cpu_gdt_table),%edi
37234 + movl $__per_cpu_load,%eax
37235 @@ -15041,10 +13406,39 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37236 + addl $PAGE_SIZE_asm,%edi
37237 + loop 1b
37238 +#endif
37239 -
37240 ++
37241 /*
37242 * Clear BSS first so that there are no surprises...
37243 -@@ -140,9 +211,7 @@ ENTRY(startup_32)
37244 + */
37245 +@@ -195,8 +261,11 @@ ENTRY(startup_32)
37246 + movl %eax, pa(max_pfn_mapped)
37247 +
37248 + /* Do early initialization of the fixmap area */
37249 +- movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,%eax
37250 +- movl %eax,pa(initial_pg_pmd+0x1000*KPMDS-8)
37251 ++#ifdef CONFIG_COMPAT_VDSO
37252 ++ movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(initial_pg_pmd+0x1000*KPMDS-8)
37253 ++#else
37254 ++ movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,pa(initial_pg_pmd+0x1000*KPMDS-8)
37255 ++#endif
37256 + #else /* Not PAE */
37257 +
37258 + page_pde_offset = (__PAGE_OFFSET >> 20);
37259 +@@ -226,8 +295,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20);
37260 + movl %eax, pa(max_pfn_mapped)
37261 +
37262 + /* Do early initialization of the fixmap area */
37263 +- movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,%eax
37264 +- movl %eax,pa(initial_page_table+0xffc)
37265 ++#ifdef CONFIG_COMPAT_VDSO
37266 ++ movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(initial_page_table+0xffc)
37267 ++#else
37268 ++ movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,pa(initial_page_table+0xffc)
37269 ++#endif
37270 + #endif
37271 +
37272 + #ifdef CONFIG_PARAVIRT
37273 +@@ -241,9 +313,7 @@ page_pde_offset = (__PAGE_OFFSET >> 20);
37274 cmpl $num_subarch_entries, %eax
37275 jae bad_subarch
37276
37277 @@ -15055,7 +13449,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37278
37279 bad_subarch:
37280 WEAK(lguest_entry)
37281 -@@ -154,10 +223,10 @@ WEAK(xen_entry)
37282 +@@ -255,10 +325,10 @@ WEAK(xen_entry)
37283 __INITDATA
37284
37285 subarch_entries:
37286 @@ -15069,106 +13463,26 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37287 + .long ta(default_entry) /* Moorestown MID */
37288 num_subarch_entries = (. - subarch_entries) / 4
37289 .previous
37290 - #endif /* CONFIG_PARAVIRT */
37291 -@@ -218,8 +287,11 @@ default_entry:
37292 - movl %eax, pa(max_pfn_mapped)
37293 -
37294 - /* Do early initialization of the fixmap area */
37295 -- movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax
37296 -- movl %eax,pa(swapper_pg_pmd+0x1000*KPMDS-8)
37297 -+#ifdef CONFIG_COMPAT_VDSO
37298 -+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(swapper_pg_pmd+0x1000*KPMDS-8)
37299 -+#else
37300 -+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,pa(swapper_pg_pmd+0x1000*KPMDS-8)
37301 -+#endif
37302 - #else /* Not PAE */
37303 -
37304 - page_pde_offset = (__PAGE_OFFSET >> 20);
37305 -@@ -249,8 +321,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20);
37306 - movl %eax, pa(max_pfn_mapped)
37307 -
37308 - /* Do early initialization of the fixmap area */
37309 -- movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax
37310 -- movl %eax,pa(swapper_pg_dir+0xffc)
37311 -+#ifdef CONFIG_COMPAT_VDSO
37312 -+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR+_PAGE_USER,pa(swapper_pg_dir+0xffc)
37313 -+#else
37314 -+ movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,pa(swapper_pg_dir+0xffc)
37315 -+#endif
37316 - #endif
37317 - jmp 3f
37318 - /*
37319 -@@ -272,6 +347,9 @@ ENTRY(startup_32_smp)
37320 - movl %eax,%es
37321 - movl %eax,%fs
37322 - movl %eax,%gs
37323 -+ movl pa(stack_start),%ecx
37324 -+ movl %eax,%ss
37325 -+ leal -__PAGE_OFFSET(%ecx),%esp
37326 - #endif /* CONFIG_SMP */
37327 - 3:
37328 -
37329 -@@ -297,6 +375,7 @@ ENTRY(startup_32_smp)
37330 + #else
37331 +@@ -312,6 +382,7 @@ default_entry:
37332 orl %edx,%eax
37333 movl %eax,%cr4
37334
37335 +#ifdef CONFIG_X86_PAE
37336 - btl $5, %eax # check if PAE is enabled
37337 - jnc 6f
37338 -
37339 -@@ -305,6 +384,10 @@ ENTRY(startup_32_smp)
37340 - cpuid
37341 - cmpl $0x80000000, %eax
37342 - jbe 6f
37343 -+
37344 -+ /* Clear bogus XD_DISABLE bits */
37345 -+ call verify_cpu
37346 -+
37347 - mov $0x80000001, %eax
37348 - cpuid
37349 - /* Execute Disable bit supported? */
37350 -@@ -312,13 +395,17 @@ ENTRY(startup_32_smp)
37351 - jnc 6f
37352 -
37353 - /* Setup EFER (Extended Feature Enable Register) */
37354 -- movl $0xc0000080, %ecx
37355 -+ movl $MSR_EFER, %ecx
37356 - rdmsr
37357 + testb $X86_CR4_PAE, %al # check if PAE is enabled
37358 + jz 6f
37359
37360 - btsl $11, %eax
37361 +@@ -340,6 +411,9 @@ default_entry:
37362 /* Make changes effective */
37363 wrmsr
37364
37365 + btsl $_PAGE_BIT_NX-32,pa(__supported_pte_mask+4)
37366 -+ movl $1,pa(nx_enabled)
37367 +#endif
37368 +
37369 6:
37370
37371 /*
37372 -@@ -331,8 +418,8 @@ ENTRY(startup_32_smp)
37373 - movl %eax,%cr0 /* ..and set paging (PG) bit */
37374 - ljmp $__BOOT_CS,$1f /* Clear prefetch and normalize %eip */
37375 - 1:
37376 -- /* Set up the stack pointer */
37377 -- lss stack_start,%esp
37378 -+ /* Shift the stack pointer to a virtual address */
37379 -+ addl $__PAGE_OFFSET, %esp
37380 -
37381 - /*
37382 - * Initialize eflags. Some BIOS's leave bits like NT set. This would
37383 -@@ -344,9 +431,7 @@ ENTRY(startup_32_smp)
37384 -
37385 - #ifdef CONFIG_SMP
37386 - cmpb $0, ready
37387 -- jz 1f /* Initial CPU cleans BSS */
37388 -- jmp checkCPUtype
37389 --1:
37390 -+ jnz checkCPUtype
37391 - #endif /* CONFIG_SMP */
37392 -
37393 - /*
37394 -@@ -424,7 +509,7 @@ is386: movl $2,%ecx # set MP
37395 +@@ -443,7 +517,7 @@ is386: movl $2,%ecx # set MP
37396 1: movl $(__KERNEL_DS),%eax # reload all the segment registers
37397 movl %eax,%ss # after changing gdt.
37398
37399 @@ -15177,13 +13491,13 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37400 movl %eax,%ds
37401 movl %eax,%es
37402
37403 -@@ -438,15 +523,22 @@ is386: movl $2,%ecx # set MP
37404 +@@ -457,15 +531,22 @@ is386: movl $2,%ecx # set MP
37405 */
37406 cmpb $0,ready
37407 jne 1f
37408 -- movl $per_cpu__gdt_page,%eax
37409 +- movl $gdt_page,%eax
37410 + movl $cpu_gdt_table,%eax
37411 - movl $per_cpu__stack_canary,%ecx
37412 + movl $stack_canary,%ecx
37413 +#ifdef CONFIG_SMP
37414 + addl $__per_cpu_load,%ecx
37415 +#endif
37416 @@ -15202,22 +13516,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37417 movl %eax,%gs
37418
37419 xorl %eax,%eax # Clear LDT
37420 -@@ -454,14 +546,7 @@ is386: movl $2,%ecx # set MP
37421 -
37422 - cld # gcc2 wants the direction flag cleared at all times
37423 - pushl $0 # fake return address for unwinder
37424 --#ifdef CONFIG_SMP
37425 -- movb ready, %cl
37426 - movb $1, ready
37427 -- cmpb $0,%cl # the first CPU calls start_kernel
37428 -- je 1f
37429 -- movl (stack_start), %esp
37430 --1:
37431 --#endif /* CONFIG_SMP */
37432 - jmp *(initial_code)
37433 -
37434 - /*
37435 -@@ -546,22 +631,22 @@ early_page_fault:
37436 +@@ -558,22 +639,22 @@ early_page_fault:
37437 jmp early_fault
37438
37439 early_fault:
37440 @@ -15245,7 +13544,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37441 hlt_loop:
37442 hlt
37443 jmp hlt_loop
37444 -@@ -569,8 +654,11 @@ hlt_loop:
37445 +@@ -581,8 +662,11 @@ hlt_loop:
37446 /* This is the default interrupt "handler" :-) */
37447 ALIGN
37448 ignore_int:
37449 @@ -15258,7 +13557,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37450 pushl %eax
37451 pushl %ecx
37452 pushl %edx
37453 -@@ -579,9 +667,6 @@ ignore_int:
37454 +@@ -591,9 +675,6 @@ ignore_int:
37455 movl $(__KERNEL_DS),%eax
37456 movl %eax,%ds
37457 movl %eax,%es
37458 @@ -15268,48 +13567,36 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37459 pushl 16(%esp)
37460 pushl 24(%esp)
37461 pushl 32(%esp)
37462 -@@ -600,6 +685,8 @@ ignore_int:
37463 - #endif
37464 - iret
37465 -
37466 -+#include "verify_cpu.S"
37467 -+
37468 - __REFDATA
37469 - .align 4
37470 - ENTRY(initial_code)
37471 -@@ -610,31 +697,47 @@ ENTRY(initial_page_table)
37472 +@@ -622,29 +703,43 @@ ENTRY(initial_code)
37473 /*
37474 * BSS section
37475 */
37476 -__PAGE_ALIGNED_BSS
37477 -- .align PAGE_SIZE_asm
37478 +- .align PAGE_SIZE
37479 #ifdef CONFIG_X86_PAE
37480 -+.section .swapper_pg_pmd,"a",@progbits
37481 - swapper_pg_pmd:
37482 ++.section .initial_pg_pmd,"a",@progbits
37483 + initial_pg_pmd:
37484 .fill 1024*KPMDS,4,0
37485 #else
37486 -+.section .swapper_pg_dir,"a",@progbits
37487 - ENTRY(swapper_pg_dir)
37488 ++.section .initial_page_table,"a",@progbits
37489 + ENTRY(initial_page_table)
37490 .fill 1024,4,0
37491 #endif
37492 -+.section .swapper_pg_fixmap,"a",@progbits
37493 - swapper_pg_fixmap:
37494 ++.section .initial_pg_fixmap,"a",@progbits
37495 + initial_pg_fixmap:
37496 .fill 1024,4,0
37497 - #ifdef CONFIG_X86_TRAMPOLINE
37498 -+.section .trampoline_pg_dir,"a",@progbits
37499 - ENTRY(trampoline_pg_dir)
37500 ++.section .empty_zero_page,"a",@progbits
37501 + ENTRY(empty_zero_page)
37502 + .fill 4096,1,0
37503 ++.section .swapper_pg_dir,"a",@progbits
37504 + ENTRY(swapper_pg_dir)
37505 +#ifdef CONFIG_X86_PAE
37506 + .fill 4,8,0
37507 +#else
37508 .fill 1024,4,0
37509 - #endif
37510 +#endif
37511 +
37512 -+.section .empty_zero_page,"a",@progbits
37513 - ENTRY(empty_zero_page)
37514 - .fill 4096,1,0
37515 -
37516 - /*
37517 ++/*
37518 + * The IDT has to be page-aligned to simplify the Pentium
37519 + * F0 0F bug workaround.. We have a special link segment
37520 + * for this.
37521 @@ -15317,23 +13604,22 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37522 +.section .idt,"a",@progbits
37523 +ENTRY(idt_table)
37524 + .fill 256,8,0
37525 -+
37526 -+/*
37527 +
37528 + /*
37529 * This starts the data section.
37530 */
37531 #ifdef CONFIG_X86_PAE
37532 -__PAGE_ALIGNED_DATA
37533 - /* Page-aligned for the benefit of paravirt? */
37534 -- .align PAGE_SIZE_asm
37535 -+.section .swapper_pg_dir,"a",@progbits
37536 -+
37537 - ENTRY(swapper_pg_dir)
37538 - .long pa(swapper_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */
37539 +- .align PAGE_SIZE
37540 ++.section .initial_page_table,"a",@progbits
37541 + ENTRY(initial_page_table)
37542 + .long pa(initial_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */
37543 # if KPMDS == 3
37544 -@@ -653,15 +756,24 @@ ENTRY(swapper_pg_dir)
37545 +@@ -663,18 +758,27 @@ ENTRY(initial_page_table)
37546 # error "Kernel PMDs should be 1, 2 or 3"
37547 # endif
37548 - .align PAGE_SIZE_asm /* needs to be page-sized too */
37549 + .align PAGE_SIZE /* needs to be page-sized too */
37550 +
37551 +#ifdef CONFIG_PAX_PER_CPU_PGD
37552 +ENTRY(cpu_pgd)
37553 @@ -15345,19 +13631,23 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37554 #endif
37555
37556 .data
37557 -+.balign 4
37558 + .balign 4
37559 ENTRY(stack_start)
37560 - .long init_thread_union+THREAD_SIZE
37561 -- .long __BOOT_DS
37562 + .long init_thread_union+THREAD_SIZE-8
37563 -
37564 - ready: .byte 0
37565 ++
37566 ++ready: .byte 0
37567
37568 +.section .rodata,"a",@progbits
37569 early_recursion_flag:
37570 .long 0
37571
37572 -@@ -697,7 +809,7 @@ fault_msg:
37573 +-ready: .byte 0
37574 +-
37575 + int_msg:
37576 + .asciz "Unknown interrupt or fault at: %p %p %p\n"
37577 +
37578 +@@ -707,7 +811,7 @@ fault_msg:
37579 .word 0 # 32 bit align gdt_desc.address
37580 boot_gdt_descr:
37581 .word __BOOT_DS+7
37582 @@ -15366,16 +13656,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37583
37584 .word 0 # 32-bit align idt_desc.address
37585 idt_descr:
37586 -@@ -708,7 +820,7 @@ idt_descr:
37587 +@@ -718,7 +822,7 @@ idt_descr:
37588 .word 0 # 32 bit align gdt_desc.address
37589 ENTRY(early_gdt_descr)
37590 .word GDT_ENTRIES*8-1
37591 -- .long per_cpu__gdt_page /* Overwritten for secondary CPUs */
37592 +- .long gdt_page /* Overwritten for secondary CPUs */
37593 + .long cpu_gdt_table /* Overwritten for secondary CPUs */
37594
37595 /*
37596 * The boot_gdt must mirror the equivalent in setup.S and is
37597 -@@ -717,5 +829,65 @@ ENTRY(early_gdt_descr)
37598 +@@ -727,5 +831,65 @@ ENTRY(early_gdt_descr)
37599 .align L1_CACHE_BYTES
37600 ENTRY(boot_gdt)
37601 .fill GDT_ENTRY_BOOT_CS,8,0
37602 @@ -15443,9 +13733,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_32.S linux-2.6.32.48/arch/x86/ke
37603 + /* Be sure this is zeroed to avoid false validations in Xen */
37604 + .fill PAGE_SIZE_asm - GDT_SIZE,1,0
37605 + .endr
37606 -diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/kernel/head_64.S
37607 ---- linux-2.6.32.48/arch/x86/kernel/head_64.S 2009-12-02 22:51:21.000000000 -0500
37608 -+++ linux-2.6.32.48/arch/x86/kernel/head_64.S 2011-11-12 12:46:42.000000000 -0500
37609 +diff -urNp linux-3.0.8/arch/x86/kernel/head_64.S linux-3.0.8/arch/x86/kernel/head_64.S
37610 +--- linux-3.0.8/arch/x86/kernel/head_64.S 2011-07-21 22:17:23.000000000 -0400
37611 ++++ linux-3.0.8/arch/x86/kernel/head_64.S 2011-08-23 21:47:55.000000000 -0400
37612 @@ -19,6 +19,7 @@
37613 #include <asm/cache.h>
37614 #include <asm/processor-flags.h>
37615 @@ -15511,7 +13801,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37616
37617 /*
37618 * Fixup the kernel text+data virtual addresses. Note that
37619 -@@ -161,8 +153,8 @@ ENTRY(secondary_startup_64)
37620 +@@ -160,8 +152,8 @@ ENTRY(secondary_startup_64)
37621 * after the boot processor executes this code.
37622 */
37623
37624 @@ -15522,7 +13812,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37625 movq %rax, %cr4
37626
37627 /* Setup early boot stage 4 level pagetables. */
37628 -@@ -184,9 +176,13 @@ ENTRY(secondary_startup_64)
37629 +@@ -183,9 +175,14 @@ ENTRY(secondary_startup_64)
37630 movl $MSR_EFER, %ecx
37631 rdmsr
37632 btsl $_EFER_SCE, %eax /* Enable System Call */
37633 @@ -15534,20 +13824,11 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37634 + btsq $_PAGE_BIT_NX, 8*L4_PAGE_OFFSET(%rdi)
37635 + btsq $_PAGE_BIT_NX, 8*L4_VMALLOC_START(%rdi)
37636 + btsq $_PAGE_BIT_NX, 8*L4_VMEMMAP_START(%rdi)
37637 ++ btsq $_PAGE_BIT_NX, __supported_pte_mask(%rip)
37638 1: wrmsr /* Make changes effective */
37639
37640 /* Setup cr0 */
37641 -@@ -262,16 +258,16 @@ ENTRY(secondary_startup_64)
37642 - .quad x86_64_start_kernel
37643 - ENTRY(initial_gs)
37644 - .quad INIT_PER_CPU_VAR(irq_stack_union)
37645 -- __FINITDATA
37646 -
37647 - ENTRY(stack_start)
37648 - .quad init_thread_union+THREAD_SIZE-8
37649 - .word 0
37650 -+ __FINITDATA
37651 -
37652 +@@ -269,7 +266,7 @@ ENTRY(secondary_startup_64)
37653 bad_address:
37654 jmp bad_address
37655
37656 @@ -15556,7 +13837,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37657 #ifdef CONFIG_EARLY_PRINTK
37658 .globl early_idt_handlers
37659 early_idt_handlers:
37660 -@@ -316,18 +312,23 @@ ENTRY(early_idt_handler)
37661 +@@ -314,18 +311,23 @@ ENTRY(early_idt_handler)
37662 #endif /* EARLY_PRINTK */
37663 1: hlt
37664 jmp 1b
37665 @@ -15581,7 +13862,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37666 #define NEXT_PAGE(name) \
37667 .balign PAGE_SIZE; \
37668 ENTRY(name)
37669 -@@ -350,13 +351,36 @@ NEXT_PAGE(init_level4_pgt)
37670 +@@ -338,7 +340,6 @@ ENTRY(name)
37671 + i = i + 1 ; \
37672 + .endr
37673 +
37674 +- .data
37675 + /*
37676 + * This default setting generates an ident mapping at address 0x100000
37677 + * and a mapping for the kernel that precisely maps virtual address
37678 +@@ -349,13 +350,36 @@ NEXT_PAGE(init_level4_pgt)
37679 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
37680 .org init_level4_pgt + L4_PAGE_OFFSET*8, 0
37681 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
37682 @@ -15618,7 +13907,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37683
37684 NEXT_PAGE(level3_kernel_pgt)
37685 .fill L3_START_KERNEL,8,0
37686 -@@ -364,20 +388,23 @@ NEXT_PAGE(level3_kernel_pgt)
37687 +@@ -363,20 +387,23 @@ NEXT_PAGE(level3_kernel_pgt)
37688 .quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE
37689 .quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
37690
37691 @@ -15650,7 +13939,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37692
37693 NEXT_PAGE(level2_kernel_pgt)
37694 /*
37695 -@@ -390,33 +417,55 @@ NEXT_PAGE(level2_kernel_pgt)
37696 +@@ -389,33 +416,55 @@ NEXT_PAGE(level2_kernel_pgt)
37697 * If you want to increase this then increase MODULES_VADDR
37698 * too.)
37699 */
37700 @@ -15716,9 +14005,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/head_64.S linux-2.6.32.48/arch/x86/ke
37701
37702 __PAGE_ALIGNED_BSS
37703 .align PAGE_SIZE
37704 -diff -urNp linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c
37705 ---- linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c 2009-12-02 22:51:21.000000000 -0500
37706 -+++ linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c 2011-11-12 12:46:42.000000000 -0500
37707 +diff -urNp linux-3.0.8/arch/x86/kernel/i386_ksyms_32.c linux-3.0.8/arch/x86/kernel/i386_ksyms_32.c
37708 +--- linux-3.0.8/arch/x86/kernel/i386_ksyms_32.c 2011-07-21 22:17:23.000000000 -0400
37709 ++++ linux-3.0.8/arch/x86/kernel/i386_ksyms_32.c 2011-08-23 21:47:55.000000000 -0400
37710 @@ -20,8 +20,12 @@ extern void cmpxchg8b_emu(void);
37711 EXPORT_SYMBOL(cmpxchg8b_emu);
37712 #endif
37713 @@ -15740,10 +14029,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/i386_ksyms_32.c linux-2.6.32.48/arch/
37714 +#ifdef CONFIG_PAX_KERNEXEC
37715 +EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR);
37716 +#endif
37717 -diff -urNp linux-2.6.32.48/arch/x86/kernel/i8259.c linux-2.6.32.48/arch/x86/kernel/i8259.c
37718 ---- linux-2.6.32.48/arch/x86/kernel/i8259.c 2009-12-02 22:51:21.000000000 -0500
37719 -+++ linux-2.6.32.48/arch/x86/kernel/i8259.c 2011-11-12 12:46:42.000000000 -0500
37720 -@@ -208,7 +208,7 @@ spurious_8259A_irq:
37721 +diff -urNp linux-3.0.8/arch/x86/kernel/i8259.c linux-3.0.8/arch/x86/kernel/i8259.c
37722 +--- linux-3.0.8/arch/x86/kernel/i8259.c 2011-07-21 22:17:23.000000000 -0400
37723 ++++ linux-3.0.8/arch/x86/kernel/i8259.c 2011-08-23 21:47:55.000000000 -0400
37724 +@@ -210,7 +210,7 @@ spurious_8259A_irq:
37725 "spurious 8259A interrupt: IRQ%d.\n", irq);
37726 spurious_irq_mask |= irqmask;
37727 }
37728 @@ -15752,9 +14041,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/i8259.c linux-2.6.32.48/arch/x86/kern
37729 /*
37730 * Theoretically we do not have to handle this IRQ,
37731 * but in Linux this does not cause problems and is
37732 -diff -urNp linux-2.6.32.48/arch/x86/kernel/init_task.c linux-2.6.32.48/arch/x86/kernel/init_task.c
37733 ---- linux-2.6.32.48/arch/x86/kernel/init_task.c 2009-12-02 22:51:21.000000000 -0500
37734 -+++ linux-2.6.32.48/arch/x86/kernel/init_task.c 2011-11-12 12:46:42.000000000 -0500
37735 +diff -urNp linux-3.0.8/arch/x86/kernel/init_task.c linux-3.0.8/arch/x86/kernel/init_task.c
37736 +--- linux-3.0.8/arch/x86/kernel/init_task.c 2011-07-21 22:17:23.000000000 -0400
37737 ++++ linux-3.0.8/arch/x86/kernel/init_task.c 2011-08-23 21:47:55.000000000 -0400
37738 @@ -20,8 +20,7 @@ static struct sighand_struct init_sighan
37739 * way process stacks are handled. This is done by having a special
37740 * "init_task" linker map entry..
37741 @@ -15773,9 +14062,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/init_task.c linux-2.6.32.48/arch/x86/
37742 -
37743 +struct tss_struct init_tss[NR_CPUS] ____cacheline_internodealigned_in_smp = { [0 ... NR_CPUS-1] = INIT_TSS };
37744 +EXPORT_SYMBOL(init_tss);
37745 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ioport.c linux-2.6.32.48/arch/x86/kernel/ioport.c
37746 ---- linux-2.6.32.48/arch/x86/kernel/ioport.c 2009-12-02 22:51:21.000000000 -0500
37747 -+++ linux-2.6.32.48/arch/x86/kernel/ioport.c 2011-11-12 12:46:42.000000000 -0500
37748 +diff -urNp linux-3.0.8/arch/x86/kernel/ioport.c linux-3.0.8/arch/x86/kernel/ioport.c
37749 +--- linux-3.0.8/arch/x86/kernel/ioport.c 2011-07-21 22:17:23.000000000 -0400
37750 ++++ linux-3.0.8/arch/x86/kernel/ioport.c 2011-08-23 21:48:14.000000000 -0400
37751 @@ -6,6 +6,7 @@
37752 #include <linux/sched.h>
37753 #include <linux/kernel.h>
37754 @@ -15784,7 +14073,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ioport.c linux-2.6.32.48/arch/x86/ker
37755 #include <linux/errno.h>
37756 #include <linux/types.h>
37757 #include <linux/ioport.h>
37758 -@@ -41,6 +42,12 @@ asmlinkage long sys_ioperm(unsigned long
37759 +@@ -28,6 +29,12 @@ asmlinkage long sys_ioperm(unsigned long
37760
37761 if ((from + num <= from) || (from + num > IO_BITMAP_BITS))
37762 return -EINVAL;
37763 @@ -15797,16 +14086,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ioport.c linux-2.6.32.48/arch/x86/ker
37764 if (turn_on && !capable(CAP_SYS_RAWIO))
37765 return -EPERM;
37766
37767 -@@ -67,7 +74,7 @@ asmlinkage long sys_ioperm(unsigned long
37768 +@@ -54,7 +61,7 @@ asmlinkage long sys_ioperm(unsigned long
37769 * because the ->io_bitmap_max value must match the bitmap
37770 * contents:
37771 */
37772 - tss = &per_cpu(init_tss, get_cpu());
37773 + tss = init_tss + get_cpu();
37774
37775 - set_bitmap(t->io_bitmap_ptr, from, num, !turn_on);
37776 -
37777 -@@ -111,6 +118,12 @@ static int do_iopl(unsigned int level, s
37778 + if (turn_on)
37779 + bitmap_clear(t->io_bitmap_ptr, from, num);
37780 +@@ -102,6 +109,12 @@ long sys_iopl(unsigned int level, struct
37781 return -EINVAL;
37782 /* Trying to gain more privileges? */
37783 if (level > old) {
37784 @@ -15819,10 +14108,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ioport.c linux-2.6.32.48/arch/x86/ker
37785 if (!capable(CAP_SYS_RAWIO))
37786 return -EPERM;
37787 }
37788 -diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/kernel/irq_32.c
37789 ---- linux-2.6.32.48/arch/x86/kernel/irq_32.c 2009-12-02 22:51:21.000000000 -0500
37790 -+++ linux-2.6.32.48/arch/x86/kernel/irq_32.c 2011-11-12 12:46:42.000000000 -0500
37791 -@@ -35,7 +35,7 @@ static int check_stack_overflow(void)
37792 +diff -urNp linux-3.0.8/arch/x86/kernel/irq_32.c linux-3.0.8/arch/x86/kernel/irq_32.c
37793 +--- linux-3.0.8/arch/x86/kernel/irq_32.c 2011-07-21 22:17:23.000000000 -0400
37794 ++++ linux-3.0.8/arch/x86/kernel/irq_32.c 2011-08-23 21:47:55.000000000 -0400
37795 +@@ -36,7 +36,7 @@ static int check_stack_overflow(void)
37796 __asm__ __volatile__("andl %%esp,%0" :
37797 "=r" (sp) : "0" (THREAD_SIZE - 1));
37798
37799 @@ -15831,20 +14120,18 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
37800 }
37801
37802 static void print_stack_overflow(void)
37803 -@@ -54,9 +54,9 @@ static inline void print_stack_overflow(
37804 +@@ -54,8 +54,8 @@ static inline void print_stack_overflow(
37805 * per-CPU IRQ handling contexts (thread information and stack)
37806 */
37807 union irq_ctx {
37808 - struct thread_info tinfo;
37809 - u32 stack[THREAD_SIZE/sizeof(u32)];
37810 --} __attribute__((aligned(PAGE_SIZE)));
37811 + unsigned long previous_esp;
37812 + u32 stack[THREAD_SIZE/sizeof(u32)];
37813 -+} __attribute__((aligned(THREAD_SIZE)));
37814 + } __attribute__((aligned(THREAD_SIZE)));
37815
37816 static DEFINE_PER_CPU(union irq_ctx *, hardirq_ctx);
37817 - static DEFINE_PER_CPU(union irq_ctx *, softirq_ctx);
37818 -@@ -78,10 +78,9 @@ static void call_on_stack(void *func, vo
37819 +@@ -75,10 +75,9 @@ static void call_on_stack(void *func, vo
37820 static inline int
37821 execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)
37822 {
37823 @@ -15853,10 +14140,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
37824 u32 *isp, arg1, arg2;
37825
37826 - curctx = (union irq_ctx *) current_thread_info();
37827 - irqctx = __get_cpu_var(hardirq_ctx);
37828 + irqctx = __this_cpu_read(hardirq_ctx);
37829
37830 /*
37831 -@@ -90,21 +89,16 @@ execute_on_irq_stack(int overflow, struc
37832 +@@ -87,21 +86,16 @@ execute_on_irq_stack(int overflow, struc
37833 * handler) we can't do that and just have to keep using the
37834 * current stack (which is the irq stack already after all)
37835 */
37836 @@ -15884,7 +14171,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
37837
37838 if (unlikely(overflow))
37839 call_on_stack(print_stack_overflow, isp);
37840 -@@ -116,6 +110,11 @@ execute_on_irq_stack(int overflow, struc
37841 +@@ -113,6 +107,11 @@ execute_on_irq_stack(int overflow, struc
37842 : "0" (irq), "1" (desc), "2" (isp),
37843 "D" (desc->handle_irq)
37844 : "memory", "cc", "ecx");
37845 @@ -15896,7 +14183,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
37846 return 1;
37847 }
37848
37849 -@@ -124,28 +123,11 @@ execute_on_irq_stack(int overflow, struc
37850 +@@ -121,29 +120,11 @@ execute_on_irq_stack(int overflow, struc
37851 */
37852 void __cpuinit irq_ctx_init(int cpu)
37853 {
37854 @@ -15905,29 +14192,30 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
37855 if (per_cpu(hardirq_ctx, cpu))
37856 return;
37857
37858 -- irqctx = &per_cpu(hardirq_stack, cpu);
37859 -- irqctx->tinfo.task = NULL;
37860 -- irqctx->tinfo.exec_domain = NULL;
37861 +- irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
37862 +- THREAD_FLAGS,
37863 +- THREAD_ORDER));
37864 +- memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
37865 - irqctx->tinfo.cpu = cpu;
37866 - irqctx->tinfo.preempt_count = HARDIRQ_OFFSET;
37867 - irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
37868 -
37869 - per_cpu(hardirq_ctx, cpu) = irqctx;
37870 -
37871 -- irqctx = &per_cpu(softirq_stack, cpu);
37872 -- irqctx->tinfo.task = NULL;
37873 -- irqctx->tinfo.exec_domain = NULL;
37874 +- irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
37875 +- THREAD_FLAGS,
37876 +- THREAD_ORDER));
37877 +- memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
37878 - irqctx->tinfo.cpu = cpu;
37879 -- irqctx->tinfo.preempt_count = 0;
37880 - irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
37881 -
37882 - per_cpu(softirq_ctx, cpu) = irqctx;
37883 -+ per_cpu(hardirq_ctx, cpu) = &per_cpu(hardirq_stack, cpu);
37884 -+ per_cpu(softirq_ctx, cpu) = &per_cpu(softirq_stack, cpu);
37885 ++ per_cpu(hardirq_ctx, cpu) = page_address(alloc_pages_node(cpu_to_node(cpu), THREAD_FLAGS, THREAD_ORDER));
37886 ++ per_cpu(softirq_ctx, cpu) = page_address(alloc_pages_node(cpu_to_node(cpu), THREAD_FLAGS, THREAD_ORDER));
37887
37888 printk(KERN_DEBUG "CPU %u irqstacks, hard=%p soft=%p\n",
37889 cpu, per_cpu(hardirq_ctx, cpu), per_cpu(softirq_ctx, cpu));
37890 -@@ -159,7 +141,6 @@ void irq_ctx_exit(int cpu)
37891 +@@ -152,7 +133,6 @@ void __cpuinit irq_ctx_init(int cpu)
37892 asmlinkage void do_softirq(void)
37893 {
37894 unsigned long flags;
37895 @@ -15935,12 +14223,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
37896 union irq_ctx *irqctx;
37897 u32 *isp;
37898
37899 -@@ -169,15 +150,22 @@ asmlinkage void do_softirq(void)
37900 +@@ -162,15 +142,22 @@ asmlinkage void do_softirq(void)
37901 local_irq_save(flags);
37902
37903 if (local_softirq_pending()) {
37904 - curctx = current_thread_info();
37905 - irqctx = __get_cpu_var(softirq_ctx);
37906 + irqctx = __this_cpu_read(softirq_ctx);
37907 - irqctx->tinfo.task = curctx->task;
37908 - irqctx->tinfo.previous_esp = current_stack_pointer;
37909 + irqctx->previous_esp = current_stack_pointer;
37910 @@ -15960,12 +14248,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq_32.c linux-2.6.32.48/arch/x86/ker
37911 +#endif
37912 +
37913 /*
37914 - * Shouldnt happen, we returned above if in_interrupt():
37915 + * Shouldn't happen, we returned above if in_interrupt():
37916 */
37917 -diff -urNp linux-2.6.32.48/arch/x86/kernel/irq.c linux-2.6.32.48/arch/x86/kernel/irq.c
37918 ---- linux-2.6.32.48/arch/x86/kernel/irq.c 2009-12-02 22:51:21.000000000 -0500
37919 -+++ linux-2.6.32.48/arch/x86/kernel/irq.c 2011-11-12 12:46:42.000000000 -0500
37920 -@@ -15,7 +15,7 @@
37921 +diff -urNp linux-3.0.8/arch/x86/kernel/irq.c linux-3.0.8/arch/x86/kernel/irq.c
37922 +--- linux-3.0.8/arch/x86/kernel/irq.c 2011-07-21 22:17:23.000000000 -0400
37923 ++++ linux-3.0.8/arch/x86/kernel/irq.c 2011-08-23 21:47:55.000000000 -0400
37924 +@@ -17,7 +17,7 @@
37925 #include <asm/mce.h>
37926 #include <asm/hw_irq.h>
37927
37928 @@ -15973,8 +14261,8 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq.c linux-2.6.32.48/arch/x86/kernel
37929 +atomic_unchecked_t irq_err_count;
37930
37931 /* Function pointer for generic interrupt vector handling */
37932 - void (*generic_interrupt_extension)(void) = NULL;
37933 -@@ -114,9 +114,9 @@ static int show_other_interrupts(struct
37934 + void (*x86_platform_ipi_callback)(void) = NULL;
37935 +@@ -116,9 +116,9 @@ int arch_show_interrupts(struct seq_file
37936 seq_printf(p, "%10u ", per_cpu(mce_poll_count, j));
37937 seq_printf(p, " Machine check polls\n");
37938 #endif
37939 @@ -15986,7 +14274,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq.c linux-2.6.32.48/arch/x86/kernel
37940 #endif
37941 return 0;
37942 }
37943 -@@ -209,10 +209,10 @@ u64 arch_irq_stat_cpu(unsigned int cpu)
37944 +@@ -158,10 +158,10 @@ u64 arch_irq_stat_cpu(unsigned int cpu)
37945
37946 u64 arch_irq_stat(void)
37947 {
37948 @@ -15999,11 +14287,25 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/irq.c linux-2.6.32.48/arch/x86/kernel
37949 #endif
37950 return sum;
37951 }
37952 -diff -urNp linux-2.6.32.48/arch/x86/kernel/kgdb.c linux-2.6.32.48/arch/x86/kernel/kgdb.c
37953 ---- linux-2.6.32.48/arch/x86/kernel/kgdb.c 2009-12-02 22:51:21.000000000 -0500
37954 -+++ linux-2.6.32.48/arch/x86/kernel/kgdb.c 2011-11-12 12:46:42.000000000 -0500
37955 -@@ -390,13 +390,13 @@ int kgdb_arch_handle_exception(int e_vec
37956 -
37957 +diff -urNp linux-3.0.8/arch/x86/kernel/kgdb.c linux-3.0.8/arch/x86/kernel/kgdb.c
37958 +--- linux-3.0.8/arch/x86/kernel/kgdb.c 2011-07-21 22:17:23.000000000 -0400
37959 ++++ linux-3.0.8/arch/x86/kernel/kgdb.c 2011-08-23 21:47:55.000000000 -0400
37960 +@@ -124,11 +124,11 @@ char *dbg_get_reg(int regno, void *mem,
37961 + #ifdef CONFIG_X86_32
37962 + switch (regno) {
37963 + case GDB_SS:
37964 +- if (!user_mode_vm(regs))
37965 ++ if (!user_mode(regs))
37966 + *(unsigned long *)mem = __KERNEL_DS;
37967 + break;
37968 + case GDB_SP:
37969 +- if (!user_mode_vm(regs))
37970 ++ if (!user_mode(regs))
37971 + *(unsigned long *)mem = kernel_stack_pointer(regs);
37972 + break;
37973 + case GDB_GS:
37974 +@@ -473,12 +473,12 @@ int kgdb_arch_handle_exception(int e_vec
37975 + case 'k':
37976 /* clear the trace bit */
37977 linux_regs->flags &= ~X86_EFLAGS_TF;
37978 - atomic_set(&kgdb_cpu_doing_single_step, -1);
37979 @@ -16012,49 +14314,36 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kgdb.c linux-2.6.32.48/arch/x86/kerne
37980 /* set the trace bit if we're stepping */
37981 if (remcomInBuffer[0] == 's') {
37982 linux_regs->flags |= X86_EFLAGS_TF;
37983 - kgdb_single_step = 1;
37984 - atomic_set(&kgdb_cpu_doing_single_step,
37985 + atomic_set_unchecked(&kgdb_cpu_doing_single_step,
37986 raw_smp_processor_id());
37987 }
37988
37989 -@@ -476,7 +476,7 @@ static int __kgdb_notify(struct die_args
37990 - break;
37991 +@@ -534,7 +534,7 @@ static int __kgdb_notify(struct die_args
37992 + return NOTIFY_DONE;
37993
37994 case DIE_DEBUG:
37995 -- if (atomic_read(&kgdb_cpu_doing_single_step) ==
37996 -+ if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) ==
37997 - raw_smp_processor_id()) {
37998 +- if (atomic_read(&kgdb_cpu_doing_single_step) != -1) {
37999 ++ if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1) {
38000 if (user_mode(regs))
38001 return single_step_cont(regs, args);
38002 -@@ -573,7 +573,7 @@ unsigned long kgdb_arch_pc(int exception
38003 - return instruction_pointer(regs);
38004 - }
38005 -
38006 --struct kgdb_arch arch_kgdb_ops = {
38007 -+const struct kgdb_arch arch_kgdb_ops = {
38008 - /* Breakpoint instruction: */
38009 - .gdb_bpt_instr = { 0xcc },
38010 - .flags = KGDB_HW_BREAKPOINT,
38011 -diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/kernel/kprobes.c
38012 ---- linux-2.6.32.48/arch/x86/kernel/kprobes.c 2011-11-12 12:44:28.000000000 -0500
38013 -+++ linux-2.6.32.48/arch/x86/kernel/kprobes.c 2011-11-12 12:46:42.000000000 -0500
38014 -@@ -168,9 +168,13 @@ static void __kprobes set_jmp_op(void *f
38015 - char op;
38016 - s32 raddr;
38017 - } __attribute__((packed)) * jop;
38018 -- jop = (struct __arch_jmp_op *)from;
38019 -+
38020 -+ jop = (struct __arch_jmp_op *)(ktla_ktva(from));
38021 + break;
38022 +diff -urNp linux-3.0.8/arch/x86/kernel/kprobes.c linux-3.0.8/arch/x86/kernel/kprobes.c
38023 +--- linux-3.0.8/arch/x86/kernel/kprobes.c 2011-07-21 22:17:23.000000000 -0400
38024 ++++ linux-3.0.8/arch/x86/kernel/kprobes.c 2011-10-11 10:44:33.000000000 -0400
38025 +@@ -115,8 +115,11 @@ static void __kprobes __synthesize_relat
38026 + } __attribute__((packed)) *insn;
38027 +
38028 + insn = (struct __arch_relative_insn *)from;
38029 +
38030 + pax_open_kernel();
38031 - jop->raddr = (s32)((long)(to) - ((long)(from) + 5));
38032 - jop->op = RELATIVEJUMP_INSTRUCTION;
38033 + insn->raddr = (s32)((long)(to) - ((long)(from) + 5));
38034 + insn->op = op;
38035 + pax_close_kernel();
38036 }
38037
38038 - /*
38039 -@@ -195,7 +199,7 @@ static int __kprobes can_boost(kprobe_op
38040 + /* Insert a jump instruction at address 'from', which jumps to address 'to'.*/
38041 +@@ -153,7 +156,7 @@ static int __kprobes can_boost(kprobe_op
38042 kprobe_opcode_t opcode;
38043 kprobe_opcode_t *orig_opcodes = opcodes;
38044
38045 @@ -16063,26 +14352,29 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
38046 return 0; /* Page fault may occur on this address. */
38047
38048 retry:
38049 -@@ -339,7 +343,9 @@ static void __kprobes fix_riprel(struct
38050 - disp = (u8 *) p->addr + *((s32 *) insn) -
38051 - (u8 *) p->ainsn.insn;
38052 - BUG_ON((s64) (s32) disp != disp); /* Sanity check. */
38053 -+ pax_open_kernel();
38054 - *(s32 *)insn = (s32) disp;
38055 -+ pax_close_kernel();
38056 +@@ -314,7 +317,9 @@ static int __kprobes __copy_instruction(
38057 }
38058 }
38059 - #endif
38060 -@@ -347,16 +353,18 @@ static void __kprobes fix_riprel(struct
38061 -
38062 - static void __kprobes arch_copy_kprobe(struct kprobe *p)
38063 - {
38064 -- memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t));
38065 + insn_get_length(&insn);
38066 + pax_open_kernel();
38067 -+ memcpy(p->ainsn.insn, ktla_ktva(p->addr), MAX_INSN_SIZE * sizeof(kprobe_opcode_t));
38068 + memcpy(dest, insn.kaddr, insn.length);
38069 + pax_close_kernel();
38070
38071 - fix_riprel(p);
38072 + #ifdef CONFIG_X86_64
38073 + if (insn_rip_relative(&insn)) {
38074 +@@ -338,7 +343,9 @@ static int __kprobes __copy_instruction(
38075 + (u8 *) dest;
38076 + BUG_ON((s64) (s32) newdisp != newdisp); /* Sanity check. */
38077 + disp = (u8 *) dest + insn_offset_displacement(&insn);
38078 ++ pax_open_kernel();
38079 + *(s32 *) disp = (s32) newdisp;
38080 ++ pax_close_kernel();
38081 + }
38082 + #endif
38083 + return insn.length;
38084 +@@ -352,12 +359,12 @@ static void __kprobes arch_copy_kprobe(s
38085 + */
38086 + __copy_instruction(p->ainsn.insn, p->addr, 0);
38087
38088 - if (can_boost(p->addr))
38089 + if (can_boost(ktla_ktva(p->addr)))
38090 @@ -16095,7 +14387,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
38091 }
38092
38093 int __kprobes arch_prepare_kprobe(struct kprobe *p)
38094 -@@ -434,7 +442,7 @@ static void __kprobes prepare_singlestep
38095 +@@ -474,7 +481,7 @@ static void __kprobes setup_singlestep(s
38096 + * nor set current_kprobe, because it doesn't use single
38097 + * stepping.
38098 + */
38099 +- regs->ip = (unsigned long)p->ainsn.insn;
38100 ++ regs->ip = ktva_ktla((unsigned long)p->ainsn.insn);
38101 + preempt_enable_no_resched();
38102 + return;
38103 + }
38104 +@@ -493,7 +500,7 @@ static void __kprobes setup_singlestep(s
38105 if (p->opcode == BREAKPOINT_INSTRUCTION)
38106 regs->ip = (unsigned long)p->addr;
38107 else
38108 @@ -16103,26 +14404,27 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
38109 + regs->ip = ktva_ktla((unsigned long)p->ainsn.insn);
38110 }
38111
38112 - void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
38113 -@@ -455,7 +463,7 @@ static void __kprobes setup_singlestep(s
38114 - if (p->ainsn.boostable == 1 && !p->post_handler) {
38115 - /* Boost up -- we can execute copied instructions directly */
38116 - reset_current_kprobe();
38117 -- regs->ip = (unsigned long)p->ainsn.insn;
38118 -+ regs->ip = ktva_ktla((unsigned long)p->ainsn.insn);
38119 - preempt_enable_no_resched();
38120 - return;
38121 - }
38122 -@@ -525,7 +533,7 @@ static int __kprobes kprobe_handler(stru
38123 - struct kprobe_ctlblk *kcb;
38124 -
38125 - addr = (kprobe_opcode_t *)(regs->ip - sizeof(kprobe_opcode_t));
38126 -- if (*addr != BREAKPOINT_INSTRUCTION) {
38127 -+ if (*(kprobe_opcode_t *)ktla_ktva((unsigned long)addr) != BREAKPOINT_INSTRUCTION) {
38128 + /*
38129 +@@ -572,7 +579,7 @@ static int __kprobes kprobe_handler(stru
38130 + setup_singlestep(p, regs, kcb, 0);
38131 + return 1;
38132 + }
38133 +- } else if (*addr != BREAKPOINT_INSTRUCTION) {
38134 ++ } else if (*(kprobe_opcode_t *)ktla_ktva((unsigned long)addr) != BREAKPOINT_INSTRUCTION) {
38135 /*
38136 * The breakpoint instruction was removed right
38137 * after we hit it. Another cpu has removed
38138 -@@ -777,7 +785,7 @@ static void __kprobes resume_execution(s
38139 +@@ -680,6 +687,9 @@ static void __used __kprobes kretprobe_t
38140 + " movq %rax, 152(%rsp)\n"
38141 + RESTORE_REGS_STRING
38142 + " popfq\n"
38143 ++#ifdef CONFIG_PAX_KERNEXEC_PLUGIN
38144 ++ " btsq $63,(%rsp)\n"
38145 ++#endif
38146 + #else
38147 + " pushf\n"
38148 + SAVE_REGS_STRING
38149 +@@ -817,7 +827,7 @@ static void __kprobes resume_execution(s
38150 struct pt_regs *regs, struct kprobe_ctlblk *kcb)
38151 {
38152 unsigned long *tos = stack_addr(regs);
38153 @@ -16131,7 +14433,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
38154 unsigned long orig_ip = (unsigned long)p->addr;
38155 kprobe_opcode_t *insn = p->ainsn.insn;
38156
38157 -@@ -960,7 +968,7 @@ int __kprobes kprobe_exceptions_notify(s
38158 +@@ -999,7 +1009,7 @@ int __kprobes kprobe_exceptions_notify(s
38159 struct die_args *args = data;
38160 int ret = NOTIFY_DONE;
38161
38162 @@ -16140,10 +14442,42 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kprobes.c linux-2.6.32.48/arch/x86/ke
38163 return ret;
38164
38165 switch (val) {
38166 -diff -urNp linux-2.6.32.48/arch/x86/kernel/kvm.c linux-2.6.32.48/arch/x86/kernel/kvm.c
38167 ---- linux-2.6.32.48/arch/x86/kernel/kvm.c 2009-12-02 22:51:21.000000000 -0500
38168 -+++ linux-2.6.32.48/arch/x86/kernel/kvm.c 2011-11-12 12:46:42.000000000 -0500
38169 -@@ -216,6 +216,7 @@ static void __init paravirt_ops_setup(vo
38170 +@@ -1381,7 +1391,7 @@ int __kprobes arch_prepare_optimized_kpr
38171 + * Verify if the address gap is in 2GB range, because this uses
38172 + * a relative jump.
38173 + */
38174 +- rel = (long)op->optinsn.insn - (long)op->kp.addr + RELATIVEJUMP_SIZE;
38175 ++ rel = (long)op->optinsn.insn - ktla_ktva((long)op->kp.addr) + RELATIVEJUMP_SIZE;
38176 + if (abs(rel) > 0x7fffffff)
38177 + return -ERANGE;
38178 +
38179 +@@ -1402,11 +1412,11 @@ int __kprobes arch_prepare_optimized_kpr
38180 + synthesize_set_arg1(buf + TMPL_MOVE_IDX, (unsigned long)op);
38181 +
38182 + /* Set probe function call */
38183 +- synthesize_relcall(buf + TMPL_CALL_IDX, optimized_callback);
38184 ++ synthesize_relcall(buf + TMPL_CALL_IDX, ktla_ktva(optimized_callback));
38185 +
38186 + /* Set returning jmp instruction at the tail of out-of-line buffer */
38187 + synthesize_reljump(buf + TMPL_END_IDX + op->optinsn.size,
38188 +- (u8 *)op->kp.addr + op->optinsn.size);
38189 ++ (u8 *)ktla_ktva(op->kp.addr) + op->optinsn.size);
38190 +
38191 + flush_icache_range((unsigned long) buf,
38192 + (unsigned long) buf + TMPL_END_IDX +
38193 +@@ -1428,7 +1438,7 @@ static void __kprobes setup_optimize_kpr
38194 + ((long)op->kp.addr + RELATIVEJUMP_SIZE));
38195 +
38196 + /* Backup instructions which will be replaced by jump address */
38197 +- memcpy(op->optinsn.copied_insn, op->kp.addr + INT3_SIZE,
38198 ++ memcpy(op->optinsn.copied_insn, ktla_ktva(op->kp.addr) + INT3_SIZE,
38199 + RELATIVE_ADDR_SIZE);
38200 +
38201 + insn_buf[0] = RELATIVEJUMP_OPCODE;
38202 +diff -urNp linux-3.0.8/arch/x86/kernel/kvm.c linux-3.0.8/arch/x86/kernel/kvm.c
38203 +--- linux-3.0.8/arch/x86/kernel/kvm.c 2011-07-21 22:17:23.000000000 -0400
38204 ++++ linux-3.0.8/arch/x86/kernel/kvm.c 2011-08-24 18:10:12.000000000 -0400
38205 +@@ -426,6 +426,7 @@ static void __init paravirt_ops_setup(vo
38206 pv_mmu_ops.set_pud = kvm_set_pud;
38207 #if PAGETABLE_LEVELS == 4
38208 pv_mmu_ops.set_pgd = kvm_set_pgd;
38209 @@ -16151,10 +14485,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/kvm.c linux-2.6.32.48/arch/x86/kernel
38210 #endif
38211 #endif
38212 pv_mmu_ops.flush_tlb_user = kvm_flush_tlb;
38213 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ldt.c linux-2.6.32.48/arch/x86/kernel/ldt.c
38214 ---- linux-2.6.32.48/arch/x86/kernel/ldt.c 2009-12-02 22:51:21.000000000 -0500
38215 -+++ linux-2.6.32.48/arch/x86/kernel/ldt.c 2011-11-12 12:46:42.000000000 -0500
38216 -@@ -66,13 +66,13 @@ static int alloc_ldt(mm_context_t *pc, i
38217 +diff -urNp linux-3.0.8/arch/x86/kernel/ldt.c linux-3.0.8/arch/x86/kernel/ldt.c
38218 +--- linux-3.0.8/arch/x86/kernel/ldt.c 2011-07-21 22:17:23.000000000 -0400
38219 ++++ linux-3.0.8/arch/x86/kernel/ldt.c 2011-08-23 21:47:55.000000000 -0400
38220 +@@ -67,13 +67,13 @@ static int alloc_ldt(mm_context_t *pc, i
38221 if (reload) {
38222 #ifdef CONFIG_SMP
38223 preempt_disable();
38224 @@ -16170,7 +14504,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ldt.c linux-2.6.32.48/arch/x86/kernel
38225 #endif
38226 }
38227 if (oldsize) {
38228 -@@ -94,7 +94,7 @@ static inline int copy_ldt(mm_context_t
38229 +@@ -95,7 +95,7 @@ static inline int copy_ldt(mm_context_t
38230 return err;
38231
38232 for (i = 0; i < old->size; i++)
38233 @@ -16179,7 +14513,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ldt.c linux-2.6.32.48/arch/x86/kernel
38234 return 0;
38235 }
38236
38237 -@@ -115,6 +115,24 @@ int init_new_context(struct task_struct
38238 +@@ -116,6 +116,24 @@ int init_new_context(struct task_struct
38239 retval = copy_ldt(&mm->context, &old_mm->context);
38240 mutex_unlock(&old_mm->context.lock);
38241 }
38242 @@ -16204,7 +14538,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ldt.c linux-2.6.32.48/arch/x86/kernel
38243 return retval;
38244 }
38245
38246 -@@ -229,6 +247,13 @@ static int write_ldt(void __user *ptr, u
38247 +@@ -230,6 +248,13 @@ static int write_ldt(void __user *ptr, u
38248 }
38249 }
38250
38251 @@ -16218,19 +14552,19 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ldt.c linux-2.6.32.48/arch/x86/kernel
38252 fill_ldt(&ldt, &ldt_info);
38253 if (oldmode)
38254 ldt.avl = 0;
38255 -diff -urNp linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c
38256 ---- linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c 2009-12-02 22:51:21.000000000 -0500
38257 -+++ linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c 2011-11-12 12:46:42.000000000 -0500
38258 -@@ -26,7 +26,7 @@
38259 - #include <asm/system.h>
38260 +diff -urNp linux-3.0.8/arch/x86/kernel/machine_kexec_32.c linux-3.0.8/arch/x86/kernel/machine_kexec_32.c
38261 +--- linux-3.0.8/arch/x86/kernel/machine_kexec_32.c 2011-07-21 22:17:23.000000000 -0400
38262 ++++ linux-3.0.8/arch/x86/kernel/machine_kexec_32.c 2011-08-23 21:47:55.000000000 -0400
38263 +@@ -27,7 +27,7 @@
38264 #include <asm/cacheflush.h>
38265 + #include <asm/debugreg.h>
38266
38267 -static void set_idt(void *newidt, __u16 limit)
38268 +static void set_idt(struct desc_struct *newidt, __u16 limit)
38269 {
38270 struct desc_ptr curidt;
38271
38272 -@@ -38,7 +38,7 @@ static void set_idt(void *newidt, __u16
38273 +@@ -39,7 +39,7 @@ static void set_idt(void *newidt, __u16
38274 }
38275
38276
38277 @@ -16248,43 +14582,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/machine_kexec_32.c linux-2.6.32.48/ar
38278
38279 relocate_kernel_ptr = control_page;
38280 page_list[PA_CONTROL_PAGE] = __pa(control_page);
38281 -diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_amd.c linux-2.6.32.48/arch/x86/kernel/microcode_amd.c
38282 ---- linux-2.6.32.48/arch/x86/kernel/microcode_amd.c 2011-11-12 12:44:28.000000000 -0500
38283 -+++ linux-2.6.32.48/arch/x86/kernel/microcode_amd.c 2011-11-12 12:46:42.000000000 -0500
38284 -@@ -364,7 +364,7 @@ static void microcode_fini_cpu_amd(int c
38285 - uci->mc = NULL;
38286 - }
38287 -
38288 --static struct microcode_ops microcode_amd_ops = {
38289 -+static const struct microcode_ops microcode_amd_ops = {
38290 - .request_microcode_user = request_microcode_user,
38291 - .request_microcode_fw = request_microcode_fw,
38292 - .collect_cpu_info = collect_cpu_info_amd,
38293 -@@ -372,7 +372,7 @@ static struct microcode_ops microcode_am
38294 - .microcode_fini_cpu = microcode_fini_cpu_amd,
38295 - };
38296 -
38297 --struct microcode_ops * __init init_amd_microcode(void)
38298 -+const struct microcode_ops * __init init_amd_microcode(void)
38299 - {
38300 - return &microcode_amd_ops;
38301 - }
38302 -diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_core.c linux-2.6.32.48/arch/x86/kernel/microcode_core.c
38303 ---- linux-2.6.32.48/arch/x86/kernel/microcode_core.c 2009-12-02 22:51:21.000000000 -0500
38304 -+++ linux-2.6.32.48/arch/x86/kernel/microcode_core.c 2011-11-12 12:46:42.000000000 -0500
38305 -@@ -90,7 +90,7 @@ MODULE_LICENSE("GPL");
38306 -
38307 - #define MICROCODE_VERSION "2.00"
38308 -
38309 --static struct microcode_ops *microcode_ops;
38310 -+static const struct microcode_ops *microcode_ops;
38311 -
38312 - /*
38313 - * Synchronization.
38314 -diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_intel.c linux-2.6.32.48/arch/x86/kernel/microcode_intel.c
38315 ---- linux-2.6.32.48/arch/x86/kernel/microcode_intel.c 2009-12-02 22:51:21.000000000 -0500
38316 -+++ linux-2.6.32.48/arch/x86/kernel/microcode_intel.c 2011-11-12 12:46:42.000000000 -0500
38317 -@@ -443,13 +443,13 @@ static enum ucode_state request_microcod
38318 +diff -urNp linux-3.0.8/arch/x86/kernel/microcode_intel.c linux-3.0.8/arch/x86/kernel/microcode_intel.c
38319 +--- linux-3.0.8/arch/x86/kernel/microcode_intel.c 2011-07-21 22:17:23.000000000 -0400
38320 ++++ linux-3.0.8/arch/x86/kernel/microcode_intel.c 2011-10-06 04:17:55.000000000 -0400
38321 +@@ -440,13 +440,13 @@ static enum ucode_state request_microcod
38322
38323 static int get_ucode_user(void *to, const void *from, size_t n)
38324 {
38325 @@ -16300,45 +14601,24 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/microcode_intel.c linux-2.6.32.48/arc
38326 }
38327
38328 static void microcode_fini_cpu(int cpu)
38329 -@@ -460,7 +460,7 @@ static void microcode_fini_cpu(int cpu)
38330 - uci->mc = NULL;
38331 - }
38332 -
38333 --static struct microcode_ops microcode_intel_ops = {
38334 -+static const struct microcode_ops microcode_intel_ops = {
38335 - .request_microcode_user = request_microcode_user,
38336 - .request_microcode_fw = request_microcode_fw,
38337 - .collect_cpu_info = collect_cpu_info,
38338 -@@ -468,7 +468,7 @@ static struct microcode_ops microcode_in
38339 - .microcode_fini_cpu = microcode_fini_cpu,
38340 - };
38341 -
38342 --struct microcode_ops * __init init_intel_microcode(void)
38343 -+const struct microcode_ops * __init init_intel_microcode(void)
38344 - {
38345 - return &microcode_intel_ops;
38346 - }
38347 -diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/kernel/module.c
38348 ---- linux-2.6.32.48/arch/x86/kernel/module.c 2009-12-02 22:51:21.000000000 -0500
38349 -+++ linux-2.6.32.48/arch/x86/kernel/module.c 2011-11-12 12:46:42.000000000 -0500
38350 -@@ -34,7 +34,7 @@
38351 +diff -urNp linux-3.0.8/arch/x86/kernel/module.c linux-3.0.8/arch/x86/kernel/module.c
38352 +--- linux-3.0.8/arch/x86/kernel/module.c 2011-07-21 22:17:23.000000000 -0400
38353 ++++ linux-3.0.8/arch/x86/kernel/module.c 2011-08-23 21:47:55.000000000 -0400
38354 +@@ -36,21 +36,66 @@
38355 #define DEBUGP(fmt...)
38356 #endif
38357
38358 -void *module_alloc(unsigned long size)
38359 -+static void *__module_alloc(unsigned long size, pgprot_t prot)
38360 ++static inline void *__module_alloc(unsigned long size, pgprot_t prot)
38361 {
38362 - struct vm_struct *area;
38363 -
38364 -@@ -48,8 +48,18 @@ void *module_alloc(unsigned long size)
38365 - if (!area)
38366 + if (PAGE_ALIGN(size) > MODULES_LEN)
38367 return NULL;
38368 + return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END,
38369 +- GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC,
38370 ++ GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, prot,
38371 + -1, __builtin_return_address(0));
38372 + }
38373
38374 -- return __vmalloc_area(area, GFP_KERNEL | __GFP_HIGHMEM,
38375 -- PAGE_KERNEL_EXEC);
38376 -+ return __vmalloc_area(area, GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, prot);
38377 -+}
38378 -+
38379 +void *module_alloc(unsigned long size)
38380 +{
38381 +
38382 @@ -16348,10 +14628,11 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/ker
38383 + return __module_alloc(size, PAGE_KERNEL_EXEC);
38384 +#endif
38385 +
38386 - }
38387 -
38388 ++}
38389 ++
38390 /* Free memory returned from module_alloc */
38391 -@@ -58,6 +68,40 @@ void module_free(struct module *mod, voi
38392 + void module_free(struct module *mod, void *module_region)
38393 + {
38394 vfree(module_region);
38395 }
38396
38397 @@ -16392,7 +14673,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/ker
38398 /* We don't need anything special. */
38399 int module_frob_arch_sections(Elf_Ehdr *hdr,
38400 Elf_Shdr *sechdrs,
38401 -@@ -77,14 +121,16 @@ int apply_relocate(Elf32_Shdr *sechdrs,
38402 +@@ -70,14 +115,16 @@ int apply_relocate(Elf32_Shdr *sechdrs,
38403 unsigned int i;
38404 Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr;
38405 Elf32_Sym *sym;
38406 @@ -16412,7 +14693,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/ker
38407 /* This is the symbol it is referring to. Note that all
38408 undefined symbols have been resolved. */
38409 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
38410 -@@ -93,11 +139,15 @@ int apply_relocate(Elf32_Shdr *sechdrs,
38411 +@@ -86,11 +133,15 @@ int apply_relocate(Elf32_Shdr *sechdrs,
38412 switch (ELF32_R_TYPE(rel[i].r_info)) {
38413 case R_386_32:
38414 /* We add the value into the location given */
38415 @@ -16430,7 +14711,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/ker
38416 break;
38417 default:
38418 printk(KERN_ERR "module %s: Unknown relocation: %u\n",
38419 -@@ -153,21 +203,30 @@ int apply_relocate_add(Elf64_Shdr *sechd
38420 +@@ -146,21 +197,30 @@ int apply_relocate_add(Elf64_Shdr *sechd
38421 case R_X86_64_NONE:
38422 break;
38423 case R_X86_64_64:
38424 @@ -16461,9 +14742,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/module.c linux-2.6.32.48/arch/x86/ker
38425 #if 0
38426 if ((s64)val != *(s32 *)loc)
38427 goto overflow;
38428 -diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/kernel/paravirt.c
38429 ---- linux-2.6.32.48/arch/x86/kernel/paravirt.c 2009-12-02 22:51:21.000000000 -0500
38430 -+++ linux-2.6.32.48/arch/x86/kernel/paravirt.c 2011-11-12 12:46:42.000000000 -0500
38431 +diff -urNp linux-3.0.8/arch/x86/kernel/paravirt.c linux-3.0.8/arch/x86/kernel/paravirt.c
38432 +--- linux-3.0.8/arch/x86/kernel/paravirt.c 2011-07-21 22:17:23.000000000 -0400
38433 ++++ linux-3.0.8/arch/x86/kernel/paravirt.c 2011-08-23 21:48:14.000000000 -0400
38434 @@ -53,6 +53,9 @@ u64 _paravirt_ident_64(u64 x)
38435 {
38436 return x;
38437 @@ -16483,16 +14764,17 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38438 .pv_init_ops = pv_init_ops,
38439 .pv_time_ops = pv_time_ops,
38440 .pv_cpu_ops = pv_cpu_ops,
38441 -@@ -133,6 +136,8 @@ static void *get_call_destination(u8 typ
38442 +@@ -133,6 +136,9 @@ static void *get_call_destination(u8 typ
38443 .pv_lock_ops = pv_lock_ops,
38444 #endif
38445 };
38446 +
38447 + pax_track_stack();
38448 ++
38449 return *((void **)&tmpl + type);
38450 }
38451
38452 -@@ -145,15 +150,19 @@ unsigned paravirt_patch_default(u8 type,
38453 +@@ -145,15 +151,19 @@ unsigned paravirt_patch_default(u8 type,
38454 if (opfunc == NULL)
38455 /* If there's no function, patch it with a ud2a (BUG) */
38456 ret = paravirt_patch_insns(insnbuf, len, ud2a, ud2a+sizeof(ud2a));
38457 @@ -16507,15 +14789,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38458 ret = paravirt_patch_ident_32(insnbuf, len);
38459 - else if (opfunc == _paravirt_ident_64)
38460 + else if (opfunc == (void *)_paravirt_ident_64)
38461 -+ ret = paravirt_patch_ident_64(insnbuf, len);
38462 + ret = paravirt_patch_ident_64(insnbuf, len);
38463 +#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
38464 + else if (opfunc == (void *)__raw_callee_save__paravirt_ident_64)
38465 - ret = paravirt_patch_ident_64(insnbuf, len);
38466 ++ ret = paravirt_patch_ident_64(insnbuf, len);
38467 +#endif
38468
38469 else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
38470 type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) ||
38471 -@@ -178,7 +187,7 @@ unsigned paravirt_patch_insns(void *insn
38472 +@@ -178,7 +188,7 @@ unsigned paravirt_patch_insns(void *insn
38473 if (insn_len > len || start == NULL)
38474 insn_len = len;
38475 else
38476 @@ -16524,7 +14806,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38477
38478 return insn_len;
38479 }
38480 -@@ -294,22 +303,22 @@ void arch_flush_lazy_mmu_mode(void)
38481 +@@ -294,22 +304,22 @@ void arch_flush_lazy_mmu_mode(void)
38482 preempt_enable();
38483 }
38484
38485 @@ -16551,7 +14833,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38486 .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
38487 .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
38488 .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
38489 -@@ -321,7 +330,7 @@ struct pv_irq_ops pv_irq_ops = {
38490 +@@ -321,7 +331,7 @@ struct pv_irq_ops pv_irq_ops = {
38491 #endif
38492 };
38493
38494 @@ -16560,7 +14842,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38495 .cpuid = native_cpuid,
38496 .get_debugreg = native_get_debugreg,
38497 .set_debugreg = native_set_debugreg,
38498 -@@ -382,21 +391,26 @@ struct pv_cpu_ops pv_cpu_ops = {
38499 +@@ -382,21 +392,26 @@ struct pv_cpu_ops pv_cpu_ops = {
38500 .end_context_switch = paravirt_nop,
38501 };
38502
38503 @@ -16590,7 +14872,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38504
38505 .read_cr2 = native_read_cr2,
38506 .write_cr2 = native_write_cr2,
38507 -@@ -448,6 +462,7 @@ struct pv_mmu_ops pv_mmu_ops = {
38508 +@@ -446,6 +461,7 @@ struct pv_mmu_ops pv_mmu_ops = {
38509 .make_pud = PTE_IDENT,
38510
38511 .set_pgd = native_set_pgd,
38512 @@ -16598,7 +14880,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38513 #endif
38514 #endif /* PAGETABLE_LEVELS >= 3 */
38515
38516 -@@ -467,6 +482,12 @@ struct pv_mmu_ops pv_mmu_ops = {
38517 +@@ -465,6 +481,12 @@ struct pv_mmu_ops pv_mmu_ops = {
38518 },
38519
38520 .set_fixmap = native_set_fixmap,
38521 @@ -16611,11 +14893,11 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt.c linux-2.6.32.48/arch/x86/k
38522 };
38523
38524 EXPORT_SYMBOL_GPL(pv_time_ops);
38525 -diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c
38526 ---- linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c 2009-12-02 22:51:21.000000000 -0500
38527 -+++ linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c 2011-11-12 12:46:42.000000000 -0500
38528 -@@ -13,7 +13,7 @@ default_spin_lock_flags(raw_spinlock_t *
38529 - __raw_spin_lock(lock);
38530 +diff -urNp linux-3.0.8/arch/x86/kernel/paravirt-spinlocks.c linux-3.0.8/arch/x86/kernel/paravirt-spinlocks.c
38531 +--- linux-3.0.8/arch/x86/kernel/paravirt-spinlocks.c 2011-07-21 22:17:23.000000000 -0400
38532 ++++ linux-3.0.8/arch/x86/kernel/paravirt-spinlocks.c 2011-08-23 21:47:55.000000000 -0400
38533 +@@ -13,7 +13,7 @@ default_spin_lock_flags(arch_spinlock_t
38534 + arch_spin_lock(lock);
38535 }
38536
38537 -struct pv_lock_ops pv_lock_ops = {
38538 @@ -16623,79 +14905,31 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.32.48/
38539 #ifdef CONFIG_SMP
38540 .spin_is_locked = __ticket_spin_is_locked,
38541 .spin_is_contended = __ticket_spin_is_contended,
38542 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c
38543 ---- linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c 2011-11-12 12:44:28.000000000 -0500
38544 -+++ linux-2.6.32.48/arch/x86/kernel/pci-calgary_64.c 2011-11-12 12:46:42.000000000 -0500
38545 -@@ -477,7 +477,7 @@ static void calgary_free_coherent(struct
38546 - free_pages((unsigned long)vaddr, get_order(size));
38547 - }
38548 -
38549 --static struct dma_map_ops calgary_dma_ops = {
38550 -+static const struct dma_map_ops calgary_dma_ops = {
38551 - .alloc_coherent = calgary_alloc_coherent,
38552 - .free_coherent = calgary_free_coherent,
38553 - .map_sg = calgary_map_sg,
38554 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-dma.c linux-2.6.32.48/arch/x86/kernel/pci-dma.c
38555 ---- linux-2.6.32.48/arch/x86/kernel/pci-dma.c 2011-11-12 12:44:28.000000000 -0500
38556 -+++ linux-2.6.32.48/arch/x86/kernel/pci-dma.c 2011-11-12 12:46:42.000000000 -0500
38557 -@@ -14,7 +14,7 @@
38558 -
38559 - static int forbid_dac __read_mostly;
38560 -
38561 --struct dma_map_ops *dma_ops;
38562 -+const struct dma_map_ops *dma_ops;
38563 - EXPORT_SYMBOL(dma_ops);
38564 -
38565 - static int iommu_sac_force __read_mostly;
38566 -@@ -243,7 +243,7 @@ early_param("iommu", iommu_setup);
38567 -
38568 - int dma_supported(struct device *dev, u64 mask)
38569 - {
38570 -- struct dma_map_ops *ops = get_dma_ops(dev);
38571 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
38572 -
38573 - #ifdef CONFIG_PCI
38574 - if (mask > 0xffffffff && forbid_dac > 0) {
38575 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c
38576 ---- linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c 2011-11-12 12:44:28.000000000 -0500
38577 -+++ linux-2.6.32.48/arch/x86/kernel/pci-gart_64.c 2011-11-12 12:46:42.000000000 -0500
38578 -@@ -682,7 +682,7 @@ static __init int init_k8_gatt(struct ag
38579 - return -1;
38580 - }
38581 +diff -urNp linux-3.0.8/arch/x86/kernel/pci-iommu_table.c linux-3.0.8/arch/x86/kernel/pci-iommu_table.c
38582 +--- linux-3.0.8/arch/x86/kernel/pci-iommu_table.c 2011-07-21 22:17:23.000000000 -0400
38583 ++++ linux-3.0.8/arch/x86/kernel/pci-iommu_table.c 2011-08-23 21:48:14.000000000 -0400
38584 +@@ -2,7 +2,7 @@
38585 + #include <asm/iommu_table.h>
38586 + #include <linux/string.h>
38587 + #include <linux/kallsyms.h>
38588 +-
38589 ++#include <linux/sched.h>
38590 +
38591 + #define DEBUG 1
38592 +
38593 +@@ -51,6 +51,8 @@ void __init check_iommu_entries(struct i
38594 + {
38595 + struct iommu_table_entry *p, *q, *x;
38596
38597 --static struct dma_map_ops gart_dma_ops = {
38598 -+static const struct dma_map_ops gart_dma_ops = {
38599 - .map_sg = gart_map_sg,
38600 - .unmap_sg = gart_unmap_sg,
38601 - .map_page = gart_map_page,
38602 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-nommu.c linux-2.6.32.48/arch/x86/kernel/pci-nommu.c
38603 ---- linux-2.6.32.48/arch/x86/kernel/pci-nommu.c 2009-12-02 22:51:21.000000000 -0500
38604 -+++ linux-2.6.32.48/arch/x86/kernel/pci-nommu.c 2011-11-12 12:46:42.000000000 -0500
38605 -@@ -94,7 +94,7 @@ static void nommu_sync_sg_for_device(str
38606 - flush_write_buffers();
38607 - }
38608 -
38609 --struct dma_map_ops nommu_dma_ops = {
38610 -+const struct dma_map_ops nommu_dma_ops = {
38611 - .alloc_coherent = dma_generic_alloc_coherent,
38612 - .free_coherent = nommu_free_coherent,
38613 - .map_sg = nommu_map_sg,
38614 -diff -urNp linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c
38615 ---- linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c 2009-12-02 22:51:21.000000000 -0500
38616 -+++ linux-2.6.32.48/arch/x86/kernel/pci-swiotlb.c 2011-11-12 12:46:42.000000000 -0500
38617 -@@ -25,7 +25,7 @@ static void *x86_swiotlb_alloc_coherent(
38618 - return swiotlb_alloc_coherent(hwdev, size, dma_handle, flags);
38619 - }
38620 -
38621 --static struct dma_map_ops swiotlb_dma_ops = {
38622 -+static const struct dma_map_ops swiotlb_dma_ops = {
38623 - .mapping_error = swiotlb_dma_mapping_error,
38624 - .alloc_coherent = x86_swiotlb_alloc_coherent,
38625 - .free_coherent = swiotlb_free_coherent,
38626 -diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86/kernel/process_32.c
38627 ---- linux-2.6.32.48/arch/x86/kernel/process_32.c 2011-11-12 12:44:28.000000000 -0500
38628 -+++ linux-2.6.32.48/arch/x86/kernel/process_32.c 2011-11-12 12:46:42.000000000 -0500
38629 -@@ -67,6 +67,7 @@ asmlinkage void ret_from_fork(void) __as
38630 ++ pax_track_stack();
38631 ++
38632 + /* Simple cyclic dependency checker. */
38633 + for (p = start; p < finish; p++) {
38634 + q = find_dependents_of(start, finish, p);
38635 +diff -urNp linux-3.0.8/arch/x86/kernel/process_32.c linux-3.0.8/arch/x86/kernel/process_32.c
38636 +--- linux-3.0.8/arch/x86/kernel/process_32.c 2011-07-21 22:17:23.000000000 -0400
38637 ++++ linux-3.0.8/arch/x86/kernel/process_32.c 2011-08-23 21:47:55.000000000 -0400
38638 +@@ -65,6 +65,7 @@ asmlinkage void ret_from_fork(void) __as
38639 unsigned long thread_saved_pc(struct task_struct *tsk)
38640 {
38641 return ((unsigned long *)tsk->thread.sp)[3];
38642 @@ -16703,9 +14937,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
38643 }
38644
38645 #ifndef CONFIG_SMP
38646 -@@ -129,15 +130,14 @@ void __show_regs(struct pt_regs *regs, i
38647 +@@ -126,15 +127,14 @@ void __show_regs(struct pt_regs *regs, i
38648 + unsigned long sp;
38649 unsigned short ss, gs;
38650 - const char *board;
38651
38652 - if (user_mode_vm(regs)) {
38653 + if (user_mode(regs)) {
38654 @@ -16713,29 +14947,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
38655 ss = regs->ss & 0xffff;
38656 - gs = get_user_gs(regs);
38657 } else {
38658 - sp = (unsigned long) (&regs->sp);
38659 + sp = kernel_stack_pointer(regs);
38660 savesegment(ss, ss);
38661 - savesegment(gs, gs);
38662 }
38663 + gs = get_user_gs(regs);
38664
38665 - printk("\n");
38666 -
38667 -@@ -210,10 +210,10 @@ int kernel_thread(int (*fn)(void *), voi
38668 - regs.bx = (unsigned long) fn;
38669 - regs.dx = (unsigned long) arg;
38670 + show_regs_common();
38671
38672 -- regs.ds = __USER_DS;
38673 -- regs.es = __USER_DS;
38674 -+ regs.ds = __KERNEL_DS;
38675 -+ regs.es = __KERNEL_DS;
38676 - regs.fs = __KERNEL_PERCPU;
38677 -- regs.gs = __KERNEL_STACK_CANARY;
38678 -+ savesegment(gs, regs.gs);
38679 - regs.orig_ax = -1;
38680 - regs.ip = (unsigned long) kernel_thread_helper;
38681 - regs.cs = __KERNEL_CS | get_kernel_rpl();
38682 -@@ -247,13 +247,14 @@ int copy_thread(unsigned long clone_flag
38683 +@@ -196,13 +196,14 @@ int copy_thread(unsigned long clone_flag
38684 struct task_struct *tsk;
38685 int err;
38686
38687 @@ -16751,7 +14971,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
38688
38689 p->thread.ip = (unsigned long) ret_from_fork;
38690
38691 -@@ -345,7 +346,7 @@ __switch_to(struct task_struct *prev_p,
38692 +@@ -292,7 +293,7 @@ __switch_to(struct task_struct *prev_p,
38693 struct thread_struct *prev = &prev_p->thread,
38694 *next = &next_p->thread;
38695 int cpu = smp_processor_id();
38696 @@ -16760,7 +14980,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
38697 bool preload_fpu;
38698
38699 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
38700 -@@ -380,6 +381,10 @@ __switch_to(struct task_struct *prev_p,
38701 +@@ -327,6 +328,10 @@ __switch_to(struct task_struct *prev_p,
38702 */
38703 lazy_save_gs(prev->gs);
38704
38705 @@ -16771,7 +14991,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
38706 /*
38707 * Load the per-thread Thread-Local Storage descriptor.
38708 */
38709 -@@ -415,6 +420,9 @@ __switch_to(struct task_struct *prev_p,
38710 +@@ -362,6 +367,9 @@ __switch_to(struct task_struct *prev_p,
38711 */
38712 arch_end_context_switch(next_p);
38713
38714 @@ -16781,7 +15001,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
38715 if (preload_fpu)
38716 __math_state_restore();
38717
38718 -@@ -424,8 +432,6 @@ __switch_to(struct task_struct *prev_p,
38719 +@@ -371,8 +379,6 @@ __switch_to(struct task_struct *prev_p,
38720 if (prev->gs | next->gs)
38721 lazy_load_gs(next->gs);
38722
38723 @@ -16790,15 +15010,15 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_32.c linux-2.6.32.48/arch/x86
38724 return prev_p;
38725 }
38726
38727 -@@ -495,4 +501,3 @@ unsigned long get_wchan(struct task_stru
38728 +@@ -402,4 +408,3 @@ unsigned long get_wchan(struct task_stru
38729 } while (count++ < 16);
38730 return 0;
38731 }
38732 -
38733 -diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86/kernel/process_64.c
38734 ---- linux-2.6.32.48/arch/x86/kernel/process_64.c 2011-11-12 12:44:28.000000000 -0500
38735 -+++ linux-2.6.32.48/arch/x86/kernel/process_64.c 2011-11-12 12:46:42.000000000 -0500
38736 -@@ -91,7 +91,7 @@ static void __exit_idle(void)
38737 +diff -urNp linux-3.0.8/arch/x86/kernel/process_64.c linux-3.0.8/arch/x86/kernel/process_64.c
38738 +--- linux-3.0.8/arch/x86/kernel/process_64.c 2011-07-21 22:17:23.000000000 -0400
38739 ++++ linux-3.0.8/arch/x86/kernel/process_64.c 2011-08-23 21:47:55.000000000 -0400
38740 +@@ -87,7 +87,7 @@ static void __exit_idle(void)
38741 void exit_idle(void)
38742 {
38743 /* idle loop has pid 0 */
38744 @@ -16807,16 +15027,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86
38745 return;
38746 __exit_idle();
38747 }
38748 -@@ -170,7 +170,7 @@ void __show_regs(struct pt_regs *regs, i
38749 - if (!board)
38750 - board = "";
38751 - printk(KERN_INFO "Pid: %d, comm: %.20s %s %s %.*s %s\n",
38752 -- current->pid, current->comm, print_tainted(),
38753 -+ task_pid_nr(current), current->comm, print_tainted(),
38754 - init_utsname()->release,
38755 - (int)strcspn(init_utsname()->version, " "),
38756 - init_utsname()->version, board);
38757 -@@ -280,8 +280,7 @@ int copy_thread(unsigned long clone_flag
38758 +@@ -260,8 +260,7 @@ int copy_thread(unsigned long clone_flag
38759 struct pt_regs *childregs;
38760 struct task_struct *me = current;
38761
38762 @@ -16826,7 +15037,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86
38763 *childregs = *regs;
38764
38765 childregs->ax = 0;
38766 -@@ -292,6 +291,7 @@ int copy_thread(unsigned long clone_flag
38767 +@@ -273,6 +272,7 @@ int copy_thread(unsigned long clone_flag
38768 p->thread.sp = (unsigned long) childregs;
38769 p->thread.sp0 = (unsigned long) (childregs+1);
38770 p->thread.usersp = me->thread.usersp;
38771 @@ -16834,7 +15045,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86
38772
38773 set_tsk_thread_flag(p, TIF_FORK);
38774
38775 -@@ -379,7 +379,7 @@ __switch_to(struct task_struct *prev_p,
38776 +@@ -375,7 +375,7 @@ __switch_to(struct task_struct *prev_p,
38777 struct thread_struct *prev = &prev_p->thread;
38778 struct thread_struct *next = &next_p->thread;
38779 int cpu = smp_processor_id();
38780 @@ -16843,7 +15054,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86
38781 unsigned fsindex, gsindex;
38782 bool preload_fpu;
38783
38784 -@@ -475,10 +475,9 @@ __switch_to(struct task_struct *prev_p,
38785 +@@ -471,10 +471,9 @@ __switch_to(struct task_struct *prev_p,
38786 prev->usersp = percpu_read(old_rsp);
38787 percpu_write(old_rsp, next->usersp);
38788 percpu_write(current_task, next_p);
38789 @@ -16856,7 +15067,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86
38790
38791 /*
38792 * Now maybe reload the debug registers and handle I/O bitmaps
38793 -@@ -559,12 +558,11 @@ unsigned long get_wchan(struct task_stru
38794 +@@ -536,12 +535,11 @@ unsigned long get_wchan(struct task_stru
38795 if (!p || p == current || p->state == TASK_RUNNING)
38796 return 0;
38797 stack = (unsigned long)task_stack_page(p);
38798 @@ -16871,10 +15082,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process_64.c linux-2.6.32.48/arch/x86
38799 return 0;
38800 ip = *(u64 *)(fp+8);
38801 if (!in_sched_functions(ip))
38802 -diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/kernel/process.c
38803 ---- linux-2.6.32.48/arch/x86/kernel/process.c 2011-11-12 12:44:28.000000000 -0500
38804 -+++ linux-2.6.32.48/arch/x86/kernel/process.c 2011-11-12 12:46:42.000000000 -0500
38805 -@@ -51,16 +51,33 @@ void free_thread_xstate(struct task_stru
38806 +diff -urNp linux-3.0.8/arch/x86/kernel/process.c linux-3.0.8/arch/x86/kernel/process.c
38807 +--- linux-3.0.8/arch/x86/kernel/process.c 2011-07-21 22:17:23.000000000 -0400
38808 ++++ linux-3.0.8/arch/x86/kernel/process.c 2011-08-30 18:23:52.000000000 -0400
38809 +@@ -48,16 +48,33 @@ void free_thread_xstate(struct task_stru
38810
38811 void free_thread_info(struct thread_info *ti)
38812 {
38813 @@ -16900,9 +15111,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/ke
38814 + SLAB_PANIC | SLAB_NOTRACK | SLAB_USERCOPY, NULL);
38815 +}
38816 +
38817 -+struct task_struct *alloc_task_struct(void)
38818 ++struct task_struct *alloc_task_struct_node(int node)
38819 +{
38820 -+ return kmem_cache_alloc(task_struct_cachep, GFP_KERNEL);
38821 ++ return kmem_cache_alloc_node(task_struct_cachep, GFP_KERNEL, node);
38822 +}
38823 +
38824 +void free_task_struct(struct task_struct *task)
38825 @@ -16912,7 +15123,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/ke
38826 }
38827
38828 /*
38829 -@@ -73,7 +90,7 @@ void exit_thread(void)
38830 +@@ -70,7 +87,7 @@ void exit_thread(void)
38831 unsigned long *bp = t->io_bitmap_ptr;
38832
38833 if (bp) {
38834 @@ -16921,17 +15132,40 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/ke
38835
38836 t->io_bitmap_ptr = NULL;
38837 clear_thread_flag(TIF_IO_BITMAP);
38838 -@@ -93,6 +110,9 @@ void flush_thread(void)
38839 +@@ -106,7 +123,7 @@ void show_regs_common(void)
38840
38841 - clear_tsk_thread_flag(tsk, TIF_DEBUG);
38842 + printk(KERN_CONT "\n");
38843 + printk(KERN_DEFAULT "Pid: %d, comm: %.20s %s %s %.*s",
38844 +- current->pid, current->comm, print_tainted(),
38845 ++ task_pid_nr(current), current->comm, print_tainted(),
38846 + init_utsname()->release,
38847 + (int)strcspn(init_utsname()->version, " "),
38848 + init_utsname()->version);
38849 +@@ -120,6 +137,9 @@ void flush_thread(void)
38850 + {
38851 + struct task_struct *tsk = current;
38852
38853 +#if defined(CONFIG_X86_32) && !defined(CONFIG_CC_STACKPROTECTOR) && !defined(CONFIG_PAX_MEMORY_UDEREF)
38854 + loadsegment(gs, 0);
38855 +#endif
38856 - tsk->thread.debugreg0 = 0;
38857 - tsk->thread.debugreg1 = 0;
38858 - tsk->thread.debugreg2 = 0;
38859 -@@ -307,7 +327,7 @@ void default_idle(void)
38860 + flush_ptrace_hw_breakpoint(tsk);
38861 + memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
38862 + /*
38863 +@@ -282,10 +302,10 @@ int kernel_thread(int (*fn)(void *), voi
38864 + regs.di = (unsigned long) arg;
38865 +
38866 + #ifdef CONFIG_X86_32
38867 +- regs.ds = __USER_DS;
38868 +- regs.es = __USER_DS;
38869 ++ regs.ds = __KERNEL_DS;
38870 ++ regs.es = __KERNEL_DS;
38871 + regs.fs = __KERNEL_PERCPU;
38872 +- regs.gs = __KERNEL_STACK_CANARY;
38873 ++ savesegment(gs, regs.gs);
38874 + #else
38875 + regs.ss = __KERNEL_DS;
38876 + #endif
38877 +@@ -403,7 +423,7 @@ void default_idle(void)
38878 EXPORT_SYMBOL(default_idle);
38879 #endif
38880
38881 @@ -16940,7 +15174,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/ke
38882 {
38883 local_irq_disable();
38884 /*
38885 -@@ -568,16 +588,38 @@ static int __init idle_setup(char *str)
38886 +@@ -668,16 +688,37 @@ static int __init idle_setup(char *str)
38887 }
38888 early_param("idle", idle_setup);
38889
38890 @@ -16959,12 +15193,13 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/ke
38891 -{
38892 - unsigned long range_end = mm->brk + 0x02000000;
38893 - return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
38894 +-}
38895 + if (!randomize_va_space)
38896 + return;
38897 +
38898 + if (v8086_mode(regs))
38899 + return;
38900 -+
38901 +
38902 + rdtscl(time);
38903 +
38904 + /* P4 seems to return a 0 LSB, ignore it */
38905 @@ -16985,14 +15220,13 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/process.c linux-2.6.32.48/arch/x86/ke
38906 +#ifdef CONFIG_X86_64
38907 + percpu_write(kernel_stack, thread->sp0);
38908 +#endif
38909 - }
38910 ++}
38911 +#endif
38912 -
38913 -diff -urNp linux-2.6.32.48/arch/x86/kernel/ptrace.c linux-2.6.32.48/arch/x86/kernel/ptrace.c
38914 ---- linux-2.6.32.48/arch/x86/kernel/ptrace.c 2011-11-12 12:44:28.000000000 -0500
38915 -+++ linux-2.6.32.48/arch/x86/kernel/ptrace.c 2011-11-12 12:46:42.000000000 -0500
38916 -@@ -925,7 +925,7 @@ static const struct user_regset_view use
38917 - long arch_ptrace(struct task_struct *child, long request, long addr, long data)
38918 +diff -urNp linux-3.0.8/arch/x86/kernel/ptrace.c linux-3.0.8/arch/x86/kernel/ptrace.c
38919 +--- linux-3.0.8/arch/x86/kernel/ptrace.c 2011-07-21 22:17:23.000000000 -0400
38920 ++++ linux-3.0.8/arch/x86/kernel/ptrace.c 2011-08-23 21:47:55.000000000 -0400
38921 +@@ -821,7 +821,7 @@ long arch_ptrace(struct task_struct *chi
38922 + unsigned long addr, unsigned long data)
38923 {
38924 int ret;
38925 - unsigned long __user *datap = (unsigned long __user *)data;
38926 @@ -17000,171 +15234,156 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/ptrace.c linux-2.6.32.48/arch/x86/ker
38927
38928 switch (request) {
38929 /* read the word at location addr in the USER area. */
38930 -@@ -1012,14 +1012,14 @@ long arch_ptrace(struct task_struct *chi
38931 - if (addr < 0)
38932 +@@ -906,14 +906,14 @@ long arch_ptrace(struct task_struct *chi
38933 + if ((int) addr < 0)
38934 return -EIO;
38935 ret = do_get_thread_area(child, addr,
38936 -- (struct user_desc __user *) data);
38937 -+ (__force struct user_desc __user *) data);
38938 +- (struct user_desc __user *)data);
38939 ++ (__force struct user_desc __user *) data);
38940 break;
38941
38942 case PTRACE_SET_THREAD_AREA:
38943 - if (addr < 0)
38944 + if ((int) addr < 0)
38945 return -EIO;
38946 ret = do_set_thread_area(child, addr,
38947 -- (struct user_desc __user *) data, 0);
38948 -+ (__force struct user_desc __user *) data, 0);
38949 +- (struct user_desc __user *)data, 0);
38950 ++ (__force struct user_desc __user *) data, 0);
38951 break;
38952 #endif
38953
38954 -@@ -1038,12 +1038,12 @@ long arch_ptrace(struct task_struct *chi
38955 - #ifdef CONFIG_X86_PTRACE_BTS
38956 - case PTRACE_BTS_CONFIG:
38957 - ret = ptrace_bts_config
38958 -- (child, data, (struct ptrace_bts_config __user *)addr);
38959 -+ (child, data, (__force struct ptrace_bts_config __user *)addr);
38960 - break;
38961 -
38962 - case PTRACE_BTS_STATUS:
38963 - ret = ptrace_bts_status
38964 -- (child, data, (struct ptrace_bts_config __user *)addr);
38965 -+ (child, data, (__force struct ptrace_bts_config __user *)addr);
38966 - break;
38967 -
38968 - case PTRACE_BTS_SIZE:
38969 -@@ -1052,7 +1052,7 @@ long arch_ptrace(struct task_struct *chi
38970 -
38971 - case PTRACE_BTS_GET:
38972 - ret = ptrace_bts_read_record
38973 -- (child, data, (struct bts_struct __user *) addr);
38974 -+ (child, data, (__force struct bts_struct __user *) addr);
38975 - break;
38976 -
38977 - case PTRACE_BTS_CLEAR:
38978 -@@ -1061,7 +1061,7 @@ long arch_ptrace(struct task_struct *chi
38979 -
38980 - case PTRACE_BTS_DRAIN:
38981 - ret = ptrace_bts_drain
38982 -- (child, data, (struct bts_struct __user *) addr);
38983 -+ (child, data, (__force struct bts_struct __user *) addr);
38984 - break;
38985 - #endif /* CONFIG_X86_PTRACE_BTS */
38986 +@@ -1330,7 +1330,7 @@ static void fill_sigtrap_info(struct tas
38987 + memset(info, 0, sizeof(*info));
38988 + info->si_signo = SIGTRAP;
38989 + info->si_code = si_code;
38990 +- info->si_addr = user_mode_vm(regs) ? (void __user *)regs->ip : NULL;
38991 ++ info->si_addr = user_mode(regs) ? (__force void __user *)regs->ip : NULL;
38992 + }
38993
38994 -@@ -1450,7 +1450,7 @@ void send_sigtrap(struct task_struct *ts
38995 - info.si_code = si_code;
38996 + void user_single_step_siginfo(struct task_struct *tsk,
38997 +diff -urNp linux-3.0.8/arch/x86/kernel/pvclock.c linux-3.0.8/arch/x86/kernel/pvclock.c
38998 +--- linux-3.0.8/arch/x86/kernel/pvclock.c 2011-07-21 22:17:23.000000000 -0400
38999 ++++ linux-3.0.8/arch/x86/kernel/pvclock.c 2011-08-23 21:47:55.000000000 -0400
39000 +@@ -81,11 +81,11 @@ unsigned long pvclock_tsc_khz(struct pvc
39001 + return pv_tsc_khz;
39002 + }
39003
39004 - /* User-mode ip? */
39005 -- info.si_addr = user_mode_vm(regs) ? (void __user *) regs->ip : NULL;
39006 -+ info.si_addr = user_mode(regs) ? (__force void __user *) regs->ip : NULL;
39007 +-static atomic64_t last_value = ATOMIC64_INIT(0);
39008 ++static atomic64_unchecked_t last_value = ATOMIC64_INIT(0);
39009
39010 - /* Send us the fake SIGTRAP */
39011 - force_sig_info(SIGTRAP, &info, tsk);
39012 -@@ -1469,7 +1469,7 @@ void send_sigtrap(struct task_struct *ts
39013 - * We must return the syscall number to actually look up in the table.
39014 - * This can be -1L to skip running any syscall at all.
39015 - */
39016 --asmregparm long syscall_trace_enter(struct pt_regs *regs)
39017 -+long syscall_trace_enter(struct pt_regs *regs)
39018 + void pvclock_resume(void)
39019 {
39020 - long ret = 0;
39021 -
39022 -@@ -1514,7 +1514,7 @@ asmregparm long syscall_trace_enter(stru
39023 - return ret ?: regs->orig_ax;
39024 +- atomic64_set(&last_value, 0);
39025 ++ atomic64_set_unchecked(&last_value, 0);
39026 }
39027
39028 --asmregparm void syscall_trace_leave(struct pt_regs *regs)
39029 -+void syscall_trace_leave(struct pt_regs *regs)
39030 - {
39031 - if (unlikely(current->audit_context))
39032 - audit_syscall_exit(AUDITSC_RESULT(regs->ax), regs->ax);
39033 -diff -urNp linux-2.6.32.48/arch/x86/kernel/reboot.c linux-2.6.32.48/arch/x86/kernel/reboot.c
39034 ---- linux-2.6.32.48/arch/x86/kernel/reboot.c 2011-11-12 12:44:28.000000000 -0500
39035 -+++ linux-2.6.32.48/arch/x86/kernel/reboot.c 2011-11-12 12:46:42.000000000 -0500
39036 -@@ -33,7 +33,7 @@ void (*pm_power_off)(void);
39037 + cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src)
39038 +@@ -121,11 +121,11 @@ cycle_t pvclock_clocksource_read(struct
39039 + * updating at the same time, and one of them could be slightly behind,
39040 + * making the assumption that last_value always go forward fail to hold.
39041 + */
39042 +- last = atomic64_read(&last_value);
39043 ++ last = atomic64_read_unchecked(&last_value);
39044 + do {
39045 + if (ret < last)
39046 + return last;
39047 +- last = atomic64_cmpxchg(&last_value, last, ret);
39048 ++ last = atomic64_cmpxchg_unchecked(&last_value, last, ret);
39049 + } while (unlikely(last != ret));
39050 +
39051 + return ret;
39052 +diff -urNp linux-3.0.8/arch/x86/kernel/reboot.c linux-3.0.8/arch/x86/kernel/reboot.c
39053 +--- linux-3.0.8/arch/x86/kernel/reboot.c 2011-07-21 22:17:23.000000000 -0400
39054 ++++ linux-3.0.8/arch/x86/kernel/reboot.c 2011-08-23 21:47:55.000000000 -0400
39055 +@@ -35,7 +35,7 @@ void (*pm_power_off)(void);
39056 EXPORT_SYMBOL(pm_power_off);
39057
39058 static const struct desc_ptr no_idt = {};
39059 -static int reboot_mode;
39060 +static unsigned short reboot_mode;
39061 - enum reboot_type reboot_type = BOOT_KBD;
39062 + enum reboot_type reboot_type = BOOT_ACPI;
39063 int reboot_force;
39064
39065 -@@ -292,12 +292,12 @@ core_initcall(reboot_init);
39066 - controller to pulse the CPU reset line, which is more thorough, but
39067 - doesn't work with at least one type of 486 motherboard. It is easy
39068 - to stop this code working; hence the copious comments. */
39069 --static const unsigned long long
39070 --real_mode_gdt_entries [3] =
39071 -+static struct desc_struct
39072 -+real_mode_gdt_entries [3] __read_only =
39073 - {
39074 -- 0x0000000000000000ULL, /* Null descriptor */
39075 -- 0x00009b000000ffffULL, /* 16-bit real-mode 64k code at 0x00000000 */
39076 -- 0x000093000100ffffULL /* 16-bit real-mode 64k data at 0x00000100 */
39077 -+ GDT_ENTRY_INIT(0, 0, 0), /* Null descriptor */
39078 -+ GDT_ENTRY_INIT(0x9b, 0, 0xffff), /* 16-bit real-mode 64k code at 0x00000000 */
39079 -+ GDT_ENTRY_INIT(0x93, 0x100, 0xffff) /* 16-bit real-mode 64k data at 0x00000100 */
39080 - };
39081 +@@ -315,13 +315,17 @@ core_initcall(reboot_init);
39082 + extern const unsigned char machine_real_restart_asm[];
39083 + extern const u64 machine_real_restart_gdt[3];
39084
39085 - static const struct desc_ptr
39086 -@@ -346,7 +346,7 @@ static const unsigned char jump_to_bios
39087 - * specified by the code and length parameters.
39088 - * We assume that length will aways be less that 100!
39089 - */
39090 --void machine_real_restart(const unsigned char *code, int length)
39091 -+__noreturn void machine_real_restart(const unsigned char *code, unsigned int length)
39092 +-void machine_real_restart(unsigned int type)
39093 ++__noreturn void machine_real_restart(unsigned int type)
39094 {
39095 - local_irq_disable();
39096 + void *restart_va;
39097 + unsigned long restart_pa;
39098 +- void (*restart_lowmem)(unsigned int);
39099 ++ void (* __noreturn restart_lowmem)(unsigned int);
39100 + u64 *lowmem_gdt;
39101
39102 -@@ -366,8 +366,8 @@ void machine_real_restart(const unsigned
39103 - /* Remap the kernel at virtual address zero, as well as offset zero
39104 - from the kernel segment. This assumes the kernel segment starts at
39105 - virtual address PAGE_OFFSET. */
39106 -- memcpy(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY,
39107 -- sizeof(swapper_pg_dir [0]) * KERNEL_PGD_PTRS);
39108 -+ clone_pgd_range(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY,
39109 -+ min_t(unsigned long, KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY));
39110 ++#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF))
39111 ++ struct desc_struct *gdt;
39112 ++#endif
39113 ++
39114 + local_irq_disable();
39115
39116 - /*
39117 - * Use `swapper_pg_dir' as our page directory.
39118 -@@ -379,16 +379,15 @@ void machine_real_restart(const unsigned
39119 + /* Write zero to CMOS register number 0x0f, which the BIOS POST
39120 +@@ -347,14 +351,14 @@ void machine_real_restart(unsigned int t
39121 boot)". This seems like a fairly standard thing that gets set by
39122 REBOOT.COM programs, and the previous reset routine did this
39123 too. */
39124 - *((unsigned short *)0x472) = reboot_mode;
39125 + *(unsigned short *)(__va(0x472)) = reboot_mode;
39126
39127 - /* For the switch to real mode, copy some code to low memory. It has
39128 - to be in the first 64k because it is running in 16-bit mode, and it
39129 - has to have the same physical and virtual address, because it turns
39130 - off paging. Copy it near the end of the first page, out of the way
39131 - of BIOS variables. */
39132 -- memcpy((void *)(0x1000 - sizeof(real_mode_switch) - 100),
39133 -- real_mode_switch, sizeof (real_mode_switch));
39134 -- memcpy((void *)(0x1000 - 100), code, length);
39135 -+ memcpy(__va(0x1000 - sizeof (real_mode_switch) - 100), real_mode_switch, sizeof (real_mode_switch));
39136 -+ memcpy(__va(0x1000 - 100), code, length);
39137 -
39138 - /* Set up the IDT for real mode. */
39139 - load_idt(&real_mode_idt);
39140 -@@ -416,6 +415,7 @@ void machine_real_restart(const unsigned
39141 - __asm__ __volatile__ ("ljmp $0x0008,%0"
39142 - :
39143 - : "i" ((void *)(0x1000 - sizeof (real_mode_switch) - 100)));
39144 -+ do { } while (1);
39145 + /* Patch the GDT in the low memory trampoline */
39146 + lowmem_gdt = TRAMPOLINE_SYM(machine_real_restart_gdt);
39147 +
39148 + restart_va = TRAMPOLINE_SYM(machine_real_restart_asm);
39149 + restart_pa = virt_to_phys(restart_va);
39150 +- restart_lowmem = (void (*)(unsigned int))restart_pa;
39151 ++ restart_lowmem = (void *)restart_pa;
39152 +
39153 + /* GDT[0]: GDT self-pointer */
39154 + lowmem_gdt[0] =
39155 +@@ -365,7 +369,33 @@ void machine_real_restart(unsigned int t
39156 + GDT_ENTRY(0x009b, restart_pa, 0xffff);
39157 +
39158 + /* Jump to the identity-mapped low memory code */
39159 ++
39160 ++#if defined(CONFIG_X86_32) && (defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF))
39161 ++ gdt = get_cpu_gdt_table(smp_processor_id());
39162 ++ pax_open_kernel();
39163 ++#ifdef CONFIG_PAX_MEMORY_UDEREF
39164 ++ gdt[GDT_ENTRY_KERNEL_DS].type = 3;
39165 ++ gdt[GDT_ENTRY_KERNEL_DS].limit = 0xf;
39166 ++ asm("mov %0, %%ds; mov %0, %%es; mov %0, %%ss" : : "r" (__KERNEL_DS) : "memory");
39167 ++#endif
39168 ++#ifdef CONFIG_PAX_KERNEXEC
39169 ++ gdt[GDT_ENTRY_KERNEL_CS].base0 = 0;
39170 ++ gdt[GDT_ENTRY_KERNEL_CS].base1 = 0;
39171 ++ gdt[GDT_ENTRY_KERNEL_CS].base2 = 0;
39172 ++ gdt[GDT_ENTRY_KERNEL_CS].limit0 = 0xffff;
39173 ++ gdt[GDT_ENTRY_KERNEL_CS].limit = 0xf;
39174 ++ gdt[GDT_ENTRY_KERNEL_CS].g = 1;
39175 ++#endif
39176 ++ pax_close_kernel();
39177 ++#endif
39178 ++
39179 ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
39180 ++ asm volatile("push %0; push %1; lret\n" : : "i" (__KERNEL_CS), "rm" (restart_lowmem), "a" (type));
39181 ++ unreachable();
39182 ++#else
39183 + restart_lowmem(type);
39184 ++#endif
39185 ++
39186 }
39187 #ifdef CONFIG_APM_MODULE
39188 EXPORT_SYMBOL(machine_real_restart);
39189 -@@ -544,7 +544,7 @@ void __attribute__((weak)) mach_reboot_f
39190 - {
39191 - }
39192 -
39193 +@@ -523,7 +553,7 @@ void __attribute__((weak)) mach_reboot_f
39194 + * try to force a triple fault and then cycle between hitting the keyboard
39195 + * controller and doing that
39196 + */
39197 -static void native_machine_emergency_restart(void)
39198 +__noreturn static void native_machine_emergency_restart(void)
39199 {
39200 int i;
39201 -
39202 -@@ -659,13 +659,13 @@ void native_machine_shutdown(void)
39203 + int attempt = 0;
39204 +@@ -647,13 +677,13 @@ void native_machine_shutdown(void)
39205 #endif
39206 }
39207
39208 @@ -17180,7 +15399,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/reboot.c linux-2.6.32.48/arch/x86/ker
39209 {
39210 printk("machine restart\n");
39211
39212 -@@ -674,7 +674,7 @@ static void native_machine_restart(char
39213 +@@ -662,7 +692,7 @@ static void native_machine_restart(char
39214 __machine_emergency_restart(0);
39215 }
39216
39217 @@ -17189,7 +15408,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/reboot.c linux-2.6.32.48/arch/x86/ker
39218 {
39219 /* stop other cpus and apics */
39220 machine_shutdown();
39221 -@@ -685,7 +685,7 @@ static void native_machine_halt(void)
39222 +@@ -673,7 +703,7 @@ static void native_machine_halt(void)
39223 stop_this_cpu(NULL);
39224 }
39225
39226 @@ -17198,18 +15417,36 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/reboot.c linux-2.6.32.48/arch/x86/ker
39227 {
39228 if (pm_power_off) {
39229 if (!reboot_force)
39230 -@@ -694,6 +694,7 @@ static void native_machine_power_off(voi
39231 +@@ -682,6 +712,7 @@ static void native_machine_power_off(voi
39232 }
39233 /* a fallback in case there is no PM info available */
39234 tboot_shutdown(TB_SHUTDOWN_HALT);
39235 -+ do { } while (1);
39236 ++ unreachable();
39237 }
39238
39239 struct machine_ops machine_ops = {
39240 -diff -urNp linux-2.6.32.48/arch/x86/kernel/setup.c linux-2.6.32.48/arch/x86/kernel/setup.c
39241 ---- linux-2.6.32.48/arch/x86/kernel/setup.c 2011-11-12 12:44:28.000000000 -0500
39242 -+++ linux-2.6.32.48/arch/x86/kernel/setup.c 2011-11-12 12:46:42.000000000 -0500
39243 -@@ -783,14 +783,14 @@ void __init setup_arch(char **cmdline_p)
39244 +diff -urNp linux-3.0.8/arch/x86/kernel/setup.c linux-3.0.8/arch/x86/kernel/setup.c
39245 +--- linux-3.0.8/arch/x86/kernel/setup.c 2011-07-21 22:17:23.000000000 -0400
39246 ++++ linux-3.0.8/arch/x86/kernel/setup.c 2011-10-06 04:17:55.000000000 -0400
39247 +@@ -447,7 +447,7 @@ static void __init parse_setup_data(void
39248 +
39249 + switch (data->type) {
39250 + case SETUP_E820_EXT:
39251 +- parse_e820_ext(data);
39252 ++ parse_e820_ext((struct setup_data __force_kernel *)data);
39253 + break;
39254 + case SETUP_DTB:
39255 + add_dtb(pa_data);
39256 +@@ -650,7 +650,7 @@ static void __init trim_bios_range(void)
39257 + * area (640->1Mb) as ram even though it is not.
39258 + * take them out.
39259 + */
39260 +- e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1);
39261 ++ e820_remove_range(ISA_START_ADDRESS, ISA_END_ADDRESS - ISA_START_ADDRESS, E820_RAM, 1);
39262 + sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
39263 + }
39264 +
39265 +@@ -773,14 +773,14 @@ void __init setup_arch(char **cmdline_p)
39266
39267 if (!boot_params.hdr.root_flags)
39268 root_mountflags &= ~MS_RDONLY;
39269 @@ -17229,12 +15466,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/setup.c linux-2.6.32.48/arch/x86/kern
39270 data_resource.end = virt_to_phys(_edata)-1;
39271 bss_resource.start = virt_to_phys(&__bss_start);
39272 bss_resource.end = virt_to_phys(&__bss_stop)-1;
39273 -diff -urNp linux-2.6.32.48/arch/x86/kernel/setup_percpu.c linux-2.6.32.48/arch/x86/kernel/setup_percpu.c
39274 ---- linux-2.6.32.48/arch/x86/kernel/setup_percpu.c 2009-12-02 22:51:21.000000000 -0500
39275 -+++ linux-2.6.32.48/arch/x86/kernel/setup_percpu.c 2011-11-12 12:46:42.000000000 -0500
39276 -@@ -25,19 +25,17 @@
39277 - # define DBG(x...)
39278 - #endif
39279 +diff -urNp linux-3.0.8/arch/x86/kernel/setup_percpu.c linux-3.0.8/arch/x86/kernel/setup_percpu.c
39280 +--- linux-3.0.8/arch/x86/kernel/setup_percpu.c 2011-07-21 22:17:23.000000000 -0400
39281 ++++ linux-3.0.8/arch/x86/kernel/setup_percpu.c 2011-08-23 21:47:55.000000000 -0400
39282 +@@ -21,19 +21,17 @@
39283 + #include <asm/cpu.h>
39284 + #include <asm/stackprotector.h>
39285
39286 -DEFINE_PER_CPU(int, cpu_number);
39287 +#ifdef CONFIG_SMP
39288 @@ -17256,7 +15493,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/setup_percpu.c linux-2.6.32.48/arch/x
39289 [0 ... NR_CPUS-1] = BOOT_PERCPU_OFFSET,
39290 };
39291 EXPORT_SYMBOL(__per_cpu_offset);
39292 -@@ -159,10 +157,10 @@ static inline void setup_percpu_segment(
39293 +@@ -155,10 +153,10 @@ static inline void setup_percpu_segment(
39294 {
39295 #ifdef CONFIG_X86_32
39296 struct desc_struct gdt;
39297 @@ -17270,7 +15507,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/setup_percpu.c linux-2.6.32.48/arch/x
39298 write_gdt_entry(get_cpu_gdt_table(cpu),
39299 GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
39300 #endif
39301 -@@ -212,6 +210,11 @@ void __init setup_per_cpu_areas(void)
39302 +@@ -207,6 +205,11 @@ void __init setup_per_cpu_areas(void)
39303 /* alrighty, percpu areas up and running */
39304 delta = (unsigned long)pcpu_base_addr - (unsigned long)__per_cpu_start;
39305 for_each_possible_cpu(cpu) {
39306 @@ -17282,9 +15519,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/setup_percpu.c linux-2.6.32.48/arch/x
39307 per_cpu_offset(cpu) = delta + pcpu_unit_offsets[cpu];
39308 per_cpu(this_cpu_off, cpu) = per_cpu_offset(cpu);
39309 per_cpu(cpu_number, cpu) = cpu;
39310 -@@ -239,6 +242,12 @@ void __init setup_per_cpu_areas(void)
39311 - early_per_cpu_map(x86_cpu_to_node_map, cpu);
39312 - #endif
39313 +@@ -247,6 +250,12 @@ void __init setup_per_cpu_areas(void)
39314 + */
39315 + set_cpu_numa_node(cpu, early_cpu_to_node(cpu));
39316 #endif
39317 +#ifdef CONFIG_CC_STACKPROTECTOR
39318 +#ifdef CONFIG_X86_32
39319 @@ -17293,12 +15530,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/setup_percpu.c linux-2.6.32.48/arch/x
39320 +#endif
39321 +#endif
39322 /*
39323 - * Up to this point, the boot CPU has been using .data.init
39324 + * Up to this point, the boot CPU has been using .init.data
39325 * area. Reload any changed state for the boot CPU.
39326 -diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/kernel/signal.c
39327 ---- linux-2.6.32.48/arch/x86/kernel/signal.c 2009-12-02 22:51:21.000000000 -0500
39328 -+++ linux-2.6.32.48/arch/x86/kernel/signal.c 2011-11-12 12:46:42.000000000 -0500
39329 -@@ -197,7 +197,7 @@ static unsigned long align_sigframe(unsi
39330 +diff -urNp linux-3.0.8/arch/x86/kernel/signal.c linux-3.0.8/arch/x86/kernel/signal.c
39331 +--- linux-3.0.8/arch/x86/kernel/signal.c 2011-07-21 22:17:23.000000000 -0400
39332 ++++ linux-3.0.8/arch/x86/kernel/signal.c 2011-08-23 21:48:14.000000000 -0400
39333 +@@ -198,7 +198,7 @@ static unsigned long align_sigframe(unsi
39334 * Align the stack pointer according to the i386 ABI,
39335 * i.e. so that on function entry ((sp + 4) & 15) == 0.
39336 */
39337 @@ -17307,7 +15544,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39338 #else /* !CONFIG_X86_32 */
39339 sp = round_down(sp, 16) - 8;
39340 #endif
39341 -@@ -248,11 +248,11 @@ get_sigframe(struct k_sigaction *ka, str
39342 +@@ -249,11 +249,11 @@ get_sigframe(struct k_sigaction *ka, str
39343 * Return an always-bogus address instead so we will die with SIGSEGV.
39344 */
39345 if (onsigstack && !likely(on_sig_stack(sp)))
39346 @@ -17321,7 +15558,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39347
39348 return (void __user *)sp;
39349 }
39350 -@@ -307,9 +307,9 @@ __setup_frame(int sig, struct k_sigactio
39351 +@@ -308,9 +308,9 @@ __setup_frame(int sig, struct k_sigactio
39352 }
39353
39354 if (current->mm->context.vdso)
39355 @@ -17333,7 +15570,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39356 if (ka->sa.sa_flags & SA_RESTORER)
39357 restorer = ka->sa.sa_restorer;
39358
39359 -@@ -323,7 +323,7 @@ __setup_frame(int sig, struct k_sigactio
39360 +@@ -324,7 +324,7 @@ __setup_frame(int sig, struct k_sigactio
39361 * reasons and because gdb uses it as a signature to notice
39362 * signal handler stack frames.
39363 */
39364 @@ -17342,7 +15579,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39365
39366 if (err)
39367 return -EFAULT;
39368 -@@ -377,7 +377,10 @@ static int __setup_rt_frame(int sig, str
39369 +@@ -378,7 +378,10 @@ static int __setup_rt_frame(int sig, str
39370 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
39371
39372 /* Set up to return from userspace. */
39373 @@ -17354,7 +15591,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39374 if (ka->sa.sa_flags & SA_RESTORER)
39375 restorer = ka->sa.sa_restorer;
39376 put_user_ex(restorer, &frame->pretcode);
39377 -@@ -389,7 +392,7 @@ static int __setup_rt_frame(int sig, str
39378 +@@ -390,7 +393,7 @@ static int __setup_rt_frame(int sig, str
39379 * reasons and because gdb uses it as a signature to notice
39380 * signal handler stack frames.
39381 */
39382 @@ -17363,7 +15600,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39383 } put_user_catch(err);
39384
39385 if (err)
39386 -@@ -782,6 +785,8 @@ static void do_signal(struct pt_regs *re
39387 +@@ -769,6 +772,8 @@ static void do_signal(struct pt_regs *re
39388 int signr;
39389 sigset_t *oldset;
39390
39391 @@ -17372,7 +15609,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39392 /*
39393 * We want the common case to go fast, which is why we may in certain
39394 * cases get here from kernel mode. Just return without doing anything
39395 -@@ -789,7 +794,7 @@ static void do_signal(struct pt_regs *re
39396 +@@ -776,7 +781,7 @@ static void do_signal(struct pt_regs *re
39397 * X86_32: vm86 regs switched out by assembly code before reaching
39398 * here, so testing against kernel CS suffices.
39399 */
39400 @@ -17381,38 +15618,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/signal.c linux-2.6.32.48/arch/x86/ker
39401 return;
39402
39403 if (current_thread_info()->status & TS_RESTORE_SIGMASK)
39404 -diff -urNp linux-2.6.32.48/arch/x86/kernel/smpboot.c linux-2.6.32.48/arch/x86/kernel/smpboot.c
39405 ---- linux-2.6.32.48/arch/x86/kernel/smpboot.c 2011-11-12 12:44:28.000000000 -0500
39406 -+++ linux-2.6.32.48/arch/x86/kernel/smpboot.c 2011-11-12 12:46:42.000000000 -0500
39407 -@@ -94,14 +94,14 @@ static DEFINE_PER_CPU(struct task_struct
39408 - */
39409 - static DEFINE_MUTEX(x86_cpu_hotplug_driver_mutex);
39410 -
39411 --void cpu_hotplug_driver_lock()
39412 -+void cpu_hotplug_driver_lock(void)
39413 - {
39414 -- mutex_lock(&x86_cpu_hotplug_driver_mutex);
39415 -+ mutex_lock(&x86_cpu_hotplug_driver_mutex);
39416 - }
39417 -
39418 --void cpu_hotplug_driver_unlock()
39419 -+void cpu_hotplug_driver_unlock(void)
39420 - {
39421 -- mutex_unlock(&x86_cpu_hotplug_driver_mutex);
39422 -+ mutex_unlock(&x86_cpu_hotplug_driver_mutex);
39423 - }
39424 -
39425 - ssize_t arch_cpu_probe(const char *buf, size_t count) { return -1; }
39426 -@@ -625,7 +625,7 @@ wakeup_secondary_cpu_via_init(int phys_a
39427 - * target processor state.
39428 - */
39429 - startup_ipi_hook(phys_apicid, (unsigned long) start_secondary,
39430 -- (unsigned long)stack_start.sp);
39431 -+ stack_start);
39432 -
39433 - /*
39434 - * Run STARTUP IPI loop.
39435 -@@ -743,6 +743,7 @@ static int __cpuinit do_boot_cpu(int api
39436 +diff -urNp linux-3.0.8/arch/x86/kernel/smpboot.c linux-3.0.8/arch/x86/kernel/smpboot.c
39437 +--- linux-3.0.8/arch/x86/kernel/smpboot.c 2011-07-21 22:17:23.000000000 -0400
39438 ++++ linux-3.0.8/arch/x86/kernel/smpboot.c 2011-08-23 21:47:55.000000000 -0400
39439 +@@ -709,17 +709,20 @@ static int __cpuinit do_boot_cpu(int api
39440 set_idle_for_cpu(cpu, c_idle.idle);
39441 do_rest:
39442 per_cpu(current_task, cpu) = c_idle.idle;
39443 @@ -17420,7 +15629,6 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/smpboot.c linux-2.6.32.48/arch/x86/ke
39444 #ifdef CONFIG_X86_32
39445 /* Stack for startup_32 can be just as for start_secondary onwards */
39446 irq_ctx_init(cpu);
39447 -@@ -750,13 +751,15 @@ do_rest:
39448 #else
39449 clear_tsk_thread_flag(c_idle.idle, TIF_FORK);
39450 initial_gs = per_cpu_offset(cpu);
39451 @@ -17435,12 +15643,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/smpboot.c linux-2.6.32.48/arch/x86/ke
39452 + pax_close_kernel();
39453 +
39454 initial_code = (unsigned long)start_secondary;
39455 -- stack_start.sp = (void *) c_idle.idle->thread.sp;
39456 -+ stack_start = c_idle.idle->thread.sp;
39457 + stack_start = c_idle.idle->thread.sp;
39458
39459 - /* start_ip had better be page-aligned! */
39460 - start_ip = setup_trampoline();
39461 -@@ -891,6 +894,12 @@ int __cpuinit native_cpu_up(unsigned int
39462 +@@ -861,6 +864,12 @@ int __cpuinit native_cpu_up(unsigned int
39463
39464 per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;
39465
39466 @@ -17451,11 +15656,11 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/smpboot.c linux-2.6.32.48/arch/x86/ke
39467 +#endif
39468 +
39469 err = do_boot_cpu(apicid, cpu);
39470 -
39471 if (err) {
39472 -diff -urNp linux-2.6.32.48/arch/x86/kernel/step.c linux-2.6.32.48/arch/x86/kernel/step.c
39473 ---- linux-2.6.32.48/arch/x86/kernel/step.c 2009-12-02 22:51:21.000000000 -0500
39474 -+++ linux-2.6.32.48/arch/x86/kernel/step.c 2011-11-12 12:46:42.000000000 -0500
39475 + pr_debug("do_boot_cpu failed %d\n", err);
39476 +diff -urNp linux-3.0.8/arch/x86/kernel/step.c linux-3.0.8/arch/x86/kernel/step.c
39477 +--- linux-3.0.8/arch/x86/kernel/step.c 2011-07-21 22:17:23.000000000 -0400
39478 ++++ linux-3.0.8/arch/x86/kernel/step.c 2011-08-23 21:47:55.000000000 -0400
39479 @@ -27,10 +27,10 @@ unsigned long convert_ip_to_linear(struc
39480 struct desc_struct *desc;
39481 unsigned long base;
39482 @@ -17498,23 +15703,35 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/step.c linux-2.6.32.48/arch/x86/kerne
39483 /* 32-bit mode: register increment */
39484 return 0;
39485 /* 64-bit mode: REX prefix */
39486 -diff -urNp linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S
39487 ---- linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S 2011-11-12 12:44:28.000000000 -0500
39488 -+++ linux-2.6.32.48/arch/x86/kernel/syscall_table_32.S 2011-11-12 12:46:42.000000000 -0500
39489 +diff -urNp linux-3.0.8/arch/x86/kernel/syscall_table_32.S linux-3.0.8/arch/x86/kernel/syscall_table_32.S
39490 +--- linux-3.0.8/arch/x86/kernel/syscall_table_32.S 2011-07-21 22:17:23.000000000 -0400
39491 ++++ linux-3.0.8/arch/x86/kernel/syscall_table_32.S 2011-08-23 21:47:55.000000000 -0400
39492 @@ -1,3 +1,4 @@
39493 +.section .rodata,"a",@progbits
39494 ENTRY(sys_call_table)
39495 .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
39496 .long sys_exit
39497 -diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c
39498 ---- linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c 2011-11-12 12:44:28.000000000 -0500
39499 -+++ linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c 2011-11-12 12:46:42.000000000 -0500
39500 -@@ -24,6 +24,21 @@
39501 +diff -urNp linux-3.0.8/arch/x86/kernel/sys_i386_32.c linux-3.0.8/arch/x86/kernel/sys_i386_32.c
39502 +--- linux-3.0.8/arch/x86/kernel/sys_i386_32.c 2011-07-21 22:17:23.000000000 -0400
39503 ++++ linux-3.0.8/arch/x86/kernel/sys_i386_32.c 2011-08-23 21:47:55.000000000 -0400
39504 +@@ -24,17 +24,224 @@
39505
39506 #include <asm/syscalls.h>
39507
39508 +-/*
39509 +- * Do a system call from kernel instead of calling sys_execve so we
39510 +- * end up with proper pt_regs.
39511 +- */
39512 +-int kernel_execve(const char *filename,
39513 +- const char *const argv[],
39514 +- const char *const envp[])
39515 +int i386_mmap_check(unsigned long addr, unsigned long len, unsigned long flags)
39516 -+{
39517 + {
39518 +- long __res;
39519 +- asm volatile ("int $0x80"
39520 +- : "=a" (__res)
39521 +- : "0" (__NR_execve), "b" (filename), "c" (argv), "d" (envp) : "memory");
39522 +- return __res;
39523 + unsigned long pax_task_size = TASK_SIZE;
39524 +
39525 +#ifdef CONFIG_PAX_SEGMEXEC
39526 @@ -17528,13 +15745,6 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c linux-2.6.32.48/arch/x8
39527 + return 0;
39528 +}
39529 +
39530 - /*
39531 - * Perform the select(nd, in, out, ex, tv) and mmap() system
39532 - * calls. Linux/i386 didn't use to be able to handle more than
39533 -@@ -58,6 +73,212 @@ out:
39534 - return err;
39535 - }
39536 -
39537 +unsigned long
39538 +arch_get_unmapped_area(struct file *filp, unsigned long addr,
39539 + unsigned long len, unsigned long pgoff, unsigned long flags)
39540 @@ -17576,7 +15786,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c linux-2.6.32.48/arch/x8
39541 + }
39542 +
39543 +#ifdef CONFIG_PAX_PAGEEXEC
39544 -+ if (!nx_enabled && (mm->pax_flags & MF_PAX_PAGEEXEC) && (flags & MAP_EXECUTABLE) && start_addr >= mm->mmap_base) {
39545 ++ if (!(__supported_pte_mask & _PAGE_NX) && (mm->pax_flags & MF_PAX_PAGEEXEC) && (flags & MAP_EXECUTABLE) && start_addr >= mm->mmap_base) {
39546 + start_addr = 0x00110000UL;
39547 +
39548 +#ifdef CONFIG_PAX_RANDMMAP
39549 @@ -17649,7 +15859,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c linux-2.6.32.48/arch/x8
39550 + return addr;
39551 +
39552 +#ifdef CONFIG_PAX_PAGEEXEC
39553 -+ if (!nx_enabled && (mm->pax_flags & MF_PAX_PAGEEXEC) && (flags & MAP_EXECUTABLE))
39554 ++ if (!(__supported_pte_mask & _PAGE_NX) && (mm->pax_flags & MF_PAX_PAGEEXEC) && (flags & MAP_EXECUTABLE))
39555 + goto bottomup;
39556 +#endif
39557 +
39558 @@ -17740,49 +15950,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_i386_32.c linux-2.6.32.48/arch/x8
39559 + mm->cached_hole_size = ~0UL;
39560 +
39561 + return addr;
39562 -+}
39563 -
39564 - struct sel_arg_struct {
39565 - unsigned long n;
39566 -@@ -93,7 +314,7 @@ asmlinkage int sys_ipc(uint call, int fi
39567 - return sys_semtimedop(first, (struct sembuf __user *)ptr, second, NULL);
39568 - case SEMTIMEDOP:
39569 - return sys_semtimedop(first, (struct sembuf __user *)ptr, second,
39570 -- (const struct timespec __user *)fifth);
39571 -+ (__force const struct timespec __user *)fifth);
39572 -
39573 - case SEMGET:
39574 - return sys_semget(first, second, third);
39575 -@@ -140,7 +361,7 @@ asmlinkage int sys_ipc(uint call, int fi
39576 - ret = do_shmat(first, (char __user *) ptr, second, &raddr);
39577 - if (ret)
39578 - return ret;
39579 -- return put_user(raddr, (ulong __user *) third);
39580 -+ return put_user(raddr, (__force ulong __user *) third);
39581 - }
39582 - case 1: /* iBCS2 emulator entry point */
39583 - if (!segment_eq(get_fs(), get_ds()))
39584 -@@ -207,17 +428,3 @@ asmlinkage int sys_olduname(struct oldol
39585 -
39586 - return error;
39587 }
39588 --
39589 --
39590 --/*
39591 -- * Do a system call from kernel instead of calling sys_execve so we
39592 -- * end up with proper pt_regs.
39593 -- */
39594 --int kernel_execve(const char *filename, char *const argv[], char *const envp[])
39595 --{
39596 -- long __res;
39597 -- asm volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx"
39598 -- : "=a" (__res)
39599 -- : "0" (__NR_execve), "ri" (filename), "c" (argv), "d" (envp) : "memory");
39600 -- return __res;
39601 --}
39602 -diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c
39603 ---- linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c 2011-11-12 12:44:28.000000000 -0500
39604 -+++ linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c 2011-11-12 12:46:42.000000000 -0500
39605 +diff -urNp linux-3.0.8/arch/x86/kernel/sys_x86_64.c linux-3.0.8/arch/x86/kernel/sys_x86_64.c
39606 +--- linux-3.0.8/arch/x86/kernel/sys_x86_64.c 2011-07-21 22:17:23.000000000 -0400
39607 ++++ linux-3.0.8/arch/x86/kernel/sys_x86_64.c 2011-08-23 21:47:55.000000000 -0400
39608 @@ -32,8 +32,8 @@ out:
39609 return error;
39610 }
39611 @@ -17920,10 +16091,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/sys_x86_64.c linux-2.6.32.48/arch/x86
39612 mm->cached_hole_size = ~0UL;
39613
39614 return addr;
39615 -diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kernel/tboot.c
39616 ---- linux-2.6.32.48/arch/x86/kernel/tboot.c 2011-11-12 12:44:28.000000000 -0500
39617 -+++ linux-2.6.32.48/arch/x86/kernel/tboot.c 2011-11-12 12:46:42.000000000 -0500
39618 -@@ -216,7 +216,7 @@ static int tboot_setup_sleep(void)
39619 +diff -urNp linux-3.0.8/arch/x86/kernel/tboot.c linux-3.0.8/arch/x86/kernel/tboot.c
39620 +--- linux-3.0.8/arch/x86/kernel/tboot.c 2011-07-21 22:17:23.000000000 -0400
39621 ++++ linux-3.0.8/arch/x86/kernel/tboot.c 2011-08-23 21:47:55.000000000 -0400
39622 +@@ -217,7 +217,7 @@ static int tboot_setup_sleep(void)
39623
39624 void tboot_shutdown(u32 shutdown_type)
39625 {
39626 @@ -17932,7 +16103,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kern
39627
39628 if (!tboot_enabled())
39629 return;
39630 -@@ -238,7 +238,7 @@ void tboot_shutdown(u32 shutdown_type)
39631 +@@ -239,7 +239,7 @@ void tboot_shutdown(u32 shutdown_type)
39632
39633 switch_to_tboot_pt();
39634
39635 @@ -17941,7 +16112,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kern
39636 shutdown();
39637
39638 /* should not reach here */
39639 -@@ -295,7 +295,7 @@ void tboot_sleep(u8 sleep_state, u32 pm1
39640 +@@ -296,7 +296,7 @@ void tboot_sleep(u8 sleep_state, u32 pm1
39641 tboot_shutdown(acpi_shutdown_map[sleep_state]);
39642 }
39643
39644 @@ -17950,7 +16121,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kern
39645
39646 static int tboot_wait_for_aps(int num_aps)
39647 {
39648 -@@ -319,9 +319,9 @@ static int __cpuinit tboot_cpu_callback(
39649 +@@ -320,9 +320,9 @@ static int __cpuinit tboot_cpu_callback(
39650 {
39651 switch (action) {
39652 case CPU_DYING:
39653 @@ -17962,7 +16133,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kern
39654 return NOTIFY_BAD;
39655 break;
39656 }
39657 -@@ -340,7 +340,7 @@ static __init int tboot_late_init(void)
39658 +@@ -341,7 +341,7 @@ static __init int tboot_late_init(void)
39659
39660 tboot_create_trampoline();
39661
39662 @@ -17971,18 +16142,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tboot.c linux-2.6.32.48/arch/x86/kern
39663 register_hotcpu_notifier(&tboot_cpu_notifier);
39664 return 0;
39665 }
39666 -diff -urNp linux-2.6.32.48/arch/x86/kernel/time.c linux-2.6.32.48/arch/x86/kernel/time.c
39667 ---- linux-2.6.32.48/arch/x86/kernel/time.c 2009-12-02 22:51:21.000000000 -0500
39668 -+++ linux-2.6.32.48/arch/x86/kernel/time.c 2011-11-12 12:46:42.000000000 -0500
39669 -@@ -26,17 +26,13 @@
39670 - int timer_ack;
39671 - #endif
39672 -
39673 --#ifdef CONFIG_X86_64
39674 --volatile unsigned long __jiffies __section_jiffies = INITIAL_JIFFIES;
39675 --#endif
39676 --
39677 - unsigned long profile_pc(struct pt_regs *regs)
39678 +diff -urNp linux-3.0.8/arch/x86/kernel/time.c linux-3.0.8/arch/x86/kernel/time.c
39679 +--- linux-3.0.8/arch/x86/kernel/time.c 2011-07-21 22:17:23.000000000 -0400
39680 ++++ linux-3.0.8/arch/x86/kernel/time.c 2011-08-23 21:47:55.000000000 -0400
39681 +@@ -30,9 +30,9 @@ unsigned long profile_pc(struct pt_regs
39682 {
39683 unsigned long pc = instruction_pointer(regs);
39684
39685 @@ -17994,7 +16157,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/time.c linux-2.6.32.48/arch/x86/kerne
39686 #else
39687 unsigned long *sp =
39688 (unsigned long *)kernel_stack_pointer(regs);
39689 -@@ -45,11 +41,17 @@ unsigned long profile_pc(struct pt_regs
39690 +@@ -41,11 +41,17 @@ unsigned long profile_pc(struct pt_regs
39691 * or above a saved flags. Eflags has bits 22-31 zero,
39692 * kernel addresses don't.
39693 */
39694 @@ -18012,9 +16175,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/time.c linux-2.6.32.48/arch/x86/kerne
39695 }
39696 return pc;
39697 }
39698 -diff -urNp linux-2.6.32.48/arch/x86/kernel/tls.c linux-2.6.32.48/arch/x86/kernel/tls.c
39699 ---- linux-2.6.32.48/arch/x86/kernel/tls.c 2009-12-02 22:51:21.000000000 -0500
39700 -+++ linux-2.6.32.48/arch/x86/kernel/tls.c 2011-11-12 12:46:42.000000000 -0500
39701 +diff -urNp linux-3.0.8/arch/x86/kernel/tls.c linux-3.0.8/arch/x86/kernel/tls.c
39702 +--- linux-3.0.8/arch/x86/kernel/tls.c 2011-07-21 22:17:23.000000000 -0400
39703 ++++ linux-3.0.8/arch/x86/kernel/tls.c 2011-08-23 21:47:55.000000000 -0400
39704 @@ -85,6 +85,11 @@ int do_set_thread_area(struct task_struc
39705 if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
39706 return -EINVAL;
39707 @@ -18027,9 +16190,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/tls.c linux-2.6.32.48/arch/x86/kernel
39708 set_tls_desc(p, idx, &info, 1);
39709
39710 return 0;
39711 -diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_32.S linux-2.6.32.48/arch/x86/kernel/trampoline_32.S
39712 ---- linux-2.6.32.48/arch/x86/kernel/trampoline_32.S 2009-12-02 22:51:21.000000000 -0500
39713 -+++ linux-2.6.32.48/arch/x86/kernel/trampoline_32.S 2011-11-12 12:46:42.000000000 -0500
39714 +diff -urNp linux-3.0.8/arch/x86/kernel/trampoline_32.S linux-3.0.8/arch/x86/kernel/trampoline_32.S
39715 +--- linux-3.0.8/arch/x86/kernel/trampoline_32.S 2011-07-21 22:17:23.000000000 -0400
39716 ++++ linux-3.0.8/arch/x86/kernel/trampoline_32.S 2011-08-23 21:47:55.000000000 -0400
39717 @@ -32,6 +32,12 @@
39718 #include <asm/segment.h>
39719 #include <asm/page_types.h>
39720 @@ -18040,10 +16203,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_32.S linux-2.6.32.48/arch/
39721 +#define ta(X) ((X) - __PAGE_OFFSET)
39722 +#endif
39723 +
39724 - /* We can free up trampoline after bootup if cpu hotplug is not supported. */
39725 - __CPUINITRODATA
39726 - .code16
39727 -@@ -60,7 +66,7 @@ r_base = .
39728 + #ifdef CONFIG_SMP
39729 +
39730 + .section ".x86_trampoline","a"
39731 +@@ -62,7 +68,7 @@ r_base = .
39732 inc %ax # protected mode (PE) bit
39733 lmsw %ax # into protected mode
39734 # flush prefetch and jump to startup_32_smp in arch/i386/kernel/head.S
39735 @@ -18052,10 +16215,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_32.S linux-2.6.32.48/arch/
39736
39737 # These need to be in the same 64K segment as the above;
39738 # hence we don't use the boot_gdt_descr defined in head.S
39739 -diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_64.S linux-2.6.32.48/arch/x86/kernel/trampoline_64.S
39740 ---- linux-2.6.32.48/arch/x86/kernel/trampoline_64.S 2009-12-02 22:51:21.000000000 -0500
39741 -+++ linux-2.6.32.48/arch/x86/kernel/trampoline_64.S 2011-11-12 12:46:42.000000000 -0500
39742 -@@ -91,7 +91,7 @@ startup_32:
39743 +diff -urNp linux-3.0.8/arch/x86/kernel/trampoline_64.S linux-3.0.8/arch/x86/kernel/trampoline_64.S
39744 +--- linux-3.0.8/arch/x86/kernel/trampoline_64.S 2011-07-21 22:17:23.000000000 -0400
39745 ++++ linux-3.0.8/arch/x86/kernel/trampoline_64.S 2011-08-23 21:47:55.000000000 -0400
39746 +@@ -90,7 +90,7 @@ startup_32:
39747 movl $__KERNEL_DS, %eax # Initialize the %ds segment register
39748 movl %eax, %ds
39749
39750 @@ -18064,15 +16227,6 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_64.S linux-2.6.32.48/arch/
39751 movl %eax, %cr4 # Enable PAE mode
39752
39753 # Setup trampoline 4 level pagetables
39754 -@@ -127,7 +127,7 @@ startup_64:
39755 - no_longmode:
39756 - hlt
39757 - jmp no_longmode
39758 --#include "verify_cpu_64.S"
39759 -+#include "verify_cpu.S"
39760 -
39761 - # Careful these need to be in the same 64K segment as the above;
39762 - tidt:
39763 @@ -138,7 +138,7 @@ tidt:
39764 # so the kernel can live anywhere
39765 .balign 4
39766 @@ -18082,10 +16236,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/trampoline_64.S linux-2.6.32.48/arch/
39767 .long tgdt - r_base
39768 .short 0
39769 .quad 0x00cf9b000000ffff # __KERNEL32_CS
39770 -diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kernel/traps.c
39771 ---- linux-2.6.32.48/arch/x86/kernel/traps.c 2009-12-02 22:51:21.000000000 -0500
39772 -+++ linux-2.6.32.48/arch/x86/kernel/traps.c 2011-11-12 12:46:42.000000000 -0500
39773 -@@ -69,12 +69,6 @@ asmlinkage int system_call(void);
39774 +diff -urNp linux-3.0.8/arch/x86/kernel/traps.c linux-3.0.8/arch/x86/kernel/traps.c
39775 +--- linux-3.0.8/arch/x86/kernel/traps.c 2011-07-21 22:17:23.000000000 -0400
39776 ++++ linux-3.0.8/arch/x86/kernel/traps.c 2011-08-23 21:47:55.000000000 -0400
39777 +@@ -70,12 +70,6 @@ asmlinkage int system_call(void);
39778
39779 /* Do we ignore FPU interrupts ? */
39780 char ignore_fpu_irq;
39781 @@ -18098,15 +16252,8 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39782 #endif
39783
39784 DECLARE_BITMAP(used_vectors, NR_VECTORS);
39785 -@@ -112,19 +106,19 @@ static inline void preempt_conditional_c
39786 - static inline void
39787 - die_if_kernel(const char *str, struct pt_regs *regs, long err)
39788 - {
39789 -- if (!user_mode_vm(regs))
39790 -+ if (!user_mode(regs))
39791 - die(str, regs, err);
39792 +@@ -117,13 +111,13 @@ static inline void preempt_conditional_c
39793 }
39794 - #endif
39795
39796 static void __kprobes
39797 -do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
39798 @@ -18121,7 +16268,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39799 /*
39800 * traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
39801 * On nmi (interrupt 2), do_trap should not be called.
39802 -@@ -135,7 +129,7 @@ do_trap(int trapnr, int signr, char *str
39803 +@@ -134,7 +128,7 @@ do_trap(int trapnr, int signr, char *str
39804 }
39805 #endif
39806
39807 @@ -18130,7 +16277,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39808 goto kernel_trap;
39809
39810 #ifdef CONFIG_X86_32
39811 -@@ -158,7 +152,7 @@ trap_signal:
39812 +@@ -157,7 +151,7 @@ trap_signal:
39813 printk_ratelimit()) {
39814 printk(KERN_INFO
39815 "%s[%d] trap %s ip:%lx sp:%lx error:%lx",
39816 @@ -18139,7 +16286,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39817 regs->ip, regs->sp, error_code);
39818 print_vma_addr(" in ", regs->ip);
39819 printk("\n");
39820 -@@ -175,8 +169,20 @@ kernel_trap:
39821 +@@ -174,8 +168,20 @@ kernel_trap:
39822 if (!fixup_exception(regs)) {
39823 tsk->thread.error_code = error_code;
39824 tsk->thread.trap_no = trapnr;
39825 @@ -18160,7 +16307,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39826 return;
39827
39828 #ifdef CONFIG_X86_32
39829 -@@ -265,14 +271,30 @@ do_general_protection(struct pt_regs *re
39830 +@@ -264,14 +270,30 @@ do_general_protection(struct pt_regs *re
39831 conditional_sti(regs);
39832
39833 #ifdef CONFIG_X86_32
39834 @@ -18175,7 +16322,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39835 goto gp_in_kernel;
39836
39837 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC)
39838 -+ if (!nx_enabled && tsk->mm && (tsk->mm->pax_flags & MF_PAX_PAGEEXEC)) {
39839 ++ if (!(__supported_pte_mask & _PAGE_NX) && tsk->mm && (tsk->mm->pax_flags & MF_PAX_PAGEEXEC)) {
39840 + struct mm_struct *mm = tsk->mm;
39841 + unsigned long limit;
39842 +
39843 @@ -18193,7 +16340,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39844 tsk->thread.error_code = error_code;
39845 tsk->thread.trap_no = 13;
39846
39847 -@@ -305,6 +327,13 @@ gp_in_kernel:
39848 +@@ -304,6 +326,13 @@ gp_in_kernel:
39849 if (notify_die(DIE_GPF, "general protection fault", regs,
39850 error_code, 13, SIGSEGV) == NOTIFY_STOP)
39851 return;
39852 @@ -18207,7 +16354,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39853 die("general protection fault", regs, error_code);
39854 }
39855
39856 -@@ -435,6 +464,17 @@ static notrace __kprobes void default_do
39857 +@@ -433,6 +462,17 @@ static notrace __kprobes void default_do
39858 dotraplinkage notrace __kprobes void
39859 do_nmi(struct pt_regs *regs, long error_code)
39860 {
39861 @@ -18225,34 +16372,34 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39862 nmi_enter();
39863
39864 inc_irq_stat(__nmi_count);
39865 -@@ -558,7 +598,7 @@ dotraplinkage void __kprobes do_debug(st
39866 - }
39867 +@@ -569,7 +609,7 @@ dotraplinkage void __kprobes do_debug(st
39868 + /* It's safe to allow irq's after DR6 has been saved */
39869 + preempt_conditional_sti(regs);
39870
39871 - #ifdef CONFIG_X86_32
39872 -- if (regs->flags & X86_VM_MASK)
39873 -+ if (v8086_mode(regs))
39874 - goto debug_vm86;
39875 - #endif
39876 -
39877 -@@ -570,7 +610,7 @@ dotraplinkage void __kprobes do_debug(st
39878 - * kernel space (but re-enable TF when returning to user mode).
39879 - */
39880 - if (condition & DR_STEP) {
39881 -- if (!user_mode(regs))
39882 -+ if (!user_mode_novm(regs))
39883 - goto clear_TF_reenable;
39884 - }
39885 -
39886 -@@ -757,7 +797,7 @@ do_simd_coprocessor_error(struct pt_regs
39887 - * Handle strange cache flush from user space exception
39888 - * in all other cases. This is undocumented behaviour.
39889 - */
39890 - if (regs->flags & X86_VM_MASK) {
39891 + if (v8086_mode(regs)) {
39892 - handle_vm86_fault((struct kernel_vm86_regs *)regs, error_code);
39893 + handle_vm86_trap((struct kernel_vm86_regs *) regs,
39894 + error_code, 1);
39895 + preempt_conditional_cli(regs);
39896 +@@ -583,7 +623,7 @@ dotraplinkage void __kprobes do_debug(st
39897 + * We already checked v86 mode above, so we can check for kernel mode
39898 + * by just checking the CPL of CS.
39899 + */
39900 +- if ((dr6 & DR_STEP) && !user_mode(regs)) {
39901 ++ if ((dr6 & DR_STEP) && !user_mode_novm(regs)) {
39902 + tsk->thread.debugreg6 &= ~DR_STEP;
39903 + set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
39904 + regs->flags &= ~X86_EFLAGS_TF;
39905 +@@ -612,7 +652,7 @@ void math_error(struct pt_regs *regs, in
39906 return;
39907 - }
39908 -@@ -798,7 +838,7 @@ asmlinkage void __attribute__((weak)) sm
39909 + conditional_sti(regs);
39910 +
39911 +- if (!user_mode_vm(regs))
39912 ++ if (!user_mode(regs))
39913 + {
39914 + if (!fixup_exception(regs)) {
39915 + task->thread.error_code = error_code;
39916 +@@ -723,7 +763,7 @@ asmlinkage void __attribute__((weak)) sm
39917 void __math_state_restore(void)
39918 {
39919 struct thread_info *thread = current_thread_info();
39920 @@ -18261,7 +16408,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39921
39922 /*
39923 * Paranoid restore. send a SIGSEGV if we fail to restore the state.
39924 -@@ -825,8 +865,7 @@ void __math_state_restore(void)
39925 +@@ -750,8 +790,7 @@ void __math_state_restore(void)
39926 */
39927 asmlinkage void math_state_restore(void)
39928 {
39929 @@ -18271,262 +16418,20 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/traps.c linux-2.6.32.48/arch/x86/kern
39930
39931 if (!tsk_used_math(tsk)) {
39932 local_irq_enable();
39933 -diff -urNp linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S
39934 ---- linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S 2009-12-02 22:51:21.000000000 -0500
39935 -+++ linux-2.6.32.48/arch/x86/kernel/verify_cpu_64.S 1969-12-31 19:00:00.000000000 -0500
39936 -@@ -1,105 +0,0 @@
39937 --/*
39938 -- *
39939 -- * verify_cpu.S - Code for cpu long mode and SSE verification. This
39940 -- * code has been borrowed from boot/setup.S and was introduced by
39941 -- * Andi Kleen.
39942 -- *
39943 -- * Copyright (c) 2007 Andi Kleen (ak@××××.de)
39944 -- * Copyright (c) 2007 Eric Biederman (ebiederm@××××××××.com)
39945 -- * Copyright (c) 2007 Vivek Goyal (vgoyal@××××××.com)
39946 -- *
39947 -- * This source code is licensed under the GNU General Public License,
39948 -- * Version 2. See the file COPYING for more details.
39949 -- *
39950 -- * This is a common code for verification whether CPU supports
39951 -- * long mode and SSE or not. It is not called directly instead this
39952 -- * file is included at various places and compiled in that context.
39953 -- * Following are the current usage.
39954 -- *
39955 -- * This file is included by both 16bit and 32bit code.
39956 -- *
39957 -- * arch/x86_64/boot/setup.S : Boot cpu verification (16bit)
39958 -- * arch/x86_64/boot/compressed/head.S: Boot cpu verification (32bit)
39959 -- * arch/x86_64/kernel/trampoline.S: secondary processor verfication (16bit)
39960 -- * arch/x86_64/kernel/acpi/wakeup.S:Verfication at resume (16bit)
39961 -- *
39962 -- * verify_cpu, returns the status of cpu check in register %eax.
39963 -- * 0: Success 1: Failure
39964 -- *
39965 -- * The caller needs to check for the error code and take the action
39966 -- * appropriately. Either display a message or halt.
39967 -- */
39968 --
39969 --#include <asm/cpufeature.h>
39970 --
39971 --verify_cpu:
39972 -- pushfl # Save caller passed flags
39973 -- pushl $0 # Kill any dangerous flags
39974 -- popfl
39975 --
39976 -- pushfl # standard way to check for cpuid
39977 -- popl %eax
39978 -- movl %eax,%ebx
39979 -- xorl $0x200000,%eax
39980 -- pushl %eax
39981 -- popfl
39982 -- pushfl
39983 -- popl %eax
39984 -- cmpl %eax,%ebx
39985 -- jz verify_cpu_no_longmode # cpu has no cpuid
39986 --
39987 -- movl $0x0,%eax # See if cpuid 1 is implemented
39988 -- cpuid
39989 -- cmpl $0x1,%eax
39990 -- jb verify_cpu_no_longmode # no cpuid 1
39991 --
39992 -- xor %di,%di
39993 -- cmpl $0x68747541,%ebx # AuthenticAMD
39994 -- jnz verify_cpu_noamd
39995 -- cmpl $0x69746e65,%edx
39996 -- jnz verify_cpu_noamd
39997 -- cmpl $0x444d4163,%ecx
39998 -- jnz verify_cpu_noamd
39999 -- mov $1,%di # cpu is from AMD
40000 --
40001 --verify_cpu_noamd:
40002 -- movl $0x1,%eax # Does the cpu have what it takes
40003 -- cpuid
40004 -- andl $REQUIRED_MASK0,%edx
40005 -- xorl $REQUIRED_MASK0,%edx
40006 -- jnz verify_cpu_no_longmode
40007 --
40008 -- movl $0x80000000,%eax # See if extended cpuid is implemented
40009 -- cpuid
40010 -- cmpl $0x80000001,%eax
40011 -- jb verify_cpu_no_longmode # no extended cpuid
40012 --
40013 -- movl $0x80000001,%eax # Does the cpu have what it takes
40014 -- cpuid
40015 -- andl $REQUIRED_MASK1,%edx
40016 -- xorl $REQUIRED_MASK1,%edx
40017 -- jnz verify_cpu_no_longmode
40018 --
40019 --verify_cpu_sse_test:
40020 -- movl $1,%eax
40021 -- cpuid
40022 -- andl $SSE_MASK,%edx
40023 -- cmpl $SSE_MASK,%edx
40024 -- je verify_cpu_sse_ok
40025 -- test %di,%di
40026 -- jz verify_cpu_no_longmode # only try to force SSE on AMD
40027 -- movl $0xc0010015,%ecx # HWCR
40028 -- rdmsr
40029 -- btr $15,%eax # enable SSE
40030 -- wrmsr
40031 -- xor %di,%di # don't loop
40032 -- jmp verify_cpu_sse_test # try again
40033 --
40034 --verify_cpu_no_longmode:
40035 -- popfl # Restore caller passed flags
40036 -- movl $1,%eax
40037 -- ret
40038 --verify_cpu_sse_ok:
40039 -- popfl # Restore caller passed flags
40040 -- xorl %eax, %eax
40041 -- ret
40042 -diff -urNp linux-2.6.32.48/arch/x86/kernel/verify_cpu.S linux-2.6.32.48/arch/x86/kernel/verify_cpu.S
40043 ---- linux-2.6.32.48/arch/x86/kernel/verify_cpu.S 1969-12-31 19:00:00.000000000 -0500
40044 -+++ linux-2.6.32.48/arch/x86/kernel/verify_cpu.S 2011-11-12 12:46:42.000000000 -0500
40045 -@@ -0,0 +1,140 @@
40046 -+/*
40047 -+ *
40048 -+ * verify_cpu.S - Code for cpu long mode and SSE verification. This
40049 -+ * code has been borrowed from boot/setup.S and was introduced by
40050 -+ * Andi Kleen.
40051 -+ *
40052 -+ * Copyright (c) 2007 Andi Kleen (ak@××××.de)
40053 -+ * Copyright (c) 2007 Eric Biederman (ebiederm@××××××××.com)
40054 -+ * Copyright (c) 2007 Vivek Goyal (vgoyal@××××××.com)
40055 -+ * Copyright (c) 2010 Kees Cook (kees.cook@×××××××××.com)
40056 -+ *
40057 -+ * This source code is licensed under the GNU General Public License,
40058 -+ * Version 2. See the file COPYING for more details.
40059 -+ *
40060 -+ * This is a common code for verification whether CPU supports
40061 -+ * long mode and SSE or not. It is not called directly instead this
40062 -+ * file is included at various places and compiled in that context.
40063 -+ * This file is expected to run in 32bit code. Currently:
40064 -+ *
40065 -+ * arch/x86/boot/compressed/head_64.S: Boot cpu verification
40066 -+ * arch/x86/kernel/trampoline_64.S: secondary processor verification
40067 -+ * arch/x86/kernel/head_32.S: processor startup
40068 +diff -urNp linux-3.0.8/arch/x86/kernel/verify_cpu.S linux-3.0.8/arch/x86/kernel/verify_cpu.S
40069 +--- linux-3.0.8/arch/x86/kernel/verify_cpu.S 2011-07-21 22:17:23.000000000 -0400
40070 ++++ linux-3.0.8/arch/x86/kernel/verify_cpu.S 2011-08-23 21:48:14.000000000 -0400
40071 +@@ -20,6 +20,7 @@
40072 + * arch/x86/boot/compressed/head_64.S: Boot cpu verification
40073 + * arch/x86/kernel/trampoline_64.S: secondary processor verification
40074 + * arch/x86/kernel/head_32.S: processor startup
40075 + * arch/x86/kernel/acpi/realmode/wakeup.S: 32bit processor resume
40076 -+ *
40077 -+ * verify_cpu, returns the status of longmode and SSE in register %eax.
40078 -+ * 0: Success 1: Failure
40079 -+ *
40080 -+ * On Intel, the XD_DISABLE flag will be cleared as a side-effect.
40081 -+ *
40082 -+ * The caller needs to check for the error code and take the action
40083 -+ * appropriately. Either display a message or halt.
40084 -+ */
40085 -+
40086 -+#include <asm/cpufeature.h>
40087 -+#include <asm/msr-index.h>
40088 -+
40089 -+verify_cpu:
40090 -+ pushfl # Save caller passed flags
40091 -+ pushl $0 # Kill any dangerous flags
40092 -+ popfl
40093 -+
40094 -+ pushfl # standard way to check for cpuid
40095 -+ popl %eax
40096 -+ movl %eax,%ebx
40097 -+ xorl $0x200000,%eax
40098 -+ pushl %eax
40099 -+ popfl
40100 -+ pushfl
40101 -+ popl %eax
40102 -+ cmpl %eax,%ebx
40103 -+ jz verify_cpu_no_longmode # cpu has no cpuid
40104 -+
40105 -+ movl $0x0,%eax # See if cpuid 1 is implemented
40106 -+ cpuid
40107 -+ cmpl $0x1,%eax
40108 -+ jb verify_cpu_no_longmode # no cpuid 1
40109 -+
40110 -+ xor %di,%di
40111 -+ cmpl $0x68747541,%ebx # AuthenticAMD
40112 -+ jnz verify_cpu_noamd
40113 -+ cmpl $0x69746e65,%edx
40114 -+ jnz verify_cpu_noamd
40115 -+ cmpl $0x444d4163,%ecx
40116 -+ jnz verify_cpu_noamd
40117 -+ mov $1,%di # cpu is from AMD
40118 -+ jmp verify_cpu_check
40119 -+
40120 -+verify_cpu_noamd:
40121 -+ cmpl $0x756e6547,%ebx # GenuineIntel?
40122 -+ jnz verify_cpu_check
40123 -+ cmpl $0x49656e69,%edx
40124 -+ jnz verify_cpu_check
40125 -+ cmpl $0x6c65746e,%ecx
40126 -+ jnz verify_cpu_check
40127 -+
40128 -+ # only call IA32_MISC_ENABLE when:
40129 -+ # family > 6 || (family == 6 && model >= 0xd)
40130 -+ movl $0x1, %eax # check CPU family and model
40131 -+ cpuid
40132 -+ movl %eax, %ecx
40133 -+
40134 -+ andl $0x0ff00f00, %eax # mask family and extended family
40135 -+ shrl $8, %eax
40136 -+ cmpl $6, %eax
40137 -+ ja verify_cpu_clear_xd # family > 6, ok
40138 -+ jb verify_cpu_check # family < 6, skip
40139 -+
40140 -+ andl $0x000f00f0, %ecx # mask model and extended model
40141 -+ shrl $4, %ecx
40142 -+ cmpl $0xd, %ecx
40143 -+ jb verify_cpu_check # family == 6, model < 0xd, skip
40144 -+
40145 -+verify_cpu_clear_xd:
40146 -+ movl $MSR_IA32_MISC_ENABLE, %ecx
40147 -+ rdmsr
40148 -+ btrl $2, %edx # clear MSR_IA32_MISC_ENABLE_XD_DISABLE
40149 -+ jnc verify_cpu_check # only write MSR if bit was changed
40150 -+ wrmsr
40151 -+
40152 -+verify_cpu_check:
40153 -+ movl $0x1,%eax # Does the cpu have what it takes
40154 -+ cpuid
40155 -+ andl $REQUIRED_MASK0,%edx
40156 -+ xorl $REQUIRED_MASK0,%edx
40157 -+ jnz verify_cpu_no_longmode
40158 -+
40159 -+ movl $0x80000000,%eax # See if extended cpuid is implemented
40160 -+ cpuid
40161 -+ cmpl $0x80000001,%eax
40162 -+ jb verify_cpu_no_longmode # no extended cpuid
40163 -+
40164 -+ movl $0x80000001,%eax # Does the cpu have what it takes
40165 -+ cpuid
40166 -+ andl $REQUIRED_MASK1,%edx
40167 -+ xorl $REQUIRED_MASK1,%edx
40168 -+ jnz verify_cpu_no_longmode
40169 -+
40170 -+verify_cpu_sse_test:
40171 -+ movl $1,%eax
40172 -+ cpuid
40173 -+ andl $SSE_MASK,%edx
40174 -+ cmpl $SSE_MASK,%edx
40175 -+ je verify_cpu_sse_ok
40176 -+ test %di,%di
40177 -+ jz verify_cpu_no_longmode # only try to force SSE on AMD
40178 -+ movl $MSR_K7_HWCR,%ecx
40179 -+ rdmsr
40180 -+ btr $15,%eax # enable SSE
40181 -+ wrmsr
40182 -+ xor %di,%di # don't loop
40183 -+ jmp verify_cpu_sse_test # try again
40184 -+
40185 -+verify_cpu_no_longmode:
40186 -+ popfl # Restore caller passed flags
40187 -+ movl $1,%eax
40188 -+ ret
40189 -+verify_cpu_sse_ok:
40190 -+ popfl # Restore caller passed flags
40191 -+ xorl %eax, %eax
40192 -+ ret
40193 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vm86_32.c linux-2.6.32.48/arch/x86/kernel/vm86_32.c
40194 ---- linux-2.6.32.48/arch/x86/kernel/vm86_32.c 2009-12-02 22:51:21.000000000 -0500
40195 -+++ linux-2.6.32.48/arch/x86/kernel/vm86_32.c 2011-11-12 12:46:42.000000000 -0500
40196 + *
40197 + * verify_cpu, returns the status of longmode and SSE in register %eax.
40198 + * 0: Success 1: Failure
40199 +diff -urNp linux-3.0.8/arch/x86/kernel/vm86_32.c linux-3.0.8/arch/x86/kernel/vm86_32.c
40200 +--- linux-3.0.8/arch/x86/kernel/vm86_32.c 2011-07-21 22:17:23.000000000 -0400
40201 ++++ linux-3.0.8/arch/x86/kernel/vm86_32.c 2011-08-23 21:48:14.000000000 -0400
40202 @@ -41,6 +41,7 @@
40203 #include <linux/ptrace.h>
40204 #include <linux/audit.h>
40205 @@ -18544,7 +16449,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vm86_32.c linux-2.6.32.48/arch/x86/ke
40206 current->thread.sp0 = current->thread.saved_sp0;
40207 current->thread.sysenter_cs = __KERNEL_CS;
40208 load_sp0(tss, &current->thread);
40209 -@@ -208,6 +209,13 @@ int sys_vm86old(struct pt_regs *regs)
40210 +@@ -208,6 +209,13 @@ int sys_vm86old(struct vm86_struct __use
40211 struct task_struct *tsk;
40212 int tmp, ret = -EPERM;
40213
40214 @@ -18558,7 +16463,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vm86_32.c linux-2.6.32.48/arch/x86/ke
40215 tsk = current;
40216 if (tsk->thread.saved_sp0)
40217 goto out;
40218 -@@ -238,6 +246,14 @@ int sys_vm86(struct pt_regs *regs)
40219 +@@ -238,6 +246,14 @@ int sys_vm86(unsigned long cmd, unsigned
40220 int tmp, ret;
40221 struct vm86plus_struct __user *v86;
40222
40223 @@ -18571,7 +16476,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vm86_32.c linux-2.6.32.48/arch/x86/ke
40224 +#endif
40225 +
40226 tsk = current;
40227 - switch (regs->bx) {
40228 + switch (cmd) {
40229 case VM86_REQUEST_IRQ:
40230 @@ -324,7 +340,7 @@ static void do_sys_vm86(struct kernel_vm
40231 tsk->thread.saved_fs = info->regs32->fs;
40232 @@ -18591,174 +16496,9 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vm86_32.c linux-2.6.32.48/arch/x86/ke
40233 if (get_user(segoffs, intr_ptr))
40234 goto cannot_handle;
40235 if ((segoffs >> 16) == BIOSSEG)
40236 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vmi_32.c linux-2.6.32.48/arch/x86/kernel/vmi_32.c
40237 ---- linux-2.6.32.48/arch/x86/kernel/vmi_32.c 2009-12-02 22:51:21.000000000 -0500
40238 -+++ linux-2.6.32.48/arch/x86/kernel/vmi_32.c 2011-11-12 12:46:42.000000000 -0500
40239 -@@ -44,12 +44,17 @@ typedef u32 __attribute__((regparm(1)))
40240 - typedef u64 __attribute__((regparm(2))) (VROMLONGFUNC)(int);
40241 -
40242 - #define call_vrom_func(rom,func) \
40243 -- (((VROMFUNC *)(rom->func))())
40244 -+ (((VROMFUNC *)(ktva_ktla(rom.func)))())
40245 -
40246 - #define call_vrom_long_func(rom,func,arg) \
40247 -- (((VROMLONGFUNC *)(rom->func)) (arg))
40248 -+({\
40249 -+ u64 __reloc = ((VROMLONGFUNC *)(ktva_ktla(rom.func))) (arg);\
40250 -+ struct vmi_relocation_info *const __rel = (struct vmi_relocation_info *)&__reloc;\
40251 -+ __rel->eip = (unsigned char *)ktva_ktla((unsigned long)__rel->eip);\
40252 -+ __reloc;\
40253 -+})
40254 -
40255 --static struct vrom_header *vmi_rom;
40256 -+static struct vrom_header vmi_rom __attribute((__section__(".vmi.rom"), __aligned__(PAGE_SIZE)));
40257 - static int disable_pge;
40258 - static int disable_pse;
40259 - static int disable_sep;
40260 -@@ -76,10 +81,10 @@ static struct {
40261 - void (*set_initial_ap_state)(int, int);
40262 - void (*halt)(void);
40263 - void (*set_lazy_mode)(int mode);
40264 --} vmi_ops;
40265 -+} __no_const vmi_ops __read_only;
40266 -
40267 - /* Cached VMI operations */
40268 --struct vmi_timer_ops vmi_timer_ops;
40269 -+struct vmi_timer_ops vmi_timer_ops __read_only;
40270 -
40271 - /*
40272 - * VMI patching routines.
40273 -@@ -94,7 +99,7 @@ struct vmi_timer_ops vmi_timer_ops;
40274 - static inline void patch_offset(void *insnbuf,
40275 - unsigned long ip, unsigned long dest)
40276 - {
40277 -- *(unsigned long *)(insnbuf+1) = dest-ip-5;
40278 -+ *(unsigned long *)(insnbuf+1) = dest-ip-5;
40279 - }
40280 -
40281 - static unsigned patch_internal(int call, unsigned len, void *insnbuf,
40282 -@@ -102,6 +107,7 @@ static unsigned patch_internal(int call,
40283 - {
40284 - u64 reloc;
40285 - struct vmi_relocation_info *const rel = (struct vmi_relocation_info *)&reloc;
40286 -+
40287 - reloc = call_vrom_long_func(vmi_rom, get_reloc, call);
40288 - switch(rel->type) {
40289 - case VMI_RELOCATION_CALL_REL:
40290 -@@ -404,13 +410,13 @@ static void vmi_set_pud(pud_t *pudp, pud
40291 -
40292 - static void vmi_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
40293 - {
40294 -- const pte_t pte = { .pte = 0 };
40295 -+ const pte_t pte = __pte(0ULL);
40296 - vmi_ops.set_pte(pte, ptep, vmi_flags_addr(mm, addr, VMI_PAGE_PT, 0));
40297 - }
40298 -
40299 - static void vmi_pmd_clear(pmd_t *pmd)
40300 - {
40301 -- const pte_t pte = { .pte = 0 };
40302 -+ const pte_t pte = __pte(0ULL);
40303 - vmi_ops.set_pte(pte, (pte_t *)pmd, VMI_PAGE_PD);
40304 - }
40305 - #endif
40306 -@@ -438,10 +444,10 @@ vmi_startup_ipi_hook(int phys_apicid, un
40307 - ap.ss = __KERNEL_DS;
40308 - ap.esp = (unsigned long) start_esp;
40309 -
40310 -- ap.ds = __USER_DS;
40311 -- ap.es = __USER_DS;
40312 -+ ap.ds = __KERNEL_DS;
40313 -+ ap.es = __KERNEL_DS;
40314 - ap.fs = __KERNEL_PERCPU;
40315 -- ap.gs = __KERNEL_STACK_CANARY;
40316 -+ savesegment(gs, ap.gs);
40317 -
40318 - ap.eflags = 0;
40319 -
40320 -@@ -486,6 +492,18 @@ static void vmi_leave_lazy_mmu(void)
40321 - paravirt_leave_lazy_mmu();
40322 - }
40323 -
40324 -+#ifdef CONFIG_PAX_KERNEXEC
40325 -+static unsigned long vmi_pax_open_kernel(void)
40326 -+{
40327 -+ return 0;
40328 -+}
40329 -+
40330 -+static unsigned long vmi_pax_close_kernel(void)
40331 -+{
40332 -+ return 0;
40333 -+}
40334 -+#endif
40335 -+
40336 - static inline int __init check_vmi_rom(struct vrom_header *rom)
40337 - {
40338 - struct pci_header *pci;
40339 -@@ -498,6 +516,10 @@ static inline int __init check_vmi_rom(s
40340 - return 0;
40341 - if (rom->vrom_signature != VMI_SIGNATURE)
40342 - return 0;
40343 -+ if (rom->rom_length * 512 > sizeof(*rom)) {
40344 -+ printk(KERN_WARNING "PAX: VMI: ROM size too big: %x\n", rom->rom_length * 512);
40345 -+ return 0;
40346 -+ }
40347 - if (rom->api_version_maj != VMI_API_REV_MAJOR ||
40348 - rom->api_version_min+1 < VMI_API_REV_MINOR+1) {
40349 - printk(KERN_WARNING "VMI: Found mismatched rom version %d.%d\n",
40350 -@@ -562,7 +584,7 @@ static inline int __init probe_vmi_rom(v
40351 - struct vrom_header *romstart;
40352 - romstart = (struct vrom_header *)isa_bus_to_virt(base);
40353 - if (check_vmi_rom(romstart)) {
40354 -- vmi_rom = romstart;
40355 -+ vmi_rom = *romstart;
40356 - return 1;
40357 - }
40358 - }
40359 -@@ -836,6 +858,11 @@ static inline int __init activate_vmi(vo
40360 -
40361 - para_fill(pv_irq_ops.safe_halt, Halt);
40362 -
40363 -+#ifdef CONFIG_PAX_KERNEXEC
40364 -+ pv_mmu_ops.pax_open_kernel = vmi_pax_open_kernel;
40365 -+ pv_mmu_ops.pax_close_kernel = vmi_pax_close_kernel;
40366 -+#endif
40367 -+
40368 - /*
40369 - * Alternative instruction rewriting doesn't happen soon enough
40370 - * to convert VMI_IRET to a call instead of a jump; so we have
40371 -@@ -853,16 +880,16 @@ static inline int __init activate_vmi(vo
40372 -
40373 - void __init vmi_init(void)
40374 - {
40375 -- if (!vmi_rom)
40376 -+ if (!vmi_rom.rom_signature)
40377 - probe_vmi_rom();
40378 - else
40379 -- check_vmi_rom(vmi_rom);
40380 -+ check_vmi_rom(&vmi_rom);
40381 -
40382 - /* In case probing for or validating the ROM failed, basil */
40383 -- if (!vmi_rom)
40384 -+ if (!vmi_rom.rom_signature)
40385 - return;
40386 -
40387 -- reserve_top_address(-vmi_rom->virtual_top);
40388 -+ reserve_top_address(-vmi_rom.virtual_top);
40389 -
40390 - #ifdef CONFIG_X86_IO_APIC
40391 - /* This is virtual hardware; timer routing is wired correctly */
40392 -@@ -874,7 +901,7 @@ void __init vmi_activate(void)
40393 - {
40394 - unsigned long flags;
40395 -
40396 -- if (!vmi_rom)
40397 -+ if (!vmi_rom.rom_signature)
40398 - return;
40399 -
40400 - local_irq_save(flags);
40401 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S
40402 ---- linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S 2009-12-02 22:51:21.000000000 -0500
40403 -+++ linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S 2011-11-12 12:46:42.000000000 -0500
40404 +diff -urNp linux-3.0.8/arch/x86/kernel/vmlinux.lds.S linux-3.0.8/arch/x86/kernel/vmlinux.lds.S
40405 +--- linux-3.0.8/arch/x86/kernel/vmlinux.lds.S 2011-07-21 22:17:23.000000000 -0400
40406 ++++ linux-3.0.8/arch/x86/kernel/vmlinux.lds.S 2011-08-23 21:47:55.000000000 -0400
40407 @@ -26,6 +26,13 @@
40408 #include <asm/page_types.h>
40409 #include <asm/cache.h>
40410 @@ -18773,20 +16513,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40411
40412 #undef i386 /* in case the preprocessor is a 32bit one */
40413
40414 -@@ -34,40 +41,53 @@ OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONF
40415 - #ifdef CONFIG_X86_32
40416 - OUTPUT_ARCH(i386)
40417 - ENTRY(phys_startup_32)
40418 --jiffies = jiffies_64;
40419 - #else
40420 - OUTPUT_ARCH(i386:x86-64)
40421 - ENTRY(phys_startup_64)
40422 --jiffies_64 = jiffies;
40423 - #endif
40424 +@@ -69,31 +76,46 @@ jiffies_64 = jiffies;
40425
40426 PHDRS {
40427 text PT_LOAD FLAGS(5); /* R_E */
40428 -- data PT_LOAD FLAGS(7); /* RWE */
40429 +#ifdef CONFIG_X86_32
40430 + module PT_LOAD FLAGS(5); /* R_E */
40431 +#endif
40432 @@ -18795,7 +16525,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40433 +#else
40434 + rodata PT_LOAD FLAGS(4); /* R__ */
40435 +#endif
40436 -+ data PT_LOAD FLAGS(6); /* RW_ */
40437 + data PT_LOAD FLAGS(6); /* RW_ */
40438 #ifdef CONFIG_X86_64
40439 user PT_LOAD FLAGS(5); /* R_E */
40440 +#endif
40441 @@ -18837,7 +16567,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40442 HEAD_TEXT
40443 #ifdef CONFIG_X86_32
40444 . = ALIGN(PAGE_SIZE);
40445 -@@ -82,28 +102,71 @@ SECTIONS
40446 +@@ -109,13 +131,47 @@ SECTIONS
40447 IRQENTRY_TEXT
40448 *(.fixup)
40449 *(.gnu.warning)
40450 @@ -18850,11 +16580,6 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40451 +
40452 +#ifdef CONFIG_X86_32
40453 + . = ALIGN(PAGE_SIZE);
40454 -+ .vmi.rom : AT(ADDR(.vmi.rom) - LOAD_OFFSET) {
40455 -+ *(.vmi.rom)
40456 -+ } :module
40457 -+
40458 -+ . = ALIGN(PAGE_SIZE);
40459 + .module.text : AT(ADDR(.module.text) - LOAD_OFFSET) {
40460 +
40461 +#if defined(CONFIG_PAX_KERNEXEC) && defined(CONFIG_MODULES)
40462 @@ -18867,8 +16592,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40463 +
40464 + } :module
40465 +#endif
40466 -
40467 -- EXCEPTION_TABLE(16) :text = 0x9090
40468 ++
40469 + .text.end : AT(ADDR(.text.end) - LOAD_OFFSET) {
40470 + /* End of text section */
40471 + _etext = . - __KERNEL_TEXT_OFFSET;
40472 @@ -18880,19 +16604,22 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40473 + *(.idt)
40474 + . = ALIGN(PAGE_SIZE);
40475 + *(.empty_zero_page)
40476 -+ *(.swapper_pg_fixmap)
40477 -+ *(.swapper_pg_pmd)
40478 ++ *(.initial_pg_fixmap)
40479 ++ *(.initial_pg_pmd)
40480 ++ *(.initial_page_table)
40481 + *(.swapper_pg_dir)
40482 -+ *(.trampoline_pg_dir)
40483 + } :rodata
40484 +#endif
40485 +
40486 + . = ALIGN(PAGE_SIZE);
40487 + NOTES :rodata :note
40488 -+
40489 +
40490 +- EXCEPTION_TABLE(16) :text = 0x9090
40491 + EXCEPTION_TABLE(16) :rodata
40492
40493 - RO_DATA(PAGE_SIZE)
40494 + #if defined(CONFIG_DEBUG_RODATA)
40495 + /* .text should occupy whole number of pages */
40496 +@@ -127,16 +183,20 @@ SECTIONS
40497
40498 /* Data */
40499 .data : AT(ADDR(.data) - LOAD_OFFSET) {
40500 @@ -18916,29 +16643,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40501
40502 PAGE_ALIGNED_DATA(PAGE_SIZE)
40503
40504 -@@ -112,6 +175,8 @@ SECTIONS
40505 - DATA_DATA
40506 - CONSTRUCTORS
40507 -
40508 -+ jiffies = jiffies_64;
40509 -+
40510 - /* rarely changed data like cpu maps */
40511 - READ_MOSTLY_DATA(CONFIG_X86_INTERNODE_CACHE_BYTES)
40512 -
40513 -@@ -166,12 +231,6 @@ SECTIONS
40514 - }
40515 - vgetcpu_mode = VVIRT(.vgetcpu_mode);
40516 -
40517 -- . = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
40518 -- .jiffies : AT(VLOAD(.jiffies)) {
40519 -- *(.jiffies)
40520 -- }
40521 -- jiffies = VVIRT(.jiffies);
40522 --
40523 - .vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) {
40524 - *(.vsyscall_3)
40525 - }
40526 -@@ -187,12 +246,19 @@ SECTIONS
40527 +@@ -208,12 +268,19 @@ SECTIONS
40528 #endif /* CONFIG_X86_64 */
40529
40530 /* Init code and data - will be freed after init */
40531 @@ -18961,8 +16666,8 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40532 /*
40533 * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the
40534 * output PHDR, so the next output section - .init.text - should
40535 -@@ -201,12 +267,27 @@ SECTIONS
40536 - PERCPU_VADDR(0, :percpu)
40537 +@@ -222,12 +289,27 @@ SECTIONS
40538 + PERCPU_VADDR(INTERNODE_CACHE_BYTES, 0, :percpu)
40539 #endif
40540
40541 - INIT_TEXT_SECTION(PAGE_SIZE)
40542 @@ -18992,12 +16697,12 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40543 + . = ALIGN(PAGE_SIZE);
40544 + INIT_DATA_SECTION(16) :init
40545
40546 - .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) {
40547 - __x86_cpu_dev_start = .;
40548 -@@ -232,19 +313,11 @@ SECTIONS
40549 - *(.altinstr_replacement)
40550 + /*
40551 + * Code and data for a variety of lowlevel trampolines, to be
40552 +@@ -301,19 +383,12 @@ SECTIONS
40553 }
40554
40555 + . = ALIGN(8);
40556 - /*
40557 - * .exit.text is discard at runtime, not link time, to deal with
40558 - * references from .altinstructions and .eh_frame
40559 @@ -19005,18 +16710,23 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40560 - .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
40561 - EXIT_TEXT
40562 - }
40563 --
40564 +
40565 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
40566 EXIT_DATA
40567 }
40568
40569 -#if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP)
40570 +#ifndef CONFIG_SMP
40571 - PERCPU(PAGE_SIZE)
40572 + PERCPU_SECTION(INTERNODE_CACHE_BYTES)
40573 #endif
40574
40575 -@@ -267,12 +340,6 @@ SECTIONS
40576 - . = ALIGN(PAGE_SIZE);
40577 +@@ -332,16 +407,10 @@ SECTIONS
40578 + .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
40579 + __smp_locks = .;
40580 + *(.smp_locks)
40581 +- . = ALIGN(PAGE_SIZE);
40582 + __smp_locks_end = .;
40583 ++ . = ALIGN(PAGE_SIZE);
40584 }
40585
40586 -#ifdef CONFIG_X86_64
40587 @@ -19028,7 +16738,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40588 /* BSS */
40589 . = ALIGN(PAGE_SIZE);
40590 .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
40591 -@@ -288,6 +355,7 @@ SECTIONS
40592 +@@ -357,6 +426,7 @@ SECTIONS
40593 __brk_base = .;
40594 . += 64 * 1024; /* 64k alignment slop space */
40595 *(.brk_reservation) /* areas brk users have reserved */
40596 @@ -19036,10 +16746,10 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40597 __brk_limit = .;
40598 }
40599
40600 -@@ -316,13 +384,12 @@ SECTIONS
40601 +@@ -383,13 +453,12 @@ SECTIONS
40602 * for the boot processor.
40603 */
40604 - #define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load
40605 + #define INIT_PER_CPU(x) init_per_cpu__##x = x + __per_cpu_load
40606 -INIT_PER_CPU(gdt_page);
40607 INIT_PER_CPU(irq_stack_union);
40608
40609 @@ -19051,51 +16761,52 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/vmlinux.lds.S linux-2.6.32.48/arch/x8
40610 "kernel image bigger than KERNEL_IMAGE_SIZE");
40611
40612 #ifdef CONFIG_SMP
40613 -diff -urNp linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c
40614 ---- linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c 2011-11-12 12:44:28.000000000 -0500
40615 -+++ linux-2.6.32.48/arch/x86/kernel/vsyscall_64.c 2011-11-12 12:46:42.000000000 -0500
40616 -@@ -80,6 +80,7 @@ void update_vsyscall(struct timespec *wa
40617 -
40618 - write_seqlock_irqsave(&vsyscall_gtod_data.lock, flags);
40619 - /* copy vsyscall data */
40620 -+ strlcpy(vsyscall_gtod_data.clock.name, clock->name, sizeof vsyscall_gtod_data.clock.name);
40621 - vsyscall_gtod_data.clock.vread = clock->vread;
40622 - vsyscall_gtod_data.clock.cycle_last = clock->cycle_last;
40623 - vsyscall_gtod_data.clock.mask = clock->mask;
40624 -@@ -203,7 +204,7 @@ vgetcpu(unsigned *cpu, unsigned *node, s
40625 - We do this here because otherwise user space would do it on
40626 - its own in a likely inferior way (no access to jiffies).
40627 - If you don't like it pass NULL. */
40628 -- if (tcache && tcache->blob[0] == (j = __jiffies)) {
40629 -+ if (tcache && tcache->blob[0] == (j = jiffies)) {
40630 - p = tcache->blob[1];
40631 - } else if (__vgetcpu_mode == VGETCPU_RDTSCP) {
40632 - /* Load per CPU data from RDTSCP */
40633 -diff -urNp linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c
40634 ---- linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c 2009-12-02 22:51:21.000000000 -0500
40635 -+++ linux-2.6.32.48/arch/x86/kernel/x8664_ksyms_64.c 2011-11-12 12:46:42.000000000 -0500
40636 -@@ -30,8 +30,6 @@ EXPORT_SYMBOL(__put_user_8);
40637 -
40638 - EXPORT_SYMBOL(copy_user_generic);
40639 +diff -urNp linux-3.0.8/arch/x86/kernel/vsyscall_64.c linux-3.0.8/arch/x86/kernel/vsyscall_64.c
40640 +--- linux-3.0.8/arch/x86/kernel/vsyscall_64.c 2011-07-21 22:17:23.000000000 -0400
40641 ++++ linux-3.0.8/arch/x86/kernel/vsyscall_64.c 2011-08-23 21:47:55.000000000 -0400
40642 +@@ -53,7 +53,7 @@ DEFINE_VVAR(int, vgetcpu_mode);
40643 + DEFINE_VVAR(struct vsyscall_gtod_data, vsyscall_gtod_data) =
40644 + {
40645 + .lock = __SEQLOCK_UNLOCKED(__vsyscall_gtod_data.lock),
40646 +- .sysctl_enabled = 1,
40647 ++ .sysctl_enabled = 0,
40648 + };
40649 +
40650 + void update_vsyscall_tz(void)
40651 +@@ -231,7 +231,7 @@ static long __vsyscall(3) venosys_1(void
40652 + static ctl_table kernel_table2[] = {
40653 + { .procname = "vsyscall64",
40654 + .data = &vsyscall_gtod_data.sysctl_enabled, .maxlen = sizeof(int),
40655 +- .mode = 0644,
40656 ++ .mode = 0444,
40657 + .proc_handler = proc_dointvec },
40658 + {}
40659 + };
40660 +diff -urNp linux-3.0.8/arch/x86/kernel/x8664_ksyms_64.c linux-3.0.8/arch/x86/kernel/x8664_ksyms_64.c
40661 +--- linux-3.0.8/arch/x86/kernel/x8664_ksyms_64.c 2011-07-21 22:17:23.000000000 -0400
40662 ++++ linux-3.0.8/arch/x86/kernel/x8664_ksyms_64.c 2011-08-23 21:47:55.000000000 -0400
40663 +@@ -29,8 +29,6 @@ EXPORT_SYMBOL(__put_user_8);
40664 + EXPORT_SYMBOL(copy_user_generic_string);
40665 + EXPORT_SYMBOL(copy_user_generic_unrolled);
40666 EXPORT_SYMBOL(__copy_user_nocache);
40667 --EXPORT_SYMBOL(copy_from_user);
40668 --EXPORT_SYMBOL(copy_to_user);
40669 - EXPORT_SYMBOL(__copy_from_user_inatomic);
40670 +-EXPORT_SYMBOL(_copy_from_user);
40671 +-EXPORT_SYMBOL(_copy_to_user);
40672
40673 EXPORT_SYMBOL(copy_page);
40674 -diff -urNp linux-2.6.32.48/arch/x86/kernel/xsave.c linux-2.6.32.48/arch/x86/kernel/xsave.c
40675 ---- linux-2.6.32.48/arch/x86/kernel/xsave.c 2009-12-02 22:51:21.000000000 -0500
40676 -+++ linux-2.6.32.48/arch/x86/kernel/xsave.c 2011-11-12 12:46:42.000000000 -0500
40677 -@@ -54,7 +54,7 @@ int check_for_xstate(struct i387_fxsave_
40678 + EXPORT_SYMBOL(clear_page);
40679 +diff -urNp linux-3.0.8/arch/x86/kernel/xsave.c linux-3.0.8/arch/x86/kernel/xsave.c
40680 +--- linux-3.0.8/arch/x86/kernel/xsave.c 2011-07-21 22:17:23.000000000 -0400
40681 ++++ linux-3.0.8/arch/x86/kernel/xsave.c 2011-10-06 04:17:55.000000000 -0400
40682 +@@ -130,7 +130,7 @@ int check_for_xstate(struct i387_fxsave_
40683 fx_sw_user->xstate_size > fx_sw_user->extended_size)
40684 - return -1;
40685 + return -EINVAL;
40686
40687 - err = __get_user(magic2, (__u32 *) (((void *)fpstate) +
40688 + err = __get_user(magic2, (__u32 __user *) (((void __user *)fpstate) +
40689 fx_sw_user->extended_size -
40690 FP_XSTATE_MAGIC2_SIZE));
40691 - /*
40692 -@@ -196,7 +196,7 @@ fx_only:
40693 + if (err)
40694 +@@ -267,7 +267,7 @@ fx_only:
40695 * the other extended state.
40696 */
40697 xrstor_state(init_xstate_buf, pcntxt_mask & ~XSTATE_FPSSE);
40698 @@ -19104,38 +16815,36 @@ diff -urNp linux-2.6.32.48/arch/x86/kernel/xsave.c linux-2.6.32.48/arch/x86/kern
40699 }
40700
40701 /*
40702 -@@ -228,7 +228,7 @@ int restore_i387_xstate(void __user *buf
40703 - if (task_thread_info(tsk)->status & TS_XSAVE)
40704 +@@ -299,7 +299,7 @@ int restore_i387_xstate(void __user *buf
40705 + if (use_xsave())
40706 err = restore_user_xstate(buf);
40707 else
40708 - err = fxrstor_checking((__force struct i387_fxsave_struct *)
40709 -+ err = fxrstor_checking((struct i387_fxsave_struct __user *)
40710 ++ err = fxrstor_checking((struct i387_fxsave_struct __force_kernel *)
40711 buf);
40712 if (unlikely(err)) {
40713 /*
40714 -diff -urNp linux-2.6.32.48/arch/x86/kvm/emulate.c linux-2.6.32.48/arch/x86/kvm/emulate.c
40715 ---- linux-2.6.32.48/arch/x86/kvm/emulate.c 2011-11-12 12:44:28.000000000 -0500
40716 -+++ linux-2.6.32.48/arch/x86/kvm/emulate.c 2011-11-12 12:46:42.000000000 -0500
40717 -@@ -81,8 +81,8 @@
40718 - #define Src2CL (1<<29)
40719 +diff -urNp linux-3.0.8/arch/x86/kvm/emulate.c linux-3.0.8/arch/x86/kvm/emulate.c
40720 +--- linux-3.0.8/arch/x86/kvm/emulate.c 2011-07-21 22:17:23.000000000 -0400
40721 ++++ linux-3.0.8/arch/x86/kvm/emulate.c 2011-08-23 21:47:55.000000000 -0400
40722 +@@ -96,7 +96,7 @@
40723 #define Src2ImmByte (2<<29)
40724 #define Src2One (3<<29)
40725 --#define Src2Imm16 (4<<29)
40726 + #define Src2Imm (4<<29)
40727 -#define Src2Mask (7<<29)
40728 -+#define Src2Imm16 (4U<<29)
40729 +#define Src2Mask (7U<<29)
40730
40731 - enum {
40732 - Group1_80, Group1_81, Group1_82, Group1_83,
40733 -@@ -411,6 +411,7 @@ static u32 group2_table[] = {
40734 + #define X2(x...) x, x
40735 + #define X3(x...) X2(x), x
40736 +@@ -207,6 +207,7 @@ struct gprefix {
40737
40738 - #define ____emulate_2op(_op, _src, _dst, _eflags, _x, _y, _suffix) \
40739 + #define ____emulate_2op(_op, _src, _dst, _eflags, _x, _y, _suffix, _dsttype) \
40740 do { \
40741 + unsigned long _tmp; \
40742 __asm__ __volatile__ ( \
40743 _PRE_EFLAGS("0", "4", "2") \
40744 _op _suffix " %"_x"3,%1; " \
40745 -@@ -424,8 +425,6 @@ static u32 group2_table[] = {
40746 +@@ -220,8 +221,6 @@ struct gprefix {
40747 /* Raw emulation: instruction has two explicit operands. */
40748 #define __emulate_2op_nobyte(_op,_src,_dst,_eflags,_wx,_wy,_lx,_ly,_qx,_qy) \
40749 do { \
40750 @@ -19143,19 +16852,19 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/emulate.c linux-2.6.32.48/arch/x86/kvm/e
40751 - \
40752 switch ((_dst).bytes) { \
40753 case 2: \
40754 - ____emulate_2op(_op,_src,_dst,_eflags,_wx,_wy,"w"); \
40755 -@@ -441,7 +440,6 @@ static u32 group2_table[] = {
40756 + ____emulate_2op(_op,_src,_dst,_eflags,_wx,_wy,"w",u16);\
40757 +@@ -237,7 +236,6 @@ struct gprefix {
40758
40759 #define __emulate_2op(_op,_src,_dst,_eflags,_bx,_by,_wx,_wy,_lx,_ly,_qx,_qy) \
40760 do { \
40761 - unsigned long _tmp; \
40762 switch ((_dst).bytes) { \
40763 case 1: \
40764 - ____emulate_2op(_op,_src,_dst,_eflags,_bx,_by,"b"); \
40765 -diff -urNp linux-2.6.32.48/arch/x86/kvm/lapic.c linux-2.6.32.48/arch/x86/kvm/lapic.c
40766 ---- linux-2.6.32.48/arch/x86/kvm/lapic.c 2011-11-12 12:44:28.000000000 -0500
40767 -+++ linux-2.6.32.48/arch/x86/kvm/lapic.c 2011-11-12 12:46:42.000000000 -0500
40768 -@@ -52,7 +52,7 @@
40769 + ____emulate_2op(_op,_src,_dst,_eflags,_bx,_by,"b",u8); \
40770 +diff -urNp linux-3.0.8/arch/x86/kvm/lapic.c linux-3.0.8/arch/x86/kvm/lapic.c
40771 +--- linux-3.0.8/arch/x86/kvm/lapic.c 2011-07-21 22:17:23.000000000 -0400
40772 ++++ linux-3.0.8/arch/x86/kvm/lapic.c 2011-08-23 21:47:55.000000000 -0400
40773 +@@ -53,7 +53,7 @@
40774 #define APIC_BUS_CYCLE_NS 1
40775
40776 /* #define apic_debug(fmt,arg...) printk(KERN_WARNING fmt,##arg) */
40777 @@ -19164,49 +16873,90 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/lapic.c linux-2.6.32.48/arch/x86/kvm/lap
40778
40779 #define APIC_LVT_NUM 6
40780 /* 14 is the version for Xeon and Pentium 8.4.8*/
40781 -diff -urNp linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h
40782 ---- linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h 2011-11-12 12:44:28.000000000 -0500
40783 -+++ linux-2.6.32.48/arch/x86/kvm/paging_tmpl.h 2011-11-12 12:46:42.000000000 -0500
40784 -@@ -416,6 +416,8 @@ static int FNAME(page_fault)(struct kvm_
40785 - int level = PT_PAGE_TABLE_LEVEL;
40786 +diff -urNp linux-3.0.8/arch/x86/kvm/mmu.c linux-3.0.8/arch/x86/kvm/mmu.c
40787 +--- linux-3.0.8/arch/x86/kvm/mmu.c 2011-07-21 22:17:23.000000000 -0400
40788 ++++ linux-3.0.8/arch/x86/kvm/mmu.c 2011-08-23 21:47:55.000000000 -0400
40789 +@@ -3238,7 +3238,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *
40790 +
40791 + pgprintk("%s: gpa %llx bytes %d\n", __func__, gpa, bytes);
40792 +
40793 +- invlpg_counter = atomic_read(&vcpu->kvm->arch.invlpg_counter);
40794 ++ invlpg_counter = atomic_read_unchecked(&vcpu->kvm->arch.invlpg_counter);
40795 +
40796 + /*
40797 + * Assume that the pte write on a page table of the same type
40798 +@@ -3270,7 +3270,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *
40799 + }
40800 +
40801 + spin_lock(&vcpu->kvm->mmu_lock);
40802 +- if (atomic_read(&vcpu->kvm->arch.invlpg_counter) != invlpg_counter)
40803 ++ if (atomic_read_unchecked(&vcpu->kvm->arch.invlpg_counter) != invlpg_counter)
40804 + gentry = 0;
40805 + kvm_mmu_free_some_pages(vcpu);
40806 + ++vcpu->kvm->stat.mmu_pte_write;
40807 +diff -urNp linux-3.0.8/arch/x86/kvm/paging_tmpl.h linux-3.0.8/arch/x86/kvm/paging_tmpl.h
40808 +--- linux-3.0.8/arch/x86/kvm/paging_tmpl.h 2011-07-21 22:17:23.000000000 -0400
40809 ++++ linux-3.0.8/arch/x86/kvm/paging_tmpl.h 2011-10-06 04:17:55.000000000 -0400
40810 +@@ -182,7 +182,7 @@ walk:
40811 + break;
40812 + }
40813 +
40814 +- ptep_user = (pt_element_t __user *)((void *)host_addr + offset);
40815 ++ ptep_user = (pt_element_t __force_user *)((void *)host_addr + offset);
40816 + if (unlikely(__copy_from_user(&pte, ptep_user, sizeof(pte)))) {
40817 + present = false;
40818 + break;
40819 +@@ -583,6 +583,8 @@ static int FNAME(page_fault)(struct kvm_
40820 unsigned long mmu_seq;
40821 + bool map_writable;
40822
40823 + pax_track_stack();
40824 +
40825 pgprintk("%s: addr %lx err %x\n", __func__, addr, error_code);
40826 - kvm_mmu_audit(vcpu, "pre page fault");
40827
40828 -diff -urNp linux-2.6.32.48/arch/x86/kvm/svm.c linux-2.6.32.48/arch/x86/kvm/svm.c
40829 ---- linux-2.6.32.48/arch/x86/kvm/svm.c 2011-11-12 12:44:28.000000000 -0500
40830 -+++ linux-2.6.32.48/arch/x86/kvm/svm.c 2011-11-12 12:46:42.000000000 -0500
40831 -@@ -2486,7 +2486,11 @@ static void reload_tss(struct kvm_vcpu *
40832 + r = mmu_topup_memory_caches(vcpu);
40833 +@@ -703,7 +705,7 @@ static void FNAME(invlpg)(struct kvm_vcp
40834 + if (need_flush)
40835 + kvm_flush_remote_tlbs(vcpu->kvm);
40836 +
40837 +- atomic_inc(&vcpu->kvm->arch.invlpg_counter);
40838 ++ atomic_inc_unchecked(&vcpu->kvm->arch.invlpg_counter);
40839 +
40840 + spin_unlock(&vcpu->kvm->mmu_lock);
40841 +
40842 +diff -urNp linux-3.0.8/arch/x86/kvm/svm.c linux-3.0.8/arch/x86/kvm/svm.c
40843 +--- linux-3.0.8/arch/x86/kvm/svm.c 2011-07-21 22:17:23.000000000 -0400
40844 ++++ linux-3.0.8/arch/x86/kvm/svm.c 2011-08-23 21:47:55.000000000 -0400
40845 +@@ -3377,7 +3377,11 @@ static void reload_tss(struct kvm_vcpu *
40846 int cpu = raw_smp_processor_id();
40847
40848 - struct svm_cpu_data *svm_data = per_cpu(svm_data, cpu);
40849 + struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
40850 +
40851 + pax_open_kernel();
40852 - svm_data->tss_desc->type = 9; /* available 32/64-bit TSS */
40853 + sd->tss_desc->type = 9; /* available 32/64-bit TSS */
40854 + pax_close_kernel();
40855 +
40856 load_TR_desc();
40857 }
40858
40859 -@@ -2947,7 +2951,7 @@ static bool svm_gb_page_enable(void)
40860 - return true;
40861 - }
40862 +@@ -3755,6 +3759,10 @@ static void svm_vcpu_run(struct kvm_vcpu
40863 + #endif
40864 + #endif
40865
40866 --static struct kvm_x86_ops svm_x86_ops = {
40867 -+static const struct kvm_x86_ops svm_x86_ops = {
40868 - .cpu_has_kvm_support = has_svm,
40869 - .disabled_by_bios = is_disabled,
40870 - .hardware_setup = svm_hardware_setup,
40871 -diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
40872 ---- linux-2.6.32.48/arch/x86/kvm/vmx.c 2011-11-12 12:44:28.000000000 -0500
40873 -+++ linux-2.6.32.48/arch/x86/kvm/vmx.c 2011-11-12 12:46:42.000000000 -0500
40874 -@@ -570,7 +570,11 @@ static void reload_tss(void)
40875 ++#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_MEMORY_UDEREF)
40876 ++ __set_fs(current_thread_info()->addr_limit);
40877 ++#endif
40878 ++
40879 + reload_tss(vcpu);
40880 +
40881 + local_irq_disable();
40882 +diff -urNp linux-3.0.8/arch/x86/kvm/vmx.c linux-3.0.8/arch/x86/kvm/vmx.c
40883 +--- linux-3.0.8/arch/x86/kvm/vmx.c 2011-07-21 22:17:23.000000000 -0400
40884 ++++ linux-3.0.8/arch/x86/kvm/vmx.c 2011-08-23 21:47:55.000000000 -0400
40885 +@@ -797,7 +797,11 @@ static void reload_tss(void)
40886 + struct desc_struct *descs;
40887
40888 - kvm_get_gdt(&gdt);
40889 - descs = (void *)gdt.base;
40890 + descs = (void *)gdt->address;
40891 +
40892 + pax_open_kernel();
40893 descs[GDT_ENTRY_TSS].type = 9; /* available TSS */
40894 @@ -19215,7 +16965,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
40895 load_TR_desc();
40896 }
40897
40898 -@@ -1410,8 +1414,11 @@ static __init int hardware_setup(void)
40899 +@@ -1747,8 +1751,11 @@ static __init int hardware_setup(void)
40900 if (!cpu_has_vmx_flexpriority())
40901 flexpriority_enabled = 0;
40902
40903 @@ -19229,16 +16979,16 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
40904
40905 if (enable_ept && !cpu_has_vmx_ept_2m_page())
40906 kvm_disable_largepages();
40907 -@@ -2362,7 +2369,7 @@ static int vmx_vcpu_setup(struct vcpu_vm
40908 - vmcs_writel(HOST_IDTR_BASE, dt.base); /* 22.2.4 */
40909 +@@ -2814,7 +2821,7 @@ static int vmx_vcpu_setup(struct vcpu_vm
40910 + vmcs_writel(HOST_IDTR_BASE, dt.address); /* 22.2.4 */
40911
40912 asm("mov $.Lkvm_vmx_return, %0" : "=r"(kvm_vmx_return));
40913 - vmcs_writel(HOST_RIP, kvm_vmx_return); /* 22.2.5 */
40914 + vmcs_writel(HOST_RIP, ktla_ktva(kvm_vmx_return)); /* 22.2.5 */
40915 vmcs_write32(VM_EXIT_MSR_STORE_COUNT, 0);
40916 vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, 0);
40917 - vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, 0);
40918 -@@ -3718,6 +3725,12 @@ static void vmx_vcpu_run(struct kvm_vcpu
40919 + vmcs_write64(VM_EXIT_MSR_LOAD_ADDR, __pa(vmx->msr_autoload.host));
40920 +@@ -4211,6 +4218,12 @@ static void __noclone vmx_vcpu_run(struc
40921 "jmp .Lkvm_vmx_return \n\t"
40922 ".Llaunched: " __ex(ASM_VMX_VMRESUME) "\n\t"
40923 ".Lkvm_vmx_return: "
40924 @@ -19249,26 +16999,23 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
40925 +#endif
40926 +
40927 /* Save guest registers, load host registers, keep flags */
40928 - "xchg %0, (%%"R"sp) \n\t"
40929 - "mov %%"R"ax, %c[rax](%0) \n\t"
40930 -@@ -3764,8 +3777,13 @@ static void vmx_vcpu_run(struct kvm_vcpu
40931 - [r15]"i"(offsetof(struct vcpu_vmx, vcpu.arch.regs[VCPU_REGS_R15])),
40932 + "mov %0, %c[wordsize](%%"R"sp) \n\t"
40933 + "pop %0 \n\t"
40934 +@@ -4259,6 +4272,11 @@ static void __noclone vmx_vcpu_run(struc
40935 #endif
40936 - [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2))
40937 + [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
40938 + [wordsize]"i"(sizeof(ulong))
40939 +
40940 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
40941 + ,[cs]"i"(__KERNEL_CS)
40942 +#endif
40943 +
40944 : "cc", "memory"
40945 -- , R"bx", R"di", R"si"
40946 -+ , R"ax", R"bx", R"di", R"si"
40947 + , R"ax", R"bx", R"di", R"si"
40948 #ifdef CONFIG_X86_64
40949 - , "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
40950 - #endif
40951 -@@ -3782,7 +3800,16 @@ static void vmx_vcpu_run(struct kvm_vcpu
40952 - if (vmx->rmode.irq.pending)
40953 - fixup_rmode_irq(vmx);
40954 +@@ -4276,7 +4294,16 @@ static void __noclone vmx_vcpu_run(struc
40955 +
40956 + vmx->idt_vectoring_info = vmcs_read32(IDT_VECTORING_INFO_FIELD);
40957
40958 - asm("mov %0, %%ds; mov %0, %%es" : : "r"(__USER_DS));
40959 + asm("mov %0, %%ds; mov %0, %%es; mov %0, %%ss" : : "r"(__KERNEL_DS));
40960 @@ -19283,29 +17030,31 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/vmx.c linux-2.6.32.48/arch/x86/kvm/vmx.c
40961 +
40962 vmx->launched = 1;
40963
40964 - vmx_complete_interrupts(vmx);
40965 -@@ -3957,7 +3984,7 @@ static bool vmx_gb_page_enable(void)
40966 - return false;
40967 - }
40968 -
40969 --static struct kvm_x86_ops vmx_x86_ops = {
40970 -+static const struct kvm_x86_ops vmx_x86_ops = {
40971 - .cpu_has_kvm_support = cpu_has_kvm_support,
40972 - .disabled_by_bios = vmx_disabled_by_bios,
40973 - .hardware_setup = hardware_setup,
40974 -diff -urNp linux-2.6.32.48/arch/x86/kvm/x86.c linux-2.6.32.48/arch/x86/kvm/x86.c
40975 ---- linux-2.6.32.48/arch/x86/kvm/x86.c 2011-11-12 12:44:28.000000000 -0500
40976 -+++ linux-2.6.32.48/arch/x86/kvm/x86.c 2011-11-12 12:46:42.000000000 -0500
40977 -@@ -82,7 +82,7 @@ static void update_cr8_intercept(struct
40978 - static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid,
40979 - struct kvm_cpuid_entry2 __user *entries);
40980 -
40981 --struct kvm_x86_ops *kvm_x86_ops;
40982 -+const struct kvm_x86_ops *kvm_x86_ops;
40983 - EXPORT_SYMBOL_GPL(kvm_x86_ops);
40984 -
40985 - int ignore_msrs = 0;
40986 -@@ -1430,15 +1430,20 @@ static int kvm_vcpu_ioctl_set_cpuid2(str
40987 + vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
40988 +diff -urNp linux-3.0.8/arch/x86/kvm/x86.c linux-3.0.8/arch/x86/kvm/x86.c
40989 +--- linux-3.0.8/arch/x86/kvm/x86.c 2011-07-21 22:17:23.000000000 -0400
40990 ++++ linux-3.0.8/arch/x86/kvm/x86.c 2011-10-06 04:17:55.000000000 -0400
40991 +@@ -1313,8 +1313,8 @@ static int xen_hvm_config(struct kvm_vcp
40992 + {
40993 + struct kvm *kvm = vcpu->kvm;
40994 + int lm = is_long_mode(vcpu);
40995 +- u8 *blob_addr = lm ? (u8 *)(long)kvm->arch.xen_hvm_config.blob_addr_64
40996 +- : (u8 *)(long)kvm->arch.xen_hvm_config.blob_addr_32;
40997 ++ u8 __user *blob_addr = lm ? (u8 __user *)(long)kvm->arch.xen_hvm_config.blob_addr_64
40998 ++ : (u8 __user *)(long)kvm->arch.xen_hvm_config.blob_addr_32;
40999 + u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
41000 + : kvm->arch.xen_hvm_config.blob_size_32;
41001 + u32 page_num = data & ~PAGE_MASK;
41002 +@@ -2057,6 +2057,8 @@ long kvm_arch_dev_ioctl(struct file *fil
41003 + if (n < msr_list.nmsrs)
41004 + goto out;
41005 + r = -EFAULT;
41006 ++ if (num_msrs_to_save > ARRAY_SIZE(msrs_to_save))
41007 ++ goto out;
41008 + if (copy_to_user(user_msr_list->indices, &msrs_to_save,
41009 + num_msrs_to_save * sizeof(u32)))
41010 + goto out;
41011 +@@ -2229,15 +2231,20 @@ static int kvm_vcpu_ioctl_set_cpuid2(str
41012 struct kvm_cpuid2 *cpuid,
41013 struct kvm_cpuid_entry2 __user *entries)
41014 {
41015 @@ -19328,15 +17077,14 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/x86.c linux-2.6.32.48/arch/x86/kvm/x86.c
41016 + }
41017 vcpu->arch.cpuid_nent = cpuid->nent;
41018 kvm_apic_set_version(vcpu);
41019 - return 0;
41020 -@@ -1451,16 +1456,20 @@ static int kvm_vcpu_ioctl_get_cpuid2(str
41021 + kvm_x86_ops->cpuid_update(vcpu);
41022 +@@ -2252,15 +2259,19 @@ static int kvm_vcpu_ioctl_get_cpuid2(str
41023 struct kvm_cpuid2 *cpuid,
41024 struct kvm_cpuid_entry2 __user *entries)
41025 {
41026 - int r;
41027 + int r, i;
41028
41029 - vcpu_load(vcpu);
41030 r = -E2BIG;
41031 if (cpuid->nent < vcpu->arch.cpuid_nent)
41032 goto out;
41033 @@ -19353,7 +17101,7 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/x86.c linux-2.6.32.48/arch/x86/kvm/x86.c
41034 return 0;
41035
41036 out:
41037 -@@ -1678,7 +1687,7 @@ static int kvm_vcpu_ioctl_set_lapic(stru
41038 +@@ -2579,7 +2590,7 @@ static int kvm_vcpu_ioctl_set_lapic(stru
41039 static int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu,
41040 struct kvm_interrupt *irq)
41041 {
41042 @@ -19362,262 +17110,596 @@ diff -urNp linux-2.6.32.48/arch/x86/kvm/x86.c linux-2.6.32.48/arch/x86/kvm/x86.c
41043 return -EINVAL;
41044 if (irqchip_in_kernel(vcpu->kvm))
41045 return -ENXIO;
41046 -@@ -3260,10 +3269,10 @@ static struct notifier_block kvmclock_cp
41047 - .notifier_call = kvmclock_cpufreq_notifier
41048 - };
41049 +@@ -4878,7 +4889,7 @@ void kvm_after_handle_nmi(struct kvm_vcp
41050 + }
41051 + EXPORT_SYMBOL_GPL(kvm_after_handle_nmi);
41052
41053 -int kvm_arch_init(void *opaque)
41054 +int kvm_arch_init(const void *opaque)
41055 {
41056 - int r, cpu;
41057 -- struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
41058 -+ const struct kvm_x86_ops *ops = (const struct kvm_x86_ops *)opaque;
41059 -
41060 - if (kvm_x86_ops) {
41061 - printk(KERN_ERR "kvm: already loaded the other module\n");
41062 -diff -urNp linux-2.6.32.48/arch/x86/lguest/boot.c linux-2.6.32.48/arch/x86/lguest/boot.c
41063 ---- linux-2.6.32.48/arch/x86/lguest/boot.c 2009-12-02 22:51:21.000000000 -0500
41064 -+++ linux-2.6.32.48/arch/x86/lguest/boot.c 2011-11-12 12:46:42.000000000 -0500
41065 -@@ -1172,9 +1172,10 @@ static __init int early_put_chars(u32 vt
41066 + int r;
41067 + struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
41068 +diff -urNp linux-3.0.8/arch/x86/lguest/boot.c linux-3.0.8/arch/x86/lguest/boot.c
41069 +--- linux-3.0.8/arch/x86/lguest/boot.c 2011-07-21 22:17:23.000000000 -0400
41070 ++++ linux-3.0.8/arch/x86/lguest/boot.c 2011-08-23 21:47:55.000000000 -0400
41071 +@@ -1176,9 +1176,10 @@ static __init int early_put_chars(u32 vt
41072 * Rebooting also tells the Host we're finished, but the RESTART flag tells the
41073 * Launcher to reboot us.
41074 */
41075 -static void lguest_restart(char *reason)
41076 +static __noreturn void lguest_restart(char *reason)
41077 {
41078 - kvm_hypercall2(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART);
41079 + hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0, 0);
41080 + BUG();
41081 }
41082
41083 /*G:050
41084 -diff -urNp linux-2.6.32.48/arch/x86/lib/atomic64_32.c linux-2.6.32.48/arch/x86/lib/atomic64_32.c
41085 ---- linux-2.6.32.48/arch/x86/lib/atomic64_32.c 2009-12-02 22:51:21.000000000 -0500
41086 -+++ linux-2.6.32.48/arch/x86/lib/atomic64_32.c 2011-11-12 12:46:42.000000000 -0500
41087 -@@ -25,6 +25,12 @@ u64 atomic64_cmpxchg(atomic64_t *ptr, u6
41088 - }
41089 - EXPORT_SYMBOL(atomic64_cmpxchg);
41090 -
41091 -+u64 atomic64_cmpxchg_unchecked(atomic64_unchecked_t *ptr, u64 old_val, u64 new_val)
41092 -+{
41093 -+ return cmpxchg8b(&ptr->counter, old_val, new_val);
41094 -+}
41095 -+EXPORT_SYMBOL(atomic64_cmpxchg_unchecked);
41096 +diff -urNp linux-3.0.8/arch/x86/lib/atomic64_32.c linux-3.0.8/arch/x86/lib/atomic64_32.c
41097 +--- linux-3.0.8/arch/x86/lib/atomic64_32.c 2011-07-21 22:17:23.000000000 -0400
41098 ++++ linux-3.0.8/arch/x86/lib/atomic64_32.c 2011-08-23 21:47:55.000000000 -0400
41099 +@@ -8,18 +8,30 @@
41100 +
41101 + long long atomic64_read_cx8(long long, const atomic64_t *v);
41102 + EXPORT_SYMBOL(atomic64_read_cx8);
41103 ++long long atomic64_read_unchecked_cx8(long long, const atomic64_unchecked_t *v);
41104 ++EXPORT_SYMBOL(atomic64_read_unchecked_cx8);
41105 + long long atomic64_set_cx8(long long, const atomic64_t *v);
41106 + EXPORT_SYMBOL(atomic64_set_cx8);
41107 ++long long atomic64_set_unchecked_cx8(long long, const atomic64_unchecked_t *v);
41108 ++EXPORT_SYMBOL(atomic64_set_unchecked_cx8);
41109 + long long atomic64_xchg_cx8(long long, unsigned high);
41110 + EXPORT_SYMBOL(atomic64_xchg_cx8);
41111 + long long atomic64_add_return_cx8(long long a, atomic64_t *v);
41112 + EXPORT_SYMBOL(atomic64_add_return_cx8);
41113 ++long long atomic64_add_return_unchecked_cx8(long long a, atomic64_unchecked_t *v);
41114 ++EXPORT_SYMBOL(atomic64_add_return_unchecked_cx8);
41115 + long long atomic64_sub_return_cx8(long long a, atomic64_t *v);
41116 + EXPORT_SYMBOL(atomic64_sub_return_cx8);
41117 ++long long atomic64_sub_return_unchecked_cx8(long long a, atomic64_unchecked_t *v);
41118 ++EXPORT_SYMBOL(atomic64_sub_return_unchecked_cx8);
41119 + long long atomic64_inc_return_cx8(long long a, atomic64_t *v);
41120 + EXPORT_SYMBOL(atomic64_inc_return_cx8);
41121 ++long long atomic64_inc_return_unchecked_cx8(long long a, atomic64_unchecked_t *v);
41122 ++EXPORT_SYMBOL(atomic64_inc_return_unchecked_cx8);
41123 + long long atomic64_dec_return_cx8(long long a, atomic64_t *v);
41124 + EXPORT_SYMBOL(atomic64_dec_return_cx8);
41125 ++long long atomic64_dec_return_unchecked_cx8(long long a, atomic64_unchecked_t *v);
41126 ++EXPORT_SYMBOL(atomic64_dec_return_unchecked_cx8);
41127 + long long atomic64_dec_if_positive_cx8(atomic64_t *v);
41128 + EXPORT_SYMBOL(atomic64_dec_if_positive_cx8);
41129 + int atomic64_inc_not_zero_cx8(atomic64_t *v);
41130 +@@ -30,26 +42,46 @@ EXPORT_SYMBOL(atomic64_add_unless_cx8);
41131 + #ifndef CONFIG_X86_CMPXCHG64
41132 + long long atomic64_read_386(long long, const atomic64_t *v);
41133 + EXPORT_SYMBOL(atomic64_read_386);
41134 ++long long atomic64_read_unchecked_386(long long, const atomic64_unchecked_t *v);
41135 ++EXPORT_SYMBOL(atomic64_read_unchecked_386);
41136 + long long atomic64_set_386(long long, const atomic64_t *v);
41137 + EXPORT_SYMBOL(atomic64_set_386);
41138 ++long long atomic64_set_unchecked_386(long long, const atomic64_unchecked_t *v);
41139 ++EXPORT_SYMBOL(atomic64_set_unchecked_386);
41140 + long long atomic64_xchg_386(long long, unsigned high);
41141 + EXPORT_SYMBOL(atomic64_xchg_386);
41142 + long long atomic64_add_return_386(long long a, atomic64_t *v);
41143 + EXPORT_SYMBOL(atomic64_add_return_386);
41144 ++long long atomic64_add_return_unchecked_386(long long a, atomic64_unchecked_t *v);
41145 ++EXPORT_SYMBOL(atomic64_add_return_unchecked_386);
41146 + long long atomic64_sub_return_386(long long a, atomic64_t *v);
41147 + EXPORT_SYMBOL(atomic64_sub_return_386);
41148 ++long long atomic64_sub_return_unchecked_386(long long a, atomic64_unchecked_t *v);
41149 ++EXPORT_SYMBOL(atomic64_sub_return_unchecked_386);
41150 + long long atomic64_inc_return_386(long long a, atomic64_t *v);
41151 + EXPORT_SYMBOL(atomic64_inc_return_386);
41152 ++long long atomic64_inc_return_unchecked_386(long long a, atomic64_unchecked_t *v);
41153 ++EXPORT_SYMBOL(atomic64_inc_return_unchecked_386);
41154 + long long atomic64_dec_return_386(long long a, atomic64_t *v);
41155 + EXPORT_SYMBOL(atomic64_dec_return_386);
41156 ++long long atomic64_dec_return_unchecked_386(long long a, atomic64_unchecked_t *v);
41157 ++EXPORT_SYMBOL(atomic64_dec_return_unchecked_386);
41158 + long long atomic64_add_386(long long a, atomic64_t *v);
41159 + EXPORT_SYMBOL(atomic64_add_386);
41160 ++long long atomic64_add_unchecked_386(long long a, atomic64_unchecked_t *v);
41161 ++EXPORT_SYMBOL(atomic64_add_unchecked_386);
41162 + long long atomic64_sub_386(long long a, atomic64_t *v);
41163 + EXPORT_SYMBOL(atomic64_sub_386);
41164 ++long long atomic64_sub_unchecked_386(long long a, atomic64_unchecked_t *v);
41165 ++EXPORT_SYMBOL(atomic64_sub_unchecked_386);
41166 + long long atomic64_inc_386(long long a, atomic64_t *v);
41167 + EXPORT_SYMBOL(atomic64_inc_386);
41168 ++long long atomic64_inc_unchecked_386(long long a, atomic64_unchecked_t *v);
41169 ++EXPORT_SYMBOL(atomic64_inc_unchecked_386);
41170 + long long atomic64_dec_386(long long a, atomic64_t *v);
41171 + EXPORT_SYMBOL(atomic64_dec_386);
41172 ++long long atomic64_dec_unchecked_386(long long a, atomic64_unchecked_t *v);
41173 ++EXPORT_SYMBOL(atomic64_dec_unchecked_386);
41174 + long long atomic64_dec_if_positive_386(atomic64_t *v);
41175 + EXPORT_SYMBOL(atomic64_dec_if_positive_386);
41176 + int atomic64_inc_not_zero_386(atomic64_t *v);
41177 +diff -urNp linux-3.0.8/arch/x86/lib/atomic64_386_32.S linux-3.0.8/arch/x86/lib/atomic64_386_32.S
41178 +--- linux-3.0.8/arch/x86/lib/atomic64_386_32.S 2011-07-21 22:17:23.000000000 -0400
41179 ++++ linux-3.0.8/arch/x86/lib/atomic64_386_32.S 2011-08-23 21:47:55.000000000 -0400
41180 +@@ -48,6 +48,10 @@ BEGIN(read)
41181 + movl (v), %eax
41182 + movl 4(v), %edx
41183 + RET_ENDP
41184 ++BEGIN(read_unchecked)
41185 ++ movl (v), %eax
41186 ++ movl 4(v), %edx
41187 ++RET_ENDP
41188 + #undef v
41189 +
41190 + #define v %esi
41191 +@@ -55,6 +59,10 @@ BEGIN(set)
41192 + movl %ebx, (v)
41193 + movl %ecx, 4(v)
41194 + RET_ENDP
41195 ++BEGIN(set_unchecked)
41196 ++ movl %ebx, (v)
41197 ++ movl %ecx, 4(v)
41198 ++RET_ENDP
41199 + #undef v
41200 +
41201 + #define v %esi
41202 +@@ -70,6 +78,20 @@ RET_ENDP
41203 + BEGIN(add)
41204 + addl %eax, (v)
41205 + adcl %edx, 4(v)
41206 +
41207 - /**
41208 - * atomic64_xchg - xchg atomic64 variable
41209 - * @ptr: pointer to type atomic64_t
41210 -@@ -56,6 +62,36 @@ u64 atomic64_xchg(atomic64_t *ptr, u64 n
41211 - EXPORT_SYMBOL(atomic64_xchg);
41212 -
41213 - /**
41214 -+ * atomic64_xchg_unchecked - xchg atomic64 variable
41215 -+ * @ptr: pointer to type atomic64_unchecked_t
41216 -+ * @new_val: value to assign
41217 -+ *
41218 -+ * Atomically xchgs the value of @ptr to @new_val and returns
41219 -+ * the old value.
41220 -+ */
41221 -+u64 atomic64_xchg_unchecked(atomic64_unchecked_t *ptr, u64 new_val)
41222 -+{
41223 -+ /*
41224 -+ * Try first with a (possibly incorrect) assumption about
41225 -+ * what we have there. We'll do two loops most likely,
41226 -+ * but we'll get an ownership MESI transaction straight away
41227 -+ * instead of a read transaction followed by a
41228 -+ * flush-for-ownership transaction:
41229 -+ */
41230 -+ u64 old_val, real_val = 0;
41231 ++#ifdef CONFIG_PAX_REFCOUNT
41232 ++ jno 0f
41233 ++ subl %eax, (v)
41234 ++ sbbl %edx, 4(v)
41235 ++ int $4
41236 ++0:
41237 ++ _ASM_EXTABLE(0b, 0b)
41238 ++#endif
41239 ++
41240 ++RET_ENDP
41241 ++BEGIN(add_unchecked)
41242 ++ addl %eax, (v)
41243 ++ adcl %edx, 4(v)
41244 + RET_ENDP
41245 + #undef v
41246 +
41247 +@@ -77,6 +99,24 @@ RET_ENDP
41248 + BEGIN(add_return)
41249 + addl (v), %eax
41250 + adcl 4(v), %edx
41251 +
41252 -+ do {
41253 -+ old_val = real_val;
41254 ++#ifdef CONFIG_PAX_REFCOUNT
41255 ++ into
41256 ++1234:
41257 ++ _ASM_EXTABLE(1234b, 2f)
41258 ++#endif
41259 +
41260 -+ real_val = atomic64_cmpxchg_unchecked(ptr, old_val, new_val);
41261 ++ movl %eax, (v)
41262 ++ movl %edx, 4(v)
41263 +
41264 -+ } while (real_val != old_val);
41265 ++#ifdef CONFIG_PAX_REFCOUNT
41266 ++2:
41267 ++#endif
41268 +
41269 -+ return old_val;
41270 -+}
41271 -+EXPORT_SYMBOL(atomic64_xchg_unchecked);
41272 ++RET_ENDP
41273 ++BEGIN(add_return_unchecked)
41274 ++ addl (v), %eax
41275 ++ adcl 4(v), %edx
41276 + movl %eax, (v)
41277 + movl %edx, 4(v)
41278 + RET_ENDP
41279 +@@ -86,6 +126,20 @@ RET_ENDP
41280 + BEGIN(sub)
41281 + subl %eax, (v)
41282 + sbbl %edx, 4(v)
41283 +
41284 -+/**
41285 - * atomic64_set - set atomic64 variable
41286 - * @ptr: pointer to type atomic64_t
41287 - * @new_val: value to assign
41288 -@@ -69,7 +105,19 @@ void atomic64_set(atomic64_t *ptr, u64 n
41289 - EXPORT_SYMBOL(atomic64_set);
41290 -
41291 - /**
41292 --EXPORT_SYMBOL(atomic64_read);
41293 -+ * atomic64_unchecked_set - set atomic64 variable
41294 -+ * @ptr: pointer to type atomic64_unchecked_t
41295 -+ * @new_val: value to assign
41296 -+ *
41297 -+ * Atomically sets the value of @ptr to @new_val.
41298 -+ */
41299 -+void atomic64_set_unchecked(atomic64_unchecked_t *ptr, u64 new_val)
41300 -+{
41301 -+ atomic64_xchg_unchecked(ptr, new_val);
41302 -+}
41303 -+EXPORT_SYMBOL(atomic64_set_unchecked);
41304 ++#ifdef CONFIG_PAX_REFCOUNT
41305 ++ jno 0f
41306 ++ addl %eax, (v)
41307 ++ adcl %edx, 4(v)
41308 ++ int $4
41309 ++0:
41310 ++ _ASM_EXTABLE(0b, 0b)
41311 ++#endif
41312 ++
41313 ++RET_ENDP
41314 ++BEGIN(sub_unchecked)
41315 ++ subl %eax, (v)
41316 ++ sbbl %edx, 4(v)
41317 + RET_ENDP
41318 + #undef v
41319 +
41320 +@@ -96,6 +150,27 @@ BEGIN(sub_return)
41321 + sbbl $0, %edx
41322 + addl (v), %eax
41323 + adcl 4(v), %edx
41324 +
41325 -+/**
41326 - * atomic64_add_return - add and return
41327 - * @delta: integer value to add
41328 - * @ptr: pointer to type atomic64_t
41329 -@@ -99,24 +147,72 @@ noinline u64 atomic64_add_return(u64 del
41330 - }
41331 - EXPORT_SYMBOL(atomic64_add_return);
41332 -
41333 -+/**
41334 -+ * atomic64_add_return_unchecked - add and return
41335 -+ * @delta: integer value to add
41336 -+ * @ptr: pointer to type atomic64_unchecked_t
41337 -+ *
41338 -+ * Atomically adds @delta to @ptr and returns @delta + *@ptr
41339 -+ */
41340 -+noinline u64 atomic64_add_return_unchecked(u64 delta, atomic64_unchecked_t *ptr)
41341 -+{
41342 -+ /*
41343 -+ * Try first with a (possibly incorrect) assumption about
41344 -+ * what we have there. We'll do two loops most likely,
41345 -+ * but we'll get an ownership MESI transaction straight away
41346 -+ * instead of a read transaction followed by a
41347 -+ * flush-for-ownership transaction:
41348 -+ */
41349 -+ u64 old_val, new_val, real_val = 0;
41350 ++#ifdef CONFIG_PAX_REFCOUNT
41351 ++ into
41352 ++1234:
41353 ++ _ASM_EXTABLE(1234b, 2f)
41354 ++#endif
41355 +
41356 -+ do {
41357 -+ old_val = real_val;
41358 -+ new_val = old_val + delta;
41359 ++ movl %eax, (v)
41360 ++ movl %edx, 4(v)
41361 +
41362 -+ real_val = atomic64_cmpxchg_unchecked(ptr, old_val, new_val);
41363 ++#ifdef CONFIG_PAX_REFCOUNT
41364 ++2:
41365 ++#endif
41366 +
41367 -+ } while (real_val != old_val);
41368 ++RET_ENDP
41369 ++BEGIN(sub_return_unchecked)
41370 ++ negl %edx
41371 ++ negl %eax
41372 ++ sbbl $0, %edx
41373 ++ addl (v), %eax
41374 ++ adcl 4(v), %edx
41375 + movl %eax, (v)
41376 + movl %edx, 4(v)
41377 + RET_ENDP
41378 +@@ -105,6 +180,20 @@ RET_ENDP
41379 + BEGIN(inc)
41380 + addl $1, (v)
41381 + adcl $0, 4(v)
41382 +
41383 -+ return new_val;
41384 -+}
41385 -+EXPORT_SYMBOL(atomic64_add_return_unchecked);
41386 ++#ifdef CONFIG_PAX_REFCOUNT
41387 ++ jno 0f
41388 ++ subl $1, (v)
41389 ++ sbbl $0, 4(v)
41390 ++ int $4
41391 ++0:
41392 ++ _ASM_EXTABLE(0b, 0b)
41393 ++#endif
41394 ++
41395 ++RET_ENDP
41396 ++BEGIN(inc_unchecked)
41397 ++ addl $1, (v)
41398 ++ adcl $0, 4(v)
41399 + RET_ENDP
41400 + #undef v
41401 +
41402 +@@ -114,6 +203,26 @@ BEGIN(inc_return)
41403 + movl 4(v), %edx
41404 + addl $1, %eax
41405 + adcl $0, %edx
41406 +
41407 - u64 atomic64_sub_return(u64 delta, atomic64_t *ptr)
41408 - {
41409 - return atomic64_add_return(-delta, ptr);
41410 - }
41411 - EXPORT_SYMBOL(atomic64_sub_return);
41412 -
41413 -+u64 atomic64_sub_return_unchecked(u64 delta, atomic64_unchecked_t *ptr)
41414 -+{
41415 -+ return atomic64_add_return_unchecked(-delta, ptr);
41416 -+}
41417 -+EXPORT_SYMBOL(atomic64_sub_return_unchecked);
41418 ++#ifdef CONFIG_PAX_REFCOUNT
41419 ++ into
41420 ++1234:
41421 ++ _ASM_EXTABLE(1234b, 2f)
41422 ++#endif
41423 +
41424 - u64 atomic64_inc_return(atomic64_t *ptr)
41425 - {
41426 - return atomic64_add_return(1, ptr);
41427 - }
41428 - EXPORT_SYMBOL(atomic64_inc_return);
41429 ++ movl %eax, (v)
41430 ++ movl %edx, 4(v)
41431 ++
41432 ++#ifdef CONFIG_PAX_REFCOUNT
41433 ++2:
41434 ++#endif
41435 ++
41436 ++RET_ENDP
41437 ++BEGIN(inc_return_unchecked)
41438 ++ movl (v), %eax
41439 ++ movl 4(v), %edx
41440 ++ addl $1, %eax
41441 ++ adcl $0, %edx
41442 + movl %eax, (v)
41443 + movl %edx, 4(v)
41444 + RET_ENDP
41445 +@@ -123,6 +232,20 @@ RET_ENDP
41446 + BEGIN(dec)
41447 + subl $1, (v)
41448 + sbbl $0, 4(v)
41449 ++
41450 ++#ifdef CONFIG_PAX_REFCOUNT
41451 ++ jno 0f
41452 ++ addl $1, (v)
41453 ++ adcl $0, 4(v)
41454 ++ int $4
41455 ++0:
41456 ++ _ASM_EXTABLE(0b, 0b)
41457 ++#endif
41458 ++
41459 ++RET_ENDP
41460 ++BEGIN(dec_unchecked)
41461 ++ subl $1, (v)
41462 ++ sbbl $0, 4(v)
41463 + RET_ENDP
41464 + #undef v
41465 +
41466 +@@ -132,6 +255,26 @@ BEGIN(dec_return)
41467 + movl 4(v), %edx
41468 + subl $1, %eax
41469 + sbbl $0, %edx
41470 ++
41471 ++#ifdef CONFIG_PAX_REFCOUNT
41472 ++ into
41473 ++1234:
41474 ++ _ASM_EXTABLE(1234b, 2f)
41475 ++#endif
41476 ++
41477 ++ movl %eax, (v)
41478 ++ movl %edx, 4(v)
41479 ++
41480 ++#ifdef CONFIG_PAX_REFCOUNT
41481 ++2:
41482 ++#endif
41483 ++
41484 ++RET_ENDP
41485 ++BEGIN(dec_return_unchecked)
41486 ++ movl (v), %eax
41487 ++ movl 4(v), %edx
41488 ++ subl $1, %eax
41489 ++ sbbl $0, %edx
41490 + movl %eax, (v)
41491 + movl %edx, 4(v)
41492 + RET_ENDP
41493 +@@ -143,6 +286,13 @@ BEGIN(add_unless)
41494 + adcl %edx, %edi
41495 + addl (v), %eax
41496 + adcl 4(v), %edx
41497 ++
41498 ++#ifdef CONFIG_PAX_REFCOUNT
41499 ++ into
41500 ++1234:
41501 ++ _ASM_EXTABLE(1234b, 2f)
41502 ++#endif
41503 ++
41504 + cmpl %eax, %esi
41505 + je 3f
41506 + 1:
41507 +@@ -168,6 +318,13 @@ BEGIN(inc_not_zero)
41508 + 1:
41509 + addl $1, %eax
41510 + adcl $0, %edx
41511 ++
41512 ++#ifdef CONFIG_PAX_REFCOUNT
41513 ++ into
41514 ++1234:
41515 ++ _ASM_EXTABLE(1234b, 2f)
41516 ++#endif
41517 ++
41518 + movl %eax, (v)
41519 + movl %edx, 4(v)
41520 + movl $1, %eax
41521 +@@ -186,6 +343,13 @@ BEGIN(dec_if_positive)
41522 + movl 4(v), %edx
41523 + subl $1, %eax
41524 + sbbl $0, %edx
41525 ++
41526 ++#ifdef CONFIG_PAX_REFCOUNT
41527 ++ into
41528 ++1234:
41529 ++ _ASM_EXTABLE(1234b, 1f)
41530 ++#endif
41531 ++
41532 + js 1f
41533 + movl %eax, (v)
41534 + movl %edx, 4(v)
41535 +diff -urNp linux-3.0.8/arch/x86/lib/atomic64_cx8_32.S linux-3.0.8/arch/x86/lib/atomic64_cx8_32.S
41536 +--- linux-3.0.8/arch/x86/lib/atomic64_cx8_32.S 2011-07-21 22:17:23.000000000 -0400
41537 ++++ linux-3.0.8/arch/x86/lib/atomic64_cx8_32.S 2011-10-06 04:17:55.000000000 -0400
41538 +@@ -35,10 +35,20 @@ ENTRY(atomic64_read_cx8)
41539 + CFI_STARTPROC
41540
41541 -+u64 atomic64_inc_return_unchecked(atomic64_unchecked_t *ptr)
41542 -+{
41543 -+ return atomic64_add_return_unchecked(1, ptr);
41544 -+}
41545 -+EXPORT_SYMBOL(atomic64_inc_return_unchecked);
41546 + read64 %ecx
41547 ++ pax_force_retaddr
41548 + ret
41549 + CFI_ENDPROC
41550 + ENDPROC(atomic64_read_cx8)
41551 +
41552 ++ENTRY(atomic64_read_unchecked_cx8)
41553 ++ CFI_STARTPROC
41554 +
41555 - u64 atomic64_dec_return(atomic64_t *ptr)
41556 - {
41557 - return atomic64_sub_return(1, ptr);
41558 - }
41559 - EXPORT_SYMBOL(atomic64_dec_return);
41560 ++ read64 %ecx
41561 ++ pax_force_retaddr
41562 ++ ret
41563 ++ CFI_ENDPROC
41564 ++ENDPROC(atomic64_read_unchecked_cx8)
41565 ++
41566 + ENTRY(atomic64_set_cx8)
41567 + CFI_STARTPROC
41568
41569 -+u64 atomic64_dec_return_unchecked(atomic64_unchecked_t *ptr)
41570 -+{
41571 -+ return atomic64_sub_return_unchecked(1, ptr);
41572 -+}
41573 -+EXPORT_SYMBOL(atomic64_dec_return_unchecked);
41574 +@@ -48,10 +58,25 @@ ENTRY(atomic64_set_cx8)
41575 + cmpxchg8b (%esi)
41576 + jne 1b
41577 +
41578 ++ pax_force_retaddr
41579 + ret
41580 + CFI_ENDPROC
41581 + ENDPROC(atomic64_set_cx8)
41582 +
41583 ++ENTRY(atomic64_set_unchecked_cx8)
41584 ++ CFI_STARTPROC
41585 +
41586 - /**
41587 - * atomic64_add - add integer to atomic64 variable
41588 - * @delta: integer value to add
41589 -@@ -131,6 +227,19 @@ void atomic64_add(u64 delta, atomic64_t
41590 - EXPORT_SYMBOL(atomic64_add);
41591 ++1:
41592 ++/* we don't need LOCK_PREFIX since aligned 64-bit writes
41593 ++ * are atomic on 586 and newer */
41594 ++ cmpxchg8b (%esi)
41595 ++ jne 1b
41596 ++
41597 ++ pax_force_retaddr
41598 ++ ret
41599 ++ CFI_ENDPROC
41600 ++ENDPROC(atomic64_set_unchecked_cx8)
41601 ++
41602 + ENTRY(atomic64_xchg_cx8)
41603 + CFI_STARTPROC
41604
41605 - /**
41606 -+ * atomic64_add_unchecked - add integer to atomic64 variable
41607 -+ * @delta: integer value to add
41608 -+ * @ptr: pointer to type atomic64_unchecked_t
41609 -+ *
41610 -+ * Atomically adds @delta to @ptr.
41611 -+ */
41612 -+void atomic64_add_unchecked(u64 delta, atomic64_unchecked_t *ptr)
41613 -+{
41614 -+ atomic64_add_return_unchecked(delta, ptr);
41615 -+}
41616 -+EXPORT_SYMBOL(atomic64_add_unchecked);
41617 +@@ -62,12 +87,13 @@ ENTRY(atomic64_xchg_cx8)
41618 + cmpxchg8b (%esi)
41619 + jne 1b
41620 +
41621 ++ pax_force_retaddr
41622 + ret
41623 + CFI_ENDPROC
41624 + ENDPROC(atomic64_xchg_cx8)
41625 +
41626 +-.macro addsub_return func ins insc
41627 +-ENTRY(atomic64_\func\()_return_cx8)
41628 ++.macro addsub_return func ins insc unchecked=""
41629 ++ENTRY(atomic64_\func\()_return\unchecked\()_cx8)
41630 + CFI_STARTPROC
41631 + SAVE ebp
41632 + SAVE ebx
41633 +@@ -84,27 +110,44 @@ ENTRY(atomic64_\func\()_return_cx8)
41634 + movl %edx, %ecx
41635 + \ins\()l %esi, %ebx
41636 + \insc\()l %edi, %ecx
41637 +
41638 -+/**
41639 - * atomic64_sub - subtract the atomic64 variable
41640 - * @delta: integer value to subtract
41641 - * @ptr: pointer to type atomic64_t
41642 -@@ -144,6 +253,19 @@ void atomic64_sub(u64 delta, atomic64_t
41643 - EXPORT_SYMBOL(atomic64_sub);
41644 ++.ifb \unchecked
41645 ++#ifdef CONFIG_PAX_REFCOUNT
41646 ++ into
41647 ++2:
41648 ++ _ASM_EXTABLE(2b, 3f)
41649 ++#endif
41650 ++.endif
41651 ++
41652 + LOCK_PREFIX
41653 + cmpxchg8b (%ebp)
41654 + jne 1b
41655 +-
41656 +-10:
41657 + movl %ebx, %eax
41658 + movl %ecx, %edx
41659 ++
41660 ++.ifb \unchecked
41661 ++#ifdef CONFIG_PAX_REFCOUNT
41662 ++3:
41663 ++#endif
41664 ++.endif
41665 ++
41666 + RESTORE edi
41667 + RESTORE esi
41668 + RESTORE ebx
41669 + RESTORE ebp
41670 ++ pax_force_retaddr
41671 + ret
41672 + CFI_ENDPROC
41673 +-ENDPROC(atomic64_\func\()_return_cx8)
41674 ++ENDPROC(atomic64_\func\()_return\unchecked\()_cx8)
41675 + .endm
41676
41677 - /**
41678 -+ * atomic64_sub_unchecked - subtract the atomic64 variable
41679 -+ * @delta: integer value to subtract
41680 -+ * @ptr: pointer to type atomic64_unchecked_t
41681 -+ *
41682 -+ * Atomically subtracts @delta from @ptr.
41683 -+ */
41684 -+void atomic64_sub_unchecked(u64 delta, atomic64_unchecked_t *ptr)
41685 -+{
41686 -+ atomic64_add_unchecked(-delta, ptr);
41687 -+}
41688 -+EXPORT_SYMBOL(atomic64_sub_unchecked);
41689 + addsub_return add add adc
41690 + addsub_return sub sub sbb
41691 ++addsub_return add add adc _unchecked
41692 ++addsub_return sub sub sbb _unchecked
41693 +
41694 +-.macro incdec_return func ins insc
41695 +-ENTRY(atomic64_\func\()_return_cx8)
41696 ++.macro incdec_return func ins insc unchecked
41697 ++ENTRY(atomic64_\func\()_return\unchecked\()_cx8)
41698 + CFI_STARTPROC
41699 + SAVE ebx
41700 +
41701 +@@ -114,21 +157,39 @@ ENTRY(atomic64_\func\()_return_cx8)
41702 + movl %edx, %ecx
41703 + \ins\()l $1, %ebx
41704 + \insc\()l $0, %ecx
41705 +
41706 -+/**
41707 - * atomic64_sub_and_test - subtract value from variable and test result
41708 - * @delta: integer value to subtract
41709 - * @ptr: pointer to type atomic64_t
41710 -@@ -173,6 +295,18 @@ void atomic64_inc(atomic64_t *ptr)
41711 - EXPORT_SYMBOL(atomic64_inc);
41712 ++.ifb \unchecked
41713 ++#ifdef CONFIG_PAX_REFCOUNT
41714 ++ into
41715 ++2:
41716 ++ _ASM_EXTABLE(2b, 3f)
41717 ++#endif
41718 ++.endif
41719 ++
41720 + LOCK_PREFIX
41721 + cmpxchg8b (%esi)
41722 + jne 1b
41723
41724 - /**
41725 -+ * atomic64_inc_unchecked - increment atomic64 variable
41726 -+ * @ptr: pointer to type atomic64_unchecked_t
41727 -+ *
41728 -+ * Atomically increments @ptr by 1.
41729 -+ */
41730 -+void atomic64_inc_unchecked(atomic64_unchecked_t *ptr)
41731 -+{
41732 -+ atomic64_add_unchecked(1, ptr);
41733 -+}
41734 -+EXPORT_SYMBOL(atomic64_inc_unchecked);
41735 +-10:
41736 + movl %ebx, %eax
41737 + movl %ecx, %edx
41738 +
41739 -+/**
41740 - * atomic64_dec - decrement atomic64 variable
41741 - * @ptr: pointer to type atomic64_t
41742 - *
41743 -@@ -185,6 +319,18 @@ void atomic64_dec(atomic64_t *ptr)
41744 - EXPORT_SYMBOL(atomic64_dec);
41745 ++.ifb \unchecked
41746 ++#ifdef CONFIG_PAX_REFCOUNT
41747 ++3:
41748 ++#endif
41749 ++.endif
41750 ++
41751 + RESTORE ebx
41752 ++ pax_force_retaddr
41753 + ret
41754 + CFI_ENDPROC
41755 +-ENDPROC(atomic64_\func\()_return_cx8)
41756 ++ENDPROC(atomic64_\func\()_return\unchecked\()_cx8)
41757 + .endm
41758
41759 - /**
41760 -+ * atomic64_dec_unchecked - decrement atomic64 variable
41761 -+ * @ptr: pointer to type atomic64_unchecked_t
41762 -+ *
41763 -+ * Atomically decrements @ptr by 1.
41764 -+ */
41765 -+void atomic64_dec_unchecked(atomic64_unchecked_t *ptr)
41766 -+{
41767 -+ atomic64_sub_unchecked(1, ptr);
41768 -+}
41769 -+EXPORT_SYMBOL(atomic64_dec_unchecked);
41770 + incdec_return inc add adc
41771 + incdec_return dec sub sbb
41772 ++incdec_return inc add adc _unchecked
41773 ++incdec_return dec sub sbb _unchecked
41774 +
41775 + ENTRY(atomic64_dec_if_positive_cx8)
41776 + CFI_STARTPROC
41777 +@@ -140,6 +201,13 @@ ENTRY(atomic64_dec_if_positive_cx8)
41778 + movl %edx, %ecx
41779 + subl $1, %ebx
41780 + sbb $0, %ecx
41781 +
41782 -+/**
41783 - * atomic64_dec_and_test - decrement and test
41784 - * @ptr: pointer to type atomic64_t
41785 - *
41786 -diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/lib/checksum_32.S
41787 ---- linux-2.6.32.48/arch/x86/lib/checksum_32.S 2009-12-02 22:51:21.000000000 -0500
41788 -+++ linux-2.6.32.48/arch/x86/lib/checksum_32.S 2011-11-12 12:46:42.000000000 -0500
41789 ++#ifdef CONFIG_PAX_REFCOUNT
41790 ++ into
41791 ++1234:
41792 ++ _ASM_EXTABLE(1234b, 2f)
41793 ++#endif
41794 ++
41795 + js 2f
41796 + LOCK_PREFIX
41797 + cmpxchg8b (%esi)
41798 +@@ -149,6 +217,7 @@ ENTRY(atomic64_dec_if_positive_cx8)
41799 + movl %ebx, %eax
41800 + movl %ecx, %edx
41801 + RESTORE ebx
41802 ++ pax_force_retaddr
41803 + ret
41804 + CFI_ENDPROC
41805 + ENDPROC(atomic64_dec_if_positive_cx8)
41806 +@@ -174,6 +243,13 @@ ENTRY(atomic64_add_unless_cx8)
41807 + movl %edx, %ecx
41808 + addl %esi, %ebx
41809 + adcl %edi, %ecx
41810 ++
41811 ++#ifdef CONFIG_PAX_REFCOUNT
41812 ++ into
41813 ++1234:
41814 ++ _ASM_EXTABLE(1234b, 3f)
41815 ++#endif
41816 ++
41817 + LOCK_PREFIX
41818 + cmpxchg8b (%ebp)
41819 + jne 1b
41820 +@@ -184,6 +260,7 @@ ENTRY(atomic64_add_unless_cx8)
41821 + CFI_ADJUST_CFA_OFFSET -8
41822 + RESTORE ebx
41823 + RESTORE ebp
41824 ++ pax_force_retaddr
41825 + ret
41826 + 4:
41827 + cmpl %edx, 4(%esp)
41828 +@@ -206,6 +283,13 @@ ENTRY(atomic64_inc_not_zero_cx8)
41829 + movl %edx, %ecx
41830 + addl $1, %ebx
41831 + adcl $0, %ecx
41832 ++
41833 ++#ifdef CONFIG_PAX_REFCOUNT
41834 ++ into
41835 ++1234:
41836 ++ _ASM_EXTABLE(1234b, 3f)
41837 ++#endif
41838 ++
41839 + LOCK_PREFIX
41840 + cmpxchg8b (%esi)
41841 + jne 1b
41842 +@@ -213,6 +297,7 @@ ENTRY(atomic64_inc_not_zero_cx8)
41843 + movl $1, %eax
41844 + 3:
41845 + RESTORE ebx
41846 ++ pax_force_retaddr
41847 + ret
41848 + 4:
41849 + testl %edx, %edx
41850 +diff -urNp linux-3.0.8/arch/x86/lib/checksum_32.S linux-3.0.8/arch/x86/lib/checksum_32.S
41851 +--- linux-3.0.8/arch/x86/lib/checksum_32.S 2011-07-21 22:17:23.000000000 -0400
41852 ++++ linux-3.0.8/arch/x86/lib/checksum_32.S 2011-08-23 21:47:55.000000000 -0400
41853 @@ -28,7 +28,8 @@
41854 #include <linux/linkage.h>
41855 #include <asm/dwarf2.h>
41856 @@ -19628,7 +17710,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41857 /*
41858 * computes a partial checksum, e.g. for TCP/UDP fragments
41859 */
41860 -@@ -304,9 +305,28 @@ unsigned int csum_partial_copy_generic (
41861 +@@ -296,9 +297,24 @@ unsigned int csum_partial_copy_generic (
41862
41863 #define ARGBASE 16
41864 #define FP 12
41865 @@ -19639,27 +17721,23 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41866 CFI_STARTPROC
41867 +
41868 +#ifdef CONFIG_PAX_MEMORY_UDEREF
41869 -+ pushl %gs
41870 -+ CFI_ADJUST_CFA_OFFSET 4
41871 -+ popl %es
41872 -+ CFI_ADJUST_CFA_OFFSET -4
41873 ++ pushl_cfi %gs
41874 ++ popl_cfi %es
41875 + jmp csum_partial_copy_generic
41876 +#endif
41877 +
41878 +ENTRY(csum_partial_copy_generic_from_user)
41879 +
41880 +#ifdef CONFIG_PAX_MEMORY_UDEREF
41881 -+ pushl %gs
41882 -+ CFI_ADJUST_CFA_OFFSET 4
41883 -+ popl %ds
41884 -+ CFI_ADJUST_CFA_OFFSET -4
41885 ++ pushl_cfi %gs
41886 ++ popl_cfi %ds
41887 +#endif
41888 +
41889 +ENTRY(csum_partial_copy_generic)
41890 subl $4,%esp
41891 CFI_ADJUST_CFA_OFFSET 4
41892 - pushl %edi
41893 -@@ -331,7 +351,7 @@ ENTRY(csum_partial_copy_generic)
41894 + pushl_cfi %edi
41895 +@@ -320,7 +336,7 @@ ENTRY(csum_partial_copy_generic)
41896 jmp 4f
41897 SRC(1: movw (%esi), %bx )
41898 addl $2, %esi
41899 @@ -19668,7 +17746,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41900 addl $2, %edi
41901 addw %bx, %ax
41902 adcl $0, %eax
41903 -@@ -343,30 +363,30 @@ DST( movw %bx, (%edi) )
41904 +@@ -332,30 +348,30 @@ DST( movw %bx, (%edi) )
41905 SRC(1: movl (%esi), %ebx )
41906 SRC( movl 4(%esi), %edx )
41907 adcl %ebx, %eax
41908 @@ -19707,7 +17785,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41909
41910 lea 32(%esi), %esi
41911 lea 32(%edi), %edi
41912 -@@ -380,7 +400,7 @@ DST( movl %edx, 28(%edi) )
41913 +@@ -369,7 +385,7 @@ DST( movl %edx, 28(%edi) )
41914 shrl $2, %edx # This clears CF
41915 SRC(3: movl (%esi), %ebx )
41916 adcl %ebx, %eax
41917 @@ -19716,7 +17794,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41918 lea 4(%esi), %esi
41919 lea 4(%edi), %edi
41920 dec %edx
41921 -@@ -392,12 +412,12 @@ DST( movl %ebx, (%edi) )
41922 +@@ -381,12 +397,12 @@ DST( movl %ebx, (%edi) )
41923 jb 5f
41924 SRC( movw (%esi), %cx )
41925 leal 2(%esi), %esi
41926 @@ -19731,7 +17809,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41927 6: addl %ecx, %eax
41928 adcl $0, %eax
41929 7:
41930 -@@ -408,7 +428,7 @@ DST( movb %cl, (%edi) )
41931 +@@ -397,7 +413,7 @@ DST( movb %cl, (%edi) )
41932
41933 6001:
41934 movl ARGBASE+20(%esp), %ebx # src_err_ptr
41935 @@ -19740,7 +17818,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41936
41937 # zero the complete destination - computing the rest
41938 # is too much work
41939 -@@ -421,11 +441,19 @@ DST( movb %cl, (%edi) )
41940 +@@ -410,11 +426,15 @@ DST( movb %cl, (%edi) )
41941
41942 6002:
41943 movl ARGBASE+24(%esp), %ebx # dst_err_ptr
41944 @@ -19750,19 +17828,15 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41945
41946 .previous
41947
41948 -+ pushl %ss
41949 -+ CFI_ADJUST_CFA_OFFSET 4
41950 -+ popl %ds
41951 -+ CFI_ADJUST_CFA_OFFSET -4
41952 -+ pushl %ss
41953 -+ CFI_ADJUST_CFA_OFFSET 4
41954 -+ popl %es
41955 -+ CFI_ADJUST_CFA_OFFSET -4
41956 - popl %ebx
41957 - CFI_ADJUST_CFA_OFFSET -4
41958 ++ pushl_cfi %ss
41959 ++ popl_cfi %ds
41960 ++ pushl_cfi %ss
41961 ++ popl_cfi %es
41962 + popl_cfi %ebx
41963 CFI_RESTORE ebx
41964 -@@ -439,26 +467,47 @@ DST( movb %cl, (%edi) )
41965 - CFI_ADJUST_CFA_OFFSET -4
41966 + popl_cfi %esi
41967 +@@ -424,26 +444,43 @@ DST( movb %cl, (%edi) )
41968 + popl_cfi %ecx # equivalent to addl $4,%esp
41969 ret
41970 CFI_ENDPROC
41971 -ENDPROC(csum_partial_copy_generic)
41972 @@ -19794,27 +17868,23 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
41973 CFI_STARTPROC
41974 +
41975 +#ifdef CONFIG_PAX_MEMORY_UDEREF
41976 -+ pushl %gs
41977 -+ CFI_ADJUST_CFA_OFFSET 4
41978 -+ popl %es
41979 -+ CFI_ADJUST_CFA_OFFSET -4
41980 ++ pushl_cfi %gs
41981 ++ popl_cfi %es
41982 + jmp csum_partial_copy_generic
41983 +#endif
41984 +
41985 +ENTRY(csum_partial_copy_generic_from_user)
41986 +
41987 +#ifdef CONFIG_PAX_MEMORY_UDEREF
41988 -+ pushl %gs
41989 -+ CFI_ADJUST_CFA_OFFSET 4
41990 -+ popl %ds
41991 -+ CFI_ADJUST_CFA_OFFSET -4
41992 ++ pushl_cfi %gs
41993 ++ popl_cfi %ds
41994 +#endif
41995 +
41996 +ENTRY(csum_partial_copy_generic)
41997 - pushl %ebx
41998 - CFI_ADJUST_CFA_OFFSET 4
41999 + pushl_cfi %ebx
42000 CFI_REL_OFFSET ebx, 0
42001 -@@ -482,7 +531,7 @@ ENTRY(csum_partial_copy_generic)
42002 + pushl_cfi %edi
42003 +@@ -464,7 +501,7 @@ ENTRY(csum_partial_copy_generic)
42004 subl %ebx, %edi
42005 lea -1(%esi),%edx
42006 andl $-32,%edx
42007 @@ -19823,7 +17893,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
42008 testl %esi, %esi
42009 jmp *%ebx
42010 1: addl $64,%esi
42011 -@@ -503,19 +552,19 @@ ENTRY(csum_partial_copy_generic)
42012 +@@ -485,19 +522,19 @@ ENTRY(csum_partial_copy_generic)
42013 jb 5f
42014 SRC( movw (%esi), %dx )
42015 leal 2(%esi), %esi
42016 @@ -19846,7 +17916,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
42017 # zero the complete destination (computing the rest is too much work)
42018 movl ARGBASE+8(%esp),%edi # dst
42019 movl ARGBASE+12(%esp),%ecx # len
42020 -@@ -523,10 +572,21 @@ DST( movb %dl, (%edi) )
42021 +@@ -505,10 +542,17 @@ DST( movb %dl, (%edi) )
42022 rep; stosb
42023 jmp 7b
42024 6002: movl ARGBASE+24(%esp), %ebx # dst_err_ptr
42025 @@ -19856,20 +17926,16 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
42026 .previous
42027
42028 +#ifdef CONFIG_PAX_MEMORY_UDEREF
42029 -+ pushl %ss
42030 -+ CFI_ADJUST_CFA_OFFSET 4
42031 -+ popl %ds
42032 -+ CFI_ADJUST_CFA_OFFSET -4
42033 -+ pushl %ss
42034 -+ CFI_ADJUST_CFA_OFFSET 4
42035 -+ popl %es
42036 -+ CFI_ADJUST_CFA_OFFSET -4
42037 ++ pushl_cfi %ss
42038 ++ popl_cfi %ds
42039 ++ pushl_cfi %ss
42040 ++ popl_cfi %es
42041 +#endif
42042 +
42043 - popl %esi
42044 - CFI_ADJUST_CFA_OFFSET -4
42045 + popl_cfi %esi
42046 CFI_RESTORE esi
42047 -@@ -538,7 +598,7 @@ DST( movb %dl, (%edi) )
42048 + popl_cfi %edi
42049 +@@ -517,7 +561,7 @@ DST( movb %dl, (%edi) )
42050 CFI_RESTORE ebx
42051 ret
42052 CFI_ENDPROC
42053 @@ -19878,17 +17944,10 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/checksum_32.S linux-2.6.32.48/arch/x86/l
42054
42055 #undef ROUND
42056 #undef ROUND1
42057 -diff -urNp linux-2.6.32.48/arch/x86/lib/clear_page_64.S linux-2.6.32.48/arch/x86/lib/clear_page_64.S
42058 ---- linux-2.6.32.48/arch/x86/lib/clear_page_64.S 2009-12-02 22:51:21.000000000 -0500
42059 -+++ linux-2.6.32.48/arch/x86/lib/clear_page_64.S 2011-11-12 12:46:42.000000000 -0500
42060 -@@ -1,5 +1,6 @@
42061 - #include <linux/linkage.h>
42062 - #include <asm/dwarf2.h>
42063 -+#include <asm/alternative-asm.h>
42064 -
42065 - /*
42066 - * Zero a page.
42067 -@@ -10,6 +11,7 @@ ENTRY(clear_page_c)
42068 +diff -urNp linux-3.0.8/arch/x86/lib/clear_page_64.S linux-3.0.8/arch/x86/lib/clear_page_64.S
42069 +--- linux-3.0.8/arch/x86/lib/clear_page_64.S 2011-07-21 22:17:23.000000000 -0400
42070 ++++ linux-3.0.8/arch/x86/lib/clear_page_64.S 2011-10-06 04:17:55.000000000 -0400
42071 +@@ -11,6 +11,7 @@ ENTRY(clear_page_c)
42072 movl $4096/8,%ecx
42073 xorl %eax,%eax
42074 rep stosq
42075 @@ -19896,7 +17955,15 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/clear_page_64.S linux-2.6.32.48/arch/x86
42076 ret
42077 CFI_ENDPROC
42078 ENDPROC(clear_page_c)
42079 -@@ -33,6 +35,7 @@ ENTRY(clear_page)
42080 +@@ -20,6 +21,7 @@ ENTRY(clear_page_c_e)
42081 + movl $4096,%ecx
42082 + xorl %eax,%eax
42083 + rep stosb
42084 ++ pax_force_retaddr
42085 + ret
42086 + CFI_ENDPROC
42087 + ENDPROC(clear_page_c_e)
42088 +@@ -43,6 +45,7 @@ ENTRY(clear_page)
42089 leaq 64(%rdi),%rdi
42090 jnz .Lloop
42091 nop
42092 @@ -19904,7 +17971,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/clear_page_64.S linux-2.6.32.48/arch/x86
42093 ret
42094 CFI_ENDPROC
42095 .Lclear_page_end:
42096 -@@ -43,7 +46,7 @@ ENDPROC(clear_page)
42097 +@@ -58,7 +61,7 @@ ENDPROC(clear_page)
42098
42099 #include <asm/cpufeature.h>
42100
42101 @@ -19912,10 +17979,27 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/clear_page_64.S linux-2.6.32.48/arch/x86
42102 + .section .altinstr_replacement,"a"
42103 1: .byte 0xeb /* jmp <disp8> */
42104 .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */
42105 - 2:
42106 -diff -urNp linux-2.6.32.48/arch/x86/lib/copy_page_64.S linux-2.6.32.48/arch/x86/lib/copy_page_64.S
42107 ---- linux-2.6.32.48/arch/x86/lib/copy_page_64.S 2009-12-02 22:51:21.000000000 -0500
42108 -+++ linux-2.6.32.48/arch/x86/lib/copy_page_64.S 2011-11-12 12:46:42.000000000 -0500
42109 + 2: .byte 0xeb /* jmp <disp8> */
42110 +diff -urNp linux-3.0.8/arch/x86/lib/cmpxchg16b_emu.S linux-3.0.8/arch/x86/lib/cmpxchg16b_emu.S
42111 +--- linux-3.0.8/arch/x86/lib/cmpxchg16b_emu.S 2011-07-21 22:17:23.000000000 -0400
42112 ++++ linux-3.0.8/arch/x86/lib/cmpxchg16b_emu.S 2011-10-07 19:07:28.000000000 -0400
42113 +@@ -53,11 +53,13 @@ this_cpu_cmpxchg16b_emu:
42114 +
42115 + popf
42116 + mov $1, %al
42117 ++ pax_force_retaddr
42118 + ret
42119 +
42120 + not_same:
42121 + popf
42122 + xor %al,%al
42123 ++ pax_force_retaddr
42124 + ret
42125 +
42126 + CFI_ENDPROC
42127 +diff -urNp linux-3.0.8/arch/x86/lib/copy_page_64.S linux-3.0.8/arch/x86/lib/copy_page_64.S
42128 +--- linux-3.0.8/arch/x86/lib/copy_page_64.S 2011-07-21 22:17:23.000000000 -0400
42129 ++++ linux-3.0.8/arch/x86/lib/copy_page_64.S 2011-10-06 04:17:55.000000000 -0400
42130 @@ -2,12 +2,14 @@
42131
42132 #include <linux/linkage.h>
42133 @@ -19948,32 +18032,32 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_page_64.S linux-2.6.32.48/arch/x86/
42134 1: .byte 0xeb /* jmp <disp8> */
42135 .byte (copy_page_c - copy_page) - (2f - 1b) /* offset */
42136 2:
42137 -diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/lib/copy_user_64.S
42138 ---- linux-2.6.32.48/arch/x86/lib/copy_user_64.S 2011-11-12 12:44:28.000000000 -0500
42139 -+++ linux-2.6.32.48/arch/x86/lib/copy_user_64.S 2011-11-12 12:46:42.000000000 -0500
42140 -@@ -15,13 +15,15 @@
42141 - #include <asm/asm-offsets.h>
42142 +diff -urNp linux-3.0.8/arch/x86/lib/copy_user_64.S linux-3.0.8/arch/x86/lib/copy_user_64.S
42143 +--- linux-3.0.8/arch/x86/lib/copy_user_64.S 2011-07-21 22:17:23.000000000 -0400
42144 ++++ linux-3.0.8/arch/x86/lib/copy_user_64.S 2011-10-06 04:17:55.000000000 -0400
42145 +@@ -16,6 +16,7 @@
42146 #include <asm/thread_info.h>
42147 #include <asm/cpufeature.h>
42148 + #include <asm/alternative-asm.h>
42149 +#include <asm/pgtable.h>
42150 -+#include <asm/alternative-asm.h>
42151
42152 - .macro ALTERNATIVE_JUMP feature,orig,alt
42153 - 0:
42154 + /*
42155 + * By placing feature2 after feature1 in altinstructions section, we logically
42156 +@@ -29,7 +30,7 @@
42157 .byte 0xe9 /* 32bit jump */
42158 .long \orig-1f /* by default jump to orig */
42159 1:
42160 - .section .altinstr_replacement,"ax"
42161 + .section .altinstr_replacement,"a"
42162 2: .byte 0xe9 /* near jump with 32bit immediate */
42163 - .long \alt-1b /* offset */ /* or alternatively to alt */
42164 - .previous
42165 -@@ -64,55 +66,26 @@
42166 + .long \alt1-1b /* offset */ /* or alternatively to alt1 */
42167 + 3: .byte 0xe9 /* near jump with 32bit immediate */
42168 +@@ -71,47 +72,20 @@
42169 #endif
42170 .endm
42171
42172 -/* Standard copy_to_user with segment limit checking */
42173 --ENTRY(copy_to_user)
42174 +-ENTRY(_copy_to_user)
42175 - CFI_STARTPROC
42176 - GET_THREAD_INFO(%rax)
42177 - movq %rdi,%rcx
42178 @@ -19981,12 +18065,14 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/
42179 - jc bad_to_user
42180 - cmpq TI_addr_limit(%rax),%rcx
42181 - ja bad_to_user
42182 -- ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,copy_user_generic_unrolled,copy_user_generic_string
42183 +- ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,X86_FEATURE_ERMS, \
42184 +- copy_user_generic_unrolled,copy_user_generic_string, \
42185 +- copy_user_enhanced_fast_string
42186 - CFI_ENDPROC
42187 --ENDPROC(copy_to_user)
42188 +-ENDPROC(_copy_to_user)
42189 -
42190 -/* Standard copy_from_user with segment limit checking */
42191 --ENTRY(copy_from_user)
42192 +-ENTRY(_copy_from_user)
42193 - CFI_STARTPROC
42194 - GET_THREAD_INFO(%rax)
42195 - movq %rsi,%rcx
42196 @@ -19994,21 +18080,11 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/
42197 - jc bad_from_user
42198 - cmpq TI_addr_limit(%rax),%rcx
42199 - ja bad_from_user
42200 -- ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,copy_user_generic_unrolled,copy_user_generic_string
42201 +- ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,X86_FEATURE_ERMS, \
42202 +- copy_user_generic_unrolled,copy_user_generic_string, \
42203 +- copy_user_enhanced_fast_string
42204 - CFI_ENDPROC
42205 --ENDPROC(copy_from_user)
42206 --
42207 - ENTRY(copy_user_generic)
42208 - CFI_STARTPROC
42209 - ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,copy_user_generic_unrolled,copy_user_generic_string
42210 - CFI_ENDPROC
42211 - ENDPROC(copy_user_generic)
42212 -
42213 --ENTRY(__copy_from_user_inatomic)
42214 -- CFI_STARTPROC
42215 -- ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,copy_user_generic_unrolled,copy_user_generic_string
42216 -- CFI_ENDPROC
42217 --ENDPROC(__copy_from_user_inatomic)
42218 +-ENDPROC(_copy_from_user)
42219 -
42220 .section .fixup,"ax"
42221 /* must zero dest */
42222 @@ -20027,7 +18103,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/
42223 ret
42224 CFI_ENDPROC
42225 ENDPROC(bad_from_user)
42226 -@@ -180,6 +153,7 @@ ENTRY(copy_user_generic_unrolled)
42227 +@@ -179,6 +153,7 @@ ENTRY(copy_user_generic_unrolled)
42228 decl %ecx
42229 jnz 21b
42230 23: xor %eax,%eax
42231 @@ -20035,7 +18111,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/
42232 ret
42233
42234 .section .fixup,"ax"
42235 -@@ -252,6 +226,7 @@ ENTRY(copy_user_generic_string)
42236 +@@ -251,6 +226,7 @@ ENTRY(copy_user_generic_string)
42237 3: rep
42238 movsb
42239 4: xorl %eax,%eax
42240 @@ -20043,9 +18119,17 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_64.S linux-2.6.32.48/arch/x86/
42241 ret
42242
42243 .section .fixup,"ax"
42244 -diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S
42245 ---- linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S 2009-12-02 22:51:21.000000000 -0500
42246 -+++ linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S 2011-11-12 12:46:42.000000000 -0500
42247 +@@ -287,6 +263,7 @@ ENTRY(copy_user_enhanced_fast_string)
42248 + 1: rep
42249 + movsb
42250 + 2: xorl %eax,%eax
42251 ++ pax_force_retaddr
42252 + ret
42253 +
42254 + .section .fixup,"ax"
42255 +diff -urNp linux-3.0.8/arch/x86/lib/copy_user_nocache_64.S linux-3.0.8/arch/x86/lib/copy_user_nocache_64.S
42256 +--- linux-3.0.8/arch/x86/lib/copy_user_nocache_64.S 2011-07-21 22:17:23.000000000 -0400
42257 ++++ linux-3.0.8/arch/x86/lib/copy_user_nocache_64.S 2011-10-06 04:17:55.000000000 -0400
42258 @@ -8,12 +8,14 @@
42259
42260 #include <linux/linkage.h>
42261 @@ -20085,9 +18169,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/copy_user_nocache_64.S linux-2.6.32.48/a
42262 ret
42263
42264 .section .fixup,"ax"
42265 -diff -urNp linux-2.6.32.48/arch/x86/lib/csum-copy_64.S linux-2.6.32.48/arch/x86/lib/csum-copy_64.S
42266 ---- linux-2.6.32.48/arch/x86/lib/csum-copy_64.S 2009-12-02 22:51:21.000000000 -0500
42267 -+++ linux-2.6.32.48/arch/x86/lib/csum-copy_64.S 2011-11-12 12:46:42.000000000 -0500
42268 +diff -urNp linux-3.0.8/arch/x86/lib/csum-copy_64.S linux-3.0.8/arch/x86/lib/csum-copy_64.S
42269 +--- linux-3.0.8/arch/x86/lib/csum-copy_64.S 2011-07-21 22:17:23.000000000 -0400
42270 ++++ linux-3.0.8/arch/x86/lib/csum-copy_64.S 2011-10-06 04:17:55.000000000 -0400
42271 @@ -8,6 +8,7 @@
42272 #include <linux/linkage.h>
42273 #include <asm/dwarf2.h>
42274 @@ -20098,15 +18182,15 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/csum-copy_64.S linux-2.6.32.48/arch/x86/
42275 * Checksum copy with exception handling.
42276 @@ -228,6 +229,7 @@ ENTRY(csum_partial_copy_generic)
42277 CFI_RESTORE rbp
42278 - addq $7*8,%rsp
42279 + addq $7*8, %rsp
42280 CFI_ADJUST_CFA_OFFSET -7*8
42281 + pax_force_retaddr
42282 ret
42283 CFI_RESTORE_STATE
42284
42285 -diff -urNp linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c
42286 ---- linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c 2009-12-02 22:51:21.000000000 -0500
42287 -+++ linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c 2011-11-12 12:46:42.000000000 -0500
42288 +diff -urNp linux-3.0.8/arch/x86/lib/csum-wrappers_64.c linux-3.0.8/arch/x86/lib/csum-wrappers_64.c
42289 +--- linux-3.0.8/arch/x86/lib/csum-wrappers_64.c 2011-07-21 22:17:23.000000000 -0400
42290 ++++ linux-3.0.8/arch/x86/lib/csum-wrappers_64.c 2011-10-06 04:17:55.000000000 -0400
42291 @@ -52,7 +52,13 @@ csum_partial_copy_from_user(const void _
42292 len -= 2;
42293 }
42294 @@ -20137,9 +18221,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/csum-wrappers_64.c linux-2.6.32.48/arch/
42295 len, isum, NULL, errp);
42296 }
42297 EXPORT_SYMBOL(csum_partial_copy_to_user);
42298 -diff -urNp linux-2.6.32.48/arch/x86/lib/getuser.S linux-2.6.32.48/arch/x86/lib/getuser.S
42299 ---- linux-2.6.32.48/arch/x86/lib/getuser.S 2009-12-02 22:51:21.000000000 -0500
42300 -+++ linux-2.6.32.48/arch/x86/lib/getuser.S 2011-11-12 12:46:42.000000000 -0500
42301 +diff -urNp linux-3.0.8/arch/x86/lib/getuser.S linux-3.0.8/arch/x86/lib/getuser.S
42302 +--- linux-3.0.8/arch/x86/lib/getuser.S 2011-07-21 22:17:23.000000000 -0400
42303 ++++ linux-3.0.8/arch/x86/lib/getuser.S 2011-10-07 19:07:23.000000000 -0400
42304 @@ -33,15 +33,38 @@
42305 #include <asm/asm-offsets.h>
42306 #include <asm/thread_info.h>
42307 @@ -20263,9 +18347,35 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/getuser.S linux-2.6.32.48/arch/x86/lib/g
42308 ret
42309 CFI_ENDPROC
42310 END(bad_get_user)
42311 -diff -urNp linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S
42312 ---- linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S 2009-12-02 22:51:21.000000000 -0500
42313 -+++ linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S 2011-11-12 12:46:42.000000000 -0500
42314 +diff -urNp linux-3.0.8/arch/x86/lib/insn.c linux-3.0.8/arch/x86/lib/insn.c
42315 +--- linux-3.0.8/arch/x86/lib/insn.c 2011-07-21 22:17:23.000000000 -0400
42316 ++++ linux-3.0.8/arch/x86/lib/insn.c 2011-08-23 21:47:55.000000000 -0400
42317 +@@ -21,6 +21,11 @@
42318 + #include <linux/string.h>
42319 + #include <asm/inat.h>
42320 + #include <asm/insn.h>
42321 ++#ifdef __KERNEL__
42322 ++#include <asm/pgtable_types.h>
42323 ++#else
42324 ++#define ktla_ktva(addr) addr
42325 ++#endif
42326 +
42327 + #define get_next(t, insn) \
42328 + ({t r; r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; })
42329 +@@ -40,8 +45,8 @@
42330 + void insn_init(struct insn *insn, const void *kaddr, int x86_64)
42331 + {
42332 + memset(insn, 0, sizeof(*insn));
42333 +- insn->kaddr = kaddr;
42334 +- insn->next_byte = kaddr;
42335 ++ insn->kaddr = ktla_ktva(kaddr);
42336 ++ insn->next_byte = ktla_ktva(kaddr);
42337 + insn->x86_64 = x86_64 ? 1 : 0;
42338 + insn->opnd_bytes = 4;
42339 + if (x86_64)
42340 +diff -urNp linux-3.0.8/arch/x86/lib/iomap_copy_64.S linux-3.0.8/arch/x86/lib/iomap_copy_64.S
42341 +--- linux-3.0.8/arch/x86/lib/iomap_copy_64.S 2011-07-21 22:17:23.000000000 -0400
42342 ++++ linux-3.0.8/arch/x86/lib/iomap_copy_64.S 2011-10-06 04:17:55.000000000 -0400
42343 @@ -17,6 +17,7 @@
42344
42345 #include <linux/linkage.h>
42346 @@ -20282,62 +18392,104 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/iomap_copy_64.S linux-2.6.32.48/arch/x86
42347 ret
42348 CFI_ENDPROC
42349 ENDPROC(__iowrite32_copy)
42350 -diff -urNp linux-2.6.32.48/arch/x86/lib/memcpy_64.S linux-2.6.32.48/arch/x86/lib/memcpy_64.S
42351 ---- linux-2.6.32.48/arch/x86/lib/memcpy_64.S 2009-12-02 22:51:21.000000000 -0500
42352 -+++ linux-2.6.32.48/arch/x86/lib/memcpy_64.S 2011-11-12 12:46:42.000000000 -0500
42353 -@@ -4,6 +4,7 @@
42354 -
42355 - #include <asm/cpufeature.h>
42356 - #include <asm/dwarf2.h>
42357 -+#include <asm/alternative-asm.h>
42358 -
42359 - /*
42360 - * memcpy - Copy a memory block.
42361 -@@ -34,6 +35,7 @@ memcpy_c:
42362 +diff -urNp linux-3.0.8/arch/x86/lib/memcpy_64.S linux-3.0.8/arch/x86/lib/memcpy_64.S
42363 +--- linux-3.0.8/arch/x86/lib/memcpy_64.S 2011-07-21 22:17:23.000000000 -0400
42364 ++++ linux-3.0.8/arch/x86/lib/memcpy_64.S 2011-10-06 04:17:55.000000000 -0400
42365 +@@ -34,6 +34,7 @@
42366 rep movsq
42367 movl %edx, %ecx
42368 rep movsb
42369 + pax_force_retaddr
42370 ret
42371 - CFI_ENDPROC
42372 - ENDPROC(memcpy_c)
42373 -@@ -118,6 +120,7 @@ ENTRY(memcpy)
42374 + .Lmemcpy_e:
42375 + .previous
42376 +@@ -51,6 +52,7 @@
42377 +
42378 + movl %edx, %ecx
42379 + rep movsb
42380 ++ pax_force_retaddr
42381 + ret
42382 + .Lmemcpy_e_e:
42383 + .previous
42384 +@@ -141,6 +143,7 @@ ENTRY(memcpy)
42385 + movq %r9, 1*8(%rdi)
42386 + movq %r10, -2*8(%rdi, %rdx)
42387 + movq %r11, -1*8(%rdi, %rdx)
42388 ++ pax_force_retaddr
42389 + retq
42390 + .p2align 4
42391 + .Lless_16bytes:
42392 +@@ -153,6 +156,7 @@ ENTRY(memcpy)
42393 + movq -1*8(%rsi, %rdx), %r9
42394 + movq %r8, 0*8(%rdi)
42395 + movq %r9, -1*8(%rdi, %rdx)
42396 ++ pax_force_retaddr
42397 + retq
42398 + .p2align 4
42399 + .Lless_8bytes:
42400 +@@ -166,6 +170,7 @@ ENTRY(memcpy)
42401 + movl -4(%rsi, %rdx), %r8d
42402 + movl %ecx, (%rdi)
42403 + movl %r8d, -4(%rdi, %rdx)
42404 ++ pax_force_retaddr
42405 + retq
42406 + .p2align 4
42407 + .Lless_3bytes:
42408 +@@ -183,6 +188,7 @@ ENTRY(memcpy)
42409 jnz .Lloop_1
42410
42411 .Lend:
42412 + pax_force_retaddr
42413 - ret
42414 + retq
42415 CFI_ENDPROC
42416 ENDPROC(memcpy)
42417 -@@ -128,7 +131,7 @@ ENDPROC(__memcpy)
42418 - * It is also a lot simpler. Use this when possible:
42419 - */
42420 -
42421 -- .section .altinstr_replacement, "ax"
42422 -+ .section .altinstr_replacement, "a"
42423 - 1: .byte 0xeb /* jmp <disp8> */
42424 - .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */
42425 - 2:
42426 -diff -urNp linux-2.6.32.48/arch/x86/lib/memset_64.S linux-2.6.32.48/arch/x86/lib/memset_64.S
42427 ---- linux-2.6.32.48/arch/x86/lib/memset_64.S 2009-12-02 22:51:21.000000000 -0500
42428 -+++ linux-2.6.32.48/arch/x86/lib/memset_64.S 2011-11-12 12:46:42.000000000 -0500
42429 -@@ -2,6 +2,7 @@
42430 -
42431 +diff -urNp linux-3.0.8/arch/x86/lib/memmove_64.S linux-3.0.8/arch/x86/lib/memmove_64.S
42432 +--- linux-3.0.8/arch/x86/lib/memmove_64.S 2011-07-21 22:17:23.000000000 -0400
42433 ++++ linux-3.0.8/arch/x86/lib/memmove_64.S 2011-10-06 04:17:55.000000000 -0400
42434 +@@ -9,6 +9,7 @@
42435 #include <linux/linkage.h>
42436 #include <asm/dwarf2.h>
42437 + #include <asm/cpufeature.h>
42438 +#include <asm/alternative-asm.h>
42439
42440 - /*
42441 - * ISO C memset - set a memory block to a byte value.
42442 -@@ -28,6 +29,7 @@ memset_c:
42443 + #undef memmove
42444 +
42445 +@@ -201,6 +202,7 @@ ENTRY(memmove)
42446 + movb (%rsi), %r11b
42447 + movb %r11b, (%rdi)
42448 + 13:
42449 ++ pax_force_retaddr
42450 + retq
42451 + CFI_ENDPROC
42452 +
42453 +@@ -209,6 +211,7 @@ ENTRY(memmove)
42454 + /* Forward moving data. */
42455 + movq %rdx, %rcx
42456 + rep movsb
42457 ++ pax_force_retaddr
42458 + retq
42459 + .Lmemmove_end_forward_efs:
42460 + .previous
42461 +diff -urNp linux-3.0.8/arch/x86/lib/memset_64.S linux-3.0.8/arch/x86/lib/memset_64.S
42462 +--- linux-3.0.8/arch/x86/lib/memset_64.S 2011-07-21 22:17:23.000000000 -0400
42463 ++++ linux-3.0.8/arch/x86/lib/memset_64.S 2011-10-06 04:17:55.000000000 -0400
42464 +@@ -31,6 +31,7 @@
42465 movl %r8d,%ecx
42466 rep stosb
42467 movq %r9,%rax
42468 + pax_force_retaddr
42469 ret
42470 - CFI_ENDPROC
42471 - ENDPROC(memset_c)
42472 -@@ -96,6 +98,7 @@ ENTRY(__memset)
42473 + .Lmemset_e:
42474 + .previous
42475 +@@ -53,6 +54,7 @@
42476 + movl %edx,%ecx
42477 + rep stosb
42478 + movq %r9,%rax
42479 ++ pax_force_retaddr
42480 + ret
42481 + .Lmemset_e_e:
42482 + .previous
42483 +@@ -121,6 +123,7 @@ ENTRY(__memset)
42484
42485 .Lende:
42486 movq %r10,%rax
42487 @@ -20345,18 +18497,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/memset_64.S linux-2.6.32.48/arch/x86/lib
42488 ret
42489
42490 CFI_RESTORE_STATE
42491 -@@ -118,7 +121,7 @@ ENDPROC(__memset)
42492 -
42493 - #include <asm/cpufeature.h>
42494 -
42495 -- .section .altinstr_replacement,"ax"
42496 -+ .section .altinstr_replacement,"a"
42497 - 1: .byte 0xeb /* jmp <disp8> */
42498 - .byte (memset_c - memset) - (2f - 1b) /* offset */
42499 - 2:
42500 -diff -urNp linux-2.6.32.48/arch/x86/lib/mmx_32.c linux-2.6.32.48/arch/x86/lib/mmx_32.c
42501 ---- linux-2.6.32.48/arch/x86/lib/mmx_32.c 2009-12-02 22:51:21.000000000 -0500
42502 -+++ linux-2.6.32.48/arch/x86/lib/mmx_32.c 2011-11-12 12:46:42.000000000 -0500
42503 +diff -urNp linux-3.0.8/arch/x86/lib/mmx_32.c linux-3.0.8/arch/x86/lib/mmx_32.c
42504 +--- linux-3.0.8/arch/x86/lib/mmx_32.c 2011-07-21 22:17:23.000000000 -0400
42505 ++++ linux-3.0.8/arch/x86/lib/mmx_32.c 2011-08-23 21:47:55.000000000 -0400
42506 @@ -29,6 +29,7 @@ void *_mmx_memcpy(void *to, const void *
42507 {
42508 void *p;
42509 @@ -20672,9 +18815,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/mmx_32.c linux-2.6.32.48/arch/x86/lib/mm
42510
42511 from += 64;
42512 to += 64;
42513 -diff -urNp linux-2.6.32.48/arch/x86/lib/msr-reg.S linux-2.6.32.48/arch/x86/lib/msr-reg.S
42514 ---- linux-2.6.32.48/arch/x86/lib/msr-reg.S 2009-12-02 22:51:21.000000000 -0500
42515 -+++ linux-2.6.32.48/arch/x86/lib/msr-reg.S 2011-11-12 12:46:42.000000000 -0500
42516 +diff -urNp linux-3.0.8/arch/x86/lib/msr-reg.S linux-3.0.8/arch/x86/lib/msr-reg.S
42517 +--- linux-3.0.8/arch/x86/lib/msr-reg.S 2011-07-21 22:17:23.000000000 -0400
42518 ++++ linux-3.0.8/arch/x86/lib/msr-reg.S 2011-10-07 19:07:28.000000000 -0400
42519 @@ -3,6 +3,7 @@
42520 #include <asm/dwarf2.h>
42521 #include <asm/asm.h>
42522 @@ -20691,9 +18834,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/msr-reg.S linux-2.6.32.48/arch/x86/lib/m
42523 ret
42524 3:
42525 CFI_RESTORE_STATE
42526 -diff -urNp linux-2.6.32.48/arch/x86/lib/putuser.S linux-2.6.32.48/arch/x86/lib/putuser.S
42527 ---- linux-2.6.32.48/arch/x86/lib/putuser.S 2009-12-02 22:51:21.000000000 -0500
42528 -+++ linux-2.6.32.48/arch/x86/lib/putuser.S 2011-11-12 12:46:42.000000000 -0500
42529 +diff -urNp linux-3.0.8/arch/x86/lib/putuser.S linux-3.0.8/arch/x86/lib/putuser.S
42530 +--- linux-3.0.8/arch/x86/lib/putuser.S 2011-07-21 22:17:23.000000000 -0400
42531 ++++ linux-3.0.8/arch/x86/lib/putuser.S 2011-10-07 19:07:23.000000000 -0400
42532 @@ -15,7 +15,9 @@
42533 #include <asm/thread_info.h>
42534 #include <asm/errno.h>
42535 @@ -20833,9 +18976,9 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/putuser.S linux-2.6.32.48/arch/x86/lib/p
42536 #endif
42537 xor %eax,%eax
42538 EXIT
42539 -diff -urNp linux-2.6.32.48/arch/x86/lib/rwlock_64.S linux-2.6.32.48/arch/x86/lib/rwlock_64.S
42540 ---- linux-2.6.32.48/arch/x86/lib/rwlock_64.S 2009-12-02 22:51:21.000000000 -0500
42541 -+++ linux-2.6.32.48/arch/x86/lib/rwlock_64.S 2011-11-12 12:46:42.000000000 -0500
42542 +diff -urNp linux-3.0.8/arch/x86/lib/rwlock_64.S linux-3.0.8/arch/x86/lib/rwlock_64.S
42543 +--- linux-3.0.8/arch/x86/lib/rwlock_64.S 2011-07-21 22:17:23.000000000 -0400
42544 ++++ linux-3.0.8/arch/x86/lib/rwlock_64.S 2011-10-06 04:17:55.000000000 -0400
42545 @@ -17,6 +17,7 @@ ENTRY(__write_lock_failed)
42546 LOCK_PREFIX
42547 subl $RW_LOCK_BIAS,(%rdi)
42548 @@ -20852,45 +18995,46 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/rwlock_64.S linux-2.6.32.48/arch/x86/lib
42549 ret
42550 CFI_ENDPROC
42551 END(__read_lock_failed)
42552 -diff -urNp linux-2.6.32.48/arch/x86/lib/rwsem_64.S linux-2.6.32.48/arch/x86/lib/rwsem_64.S
42553 ---- linux-2.6.32.48/arch/x86/lib/rwsem_64.S 2011-11-12 12:44:28.000000000 -0500
42554 -+++ linux-2.6.32.48/arch/x86/lib/rwsem_64.S 2011-11-12 12:46:42.000000000 -0500
42555 -@@ -48,6 +48,7 @@ ENTRY(call_rwsem_down_read_failed)
42556 - call rwsem_down_read_failed
42557 - popq %rdx
42558 +diff -urNp linux-3.0.8/arch/x86/lib/rwsem_64.S linux-3.0.8/arch/x86/lib/rwsem_64.S
42559 +--- linux-3.0.8/arch/x86/lib/rwsem_64.S 2011-07-21 22:17:23.000000000 -0400
42560 ++++ linux-3.0.8/arch/x86/lib/rwsem_64.S 2011-10-07 10:46:47.000000000 -0400
42561 +@@ -51,6 +51,7 @@ ENTRY(call_rwsem_down_read_failed)
42562 + popq_cfi %rdx
42563 + CFI_RESTORE rdx
42564 restore_common_regs
42565 + pax_force_retaddr
42566 ret
42567 - ENDPROC(call_rwsem_down_read_failed)
42568 -
42569 -@@ -56,6 +57,7 @@ ENTRY(call_rwsem_down_write_failed)
42570 + CFI_ENDPROC
42571 + ENDPROC(call_rwsem_down_read_failed)
42572 +@@ -61,6 +62,7 @@ ENTRY(call_rwsem_down_write_failed)
42573 movq %rax,%rdi
42574 call rwsem_down_write_failed
42575 restore_common_regs
42576 + pax_force_retaddr
42577 ret
42578 - ENDPROC(call_rwsem_down_write_failed)
42579 -
42580 -@@ -66,7 +68,8 @@ ENTRY(call_rwsem_wake)
42581 + CFI_ENDPROC
42582 + ENDPROC(call_rwsem_down_write_failed)
42583 +@@ -73,7 +75,8 @@ ENTRY(call_rwsem_wake)
42584 movq %rax,%rdi
42585 call rwsem_wake
42586 restore_common_regs
42587 -1: ret
42588 +1: pax_force_retaddr
42589 + ret
42590 - ENDPROC(call_rwsem_wake)
42591 + CFI_ENDPROC
42592 + ENDPROC(call_rwsem_wake)
42593
42594 - /* Fix up special calling conventions */
42595 -@@ -77,5 +80,6 @@ ENTRY(call_rwsem_downgrade_wake)
42596 - call rwsem_downgrade_wake
42597 - popq %rdx
42598 +@@ -88,6 +91,7 @@ ENTRY(call_rwsem_downgrade_wake)
42599 + popq_cfi %rdx
42600 + CFI_RESTORE rdx
42601 restore_common_regs
42602 + pax_force_retaddr
42603 ret
42604 - ENDPROC(call_rwsem_downgrade_wake)
42605 -diff -urNp linux-2.6.32.48/arch/x86/lib/thunk_64.S linux-2.6.32.48/arch/x86/lib/thunk_64.S
42606 ---- linux-2.6.32.48/arch/x86/lib/thunk_64.S 2009-12-02 22:51:21.000000000 -0500
42607 -+++ linux-2.6.32.48/arch/x86/lib/thunk_64.S 2011-11-12 12:46:42.000000000 -0500
42608 + CFI_ENDPROC
42609 + ENDPROC(call_rwsem_downgrade_wake)
42610 +diff -urNp linux-3.0.8/arch/x86/lib/thunk_64.S linux-3.0.8/arch/x86/lib/thunk_64.S
42611 +--- linux-3.0.8/arch/x86/lib/thunk_64.S 2011-07-21 22:17:23.000000000 -0400
42612 ++++ linux-3.0.8/arch/x86/lib/thunk_64.S 2011-10-06 04:17:55.000000000 -0400
42613 @@ -10,7 +10,8 @@
42614 #include <asm/dwarf2.h>
42615 #include <asm/calling.h>
42616 @@ -20901,24 +19045,17 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/thunk_64.S linux-2.6.32.48/arch/x86/lib/
42617 /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
42618 .macro thunk name,func
42619 .globl \name
42620 -@@ -70,6 +71,7 @@
42621 +@@ -50,5 +51,6 @@
42622 SAVE_ARGS
42623 restore:
42624 RESTORE_ARGS
42625 +- ret
42626 + pax_force_retaddr
42627 - ret
42628 - CFI_ENDPROC
42629 -
42630 -@@ -77,5 +79,6 @@ restore:
42631 - SAVE_ARGS
42632 - restore_norax:
42633 - RESTORE_ARGS 1
42634 -+ pax_force_retaddr
42635 - ret
42636 ++ ret
42637 CFI_ENDPROC
42638 -diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_32.c linux-2.6.32.48/arch/x86/lib/usercopy_32.c
42639 ---- linux-2.6.32.48/arch/x86/lib/usercopy_32.c 2009-12-02 22:51:21.000000000 -0500
42640 -+++ linux-2.6.32.48/arch/x86/lib/usercopy_32.c 2011-11-12 12:46:42.000000000 -0500
42641 +diff -urNp linux-3.0.8/arch/x86/lib/usercopy_32.c linux-3.0.8/arch/x86/lib/usercopy_32.c
42642 +--- linux-3.0.8/arch/x86/lib/usercopy_32.c 2011-07-21 22:17:23.000000000 -0400
42643 ++++ linux-3.0.8/arch/x86/lib/usercopy_32.c 2011-08-23 21:47:55.000000000 -0400
42644 @@ -43,7 +43,7 @@ do { \
42645 __asm__ __volatile__( \
42646 " testl %1,%1\n" \
42647 @@ -21440,7 +19577,7 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_32.c linux-2.6.32.48/arch/x86/l
42648 return n;
42649 }
42650 EXPORT_SYMBOL(__copy_from_user_ll_nozero);
42651 -@@ -827,59 +943,38 @@ unsigned long __copy_from_user_ll_nocach
42652 +@@ -827,65 +943,50 @@ unsigned long __copy_from_user_ll_nocach
42653 if (n > 64 && cpu_has_xmm2)
42654 n = __copy_user_intel_nocache(to, from, n);
42655 else
42656 @@ -21469,29 +19606,15 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_32.c linux-2.6.32.48/arch/x86/l
42657 - */
42658 -unsigned long
42659 -copy_to_user(void __user *to, const void *from, unsigned long n)
42660 -+#ifdef CONFIG_PAX_MEMORY_UDEREF
42661 -+void __set_fs(mm_segment_t x)
42662 ++void copy_from_user_overflow(void)
42663 {
42664 - if (access_ok(VERIFY_WRITE, to, n))
42665 - n = __copy_to_user(to, from, n);
42666 - return n;
42667 -+ switch (x.seg) {
42668 -+ case 0:
42669 -+ loadsegment(gs, 0);
42670 -+ break;
42671 -+ case TASK_SIZE_MAX:
42672 -+ loadsegment(gs, __USER_DS);
42673 -+ break;
42674 -+ case -1UL:
42675 -+ loadsegment(gs, __KERNEL_DS);
42676 -+ break;
42677 -+ default:
42678 -+ BUG();
42679 -+ }
42680 -+ return;
42681 ++ WARN(1, "Buffer overflow detected!\n");
42682 }
42683 -EXPORT_SYMBOL(copy_to_user);
42684 -+EXPORT_SYMBOL(__set_fs);
42685 ++EXPORT_SYMBOL(copy_from_user_overflow);
42686
42687 -/**
42688 - * copy_from_user: - Copy a block of data from user space.
42689 @@ -21510,23 +19633,52 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_32.c linux-2.6.32.48/arch/x86/l
42690 - * data to the requested size using zero bytes.
42691 - */
42692 -unsigned long
42693 --copy_from_user(void *to, const void __user *from, unsigned long n)
42694 -+void set_fs(mm_segment_t x)
42695 +-_copy_from_user(void *to, const void __user *from, unsigned long n)
42696 ++void copy_to_user_overflow(void)
42697 {
42698 - if (access_ok(VERIFY_READ, from, n))
42699 - n = __copy_from_user(to, from, n);
42700 - else
42701 - memset(to, 0, n);
42702 - return n;
42703 ++ WARN(1, "Buffer overflow detected!\n");
42704 + }
42705 +-EXPORT_SYMBOL(_copy_from_user);
42706 ++EXPORT_SYMBOL(copy_to_user_overflow);
42707 +
42708 +-void copy_from_user_overflow(void)
42709 ++#ifdef CONFIG_PAX_MEMORY_UDEREF
42710 ++void __set_fs(mm_segment_t x)
42711 + {
42712 +- WARN(1, "Buffer overflow detected!\n");
42713 ++ switch (x.seg) {
42714 ++ case 0:
42715 ++ loadsegment(gs, 0);
42716 ++ break;
42717 ++ case TASK_SIZE_MAX:
42718 ++ loadsegment(gs, __USER_DS);
42719 ++ break;
42720 ++ case -1UL:
42721 ++ loadsegment(gs, __KERNEL_DS);
42722 ++ break;
42723 ++ default:
42724 ++ BUG();
42725 ++ }
42726 ++ return;
42727 + }
42728 +-EXPORT_SYMBOL(copy_from_user_overflow);
42729 ++EXPORT_SYMBOL(__set_fs);
42730 ++
42731 ++void set_fs(mm_segment_t x)
42732 ++{
42733 + current_thread_info()->addr_limit = x;
42734 + __set_fs(x);
42735 - }
42736 --EXPORT_SYMBOL(copy_from_user);
42737 ++}
42738 +EXPORT_SYMBOL(set_fs);
42739 +#endif
42740 -diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_64.c linux-2.6.32.48/arch/x86/lib/usercopy_64.c
42741 ---- linux-2.6.32.48/arch/x86/lib/usercopy_64.c 2009-12-02 22:51:21.000000000 -0500
42742 -+++ linux-2.6.32.48/arch/x86/lib/usercopy_64.c 2011-11-12 12:46:42.000000000 -0500
42743 +diff -urNp linux-3.0.8/arch/x86/lib/usercopy_64.c linux-3.0.8/arch/x86/lib/usercopy_64.c
42744 +--- linux-3.0.8/arch/x86/lib/usercopy_64.c 2011-07-21 22:17:23.000000000 -0400
42745 ++++ linux-3.0.8/arch/x86/lib/usercopy_64.c 2011-10-06 04:17:55.000000000 -0400
42746 @@ -42,6 +42,12 @@ long
42747 __strncpy_from_user(char *dst, const char __user *src, long count)
42748 {
42749 @@ -21585,18 +19737,18 @@ diff -urNp linux-2.6.32.48/arch/x86/lib/usercopy_64.c linux-2.6.32.48/arch/x86/l
42750 {
42751 char c;
42752 unsigned zero_len;
42753 -diff -urNp linux-2.6.32.48/arch/x86/Makefile linux-2.6.32.48/arch/x86/Makefile
42754 ---- linux-2.6.32.48/arch/x86/Makefile 2009-12-02 22:51:21.000000000 -0500
42755 -+++ linux-2.6.32.48/arch/x86/Makefile 2011-11-12 12:46:42.000000000 -0500
42756 +diff -urNp linux-3.0.8/arch/x86/Makefile linux-3.0.8/arch/x86/Makefile
42757 +--- linux-3.0.8/arch/x86/Makefile 2011-07-21 22:17:23.000000000 -0400
42758 ++++ linux-3.0.8/arch/x86/Makefile 2011-08-23 21:48:14.000000000 -0400
42759 @@ -44,6 +44,7 @@ ifeq ($(CONFIG_X86_32),y)
42760 else
42761 BITS := 64
42762 UTS_MACHINE := x86_64
42763 -+ biarch := $(call cc-option,-m64)
42764 ++ biarch := $(call cc-option,-m64)
42765 CHECKFLAGS += -D__x86_64__ -m64
42766
42767 KBUILD_AFLAGS += -m64
42768 -@@ -189,3 +190,12 @@ define archhelp
42769 +@@ -195,3 +196,12 @@ define archhelp
42770 echo ' FDARGS="..." arguments for the booted kernel'
42771 echo ' FDINITRD=file initrd for the booted kernel'
42772 endef
42773 @@ -21609,74 +19761,10 @@ diff -urNp linux-2.6.32.48/arch/x86/Makefile linux-2.6.32.48/arch/x86/Makefile
42774 +
42775 +archprepare:
42776 + $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
42777 -diff -urNp linux-2.6.32.48/arch/x86/mm/extable.c linux-2.6.32.48/arch/x86/mm/extable.c
42778 ---- linux-2.6.32.48/arch/x86/mm/extable.c 2009-12-02 22:51:21.000000000 -0500
42779 -+++ linux-2.6.32.48/arch/x86/mm/extable.c 2011-11-12 12:46:42.000000000 -0500
42780 -@@ -1,14 +1,71 @@
42781 - #include <linux/module.h>
42782 - #include <linux/spinlock.h>
42783 -+#include <linux/sort.h>
42784 - #include <asm/uaccess.h>
42785 -+#include <asm/pgtable.h>
42786 -
42787 -+/*
42788 -+ * The exception table needs to be sorted so that the binary
42789 -+ * search that we use to find entries in it works properly.
42790 -+ * This is used both for the kernel exception table and for
42791 -+ * the exception tables of modules that get loaded.
42792 -+ */
42793 -+static int cmp_ex(const void *a, const void *b)
42794 -+{
42795 -+ const struct exception_table_entry *x = a, *y = b;
42796 -+
42797 -+ /* avoid overflow */
42798 -+ if (x->insn > y->insn)
42799 -+ return 1;
42800 -+ if (x->insn < y->insn)
42801 -+ return -1;
42802 -+ return 0;
42803 -+}
42804 -+
42805 -+static void swap_ex(void *a, void *b, int size)
42806 -+{
42807 -+ struct exception_table_entry t, *x = a, *y = b;
42808 -+
42809 -+ t = *x;
42810 -+
42811 -+ pax_open_kernel();
42812 -+ *x = *y;
42813 -+ *y = t;
42814 -+ pax_close_kernel();
42815 -+}
42816 -+
42817 -+void sort_extable(struct exception_table_entry *start,
42818 -+ struct exception_table_entry *finish)
42819 -+{
42820 -+ sort(start, finish - start, sizeof(struct exception_table_entry),
42821 -+ cmp_ex, swap_ex);
42822 -+}
42823 -+
42824 -+#ifdef CONFIG_MODULES
42825 -+/*
42826 -+ * If the exception table is sorted, any referring to the module init
42827 -+ * will be at the beginning or the end.
42828 -+ */
42829 -+void trim_init_extable(struct module *m)
42830 -+{
42831 -+ /*trim the beginning*/
42832 -+ while (m->num_exentries && within_module_init(m->extable[0].insn, m)) {
42833 -+ m->extable++;
42834 -+ m->num_exentries--;
42835 -+ }
42836 -+ /*trim the end*/
42837 -+ while (m->num_exentries &&
42838 -+ within_module_init(m->extable[m->num_exentries-1].insn, m))
42839 -+ m->num_exentries--;
42840 -+}
42841 -+#endif /* CONFIG_MODULES */
42842 -
42843 - int fixup_exception(struct pt_regs *regs)
42844 - {
42845 +diff -urNp linux-3.0.8/arch/x86/mm/extable.c linux-3.0.8/arch/x86/mm/extable.c
42846 +--- linux-3.0.8/arch/x86/mm/extable.c 2011-07-21 22:17:23.000000000 -0400
42847 ++++ linux-3.0.8/arch/x86/mm/extable.c 2011-08-23 21:47:55.000000000 -0400
42848 +@@ -8,7 +8,7 @@ int fixup_exception(struct pt_regs *regs
42849 const struct exception_table_entry *fixup;
42850
42851 #ifdef CONFIG_PNPBIOS
42852 @@ -21685,13 +19773,13 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/extable.c linux-2.6.32.48/arch/x86/mm/ext
42853 extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
42854 extern u32 pnp_bios_is_utter_crap;
42855 pnp_bios_is_utter_crap = 1;
42856 -diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault.c
42857 ---- linux-2.6.32.48/arch/x86/mm/fault.c 2011-11-12 12:44:28.000000000 -0500
42858 -+++ linux-2.6.32.48/arch/x86/mm/fault.c 2011-11-12 12:46:42.000000000 -0500
42859 -@@ -11,10 +11,19 @@
42860 - #include <linux/kprobes.h> /* __kprobes, ... */
42861 - #include <linux/mmiotrace.h> /* kmmio_handler, ... */
42862 +diff -urNp linux-3.0.8/arch/x86/mm/fault.c linux-3.0.8/arch/x86/mm/fault.c
42863 +--- linux-3.0.8/arch/x86/mm/fault.c 2011-07-21 22:17:23.000000000 -0400
42864 ++++ linux-3.0.8/arch/x86/mm/fault.c 2011-11-01 05:23:50.000000000 -0400
42865 +@@ -13,10 +13,18 @@
42866 #include <linux/perf_event.h> /* perf_sw_event */
42867 + #include <linux/hugetlb.h> /* hstate_index_to_shift */
42868 + #include <linux/prefetch.h> /* prefetchw */
42869 +#include <linux/unistd.h>
42870 +#include <linux/compiler.h>
42871
42872 @@ -21703,12 +19791,11 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
42873 +
42874 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
42875 +#include <asm/stacktrace.h>
42876 -+#include "../kernel/dumpstack.h"
42877 +#endif
42878
42879 /*
42880 * Page fault error code bits:
42881 -@@ -51,7 +60,7 @@ static inline int notify_page_fault(stru
42882 +@@ -54,7 +62,7 @@ static inline int __kprobes notify_page_
42883 int ret = 0;
42884
42885 /* kprobe_running() needs smp_processor_id() */
42886 @@ -21717,7 +19804,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
42887 preempt_disable();
42888 if (kprobe_running() && kprobe_fault_handler(regs, 14))
42889 ret = 1;
42890 -@@ -112,7 +121,10 @@ check_prefetch_opcode(struct pt_regs *re
42891 +@@ -115,7 +123,10 @@ check_prefetch_opcode(struct pt_regs *re
42892 return !instr_lo || (instr_lo>>1) == 1;
42893 case 0x00:
42894 /* Prefetch instruction is 0x0F0D or 0x0F18 */
42895 @@ -21729,7 +19816,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
42896 return 0;
42897
42898 *prefetch = (instr_lo == 0xF) &&
42899 -@@ -146,7 +158,10 @@ is_prefetch(struct pt_regs *regs, unsign
42900 +@@ -149,7 +160,10 @@ is_prefetch(struct pt_regs *regs, unsign
42901 while (instr < max_instr) {
42902 unsigned char opcode;
42903
42904 @@ -21741,10 +19828,14 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
42905 break;
42906
42907 instr++;
42908 -@@ -172,6 +187,30 @@ force_sig_info_fault(int si_signo, int s
42909 +@@ -180,6 +194,34 @@ force_sig_info_fault(int si_signo, int s
42910 force_sig_info(si_signo, &info, tsk);
42911 }
42912
42913 ++#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
42914 ++static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address);
42915 ++#endif
42916 ++
42917 +#ifdef CONFIG_PAX_EMUTRAMP
42918 +static int pax_handle_fetch_fault(struct pt_regs *regs);
42919 +#endif
42920 @@ -21772,10 +19863,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
42921 DEFINE_SPINLOCK(pgd_lock);
42922 LIST_HEAD(pgd_list);
42923
42924 -@@ -224,11 +263,24 @@ void vmalloc_sync_all(void)
42925 +@@ -230,10 +272,22 @@ void vmalloc_sync_all(void)
42926 + for (address = VMALLOC_START & PMD_MASK;
42927 + address >= TASK_SIZE && address < FIXADDR_TOP;
42928 address += PMD_SIZE) {
42929 -
42930 - unsigned long flags;
42931 +
42932 +#ifdef CONFIG_PAX_PER_CPU_PGD
42933 + unsigned long cpu;
42934 @@ -21783,22 +19874,34 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
42935 struct page *page;
42936 +#endif
42937
42938 - spin_lock_irqsave(&pgd_lock, flags);
42939 + spin_lock(&pgd_lock);
42940 +
42941 +#ifdef CONFIG_PAX_PER_CPU_PGD
42942 + for (cpu = 0; cpu < NR_CPUS; ++cpu) {
42943 + pgd_t *pgd = get_cpu_pgd(cpu);
42944 ++ pmd_t *ret;
42945 +#else
42946 list_for_each_entry(page, &pgd_list, lru) {
42947 -- if (!vmalloc_sync_one(page_address(page), address))
42948 + pgd_t *pgd = page_address(page);
42949 + spinlock_t *pgt_lock;
42950 + pmd_t *ret;
42951 +
42952 +@@ -241,8 +295,13 @@ void vmalloc_sync_all(void)
42953 + pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
42954 +
42955 + spin_lock(pgt_lock);
42956 +- ret = vmalloc_sync_one(page_address(page), address);
42957 +#endif
42958 +
42959 -+ if (!vmalloc_sync_one(pgd, address))
42960 ++ ret = vmalloc_sync_one(pgd, address);
42961 ++
42962 ++#ifndef CONFIG_PAX_PER_CPU_PGD
42963 + spin_unlock(pgt_lock);
42964 ++#endif
42965 +
42966 + if (!ret)
42967 break;
42968 - }
42969 - spin_unlock_irqrestore(&pgd_lock, flags);
42970 -@@ -258,6 +310,11 @@ static noinline int vmalloc_fault(unsign
42971 +@@ -276,6 +335,11 @@ static noinline __kprobes int vmalloc_fa
42972 * an interrupt in the middle of a task switch..
42973 */
42974 pgd_paddr = read_cr3();
42975 @@ -21810,35 +19913,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
42976 pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
42977 if (!pmd_k)
42978 return -1;
42979 -@@ -332,15 +389,27 @@ void vmalloc_sync_all(void)
42980 -
42981 - const pgd_t *pgd_ref = pgd_offset_k(address);
42982 - unsigned long flags;
42983 -+
42984 -+#ifdef CONFIG_PAX_PER_CPU_PGD
42985 -+ unsigned long cpu;
42986 -+#else
42987 - struct page *page;
42988 -+#endif
42989 -
42990 - if (pgd_none(*pgd_ref))
42991 - continue;
42992 -
42993 - spin_lock_irqsave(&pgd_lock, flags);
42994 -+
42995 -+#ifdef CONFIG_PAX_PER_CPU_PGD
42996 -+ for (cpu = 0; cpu < NR_CPUS; ++cpu) {
42997 -+ pgd_t *pgd = pgd_offset_cpu(cpu, address);
42998 -+#else
42999 - list_for_each_entry(page, &pgd_list, lru) {
43000 - pgd_t *pgd;
43001 - pgd = (pgd_t *)page_address(page) + pgd_index(address);
43002 -+#endif
43003 -+
43004 - if (pgd_none(*pgd))
43005 - set_pgd(pgd, *pgd_ref);
43006 - else
43007 -@@ -373,7 +442,14 @@ static noinline int vmalloc_fault(unsign
43008 +@@ -371,7 +435,14 @@ static noinline __kprobes int vmalloc_fa
43009 * happen within a race in page table update. In the later
43010 * case just flush:
43011 */
43012 @@ -21853,7 +19928,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43013 pgd_ref = pgd_offset_k(address);
43014 if (pgd_none(*pgd_ref))
43015 return -1;
43016 -@@ -535,7 +611,7 @@ static int is_errata93(struct pt_regs *r
43017 +@@ -533,7 +604,7 @@ static int is_errata93(struct pt_regs *r
43018 static int is_errata100(struct pt_regs *regs, unsigned long address)
43019 {
43020 #ifdef CONFIG_X86_64
43021 @@ -21862,7 +19937,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43022 return 1;
43023 #endif
43024 return 0;
43025 -@@ -562,7 +638,7 @@ static int is_f00f_bug(struct pt_regs *r
43026 +@@ -560,7 +631,7 @@ static int is_f00f_bug(struct pt_regs *r
43027 }
43028
43029 static const char nx_warning[] = KERN_CRIT
43030 @@ -21871,12 +19946,12 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43031
43032 static void
43033 show_fault_oops(struct pt_regs *regs, unsigned long error_code,
43034 -@@ -571,15 +647,26 @@ show_fault_oops(struct pt_regs *regs, un
43035 +@@ -569,14 +640,25 @@ show_fault_oops(struct pt_regs *regs, un
43036 if (!oops_may_print())
43037 return;
43038
43039 - if (error_code & PF_INSTR) {
43040 -+ if (nx_enabled && (error_code & PF_INSTR)) {
43041 ++ if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR)) {
43042 unsigned int level;
43043
43044 pte_t *pte = lookup_address(address, &level);
43045 @@ -21884,8 +19959,8 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43046 if (pte && pte_present(*pte) && !pte_exec(*pte))
43047 - printk(nx_warning, current_uid());
43048 + printk(nx_warning, current_uid(), current->comm, task_pid_nr(current));
43049 - }
43050 -
43051 ++ }
43052 ++
43053 +#ifdef CONFIG_PAX_KERNEXEC
43054 + if (init_mm.start_code <= address && address < init_mm.end_code) {
43055 + if (current->signal->curr_ip)
43056 @@ -21894,13 +19969,12 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43057 + else
43058 + printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n",
43059 + current->comm, task_pid_nr(current), current_uid(), current_euid());
43060 -+ }
43061 + }
43062 +#endif
43063 -+
43064 +
43065 printk(KERN_ALERT "BUG: unable to handle kernel ");
43066 if (address < PAGE_SIZE)
43067 - printk(KERN_CONT "NULL pointer dereference");
43068 -@@ -704,6 +791,70 @@ __bad_area_nosemaphore(struct pt_regs *r
43069 +@@ -702,6 +784,20 @@ __bad_area_nosemaphore(struct pt_regs *r
43070 unsigned long address, int si_code)
43071 {
43072 struct task_struct *tsk = current;
43073 @@ -21910,34 +19984,23 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43074 +
43075 +#ifdef CONFIG_X86_64
43076 + if (mm && (error_code & PF_INSTR) && mm->context.vdso) {
43077 -+ if (regs->ip == (unsigned long)vgettimeofday) {
43078 -+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, fallback_gettimeofday);
43079 -+ return;
43080 -+ } else if (regs->ip == (unsigned long)vtime) {
43081 -+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, fallback_time);
43082 -+ return;
43083 -+ } else if (regs->ip == (unsigned long)vgetcpu) {
43084 -+ regs->ip = (unsigned long)VDSO64_SYMBOL(mm->context.vdso, getcpu);
43085 ++ if (regs->ip == VSYSCALL_ADDR(__NR_vgettimeofday) ||
43086 ++ regs->ip == VSYSCALL_ADDR(__NR_vtime) ||
43087 ++ regs->ip == VSYSCALL_ADDR(__NR_vgetcpu)) {
43088 ++ regs->ip += mm->context.vdso - PAGE_SIZE - VSYSCALL_START;
43089 + return;
43090 + }
43091 + }
43092 +#endif
43093 -+
43094 +
43095 + /* User mode accesses just cause a SIGSEGV */
43096 + if (error_code & PF_USER) {
43097 +@@ -720,6 +816,21 @@ __bad_area_nosemaphore(struct pt_regs *r
43098 + if (is_errata100(regs, address))
43099 + return;
43100 +
43101 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
43102 -+ if (mm && (error_code & PF_USER)) {
43103 -+ unsigned long ip = regs->ip;
43104 -+
43105 -+ if (v8086_mode(regs))
43106 -+ ip = ((regs->cs & 0xffff) << 4) + (ip & 0xffff);
43107 -+
43108 -+ /*
43109 -+ * It's possible to have interrupts off here:
43110 -+ */
43111 -+ local_irq_enable();
43112 -+
43113 -+#ifdef CONFIG_PAX_PAGEEXEC
43114 -+ if ((mm->pax_flags & MF_PAX_PAGEEXEC) &&
43115 -+ ((nx_enabled && (error_code & PF_INSTR)) || (!(error_code & (PF_PROT | PF_WRITE)) && ip == address))) {
43116 ++ if (pax_is_fetch_fault(regs, error_code, address)) {
43117 +
43118 +#ifdef CONFIG_PAX_EMUTRAMP
43119 + switch (pax_handle_fetch_fault(regs)) {
43120 @@ -21946,32 +20009,15 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43121 + }
43122 +#endif
43123 +
43124 -+ pax_report_fault(regs, (void *)ip, (void *)regs->sp);
43125 ++ pax_report_fault(regs, (void *)regs->ip, (void *)regs->sp);
43126 + do_group_exit(SIGKILL);
43127 + }
43128 +#endif
43129 +
43130 -+#ifdef CONFIG_PAX_SEGMEXEC
43131 -+ if ((mm->pax_flags & MF_PAX_SEGMEXEC) && !(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address)) {
43132 -+
43133 -+#ifdef CONFIG_PAX_EMUTRAMP
43134 -+ switch (pax_handle_fetch_fault(regs)) {
43135 -+ case 2:
43136 -+ return;
43137 -+ }
43138 -+#endif
43139 -+
43140 -+ pax_report_fault(regs, (void *)ip, (void *)regs->sp);
43141 -+ do_group_exit(SIGKILL);
43142 -+ }
43143 -+#endif
43144 -+
43145 -+ }
43146 -+#endif
43147 + if (unlikely(show_unhandled_signals))
43148 + show_signal_msg(regs, error_code, address, tsk);
43149
43150 - /* User mode accesses just cause a SIGSEGV */
43151 - if (error_code & PF_USER) {
43152 -@@ -857,6 +1008,99 @@ static int spurious_fault_check(unsigned
43153 +@@ -871,6 +982,99 @@ static int spurious_fault_check(unsigned
43154 return 1;
43155 }
43156
43157 @@ -21983,7 +20029,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43158 + spinlock_t *ptl;
43159 + unsigned char pte_mask;
43160 +
43161 -+ if (nx_enabled || (error_code & (PF_PROT|PF_USER)) != (PF_PROT|PF_USER) || v8086_mode(regs) ||
43162 ++ if ((__supported_pte_mask & _PAGE_NX) || (error_code & (PF_PROT|PF_USER)) != (PF_PROT|PF_USER) || v8086_mode(regs) ||
43163 + !(mm->pax_flags & MF_PAX_PAGEEXEC))
43164 + return 0;
43165 +
43166 @@ -22071,24 +20117,26 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43167 /*
43168 * Handle a spurious fault caused by a stale TLB entry.
43169 *
43170 -@@ -923,6 +1167,9 @@ int show_unhandled_signals = 1;
43171 +@@ -943,6 +1147,9 @@ int show_unhandled_signals = 1;
43172 static inline int
43173 - access_error(unsigned long error_code, int write, struct vm_area_struct *vma)
43174 + access_error(unsigned long error_code, struct vm_area_struct *vma)
43175 {
43176 -+ if (nx_enabled && (error_code & PF_INSTR) && !(vma->vm_flags & VM_EXEC))
43177 ++ if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR) && !(vma->vm_flags & VM_EXEC))
43178 + return 1;
43179 +
43180 - if (write) {
43181 + if (error_code & PF_WRITE) {
43182 /* write, present and write, not present: */
43183 if (unlikely(!(vma->vm_flags & VM_WRITE)))
43184 -@@ -956,17 +1203,31 @@ do_page_fault(struct pt_regs *regs, unsi
43185 +@@ -976,19 +1183,33 @@ do_page_fault(struct pt_regs *regs, unsi
43186 {
43187 struct vm_area_struct *vma;
43188 struct task_struct *tsk;
43189 - unsigned long address;
43190 struct mm_struct *mm;
43191 - int write;
43192 int fault;
43193 + int write = error_code & PF_WRITE;
43194 + unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE |
43195 + (write ? FAULT_FLAG_WRITE : 0);
43196
43197 + /* Get the faulting address: */
43198 + unsigned long address = read_cr2();
43199 @@ -22117,7 +20165,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43200 /*
43201 * Detect and handle instructions that would cause a page fault for
43202 * both a tracked kernel page and a userspace page.
43203 -@@ -1026,7 +1287,7 @@ do_page_fault(struct pt_regs *regs, unsi
43204 +@@ -1048,7 +1269,7 @@ do_page_fault(struct pt_regs *regs, unsi
43205 * User-mode registers count as a user access even for any
43206 * potential system fault or CPU buglet:
43207 */
43208 @@ -22126,7 +20174,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43209 local_irq_enable();
43210 error_code |= PF_USER;
43211 } else {
43212 -@@ -1080,6 +1341,11 @@ do_page_fault(struct pt_regs *regs, unsi
43213 +@@ -1103,6 +1324,11 @@ retry:
43214 might_sleep();
43215 }
43216
43217 @@ -22138,7 +20186,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43218 vma = find_vma(mm, address);
43219 if (unlikely(!vma)) {
43220 bad_area(regs, error_code, address);
43221 -@@ -1091,18 +1357,24 @@ do_page_fault(struct pt_regs *regs, unsi
43222 +@@ -1114,18 +1340,24 @@ retry:
43223 bad_area(regs, error_code, address);
43224 return;
43225 }
43226 @@ -22174,11 +20222,42 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43227 if (unlikely(expand_stack(vma, address))) {
43228 bad_area(regs, error_code, address);
43229 return;
43230 -@@ -1146,3 +1418,199 @@ good_area:
43231 +@@ -1180,3 +1412,230 @@ good_area:
43232
43233 up_read(&mm->mmap_sem);
43234 }
43235 +
43236 ++#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
43237 ++static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address)
43238 ++{
43239 ++ struct mm_struct *mm = current->mm;
43240 ++ unsigned long ip = regs->ip;
43241 ++
43242 ++ if (v8086_mode(regs))
43243 ++ ip = ((regs->cs & 0xffff) << 4) + (ip & 0xffff);
43244 ++
43245 ++#ifdef CONFIG_PAX_PAGEEXEC
43246 ++ if (mm->pax_flags & MF_PAX_PAGEEXEC) {
43247 ++ if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR))
43248 ++ return true;
43249 ++ if (!(error_code & (PF_PROT | PF_WRITE)) && ip == address)
43250 ++ return true;
43251 ++ return false;
43252 ++ }
43253 ++#endif
43254 ++
43255 ++#ifdef CONFIG_PAX_SEGMEXEC
43256 ++ if (mm->pax_flags & MF_PAX_SEGMEXEC) {
43257 ++ if (!(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address))
43258 ++ return true;
43259 ++ return false;
43260 ++ }
43261 ++#endif
43262 ++
43263 ++ return false;
43264 ++}
43265 ++#endif
43266 ++
43267 +#ifdef CONFIG_PAX_EMUTRAMP
43268 +static int pax_handle_fetch_fault_32(struct pt_regs *regs)
43269 +{
43270 @@ -22374,10 +20453,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/fault.c linux-2.6.32.48/arch/x86/mm/fault
43271 +
43272 + return ret ? -EFAULT : 0;
43273 +}
43274 -diff -urNp linux-2.6.32.48/arch/x86/mm/gup.c linux-2.6.32.48/arch/x86/mm/gup.c
43275 ---- linux-2.6.32.48/arch/x86/mm/gup.c 2009-12-02 22:51:21.000000000 -0500
43276 -+++ linux-2.6.32.48/arch/x86/mm/gup.c 2011-11-12 12:46:42.000000000 -0500
43277 -@@ -237,7 +237,7 @@ int __get_user_pages_fast(unsigned long
43278 +diff -urNp linux-3.0.8/arch/x86/mm/gup.c linux-3.0.8/arch/x86/mm/gup.c
43279 +--- linux-3.0.8/arch/x86/mm/gup.c 2011-07-21 22:17:23.000000000 -0400
43280 ++++ linux-3.0.8/arch/x86/mm/gup.c 2011-08-23 21:47:55.000000000 -0400
43281 +@@ -263,7 +263,7 @@ int __get_user_pages_fast(unsigned long
43282 addr = start;
43283 len = (unsigned long) nr_pages << PAGE_SHIFT;
43284 end = start + len;
43285 @@ -22386,10 +20465,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/gup.c linux-2.6.32.48/arch/x86/mm/gup.c
43286 (void __user *)start, len)))
43287 return 0;
43288
43289 -diff -urNp linux-2.6.32.48/arch/x86/mm/highmem_32.c linux-2.6.32.48/arch/x86/mm/highmem_32.c
43290 ---- linux-2.6.32.48/arch/x86/mm/highmem_32.c 2009-12-02 22:51:21.000000000 -0500
43291 -+++ linux-2.6.32.48/arch/x86/mm/highmem_32.c 2011-11-12 12:46:42.000000000 -0500
43292 -@@ -43,7 +43,10 @@ void *kmap_atomic_prot(struct page *page
43293 +diff -urNp linux-3.0.8/arch/x86/mm/highmem_32.c linux-3.0.8/arch/x86/mm/highmem_32.c
43294 +--- linux-3.0.8/arch/x86/mm/highmem_32.c 2011-07-21 22:17:23.000000000 -0400
43295 ++++ linux-3.0.8/arch/x86/mm/highmem_32.c 2011-08-23 21:47:55.000000000 -0400
43296 +@@ -44,7 +44,10 @@ void *kmap_atomic_prot(struct page *page
43297 idx = type + KM_TYPE_NR*smp_processor_id();
43298 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
43299 BUG_ON(!pte_none(*(kmap_pte-idx)));
43300 @@ -22400,10 +20479,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/highmem_32.c linux-2.6.32.48/arch/x86/mm/
43301
43302 return (void *)vaddr;
43303 }
43304 -diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm/hugetlbpage.c
43305 ---- linux-2.6.32.48/arch/x86/mm/hugetlbpage.c 2009-12-02 22:51:21.000000000 -0500
43306 -+++ linux-2.6.32.48/arch/x86/mm/hugetlbpage.c 2011-11-12 12:46:42.000000000 -0500
43307 -@@ -267,13 +267,20 @@ static unsigned long hugetlb_get_unmappe
43308 +diff -urNp linux-3.0.8/arch/x86/mm/hugetlbpage.c linux-3.0.8/arch/x86/mm/hugetlbpage.c
43309 +--- linux-3.0.8/arch/x86/mm/hugetlbpage.c 2011-07-21 22:17:23.000000000 -0400
43310 ++++ linux-3.0.8/arch/x86/mm/hugetlbpage.c 2011-08-23 21:47:55.000000000 -0400
43311 +@@ -266,13 +266,20 @@ static unsigned long hugetlb_get_unmappe
43312 struct hstate *h = hstate_file(file);
43313 struct mm_struct *mm = current->mm;
43314 struct vm_area_struct *vma;
43315 @@ -22428,7 +20507,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43316 }
43317
43318 full_search:
43319 -@@ -281,26 +288,27 @@ full_search:
43320 +@@ -280,26 +287,27 @@ full_search:
43321
43322 for (vma = find_vma(mm, addr); ; vma = vma->vm_next) {
43323 /* At this point: (!vma || addr < vma->vm_end). */
43324 @@ -22463,7 +20542,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43325 }
43326
43327 static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
43328 -@@ -309,10 +317,9 @@ static unsigned long hugetlb_get_unmappe
43329 +@@ -308,10 +316,9 @@ static unsigned long hugetlb_get_unmappe
43330 {
43331 struct hstate *h = hstate_file(file);
43332 struct mm_struct *mm = current->mm;
43333 @@ -22476,7 +20555,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43334
43335 /* don't allow allocations above current base */
43336 if (mm->free_area_cache > base)
43337 -@@ -322,64 +329,63 @@ static unsigned long hugetlb_get_unmappe
43338 +@@ -321,64 +328,63 @@ static unsigned long hugetlb_get_unmappe
43339 largest_hole = 0;
43340 mm->free_area_cache = base;
43341 }
43342 @@ -22486,7 +20565,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43343 if (mm->free_area_cache < len)
43344 goto fail;
43345
43346 - /* either no address requested or cant fit in requested address hole */
43347 + /* either no address requested or can't fit in requested address hole */
43348 - addr = (mm->free_area_cache - len) & huge_page_mask(h);
43349 + addr = (mm->free_area_cache - len);
43350 do {
43351 @@ -22571,7 +20650,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43352 mm->cached_hole_size = ~0UL;
43353 addr = hugetlb_get_unmapped_area_bottomup(file, addr0,
43354 len, pgoff, flags);
43355 -@@ -387,6 +393,7 @@ fail:
43356 +@@ -386,6 +392,7 @@ fail:
43357 /*
43358 * Restore the topdown base:
43359 */
43360 @@ -22579,7 +20658,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43361 mm->free_area_cache = base;
43362 mm->cached_hole_size = ~0UL;
43363
43364 -@@ -400,10 +407,19 @@ hugetlb_get_unmapped_area(struct file *f
43365 +@@ -399,10 +406,19 @@ hugetlb_get_unmapped_area(struct file *f
43366 struct hstate *h = hstate_file(file);
43367 struct mm_struct *mm = current->mm;
43368 struct vm_area_struct *vma;
43369 @@ -22600,7 +20679,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43370 return -ENOMEM;
43371
43372 if (flags & MAP_FIXED) {
43373 -@@ -415,8 +431,7 @@ hugetlb_get_unmapped_area(struct file *f
43374 +@@ -414,8 +430,7 @@ hugetlb_get_unmapped_area(struct file *f
43375 if (addr) {
43376 addr = ALIGN(addr, huge_page_size(h));
43377 vma = find_vma(mm, addr);
43378 @@ -22610,10 +20689,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/hugetlbpage.c linux-2.6.32.48/arch/x86/mm
43379 return addr;
43380 }
43381 if (mm->get_unmapped_area == arch_get_unmapped_area)
43382 -diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/init_32.c
43383 ---- linux-2.6.32.48/arch/x86/mm/init_32.c 2009-12-02 22:51:21.000000000 -0500
43384 -+++ linux-2.6.32.48/arch/x86/mm/init_32.c 2011-11-12 12:46:42.000000000 -0500
43385 -@@ -72,36 +72,6 @@ static __init void *alloc_low_page(void)
43386 +diff -urNp linux-3.0.8/arch/x86/mm/init_32.c linux-3.0.8/arch/x86/mm/init_32.c
43387 +--- linux-3.0.8/arch/x86/mm/init_32.c 2011-07-21 22:17:23.000000000 -0400
43388 ++++ linux-3.0.8/arch/x86/mm/init_32.c 2011-08-23 21:47:55.000000000 -0400
43389 +@@ -74,36 +74,6 @@ static __init void *alloc_low_page(void)
43390 }
43391
43392 /*
43393 @@ -22650,7 +20729,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43394 * Create a page table and place a pointer to it in a middle page
43395 * directory entry:
43396 */
43397 -@@ -121,13 +91,28 @@ static pte_t * __init one_page_table_ini
43398 +@@ -123,13 +93,28 @@ static pte_t * __init one_page_table_ini
43399 page_table = (pte_t *)alloc_low_page();
43400
43401 paravirt_alloc_pte(&init_mm, __pa(page_table) >> PAGE_SHIFT);
43402 @@ -22679,7 +20758,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43403 pmd_t * __init populate_extra_pmd(unsigned long vaddr)
43404 {
43405 int pgd_idx = pgd_index(vaddr);
43406 -@@ -201,6 +186,7 @@ page_table_range_init(unsigned long star
43407 +@@ -203,6 +188,7 @@ page_table_range_init(unsigned long star
43408 int pgd_idx, pmd_idx;
43409 unsigned long vaddr;
43410 pgd_t *pgd;
43411 @@ -22687,7 +20766,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43412 pmd_t *pmd;
43413 pte_t *pte = NULL;
43414
43415 -@@ -210,8 +196,13 @@ page_table_range_init(unsigned long star
43416 +@@ -212,8 +198,13 @@ page_table_range_init(unsigned long star
43417 pgd = pgd_base + pgd_idx;
43418
43419 for ( ; (pgd_idx < PTRS_PER_PGD) && (vaddr != end); pgd++, pgd_idx++) {
43420 @@ -22703,14 +20782,14 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43421 for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end);
43422 pmd++, pmd_idx++) {
43423 pte = page_table_kmap_check(one_page_table_init(pmd),
43424 -@@ -223,11 +214,20 @@ page_table_range_init(unsigned long star
43425 +@@ -225,11 +216,20 @@ page_table_range_init(unsigned long star
43426 }
43427 }
43428
43429 -static inline int is_kernel_text(unsigned long addr)
43430 +static inline int is_kernel_text(unsigned long start, unsigned long end)
43431 {
43432 -- if (addr >= PAGE_OFFSET && addr <= (unsigned long)__init_end)
43433 +- if (addr >= (unsigned long)_text && addr <= (unsigned long)__init_end)
43434 - return 1;
43435 - return 0;
43436 + if ((start > ktla_ktva((unsigned long)_etext) ||
43437 @@ -22728,8 +20807,8 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43438 }
43439
43440 /*
43441 -@@ -243,9 +243,10 @@ kernel_physical_mapping_init(unsigned lo
43442 - int use_pse = page_size_mask == (1<<PG_LEVEL_2M);
43443 +@@ -246,9 +246,10 @@ kernel_physical_mapping_init(unsigned lo
43444 + unsigned long last_map_addr = end;
43445 unsigned long start_pfn, end_pfn;
43446 pgd_t *pgd_base = swapper_pg_dir;
43447 - int pgd_idx, pmd_idx, pte_ofs;
43448 @@ -22740,7 +20819,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43449 pmd_t *pmd;
43450 pte_t *pte;
43451 unsigned pages_2m, pages_4k;
43452 -@@ -278,8 +279,13 @@ repeat:
43453 +@@ -281,8 +282,13 @@ repeat:
43454 pfn = start_pfn;
43455 pgd_idx = pgd_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
43456 pgd = pgd_base + pgd_idx;
43457 @@ -22756,7 +20835,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43458
43459 if (pfn >= end_pfn)
43460 continue;
43461 -@@ -291,14 +297,13 @@ repeat:
43462 +@@ -294,14 +300,13 @@ repeat:
43463 #endif
43464 for (; pmd_idx < PTRS_PER_PMD && pfn < end_pfn;
43465 pmd++, pmd_idx++) {
43466 @@ -22772,7 +20851,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43467 pgprot_t prot = PAGE_KERNEL_LARGE;
43468 /*
43469 * first pass will use the same initial
43470 -@@ -308,11 +313,7 @@ repeat:
43471 +@@ -311,11 +316,7 @@ repeat:
43472 __pgprot(PTE_IDENT_ATTR |
43473 _PAGE_PSE);
43474
43475 @@ -22785,7 +20864,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43476 prot = PAGE_KERNEL_LARGE_EXEC;
43477
43478 pages_2m++;
43479 -@@ -329,7 +330,7 @@ repeat:
43480 +@@ -332,7 +333,7 @@ repeat:
43481 pte_ofs = pte_index((pfn<<PAGE_SHIFT) + PAGE_OFFSET);
43482 pte += pte_ofs;
43483 for (; pte_ofs < PTRS_PER_PTE && pfn < end_pfn;
43484 @@ -22794,7 +20873,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43485 pgprot_t prot = PAGE_KERNEL;
43486 /*
43487 * first pass will use the same initial
43488 -@@ -337,7 +338,7 @@ repeat:
43489 +@@ -340,7 +341,7 @@ repeat:
43490 */
43491 pgprot_t init_prot = __pgprot(PTE_IDENT_ATTR);
43492
43493 @@ -22803,7 +20882,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43494 prot = PAGE_KERNEL_EXEC;
43495
43496 pages_4k++;
43497 -@@ -489,7 +490,7 @@ void __init native_pagetable_setup_start
43498 +@@ -472,7 +473,7 @@ void __init native_pagetable_setup_start
43499
43500 pud = pud_offset(pgd, va);
43501 pmd = pmd_offset(pud, va);
43502 @@ -22812,7 +20891,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43503 break;
43504
43505 pte = pte_offset_kernel(pmd, va);
43506 -@@ -541,9 +542,7 @@ void __init early_ioremap_page_table_ran
43507 +@@ -524,12 +525,10 @@ void __init early_ioremap_page_table_ran
43508
43509 static void __init pagetable_init(void)
43510 {
43511 @@ -22822,41 +20901,12 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43512 + permanent_kmaps_init(swapper_pg_dir);
43513 }
43514
43515 - #ifdef CONFIG_ACPI_SLEEP
43516 -@@ -551,12 +550,12 @@ static void __init pagetable_init(void)
43517 - * ACPI suspend needs this for resume, because things like the intel-agp
43518 - * driver might have split up a kernel 4MB mapping.
43519 - */
43520 --char swsusp_pg_dir[PAGE_SIZE]
43521 -+pgd_t swsusp_pg_dir[PTRS_PER_PGD]
43522 - __attribute__ ((aligned(PAGE_SIZE)));
43523 -
43524 - static inline void save_pg_dir(void)
43525 - {
43526 -- memcpy(swsusp_pg_dir, swapper_pg_dir, PAGE_SIZE);
43527 -+ clone_pgd_range(swsusp_pg_dir, swapper_pg_dir, PTRS_PER_PGD);
43528 - }
43529 - #else /* !CONFIG_ACPI_SLEEP */
43530 - static inline void save_pg_dir(void)
43531 -@@ -588,7 +587,7 @@ void zap_low_mappings(bool early)
43532 - flush_tlb_all();
43533 - }
43534 -
43535 -pteval_t __supported_pte_mask __read_mostly = ~(_PAGE_NX | _PAGE_GLOBAL | _PAGE_IOMAP);
43536 +pteval_t __supported_pte_mask __read_only = ~(_PAGE_NX | _PAGE_GLOBAL | _PAGE_IOMAP);
43537 EXPORT_SYMBOL_GPL(__supported_pte_mask);
43538
43539 /* user-defined highmem size */
43540 -@@ -777,7 +776,7 @@ void __init setup_bootmem_allocator(void
43541 - * Initialize the boot-time allocator (with low memory only):
43542 - */
43543 - bootmap_size = bootmem_bootmap_pages(max_low_pfn)<<PAGE_SHIFT;
43544 -- bootmap = find_e820_area(0, max_pfn_mapped<<PAGE_SHIFT, bootmap_size,
43545 -+ bootmap = find_e820_area(0x100000, max_pfn_mapped<<PAGE_SHIFT, bootmap_size,
43546 - PAGE_SIZE);
43547 - if (bootmap == -1L)
43548 - panic("Cannot find bootmem map of size %ld\n", bootmap_size);
43549 -@@ -864,6 +863,12 @@ void __init mem_init(void)
43550 +@@ -757,6 +756,12 @@ void __init mem_init(void)
43551
43552 pci_iommu_alloc();
43553
43554 @@ -22869,7 +20919,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43555 #ifdef CONFIG_FLATMEM
43556 BUG_ON(!mem_map);
43557 #endif
43558 -@@ -881,7 +886,7 @@ void __init mem_init(void)
43559 +@@ -774,7 +779,7 @@ void __init mem_init(void)
43560 set_highmem_pages_init();
43561
43562 codesize = (unsigned long) &_etext - (unsigned long) &_text;
43563 @@ -22878,7 +20928,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43564 initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin;
43565
43566 printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, "
43567 -@@ -923,10 +928,10 @@ void __init mem_init(void)
43568 +@@ -815,10 +820,10 @@ void __init mem_init(void)
43569 ((unsigned long)&__init_end -
43570 (unsigned long)&__init_begin) >> 10,
43571
43572 @@ -22892,7 +20942,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43573 ((unsigned long)&_etext - (unsigned long)&_text) >> 10);
43574
43575 /*
43576 -@@ -1007,6 +1012,7 @@ void set_kernel_text_rw(void)
43577 +@@ -896,6 +901,7 @@ void set_kernel_text_rw(void)
43578 if (!kernel_set_to_readonly)
43579 return;
43580
43581 @@ -22900,7 +20950,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43582 pr_debug("Set kernel text: %lx - %lx for read write\n",
43583 start, start+size);
43584
43585 -@@ -1021,6 +1027,7 @@ void set_kernel_text_ro(void)
43586 +@@ -910,6 +916,7 @@ void set_kernel_text_ro(void)
43587 if (!kernel_set_to_readonly)
43588 return;
43589
43590 @@ -22908,7 +20958,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43591 pr_debug("Set kernel text: %lx - %lx for read only\n",
43592 start, start+size);
43593
43594 -@@ -1032,6 +1039,7 @@ void mark_rodata_ro(void)
43595 +@@ -938,6 +945,7 @@ void mark_rodata_ro(void)
43596 unsigned long start = PFN_ALIGN(_text);
43597 unsigned long size = PFN_ALIGN(_etext) - start;
43598
43599 @@ -22916,10 +20966,61 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_32.c linux-2.6.32.48/arch/x86/mm/ini
43600 set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
43601 printk(KERN_INFO "Write protecting the kernel text: %luk\n",
43602 size >> 10);
43603 -diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/init_64.c
43604 ---- linux-2.6.32.48/arch/x86/mm/init_64.c 2011-11-12 12:44:28.000000000 -0500
43605 -+++ linux-2.6.32.48/arch/x86/mm/init_64.c 2011-11-12 12:46:42.000000000 -0500
43606 -@@ -164,7 +164,9 @@ void set_pte_vaddr_pud(pud_t *pud_page,
43607 +diff -urNp linux-3.0.8/arch/x86/mm/init_64.c linux-3.0.8/arch/x86/mm/init_64.c
43608 +--- linux-3.0.8/arch/x86/mm/init_64.c 2011-07-21 22:17:23.000000000 -0400
43609 ++++ linux-3.0.8/arch/x86/mm/init_64.c 2011-10-06 04:17:55.000000000 -0400
43610 +@@ -75,7 +75,7 @@ early_param("gbpages", parse_direct_gbpa
43611 + * around without checking the pgd every time.
43612 + */
43613 +
43614 +-pteval_t __supported_pte_mask __read_mostly = ~_PAGE_IOMAP;
43615 ++pteval_t __supported_pte_mask __read_only = ~(_PAGE_NX | _PAGE_IOMAP);
43616 + EXPORT_SYMBOL_GPL(__supported_pte_mask);
43617 +
43618 + int force_personality32;
43619 +@@ -108,12 +108,22 @@ void sync_global_pgds(unsigned long star
43620 +
43621 + for (address = start; address <= end; address += PGDIR_SIZE) {
43622 + const pgd_t *pgd_ref = pgd_offset_k(address);
43623 ++
43624 ++#ifdef CONFIG_PAX_PER_CPU_PGD
43625 ++ unsigned long cpu;
43626 ++#else
43627 + struct page *page;
43628 ++#endif
43629 +
43630 + if (pgd_none(*pgd_ref))
43631 + continue;
43632 +
43633 + spin_lock(&pgd_lock);
43634 ++
43635 ++#ifdef CONFIG_PAX_PER_CPU_PGD
43636 ++ for (cpu = 0; cpu < NR_CPUS; ++cpu) {
43637 ++ pgd_t *pgd = pgd_offset_cpu(cpu, address);
43638 ++#else
43639 + list_for_each_entry(page, &pgd_list, lru) {
43640 + pgd_t *pgd;
43641 + spinlock_t *pgt_lock;
43642 +@@ -122,6 +132,7 @@ void sync_global_pgds(unsigned long star
43643 + /* the pgt_lock only for Xen */
43644 + pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
43645 + spin_lock(pgt_lock);
43646 ++#endif
43647 +
43648 + if (pgd_none(*pgd))
43649 + set_pgd(pgd, *pgd_ref);
43650 +@@ -129,7 +140,10 @@ void sync_global_pgds(unsigned long star
43651 + BUG_ON(pgd_page_vaddr(*pgd)
43652 + != pgd_page_vaddr(*pgd_ref));
43653 +
43654 ++#ifndef CONFIG_PAX_PER_CPU_PGD
43655 + spin_unlock(pgt_lock);
43656 ++#endif
43657 ++
43658 + }
43659 + spin_unlock(&pgd_lock);
43660 + }
43661 +@@ -203,7 +217,9 @@ void set_pte_vaddr_pud(pud_t *pud_page,
43662 pmd = fill_pmd(pud, vaddr);
43663 pte = fill_pte(pmd, vaddr);
43664
43665 @@ -22929,7 +21030,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/ini
43666
43667 /*
43668 * It's enough to flush this one mapping.
43669 -@@ -223,14 +225,12 @@ static void __init __init_extra_mapping(
43670 +@@ -262,14 +278,12 @@ static void __init __init_extra_mapping(
43671 pgd = pgd_offset_k((unsigned long)__va(phys));
43672 if (pgd_none(*pgd)) {
43673 pud = (pud_t *) spp_getpage();
43674 @@ -22946,7 +21047,25 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/ini
43675 }
43676 pmd = pmd_offset(pud, phys);
43677 BUG_ON(!pmd_none(*pmd));
43678 -@@ -675,6 +675,12 @@ void __init mem_init(void)
43679 +@@ -330,7 +344,7 @@ static __ref void *alloc_low_page(unsign
43680 + if (pfn >= pgt_buf_top)
43681 + panic("alloc_low_page: ran out of memory");
43682 +
43683 +- adr = early_memremap(pfn * PAGE_SIZE, PAGE_SIZE);
43684 ++ adr = (void __force_kernel *)early_memremap(pfn * PAGE_SIZE, PAGE_SIZE);
43685 + clear_page(adr);
43686 + *phys = pfn * PAGE_SIZE;
43687 + return adr;
43688 +@@ -346,7 +360,7 @@ static __ref void *map_low_page(void *vi
43689 +
43690 + phys = __pa(virt);
43691 + left = phys & (PAGE_SIZE - 1);
43692 +- adr = early_memremap(phys & PAGE_MASK, PAGE_SIZE);
43693 ++ adr = (void __force_kernel *)early_memremap(phys & PAGE_MASK, PAGE_SIZE);
43694 + adr = (void *)(((unsigned long)adr) | left);
43695 +
43696 + return adr;
43697 +@@ -693,6 +707,12 @@ void __init mem_init(void)
43698
43699 pci_iommu_alloc();
43700
43701 @@ -22959,7 +21078,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/ini
43702 /* clear_bss() already clear the empty_zero_page */
43703
43704 reservedpages = 0;
43705 -@@ -861,8 +867,8 @@ int kern_addr_valid(unsigned long addr)
43706 +@@ -853,8 +873,8 @@ int kern_addr_valid(unsigned long addr)
43707 static struct vm_area_struct gate_vma = {
43708 .vm_start = VSYSCALL_START,
43709 .vm_end = VSYSCALL_START + (VSYSCALL_MAPPED_PAGES * PAGE_SIZE),
43710 @@ -22969,8 +21088,8 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/ini
43711 + .vm_flags = VM_READ
43712 };
43713
43714 - struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
43715 -@@ -896,7 +902,7 @@ int in_gate_area_no_task(unsigned long a
43716 + struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
43717 +@@ -888,7 +908,7 @@ int in_gate_area_no_mm(unsigned long add
43718
43719 const char *arch_vma_name(struct vm_area_struct *vma)
43720 {
43721 @@ -22979,38 +21098,23 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init_64.c linux-2.6.32.48/arch/x86/mm/ini
43722 return "[vdso]";
43723 if (vma == &gate_vma)
43724 return "[vsyscall]";
43725 -diff -urNp linux-2.6.32.48/arch/x86/mm/init.c linux-2.6.32.48/arch/x86/mm/init.c
43726 ---- linux-2.6.32.48/arch/x86/mm/init.c 2009-12-02 22:51:21.000000000 -0500
43727 -+++ linux-2.6.32.48/arch/x86/mm/init.c 2011-11-12 12:46:42.000000000 -0500
43728 -@@ -69,11 +69,7 @@ static void __init find_early_table_spac
43729 - * cause a hotspot and fill up ZONE_DMA. The page tables
43730 - * need roughly 0.5KB per GB.
43731 - */
43732 --#ifdef CONFIG_X86_32
43733 -- start = 0x7000;
43734 --#else
43735 -- start = 0x8000;
43736 --#endif
43737 -+ start = 0x100000;
43738 - e820_table_start = find_e820_area(start, max_pfn_mapped<<PAGE_SHIFT,
43739 - tables, PAGE_SIZE);
43740 - if (e820_table_start == -1UL)
43741 -@@ -147,7 +143,7 @@ unsigned long __init_refok init_memory_m
43742 - #endif
43743 -
43744 - set_nx();
43745 -- if (nx_enabled)
43746 -+ if (nx_enabled && cpu_has_nx)
43747 - printk(KERN_INFO "NX (Execute Disable) protection: active\n");
43748 -
43749 - /* Enable PSE if available */
43750 -@@ -329,10 +325,27 @@ unsigned long __init_refok init_memory_m
43751 - * Access has to be given to non-kernel-ram areas as well, these contain the PCI
43752 - * mmio resources as well as potential bios/acpi data regions.
43753 +diff -urNp linux-3.0.8/arch/x86/mm/init.c linux-3.0.8/arch/x86/mm/init.c
43754 +--- linux-3.0.8/arch/x86/mm/init.c 2011-10-25 09:10:33.000000000 -0400
43755 ++++ linux-3.0.8/arch/x86/mm/init.c 2011-10-25 09:10:41.000000000 -0400
43756 +@@ -31,7 +31,7 @@ int direct_gbpages
43757 + static void __init find_early_table_space(unsigned long end, int use_pse,
43758 + int use_gbpages)
43759 + {
43760 +- unsigned long puds, pmds, ptes, tables, start = 0, good_end = end;
43761 ++ unsigned long puds, pmds, ptes, tables, start = 0x100000, good_end = end;
43762 + phys_addr_t base;
43763 +
43764 + puds = (end + PUD_SIZE - 1) >> PUD_SHIFT;
43765 +@@ -312,12 +312,34 @@ unsigned long __init_refok init_memory_m
43766 */
43767 -+
43768 int devmem_is_allowed(unsigned long pagenr)
43769 {
43770 +- if (pagenr <= 256)
43771 +#ifdef CONFIG_GRKERNSEC_KMEM
43772 + /* allow BDA */
43773 + if (!pagenr)
43774 @@ -23018,21 +21122,31 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init.c linux-2.6.32.48/arch/x86/mm/init.c
43775 + /* allow EBDA */
43776 + if ((0x9f000 >> PAGE_SHIFT) == pagenr)
43777 + return 1;
43778 -+ /* allow ISA/video mem */
43779 -+ if ((ISA_START_ADDRESS >> PAGE_SHIFT) <= pagenr && pagenr < (ISA_END_ADDRESS >> PAGE_SHIFT))
43780 ++#else
43781 ++ if (!pagenr)
43782 + return 1;
43783 ++#ifdef CONFIG_VM86
43784 ++ if (pagenr < (ISA_START_ADDRESS >> PAGE_SHIFT))
43785 ++ return 1;
43786 ++#endif
43787 ++#endif
43788 ++
43789 ++ if ((ISA_START_ADDRESS >> PAGE_SHIFT) <= pagenr && pagenr < (ISA_END_ADDRESS >> PAGE_SHIFT))
43790 + return 1;
43791 ++#ifdef CONFIG_GRKERNSEC_KMEM
43792 + /* throw out everything else below 1MB */
43793 + if (pagenr <= 256)
43794 + return 0;
43795 -+#else
43796 - if (pagenr <= 256)
43797 - return 1;
43798 +#endif
43799 -+
43800 if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
43801 return 0;
43802 if (!page_is_ram(pagenr))
43803 -@@ -379,6 +392,86 @@ void free_init_pages(char *what, unsigne
43804 + return 1;
43805 ++
43806 + return 0;
43807 + }
43808 +
43809 +@@ -372,6 +394,86 @@ void free_init_pages(char *what, unsigne
43810
43811 void free_initmem(void)
43812 {
43813 @@ -23119,11 +21233,11 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/init.c linux-2.6.32.48/arch/x86/mm/init.c
43814 free_init_pages("unused kernel memory",
43815 (unsigned long)(&__init_begin),
43816 (unsigned long)(&__init_end));
43817 -diff -urNp linux-2.6.32.48/arch/x86/mm/iomap_32.c linux-2.6.32.48/arch/x86/mm/iomap_32.c
43818 ---- linux-2.6.32.48/arch/x86/mm/iomap_32.c 2009-12-02 22:51:21.000000000 -0500
43819 -+++ linux-2.6.32.48/arch/x86/mm/iomap_32.c 2011-11-12 12:46:42.000000000 -0500
43820 -@@ -65,7 +65,11 @@ void *kmap_atomic_prot_pfn(unsigned long
43821 - debug_kmap_atomic(type);
43822 +diff -urNp linux-3.0.8/arch/x86/mm/iomap_32.c linux-3.0.8/arch/x86/mm/iomap_32.c
43823 +--- linux-3.0.8/arch/x86/mm/iomap_32.c 2011-07-21 22:17:23.000000000 -0400
43824 ++++ linux-3.0.8/arch/x86/mm/iomap_32.c 2011-08-23 21:47:55.000000000 -0400
43825 +@@ -64,7 +64,11 @@ void *kmap_atomic_prot_pfn(unsigned long
43826 + type = kmap_atomic_idx_push();
43827 idx = type + KM_TYPE_NR * smp_processor_id();
43828 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
43829 +
43830 @@ -23134,29 +21248,11 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/iomap_32.c linux-2.6.32.48/arch/x86/mm/io
43831 arch_flush_lazy_mmu_mode();
43832
43833 return (void *)vaddr;
43834 -diff -urNp linux-2.6.32.48/arch/x86/mm/ioremap.c linux-2.6.32.48/arch/x86/mm/ioremap.c
43835 ---- linux-2.6.32.48/arch/x86/mm/ioremap.c 2009-12-02 22:51:21.000000000 -0500
43836 -+++ linux-2.6.32.48/arch/x86/mm/ioremap.c 2011-11-12 12:46:42.000000000 -0500
43837 -@@ -41,8 +41,8 @@ int page_is_ram(unsigned long pagenr)
43838 - * Second special case: Some BIOSen report the PC BIOS
43839 - * area (640->1Mb) as ram even though it is not.
43840 - */
43841 -- if (pagenr >= (BIOS_BEGIN >> PAGE_SHIFT) &&
43842 -- pagenr < (BIOS_END >> PAGE_SHIFT))
43843 -+ if (pagenr >= (ISA_START_ADDRESS >> PAGE_SHIFT) &&
43844 -+ pagenr < (ISA_END_ADDRESS >> PAGE_SHIFT))
43845 - return 0;
43846 -
43847 - for (i = 0; i < e820.nr_map; i++) {
43848 -@@ -137,13 +137,10 @@ static void __iomem *__ioremap_caller(re
43849 - /*
43850 - * Don't allow anybody to remap normal RAM that we're using..
43851 - */
43852 -- for (pfn = phys_addr >> PAGE_SHIFT;
43853 -- (pfn << PAGE_SHIFT) < (last_addr & PAGE_MASK);
43854 -- pfn++) {
43855 --
43856 -+ for (pfn = phys_addr >> PAGE_SHIFT; ((resource_size_t)pfn << PAGE_SHIFT) < (last_addr & PAGE_MASK); pfn++) {
43857 +diff -urNp linux-3.0.8/arch/x86/mm/ioremap.c linux-3.0.8/arch/x86/mm/ioremap.c
43858 +--- linux-3.0.8/arch/x86/mm/ioremap.c 2011-07-21 22:17:23.000000000 -0400
43859 ++++ linux-3.0.8/arch/x86/mm/ioremap.c 2011-08-23 21:47:55.000000000 -0400
43860 +@@ -97,7 +97,7 @@ static void __iomem *__ioremap_caller(re
43861 + for (pfn = phys_addr >> PAGE_SHIFT; pfn <= last_pfn; pfn++) {
43862 int is_ram = page_is_ram(pfn);
43863
43864 - if (is_ram && pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn)))
43865 @@ -23164,7 +21260,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/ioremap.c linux-2.6.32.48/arch/x86/mm/ior
43866 return NULL;
43867 WARN_ON_ONCE(is_ram);
43868 }
43869 -@@ -407,7 +404,7 @@ static int __init early_ioremap_debug_se
43870 +@@ -344,7 +344,7 @@ static int __init early_ioremap_debug_se
43871 early_param("early_ioremap_debug", early_ioremap_debug_setup);
43872
43873 static __initdata int after_paging_init;
43874 @@ -23173,7 +21269,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/ioremap.c linux-2.6.32.48/arch/x86/mm/ior
43875
43876 static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
43877 {
43878 -@@ -439,8 +436,7 @@ void __init early_ioremap_init(void)
43879 +@@ -381,8 +381,7 @@ void __init early_ioremap_init(void)
43880 slot_virt[i] = __fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i);
43881
43882 pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
43883 @@ -23183,9 +21279,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/ioremap.c linux-2.6.32.48/arch/x86/mm/ior
43884
43885 /*
43886 * The boot-ioremap range spans multiple pmds, for which
43887 -diff -urNp linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c
43888 ---- linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c 2009-12-02 22:51:21.000000000 -0500
43889 -+++ linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c 2011-11-12 12:46:42.000000000 -0500
43890 +diff -urNp linux-3.0.8/arch/x86/mm/kmemcheck/kmemcheck.c linux-3.0.8/arch/x86/mm/kmemcheck/kmemcheck.c
43891 +--- linux-3.0.8/arch/x86/mm/kmemcheck/kmemcheck.c 2011-07-21 22:17:23.000000000 -0400
43892 ++++ linux-3.0.8/arch/x86/mm/kmemcheck/kmemcheck.c 2011-08-23 21:47:55.000000000 -0400
43893 @@ -622,9 +622,9 @@ bool kmemcheck_fault(struct pt_regs *reg
43894 * memory (e.g. tracked pages)? For now, we need this to avoid
43895 * invoking kmemcheck for PnP BIOS calls.
43896 @@ -23198,9 +21294,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.32.48/arc
43897 return false;
43898
43899 pte = kmemcheck_pte_lookup(address);
43900 -diff -urNp linux-2.6.32.48/arch/x86/mm/mmap.c linux-2.6.32.48/arch/x86/mm/mmap.c
43901 ---- linux-2.6.32.48/arch/x86/mm/mmap.c 2009-12-02 22:51:21.000000000 -0500
43902 -+++ linux-2.6.32.48/arch/x86/mm/mmap.c 2011-11-12 12:46:42.000000000 -0500
43903 +diff -urNp linux-3.0.8/arch/x86/mm/mmap.c linux-3.0.8/arch/x86/mm/mmap.c
43904 +--- linux-3.0.8/arch/x86/mm/mmap.c 2011-07-21 22:17:23.000000000 -0400
43905 ++++ linux-3.0.8/arch/x86/mm/mmap.c 2011-08-23 21:47:55.000000000 -0400
43906 @@ -49,7 +49,7 @@ static unsigned int stack_maxrandom_size
43907 * Leave an at least ~128 MB hole with possible stack randomization.
43908 */
43909 @@ -23217,7 +21313,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/mmap.c linux-2.6.32.48/arch/x86/mm/mmap.c
43910 -static unsigned long mmap_base(void)
43911 +static unsigned long mmap_base(struct mm_struct *mm)
43912 {
43913 - unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur;
43914 + unsigned long gap = rlimit(RLIMIT_STACK);
43915 + unsigned long pax_task_size = TASK_SIZE;
43916 +
43917 +#ifdef CONFIG_PAX_SEGMEXEC
43918 @@ -23282,10 +21378,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/mmap.c linux-2.6.32.48/arch/x86/mm/mmap.c
43919 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
43920 mm->unmap_area = arch_unmap_area_topdown;
43921 }
43922 -diff -urNp linux-2.6.32.48/arch/x86/mm/mmio-mod.c linux-2.6.32.48/arch/x86/mm/mmio-mod.c
43923 ---- linux-2.6.32.48/arch/x86/mm/mmio-mod.c 2009-12-02 22:51:21.000000000 -0500
43924 -+++ linux-2.6.32.48/arch/x86/mm/mmio-mod.c 2011-11-12 12:46:42.000000000 -0500
43925 -@@ -193,7 +193,7 @@ static void pre(struct kmmio_probe *p, s
43926 +diff -urNp linux-3.0.8/arch/x86/mm/mmio-mod.c linux-3.0.8/arch/x86/mm/mmio-mod.c
43927 +--- linux-3.0.8/arch/x86/mm/mmio-mod.c 2011-07-21 22:17:23.000000000 -0400
43928 ++++ linux-3.0.8/arch/x86/mm/mmio-mod.c 2011-08-23 21:47:55.000000000 -0400
43929 +@@ -195,7 +195,7 @@ static void pre(struct kmmio_probe *p, s
43930 break;
43931 default:
43932 {
43933 @@ -23294,7 +21390,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/mmio-mod.c linux-2.6.32.48/arch/x86/mm/mm
43934 my_trace->opcode = MMIO_UNKNOWN_OP;
43935 my_trace->width = 0;
43936 my_trace->value = (*ip) << 16 | *(ip + 1) << 8 |
43937 -@@ -233,7 +233,7 @@ static void post(struct kmmio_probe *p,
43938 +@@ -235,7 +235,7 @@ static void post(struct kmmio_probe *p,
43939 static void ioremap_trace_core(resource_size_t offset, unsigned long size,
43940 void __iomem *addr)
43941 {
43942 @@ -23303,7 +21399,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/mmio-mod.c linux-2.6.32.48/arch/x86/mm/mm
43943 struct remap_trace *trace = kmalloc(sizeof(*trace), GFP_KERNEL);
43944 /* These are page-unaligned. */
43945 struct mmiotrace_map map = {
43946 -@@ -257,7 +257,7 @@ static void ioremap_trace_core(resource_
43947 +@@ -259,7 +259,7 @@ static void ioremap_trace_core(resource_
43948 .private = trace
43949 },
43950 .phys = offset,
43951 @@ -23312,29 +21408,19 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/mmio-mod.c linux-2.6.32.48/arch/x86/mm/mm
43952 };
43953 map.map_id = trace->id;
43954
43955 -diff -urNp linux-2.6.32.48/arch/x86/mm/numa_32.c linux-2.6.32.48/arch/x86/mm/numa_32.c
43956 ---- linux-2.6.32.48/arch/x86/mm/numa_32.c 2009-12-02 22:51:21.000000000 -0500
43957 -+++ linux-2.6.32.48/arch/x86/mm/numa_32.c 2011-11-12 12:46:42.000000000 -0500
43958 -@@ -98,7 +98,6 @@ unsigned long node_memmap_size_bytes(int
43959 - }
43960 - #endif
43961 -
43962 --extern unsigned long find_max_low_pfn(void);
43963 - extern unsigned long highend_pfn, highstart_pfn;
43964 -
43965 - #define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE)
43966 -diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr.c linux-2.6.32.48/arch/x86/mm/pageattr.c
43967 ---- linux-2.6.32.48/arch/x86/mm/pageattr.c 2009-12-02 22:51:21.000000000 -0500
43968 -+++ linux-2.6.32.48/arch/x86/mm/pageattr.c 2011-11-12 12:46:42.000000000 -0500
43969 -@@ -261,16 +261,17 @@ static inline pgprot_t static_protection
43970 - * PCI BIOS based config access (CONFIG_PCI_GOBIOS) support.
43971 +diff -urNp linux-3.0.8/arch/x86/mm/pageattr.c linux-3.0.8/arch/x86/mm/pageattr.c
43972 +--- linux-3.0.8/arch/x86/mm/pageattr.c 2011-07-21 22:17:23.000000000 -0400
43973 ++++ linux-3.0.8/arch/x86/mm/pageattr.c 2011-08-23 21:47:55.000000000 -0400
43974 +@@ -261,7 +261,7 @@ static inline pgprot_t static_protection
43975 */
43976 - if (within(pfn, BIOS_BEGIN >> PAGE_SHIFT, BIOS_END >> PAGE_SHIFT))
43977 + #ifdef CONFIG_PCI_BIOS
43978 + if (pcibios_enabled && within(pfn, BIOS_BEGIN >> PAGE_SHIFT, BIOS_END >> PAGE_SHIFT))
43979 - pgprot_val(forbidden) |= _PAGE_NX;
43980 + pgprot_val(forbidden) |= _PAGE_NX & __supported_pte_mask;
43981 + #endif
43982
43983 /*
43984 - * The kernel text needs to be executable for obvious reasons
43985 +@@ -269,9 +269,10 @@ static inline pgprot_t static_protection
43986 * Does not cover __inittext since that is gone later on. On
43987 * 64bit we do not enforce !NX on the low mapping
43988 */
43989 @@ -23347,22 +21433,29 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr.c linux-2.6.32.48/arch/x86/mm/pa
43990 /*
43991 * The .rodata section needs to be read-only. Using the pfn
43992 * catches all aliases.
43993 -@@ -278,6 +279,14 @@ static inline pgprot_t static_protection
43994 +@@ -279,6 +280,7 @@ static inline pgprot_t static_protection
43995 if (within(pfn, __pa((unsigned long)__start_rodata) >> PAGE_SHIFT,
43996 __pa((unsigned long)__end_rodata) >> PAGE_SHIFT))
43997 pgprot_val(forbidden) |= _PAGE_RW;
43998 +#endif
43999 -+
44000 +
44001 + #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
44002 + /*
44003 +@@ -317,6 +319,13 @@ static inline pgprot_t static_protection
44004 + }
44005 + #endif
44006 +
44007 +#ifdef CONFIG_PAX_KERNEXEC
44008 + if (within(pfn, __pa((unsigned long)&_text), __pa((unsigned long)&_sdata))) {
44009 + pgprot_val(forbidden) |= _PAGE_RW;
44010 + pgprot_val(forbidden) |= _PAGE_NX & __supported_pte_mask;
44011 + }
44012 +#endif
44013 -
44014 ++
44015 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden));
44016
44017 -@@ -331,23 +340,37 @@ EXPORT_SYMBOL_GPL(lookup_address);
44018 + return prot;
44019 +@@ -369,23 +378,37 @@ EXPORT_SYMBOL_GPL(lookup_address);
44020 static void __set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte)
44021 {
44022 /* change init_mm */
44023 @@ -23402,9 +21495,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr.c linux-2.6.32.48/arch/x86/mm/pa
44024 }
44025
44026 static int
44027 -diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr-test.c linux-2.6.32.48/arch/x86/mm/pageattr-test.c
44028 ---- linux-2.6.32.48/arch/x86/mm/pageattr-test.c 2009-12-02 22:51:21.000000000 -0500
44029 -+++ linux-2.6.32.48/arch/x86/mm/pageattr-test.c 2011-11-12 12:46:42.000000000 -0500
44030 +diff -urNp linux-3.0.8/arch/x86/mm/pageattr-test.c linux-3.0.8/arch/x86/mm/pageattr-test.c
44031 +--- linux-3.0.8/arch/x86/mm/pageattr-test.c 2011-07-21 22:17:23.000000000 -0400
44032 ++++ linux-3.0.8/arch/x86/mm/pageattr-test.c 2011-08-23 21:47:55.000000000 -0400
44033 @@ -36,7 +36,7 @@ enum {
44034
44035 static int pte_testbit(pte_t pte)
44036 @@ -23414,28 +21507,19 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pageattr-test.c linux-2.6.32.48/arch/x86/
44037 }
44038
44039 struct split_state {
44040 -diff -urNp linux-2.6.32.48/arch/x86/mm/pat.c linux-2.6.32.48/arch/x86/mm/pat.c
44041 ---- linux-2.6.32.48/arch/x86/mm/pat.c 2009-12-02 22:51:21.000000000 -0500
44042 -+++ linux-2.6.32.48/arch/x86/mm/pat.c 2011-11-12 12:46:42.000000000 -0500
44043 -@@ -258,7 +258,7 @@ chk_conflict(struct memtype *new, struct
44044 -
44045 - conflict:
44046 - printk(KERN_INFO "%s:%d conflicting memory types "
44047 -- "%Lx-%Lx %s<->%s\n", current->comm, current->pid, new->start,
44048 -+ "%Lx-%Lx %s<->%s\n", current->comm, task_pid_nr(current), new->start,
44049 - new->end, cattr_name(new->type), cattr_name(entry->type));
44050 - return -EBUSY;
44051 - }
44052 -@@ -559,7 +559,7 @@ unlock_ret:
44053 +diff -urNp linux-3.0.8/arch/x86/mm/pat.c linux-3.0.8/arch/x86/mm/pat.c
44054 +--- linux-3.0.8/arch/x86/mm/pat.c 2011-07-21 22:17:23.000000000 -0400
44055 ++++ linux-3.0.8/arch/x86/mm/pat.c 2011-08-23 21:47:55.000000000 -0400
44056 +@@ -361,7 +361,7 @@ int free_memtype(u64 start, u64 end)
44057
44058 - if (err) {
44059 + if (!entry) {
44060 printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n",
44061 - current->comm, current->pid, start, end);
44062 + current->comm, task_pid_nr(current), start, end);
44063 + return -EINVAL;
44064 }
44065
44066 - dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end);
44067 -@@ -689,8 +689,8 @@ static inline int range_is_allowed(unsig
44068 +@@ -492,8 +492,8 @@ static inline int range_is_allowed(unsig
44069 while (cursor < to) {
44070 if (!devmem_is_allowed(pfn)) {
44071 printk(KERN_INFO
44072 @@ -23446,7 +21530,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pat.c linux-2.6.32.48/arch/x86/mm/pat.c
44073 return 0;
44074 }
44075 cursor += PAGE_SIZE;
44076 -@@ -755,7 +755,7 @@ int kernel_map_sync_memtype(u64 base, un
44077 +@@ -557,7 +557,7 @@ int kernel_map_sync_memtype(u64 base, un
44078 printk(KERN_INFO
44079 "%s:%d ioremap_change_attr failed %s "
44080 "for %Lx-%Lx\n",
44081 @@ -23455,7 +21539,16 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pat.c linux-2.6.32.48/arch/x86/mm/pat.c
44082 cattr_name(flags),
44083 base, (unsigned long long)(base + size));
44084 return -EINVAL;
44085 -@@ -813,7 +813,7 @@ static int reserve_pfn_range(u64 paddr,
44086 +@@ -593,7 +593,7 @@ static int reserve_pfn_range(u64 paddr,
44087 + if (want_flags != flags) {
44088 + printk(KERN_WARNING
44089 + "%s:%d map pfn RAM range req %s for %Lx-%Lx, got %s\n",
44090 +- current->comm, current->pid,
44091 ++ current->comm, task_pid_nr(current),
44092 + cattr_name(want_flags),
44093 + (unsigned long long)paddr,
44094 + (unsigned long long)(paddr + size),
44095 +@@ -615,7 +615,7 @@ static int reserve_pfn_range(u64 paddr,
44096 free_memtype(paddr, paddr + size);
44097 printk(KERN_ERR "%s:%d map pfn expected mapping type %s"
44098 " for %Lx-%Lx, got %s\n",
44099 @@ -23464,9 +21557,9 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pat.c linux-2.6.32.48/arch/x86/mm/pat.c
44100 cattr_name(want_flags),
44101 (unsigned long long)paddr,
44102 (unsigned long long)(paddr + size),
44103 -diff -urNp linux-2.6.32.48/arch/x86/mm/pf_in.c linux-2.6.32.48/arch/x86/mm/pf_in.c
44104 ---- linux-2.6.32.48/arch/x86/mm/pf_in.c 2009-12-02 22:51:21.000000000 -0500
44105 -+++ linux-2.6.32.48/arch/x86/mm/pf_in.c 2011-11-12 12:46:42.000000000 -0500
44106 +diff -urNp linux-3.0.8/arch/x86/mm/pf_in.c linux-3.0.8/arch/x86/mm/pf_in.c
44107 +--- linux-3.0.8/arch/x86/mm/pf_in.c 2011-07-21 22:17:23.000000000 -0400
44108 ++++ linux-3.0.8/arch/x86/mm/pf_in.c 2011-08-23 21:47:55.000000000 -0400
44109 @@ -148,7 +148,7 @@ enum reason_type get_ins_type(unsigned l
44110 int i;
44111 enum reason_type rv = OTHERS;
44112 @@ -23494,28 +21587,28 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pf_in.c linux-2.6.32.48/arch/x86/mm/pf_in
44113 p += skip_prefix(p, &prf);
44114 p += get_opcode(p, &opcode);
44115
44116 -@@ -417,7 +417,7 @@ unsigned long get_ins_reg_val(unsigned l
44117 +@@ -415,7 +415,7 @@ unsigned long get_ins_reg_val(unsigned l
44118 + struct prefix_bits prf;
44119 int i;
44120 - unsigned long rv;
44121
44122 - p = (unsigned char *)ins_addr;
44123 + p = (unsigned char *)ktla_ktva(ins_addr);
44124 p += skip_prefix(p, &prf);
44125 p += get_opcode(p, &opcode);
44126 for (i = 0; i < ARRAY_SIZE(reg_rop); i++)
44127 -@@ -472,7 +472,7 @@ unsigned long get_ins_imm_val(unsigned l
44128 +@@ -470,7 +470,7 @@ unsigned long get_ins_imm_val(unsigned l
44129 + struct prefix_bits prf;
44130 int i;
44131 - unsigned long rv;
44132
44133 - p = (unsigned char *)ins_addr;
44134 + p = (unsigned char *)ktla_ktva(ins_addr);
44135 p += skip_prefix(p, &prf);
44136 p += get_opcode(p, &opcode);
44137 for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
44138 -diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable_32.c linux-2.6.32.48/arch/x86/mm/pgtable_32.c
44139 ---- linux-2.6.32.48/arch/x86/mm/pgtable_32.c 2009-12-02 22:51:21.000000000 -0500
44140 -+++ linux-2.6.32.48/arch/x86/mm/pgtable_32.c 2011-11-12 12:46:42.000000000 -0500
44141 -@@ -49,10 +49,13 @@ void set_pte_vaddr(unsigned long vaddr,
44142 +diff -urNp linux-3.0.8/arch/x86/mm/pgtable_32.c linux-3.0.8/arch/x86/mm/pgtable_32.c
44143 +--- linux-3.0.8/arch/x86/mm/pgtable_32.c 2011-07-21 22:17:23.000000000 -0400
44144 ++++ linux-3.0.8/arch/x86/mm/pgtable_32.c 2011-08-23 21:47:55.000000000 -0400
44145 +@@ -48,10 +48,13 @@ void set_pte_vaddr(unsigned long vaddr,
44146 return;
44147 }
44148 pte = pte_offset_kernel(pmd, vaddr);
44149 @@ -23529,10 +21622,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable_32.c linux-2.6.32.48/arch/x86/mm/
44150
44151 /*
44152 * It's enough to flush this one mapping.
44153 -diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgtable.c
44154 ---- linux-2.6.32.48/arch/x86/mm/pgtable.c 2011-11-12 12:44:28.000000000 -0500
44155 -+++ linux-2.6.32.48/arch/x86/mm/pgtable.c 2011-11-12 12:46:42.000000000 -0500
44156 -@@ -83,9 +83,52 @@ static inline void pgd_list_del(pgd_t *p
44157 +diff -urNp linux-3.0.8/arch/x86/mm/pgtable.c linux-3.0.8/arch/x86/mm/pgtable.c
44158 +--- linux-3.0.8/arch/x86/mm/pgtable.c 2011-07-21 22:17:23.000000000 -0400
44159 ++++ linux-3.0.8/arch/x86/mm/pgtable.c 2011-08-23 21:47:55.000000000 -0400
44160 +@@ -84,10 +84,52 @@ static inline void pgd_list_del(pgd_t *p
44161 list_del(&page->lru);
44162 }
44163
44164 @@ -23558,7 +21651,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44165 +#else
44166 + *dst++ = *src++;
44167 +#endif
44168 -+
44169 +
44170 +}
44171 +#endif
44172 +
44173 @@ -23581,21 +21674,21 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44174 +#endif
44175 +
44176 +#ifdef CONFIG_PAX_PER_CPU_PGD
44177 -+static inline void pgd_ctor(pgd_t *pgd) {}
44178 ++static inline void pgd_ctor(struct mm_struct *mm, pgd_t *pgd) {}
44179 +static inline void pgd_dtor(pgd_t *pgd) {}
44180 +#else
44181 - static void pgd_ctor(pgd_t *pgd)
44182 + static void pgd_set_mm(pgd_t *pgd, struct mm_struct *mm)
44183 {
44184 - /* If the pgd points to a shared pagetable level (either the
44185 -@@ -119,6 +162,7 @@ static void pgd_dtor(pgd_t *pgd)
44186 + BUILD_BUG_ON(sizeof(virt_to_page(pgd)->index) < sizeof(mm));
44187 +@@ -128,6 +170,7 @@ static void pgd_dtor(pgd_t *pgd)
44188 pgd_list_del(pgd);
44189 - spin_unlock_irqrestore(&pgd_lock, flags);
44190 + spin_unlock(&pgd_lock);
44191 }
44192 +#endif
44193
44194 /*
44195 * List of all pgd's needed for non-PAE so it can invalidate entries
44196 -@@ -131,7 +175,7 @@ static void pgd_dtor(pgd_t *pgd)
44197 +@@ -140,7 +183,7 @@ static void pgd_dtor(pgd_t *pgd)
44198 * -- wli
44199 */
44200
44201 @@ -23604,7 +21697,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44202 /*
44203 * In PAE mode, we need to do a cr3 reload (=tlb flush) when
44204 * updating the top-level pagetable entries to guarantee the
44205 -@@ -143,7 +187,7 @@ static void pgd_dtor(pgd_t *pgd)
44206 +@@ -152,7 +195,7 @@ static void pgd_dtor(pgd_t *pgd)
44207 * not shared between pagetables (!SHARED_KERNEL_PMDS), we allocate
44208 * and initialize the kernel pmds here.
44209 */
44210 @@ -23613,7 +21706,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44211
44212 void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd)
44213 {
44214 -@@ -161,36 +205,38 @@ void pud_populate(struct mm_struct *mm,
44215 +@@ -170,36 +213,38 @@ void pud_populate(struct mm_struct *mm,
44216 */
44217 flush_tlb_mm(mm);
44218 }
44219 @@ -23663,7 +21756,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44220 return -ENOMEM;
44221 }
44222
44223 -@@ -203,51 +249,56 @@ static int preallocate_pmds(pmd_t *pmds[
44224 +@@ -212,51 +257,55 @@ static int preallocate_pmds(pmd_t *pmds[
44225 * preallocate which never got a corresponding vma will need to be
44226 * freed manually.
44227 */
44228 @@ -23733,11 +21826,10 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44229 pgd_t *pgd;
44230 - pmd_t *pmds[PREALLOCATED_PMDS];
44231 + pxd_t *pxds[PREALLOCATED_PXDS];
44232 -+
44233 - unsigned long flags;
44234
44235 pgd = (pgd_t *)__get_free_page(PGALLOC_GFP);
44236 -@@ -257,11 +308,11 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
44237 +
44238 +@@ -265,11 +314,11 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
44239
44240 mm->pgd = pgd;
44241
44242 @@ -23751,14 +21843,14 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44243
44244 /*
44245 * Make sure that pre-populating the pmds is atomic with
44246 -@@ -271,14 +322,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
44247 - spin_lock_irqsave(&pgd_lock, flags);
44248 +@@ -279,14 +328,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
44249 + spin_lock(&pgd_lock);
44250
44251 - pgd_ctor(pgd);
44252 + pgd_ctor(mm, pgd);
44253 - pgd_prepopulate_pmd(mm, pgd, pmds);
44254 + pgd_prepopulate_pxd(mm, pgd, pxds);
44255
44256 - spin_unlock_irqrestore(&pgd_lock, flags);
44257 + spin_unlock(&pgd_lock);
44258
44259 return pgd;
44260
44261 @@ -23769,7 +21861,7 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44262 out_free_pgd:
44263 free_page((unsigned long)pgd);
44264 out:
44265 -@@ -287,7 +338,7 @@ out:
44266 +@@ -295,7 +344,7 @@ out:
44267
44268 void pgd_free(struct mm_struct *mm, pgd_t *pgd)
44269 {
44270 @@ -23778,78 +21870,42 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/pgtable.c linux-2.6.32.48/arch/x86/mm/pgt
44271 pgd_dtor(pgd);
44272 paravirt_pgd_free(mm, pgd);
44273 free_page((unsigned long)pgd);
44274 -diff -urNp linux-2.6.32.48/arch/x86/mm/setup_nx.c linux-2.6.32.48/arch/x86/mm/setup_nx.c
44275 ---- linux-2.6.32.48/arch/x86/mm/setup_nx.c 2009-12-02 22:51:21.000000000 -0500
44276 -+++ linux-2.6.32.48/arch/x86/mm/setup_nx.c 2011-11-12 12:46:42.000000000 -0500
44277 -@@ -4,11 +4,10 @@
44278 -
44279 +diff -urNp linux-3.0.8/arch/x86/mm/setup_nx.c linux-3.0.8/arch/x86/mm/setup_nx.c
44280 +--- linux-3.0.8/arch/x86/mm/setup_nx.c 2011-07-21 22:17:23.000000000 -0400
44281 ++++ linux-3.0.8/arch/x86/mm/setup_nx.c 2011-08-23 21:47:55.000000000 -0400
44282 +@@ -5,8 +5,10 @@
44283 #include <asm/pgtable.h>
44284 + #include <asm/proto.h>
44285
44286 -+#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
44287 - int nx_enabled;
44288 ++#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
44289 + static int disable_nx __cpuinitdata;
44290
44291 --#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
44292 --static int disable_nx __cpuinitdata;
44293 --
44294 +#ifndef CONFIG_PAX_PAGEEXEC
44295 /*
44296 * noexec = on|off
44297 *
44298 -@@ -22,32 +21,26 @@ static int __init noexec_setup(char *str
44299 - if (!str)
44300 - return -EINVAL;
44301 - if (!strncmp(str, "on", 2)) {
44302 -- __supported_pte_mask |= _PAGE_NX;
44303 -- disable_nx = 0;
44304 -+ nx_enabled = 1;
44305 - } else if (!strncmp(str, "off", 3)) {
44306 -- disable_nx = 1;
44307 -- __supported_pte_mask &= ~_PAGE_NX;
44308 -+ nx_enabled = 0;
44309 - }
44310 +@@ -28,12 +30,17 @@ static int __init noexec_setup(char *str
44311 return 0;
44312 }
44313 early_param("noexec", noexec_setup);
44314 - #endif
44315 ++#endif
44316 ++
44317 +#endif
44318
44319 - #ifdef CONFIG_X86_PAE
44320 - void __init set_nx(void)
44321 + void __cpuinit x86_configure_nx(void)
44322 {
44323 -- unsigned int v[4], l, h;
44324 -+ if (!nx_enabled && cpu_has_nx) {
44325 -+ unsigned l, h;
44326 -
44327 -- if (cpu_has_pae && (cpuid_eax(0x80000000) > 0x80000001)) {
44328 -- cpuid(0x80000001, &v[0], &v[1], &v[2], &v[3]);
44329 --
44330 -- if ((v[3] & (1 << 20)) && !disable_nx) {
44331 -- rdmsr(MSR_EFER, l, h);
44332 -- l |= EFER_NX;
44333 -- wrmsr(MSR_EFER, l, h);
44334 -- nx_enabled = 1;
44335 -- __supported_pte_mask |= _PAGE_NX;
44336 -- }
44337 -+ __supported_pte_mask &= ~_PAGE_NX;
44338 -+ rdmsr(MSR_EFER, l, h);
44339 -+ l &= ~EFER_NX;
44340 -+ wrmsr(MSR_EFER, l, h);
44341 - }
44342 - }
44343 - #else
44344 -@@ -62,7 +55,7 @@ void __cpuinit check_efer(void)
44345 - unsigned long efer;
44346 -
44347 - rdmsrl(MSR_EFER, efer);
44348 -- if (!(efer & EFER_NX) || disable_nx)
44349 -+ if (!(efer & EFER_NX) || !nx_enabled)
44350 ++#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
44351 + if (cpu_has_nx && !disable_nx)
44352 + __supported_pte_mask |= _PAGE_NX;
44353 + else
44354 ++#endif
44355 __supported_pte_mask &= ~_PAGE_NX;
44356 }
44357 - #endif
44358 -diff -urNp linux-2.6.32.48/arch/x86/mm/tlb.c linux-2.6.32.48/arch/x86/mm/tlb.c
44359 ---- linux-2.6.32.48/arch/x86/mm/tlb.c 2009-12-02 22:51:21.000000000 -0500
44360 -+++ linux-2.6.32.48/arch/x86/mm/tlb.c 2011-11-12 12:46:42.000000000 -0500
44361 -@@ -61,7 +61,11 @@ void leave_mm(int cpu)
44362 +
44363 +diff -urNp linux-3.0.8/arch/x86/mm/tlb.c linux-3.0.8/arch/x86/mm/tlb.c
44364 +--- linux-3.0.8/arch/x86/mm/tlb.c 2011-07-21 22:17:23.000000000 -0400
44365 ++++ linux-3.0.8/arch/x86/mm/tlb.c 2011-08-23 21:47:55.000000000 -0400
44366 +@@ -65,7 +65,11 @@ void leave_mm(int cpu)
44367 BUG();
44368 cpumask_clear_cpu(cpu,
44369 mm_cpumask(percpu_read(cpu_tlbstate.active_mm)));
44370 @@ -23861,135 +21917,170 @@ diff -urNp linux-2.6.32.48/arch/x86/mm/tlb.c linux-2.6.32.48/arch/x86/mm/tlb.c
44371 }
44372 EXPORT_SYMBOL_GPL(leave_mm);
44373
44374 -diff -urNp linux-2.6.32.48/arch/x86/oprofile/backtrace.c linux-2.6.32.48/arch/x86/oprofile/backtrace.c
44375 ---- linux-2.6.32.48/arch/x86/oprofile/backtrace.c 2009-12-02 22:51:21.000000000 -0500
44376 -+++ linux-2.6.32.48/arch/x86/oprofile/backtrace.c 2011-11-12 12:46:42.000000000 -0500
44377 -@@ -57,7 +57,7 @@ static struct frame_head *dump_user_back
44378 - struct frame_head bufhead[2];
44379 +diff -urNp linux-3.0.8/arch/x86/net/bpf_jit_comp.c linux-3.0.8/arch/x86/net/bpf_jit_comp.c
44380 +--- linux-3.0.8/arch/x86/net/bpf_jit_comp.c 2011-07-21 22:17:23.000000000 -0400
44381 ++++ linux-3.0.8/arch/x86/net/bpf_jit_comp.c 2011-11-01 05:23:50.000000000 -0400
44382 +@@ -589,7 +589,9 @@ cond_branch: f_offset = addrs[i + filt
44383 + module_free(NULL, image);
44384 + return;
44385 + }
44386 ++ pax_open_kernel();
44387 + memcpy(image + proglen, temp, ilen);
44388 ++ pax_close_kernel();
44389 + }
44390 + proglen += ilen;
44391 + addrs[i] = proglen;
44392 +@@ -609,7 +611,7 @@ cond_branch: f_offset = addrs[i + filt
44393 + break;
44394 + }
44395 + if (proglen == oldproglen) {
44396 +- image = module_alloc(max_t(unsigned int,
44397 ++ image = module_alloc_exec(max_t(unsigned int,
44398 + proglen,
44399 + sizeof(struct work_struct)));
44400 + if (!image)
44401 +@@ -637,7 +639,7 @@ out:
44402
44403 - /* Also check accessibility of one struct frame_head beyond */
44404 -- if (!access_ok(VERIFY_READ, head, sizeof(bufhead)))
44405 -+ if (!__access_ok(VERIFY_READ, head, sizeof(bufhead)))
44406 - return NULL;
44407 - if (__copy_from_user_inatomic(bufhead, head, sizeof(bufhead)))
44408 - return NULL;
44409 -@@ -77,7 +77,7 @@ x86_backtrace(struct pt_regs * const reg
44410 + static void jit_free_defer(struct work_struct *arg)
44411 {
44412 - struct frame_head *head = (struct frame_head *)frame_pointer(regs);
44413 -
44414 -- if (!user_mode_vm(regs)) {
44415 -+ if (!user_mode(regs)) {
44416 - unsigned long stack = kernel_stack_pointer(regs);
44417 - if (depth)
44418 - dump_trace(NULL, regs, (unsigned long *)stack, 0,
44419 -diff -urNp linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c
44420 ---- linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c 2011-11-12 12:44:28.000000000 -0500
44421 -+++ linux-2.6.32.48/arch/x86/oprofile/op_model_p4.c 2011-11-12 12:46:42.000000000 -0500
44422 -@@ -50,7 +50,7 @@ static inline void setup_num_counters(vo
44423 - #endif
44424 +- module_free(NULL, arg);
44425 ++ module_free_exec(NULL, arg);
44426 }
44427
44428 --static int inline addr_increment(void)
44429 -+static inline int addr_increment(void)
44430 - {
44431 - #ifdef CONFIG_SMP
44432 - return smp_num_siblings == 2 ? 2 : 1;
44433 -diff -urNp linux-2.6.32.48/arch/x86/pci/common.c linux-2.6.32.48/arch/x86/pci/common.c
44434 ---- linux-2.6.32.48/arch/x86/pci/common.c 2009-12-02 22:51:21.000000000 -0500
44435 -+++ linux-2.6.32.48/arch/x86/pci/common.c 2011-11-12 12:46:42.000000000 -0500
44436 -@@ -31,8 +31,8 @@ int noioapicreroute = 1;
44437 - int pcibios_last_bus = -1;
44438 - unsigned long pirq_table_addr;
44439 - struct pci_bus *pci_root_bus;
44440 --struct pci_raw_ops *raw_pci_ops;
44441 --struct pci_raw_ops *raw_pci_ext_ops;
44442 -+const struct pci_raw_ops *raw_pci_ops;
44443 -+const struct pci_raw_ops *raw_pci_ext_ops;
44444 -
44445 - int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn,
44446 - int reg, int len, u32 *val)
44447 -diff -urNp linux-2.6.32.48/arch/x86/pci/direct.c linux-2.6.32.48/arch/x86/pci/direct.c
44448 ---- linux-2.6.32.48/arch/x86/pci/direct.c 2009-12-02 22:51:21.000000000 -0500
44449 -+++ linux-2.6.32.48/arch/x86/pci/direct.c 2011-11-12 12:46:42.000000000 -0500
44450 -@@ -79,7 +79,7 @@ static int pci_conf1_write(unsigned int
44451 -
44452 - #undef PCI_CONF1_ADDRESS
44453 -
44454 --struct pci_raw_ops pci_direct_conf1 = {
44455 -+const struct pci_raw_ops pci_direct_conf1 = {
44456 - .read = pci_conf1_read,
44457 - .write = pci_conf1_write,
44458 - };
44459 -@@ -173,7 +173,7 @@ static int pci_conf2_write(unsigned int
44460 + /* run from softirq, we must use a work_struct to call
44461 +diff -urNp linux-3.0.8/arch/x86/net/bpf_jit.S linux-3.0.8/arch/x86/net/bpf_jit.S
44462 +--- linux-3.0.8/arch/x86/net/bpf_jit.S 2011-07-21 22:17:23.000000000 -0400
44463 ++++ linux-3.0.8/arch/x86/net/bpf_jit.S 2011-10-07 19:07:28.000000000 -0400
44464 +@@ -9,6 +9,7 @@
44465 + */
44466 + #include <linux/linkage.h>
44467 + #include <asm/dwarf2.h>
44468 ++#include <asm/alternative-asm.h>
44469
44470 - #undef PCI_CONF2_ADDRESS
44471 + /*
44472 + * Calling convention :
44473 +@@ -35,6 +36,7 @@ sk_load_word:
44474 + jle bpf_slow_path_word
44475 + mov (SKBDATA,%rsi),%eax
44476 + bswap %eax /* ntohl() */
44477 ++ pax_force_retaddr
44478 + ret
44479
44480 --struct pci_raw_ops pci_direct_conf2 = {
44481 -+const struct pci_raw_ops pci_direct_conf2 = {
44482 - .read = pci_conf2_read,
44483 - .write = pci_conf2_write,
44484 - };
44485 -@@ -189,7 +189,7 @@ struct pci_raw_ops pci_direct_conf2 = {
44486 - * This should be close to trivial, but it isn't, because there are buggy
44487 - * chipsets (yes, you guessed it, by Intel and Compaq) that have no class ID.
44488 - */
44489 --static int __init pci_sanity_check(struct pci_raw_ops *o)
44490 -+static int __init pci_sanity_check(const struct pci_raw_ops *o)
44491 - {
44492 - u32 x = 0;
44493 - int year, devfn;
44494 -diff -urNp linux-2.6.32.48/arch/x86/pci/mmconfig_32.c linux-2.6.32.48/arch/x86/pci/mmconfig_32.c
44495 ---- linux-2.6.32.48/arch/x86/pci/mmconfig_32.c 2009-12-02 22:51:21.000000000 -0500
44496 -+++ linux-2.6.32.48/arch/x86/pci/mmconfig_32.c 2011-11-12 12:46:42.000000000 -0500
44497 -@@ -125,7 +125,7 @@ static int pci_mmcfg_write(unsigned int
44498 - return 0;
44499 - }
44500
44501 --static struct pci_raw_ops pci_mmcfg = {
44502 -+static const struct pci_raw_ops pci_mmcfg = {
44503 - .read = pci_mmcfg_read,
44504 - .write = pci_mmcfg_write,
44505 - };
44506 -diff -urNp linux-2.6.32.48/arch/x86/pci/mmconfig_64.c linux-2.6.32.48/arch/x86/pci/mmconfig_64.c
44507 ---- linux-2.6.32.48/arch/x86/pci/mmconfig_64.c 2009-12-02 22:51:21.000000000 -0500
44508 -+++ linux-2.6.32.48/arch/x86/pci/mmconfig_64.c 2011-11-12 12:46:42.000000000 -0500
44509 -@@ -104,7 +104,7 @@ static int pci_mmcfg_write(unsigned int
44510 - return 0;
44511 - }
44512 +@@ -53,6 +55,7 @@ sk_load_half:
44513 + jle bpf_slow_path_half
44514 + movzwl (SKBDATA,%rsi),%eax
44515 + rol $8,%ax # ntohs()
44516 ++ pax_force_retaddr
44517 + ret
44518
44519 --static struct pci_raw_ops pci_mmcfg = {
44520 -+static const struct pci_raw_ops pci_mmcfg = {
44521 - .read = pci_mmcfg_read,
44522 - .write = pci_mmcfg_write,
44523 - };
44524 -diff -urNp linux-2.6.32.48/arch/x86/pci/numaq_32.c linux-2.6.32.48/arch/x86/pci/numaq_32.c
44525 ---- linux-2.6.32.48/arch/x86/pci/numaq_32.c 2009-12-02 22:51:21.000000000 -0500
44526 -+++ linux-2.6.32.48/arch/x86/pci/numaq_32.c 2011-11-12 12:46:42.000000000 -0500
44527 -@@ -112,7 +112,7 @@ static int pci_conf1_mq_write(unsigned i
44528 + sk_load_byte_ind:
44529 +@@ -66,6 +69,7 @@ sk_load_byte:
44530 + cmp %esi,%r9d /* if (offset >= hlen) goto bpf_slow_path_byte */
44531 + jle bpf_slow_path_byte
44532 + movzbl (SKBDATA,%rsi),%eax
44533 ++ pax_force_retaddr
44534 + ret
44535
44536 - #undef PCI_CONF1_MQ_ADDRESS
44537 + /**
44538 +@@ -82,6 +86,7 @@ ENTRY(sk_load_byte_msh)
44539 + movzbl (SKBDATA,%rsi),%ebx
44540 + and $15,%bl
44541 + shl $2,%bl
44542 ++ pax_force_retaddr
44543 + ret
44544 + CFI_ENDPROC
44545 + ENDPROC(sk_load_byte_msh)
44546 +@@ -91,6 +96,7 @@ bpf_error:
44547 + xor %eax,%eax
44548 + mov -8(%rbp),%rbx
44549 + leaveq
44550 ++ pax_force_retaddr
44551 + ret
44552
44553 --static struct pci_raw_ops pci_direct_conf1_mq = {
44554 -+static const struct pci_raw_ops pci_direct_conf1_mq = {
44555 - .read = pci_conf1_mq_read,
44556 - .write = pci_conf1_mq_write
44557 - };
44558 -diff -urNp linux-2.6.32.48/arch/x86/pci/olpc.c linux-2.6.32.48/arch/x86/pci/olpc.c
44559 ---- linux-2.6.32.48/arch/x86/pci/olpc.c 2009-12-02 22:51:21.000000000 -0500
44560 -+++ linux-2.6.32.48/arch/x86/pci/olpc.c 2011-11-12 12:46:42.000000000 -0500
44561 -@@ -297,7 +297,7 @@ static int pci_olpc_write(unsigned int s
44562 - return 0;
44563 - }
44564 + /* rsi contains offset and can be scratched */
44565 +@@ -113,6 +119,7 @@ bpf_slow_path_word:
44566 + js bpf_error
44567 + mov -12(%rbp),%eax
44568 + bswap %eax
44569 ++ pax_force_retaddr
44570 + ret
44571
44572 --static struct pci_raw_ops pci_olpc_conf = {
44573 -+static const struct pci_raw_ops pci_olpc_conf = {
44574 - .read = pci_olpc_read,
44575 - .write = pci_olpc_write,
44576 - };
44577 -diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pcbios.c
44578 ---- linux-2.6.32.48/arch/x86/pci/pcbios.c 2009-12-02 22:51:21.000000000 -0500
44579 -+++ linux-2.6.32.48/arch/x86/pci/pcbios.c 2011-11-12 12:46:42.000000000 -0500
44580 -@@ -56,50 +56,93 @@ union bios32 {
44581 + bpf_slow_path_half:
44582 +@@ -121,12 +128,14 @@ bpf_slow_path_half:
44583 + mov -12(%rbp),%ax
44584 + rol $8,%ax
44585 + movzwl %ax,%eax
44586 ++ pax_force_retaddr
44587 + ret
44588 +
44589 + bpf_slow_path_byte:
44590 + bpf_slow_path_common(1)
44591 + js bpf_error
44592 + movzbl -12(%rbp),%eax
44593 ++ pax_force_retaddr
44594 + ret
44595 +
44596 + bpf_slow_path_byte_msh:
44597 +@@ -137,4 +146,5 @@ bpf_slow_path_byte_msh:
44598 + and $15,%al
44599 + shl $2,%al
44600 + xchg %eax,%ebx
44601 ++ pax_force_retaddr
44602 + ret
44603 +diff -urNp linux-3.0.8/arch/x86/oprofile/backtrace.c linux-3.0.8/arch/x86/oprofile/backtrace.c
44604 +--- linux-3.0.8/arch/x86/oprofile/backtrace.c 2011-10-24 08:05:21.000000000 -0400
44605 ++++ linux-3.0.8/arch/x86/oprofile/backtrace.c 2011-10-06 04:17:55.000000000 -0400
44606 +@@ -83,11 +83,11 @@ dump_user_backtrace_32(struct stack_fram
44607 + struct stack_frame_ia32 *fp;
44608 + unsigned long bytes;
44609 +
44610 +- bytes = copy_from_user_nmi(bufhead, head, sizeof(bufhead));
44611 ++ bytes = copy_from_user_nmi(bufhead, (const char __force_user *)head, sizeof(bufhead));
44612 + if (bytes != sizeof(bufhead))
44613 + return NULL;
44614 +
44615 +- fp = (struct stack_frame_ia32 *) compat_ptr(bufhead[0].next_frame);
44616 ++ fp = (struct stack_frame_ia32 __force_kernel *) compat_ptr(bufhead[0].next_frame);
44617 +
44618 + oprofile_add_trace(bufhead[0].return_address);
44619 +
44620 +@@ -129,7 +129,7 @@ static struct stack_frame *dump_user_bac
44621 + struct stack_frame bufhead[2];
44622 + unsigned long bytes;
44623 +
44624 +- bytes = copy_from_user_nmi(bufhead, head, sizeof(bufhead));
44625 ++ bytes = copy_from_user_nmi(bufhead, (const char __force_user *)head, sizeof(bufhead));
44626 + if (bytes != sizeof(bufhead))
44627 + return NULL;
44628 +
44629 +@@ -148,7 +148,7 @@ x86_backtrace(struct pt_regs * const reg
44630 + {
44631 + struct stack_frame *head = (struct stack_frame *)frame_pointer(regs);
44632 +
44633 +- if (!user_mode_vm(regs)) {
44634 ++ if (!user_mode(regs)) {
44635 + unsigned long stack = kernel_stack_pointer(regs);
44636 + if (depth)
44637 + dump_trace(NULL, regs, (unsigned long *)stack, 0,
44638 +diff -urNp linux-3.0.8/arch/x86/pci/mrst.c linux-3.0.8/arch/x86/pci/mrst.c
44639 +--- linux-3.0.8/arch/x86/pci/mrst.c 2011-07-21 22:17:23.000000000 -0400
44640 ++++ linux-3.0.8/arch/x86/pci/mrst.c 2011-08-23 21:47:55.000000000 -0400
44641 +@@ -234,7 +234,9 @@ int __init pci_mrst_init(void)
44642 + printk(KERN_INFO "Moorestown platform detected, using MRST PCI ops\n");
44643 + pci_mmcfg_late_init();
44644 + pcibios_enable_irq = mrst_pci_irq_enable;
44645 +- pci_root_ops = pci_mrst_ops;
44646 ++ pax_open_kernel();
44647 ++ memcpy((void *)&pci_root_ops, &pci_mrst_ops, sizeof(pci_mrst_ops));
44648 ++ pax_close_kernel();
44649 + /* Continue with standard init */
44650 + return 1;
44651 + }
44652 +diff -urNp linux-3.0.8/arch/x86/pci/pcbios.c linux-3.0.8/arch/x86/pci/pcbios.c
44653 +--- linux-3.0.8/arch/x86/pci/pcbios.c 2011-07-21 22:17:23.000000000 -0400
44654 ++++ linux-3.0.8/arch/x86/pci/pcbios.c 2011-08-23 21:47:55.000000000 -0400
44655 +@@ -79,50 +79,93 @@ union bios32 {
44656 static struct {
44657 unsigned long address;
44658 unsigned short segment;
44659 @@ -24097,7 +22188,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44660
44661 static int __devinit check_pcibios(void)
44662 {
44663 -@@ -108,11 +151,13 @@ static int __devinit check_pcibios(void)
44664 +@@ -131,11 +174,13 @@ static int __devinit check_pcibios(void)
44665 unsigned long flags, pcibios_entry;
44666
44667 if ((pcibios_entry = bios32_service(PCI_SERVICE))) {
44668 @@ -24114,7 +22205,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44669 "jc 1f\n\t"
44670 "xor %%ah, %%ah\n"
44671 "1:"
44672 -@@ -121,7 +166,8 @@ static int __devinit check_pcibios(void)
44673 +@@ -144,7 +189,8 @@ static int __devinit check_pcibios(void)
44674 "=b" (ebx),
44675 "=c" (ecx)
44676 : "1" (PCIBIOS_PCI_BIOS_PRESENT),
44677 @@ -24124,7 +22215,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44678 : "memory");
44679 local_irq_restore(flags);
44680
44681 -@@ -165,7 +211,10 @@ static int pci_bios_read(unsigned int se
44682 +@@ -188,7 +234,10 @@ static int pci_bios_read(unsigned int se
44683
44684 switch (len) {
44685 case 1:
44686 @@ -24136,7 +22227,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44687 "jc 1f\n\t"
44688 "xor %%ah, %%ah\n"
44689 "1:"
44690 -@@ -174,7 +223,8 @@ static int pci_bios_read(unsigned int se
44691 +@@ -197,7 +246,8 @@ static int pci_bios_read(unsigned int se
44692 : "1" (PCIBIOS_READ_CONFIG_BYTE),
44693 "b" (bx),
44694 "D" ((long)reg),
44695 @@ -24146,7 +22237,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44696 /*
44697 * Zero-extend the result beyond 8 bits, do not trust the
44698 * BIOS having done it:
44699 -@@ -182,7 +232,10 @@ static int pci_bios_read(unsigned int se
44700 +@@ -205,7 +255,10 @@ static int pci_bios_read(unsigned int se
44701 *value &= 0xff;
44702 break;
44703 case 2:
44704 @@ -24158,7 +22249,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44705 "jc 1f\n\t"
44706 "xor %%ah, %%ah\n"
44707 "1:"
44708 -@@ -191,7 +244,8 @@ static int pci_bios_read(unsigned int se
44709 +@@ -214,7 +267,8 @@ static int pci_bios_read(unsigned int se
44710 : "1" (PCIBIOS_READ_CONFIG_WORD),
44711 "b" (bx),
44712 "D" ((long)reg),
44713 @@ -24168,7 +22259,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44714 /*
44715 * Zero-extend the result beyond 16 bits, do not trust the
44716 * BIOS having done it:
44717 -@@ -199,7 +253,10 @@ static int pci_bios_read(unsigned int se
44718 +@@ -222,7 +276,10 @@ static int pci_bios_read(unsigned int se
44719 *value &= 0xffff;
44720 break;
44721 case 4:
44722 @@ -24180,7 +22271,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44723 "jc 1f\n\t"
44724 "xor %%ah, %%ah\n"
44725 "1:"
44726 -@@ -208,7 +265,8 @@ static int pci_bios_read(unsigned int se
44727 +@@ -231,7 +288,8 @@ static int pci_bios_read(unsigned int se
44728 : "1" (PCIBIOS_READ_CONFIG_DWORD),
44729 "b" (bx),
44730 "D" ((long)reg),
44731 @@ -24190,7 +22281,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44732 break;
44733 }
44734
44735 -@@ -231,7 +289,10 @@ static int pci_bios_write(unsigned int s
44736 +@@ -254,7 +312,10 @@ static int pci_bios_write(unsigned int s
44737
44738 switch (len) {
44739 case 1:
44740 @@ -24202,7 +22293,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44741 "jc 1f\n\t"
44742 "xor %%ah, %%ah\n"
44743 "1:"
44744 -@@ -240,10 +301,14 @@ static int pci_bios_write(unsigned int s
44745 +@@ -263,10 +324,14 @@ static int pci_bios_write(unsigned int s
44746 "c" (value),
44747 "b" (bx),
44748 "D" ((long)reg),
44749 @@ -24219,7 +22310,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44750 "jc 1f\n\t"
44751 "xor %%ah, %%ah\n"
44752 "1:"
44753 -@@ -252,10 +317,14 @@ static int pci_bios_write(unsigned int s
44754 +@@ -275,10 +340,14 @@ static int pci_bios_write(unsigned int s
44755 "c" (value),
44756 "b" (bx),
44757 "D" ((long)reg),
44758 @@ -24236,7 +22327,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44759 "jc 1f\n\t"
44760 "xor %%ah, %%ah\n"
44761 "1:"
44762 -@@ -264,7 +333,8 @@ static int pci_bios_write(unsigned int s
44763 +@@ -287,7 +356,8 @@ static int pci_bios_write(unsigned int s
44764 "c" (value),
44765 "b" (bx),
44766 "D" ((long)reg),
44767 @@ -24246,25 +22337,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44768 break;
44769 }
44770
44771 -@@ -278,7 +348,7 @@ static int pci_bios_write(unsigned int s
44772 - * Function table for BIOS32 access
44773 - */
44774 -
44775 --static struct pci_raw_ops pci_bios_access = {
44776 -+static const struct pci_raw_ops pci_bios_access = {
44777 - .read = pci_bios_read,
44778 - .write = pci_bios_write
44779 - };
44780 -@@ -287,7 +357,7 @@ static struct pci_raw_ops pci_bios_acces
44781 - * Try to find PCI BIOS.
44782 - */
44783 -
44784 --static struct pci_raw_ops * __devinit pci_find_bios(void)
44785 -+static const struct pci_raw_ops * __devinit pci_find_bios(void)
44786 - {
44787 - union bios32 *check;
44788 - unsigned char sum;
44789 -@@ -368,10 +438,13 @@ struct irq_routing_table * pcibios_get_i
44790 +@@ -392,10 +462,13 @@ struct irq_routing_table * pcibios_get_i
44791
44792 DBG("PCI: Fetching IRQ routing table... ");
44793 __asm__("push %%es\n\t"
44794 @@ -24279,7 +22352,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44795 "jc 1f\n\t"
44796 "xor %%ah, %%ah\n"
44797 "1:"
44798 -@@ -382,7 +455,8 @@ struct irq_routing_table * pcibios_get_i
44799 +@@ -406,7 +479,8 @@ struct irq_routing_table * pcibios_get_i
44800 "1" (0),
44801 "D" ((long) &opt),
44802 "S" (&pci_indirect),
44803 @@ -24289,7 +22362,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44804 : "memory");
44805 DBG("OK ret=%d, size=%d, map=%x\n", ret, opt.size, map);
44806 if (ret & 0xff00)
44807 -@@ -406,7 +480,10 @@ int pcibios_set_irq_routing(struct pci_d
44808 +@@ -430,7 +504,10 @@ int pcibios_set_irq_routing(struct pci_d
44809 {
44810 int ret;
44811
44812 @@ -24301,7 +22374,7 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44813 "jc 1f\n\t"
44814 "xor %%ah, %%ah\n"
44815 "1:"
44816 -@@ -414,7 +491,8 @@ int pcibios_set_irq_routing(struct pci_d
44817 +@@ -438,7 +515,8 @@ int pcibios_set_irq_routing(struct pci_d
44818 : "0" (PCIBIOS_SET_PCI_HW_INT),
44819 "b" ((dev->bus->number << 8) | dev->devfn),
44820 "c" ((irq << 8) | (pin + 10)),
44821 @@ -24311,290 +22384,478 @@ diff -urNp linux-2.6.32.48/arch/x86/pci/pcbios.c linux-2.6.32.48/arch/x86/pci/pc
44822 return !(ret & 0xff00);
44823 }
44824 EXPORT_SYMBOL(pcibios_set_irq_routing);
44825 -diff -urNp linux-2.6.32.48/arch/x86/power/cpu.c linux-2.6.32.48/arch/x86/power/cpu.c
44826 ---- linux-2.6.32.48/arch/x86/power/cpu.c 2011-11-12 12:44:28.000000000 -0500
44827 -+++ linux-2.6.32.48/arch/x86/power/cpu.c 2011-11-12 12:46:42.000000000 -0500
44828 -@@ -129,7 +129,7 @@ static void do_fpu_end(void)
44829 - static void fix_processor_context(void)
44830 - {
44831 - int cpu = smp_processor_id();
44832 -- struct tss_struct *t = &per_cpu(init_tss, cpu);
44833 -+ struct tss_struct *t = init_tss + cpu;
44834 -
44835 - set_tss_desc(cpu, t); /*
44836 - * This just modifies memory; should not be
44837 -@@ -139,7 +139,9 @@ static void fix_processor_context(void)
44838 - */
44839 +diff -urNp linux-3.0.8/arch/x86/platform/efi/efi_32.c linux-3.0.8/arch/x86/platform/efi/efi_32.c
44840 +--- linux-3.0.8/arch/x86/platform/efi/efi_32.c 2011-07-21 22:17:23.000000000 -0400
44841 ++++ linux-3.0.8/arch/x86/platform/efi/efi_32.c 2011-10-06 04:17:55.000000000 -0400
44842 +@@ -38,70 +38,56 @@
44843 + */
44844
44845 - #ifdef CONFIG_X86_64
44846 -+ pax_open_kernel();
44847 - get_cpu_gdt_table(cpu)[GDT_ENTRY_TSS].type = 9;
44848 -+ pax_close_kernel();
44849 + static unsigned long efi_rt_eflags;
44850 +-static pgd_t efi_bak_pg_dir_pointer[2];
44851 ++static pgd_t __initdata efi_bak_pg_dir_pointer[KERNEL_PGD_PTRS];
44852
44853 - syscall_init(); /* This sets MSR_*STAR and related */
44854 - #endif
44855 -diff -urNp linux-2.6.32.48/arch/x86/vdso/Makefile linux-2.6.32.48/arch/x86/vdso/Makefile
44856 ---- linux-2.6.32.48/arch/x86/vdso/Makefile 2011-11-12 12:44:28.000000000 -0500
44857 -+++ linux-2.6.32.48/arch/x86/vdso/Makefile 2011-11-12 12:46:42.000000000 -0500
44858 -@@ -122,7 +122,7 @@ quiet_cmd_vdso = VDSO $@
44859 - $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
44860 - -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^)
44861 +-void efi_call_phys_prelog(void)
44862 ++void __init efi_call_phys_prelog(void)
44863 + {
44864 +- unsigned long cr4;
44865 +- unsigned long temp;
44866 + struct desc_ptr gdt_descr;
44867
44868 --VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
44869 -+VDSO_LDFLAGS = -fPIC -shared -Wl,--no-undefined $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
44870 - GCOV_PROFILE := n
44871 +- local_irq_save(efi_rt_eflags);
44872 ++#ifdef CONFIG_PAX_KERNEXEC
44873 ++ struct desc_struct d;
44874 ++#endif
44875
44876 - #
44877 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c
44878 ---- linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c 2009-12-02 22:51:21.000000000 -0500
44879 -+++ linux-2.6.32.48/arch/x86/vdso/vclock_gettime.c 2011-11-12 12:46:42.000000000 -0500
44880 -@@ -22,24 +22,48 @@
44881 - #include <asm/hpet.h>
44882 - #include <asm/unistd.h>
44883 - #include <asm/io.h>
44884 -+#include <asm/fixmap.h>
44885 - #include "vextern.h"
44886 +- /*
44887 +- * If I don't have PAE, I should just duplicate two entries in page
44888 +- * directory. If I have PAE, I just need to duplicate one entry in
44889 +- * page directory.
44890 +- */
44891 +- cr4 = read_cr4_safe();
44892 ++ local_irq_save(efi_rt_eflags);
44893
44894 - #define gtod vdso_vsyscall_gtod_data
44895 +- if (cr4 & X86_CR4_PAE) {
44896 +- efi_bak_pg_dir_pointer[0].pgd =
44897 +- swapper_pg_dir[pgd_index(0)].pgd;
44898 +- swapper_pg_dir[0].pgd =
44899 +- swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
44900 +- } else {
44901 +- efi_bak_pg_dir_pointer[0].pgd =
44902 +- swapper_pg_dir[pgd_index(0)].pgd;
44903 +- efi_bak_pg_dir_pointer[1].pgd =
44904 +- swapper_pg_dir[pgd_index(0x400000)].pgd;
44905 +- swapper_pg_dir[pgd_index(0)].pgd =
44906 +- swapper_pg_dir[pgd_index(PAGE_OFFSET)].pgd;
44907 +- temp = PAGE_OFFSET + 0x400000;
44908 +- swapper_pg_dir[pgd_index(0x400000)].pgd =
44909 +- swapper_pg_dir[pgd_index(temp)].pgd;
44910 +- }
44911 ++ clone_pgd_range(efi_bak_pg_dir_pointer, swapper_pg_dir, KERNEL_PGD_PTRS);
44912 ++ clone_pgd_range(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY,
44913 ++ min_t(unsigned long, KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY));
44914
44915 -+notrace noinline long __vdso_fallback_time(long *t)
44916 -+{
44917 -+ long secs;
44918 -+ asm volatile("syscall"
44919 -+ : "=a" (secs)
44920 -+ : "0" (__NR_time),"D" (t) : "r11", "cx", "memory");
44921 -+ return secs;
44922 -+}
44923 -+
44924 - notrace static long vdso_fallback_gettime(long clock, struct timespec *ts)
44925 - {
44926 - long ret;
44927 - asm("syscall" : "=a" (ret) :
44928 -- "0" (__NR_clock_gettime),"D" (clock), "S" (ts) : "memory");
44929 -+ "0" (__NR_clock_gettime),"D" (clock), "S" (ts) : "r11", "cx", "memory");
44930 - return ret;
44931 - }
44932 + /*
44933 + * After the lock is released, the original page table is restored.
44934 + */
44935 + __flush_tlb_all();
44936
44937 -+notrace static inline cycle_t __vdso_vread_hpet(void)
44938 -+{
44939 -+ return readl((const void __iomem *)fix_to_virt(VSYSCALL_HPET) + 0xf0);
44940 -+}
44941 -+
44942 -+notrace static inline cycle_t __vdso_vread_tsc(void)
44943 -+{
44944 -+ cycle_t ret = (cycle_t)vget_cycles();
44945 -+
44946 -+ return ret >= gtod->clock.cycle_last ? ret : gtod->clock.cycle_last;
44947 -+}
44948 ++#ifdef CONFIG_PAX_KERNEXEC
44949 ++ pack_descriptor(&d, 0, 0xFFFFF, 0x9B, 0xC);
44950 ++ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_CS, &d, DESCTYPE_S);
44951 ++ pack_descriptor(&d, 0, 0xFFFFF, 0x93, 0xC);
44952 ++ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_DS, &d, DESCTYPE_S);
44953 ++#endif
44954 +
44955 - notrace static inline long vgetns(void)
44956 - {
44957 - long v;
44958 -- cycles_t (*vread)(void);
44959 -- vread = gtod->clock.vread;
44960 -- v = (vread() - gtod->clock.cycle_last) & gtod->clock.mask;
44961 -+ if (gtod->clock.name[0] == 't' && gtod->clock.name[1] == 's' && gtod->clock.name[2] == 'c' && !gtod->clock.name[3])
44962 -+ v = __vdso_vread_tsc();
44963 -+ else
44964 -+ v = __vdso_vread_hpet();
44965 -+ v = (v - gtod->clock.cycle_last) & gtod->clock.mask;
44966 - return (v * gtod->clock.mult) >> gtod->clock.shift;
44967 + gdt_descr.address = __pa(get_cpu_gdt_table(0));
44968 + gdt_descr.size = GDT_SIZE - 1;
44969 + load_gdt(&gdt_descr);
44970 }
44971
44972 -@@ -113,7 +137,9 @@ notrace static noinline int do_monotonic
44973 -
44974 - notrace int __vdso_clock_gettime(clockid_t clock, struct timespec *ts)
44975 +-void efi_call_phys_epilog(void)
44976 ++void __init efi_call_phys_epilog(void)
44977 {
44978 -- if (likely(gtod->sysctl_enabled))
44979 -+ if (likely(gtod->sysctl_enabled &&
44980 -+ ((gtod->clock.name[0] == 'h' && gtod->clock.name[1] == 'p' && gtod->clock.name[2] == 'e' && gtod->clock.name[3] == 't' && !gtod->clock.name[4]) ||
44981 -+ (gtod->clock.name[0] == 't' && gtod->clock.name[1] == 's' && gtod->clock.name[2] == 'c' && !gtod->clock.name[3]))))
44982 - switch (clock) {
44983 - case CLOCK_REALTIME:
44984 - if (likely(gtod->clock.vread))
44985 -@@ -133,10 +159,20 @@ notrace int __vdso_clock_gettime(clockid
44986 - int clock_gettime(clockid_t, struct timespec *)
44987 - __attribute__((weak, alias("__vdso_clock_gettime")));
44988 +- unsigned long cr4;
44989 + struct desc_ptr gdt_descr;
44990
44991 --notrace int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz)
44992 -+notrace noinline int __vdso_fallback_gettimeofday(struct timeval *tv, struct timezone *tz)
44993 - {
44994 - long ret;
44995 -- if (likely(gtod->sysctl_enabled && gtod->clock.vread)) {
44996 -+ asm("syscall" : "=a" (ret) :
44997 -+ "0" (__NR_gettimeofday), "D" (tv), "S" (tz) : "r11", "cx", "memory");
44998 -+ return ret;
44999 -+}
45000 ++#ifdef CONFIG_PAX_KERNEXEC
45001 ++ struct desc_struct d;
45002 +
45003 -+notrace int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz)
45004 -+{
45005 -+ if (likely(gtod->sysctl_enabled &&
45006 -+ ((gtod->clock.name[0] == 'h' && gtod->clock.name[1] == 'p' && gtod->clock.name[2] == 'e' && gtod->clock.name[3] == 't' && !gtod->clock.name[4]) ||
45007 -+ (gtod->clock.name[0] == 't' && gtod->clock.name[1] == 's' && gtod->clock.name[2] == 'c' && !gtod->clock.name[3]))))
45008 -+ {
45009 - if (likely(tv != NULL)) {
45010 - BUILD_BUG_ON(offsetof(struct timeval, tv_usec) !=
45011 - offsetof(struct timespec, tv_nsec) ||
45012 -@@ -151,9 +187,7 @@ notrace int __vdso_gettimeofday(struct t
45013 - }
45014 - return 0;
45015 - }
45016 -- asm("syscall" : "=a" (ret) :
45017 -- "0" (__NR_gettimeofday), "D" (tv), "S" (tz) : "memory");
45018 -- return ret;
45019 -+ return __vdso_fallback_gettimeofday(tv, tz);
45020 - }
45021 - int gettimeofday(struct timeval *, struct timezone *)
45022 - __attribute__((weak, alias("__vdso_gettimeofday")));
45023 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c
45024 ---- linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c 2009-12-02 22:51:21.000000000 -0500
45025 -+++ linux-2.6.32.48/arch/x86/vdso/vdso32-setup.c 2011-11-12 12:46:42.000000000 -0500
45026 -@@ -25,6 +25,7 @@
45027 - #include <asm/tlbflush.h>
45028 - #include <asm/vdso.h>
45029 - #include <asm/proto.h>
45030 -+#include <asm/mman.h>
45031 ++ memset(&d, 0, sizeof d);
45032 ++ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_CS, &d, DESCTYPE_S);
45033 ++ write_gdt_entry(get_cpu_gdt_table(0), GDT_ENTRY_KERNEXEC_EFI_DS, &d, DESCTYPE_S);
45034 ++#endif
45035 ++
45036 + gdt_descr.address = (unsigned long)get_cpu_gdt_table(0);
45037 + gdt_descr.size = GDT_SIZE - 1;
45038 + load_gdt(&gdt_descr);
45039
45040 - enum {
45041 - VDSO_DISABLED = 0,
45042 -@@ -226,7 +227,7 @@ static inline void map_compat_vdso(int m
45043 - void enable_sep_cpu(void)
45044 - {
45045 - int cpu = get_cpu();
45046 -- struct tss_struct *tss = &per_cpu(init_tss, cpu);
45047 -+ struct tss_struct *tss = init_tss + cpu;
45048 +- cr4 = read_cr4_safe();
45049 +-
45050 +- if (cr4 & X86_CR4_PAE) {
45051 +- swapper_pg_dir[pgd_index(0)].pgd =
45052 +- efi_bak_pg_dir_pointer[0].pgd;
45053 +- } else {
45054 +- swapper_pg_dir[pgd_index(0)].pgd =
45055 +- efi_bak_pg_dir_pointer[0].pgd;
45056 +- swapper_pg_dir[pgd_index(0x400000)].pgd =
45057 +- efi_bak_pg_dir_pointer[1].pgd;
45058 +- }
45059 ++ clone_pgd_range(swapper_pg_dir, efi_bak_pg_dir_pointer, KERNEL_PGD_PTRS);
45060
45061 - if (!boot_cpu_has(X86_FEATURE_SEP)) {
45062 - put_cpu();
45063 -@@ -249,7 +250,7 @@ static int __init gate_vma_init(void)
45064 - gate_vma.vm_start = FIXADDR_USER_START;
45065 - gate_vma.vm_end = FIXADDR_USER_END;
45066 - gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
45067 -- gate_vma.vm_page_prot = __P101;
45068 -+ gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags);
45069 /*
45070 - * Make sure the vDSO gets into every core dump.
45071 - * Dumping its contents makes post-mortem fully interpretable later
45072 -@@ -331,14 +332,14 @@ int arch_setup_additional_pages(struct l
45073 - if (compat)
45074 - addr = VDSO_HIGH_BASE;
45075 - else {
45076 -- addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, 0);
45077 -+ addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, MAP_EXECUTABLE);
45078 - if (IS_ERR_VALUE(addr)) {
45079 - ret = addr;
45080 - goto up_fail;
45081 - }
45082 - }
45083 -
45084 -- current->mm->context.vdso = (void *)addr;
45085 -+ current->mm->context.vdso = addr;
45086 + * After the lock is released, the original page table is restored.
45087 +diff -urNp linux-3.0.8/arch/x86/platform/efi/efi_stub_32.S linux-3.0.8/arch/x86/platform/efi/efi_stub_32.S
45088 +--- linux-3.0.8/arch/x86/platform/efi/efi_stub_32.S 2011-07-21 22:17:23.000000000 -0400
45089 ++++ linux-3.0.8/arch/x86/platform/efi/efi_stub_32.S 2011-09-19 09:16:58.000000000 -0400
45090 +@@ -6,7 +6,9 @@
45091 + */
45092
45093 - if (compat_uses_vma || !compat) {
45094 - /*
45095 -@@ -361,11 +362,11 @@ int arch_setup_additional_pages(struct l
45096 - }
45097 + #include <linux/linkage.h>
45098 ++#include <linux/init.h>
45099 + #include <asm/page_types.h>
45100 ++#include <asm/segment.h>
45101
45102 - current_thread_info()->sysenter_return =
45103 -- VDSO32_SYMBOL(addr, SYSENTER_RETURN);
45104 -+ (__force void __user *)VDSO32_SYMBOL(addr, SYSENTER_RETURN);
45105 + /*
45106 + * efi_call_phys(void *, ...) is a function with variable parameters.
45107 +@@ -20,7 +22,7 @@
45108 + * service functions will comply with gcc calling convention, too.
45109 + */
45110
45111 - up_fail:
45112 - if (ret)
45113 -- current->mm->context.vdso = NULL;
45114 -+ current->mm->context.vdso = 0;
45115 +-.text
45116 ++__INIT
45117 + ENTRY(efi_call_phys)
45118 + /*
45119 + * 0. The function can only be called in Linux kernel. So CS has been
45120 +@@ -36,9 +38,11 @@ ENTRY(efi_call_phys)
45121 + * The mapping of lower virtual memory has been created in prelog and
45122 + * epilog.
45123 + */
45124 +- movl $1f, %edx
45125 +- subl $__PAGE_OFFSET, %edx
45126 +- jmp *%edx
45127 ++ movl $(__KERNEXEC_EFI_DS), %edx
45128 ++ mov %edx, %ds
45129 ++ mov %edx, %es
45130 ++ mov %edx, %ss
45131 ++ ljmp $(__KERNEXEC_EFI_CS),$1f-__PAGE_OFFSET
45132 + 1:
45133
45134 - up_write(&mm->mmap_sem);
45135 + /*
45136 +@@ -47,14 +51,8 @@ ENTRY(efi_call_phys)
45137 + * parameter 2, ..., param n. To make things easy, we save the return
45138 + * address of efi_call_phys in a global variable.
45139 + */
45140 +- popl %edx
45141 +- movl %edx, saved_return_addr
45142 +- /* get the function pointer into ECX*/
45143 +- popl %ecx
45144 +- movl %ecx, efi_rt_function_ptr
45145 +- movl $2f, %edx
45146 +- subl $__PAGE_OFFSET, %edx
45147 +- pushl %edx
45148 ++ popl (saved_return_addr)
45149 ++ popl (efi_rt_function_ptr)
45150
45151 -@@ -413,8 +414,14 @@ __initcall(ia32_binfmt_init);
45152 + /*
45153 + * 3. Clear PG bit in %CR0.
45154 +@@ -73,9 +71,8 @@ ENTRY(efi_call_phys)
45155 + /*
45156 + * 5. Call the physical function.
45157 + */
45158 +- jmp *%ecx
45159 ++ call *(efi_rt_function_ptr-__PAGE_OFFSET)
45160
45161 - const char *arch_vma_name(struct vm_area_struct *vma)
45162 - {
45163 -- if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
45164 -+ if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso)
45165 - return "[vdso]";
45166 -+
45167 -+#ifdef CONFIG_PAX_SEGMEXEC
45168 -+ if (vma->vm_mm && vma->vm_mirror && vma->vm_mirror->vm_start == vma->vm_mm->context.vdso)
45169 -+ return "[vdso]";
45170 -+#endif
45171 +-2:
45172 + /*
45173 + * 6. After EFI runtime service returns, control will return to
45174 + * following instruction. We'd better readjust stack pointer first.
45175 +@@ -88,35 +85,32 @@ ENTRY(efi_call_phys)
45176 + movl %cr0, %edx
45177 + orl $0x80000000, %edx
45178 + movl %edx, %cr0
45179 +- jmp 1f
45180 +-1:
45181 +
45182 - return NULL;
45183 - }
45184 + /*
45185 + * 8. Now restore the virtual mode from flat mode by
45186 + * adding EIP with PAGE_OFFSET.
45187 + */
45188 +- movl $1f, %edx
45189 +- jmp *%edx
45190 ++ ljmp $(__KERNEL_CS),$1f+__PAGE_OFFSET
45191 + 1:
45192 ++ movl $(__KERNEL_DS), %edx
45193 ++ mov %edx, %ds
45194 ++ mov %edx, %es
45195 ++ mov %edx, %ss
45196
45197 -@@ -423,7 +430,7 @@ struct vm_area_struct *get_gate_vma(stru
45198 - struct mm_struct *mm = tsk->mm;
45199 + /*
45200 + * 9. Balance the stack. And because EAX contain the return value,
45201 + * we'd better not clobber it.
45202 + */
45203 +- leal efi_rt_function_ptr, %edx
45204 +- movl (%edx), %ecx
45205 +- pushl %ecx
45206 ++ pushl (efi_rt_function_ptr)
45207
45208 - /* Check to see if this task was created in compat vdso mode */
45209 -- if (mm && mm->context.vdso == (void *)VDSO_HIGH_BASE)
45210 -+ if (mm && mm->context.vdso == VDSO_HIGH_BASE)
45211 + /*
45212 +- * 10. Push the saved return address onto the stack and return.
45213 ++ * 10. Return to the saved return address.
45214 + */
45215 +- leal saved_return_addr, %edx
45216 +- movl (%edx), %ecx
45217 +- pushl %ecx
45218 +- ret
45219 ++ jmpl *(saved_return_addr)
45220 + ENDPROC(efi_call_phys)
45221 + .previous
45222 +
45223 +-.data
45224 ++__INITDATA
45225 + saved_return_addr:
45226 + .long 0
45227 + efi_rt_function_ptr:
45228 +diff -urNp linux-3.0.8/arch/x86/platform/efi/efi_stub_64.S linux-3.0.8/arch/x86/platform/efi/efi_stub_64.S
45229 +--- linux-3.0.8/arch/x86/platform/efi/efi_stub_64.S 2011-07-21 22:17:23.000000000 -0400
45230 ++++ linux-3.0.8/arch/x86/platform/efi/efi_stub_64.S 2011-10-06 04:17:55.000000000 -0400
45231 +@@ -7,6 +7,7 @@
45232 + */
45233 +
45234 + #include <linux/linkage.h>
45235 ++#include <asm/alternative-asm.h>
45236 +
45237 + #define SAVE_XMM \
45238 + mov %rsp, %rax; \
45239 +@@ -40,6 +41,7 @@ ENTRY(efi_call0)
45240 + call *%rdi
45241 + addq $32, %rsp
45242 + RESTORE_XMM
45243 ++ pax_force_retaddr
45244 + ret
45245 + ENDPROC(efi_call0)
45246 +
45247 +@@ -50,6 +52,7 @@ ENTRY(efi_call1)
45248 + call *%rdi
45249 + addq $32, %rsp
45250 + RESTORE_XMM
45251 ++ pax_force_retaddr
45252 + ret
45253 + ENDPROC(efi_call1)
45254 +
45255 +@@ -60,6 +63,7 @@ ENTRY(efi_call2)
45256 + call *%rdi
45257 + addq $32, %rsp
45258 + RESTORE_XMM
45259 ++ pax_force_retaddr
45260 + ret
45261 + ENDPROC(efi_call2)
45262 +
45263 +@@ -71,6 +75,7 @@ ENTRY(efi_call3)
45264 + call *%rdi
45265 + addq $32, %rsp
45266 + RESTORE_XMM
45267 ++ pax_force_retaddr
45268 + ret
45269 + ENDPROC(efi_call3)
45270 +
45271 +@@ -83,6 +88,7 @@ ENTRY(efi_call4)
45272 + call *%rdi
45273 + addq $32, %rsp
45274 + RESTORE_XMM
45275 ++ pax_force_retaddr
45276 + ret
45277 + ENDPROC(efi_call4)
45278 +
45279 +@@ -96,6 +102,7 @@ ENTRY(efi_call5)
45280 + call *%rdi
45281 + addq $48, %rsp
45282 + RESTORE_XMM
45283 ++ pax_force_retaddr
45284 + ret
45285 + ENDPROC(efi_call5)
45286 +
45287 +@@ -112,5 +119,6 @@ ENTRY(efi_call6)
45288 + call *%rdi
45289 + addq $48, %rsp
45290 + RESTORE_XMM
45291 ++ pax_force_retaddr
45292 + ret
45293 + ENDPROC(efi_call6)
45294 +diff -urNp linux-3.0.8/arch/x86/platform/mrst/mrst.c linux-3.0.8/arch/x86/platform/mrst/mrst.c
45295 +--- linux-3.0.8/arch/x86/platform/mrst/mrst.c 2011-07-21 22:17:23.000000000 -0400
45296 ++++ linux-3.0.8/arch/x86/platform/mrst/mrst.c 2011-08-23 21:47:55.000000000 -0400
45297 +@@ -239,14 +239,16 @@ static int mrst_i8042_detect(void)
45298 + }
45299 +
45300 + /* Reboot and power off are handled by the SCU on a MID device */
45301 +-static void mrst_power_off(void)
45302 ++static __noreturn void mrst_power_off(void)
45303 + {
45304 + intel_scu_ipc_simple_command(0xf1, 1);
45305 ++ BUG();
45306 + }
45307 +
45308 +-static void mrst_reboot(void)
45309 ++static __noreturn void mrst_reboot(void)
45310 + {
45311 + intel_scu_ipc_simple_command(0xf1, 0);
45312 ++ BUG();
45313 + }
45314 +
45315 + /*
45316 +diff -urNp linux-3.0.8/arch/x86/platform/uv/tlb_uv.c linux-3.0.8/arch/x86/platform/uv/tlb_uv.c
45317 +--- linux-3.0.8/arch/x86/platform/uv/tlb_uv.c 2011-07-21 22:17:23.000000000 -0400
45318 ++++ linux-3.0.8/arch/x86/platform/uv/tlb_uv.c 2011-08-23 21:48:14.000000000 -0400
45319 +@@ -373,6 +373,8 @@ static void reset_with_ipi(struct bau_ta
45320 + cpumask_t mask;
45321 + struct reset_args reset_args;
45322 +
45323 ++ pax_track_stack();
45324 ++
45325 + reset_args.sender = sender;
45326 + cpus_clear(mask);
45327 + /* find a single cpu for each uvhub in this distribution mask */
45328 +diff -urNp linux-3.0.8/arch/x86/power/cpu.c linux-3.0.8/arch/x86/power/cpu.c
45329 +--- linux-3.0.8/arch/x86/power/cpu.c 2011-07-21 22:17:23.000000000 -0400
45330 ++++ linux-3.0.8/arch/x86/power/cpu.c 2011-08-23 21:47:55.000000000 -0400
45331 +@@ -130,7 +130,7 @@ static void do_fpu_end(void)
45332 + static void fix_processor_context(void)
45333 + {
45334 + int cpu = smp_processor_id();
45335 +- struct tss_struct *t = &per_cpu(init_tss, cpu);
45336 ++ struct tss_struct *t = init_tss + cpu;
45337 +
45338 + set_tss_desc(cpu, t); /*
45339 + * This just modifies memory; should not be
45340 +@@ -140,7 +140,9 @@ static void fix_processor_context(void)
45341 + */
45342 +
45343 + #ifdef CONFIG_X86_64
45344 ++ pax_open_kernel();
45345 + get_cpu_gdt_table(cpu)[GDT_ENTRY_TSS].type = 9;
45346 ++ pax_close_kernel();
45347 +
45348 + syscall_init(); /* This sets MSR_*STAR and related */
45349 + #endif
45350 +diff -urNp linux-3.0.8/arch/x86/vdso/Makefile linux-3.0.8/arch/x86/vdso/Makefile
45351 +--- linux-3.0.8/arch/x86/vdso/Makefile 2011-07-21 22:17:23.000000000 -0400
45352 ++++ linux-3.0.8/arch/x86/vdso/Makefile 2011-08-23 21:47:55.000000000 -0400
45353 +@@ -136,7 +136,7 @@ quiet_cmd_vdso = VDSO $@
45354 + -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
45355 + sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
45356 +
45357 +-VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
45358 ++VDSO_LDFLAGS = -fPIC -shared -Wl,--no-undefined $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
45359 + GCOV_PROFILE := n
45360 +
45361 + #
45362 +diff -urNp linux-3.0.8/arch/x86/vdso/vdso32-setup.c linux-3.0.8/arch/x86/vdso/vdso32-setup.c
45363 +--- linux-3.0.8/arch/x86/vdso/vdso32-setup.c 2011-07-21 22:17:23.000000000 -0400
45364 ++++ linux-3.0.8/arch/x86/vdso/vdso32-setup.c 2011-08-23 21:47:55.000000000 -0400
45365 +@@ -25,6 +25,7 @@
45366 + #include <asm/tlbflush.h>
45367 + #include <asm/vdso.h>
45368 + #include <asm/proto.h>
45369 ++#include <asm/mman.h>
45370 +
45371 + enum {
45372 + VDSO_DISABLED = 0,
45373 +@@ -226,7 +227,7 @@ static inline void map_compat_vdso(int m
45374 + void enable_sep_cpu(void)
45375 + {
45376 + int cpu = get_cpu();
45377 +- struct tss_struct *tss = &per_cpu(init_tss, cpu);
45378 ++ struct tss_struct *tss = init_tss + cpu;
45379 +
45380 + if (!boot_cpu_has(X86_FEATURE_SEP)) {
45381 + put_cpu();
45382 +@@ -249,7 +250,7 @@ static int __init gate_vma_init(void)
45383 + gate_vma.vm_start = FIXADDR_USER_START;
45384 + gate_vma.vm_end = FIXADDR_USER_END;
45385 + gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
45386 +- gate_vma.vm_page_prot = __P101;
45387 ++ gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags);
45388 + /*
45389 + * Make sure the vDSO gets into every core dump.
45390 + * Dumping its contents makes post-mortem fully interpretable later
45391 +@@ -331,14 +332,14 @@ int arch_setup_additional_pages(struct l
45392 + if (compat)
45393 + addr = VDSO_HIGH_BASE;
45394 + else {
45395 +- addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, 0);
45396 ++ addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, MAP_EXECUTABLE);
45397 + if (IS_ERR_VALUE(addr)) {
45398 + ret = addr;
45399 + goto up_fail;
45400 + }
45401 + }
45402 +
45403 +- current->mm->context.vdso = (void *)addr;
45404 ++ current->mm->context.vdso = addr;
45405 +
45406 + if (compat_uses_vma || !compat) {
45407 + /*
45408 +@@ -361,11 +362,11 @@ int arch_setup_additional_pages(struct l
45409 + }
45410 +
45411 + current_thread_info()->sysenter_return =
45412 +- VDSO32_SYMBOL(addr, SYSENTER_RETURN);
45413 ++ (__force void __user *)VDSO32_SYMBOL(addr, SYSENTER_RETURN);
45414 +
45415 + up_fail:
45416 + if (ret)
45417 +- current->mm->context.vdso = NULL;
45418 ++ current->mm->context.vdso = 0;
45419 +
45420 + up_write(&mm->mmap_sem);
45421 +
45422 +@@ -412,8 +413,14 @@ __initcall(ia32_binfmt_init);
45423 +
45424 + const char *arch_vma_name(struct vm_area_struct *vma)
45425 + {
45426 +- if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
45427 ++ if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso)
45428 + return "[vdso]";
45429 ++
45430 ++#ifdef CONFIG_PAX_SEGMEXEC
45431 ++ if (vma->vm_mm && vma->vm_mirror && vma->vm_mirror->vm_start == vma->vm_mm->context.vdso)
45432 ++ return "[vdso]";
45433 ++#endif
45434 ++
45435 + return NULL;
45436 + }
45437 +
45438 +@@ -423,7 +430,7 @@ struct vm_area_struct *get_gate_vma(stru
45439 + * Check to see if the corresponding task was created in compat vdso
45440 + * mode.
45441 + */
45442 +- if (mm && mm->context.vdso == (void *)VDSO_HIGH_BASE)
45443 ++ if (mm && mm->context.vdso == VDSO_HIGH_BASE)
45444 return &gate_vma;
45445 return NULL;
45446 }
45447 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vdso.lds.S linux-2.6.32.48/arch/x86/vdso/vdso.lds.S
45448 ---- linux-2.6.32.48/arch/x86/vdso/vdso.lds.S 2009-12-02 22:51:21.000000000 -0500
45449 -+++ linux-2.6.32.48/arch/x86/vdso/vdso.lds.S 2011-11-12 12:46:42.000000000 -0500
45450 -@@ -35,3 +35,9 @@ VDSO64_PRELINK = VDSO_PRELINK;
45451 - #define VEXTERN(x) VDSO64_ ## x = vdso_ ## x;
45452 - #include "vextern.h"
45453 - #undef VEXTERN
45454 -+
45455 -+#define VEXTERN(x) VDSO64_ ## x = __vdso_ ## x;
45456 -+VEXTERN(fallback_gettimeofday)
45457 -+VEXTERN(fallback_time)
45458 -+VEXTERN(getcpu)
45459 -+#undef VEXTERN
45460 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vextern.h linux-2.6.32.48/arch/x86/vdso/vextern.h
45461 ---- linux-2.6.32.48/arch/x86/vdso/vextern.h 2009-12-02 22:51:21.000000000 -0500
45462 -+++ linux-2.6.32.48/arch/x86/vdso/vextern.h 2011-11-12 12:46:42.000000000 -0500
45463 -@@ -11,6 +11,5 @@
45464 - put into vextern.h and be referenced as a pointer with vdso prefix.
45465 - The main kernel later fills in the values. */
45466 -
45467 --VEXTERN(jiffies)
45468 - VEXTERN(vgetcpu_mode)
45469 - VEXTERN(vsyscall_gtod_data)
45470 -diff -urNp linux-2.6.32.48/arch/x86/vdso/vma.c linux-2.6.32.48/arch/x86/vdso/vma.c
45471 ---- linux-2.6.32.48/arch/x86/vdso/vma.c 2009-12-02 22:51:21.000000000 -0500
45472 -+++ linux-2.6.32.48/arch/x86/vdso/vma.c 2011-11-12 12:46:42.000000000 -0500
45473 -@@ -17,8 +17,6 @@
45474 - #include "vextern.h" /* Just for VMAGIC. */
45475 - #undef VEXTERN
45476 +diff -urNp linux-3.0.8/arch/x86/vdso/vma.c linux-3.0.8/arch/x86/vdso/vma.c
45477 +--- linux-3.0.8/arch/x86/vdso/vma.c 2011-07-21 22:17:23.000000000 -0400
45478 ++++ linux-3.0.8/arch/x86/vdso/vma.c 2011-08-23 21:47:55.000000000 -0400
45479 +@@ -15,18 +15,19 @@
45480 + #include <asm/proto.h>
45481 + #include <asm/vdso.h>
45482
45483 -unsigned int __read_mostly vdso_enabled = 1;
45484 -
45485 extern char vdso_start[], vdso_end[];
45486 extern unsigned short vdso_sync_cpuid;
45487 ++extern char __vsyscall_0;
45488
45489 -@@ -27,10 +25,8 @@ static unsigned vdso_size;
45490 + static struct page **vdso_pages;
45491 ++static struct page *vsyscall_page;
45492 + static unsigned vdso_size;
45493
45494 - static inline void *var_ref(void *p, char *name)
45495 + static int __init init_vdso_vars(void)
45496 {
45497 -- if (*(void **)p != (void *)VMAGIC) {
45498 -- printk("VDSO: variable %s broken\n", name);
45499 -- vdso_enabled = 0;
45500 -- }
45501 -+ if (*(void **)p != (void *)VMAGIC)
45502 -+ panic("VDSO: variable %s broken\n", name);
45503 - return p;
45504 - }
45505 +- int npages = (vdso_end - vdso_start + PAGE_SIZE - 1) / PAGE_SIZE;
45506 +- int i;
45507 ++ size_t nbytes = vdso_end - vdso_start;
45508 ++ size_t npages = (nbytes + PAGE_SIZE - 1) / PAGE_SIZE;
45509 ++ size_t i;
45510
45511 -@@ -57,21 +53,18 @@ static int __init init_vdso_vars(void)
45512 - if (!vbase)
45513 + vdso_size = npages << PAGE_SHIFT;
45514 + vdso_pages = kmalloc(sizeof(struct page *) * npages, GFP_KERNEL);
45515 +@@ -34,19 +35,19 @@ static int __init init_vdso_vars(void)
45516 goto oom;
45517 + for (i = 0; i < npages; i++) {
45518 + struct page *p;
45519 +- p = alloc_page(GFP_KERNEL);
45520 ++ p = alloc_page(GFP_KERNEL | __GFP_ZERO);
45521 + if (!p)
45522 + goto oom;
45523 + vdso_pages[i] = p;
45524 +- copy_page(page_address(p), vdso_start + i*PAGE_SIZE);
45525 ++ memcpy(page_address(p), vdso_start + i*PAGE_SIZE, nbytes > PAGE_SIZE ? PAGE_SIZE : nbytes);
45526 ++ nbytes -= PAGE_SIZE;
45527 + }
45528 ++ vsyscall_page = pfn_to_page((__pa_symbol(&__vsyscall_0)) >> PAGE_SHIFT);
45529
45530 -- if (memcmp(vbase, "\177ELF", 4)) {
45531 -- printk("VDSO: I'm broken; not ELF\n");
45532 -- vdso_enabled = 0;
45533 -- }
45534 -+ if (memcmp(vbase, ELFMAG, SELFMAG))
45535 -+ panic("VDSO: I'm broken; not ELF\n");
45536 -
45537 - #define VEXTERN(x) \
45538 - *(typeof(__ ## x) **) var_ref(VDSO64_SYMBOL(vbase, x), #x) = &__ ## x;
45539 - #include "vextern.h"
45540 - #undef VEXTERN
45541 -+ vunmap(vbase);
45542 return 0;
45543
45544 oom:
45545 @@ -24603,9 +22864,9 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vma.c linux-2.6.32.48/arch/x86/vdso/vma
45546 - return -ENOMEM;
45547 + panic("Cannot allocate vdso\n");
45548 }
45549 - __initcall(init_vdso_vars);
45550 + subsys_initcall(init_vdso_vars);
45551
45552 -@@ -105,9 +98,6 @@ int arch_setup_additional_pages(struct l
45553 +@@ -80,37 +81,35 @@ int arch_setup_additional_pages(struct l
45554 unsigned long addr;
45555 int ret;
45556
45557 @@ -24613,27 +22874,41 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vma.c linux-2.6.32.48/arch/x86/vdso/vma
45558 - return 0;
45559 -
45560 down_write(&mm->mmap_sem);
45561 - addr = vdso_addr(mm->start_stack, vdso_size);
45562 - addr = get_unmapped_area(NULL, addr, vdso_size, 0, 0);
45563 -@@ -116,7 +106,7 @@ int arch_setup_additional_pages(struct l
45564 +- addr = vdso_addr(mm->start_stack, vdso_size);
45565 +- addr = get_unmapped_area(NULL, addr, vdso_size, 0, 0);
45566 ++ addr = vdso_addr(mm->start_stack, vdso_size + PAGE_SIZE);
45567 ++ addr = get_unmapped_area(NULL, addr, vdso_size + PAGE_SIZE, 0, 0);
45568 + if (IS_ERR_VALUE(addr)) {
45569 + ret = addr;
45570 goto up_fail;
45571 }
45572
45573 - current->mm->context.vdso = (void *)addr;
45574 -+ current->mm->context.vdso = addr;
45575 ++ mm->context.vdso = addr + PAGE_SIZE;
45576
45577 - ret = install_special_mapping(mm, addr, vdso_size,
45578 +- ret = install_special_mapping(mm, addr, vdso_size,
45579 ++ ret = install_special_mapping(mm, addr, PAGE_SIZE,
45580 VM_READ|VM_EXEC|
45581 -@@ -124,7 +114,7 @@ int arch_setup_additional_pages(struct l
45582 +- VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
45583 ++ VM_MAYREAD|VM_MAYEXEC|
45584 VM_ALWAYSDUMP,
45585 - vdso_pages);
45586 +- vdso_pages);
45587 ++ &vsyscall_page);
45588 if (ret) {
45589 - current->mm->context.vdso = NULL;
45590 -+ current->mm->context.vdso = 0;
45591 ++ mm->context.vdso = 0;
45592 goto up_fail;
45593 }
45594
45595 -@@ -132,10 +122,3 @@ up_fail:
45596 ++ ret = install_special_mapping(mm, addr + PAGE_SIZE, vdso_size,
45597 ++ VM_READ|VM_EXEC|
45598 ++ VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
45599 ++ VM_ALWAYSDUMP,
45600 ++ vdso_pages);
45601 ++ if (ret)
45602 ++ mm->context.vdso = 0;
45603 ++
45604 + up_fail:
45605 up_write(&mm->mmap_sem);
45606 return ret;
45607 }
45608 @@ -24644,28 +22919,19 @@ diff -urNp linux-2.6.32.48/arch/x86/vdso/vma.c linux-2.6.32.48/arch/x86/vdso/vma
45609 - return 0;
45610 -}
45611 -__setup("vdso=", vdso_setup);
45612 -diff -urNp linux-2.6.32.48/arch/x86/xen/enlighten.c linux-2.6.32.48/arch/x86/xen/enlighten.c
45613 ---- linux-2.6.32.48/arch/x86/xen/enlighten.c 2011-11-12 12:44:28.000000000 -0500
45614 -+++ linux-2.6.32.48/arch/x86/xen/enlighten.c 2011-11-12 12:46:42.000000000 -0500
45615 -@@ -71,8 +71,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
45616 +diff -urNp linux-3.0.8/arch/x86/xen/enlighten.c linux-3.0.8/arch/x86/xen/enlighten.c
45617 +--- linux-3.0.8/arch/x86/xen/enlighten.c 2011-10-24 08:05:23.000000000 -0400
45618 ++++ linux-3.0.8/arch/x86/xen/enlighten.c 2011-08-29 23:26:21.000000000 -0400
45619 +@@ -85,8 +85,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
45620
45621 struct shared_info xen_dummy_shared_info;
45622
45623 -void *xen_initial_gdt;
45624 -
45625 - /*
45626 - * Point at some empty memory to start with. We map the real shared_info
45627 - * page as soon as fixmap is up and running.
45628 -@@ -548,7 +546,7 @@ static void xen_write_idt_entry(gate_des
45629 -
45630 - preempt_disable();
45631 -
45632 -- start = __get_cpu_var(idt_desc).address;
45633 -+ start = (unsigned long)__get_cpu_var(idt_desc).address;
45634 - end = start + __get_cpu_var(idt_desc).size + 1;
45635 -
45636 - xen_mc_flush();
45637 -@@ -993,7 +991,7 @@ static const struct pv_apic_ops xen_apic
45638 + RESERVE_BRK(shared_info_page_brk, PAGE_SIZE);
45639 + __read_mostly int xen_have_vector_callback;
45640 + EXPORT_SYMBOL_GPL(xen_have_vector_callback);
45641 +@@ -1010,7 +1008,7 @@ static const struct pv_apic_ops xen_apic
45642 #endif
45643 };
45644
45645 @@ -24674,7 +22940,7 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/enlighten.c linux-2.6.32.48/arch/x86/xen
45646 {
45647 struct sched_shutdown r = { .reason = reason };
45648
45649 -@@ -1001,17 +999,17 @@ static void xen_reboot(int reason)
45650 +@@ -1018,17 +1016,17 @@ static void xen_reboot(int reason)
45651 BUG();
45652 }
45653
45654 @@ -24695,30 +22961,26 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/enlighten.c linux-2.6.32.48/arch/x86/xen
45655 {
45656 xen_reboot(SHUTDOWN_poweroff);
45657 }
45658 -@@ -1095,9 +1093,20 @@ asmlinkage void __init xen_start_kernel(
45659 - */
45660 +@@ -1134,7 +1132,17 @@ asmlinkage void __init xen_start_kernel(
45661 __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
45662
45663 --#ifdef CONFIG_X86_64
45664 /* Work out if we support NX */
45665 -- check_efer();
45666 +- x86_configure_nx();
45667 +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
45668 + if ((cpuid_eax(0x80000000) & 0xffff0000) == 0x80000000 &&
45669 + (cpuid_edx(0x80000001) & (1U << (X86_FEATURE_NX & 31)))) {
45670 + unsigned l, h;
45671 +
45672 -+#ifdef CONFIG_X86_PAE
45673 -+ nx_enabled = 1;
45674 -+#endif
45675 + __supported_pte_mask |= _PAGE_NX;
45676 + rdmsr(MSR_EFER, l, h);
45677 + l |= EFER_NX;
45678 + wrmsr(MSR_EFER, l, h);
45679 + }
45680 - #endif
45681 ++#endif
45682
45683 xen_setup_features();
45684 -@@ -1129,13 +1138,6 @@ asmlinkage void __init xen_start_kernel(
45685 +
45686 +@@ -1165,13 +1173,6 @@ asmlinkage void __init xen_start_kernel(
45687
45688 machine_ops = xen_machine_ops;
45689
45690 @@ -24731,11 +22993,11 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/enlighten.c linux-2.6.32.48/arch/x86/xen
45691 -
45692 xen_smp_init();
45693
45694 - pgd = (pgd_t *)xen_start_info->pt_base;
45695 -diff -urNp linux-2.6.32.48/arch/x86/xen/mmu.c linux-2.6.32.48/arch/x86/xen/mmu.c
45696 ---- linux-2.6.32.48/arch/x86/xen/mmu.c 2011-11-12 12:44:28.000000000 -0500
45697 -+++ linux-2.6.32.48/arch/x86/xen/mmu.c 2011-11-12 12:46:42.000000000 -0500
45698 -@@ -1719,6 +1719,8 @@ __init pgd_t *xen_setup_kernel_pagetable
45699 + #ifdef CONFIG_ACPI_NUMA
45700 +diff -urNp linux-3.0.8/arch/x86/xen/mmu.c linux-3.0.8/arch/x86/xen/mmu.c
45701 +--- linux-3.0.8/arch/x86/xen/mmu.c 2011-10-24 08:05:23.000000000 -0400
45702 ++++ linux-3.0.8/arch/x86/xen/mmu.c 2011-08-29 23:26:21.000000000 -0400
45703 +@@ -1683,6 +1683,8 @@ pgd_t * __init xen_setup_kernel_pagetabl
45704 convert_pfn_mfn(init_level4_pgt);
45705 convert_pfn_mfn(level3_ident_pgt);
45706 convert_pfn_mfn(level3_kernel_pgt);
45707 @@ -24744,7 +23006,7 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/mmu.c linux-2.6.32.48/arch/x86/xen/mmu.c
45708
45709 l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
45710 l2 = m2v(l3[pud_index(__START_KERNEL_map)].pud);
45711 -@@ -1737,7 +1739,10 @@ __init pgd_t *xen_setup_kernel_pagetable
45712 +@@ -1701,7 +1703,10 @@ pgd_t * __init xen_setup_kernel_pagetabl
45713 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
45714 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
45715 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
45716 @@ -24755,7 +23017,7 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/mmu.c linux-2.6.32.48/arch/x86/xen/mmu.c
45717 set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
45718 set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
45719
45720 -@@ -1860,6 +1865,7 @@ static __init void xen_post_allocator_in
45721 +@@ -1913,6 +1918,7 @@ static void __init xen_post_allocator_in
45722 pv_mmu_ops.set_pud = xen_set_pud;
45723 #if PAGETABLE_LEVELS == 4
45724 pv_mmu_ops.set_pgd = xen_set_pgd;
45725 @@ -24763,7 +23025,7 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/mmu.c linux-2.6.32.48/arch/x86/xen/mmu.c
45726 #endif
45727
45728 /* This will work as long as patching hasn't happened yet
45729 -@@ -1946,6 +1952,7 @@ static const struct pv_mmu_ops xen_mmu_o
45730 +@@ -1994,6 +2000,7 @@ static const struct pv_mmu_ops xen_mmu_o
45731 .pud_val = PV_CALLEE_SAVE(xen_pud_val),
45732 .make_pud = PV_CALLEE_SAVE(xen_make_pud),
45733 .set_pgd = xen_set_pgd_hyper,
45734 @@ -24771,10 +23033,10 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/mmu.c linux-2.6.32.48/arch/x86/xen/mmu.c
45735
45736 .alloc_pud = xen_alloc_pmd_init,
45737 .release_pud = xen_release_pmd_init,
45738 -diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
45739 ---- linux-2.6.32.48/arch/x86/xen/smp.c 2011-11-12 12:44:28.000000000 -0500
45740 -+++ linux-2.6.32.48/arch/x86/xen/smp.c 2011-11-12 12:46:42.000000000 -0500
45741 -@@ -168,11 +168,6 @@ static void __init xen_smp_prepare_boot_
45742 +diff -urNp linux-3.0.8/arch/x86/xen/smp.c linux-3.0.8/arch/x86/xen/smp.c
45743 +--- linux-3.0.8/arch/x86/xen/smp.c 2011-10-24 08:05:30.000000000 -0400
45744 ++++ linux-3.0.8/arch/x86/xen/smp.c 2011-10-16 21:55:27.000000000 -0400
45745 +@@ -194,11 +194,6 @@ static void __init xen_smp_prepare_boot_
45746 {
45747 BUG_ON(smp_processor_id() != 0);
45748 native_smp_prepare_boot_cpu();
45749 @@ -24783,10 +23045,10 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
45750 - old memory can be recycled */
45751 - make_lowmem_page_readwrite(xen_initial_gdt);
45752 -
45753 + xen_filter_cpu_maps();
45754 xen_setup_vcpu_info_placement();
45755 }
45756 -
45757 -@@ -241,12 +236,12 @@ cpu_initialize_context(unsigned int cpu,
45758 +@@ -275,12 +270,12 @@ cpu_initialize_context(unsigned int cpu,
45759 gdt = get_cpu_gdt_table(cpu);
45760
45761 ctxt->flags = VGCF_IN_KERNEL;
45762 @@ -24802,7 +23064,7 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
45763 #else
45764 ctxt->gs_base_kernel = per_cpu_offset(cpu);
45765 #endif
45766 -@@ -297,13 +292,12 @@ static int __cpuinit xen_cpu_up(unsigned
45767 +@@ -331,13 +326,12 @@ static int __cpuinit xen_cpu_up(unsigned
45768 int rc;
45769
45770 per_cpu(current_task, cpu) = idle;
45771 @@ -24818,9 +23080,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/smp.c linux-2.6.32.48/arch/x86/xen/smp.c
45772 #endif
45773 xen_setup_runstate_info(cpu);
45774 xen_setup_timer(cpu);
45775 -diff -urNp linux-2.6.32.48/arch/x86/xen/xen-asm_32.S linux-2.6.32.48/arch/x86/xen/xen-asm_32.S
45776 ---- linux-2.6.32.48/arch/x86/xen/xen-asm_32.S 2011-11-12 12:44:28.000000000 -0500
45777 -+++ linux-2.6.32.48/arch/x86/xen/xen-asm_32.S 2011-11-12 12:46:42.000000000 -0500
45778 +diff -urNp linux-3.0.8/arch/x86/xen/xen-asm_32.S linux-3.0.8/arch/x86/xen/xen-asm_32.S
45779 +--- linux-3.0.8/arch/x86/xen/xen-asm_32.S 2011-10-24 08:05:30.000000000 -0400
45780 ++++ linux-3.0.8/arch/x86/xen/xen-asm_32.S 2011-10-16 21:55:27.000000000 -0400
45781 @@ -83,14 +83,14 @@ ENTRY(xen_iret)
45782 ESP_OFFSET=4 # bytes pushed onto stack
45783
45784 @@ -24833,18 +23095,18 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/xen-asm_32.S linux-2.6.32.48/arch/x86/xe
45785 - GET_THREAD_INFO(%eax)
45786 - movl TI_cpu(%eax), %eax
45787 - movl __per_cpu_offset(,%eax,4), %eax
45788 -- mov per_cpu__xen_vcpu(%eax), %eax
45789 +- mov xen_vcpu(%eax), %eax
45790 + push %fs
45791 + mov $(__KERNEL_PERCPU), %eax
45792 + mov %eax, %fs
45793 + mov PER_CPU_VAR(xen_vcpu), %eax
45794 + pop %fs
45795 #else
45796 - movl per_cpu__xen_vcpu, %eax
45797 + movl xen_vcpu, %eax
45798 #endif
45799 -diff -urNp linux-2.6.32.48/arch/x86/xen/xen-head.S linux-2.6.32.48/arch/x86/xen/xen-head.S
45800 ---- linux-2.6.32.48/arch/x86/xen/xen-head.S 2009-12-02 22:51:21.000000000 -0500
45801 -+++ linux-2.6.32.48/arch/x86/xen/xen-head.S 2011-11-12 12:46:42.000000000 -0500
45802 +diff -urNp linux-3.0.8/arch/x86/xen/xen-head.S linux-3.0.8/arch/x86/xen/xen-head.S
45803 +--- linux-3.0.8/arch/x86/xen/xen-head.S 2011-07-21 22:17:23.000000000 -0400
45804 ++++ linux-3.0.8/arch/x86/xen/xen-head.S 2011-08-23 21:47:55.000000000 -0400
45805 @@ -19,6 +19,17 @@ ENTRY(startup_xen)
45806 #ifdef CONFIG_X86_32
45807 mov %esi,xen_start_info
45808 @@ -24863,9 +23125,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/xen-head.S linux-2.6.32.48/arch/x86/xen/
45809 #else
45810 mov %rsi,xen_start_info
45811 mov $init_thread_union+THREAD_SIZE,%rsp
45812 -diff -urNp linux-2.6.32.48/arch/x86/xen/xen-ops.h linux-2.6.32.48/arch/x86/xen/xen-ops.h
45813 ---- linux-2.6.32.48/arch/x86/xen/xen-ops.h 2011-11-12 12:44:28.000000000 -0500
45814 -+++ linux-2.6.32.48/arch/x86/xen/xen-ops.h 2011-11-12 12:46:42.000000000 -0500
45815 +diff -urNp linux-3.0.8/arch/x86/xen/xen-ops.h linux-3.0.8/arch/x86/xen/xen-ops.h
45816 +--- linux-3.0.8/arch/x86/xen/xen-ops.h 2011-10-24 08:05:21.000000000 -0400
45817 ++++ linux-3.0.8/arch/x86/xen/xen-ops.h 2011-08-23 21:47:55.000000000 -0400
45818 @@ -10,8 +10,6 @@
45819 extern const char xen_hypervisor_callback[];
45820 extern const char xen_failsafe_callback[];
45821 @@ -24875,21 +23137,9 @@ diff -urNp linux-2.6.32.48/arch/x86/xen/xen-ops.h linux-2.6.32.48/arch/x86/xen/x
45822 struct trap_info;
45823 void xen_copy_trap_info(struct trap_info *traps);
45824
45825 -diff -urNp linux-2.6.32.48/block/blk-integrity.c linux-2.6.32.48/block/blk-integrity.c
45826 ---- linux-2.6.32.48/block/blk-integrity.c 2009-12-02 22:51:21.000000000 -0500
45827 -+++ linux-2.6.32.48/block/blk-integrity.c 2011-11-12 12:46:42.000000000 -0500
45828 -@@ -278,7 +278,7 @@ static struct attribute *integrity_attrs
45829 - NULL,
45830 - };
45831 -
45832 --static struct sysfs_ops integrity_ops = {
45833 -+static const struct sysfs_ops integrity_ops = {
45834 - .show = &integrity_attr_show,
45835 - .store = &integrity_attr_store,
45836 - };
45837 -diff -urNp linux-2.6.32.48/block/blk-iopoll.c linux-2.6.32.48/block/blk-iopoll.c
45838 ---- linux-2.6.32.48/block/blk-iopoll.c 2009-12-02 22:51:21.000000000 -0500
45839 -+++ linux-2.6.32.48/block/blk-iopoll.c 2011-11-12 12:46:42.000000000 -0500
45840 +diff -urNp linux-3.0.8/block/blk-iopoll.c linux-3.0.8/block/blk-iopoll.c
45841 +--- linux-3.0.8/block/blk-iopoll.c 2011-07-21 22:17:23.000000000 -0400
45842 ++++ linux-3.0.8/block/blk-iopoll.c 2011-08-23 21:47:55.000000000 -0400
45843 @@ -77,7 +77,7 @@ void blk_iopoll_complete(struct blk_iopo
45844 }
45845 EXPORT_SYMBOL(blk_iopoll_complete);
45846 @@ -24899,46 +23149,21 @@ diff -urNp linux-2.6.32.48/block/blk-iopoll.c linux-2.6.32.48/block/blk-iopoll.c
45847 {
45848 struct list_head *list = &__get_cpu_var(blk_cpu_iopoll);
45849 int rearm = 0, budget = blk_iopoll_budget;
45850 -diff -urNp linux-2.6.32.48/block/blk-map.c linux-2.6.32.48/block/blk-map.c
45851 ---- linux-2.6.32.48/block/blk-map.c 2011-11-12 12:44:28.000000000 -0500
45852 -+++ linux-2.6.32.48/block/blk-map.c 2011-11-12 12:46:42.000000000 -0500
45853 -@@ -54,7 +54,7 @@ static int __blk_rq_map_user(struct requ
45854 - * direct dma. else, set up kernel bounce buffers
45855 - */
45856 - uaddr = (unsigned long) ubuf;
45857 -- if (blk_rq_aligned(q, ubuf, len) && !map_data)
45858 -+ if (blk_rq_aligned(q, (__force void *)ubuf, len) && !map_data)
45859 - bio = bio_map_user(q, NULL, uaddr, len, reading, gfp_mask);
45860 - else
45861 - bio = bio_copy_user(q, map_data, uaddr, len, reading, gfp_mask);
45862 -@@ -201,12 +201,13 @@ int blk_rq_map_user_iov(struct request_q
45863 - for (i = 0; i < iov_count; i++) {
45864 - unsigned long uaddr = (unsigned long)iov[i].iov_base;
45865 -
45866 -+ if (!iov[i].iov_len)
45867 -+ return -EINVAL;
45868 -+
45869 - if (uaddr & queue_dma_alignment(q)) {
45870 - unaligned = 1;
45871 - break;
45872 - }
45873 -- if (!iov[i].iov_len)
45874 -- return -EINVAL;
45875 - }
45876 -
45877 - if (unaligned || (q->dma_pad_mask & len) || map_data)
45878 -@@ -299,7 +300,7 @@ int blk_rq_map_kern(struct request_queue
45879 +diff -urNp linux-3.0.8/block/blk-map.c linux-3.0.8/block/blk-map.c
45880 +--- linux-3.0.8/block/blk-map.c 2011-07-21 22:17:23.000000000 -0400
45881 ++++ linux-3.0.8/block/blk-map.c 2011-08-23 21:47:55.000000000 -0400
45882 +@@ -301,7 +301,7 @@ int blk_rq_map_kern(struct request_queue
45883 if (!len || !kbuf)
45884 return -EINVAL;
45885
45886 -- do_copy = !blk_rq_aligned(q, kbuf, len) || object_is_on_stack(kbuf);
45887 -+ do_copy = !blk_rq_aligned(q, kbuf, len) || object_starts_on_stack(kbuf);
45888 +- do_copy = !blk_rq_aligned(q, addr, len) || object_is_on_stack(kbuf);
45889 ++ do_copy = !blk_rq_aligned(q, addr, len) || object_starts_on_stack(kbuf);
45890 if (do_copy)
45891 bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading);
45892 else
45893 -diff -urNp linux-2.6.32.48/block/blk-softirq.c linux-2.6.32.48/block/blk-softirq.c
45894 ---- linux-2.6.32.48/block/blk-softirq.c 2009-12-02 22:51:21.000000000 -0500
45895 -+++ linux-2.6.32.48/block/blk-softirq.c 2011-11-12 12:46:42.000000000 -0500
45896 +diff -urNp linux-3.0.8/block/blk-softirq.c linux-3.0.8/block/blk-softirq.c
45897 +--- linux-3.0.8/block/blk-softirq.c 2011-07-21 22:17:23.000000000 -0400
45898 ++++ linux-3.0.8/block/blk-softirq.c 2011-08-23 21:47:55.000000000 -0400
45899 @@ -17,7 +17,7 @@ static DEFINE_PER_CPU(struct list_head,
45900 * Softirq action handler - move entries to local list and loop over them
45901 * while passing them to the queue registered handler.
45902 @@ -24948,22 +23173,10 @@ diff -urNp linux-2.6.32.48/block/blk-softirq.c linux-2.6.32.48/block/blk-softirq
45903 {
45904 struct list_head *cpu_list, local_list;
45905
45906 -diff -urNp linux-2.6.32.48/block/blk-sysfs.c linux-2.6.32.48/block/blk-sysfs.c
45907 ---- linux-2.6.32.48/block/blk-sysfs.c 2011-11-12 12:44:28.000000000 -0500
45908 -+++ linux-2.6.32.48/block/blk-sysfs.c 2011-11-12 12:46:42.000000000 -0500
45909 -@@ -414,7 +414,7 @@ static void blk_release_queue(struct kob
45910 - kmem_cache_free(blk_requestq_cachep, q);
45911 - }
45912 -
45913 --static struct sysfs_ops queue_sysfs_ops = {
45914 -+static const struct sysfs_ops queue_sysfs_ops = {
45915 - .show = queue_attr_show,
45916 - .store = queue_attr_store,
45917 - };
45918 -diff -urNp linux-2.6.32.48/block/bsg.c linux-2.6.32.48/block/bsg.c
45919 ---- linux-2.6.32.48/block/bsg.c 2011-11-12 12:44:28.000000000 -0500
45920 -+++ linux-2.6.32.48/block/bsg.c 2011-11-12 12:46:42.000000000 -0500
45921 -@@ -175,16 +175,24 @@ static int blk_fill_sgv4_hdr_rq(struct r
45922 +diff -urNp linux-3.0.8/block/bsg.c linux-3.0.8/block/bsg.c
45923 +--- linux-3.0.8/block/bsg.c 2011-07-21 22:17:23.000000000 -0400
45924 ++++ linux-3.0.8/block/bsg.c 2011-10-06 04:17:55.000000000 -0400
45925 +@@ -176,16 +176,24 @@ static int blk_fill_sgv4_hdr_rq(struct r
45926 struct sg_io_v4 *hdr, struct bsg_device *bd,
45927 fmode_t has_write_perm)
45928 {
45929 @@ -24990,7 +23203,16 @@ diff -urNp linux-2.6.32.48/block/bsg.c linux-2.6.32.48/block/bsg.c
45930 if (hdr->subprotocol == BSG_SUB_PROTOCOL_SCSI_CMD) {
45931 if (blk_verify_command(rq->cmd, has_write_perm))
45932 return -EPERM;
45933 -@@ -282,7 +290,7 @@ bsg_map_hdr(struct bsg_device *bd, struc
45934 +@@ -249,7 +257,7 @@ bsg_map_hdr(struct bsg_device *bd, struc
45935 + struct request *rq, *next_rq = NULL;
45936 + int ret, rw;
45937 + unsigned int dxfer_len;
45938 +- void *dxferp = NULL;
45939 ++ void __user *dxferp = NULL;
45940 + struct bsg_class_device *bcd = &q->bsg_dev;
45941 +
45942 + /* if the LLD has been removed then the bsg_unregister_queue will
45943 +@@ -291,7 +299,7 @@ bsg_map_hdr(struct bsg_device *bd, struc
45944 rq->next_rq = next_rq;
45945 next_rq->cmd_type = rq->cmd_type;
45946
45947 @@ -24999,7 +23221,7 @@ diff -urNp linux-2.6.32.48/block/bsg.c linux-2.6.32.48/block/bsg.c
45948 ret = blk_rq_map_user(q, next_rq, NULL, dxferp,
45949 hdr->din_xfer_len, GFP_KERNEL);
45950 if (ret)
45951 -@@ -291,10 +299,10 @@ bsg_map_hdr(struct bsg_device *bd, struc
45952 +@@ -300,10 +308,10 @@ bsg_map_hdr(struct bsg_device *bd, struc
45953
45954 if (hdr->dout_xfer_len) {
45955 dxfer_len = hdr->dout_xfer_len;
45956 @@ -25012,7 +23234,7 @@ diff -urNp linux-2.6.32.48/block/bsg.c linux-2.6.32.48/block/bsg.c
45957 } else
45958 dxfer_len = 0;
45959
45960 -@@ -436,7 +444,7 @@ static int blk_complete_sgv4_hdr_rq(stru
45961 +@@ -445,7 +453,7 @@ static int blk_complete_sgv4_hdr_rq(stru
45962 int len = min_t(unsigned int, hdr->max_response_len,
45963 rq->sense_len);
45964
45965 @@ -25021,9 +23243,9 @@ diff -urNp linux-2.6.32.48/block/bsg.c linux-2.6.32.48/block/bsg.c
45966 rq->sense, len);
45967 if (!ret)
45968 hdr->response_len = len;
45969 -diff -urNp linux-2.6.32.48/block/compat_ioctl.c linux-2.6.32.48/block/compat_ioctl.c
45970 ---- linux-2.6.32.48/block/compat_ioctl.c 2009-12-02 22:51:21.000000000 -0500
45971 -+++ linux-2.6.32.48/block/compat_ioctl.c 2011-11-12 12:46:42.000000000 -0500
45972 +diff -urNp linux-3.0.8/block/compat_ioctl.c linux-3.0.8/block/compat_ioctl.c
45973 +--- linux-3.0.8/block/compat_ioctl.c 2011-07-21 22:17:23.000000000 -0400
45974 ++++ linux-3.0.8/block/compat_ioctl.c 2011-10-06 04:17:55.000000000 -0400
45975 @@ -354,7 +354,7 @@ static int compat_fd_ioctl(struct block_
45976 err |= __get_user(f->spec1, &uf->spec1);
45977 err |= __get_user(f->fmt_gap, &uf->fmt_gap);
45978 @@ -25033,22 +23255,10 @@ diff -urNp linux-2.6.32.48/block/compat_ioctl.c linux-2.6.32.48/block/compat_ioc
45979 if (err) {
45980 err = -EFAULT;
45981 goto out;
45982 -diff -urNp linux-2.6.32.48/block/elevator.c linux-2.6.32.48/block/elevator.c
45983 ---- linux-2.6.32.48/block/elevator.c 2009-12-02 22:51:21.000000000 -0500
45984 -+++ linux-2.6.32.48/block/elevator.c 2011-11-12 12:46:42.000000000 -0500
45985 -@@ -889,7 +889,7 @@ elv_attr_store(struct kobject *kobj, str
45986 - return error;
45987 - }
45988 -
45989 --static struct sysfs_ops elv_sysfs_ops = {
45990 -+static const struct sysfs_ops elv_sysfs_ops = {
45991 - .show = elv_attr_show,
45992 - .store = elv_attr_store,
45993 - };
45994 -diff -urNp linux-2.6.32.48/block/scsi_ioctl.c linux-2.6.32.48/block/scsi_ioctl.c
45995 ---- linux-2.6.32.48/block/scsi_ioctl.c 2011-11-12 12:44:28.000000000 -0500
45996 -+++ linux-2.6.32.48/block/scsi_ioctl.c 2011-11-12 12:46:42.000000000 -0500
45997 -@@ -220,8 +220,20 @@ EXPORT_SYMBOL(blk_verify_command);
45998 +diff -urNp linux-3.0.8/block/scsi_ioctl.c linux-3.0.8/block/scsi_ioctl.c
45999 +--- linux-3.0.8/block/scsi_ioctl.c 2011-07-21 22:17:23.000000000 -0400
46000 ++++ linux-3.0.8/block/scsi_ioctl.c 2011-08-23 21:47:55.000000000 -0400
46001 +@@ -222,8 +222,20 @@ EXPORT_SYMBOL(blk_verify_command);
46002 static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
46003 struct sg_io_hdr *hdr, fmode_t mode)
46004 {
46005 @@ -25070,7 +23280,7 @@ diff -urNp linux-2.6.32.48/block/scsi_ioctl.c linux-2.6.32.48/block/scsi_ioctl.c
46006 if (blk_verify_command(rq->cmd, mode & FMODE_WRITE))
46007 return -EPERM;
46008
46009 -@@ -430,6 +442,8 @@ int sg_scsi_ioctl(struct request_queue *
46010 +@@ -432,6 +444,8 @@ int sg_scsi_ioctl(struct request_queue *
46011 int err;
46012 unsigned int in_len, out_len, bytes, opcode, cmdlen;
46013 char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
46014 @@ -25079,7 +23289,7 @@ diff -urNp linux-2.6.32.48/block/scsi_ioctl.c linux-2.6.32.48/block/scsi_ioctl.c
46015
46016 if (!sic)
46017 return -EINVAL;
46018 -@@ -463,9 +477,18 @@ int sg_scsi_ioctl(struct request_queue *
46019 +@@ -465,9 +479,18 @@ int sg_scsi_ioctl(struct request_queue *
46020 */
46021 err = -EFAULT;
46022 rq->cmd_len = cmdlen;
46023 @@ -25099,10 +23309,10 @@ diff -urNp linux-2.6.32.48/block/scsi_ioctl.c linux-2.6.32.48/block/scsi_ioctl.c
46024 if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
46025 goto error;
46026
46027 -diff -urNp linux-2.6.32.48/crypto/cryptd.c linux-2.6.32.48/crypto/cryptd.c
46028 ---- linux-2.6.32.48/crypto/cryptd.c 2009-12-02 22:51:21.000000000 -0500
46029 -+++ linux-2.6.32.48/crypto/cryptd.c 2011-11-12 12:46:42.000000000 -0500
46030 -@@ -50,7 +50,7 @@ struct cryptd_blkcipher_ctx {
46031 +diff -urNp linux-3.0.8/crypto/cryptd.c linux-3.0.8/crypto/cryptd.c
46032 +--- linux-3.0.8/crypto/cryptd.c 2011-07-21 22:17:23.000000000 -0400
46033 ++++ linux-3.0.8/crypto/cryptd.c 2011-08-23 21:47:55.000000000 -0400
46034 +@@ -63,7 +63,7 @@ struct cryptd_blkcipher_ctx {
46035
46036 struct cryptd_blkcipher_request_ctx {
46037 crypto_completion_t complete;
46038 @@ -25111,9 +23321,18 @@ diff -urNp linux-2.6.32.48/crypto/cryptd.c linux-2.6.32.48/crypto/cryptd.c
46039
46040 struct cryptd_hash_ctx {
46041 struct crypto_shash *child;
46042 -diff -urNp linux-2.6.32.48/crypto/gf128mul.c linux-2.6.32.48/crypto/gf128mul.c
46043 ---- linux-2.6.32.48/crypto/gf128mul.c 2009-12-02 22:51:21.000000000 -0500
46044 -+++ linux-2.6.32.48/crypto/gf128mul.c 2011-11-12 12:46:42.000000000 -0500
46045 +@@ -80,7 +80,7 @@ struct cryptd_aead_ctx {
46046 +
46047 + struct cryptd_aead_request_ctx {
46048 + crypto_completion_t complete;
46049 +-};
46050 ++} __no_const;
46051 +
46052 + static void cryptd_queue_worker(struct work_struct *work);
46053 +
46054 +diff -urNp linux-3.0.8/crypto/gf128mul.c linux-3.0.8/crypto/gf128mul.c
46055 +--- linux-3.0.8/crypto/gf128mul.c 2011-07-21 22:17:23.000000000 -0400
46056 ++++ linux-3.0.8/crypto/gf128mul.c 2011-08-23 21:47:55.000000000 -0400
46057 @@ -182,7 +182,7 @@ void gf128mul_lle(be128 *r, const be128
46058 for (i = 0; i < 7; ++i)
46059 gf128mul_x_lle(&p[i + 1], &p[i]);
46060 @@ -25132,18 +23351,10 @@ diff -urNp linux-2.6.32.48/crypto/gf128mul.c linux-2.6.32.48/crypto/gf128mul.c
46061 for (i = 0;;) {
46062 u8 ch = ((u8 *)b)[i];
46063
46064 -diff -urNp linux-2.6.32.48/crypto/serpent.c linux-2.6.32.48/crypto/serpent.c
46065 ---- linux-2.6.32.48/crypto/serpent.c 2009-12-02 22:51:21.000000000 -0500
46066 -+++ linux-2.6.32.48/crypto/serpent.c 2011-11-12 12:46:42.000000000 -0500
46067 -@@ -21,6 +21,7 @@
46068 - #include <asm/byteorder.h>
46069 - #include <linux/crypto.h>
46070 - #include <linux/types.h>
46071 -+#include <linux/sched.h>
46072 -
46073 - /* Key is padded to the maximum of 256 bits before round key generation.
46074 - * Any key length <= 256 bits (32 bytes) is allowed by the algorithm.
46075 -@@ -224,6 +225,8 @@ static int serpent_setkey(struct crypto_
46076 +diff -urNp linux-3.0.8/crypto/serpent.c linux-3.0.8/crypto/serpent.c
46077 +--- linux-3.0.8/crypto/serpent.c 2011-07-21 22:17:23.000000000 -0400
46078 ++++ linux-3.0.8/crypto/serpent.c 2011-08-23 21:48:14.000000000 -0400
46079 +@@ -224,6 +224,8 @@ static int serpent_setkey(struct crypto_
46080 u32 r0,r1,r2,r3,r4;
46081 int i;
46082
46083 @@ -25152,47 +23363,30 @@ diff -urNp linux-2.6.32.48/crypto/serpent.c linux-2.6.32.48/crypto/serpent.c
46084 /* Copy key, add padding */
46085
46086 for (i = 0; i < keylen; ++i)
46087 -diff -urNp linux-2.6.32.48/Documentation/dontdiff linux-2.6.32.48/Documentation/dontdiff
46088 ---- linux-2.6.32.48/Documentation/dontdiff 2009-12-02 22:51:21.000000000 -0500
46089 -+++ linux-2.6.32.48/Documentation/dontdiff 2011-11-12 12:46:42.000000000 -0500
46090 -@@ -1,13 +1,16 @@
46091 - *.a
46092 - *.aux
46093 - *.bin
46094 -+*.cis
46095 +diff -urNp linux-3.0.8/Documentation/dontdiff linux-3.0.8/Documentation/dontdiff
46096 +--- linux-3.0.8/Documentation/dontdiff 2011-07-21 22:17:23.000000000 -0400
46097 ++++ linux-3.0.8/Documentation/dontdiff 2011-10-20 04:46:01.000000000 -0400
46098 +@@ -5,6 +5,7 @@
46099 + *.cis
46100 *.cpio
46101 *.csp
46102 +*.dbg
46103 *.dsp
46104 *.dvi
46105 *.elf
46106 - *.eps
46107 - *.fw
46108 -+*.gcno
46109 - *.gen.S
46110 - *.gif
46111 - *.grep
46112 -@@ -38,8 +41,10 @@
46113 +@@ -48,9 +49,11 @@
46114 *.tab.h
46115 *.tex
46116 *.ver
46117 +*.vim
46118 *.xml
46119 + *.xz
46120 *_MODULES
46121 +*_reg_safe.h
46122 *_vga16.c
46123 *~
46124 - *.9
46125 -@@ -49,11 +54,16 @@
46126 - 53c700_d.h
46127 - CVS
46128 - ChangeSet
46129 -+GPATH
46130 -+GRTAGS
46131 -+GSYMS
46132 -+GTAGS
46133 - Image
46134 - Kerntypes
46135 + \#*#
46136 +@@ -70,6 +73,7 @@ Kerntypes
46137 Module.markers
46138 Module.symvers
46139 PENDING
46140 @@ -25200,68 +23394,82 @@ diff -urNp linux-2.6.32.48/Documentation/dontdiff linux-2.6.32.48/Documentation/
46141 SCCS
46142 System.map*
46143 TAGS
46144 -@@ -76,7 +86,11 @@ btfixupprep
46145 - build
46146 - bvmlinux
46147 - bzImage*
46148 -+capability_names.h
46149 -+capflags.c
46150 +@@ -98,14 +102,18 @@ bzImage*
46151 + capability_names.h
46152 + capflags.c
46153 classlist.h*
46154 +clut_vga16.c
46155 +common-cmds.h
46156 comp*.log
46157 compile.h*
46158 conf
46159 -@@ -97,19 +111,21 @@ elfconfig.h*
46160 - fixdep
46161 - fore200e_mkfirm
46162 - fore200e_pca_fw.c*
46163 -+gate.lds
46164 + config
46165 + config-*
46166 + config_data.h*
46167 ++config.c
46168 + config.mak
46169 + config.mak.autogen
46170 ++config.tmp
46171 + conmakehash
46172 + consolemap_deftbl.c*
46173 + cpustr.h
46174 +@@ -126,12 +134,14 @@ fore200e_pca_fw.c*
46175 gconf
46176 + gconf.glade.h
46177 gen-devlist
46178 ++gen-kdb_cmds.c
46179 gen_crc32table
46180 gen_init_cpio
46181 + generated
46182 + genheaders
46183 genksyms
46184 *_gray256.c
46185 +hash
46186 - ihex2fw
46187 - ikconfig.h*
46188 - initramfs_data.cpio
46189 -+initramfs_data.cpio.bz2
46190 - initramfs_data.cpio.gz
46191 - initramfs_list
46192 + hpet_example
46193 + hugepage-mmap
46194 + hugepage-shm
46195 +@@ -146,7 +156,7 @@ int32.c
46196 + int4.c
46197 + int8.c
46198 kallsyms
46199 -kconfig
46200 ++kern_constants.h
46201 keywords.c
46202 ksym.c*
46203 ksym.h*
46204 -@@ -133,7 +149,9 @@ mkboot
46205 +@@ -154,7 +164,6 @@ kxgettext
46206 + lkc_defs.h
46207 + lex.c
46208 + lex.*.c
46209 +-linux
46210 + logo_*.c
46211 + logo_*_clut224.c
46212 + logo_*_mono.c
46213 +@@ -166,7 +175,6 @@ machtypes.h
46214 + map
46215 + map_hugetlb
46216 + maui_boot.h
46217 +-media
46218 + mconf
46219 + miboot*
46220 + mk_elfconfig
46221 +@@ -174,6 +182,7 @@ mkboot
46222 mkbugboot
46223 mkcpustr
46224 mkdep
46225 +mkpiggy
46226 mkprep
46227 -+mkregtable
46228 + mkregtable
46229 mktables
46230 - mktree
46231 - modpost
46232 -@@ -149,6 +167,7 @@ patches*
46233 - pca200e.bin
46234 - pca200e_ecd.bin2
46235 - piggy.gz
46236 -+piggy.S
46237 - piggyback
46238 - pnmtologo
46239 - ppc_defs.h*
46240 -@@ -157,12 +176,15 @@ qconf
46241 - raid6altivec*.c
46242 - raid6int*.c
46243 - raid6tables.c
46244 +@@ -209,6 +218,7 @@ r300_reg_safe.h
46245 + r420_reg_safe.h
46246 + r600_reg_safe.h
46247 + recordmcount
46248 +regdb.c
46249 relocs
46250 -+rlim_names.h
46251 - series
46252 - setup
46253 + rlim_names.h
46254 + rn50_reg_safe.h
46255 +@@ -219,6 +229,7 @@ setup
46256 setup.bin
46257 setup.elf
46258 sImage
46259 @@ -25269,17 +23477,25 @@ diff -urNp linux-2.6.32.48/Documentation/dontdiff linux-2.6.32.48/Documentation/
46260 sm_tbl*
46261 split-include
46262 syscalltab.h
46263 -@@ -186,14 +208,20 @@ version.h*
46264 - vmlinux
46265 +@@ -229,6 +240,7 @@ tftpboot.img
46266 + timeconst.h
46267 + times.h*
46268 + trix_boot.h
46269 ++user_constants.h
46270 + utsrelease.h*
46271 + vdso-syms.lds
46272 + vdso.lds
46273 +@@ -246,7 +258,9 @@ vmlinux
46274 vmlinux-*
46275 vmlinux.aout
46276 -+vmlinux.bin.all
46277 + vmlinux.bin.all
46278 +vmlinux.bin.bz2
46279 vmlinux.lds
46280 +vmlinux.relocs
46281 -+voffset.h
46282 + vmlinuz
46283 + voffset.h
46284 vsyscall.lds
46285 - vsyscall_32.lds
46286 +@@ -254,6 +268,7 @@ vsyscall_32.lds
46287 wanxlfw.inc
46288 uImage
46289 unifdef
46290 @@ -25287,13 +23503,10 @@ diff -urNp linux-2.6.32.48/Documentation/dontdiff linux-2.6.32.48/Documentation/
46291 wakeup.bin
46292 wakeup.elf
46293 wakeup.lds
46294 - zImage*
46295 - zconf.hash.c
46296 -+zoffset.h
46297 -diff -urNp linux-2.6.32.48/Documentation/kernel-parameters.txt linux-2.6.32.48/Documentation/kernel-parameters.txt
46298 ---- linux-2.6.32.48/Documentation/kernel-parameters.txt 2011-11-12 12:44:28.000000000 -0500
46299 -+++ linux-2.6.32.48/Documentation/kernel-parameters.txt 2011-11-12 12:46:42.000000000 -0500
46300 -@@ -1837,6 +1837,13 @@ and is between 256 and 4096 characters.
46301 +diff -urNp linux-3.0.8/Documentation/kernel-parameters.txt linux-3.0.8/Documentation/kernel-parameters.txt
46302 +--- linux-3.0.8/Documentation/kernel-parameters.txt 2011-07-21 22:17:23.000000000 -0400
46303 ++++ linux-3.0.8/Documentation/kernel-parameters.txt 2011-08-23 21:47:55.000000000 -0400
46304 +@@ -1883,6 +1883,13 @@ bytes respectively. Such letter suffixes
46305 the specified number of seconds. This is to be used if
46306 your oopses keep scrolling off the screen.
46307
46308 @@ -25307,105 +23520,98 @@ diff -urNp linux-2.6.32.48/Documentation/kernel-parameters.txt linux-2.6.32.48/D
46309 pcbit= [HW,ISDN]
46310
46311 pcd. [PARIDE]
46312 -diff -urNp linux-2.6.32.48/drivers/acpi/acpi_pad.c linux-2.6.32.48/drivers/acpi/acpi_pad.c
46313 ---- linux-2.6.32.48/drivers/acpi/acpi_pad.c 2009-12-02 22:51:21.000000000 -0500
46314 -+++ linux-2.6.32.48/drivers/acpi/acpi_pad.c 2011-11-12 12:46:42.000000000 -0500
46315 -@@ -30,7 +30,7 @@
46316 - #include <acpi/acpi_bus.h>
46317 - #include <acpi/acpi_drivers.h>
46318 -
46319 --#define ACPI_PROCESSOR_AGGREGATOR_CLASS "processor_aggregator"
46320 -+#define ACPI_PROCESSOR_AGGREGATOR_CLASS "acpi_pad"
46321 - #define ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME "Processor Aggregator"
46322 - #define ACPI_PROCESSOR_AGGREGATOR_NOTIFY 0x80
46323 - static DEFINE_MUTEX(isolated_cpus_lock);
46324 -diff -urNp linux-2.6.32.48/drivers/acpi/battery.c linux-2.6.32.48/drivers/acpi/battery.c
46325 ---- linux-2.6.32.48/drivers/acpi/battery.c 2009-12-02 22:51:21.000000000 -0500
46326 -+++ linux-2.6.32.48/drivers/acpi/battery.c 2011-11-12 12:46:42.000000000 -0500
46327 -@@ -763,7 +763,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
46328 - }
46329 -
46330 - static struct battery_file {
46331 -- struct file_operations ops;
46332 -+ const struct file_operations ops;
46333 - mode_t mode;
46334 - const char *name;
46335 - } acpi_battery_file[] = {
46336 -diff -urNp linux-2.6.32.48/drivers/acpi/dock.c linux-2.6.32.48/drivers/acpi/dock.c
46337 ---- linux-2.6.32.48/drivers/acpi/dock.c 2009-12-02 22:51:21.000000000 -0500
46338 -+++ linux-2.6.32.48/drivers/acpi/dock.c 2011-11-12 12:46:42.000000000 -0500
46339 -@@ -77,7 +77,7 @@ struct dock_dependent_device {
46340 - struct list_head list;
46341 - struct list_head hotplug_list;
46342 - acpi_handle handle;
46343 -- struct acpi_dock_ops *ops;
46344 -+ const struct acpi_dock_ops *ops;
46345 - void *context;
46346 - };
46347 -
46348 -@@ -605,7 +605,7 @@ EXPORT_SYMBOL_GPL(unregister_dock_notifi
46349 - * the dock driver after _DCK is executed.
46350 +diff -urNp linux-3.0.8/drivers/acpi/apei/cper.c linux-3.0.8/drivers/acpi/apei/cper.c
46351 +--- linux-3.0.8/drivers/acpi/apei/cper.c 2011-07-21 22:17:23.000000000 -0400
46352 ++++ linux-3.0.8/drivers/acpi/apei/cper.c 2011-08-23 21:47:55.000000000 -0400
46353 +@@ -38,12 +38,12 @@
46354 */
46355 - int
46356 --register_hotplug_dock_device(acpi_handle handle, struct acpi_dock_ops *ops,
46357 -+register_hotplug_dock_device(acpi_handle handle, const struct acpi_dock_ops *ops,
46358 - void *context)
46359 - {
46360 - struct dock_dependent_device *dd;
46361 -diff -urNp linux-2.6.32.48/drivers/acpi/osl.c linux-2.6.32.48/drivers/acpi/osl.c
46362 ---- linux-2.6.32.48/drivers/acpi/osl.c 2009-12-02 22:51:21.000000000 -0500
46363 -+++ linux-2.6.32.48/drivers/acpi/osl.c 2011-11-12 12:46:42.000000000 -0500
46364 -@@ -523,6 +523,8 @@ acpi_os_read_memory(acpi_physical_addres
46365 - void __iomem *virt_addr;
46366 -
46367 - virt_addr = ioremap(phys_addr, width);
46368 -+ if (!virt_addr)
46369 -+ return AE_NO_MEMORY;
46370 - if (!value)
46371 - value = &dummy;
46372 -
46373 -@@ -551,6 +553,8 @@ acpi_os_write_memory(acpi_physical_addre
46374 - void __iomem *virt_addr;
46375 -
46376 - virt_addr = ioremap(phys_addr, width);
46377 -+ if (!virt_addr)
46378 -+ return AE_NO_MEMORY;
46379 -
46380 - switch (width) {
46381 - case 8:
46382 -diff -urNp linux-2.6.32.48/drivers/acpi/power_meter.c linux-2.6.32.48/drivers/acpi/power_meter.c
46383 ---- linux-2.6.32.48/drivers/acpi/power_meter.c 2011-11-12 12:44:28.000000000 -0500
46384 -+++ linux-2.6.32.48/drivers/acpi/power_meter.c 2011-11-12 12:46:42.000000000 -0500
46385 -@@ -315,8 +315,6 @@ static ssize_t set_trip(struct device *d
46386 - return res;
46387 + u64 cper_next_record_id(void)
46388 + {
46389 +- static atomic64_t seq;
46390 ++ static atomic64_unchecked_t seq;
46391
46392 - temp /= 1000;
46393 -- if (temp < 0)
46394 -- return -EINVAL;
46395 +- if (!atomic64_read(&seq))
46396 +- atomic64_set(&seq, ((u64)get_seconds()) << 32);
46397 ++ if (!atomic64_read_unchecked(&seq))
46398 ++ atomic64_set_unchecked(&seq, ((u64)get_seconds()) << 32);
46399
46400 - mutex_lock(&resource->lock);
46401 - resource->trip[attr->index - 7] = temp;
46402 -diff -urNp linux-2.6.32.48/drivers/acpi/proc.c linux-2.6.32.48/drivers/acpi/proc.c
46403 ---- linux-2.6.32.48/drivers/acpi/proc.c 2009-12-02 22:51:21.000000000 -0500
46404 -+++ linux-2.6.32.48/drivers/acpi/proc.c 2011-11-12 12:46:42.000000000 -0500
46405 -@@ -391,20 +391,15 @@ acpi_system_write_wakeup_device(struct f
46406 +- return atomic64_inc_return(&seq);
46407 ++ return atomic64_inc_return_unchecked(&seq);
46408 + }
46409 + EXPORT_SYMBOL_GPL(cper_next_record_id);
46410 +
46411 +diff -urNp linux-3.0.8/drivers/acpi/ec_sys.c linux-3.0.8/drivers/acpi/ec_sys.c
46412 +--- linux-3.0.8/drivers/acpi/ec_sys.c 2011-07-21 22:17:23.000000000 -0400
46413 ++++ linux-3.0.8/drivers/acpi/ec_sys.c 2011-08-24 19:06:55.000000000 -0400
46414 +@@ -11,6 +11,7 @@
46415 + #include <linux/kernel.h>
46416 + #include <linux/acpi.h>
46417 + #include <linux/debugfs.h>
46418 ++#include <asm/uaccess.h>
46419 + #include "internal.h"
46420 +
46421 + MODULE_AUTHOR("Thomas Renninger <trenn@××××.de>");
46422 +@@ -39,7 +40,7 @@ static ssize_t acpi_ec_read_io(struct fi
46423 + * struct acpi_ec *ec = ((struct seq_file *)f->private_data)->private;
46424 + */
46425 + unsigned int size = EC_SPACE_SIZE;
46426 +- u8 *data = (u8 *) buf;
46427 ++ u8 data;
46428 + loff_t init_off = *off;
46429 + int err = 0;
46430 +
46431 +@@ -52,9 +53,11 @@ static ssize_t acpi_ec_read_io(struct fi
46432 + size = count;
46433 +
46434 + while (size) {
46435 +- err = ec_read(*off, &data[*off - init_off]);
46436 ++ err = ec_read(*off, &data);
46437 + if (err)
46438 + return err;
46439 ++ if (put_user(data, &buf[*off - init_off]))
46440 ++ return -EFAULT;
46441 + *off += 1;
46442 + size--;
46443 + }
46444 +@@ -70,7 +73,6 @@ static ssize_t acpi_ec_write_io(struct f
46445 +
46446 + unsigned int size = count;
46447 + loff_t init_off = *off;
46448 +- u8 *data = (u8 *) buf;
46449 + int err = 0;
46450 +
46451 + if (*off >= EC_SPACE_SIZE)
46452 +@@ -81,7 +83,9 @@ static ssize_t acpi_ec_write_io(struct f
46453 + }
46454 +
46455 + while (size) {
46456 +- u8 byte_write = data[*off - init_off];
46457 ++ u8 byte_write;
46458 ++ if (get_user(byte_write, &buf[*off - init_off]))
46459 ++ return -EFAULT;
46460 + err = ec_write(*off, byte_write);
46461 + if (err)
46462 + return err;
46463 +diff -urNp linux-3.0.8/drivers/acpi/proc.c linux-3.0.8/drivers/acpi/proc.c
46464 +--- linux-3.0.8/drivers/acpi/proc.c 2011-07-21 22:17:23.000000000 -0400
46465 ++++ linux-3.0.8/drivers/acpi/proc.c 2011-08-23 21:47:55.000000000 -0400
46466 +@@ -342,19 +342,13 @@ acpi_system_write_wakeup_device(struct f
46467 size_t count, loff_t * ppos)
46468 {
46469 struct list_head *node, *next;
46470 - char strbuf[5];
46471 - char str[5] = "";
46472 - unsigned int len = count;
46473 -+ char strbuf[5] = {0};
46474 - struct acpi_device *found_dev = NULL;
46475 -
46476 +-
46477 - if (len > 4)
46478 - len = 4;
46479 - if (len < 0)
46480 - return -EFAULT;
46481 -+ if (count > 4)
46482 -+ count = 4;
46483 ++ char strbuf[5] = {0};
46484
46485 - if (copy_from_user(strbuf, buffer, len))
46486 ++ if (count > 4)
46487 ++ count = 4;
46488 + if (copy_from_user(strbuf, buffer, count))
46489 return -EFAULT;
46490 - strbuf[len] = '\0';
46491 @@ -25414,196 +23620,31 @@ diff -urNp linux-2.6.32.48/drivers/acpi/proc.c linux-2.6.32.48/drivers/acpi/proc
46492
46493 mutex_lock(&acpi_device_lock);
46494 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
46495 -@@ -413,7 +408,7 @@ acpi_system_write_wakeup_device(struct f
46496 +@@ -363,7 +357,7 @@ acpi_system_write_wakeup_device(struct f
46497 if (!dev->wakeup.flags.valid)
46498 continue;
46499
46500 - if (!strncmp(dev->pnp.bus_id, str, 4)) {
46501 + if (!strncmp(dev->pnp.bus_id, strbuf, 4)) {
46502 - dev->wakeup.state.enabled =
46503 - dev->wakeup.state.enabled ? 0 : 1;
46504 - found_dev = dev;
46505 -diff -urNp linux-2.6.32.48/drivers/acpi/processor_core.c linux-2.6.32.48/drivers/acpi/processor_core.c
46506 ---- linux-2.6.32.48/drivers/acpi/processor_core.c 2011-11-12 12:44:28.000000000 -0500
46507 -+++ linux-2.6.32.48/drivers/acpi/processor_core.c 2011-11-12 12:46:42.000000000 -0500
46508 -@@ -790,7 +790,7 @@ static int __cpuinit acpi_processor_add(
46509 + if (device_can_wakeup(&dev->dev)) {
46510 + bool enable = !device_may_wakeup(&dev->dev);
46511 + device_set_wakeup_enable(&dev->dev, enable);
46512 +diff -urNp linux-3.0.8/drivers/acpi/processor_driver.c linux-3.0.8/drivers/acpi/processor_driver.c
46513 +--- linux-3.0.8/drivers/acpi/processor_driver.c 2011-07-21 22:17:23.000000000 -0400
46514 ++++ linux-3.0.8/drivers/acpi/processor_driver.c 2011-08-23 21:47:55.000000000 -0400
46515 +@@ -473,7 +473,7 @@ static int __cpuinit acpi_processor_add(
46516 return 0;
46517 - }
46518 + #endif
46519
46520 - BUG_ON((pr->id >= nr_cpu_ids) || (pr->id < 0));
46521 + BUG_ON(pr->id >= nr_cpu_ids);
46522
46523 /*
46524 * Buggy BIOS check
46525 -diff -urNp linux-2.6.32.48/drivers/acpi/sbshc.c linux-2.6.32.48/drivers/acpi/sbshc.c
46526 ---- linux-2.6.32.48/drivers/acpi/sbshc.c 2009-12-02 22:51:21.000000000 -0500
46527 -+++ linux-2.6.32.48/drivers/acpi/sbshc.c 2011-11-12 12:46:42.000000000 -0500
46528 -@@ -17,7 +17,7 @@
46529 -
46530 - #define PREFIX "ACPI: "
46531 -
46532 --#define ACPI_SMB_HC_CLASS "smbus_host_controller"
46533 -+#define ACPI_SMB_HC_CLASS "smbus_host_ctl"
46534 - #define ACPI_SMB_HC_DEVICE_NAME "ACPI SMBus HC"
46535 -
46536 - struct acpi_smb_hc {
46537 -diff -urNp linux-2.6.32.48/drivers/acpi/sleep.c linux-2.6.32.48/drivers/acpi/sleep.c
46538 ---- linux-2.6.32.48/drivers/acpi/sleep.c 2011-11-12 12:44:28.000000000 -0500
46539 -+++ linux-2.6.32.48/drivers/acpi/sleep.c 2011-11-12 12:46:42.000000000 -0500
46540 -@@ -283,7 +283,7 @@ static int acpi_suspend_state_valid(susp
46541 - }
46542 - }
46543 -
46544 --static struct platform_suspend_ops acpi_suspend_ops = {
46545 -+static const struct platform_suspend_ops acpi_suspend_ops = {
46546 - .valid = acpi_suspend_state_valid,
46547 - .begin = acpi_suspend_begin,
46548 - .prepare_late = acpi_pm_prepare,
46549 -@@ -311,7 +311,7 @@ static int acpi_suspend_begin_old(suspen
46550 - * The following callbacks are used if the pre-ACPI 2.0 suspend ordering has
46551 - * been requested.
46552 - */
46553 --static struct platform_suspend_ops acpi_suspend_ops_old = {
46554 -+static const struct platform_suspend_ops acpi_suspend_ops_old = {
46555 - .valid = acpi_suspend_state_valid,
46556 - .begin = acpi_suspend_begin_old,
46557 - .prepare_late = acpi_pm_disable_gpes,
46558 -@@ -460,7 +460,7 @@ static void acpi_pm_enable_gpes(void)
46559 - acpi_enable_all_runtime_gpes();
46560 - }
46561 -
46562 --static struct platform_hibernation_ops acpi_hibernation_ops = {
46563 -+static const struct platform_hibernation_ops acpi_hibernation_ops = {
46564 - .begin = acpi_hibernation_begin,
46565 - .end = acpi_pm_end,
46566 - .pre_snapshot = acpi_hibernation_pre_snapshot,
46567 -@@ -513,7 +513,7 @@ static int acpi_hibernation_pre_snapshot
46568 - * The following callbacks are used if the pre-ACPI 2.0 suspend ordering has
46569 - * been requested.
46570 - */
46571 --static struct platform_hibernation_ops acpi_hibernation_ops_old = {
46572 -+static const struct platform_hibernation_ops acpi_hibernation_ops_old = {
46573 - .begin = acpi_hibernation_begin_old,
46574 - .end = acpi_pm_end,
46575 - .pre_snapshot = acpi_hibernation_pre_snapshot_old,
46576 -diff -urNp linux-2.6.32.48/drivers/acpi/video.c linux-2.6.32.48/drivers/acpi/video.c
46577 ---- linux-2.6.32.48/drivers/acpi/video.c 2009-12-02 22:51:21.000000000 -0500
46578 -+++ linux-2.6.32.48/drivers/acpi/video.c 2011-11-12 12:46:42.000000000 -0500
46579 -@@ -359,7 +359,7 @@ static int acpi_video_set_brightness(str
46580 - vd->brightness->levels[request_level]);
46581 - }
46582 -
46583 --static struct backlight_ops acpi_backlight_ops = {
46584 -+static const struct backlight_ops acpi_backlight_ops = {
46585 - .get_brightness = acpi_video_get_brightness,
46586 - .update_status = acpi_video_set_brightness,
46587 - };
46588 -diff -urNp linux-2.6.32.48/drivers/ata/ahci.c linux-2.6.32.48/drivers/ata/ahci.c
46589 ---- linux-2.6.32.48/drivers/ata/ahci.c 2011-11-12 12:44:28.000000000 -0500
46590 -+++ linux-2.6.32.48/drivers/ata/ahci.c 2011-11-12 12:46:42.000000000 -0500
46591 -@@ -387,7 +387,7 @@ static struct scsi_host_template ahci_sh
46592 - .sdev_attrs = ahci_sdev_attrs,
46593 - };
46594 -
46595 --static struct ata_port_operations ahci_ops = {
46596 -+static const struct ata_port_operations ahci_ops = {
46597 - .inherits = &sata_pmp_port_ops,
46598 -
46599 - .qc_defer = sata_pmp_qc_defer_cmd_switch,
46600 -@@ -424,17 +424,17 @@ static struct ata_port_operations ahci_o
46601 - .port_stop = ahci_port_stop,
46602 - };
46603 -
46604 --static struct ata_port_operations ahci_vt8251_ops = {
46605 -+static const struct ata_port_operations ahci_vt8251_ops = {
46606 - .inherits = &ahci_ops,
46607 - .hardreset = ahci_vt8251_hardreset,
46608 - };
46609 -
46610 --static struct ata_port_operations ahci_p5wdh_ops = {
46611 -+static const struct ata_port_operations ahci_p5wdh_ops = {
46612 - .inherits = &ahci_ops,
46613 - .hardreset = ahci_p5wdh_hardreset,
46614 - };
46615 -
46616 --static struct ata_port_operations ahci_sb600_ops = {
46617 -+static const struct ata_port_operations ahci_sb600_ops = {
46618 - .inherits = &ahci_ops,
46619 - .softreset = ahci_sb600_softreset,
46620 - .pmp_softreset = ahci_sb600_softreset,
46621 -diff -urNp linux-2.6.32.48/drivers/ata/ata_generic.c linux-2.6.32.48/drivers/ata/ata_generic.c
46622 ---- linux-2.6.32.48/drivers/ata/ata_generic.c 2011-11-12 12:44:28.000000000 -0500
46623 -+++ linux-2.6.32.48/drivers/ata/ata_generic.c 2011-11-12 12:46:42.000000000 -0500
46624 -@@ -104,7 +104,7 @@ static struct scsi_host_template generic
46625 - ATA_BMDMA_SHT(DRV_NAME),
46626 - };
46627 -
46628 --static struct ata_port_operations generic_port_ops = {
46629 -+static const struct ata_port_operations generic_port_ops = {
46630 - .inherits = &ata_bmdma_port_ops,
46631 - .cable_detect = ata_cable_unknown,
46632 - .set_mode = generic_set_mode,
46633 -diff -urNp linux-2.6.32.48/drivers/ata/ata_piix.c linux-2.6.32.48/drivers/ata/ata_piix.c
46634 ---- linux-2.6.32.48/drivers/ata/ata_piix.c 2011-11-12 12:44:28.000000000 -0500
46635 -+++ linux-2.6.32.48/drivers/ata/ata_piix.c 2011-11-12 12:46:42.000000000 -0500
46636 -@@ -318,7 +318,7 @@ static struct scsi_host_template piix_sh
46637 - ATA_BMDMA_SHT(DRV_NAME),
46638 - };
46639 -
46640 --static struct ata_port_operations piix_pata_ops = {
46641 -+static const struct ata_port_operations piix_pata_ops = {
46642 - .inherits = &ata_bmdma32_port_ops,
46643 - .cable_detect = ata_cable_40wire,
46644 - .set_piomode = piix_set_piomode,
46645 -@@ -326,22 +326,22 @@ static struct ata_port_operations piix_p
46646 - .prereset = piix_pata_prereset,
46647 - };
46648 -
46649 --static struct ata_port_operations piix_vmw_ops = {
46650 -+static const struct ata_port_operations piix_vmw_ops = {
46651 - .inherits = &piix_pata_ops,
46652 - .bmdma_status = piix_vmw_bmdma_status,
46653 - };
46654 -
46655 --static struct ata_port_operations ich_pata_ops = {
46656 -+static const struct ata_port_operations ich_pata_ops = {
46657 - .inherits = &piix_pata_ops,
46658 - .cable_detect = ich_pata_cable_detect,
46659 - .set_dmamode = ich_set_dmamode,
46660 - };
46661 -
46662 --static struct ata_port_operations piix_sata_ops = {
46663 -+static const struct ata_port_operations piix_sata_ops = {
46664 - .inherits = &ata_bmdma_port_ops,
46665 - };
46666 -
46667 --static struct ata_port_operations piix_sidpr_sata_ops = {
46668 -+static const struct ata_port_operations piix_sidpr_sata_ops = {
46669 - .inherits = &piix_sata_ops,
46670 - .hardreset = sata_std_hardreset,
46671 - .scr_read = piix_sidpr_scr_read,
46672 -diff -urNp linux-2.6.32.48/drivers/ata/libata-acpi.c linux-2.6.32.48/drivers/ata/libata-acpi.c
46673 ---- linux-2.6.32.48/drivers/ata/libata-acpi.c 2009-12-02 22:51:21.000000000 -0500
46674 -+++ linux-2.6.32.48/drivers/ata/libata-acpi.c 2011-11-12 12:46:42.000000000 -0500
46675 -@@ -223,12 +223,12 @@ static void ata_acpi_dev_uevent(acpi_han
46676 - ata_acpi_uevent(dev->link->ap, dev, event);
46677 - }
46678 -
46679 --static struct acpi_dock_ops ata_acpi_dev_dock_ops = {
46680 -+static const struct acpi_dock_ops ata_acpi_dev_dock_ops = {
46681 - .handler = ata_acpi_dev_notify_dock,
46682 - .uevent = ata_acpi_dev_uevent,
46683 - };
46684 -
46685 --static struct acpi_dock_ops ata_acpi_ap_dock_ops = {
46686 -+static const struct acpi_dock_ops ata_acpi_ap_dock_ops = {
46687 - .handler = ata_acpi_ap_notify_dock,
46688 - .uevent = ata_acpi_ap_uevent,
46689 - };
46690 -diff -urNp linux-2.6.32.48/drivers/ata/libata-core.c linux-2.6.32.48/drivers/ata/libata-core.c
46691 ---- linux-2.6.32.48/drivers/ata/libata-core.c 2011-11-12 12:44:28.000000000 -0500
46692 -+++ linux-2.6.32.48/drivers/ata/libata-core.c 2011-11-12 12:46:42.000000000 -0500
46693 -@@ -4954,7 +4954,7 @@ void ata_qc_free(struct ata_queued_cmd *
46694 +diff -urNp linux-3.0.8/drivers/ata/libata-core.c linux-3.0.8/drivers/ata/libata-core.c
46695 +--- linux-3.0.8/drivers/ata/libata-core.c 2011-07-21 22:17:23.000000000 -0400
46696 ++++ linux-3.0.8/drivers/ata/libata-core.c 2011-08-23 21:47:55.000000000 -0400
46697 +@@ -4753,7 +4753,7 @@ void ata_qc_free(struct ata_queued_cmd *
46698 struct ata_port *ap;
46699 unsigned int tag;
46700
46701 @@ -25612,7 +23653,7 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-core.c linux-2.6.32.48/drivers/ata
46702 ap = qc->ap;
46703
46704 qc->flags = 0;
46705 -@@ -4970,7 +4970,7 @@ void __ata_qc_complete(struct ata_queued
46706 +@@ -4769,7 +4769,7 @@ void __ata_qc_complete(struct ata_queued
46707 struct ata_port *ap;
46708 struct ata_link *link;
46709
46710 @@ -25621,16 +23662,7 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-core.c linux-2.6.32.48/drivers/ata
46711 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
46712 ap = qc->ap;
46713 link = qc->dev->link;
46714 -@@ -5987,7 +5987,7 @@ static void ata_host_stop(struct device
46715 - * LOCKING:
46716 - * None.
46717 - */
46718 --static void ata_finalize_port_ops(struct ata_port_operations *ops)
46719 -+static void ata_finalize_port_ops(const struct ata_port_operations *ops)
46720 - {
46721 - static DEFINE_SPINLOCK(lock);
46722 - const struct ata_port_operations *cur;
46723 -@@ -5999,6 +5999,7 @@ static void ata_finalize_port_ops(struct
46724 +@@ -5774,6 +5774,7 @@ static void ata_finalize_port_ops(struct
46725 return;
46726
46727 spin_lock(&lock);
46728 @@ -25638,7 +23670,7 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-core.c linux-2.6.32.48/drivers/ata
46729
46730 for (cur = ops->inherits; cur; cur = cur->inherits) {
46731 void **inherit = (void **)cur;
46732 -@@ -6012,8 +6013,9 @@ static void ata_finalize_port_ops(struct
46733 +@@ -5787,8 +5788,9 @@ static void ata_finalize_port_ops(struct
46734 if (IS_ERR(*pp))
46735 *pp = NULL;
46736
46737 @@ -25649,28 +23681,10 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-core.c linux-2.6.32.48/drivers/ata
46738 spin_unlock(&lock);
46739 }
46740
46741 -@@ -6110,7 +6112,7 @@ int ata_host_start(struct ata_host *host
46742 - */
46743 - /* KILLME - the only user left is ipr */
46744 - void ata_host_init(struct ata_host *host, struct device *dev,
46745 -- unsigned long flags, struct ata_port_operations *ops)
46746 -+ unsigned long flags, const struct ata_port_operations *ops)
46747 - {
46748 - spin_lock_init(&host->lock);
46749 - host->dev = dev;
46750 -@@ -6773,7 +6775,7 @@ static void ata_dummy_error_handler(stru
46751 - /* truly dummy */
46752 - }
46753 -
46754 --struct ata_port_operations ata_dummy_port_ops = {
46755 -+const struct ata_port_operations ata_dummy_port_ops = {
46756 - .qc_prep = ata_noop_qc_prep,
46757 - .qc_issue = ata_dummy_qc_issue,
46758 - .error_handler = ata_dummy_error_handler,
46759 -diff -urNp linux-2.6.32.48/drivers/ata/libata-eh.c linux-2.6.32.48/drivers/ata/libata-eh.c
46760 ---- linux-2.6.32.48/drivers/ata/libata-eh.c 2011-11-12 12:44:28.000000000 -0500
46761 -+++ linux-2.6.32.48/drivers/ata/libata-eh.c 2011-11-12 12:46:42.000000000 -0500
46762 -@@ -2423,6 +2423,8 @@ void ata_eh_report(struct ata_port *ap)
46763 +diff -urNp linux-3.0.8/drivers/ata/libata-eh.c linux-3.0.8/drivers/ata/libata-eh.c
46764 +--- linux-3.0.8/drivers/ata/libata-eh.c 2011-07-21 22:17:23.000000000 -0400
46765 ++++ linux-3.0.8/drivers/ata/libata-eh.c 2011-08-23 21:48:14.000000000 -0400
46766 +@@ -2518,6 +2518,8 @@ void ata_eh_report(struct ata_port *ap)
46767 {
46768 struct ata_link *link;
46769
46770 @@ -25679,1551 +23693,193 @@ diff -urNp linux-2.6.32.48/drivers/ata/libata-eh.c linux-2.6.32.48/drivers/ata/l
46771 ata_for_each_link(link, ap, HOST_FIRST)
46772 ata_eh_link_report(link);
46773 }
46774 -@@ -3594,7 +3596,7 @@ void ata_do_eh(struct ata_port *ap, ata_
46775 - */
46776 - void ata_std_error_handler(struct ata_port *ap)
46777 - {
46778 -- struct ata_port_operations *ops = ap->ops;
46779 -+ const struct ata_port_operations *ops = ap->ops;
46780 - ata_reset_fn_t hardreset = ops->hardreset;
46781 -
46782 - /* ignore built-in hardreset if SCR access is not available */
46783 -diff -urNp linux-2.6.32.48/drivers/ata/libata-pmp.c linux-2.6.32.48/drivers/ata/libata-pmp.c
46784 ---- linux-2.6.32.48/drivers/ata/libata-pmp.c 2009-12-02 22:51:21.000000000 -0500
46785 -+++ linux-2.6.32.48/drivers/ata/libata-pmp.c 2011-11-12 12:46:42.000000000 -0500
46786 -@@ -841,7 +841,7 @@ static int sata_pmp_handle_link_fail(str
46787 - */
46788 - static int sata_pmp_eh_recover(struct ata_port *ap)
46789 - {
46790 -- struct ata_port_operations *ops = ap->ops;
46791 -+ const struct ata_port_operations *ops = ap->ops;
46792 - int pmp_tries, link_tries[SATA_PMP_MAX_PORTS];
46793 - struct ata_link *pmp_link = &ap->link;
46794 - struct ata_device *pmp_dev = pmp_link->device;
46795 -diff -urNp linux-2.6.32.48/drivers/ata/pata_acpi.c linux-2.6.32.48/drivers/ata/pata_acpi.c
46796 ---- linux-2.6.32.48/drivers/ata/pata_acpi.c 2009-12-02 22:51:21.000000000 -0500
46797 -+++ linux-2.6.32.48/drivers/ata/pata_acpi.c 2011-11-12 12:46:42.000000000 -0500
46798 -@@ -215,7 +215,7 @@ static struct scsi_host_template pacpi_s
46799 - ATA_BMDMA_SHT(DRV_NAME),
46800 - };
46801 -
46802 --static struct ata_port_operations pacpi_ops = {
46803 -+static const struct ata_port_operations pacpi_ops = {
46804 - .inherits = &ata_bmdma_port_ops,
46805 - .qc_issue = pacpi_qc_issue,
46806 - .cable_detect = pacpi_cable_detect,
46807 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ali.c linux-2.6.32.48/drivers/ata/pata_ali.c
46808 ---- linux-2.6.32.48/drivers/ata/pata_ali.c 2011-11-12 12:44:28.000000000 -0500
46809 -+++ linux-2.6.32.48/drivers/ata/pata_ali.c 2011-11-12 12:46:42.000000000 -0500
46810 -@@ -365,7 +365,7 @@ static struct scsi_host_template ali_sht
46811 - * Port operations for PIO only ALi
46812 - */
46813 -
46814 --static struct ata_port_operations ali_early_port_ops = {
46815 -+static const struct ata_port_operations ali_early_port_ops = {
46816 - .inherits = &ata_sff_port_ops,
46817 - .cable_detect = ata_cable_40wire,
46818 - .set_piomode = ali_set_piomode,
46819 -@@ -382,7 +382,7 @@ static const struct ata_port_operations
46820 - * Port operations for DMA capable ALi without cable
46821 - * detect
46822 - */
46823 --static struct ata_port_operations ali_20_port_ops = {
46824 -+static const struct ata_port_operations ali_20_port_ops = {
46825 - .inherits = &ali_dma_base_ops,
46826 - .cable_detect = ata_cable_40wire,
46827 - .mode_filter = ali_20_filter,
46828 -@@ -393,7 +393,7 @@ static struct ata_port_operations ali_20
46829 - /*
46830 - * Port operations for DMA capable ALi with cable detect
46831 - */
46832 --static struct ata_port_operations ali_c2_port_ops = {
46833 -+static const struct ata_port_operations ali_c2_port_ops = {
46834 - .inherits = &ali_dma_base_ops,
46835 - .check_atapi_dma = ali_check_atapi_dma,
46836 - .cable_detect = ali_c2_cable_detect,
46837 -@@ -404,7 +404,7 @@ static struct ata_port_operations ali_c2
46838 - /*
46839 - * Port operations for DMA capable ALi with cable detect
46840 - */
46841 --static struct ata_port_operations ali_c4_port_ops = {
46842 -+static const struct ata_port_operations ali_c4_port_ops = {
46843 - .inherits = &ali_dma_base_ops,
46844 - .check_atapi_dma = ali_check_atapi_dma,
46845 - .cable_detect = ali_c2_cable_detect,
46846 -@@ -414,7 +414,7 @@ static struct ata_port_operations ali_c4
46847 - /*
46848 - * Port operations for DMA capable ALi with cable detect and LBA48
46849 - */
46850 --static struct ata_port_operations ali_c5_port_ops = {
46851 -+static const struct ata_port_operations ali_c5_port_ops = {
46852 - .inherits = &ali_dma_base_ops,
46853 - .check_atapi_dma = ali_check_atapi_dma,
46854 - .dev_config = ali_warn_atapi_dma,
46855 -diff -urNp linux-2.6.32.48/drivers/ata/pata_amd.c linux-2.6.32.48/drivers/ata/pata_amd.c
46856 ---- linux-2.6.32.48/drivers/ata/pata_amd.c 2009-12-02 22:51:21.000000000 -0500
46857 -+++ linux-2.6.32.48/drivers/ata/pata_amd.c 2011-11-12 12:46:42.000000000 -0500
46858 -@@ -397,28 +397,28 @@ static const struct ata_port_operations
46859 - .prereset = amd_pre_reset,
46860 - };
46861 -
46862 --static struct ata_port_operations amd33_port_ops = {
46863 -+static const struct ata_port_operations amd33_port_ops = {
46864 - .inherits = &amd_base_port_ops,
46865 - .cable_detect = ata_cable_40wire,
46866 - .set_piomode = amd33_set_piomode,
46867 - .set_dmamode = amd33_set_dmamode,
46868 - };
46869 -
46870 --static struct ata_port_operations amd66_port_ops = {
46871 -+static const struct ata_port_operations amd66_port_ops = {
46872 - .inherits = &amd_base_port_ops,
46873 - .cable_detect = ata_cable_unknown,
46874 - .set_piomode = amd66_set_piomode,
46875 - .set_dmamode = amd66_set_dmamode,
46876 - };
46877 -
46878 --static struct ata_port_operations amd100_port_ops = {
46879 -+static const struct ata_port_operations amd100_port_ops = {
46880 - .inherits = &amd_base_port_ops,
46881 - .cable_detect = ata_cable_unknown,
46882 - .set_piomode = amd100_set_piomode,
46883 - .set_dmamode = amd100_set_dmamode,
46884 - };
46885 -
46886 --static struct ata_port_operations amd133_port_ops = {
46887 -+static const struct ata_port_operations amd133_port_ops = {
46888 - .inherits = &amd_base_port_ops,
46889 - .cable_detect = amd_cable_detect,
46890 - .set_piomode = amd133_set_piomode,
46891 -@@ -433,13 +433,13 @@ static const struct ata_port_operations
46892 - .host_stop = nv_host_stop,
46893 - };
46894 -
46895 --static struct ata_port_operations nv100_port_ops = {
46896 -+static const struct ata_port_operations nv100_port_ops = {
46897 - .inherits = &nv_base_port_ops,
46898 - .set_piomode = nv100_set_piomode,
46899 - .set_dmamode = nv100_set_dmamode,
46900 - };
46901 -
46902 --static struct ata_port_operations nv133_port_ops = {
46903 -+static const struct ata_port_operations nv133_port_ops = {
46904 - .inherits = &nv_base_port_ops,
46905 - .set_piomode = nv133_set_piomode,
46906 - .set_dmamode = nv133_set_dmamode,
46907 -diff -urNp linux-2.6.32.48/drivers/ata/pata_artop.c linux-2.6.32.48/drivers/ata/pata_artop.c
46908 ---- linux-2.6.32.48/drivers/ata/pata_artop.c 2009-12-02 22:51:21.000000000 -0500
46909 -+++ linux-2.6.32.48/drivers/ata/pata_artop.c 2011-11-12 12:46:42.000000000 -0500
46910 -@@ -311,7 +311,7 @@ static struct scsi_host_template artop_s
46911 - ATA_BMDMA_SHT(DRV_NAME),
46912 - };
46913 -
46914 --static struct ata_port_operations artop6210_ops = {
46915 -+static const struct ata_port_operations artop6210_ops = {
46916 - .inherits = &ata_bmdma_port_ops,
46917 - .cable_detect = ata_cable_40wire,
46918 - .set_piomode = artop6210_set_piomode,
46919 -@@ -320,7 +320,7 @@ static struct ata_port_operations artop6
46920 - .qc_defer = artop6210_qc_defer,
46921 - };
46922 -
46923 --static struct ata_port_operations artop6260_ops = {
46924 -+static const struct ata_port_operations artop6260_ops = {
46925 - .inherits = &ata_bmdma_port_ops,
46926 - .cable_detect = artop6260_cable_detect,
46927 - .set_piomode = artop6260_set_piomode,
46928 -diff -urNp linux-2.6.32.48/drivers/ata/pata_at32.c linux-2.6.32.48/drivers/ata/pata_at32.c
46929 ---- linux-2.6.32.48/drivers/ata/pata_at32.c 2009-12-02 22:51:21.000000000 -0500
46930 -+++ linux-2.6.32.48/drivers/ata/pata_at32.c 2011-11-12 12:46:42.000000000 -0500
46931 -@@ -172,7 +172,7 @@ static struct scsi_host_template at32_sh
46932 - ATA_PIO_SHT(DRV_NAME),
46933 - };
46934 -
46935 --static struct ata_port_operations at32_port_ops = {
46936 -+static const struct ata_port_operations at32_port_ops = {
46937 - .inherits = &ata_sff_port_ops,
46938 - .cable_detect = ata_cable_40wire,
46939 - .set_piomode = pata_at32_set_piomode,
46940 -diff -urNp linux-2.6.32.48/drivers/ata/pata_at91.c linux-2.6.32.48/drivers/ata/pata_at91.c
46941 ---- linux-2.6.32.48/drivers/ata/pata_at91.c 2009-12-02 22:51:21.000000000 -0500
46942 -+++ linux-2.6.32.48/drivers/ata/pata_at91.c 2011-11-12 12:46:42.000000000 -0500
46943 -@@ -195,7 +195,7 @@ static struct scsi_host_template pata_at
46944 - ATA_PIO_SHT(DRV_NAME),
46945 - };
46946 -
46947 --static struct ata_port_operations pata_at91_port_ops = {
46948 -+static const struct ata_port_operations pata_at91_port_ops = {
46949 - .inherits = &ata_sff_port_ops,
46950 -
46951 - .sff_data_xfer = pata_at91_data_xfer_noirq,
46952 -diff -urNp linux-2.6.32.48/drivers/ata/pata_atiixp.c linux-2.6.32.48/drivers/ata/pata_atiixp.c
46953 ---- linux-2.6.32.48/drivers/ata/pata_atiixp.c 2009-12-02 22:51:21.000000000 -0500
46954 -+++ linux-2.6.32.48/drivers/ata/pata_atiixp.c 2011-11-12 12:46:42.000000000 -0500
46955 -@@ -205,7 +205,7 @@ static struct scsi_host_template atiixp_
46956 - .sg_tablesize = LIBATA_DUMB_MAX_PRD,
46957 - };
46958 -
46959 --static struct ata_port_operations atiixp_port_ops = {
46960 -+static const struct ata_port_operations atiixp_port_ops = {
46961 - .inherits = &ata_bmdma_port_ops,
46962 -
46963 - .qc_prep = ata_sff_dumb_qc_prep,
46964 -diff -urNp linux-2.6.32.48/drivers/ata/pata_atp867x.c linux-2.6.32.48/drivers/ata/pata_atp867x.c
46965 ---- linux-2.6.32.48/drivers/ata/pata_atp867x.c 2009-12-02 22:51:21.000000000 -0500
46966 -+++ linux-2.6.32.48/drivers/ata/pata_atp867x.c 2011-11-12 12:46:42.000000000 -0500
46967 -@@ -274,7 +274,7 @@ static struct scsi_host_template atp867x
46968 - ATA_BMDMA_SHT(DRV_NAME),
46969 - };
46970 -
46971 --static struct ata_port_operations atp867x_ops = {
46972 -+static const struct ata_port_operations atp867x_ops = {
46973 - .inherits = &ata_bmdma_port_ops,
46974 - .cable_detect = atp867x_cable_detect,
46975 - .set_piomode = atp867x_set_piomode,
46976 -diff -urNp linux-2.6.32.48/drivers/ata/pata_bf54x.c linux-2.6.32.48/drivers/ata/pata_bf54x.c
46977 ---- linux-2.6.32.48/drivers/ata/pata_bf54x.c 2009-12-02 22:51:21.000000000 -0500
46978 -+++ linux-2.6.32.48/drivers/ata/pata_bf54x.c 2011-11-12 12:46:42.000000000 -0500
46979 -@@ -1464,7 +1464,7 @@ static struct scsi_host_template bfin_sh
46980 - .dma_boundary = ATA_DMA_BOUNDARY,
46981 - };
46982 +diff -urNp linux-3.0.8/drivers/ata/pata_arasan_cf.c linux-3.0.8/drivers/ata/pata_arasan_cf.c
46983 +--- linux-3.0.8/drivers/ata/pata_arasan_cf.c 2011-07-21 22:17:23.000000000 -0400
46984 ++++ linux-3.0.8/drivers/ata/pata_arasan_cf.c 2011-08-23 21:47:55.000000000 -0400
46985 +@@ -862,7 +862,9 @@ static int __devinit arasan_cf_probe(str
46986 + /* Handle platform specific quirks */
46987 + if (pdata->quirk) {
46988 + if (pdata->quirk & CF_BROKEN_PIO) {
46989 +- ap->ops->set_piomode = NULL;
46990 ++ pax_open_kernel();
46991 ++ *(void **)&ap->ops->set_piomode = NULL;
46992 ++ pax_close_kernel();
46993 + ap->pio_mask = 0;
46994 + }
46995 + if (pdata->quirk & CF_BROKEN_MWDMA)
46996 +diff -urNp linux-3.0.8/drivers/atm/adummy.c linux-3.0.8/drivers/atm/adummy.c
46997 +--- linux-3.0.8/drivers/atm/adummy.c 2011-07-21 22:17:23.000000000 -0400
46998 ++++ linux-3.0.8/drivers/atm/adummy.c 2011-08-23 21:47:55.000000000 -0400
46999 +@@ -114,7 +114,7 @@ adummy_send(struct atm_vcc *vcc, struct
47000 + vcc->pop(vcc, skb);
47001 + else
47002 + dev_kfree_skb_any(skb);
47003 +- atomic_inc(&vcc->stats->tx);
47004 ++ atomic_inc_unchecked(&vcc->stats->tx);
47005
47006 --static struct ata_port_operations bfin_pata_ops = {
47007 -+static const struct ata_port_operations bfin_pata_ops = {
47008 - .inherits = &ata_sff_port_ops,
47009 + return 0;
47010 + }
47011 +diff -urNp linux-3.0.8/drivers/atm/ambassador.c linux-3.0.8/drivers/atm/ambassador.c
47012 +--- linux-3.0.8/drivers/atm/ambassador.c 2011-07-21 22:17:23.000000000 -0400
47013 ++++ linux-3.0.8/drivers/atm/ambassador.c 2011-08-23 21:47:55.000000000 -0400
47014 +@@ -454,7 +454,7 @@ static void tx_complete (amb_dev * dev,
47015 + PRINTD (DBG_FLOW|DBG_TX, "tx_complete %p %p", dev, tx);
47016 +
47017 + // VC layer stats
47018 +- atomic_inc(&ATM_SKB(skb)->vcc->stats->tx);
47019 ++ atomic_inc_unchecked(&ATM_SKB(skb)->vcc->stats->tx);
47020 +
47021 + // free the descriptor
47022 + kfree (tx_descr);
47023 +@@ -495,7 +495,7 @@ static void rx_complete (amb_dev * dev,
47024 + dump_skb ("<<<", vc, skb);
47025 +
47026 + // VC layer stats
47027 +- atomic_inc(&atm_vcc->stats->rx);
47028 ++ atomic_inc_unchecked(&atm_vcc->stats->rx);
47029 + __net_timestamp(skb);
47030 + // end of our responsibility
47031 + atm_vcc->push (atm_vcc, skb);
47032 +@@ -510,7 +510,7 @@ static void rx_complete (amb_dev * dev,
47033 + } else {
47034 + PRINTK (KERN_INFO, "dropped over-size frame");
47035 + // should we count this?
47036 +- atomic_inc(&atm_vcc->stats->rx_drop);
47037 ++ atomic_inc_unchecked(&atm_vcc->stats->rx_drop);
47038 + }
47039 +
47040 + } else {
47041 +@@ -1342,7 +1342,7 @@ static int amb_send (struct atm_vcc * at
47042 + }
47043 +
47044 + if (check_area (skb->data, skb->len)) {
47045 +- atomic_inc(&atm_vcc->stats->tx_err);
47046 ++ atomic_inc_unchecked(&atm_vcc->stats->tx_err);
47047 + return -ENOMEM; // ?
47048 + }
47049 +
47050 +diff -urNp linux-3.0.8/drivers/atm/atmtcp.c linux-3.0.8/drivers/atm/atmtcp.c
47051 +--- linux-3.0.8/drivers/atm/atmtcp.c 2011-07-21 22:17:23.000000000 -0400
47052 ++++ linux-3.0.8/drivers/atm/atmtcp.c 2011-08-23 21:47:55.000000000 -0400
47053 +@@ -207,7 +207,7 @@ static int atmtcp_v_send(struct atm_vcc
47054 + if (vcc->pop) vcc->pop(vcc,skb);
47055 + else dev_kfree_skb(skb);
47056 + if (dev_data) return 0;
47057 +- atomic_inc(&vcc->stats->tx_err);
47058 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
47059 + return -ENOLINK;
47060 + }
47061 + size = skb->len+sizeof(struct atmtcp_hdr);
47062 +@@ -215,7 +215,7 @@ static int atmtcp_v_send(struct atm_vcc
47063 + if (!new_skb) {
47064 + if (vcc->pop) vcc->pop(vcc,skb);
47065 + else dev_kfree_skb(skb);
47066 +- atomic_inc(&vcc->stats->tx_err);
47067 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
47068 + return -ENOBUFS;
47069 + }
47070 + hdr = (void *) skb_put(new_skb,sizeof(struct atmtcp_hdr));
47071 +@@ -226,8 +226,8 @@ static int atmtcp_v_send(struct atm_vcc
47072 + if (vcc->pop) vcc->pop(vcc,skb);
47073 + else dev_kfree_skb(skb);
47074 + out_vcc->push(out_vcc,new_skb);
47075 +- atomic_inc(&vcc->stats->tx);
47076 +- atomic_inc(&out_vcc->stats->rx);
47077 ++ atomic_inc_unchecked(&vcc->stats->tx);
47078 ++ atomic_inc_unchecked(&out_vcc->stats->rx);
47079 + return 0;
47080 + }
47081
47082 - .set_piomode = bfin_set_piomode,
47083 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cmd640.c linux-2.6.32.48/drivers/ata/pata_cmd640.c
47084 ---- linux-2.6.32.48/drivers/ata/pata_cmd640.c 2009-12-02 22:51:21.000000000 -0500
47085 -+++ linux-2.6.32.48/drivers/ata/pata_cmd640.c 2011-11-12 12:46:42.000000000 -0500
47086 -@@ -168,7 +168,7 @@ static struct scsi_host_template cmd640_
47087 - ATA_BMDMA_SHT(DRV_NAME),
47088 - };
47089 +@@ -301,7 +301,7 @@ static int atmtcp_c_send(struct atm_vcc
47090 + out_vcc = find_vcc(dev, ntohs(hdr->vpi), ntohs(hdr->vci));
47091 + read_unlock(&vcc_sklist_lock);
47092 + if (!out_vcc) {
47093 +- atomic_inc(&vcc->stats->tx_err);
47094 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
47095 + goto done;
47096 + }
47097 + skb_pull(skb,sizeof(struct atmtcp_hdr));
47098 +@@ -313,8 +313,8 @@ static int atmtcp_c_send(struct atm_vcc
47099 + __net_timestamp(new_skb);
47100 + skb_copy_from_linear_data(skb, skb_put(new_skb, skb->len), skb->len);
47101 + out_vcc->push(out_vcc,new_skb);
47102 +- atomic_inc(&vcc->stats->tx);
47103 +- atomic_inc(&out_vcc->stats->rx);
47104 ++ atomic_inc_unchecked(&vcc->stats->tx);
47105 ++ atomic_inc_unchecked(&out_vcc->stats->rx);
47106 + done:
47107 + if (vcc->pop) vcc->pop(vcc,skb);
47108 + else dev_kfree_skb(skb);
47109 +diff -urNp linux-3.0.8/drivers/atm/eni.c linux-3.0.8/drivers/atm/eni.c
47110 +--- linux-3.0.8/drivers/atm/eni.c 2011-07-21 22:17:23.000000000 -0400
47111 ++++ linux-3.0.8/drivers/atm/eni.c 2011-10-11 10:44:33.000000000 -0400
47112 +@@ -526,7 +526,7 @@ static int rx_aal0(struct atm_vcc *vcc)
47113 + DPRINTK(DEV_LABEL "(itf %d): trashing empty cell\n",
47114 + vcc->dev->number);
47115 + length = 0;
47116 +- atomic_inc(&vcc->stats->rx_err);
47117 ++ atomic_inc_unchecked(&vcc->stats->rx_err);
47118 + }
47119 + else {
47120 + length = ATM_CELL_SIZE-1; /* no HEC */
47121 +@@ -581,7 +581,7 @@ static int rx_aal5(struct atm_vcc *vcc)
47122 + size);
47123 + }
47124 + eff = length = 0;
47125 +- atomic_inc(&vcc->stats->rx_err);
47126 ++ atomic_inc_unchecked(&vcc->stats->rx_err);
47127 + }
47128 + else {
47129 + size = (descr & MID_RED_COUNT)*(ATM_CELL_PAYLOAD >> 2);
47130 +@@ -598,7 +598,7 @@ static int rx_aal5(struct atm_vcc *vcc)
47131 + "(VCI=%d,length=%ld,size=%ld (descr 0x%lx))\n",
47132 + vcc->dev->number,vcc->vci,length,size << 2,descr);
47133 + length = eff = 0;
47134 +- atomic_inc(&vcc->stats->rx_err);
47135 ++ atomic_inc_unchecked(&vcc->stats->rx_err);
47136 + }
47137 + }
47138 + skb = eff ? atm_alloc_charge(vcc,eff << 2,GFP_ATOMIC) : NULL;
47139 +@@ -771,7 +771,7 @@ rx_dequeued++;
47140 + vcc->push(vcc,skb);
47141 + pushed++;
47142 + }
47143 +- atomic_inc(&vcc->stats->rx);
47144 ++ atomic_inc_unchecked(&vcc->stats->rx);
47145 + }
47146 + wake_up(&eni_dev->rx_wait);
47147 + }
47148 +@@ -1228,7 +1228,7 @@ static void dequeue_tx(struct atm_dev *d
47149 + PCI_DMA_TODEVICE);
47150 + if (vcc->pop) vcc->pop(vcc,skb);
47151 + else dev_kfree_skb_irq(skb);
47152 +- atomic_inc(&vcc->stats->tx);
47153 ++ atomic_inc_unchecked(&vcc->stats->tx);
47154 + wake_up(&eni_dev->tx_wait);
47155 + dma_complete++;
47156 + }
47157 +@@ -1568,7 +1568,7 @@ tx_complete++;
47158 + /*--------------------------------- entries ---------------------------------*/
47159
47160 --static struct ata_port_operations cmd640_port_ops = {
47161 -+static const struct ata_port_operations cmd640_port_ops = {
47162 - .inherits = &ata_bmdma_port_ops,
47163 - /* In theory xfer_noirq is not needed once we kill the prefetcher */
47164 - .sff_data_xfer = ata_sff_data_xfer_noirq,
47165 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cmd64x.c linux-2.6.32.48/drivers/ata/pata_cmd64x.c
47166 ---- linux-2.6.32.48/drivers/ata/pata_cmd64x.c 2011-11-12 12:44:28.000000000 -0500
47167 -+++ linux-2.6.32.48/drivers/ata/pata_cmd64x.c 2011-11-12 12:46:42.000000000 -0500
47168 -@@ -271,18 +271,18 @@ static const struct ata_port_operations
47169 - .set_dmamode = cmd64x_set_dmamode,
47170 - };
47171
47172 --static struct ata_port_operations cmd64x_port_ops = {
47173 -+static const struct ata_port_operations cmd64x_port_ops = {
47174 - .inherits = &cmd64x_base_ops,
47175 - .cable_detect = ata_cable_40wire,
47176 - };
47177 +-static const char *media_name[] __devinitdata = {
47178 ++static const char *media_name[] __devinitconst = {
47179 + "MMF", "SMF", "MMF", "03?", /* 0- 3 */
47180 + "UTP", "05?", "06?", "07?", /* 4- 7 */
47181 + "TAXI","09?", "10?", "11?", /* 8-11 */
47182 +diff -urNp linux-3.0.8/drivers/atm/firestream.c linux-3.0.8/drivers/atm/firestream.c
47183 +--- linux-3.0.8/drivers/atm/firestream.c 2011-07-21 22:17:23.000000000 -0400
47184 ++++ linux-3.0.8/drivers/atm/firestream.c 2011-08-23 21:47:55.000000000 -0400
47185 +@@ -749,7 +749,7 @@ static void process_txdone_queue (struct
47186 + }
47187 + }
47188
47189 --static struct ata_port_operations cmd646r1_port_ops = {
47190 -+static const struct ata_port_operations cmd646r1_port_ops = {
47191 - .inherits = &cmd64x_base_ops,
47192 - .bmdma_stop = cmd646r1_bmdma_stop,
47193 - .cable_detect = ata_cable_40wire,
47194 - };
47195 -
47196 --static struct ata_port_operations cmd648_port_ops = {
47197 -+static const struct ata_port_operations cmd648_port_ops = {
47198 - .inherits = &cmd64x_base_ops,
47199 - .bmdma_stop = cmd648_bmdma_stop,
47200 - .cable_detect = cmd648_cable_detect,
47201 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5520.c linux-2.6.32.48/drivers/ata/pata_cs5520.c
47202 ---- linux-2.6.32.48/drivers/ata/pata_cs5520.c 2009-12-02 22:51:21.000000000 -0500
47203 -+++ linux-2.6.32.48/drivers/ata/pata_cs5520.c 2011-11-12 12:46:42.000000000 -0500
47204 -@@ -144,7 +144,7 @@ static struct scsi_host_template cs5520_
47205 - .sg_tablesize = LIBATA_DUMB_MAX_PRD,
47206 - };
47207 -
47208 --static struct ata_port_operations cs5520_port_ops = {
47209 -+static const struct ata_port_operations cs5520_port_ops = {
47210 - .inherits = &ata_bmdma_port_ops,
47211 - .qc_prep = ata_sff_dumb_qc_prep,
47212 - .cable_detect = ata_cable_40wire,
47213 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5530.c linux-2.6.32.48/drivers/ata/pata_cs5530.c
47214 ---- linux-2.6.32.48/drivers/ata/pata_cs5530.c 2009-12-02 22:51:21.000000000 -0500
47215 -+++ linux-2.6.32.48/drivers/ata/pata_cs5530.c 2011-11-12 12:46:42.000000000 -0500
47216 -@@ -164,7 +164,7 @@ static struct scsi_host_template cs5530_
47217 - .sg_tablesize = LIBATA_DUMB_MAX_PRD,
47218 - };
47219 -
47220 --static struct ata_port_operations cs5530_port_ops = {
47221 -+static const struct ata_port_operations cs5530_port_ops = {
47222 - .inherits = &ata_bmdma_port_ops,
47223 -
47224 - .qc_prep = ata_sff_dumb_qc_prep,
47225 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5535.c linux-2.6.32.48/drivers/ata/pata_cs5535.c
47226 ---- linux-2.6.32.48/drivers/ata/pata_cs5535.c 2009-12-02 22:51:21.000000000 -0500
47227 -+++ linux-2.6.32.48/drivers/ata/pata_cs5535.c 2011-11-12 12:46:42.000000000 -0500
47228 -@@ -160,7 +160,7 @@ static struct scsi_host_template cs5535_
47229 - ATA_BMDMA_SHT(DRV_NAME),
47230 - };
47231 -
47232 --static struct ata_port_operations cs5535_port_ops = {
47233 -+static const struct ata_port_operations cs5535_port_ops = {
47234 - .inherits = &ata_bmdma_port_ops,
47235 - .cable_detect = cs5535_cable_detect,
47236 - .set_piomode = cs5535_set_piomode,
47237 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cs5536.c linux-2.6.32.48/drivers/ata/pata_cs5536.c
47238 ---- linux-2.6.32.48/drivers/ata/pata_cs5536.c 2009-12-02 22:51:21.000000000 -0500
47239 -+++ linux-2.6.32.48/drivers/ata/pata_cs5536.c 2011-11-12 12:46:42.000000000 -0500
47240 -@@ -223,7 +223,7 @@ static struct scsi_host_template cs5536_
47241 - ATA_BMDMA_SHT(DRV_NAME),
47242 - };
47243 -
47244 --static struct ata_port_operations cs5536_port_ops = {
47245 -+static const struct ata_port_operations cs5536_port_ops = {
47246 - .inherits = &ata_bmdma_port_ops,
47247 - .cable_detect = cs5536_cable_detect,
47248 - .set_piomode = cs5536_set_piomode,
47249 -diff -urNp linux-2.6.32.48/drivers/ata/pata_cypress.c linux-2.6.32.48/drivers/ata/pata_cypress.c
47250 ---- linux-2.6.32.48/drivers/ata/pata_cypress.c 2009-12-02 22:51:21.000000000 -0500
47251 -+++ linux-2.6.32.48/drivers/ata/pata_cypress.c 2011-11-12 12:46:42.000000000 -0500
47252 -@@ -113,7 +113,7 @@ static struct scsi_host_template cy82c69
47253 - ATA_BMDMA_SHT(DRV_NAME),
47254 - };
47255 -
47256 --static struct ata_port_operations cy82c693_port_ops = {
47257 -+static const struct ata_port_operations cy82c693_port_ops = {
47258 - .inherits = &ata_bmdma_port_ops,
47259 - .cable_detect = ata_cable_40wire,
47260 - .set_piomode = cy82c693_set_piomode,
47261 -diff -urNp linux-2.6.32.48/drivers/ata/pata_efar.c linux-2.6.32.48/drivers/ata/pata_efar.c
47262 ---- linux-2.6.32.48/drivers/ata/pata_efar.c 2009-12-02 22:51:21.000000000 -0500
47263 -+++ linux-2.6.32.48/drivers/ata/pata_efar.c 2011-11-12 12:46:42.000000000 -0500
47264 -@@ -222,7 +222,7 @@ static struct scsi_host_template efar_sh
47265 - ATA_BMDMA_SHT(DRV_NAME),
47266 - };
47267 -
47268 --static struct ata_port_operations efar_ops = {
47269 -+static const struct ata_port_operations efar_ops = {
47270 - .inherits = &ata_bmdma_port_ops,
47271 - .cable_detect = efar_cable_detect,
47272 - .set_piomode = efar_set_piomode,
47273 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt366.c linux-2.6.32.48/drivers/ata/pata_hpt366.c
47274 ---- linux-2.6.32.48/drivers/ata/pata_hpt366.c 2011-11-12 12:44:28.000000000 -0500
47275 -+++ linux-2.6.32.48/drivers/ata/pata_hpt366.c 2011-11-12 12:46:42.000000000 -0500
47276 -@@ -282,7 +282,7 @@ static struct scsi_host_template hpt36x_
47277 - * Configuration for HPT366/68
47278 - */
47279 -
47280 --static struct ata_port_operations hpt366_port_ops = {
47281 -+static const struct ata_port_operations hpt366_port_ops = {
47282 - .inherits = &ata_bmdma_port_ops,
47283 - .cable_detect = hpt36x_cable_detect,
47284 - .mode_filter = hpt366_filter,
47285 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt37x.c linux-2.6.32.48/drivers/ata/pata_hpt37x.c
47286 ---- linux-2.6.32.48/drivers/ata/pata_hpt37x.c 2011-11-12 12:44:28.000000000 -0500
47287 -+++ linux-2.6.32.48/drivers/ata/pata_hpt37x.c 2011-11-12 12:46:42.000000000 -0500
47288 -@@ -576,7 +576,7 @@ static struct scsi_host_template hpt37x_
47289 - * Configuration for HPT370
47290 - */
47291 -
47292 --static struct ata_port_operations hpt370_port_ops = {
47293 -+static const struct ata_port_operations hpt370_port_ops = {
47294 - .inherits = &ata_bmdma_port_ops,
47295 -
47296 - .bmdma_stop = hpt370_bmdma_stop,
47297 -@@ -591,7 +591,7 @@ static struct ata_port_operations hpt370
47298 - * Configuration for HPT370A. Close to 370 but less filters
47299 - */
47300 -
47301 --static struct ata_port_operations hpt370a_port_ops = {
47302 -+static const struct ata_port_operations hpt370a_port_ops = {
47303 - .inherits = &hpt370_port_ops,
47304 - .mode_filter = hpt370a_filter,
47305 - };
47306 -@@ -601,7 +601,7 @@ static struct ata_port_operations hpt370
47307 - * and DMA mode setting functionality.
47308 - */
47309 -
47310 --static struct ata_port_operations hpt372_port_ops = {
47311 -+static const struct ata_port_operations hpt372_port_ops = {
47312 - .inherits = &ata_bmdma_port_ops,
47313 -
47314 - .bmdma_stop = hpt37x_bmdma_stop,
47315 -@@ -616,7 +616,7 @@ static struct ata_port_operations hpt372
47316 - * but we have a different cable detection procedure for function 1.
47317 - */
47318 -
47319 --static struct ata_port_operations hpt374_fn1_port_ops = {
47320 -+static const struct ata_port_operations hpt374_fn1_port_ops = {
47321 - .inherits = &hpt372_port_ops,
47322 - .prereset = hpt374_fn1_pre_reset,
47323 - };
47324 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c
47325 ---- linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c 2011-11-12 12:44:28.000000000 -0500
47326 -+++ linux-2.6.32.48/drivers/ata/pata_hpt3x2n.c 2011-11-12 12:46:42.000000000 -0500
47327 -@@ -337,7 +337,7 @@ static struct scsi_host_template hpt3x2n
47328 - * Configuration for HPT3x2n.
47329 - */
47330 -
47331 --static struct ata_port_operations hpt3x2n_port_ops = {
47332 -+static const struct ata_port_operations hpt3x2n_port_ops = {
47333 - .inherits = &ata_bmdma_port_ops,
47334 -
47335 - .bmdma_stop = hpt3x2n_bmdma_stop,
47336 -diff -urNp linux-2.6.32.48/drivers/ata/pata_hpt3x3.c linux-2.6.32.48/drivers/ata/pata_hpt3x3.c
47337 ---- linux-2.6.32.48/drivers/ata/pata_hpt3x3.c 2009-12-02 22:51:21.000000000 -0500
47338 -+++ linux-2.6.32.48/drivers/ata/pata_hpt3x3.c 2011-11-12 12:46:42.000000000 -0500
47339 -@@ -141,7 +141,7 @@ static struct scsi_host_template hpt3x3_
47340 - ATA_BMDMA_SHT(DRV_NAME),
47341 - };
47342 -
47343 --static struct ata_port_operations hpt3x3_port_ops = {
47344 -+static const struct ata_port_operations hpt3x3_port_ops = {
47345 - .inherits = &ata_bmdma_port_ops,
47346 - .cable_detect = ata_cable_40wire,
47347 - .set_piomode = hpt3x3_set_piomode,
47348 -diff -urNp linux-2.6.32.48/drivers/ata/pata_icside.c linux-2.6.32.48/drivers/ata/pata_icside.c
47349 ---- linux-2.6.32.48/drivers/ata/pata_icside.c 2009-12-02 22:51:21.000000000 -0500
47350 -+++ linux-2.6.32.48/drivers/ata/pata_icside.c 2011-11-12 12:46:42.000000000 -0500
47351 -@@ -319,7 +319,7 @@ static void pata_icside_postreset(struct
47352 - }
47353 - }
47354 -
47355 --static struct ata_port_operations pata_icside_port_ops = {
47356 -+static const struct ata_port_operations pata_icside_port_ops = {
47357 - .inherits = &ata_sff_port_ops,
47358 - /* no need to build any PRD tables for DMA */
47359 - .qc_prep = ata_noop_qc_prep,
47360 -diff -urNp linux-2.6.32.48/drivers/ata/pata_isapnp.c linux-2.6.32.48/drivers/ata/pata_isapnp.c
47361 ---- linux-2.6.32.48/drivers/ata/pata_isapnp.c 2009-12-02 22:51:21.000000000 -0500
47362 -+++ linux-2.6.32.48/drivers/ata/pata_isapnp.c 2011-11-12 12:46:42.000000000 -0500
47363 -@@ -23,12 +23,12 @@ static struct scsi_host_template isapnp_
47364 - ATA_PIO_SHT(DRV_NAME),
47365 - };
47366 -
47367 --static struct ata_port_operations isapnp_port_ops = {
47368 -+static const struct ata_port_operations isapnp_port_ops = {
47369 - .inherits = &ata_sff_port_ops,
47370 - .cable_detect = ata_cable_40wire,
47371 - };
47372 -
47373 --static struct ata_port_operations isapnp_noalt_port_ops = {
47374 -+static const struct ata_port_operations isapnp_noalt_port_ops = {
47375 - .inherits = &ata_sff_port_ops,
47376 - .cable_detect = ata_cable_40wire,
47377 - /* No altstatus so we don't want to use the lost interrupt poll */
47378 -diff -urNp linux-2.6.32.48/drivers/ata/pata_it8213.c linux-2.6.32.48/drivers/ata/pata_it8213.c
47379 ---- linux-2.6.32.48/drivers/ata/pata_it8213.c 2009-12-02 22:51:21.000000000 -0500
47380 -+++ linux-2.6.32.48/drivers/ata/pata_it8213.c 2011-11-12 12:46:42.000000000 -0500
47381 -@@ -234,7 +234,7 @@ static struct scsi_host_template it8213_
47382 - };
47383 -
47384 -
47385 --static struct ata_port_operations it8213_ops = {
47386 -+static const struct ata_port_operations it8213_ops = {
47387 - .inherits = &ata_bmdma_port_ops,
47388 - .cable_detect = it8213_cable_detect,
47389 - .set_piomode = it8213_set_piomode,
47390 -diff -urNp linux-2.6.32.48/drivers/ata/pata_it821x.c linux-2.6.32.48/drivers/ata/pata_it821x.c
47391 ---- linux-2.6.32.48/drivers/ata/pata_it821x.c 2009-12-02 22:51:21.000000000 -0500
47392 -+++ linux-2.6.32.48/drivers/ata/pata_it821x.c 2011-11-12 12:46:42.000000000 -0500
47393 -@@ -800,7 +800,7 @@ static struct scsi_host_template it821x_
47394 - ATA_BMDMA_SHT(DRV_NAME),
47395 - };
47396 -
47397 --static struct ata_port_operations it821x_smart_port_ops = {
47398 -+static const struct ata_port_operations it821x_smart_port_ops = {
47399 - .inherits = &ata_bmdma_port_ops,
47400 -
47401 - .check_atapi_dma= it821x_check_atapi_dma,
47402 -@@ -814,7 +814,7 @@ static struct ata_port_operations it821x
47403 - .port_start = it821x_port_start,
47404 - };
47405 -
47406 --static struct ata_port_operations it821x_passthru_port_ops = {
47407 -+static const struct ata_port_operations it821x_passthru_port_ops = {
47408 - .inherits = &ata_bmdma_port_ops,
47409 -
47410 - .check_atapi_dma= it821x_check_atapi_dma,
47411 -@@ -830,7 +830,7 @@ static struct ata_port_operations it821x
47412 - .port_start = it821x_port_start,
47413 - };
47414 -
47415 --static struct ata_port_operations it821x_rdc_port_ops = {
47416 -+static const struct ata_port_operations it821x_rdc_port_ops = {
47417 - .inherits = &ata_bmdma_port_ops,
47418 -
47419 - .check_atapi_dma= it821x_check_atapi_dma,
47420 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c
47421 ---- linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c 2009-12-02 22:51:21.000000000 -0500
47422 -+++ linux-2.6.32.48/drivers/ata/pata_ixp4xx_cf.c 2011-11-12 12:46:42.000000000 -0500
47423 -@@ -89,7 +89,7 @@ static struct scsi_host_template ixp4xx_
47424 - ATA_PIO_SHT(DRV_NAME),
47425 - };
47426 -
47427 --static struct ata_port_operations ixp4xx_port_ops = {
47428 -+static const struct ata_port_operations ixp4xx_port_ops = {
47429 - .inherits = &ata_sff_port_ops,
47430 - .sff_data_xfer = ixp4xx_mmio_data_xfer,
47431 - .cable_detect = ata_cable_40wire,
47432 -diff -urNp linux-2.6.32.48/drivers/ata/pata_jmicron.c linux-2.6.32.48/drivers/ata/pata_jmicron.c
47433 ---- linux-2.6.32.48/drivers/ata/pata_jmicron.c 2009-12-02 22:51:21.000000000 -0500
47434 -+++ linux-2.6.32.48/drivers/ata/pata_jmicron.c 2011-11-12 12:46:42.000000000 -0500
47435 -@@ -111,7 +111,7 @@ static struct scsi_host_template jmicron
47436 - ATA_BMDMA_SHT(DRV_NAME),
47437 - };
47438 -
47439 --static struct ata_port_operations jmicron_ops = {
47440 -+static const struct ata_port_operations jmicron_ops = {
47441 - .inherits = &ata_bmdma_port_ops,
47442 - .prereset = jmicron_pre_reset,
47443 - };
47444 -diff -urNp linux-2.6.32.48/drivers/ata/pata_legacy.c linux-2.6.32.48/drivers/ata/pata_legacy.c
47445 ---- linux-2.6.32.48/drivers/ata/pata_legacy.c 2009-12-02 22:51:21.000000000 -0500
47446 -+++ linux-2.6.32.48/drivers/ata/pata_legacy.c 2011-11-12 12:46:42.000000000 -0500
47447 -@@ -106,7 +106,7 @@ struct legacy_probe {
47448 -
47449 - struct legacy_controller {
47450 - const char *name;
47451 -- struct ata_port_operations *ops;
47452 -+ const struct ata_port_operations *ops;
47453 - unsigned int pio_mask;
47454 - unsigned int flags;
47455 - unsigned int pflags;
47456 -@@ -223,12 +223,12 @@ static const struct ata_port_operations
47457 - * pio_mask as well.
47458 - */
47459 -
47460 --static struct ata_port_operations simple_port_ops = {
47461 -+static const struct ata_port_operations simple_port_ops = {
47462 - .inherits = &legacy_base_port_ops,
47463 - .sff_data_xfer = ata_sff_data_xfer_noirq,
47464 - };
47465 -
47466 --static struct ata_port_operations legacy_port_ops = {
47467 -+static const struct ata_port_operations legacy_port_ops = {
47468 - .inherits = &legacy_base_port_ops,
47469 - .sff_data_xfer = ata_sff_data_xfer_noirq,
47470 - .set_mode = legacy_set_mode,
47471 -@@ -324,7 +324,7 @@ static unsigned int pdc_data_xfer_vlb(st
47472 - return buflen;
47473 - }
47474 -
47475 --static struct ata_port_operations pdc20230_port_ops = {
47476 -+static const struct ata_port_operations pdc20230_port_ops = {
47477 - .inherits = &legacy_base_port_ops,
47478 - .set_piomode = pdc20230_set_piomode,
47479 - .sff_data_xfer = pdc_data_xfer_vlb,
47480 -@@ -357,7 +357,7 @@ static void ht6560a_set_piomode(struct a
47481 - ioread8(ap->ioaddr.status_addr);
47482 - }
47483 -
47484 --static struct ata_port_operations ht6560a_port_ops = {
47485 -+static const struct ata_port_operations ht6560a_port_ops = {
47486 - .inherits = &legacy_base_port_ops,
47487 - .set_piomode = ht6560a_set_piomode,
47488 - };
47489 -@@ -400,7 +400,7 @@ static void ht6560b_set_piomode(struct a
47490 - ioread8(ap->ioaddr.status_addr);
47491 - }
47492 -
47493 --static struct ata_port_operations ht6560b_port_ops = {
47494 -+static const struct ata_port_operations ht6560b_port_ops = {
47495 - .inherits = &legacy_base_port_ops,
47496 - .set_piomode = ht6560b_set_piomode,
47497 - };
47498 -@@ -499,7 +499,7 @@ static void opti82c611a_set_piomode(stru
47499 - }
47500 -
47501 -
47502 --static struct ata_port_operations opti82c611a_port_ops = {
47503 -+static const struct ata_port_operations opti82c611a_port_ops = {
47504 - .inherits = &legacy_base_port_ops,
47505 - .set_piomode = opti82c611a_set_piomode,
47506 - };
47507 -@@ -609,7 +609,7 @@ static unsigned int opti82c46x_qc_issue(
47508 - return ata_sff_qc_issue(qc);
47509 - }
47510 -
47511 --static struct ata_port_operations opti82c46x_port_ops = {
47512 -+static const struct ata_port_operations opti82c46x_port_ops = {
47513 - .inherits = &legacy_base_port_ops,
47514 - .set_piomode = opti82c46x_set_piomode,
47515 - .qc_issue = opti82c46x_qc_issue,
47516 -@@ -771,20 +771,20 @@ static int qdi_port(struct platform_devi
47517 - return 0;
47518 - }
47519 -
47520 --static struct ata_port_operations qdi6500_port_ops = {
47521 -+static const struct ata_port_operations qdi6500_port_ops = {
47522 - .inherits = &legacy_base_port_ops,
47523 - .set_piomode = qdi6500_set_piomode,
47524 - .qc_issue = qdi_qc_issue,
47525 - .sff_data_xfer = vlb32_data_xfer,
47526 - };
47527 -
47528 --static struct ata_port_operations qdi6580_port_ops = {
47529 -+static const struct ata_port_operations qdi6580_port_ops = {
47530 - .inherits = &legacy_base_port_ops,
47531 - .set_piomode = qdi6580_set_piomode,
47532 - .sff_data_xfer = vlb32_data_xfer,
47533 - };
47534 -
47535 --static struct ata_port_operations qdi6580dp_port_ops = {
47536 -+static const struct ata_port_operations qdi6580dp_port_ops = {
47537 - .inherits = &legacy_base_port_ops,
47538 - .set_piomode = qdi6580dp_set_piomode,
47539 - .sff_data_xfer = vlb32_data_xfer,
47540 -@@ -855,7 +855,7 @@ static int winbond_port(struct platform_
47541 - return 0;
47542 - }
47543 -
47544 --static struct ata_port_operations winbond_port_ops = {
47545 -+static const struct ata_port_operations winbond_port_ops = {
47546 - .inherits = &legacy_base_port_ops,
47547 - .set_piomode = winbond_set_piomode,
47548 - .sff_data_xfer = vlb32_data_xfer,
47549 -@@ -978,7 +978,7 @@ static __init int legacy_init_one(struct
47550 - int pio_modes = controller->pio_mask;
47551 - unsigned long io = probe->port;
47552 - u32 mask = (1 << probe->slot);
47553 -- struct ata_port_operations *ops = controller->ops;
47554 -+ const struct ata_port_operations *ops = controller->ops;
47555 - struct legacy_data *ld = &legacy_data[probe->slot];
47556 - struct ata_host *host = NULL;
47557 - struct ata_port *ap;
47558 -diff -urNp linux-2.6.32.48/drivers/ata/pata_marvell.c linux-2.6.32.48/drivers/ata/pata_marvell.c
47559 ---- linux-2.6.32.48/drivers/ata/pata_marvell.c 2009-12-02 22:51:21.000000000 -0500
47560 -+++ linux-2.6.32.48/drivers/ata/pata_marvell.c 2011-11-12 12:46:42.000000000 -0500
47561 -@@ -100,7 +100,7 @@ static struct scsi_host_template marvell
47562 - ATA_BMDMA_SHT(DRV_NAME),
47563 - };
47564 -
47565 --static struct ata_port_operations marvell_ops = {
47566 -+static const struct ata_port_operations marvell_ops = {
47567 - .inherits = &ata_bmdma_port_ops,
47568 - .cable_detect = marvell_cable_detect,
47569 - .prereset = marvell_pre_reset,
47570 -diff -urNp linux-2.6.32.48/drivers/ata/pata_mpc52xx.c linux-2.6.32.48/drivers/ata/pata_mpc52xx.c
47571 ---- linux-2.6.32.48/drivers/ata/pata_mpc52xx.c 2011-11-12 12:44:28.000000000 -0500
47572 -+++ linux-2.6.32.48/drivers/ata/pata_mpc52xx.c 2011-11-12 12:46:42.000000000 -0500
47573 -@@ -609,7 +609,7 @@ static struct scsi_host_template mpc52xx
47574 - ATA_PIO_SHT(DRV_NAME),
47575 - };
47576 -
47577 --static struct ata_port_operations mpc52xx_ata_port_ops = {
47578 -+static const struct ata_port_operations mpc52xx_ata_port_ops = {
47579 - .inherits = &ata_bmdma_port_ops,
47580 - .sff_dev_select = mpc52xx_ata_dev_select,
47581 - .set_piomode = mpc52xx_ata_set_piomode,
47582 -diff -urNp linux-2.6.32.48/drivers/ata/pata_mpiix.c linux-2.6.32.48/drivers/ata/pata_mpiix.c
47583 ---- linux-2.6.32.48/drivers/ata/pata_mpiix.c 2009-12-02 22:51:21.000000000 -0500
47584 -+++ linux-2.6.32.48/drivers/ata/pata_mpiix.c 2011-11-12 12:46:42.000000000 -0500
47585 -@@ -140,7 +140,7 @@ static struct scsi_host_template mpiix_s
47586 - ATA_PIO_SHT(DRV_NAME),
47587 - };
47588 -
47589 --static struct ata_port_operations mpiix_port_ops = {
47590 -+static const struct ata_port_operations mpiix_port_ops = {
47591 - .inherits = &ata_sff_port_ops,
47592 - .qc_issue = mpiix_qc_issue,
47593 - .cable_detect = ata_cable_40wire,
47594 -diff -urNp linux-2.6.32.48/drivers/ata/pata_netcell.c linux-2.6.32.48/drivers/ata/pata_netcell.c
47595 ---- linux-2.6.32.48/drivers/ata/pata_netcell.c 2009-12-02 22:51:21.000000000 -0500
47596 -+++ linux-2.6.32.48/drivers/ata/pata_netcell.c 2011-11-12 12:46:42.000000000 -0500
47597 -@@ -34,7 +34,7 @@ static struct scsi_host_template netcell
47598 - ATA_BMDMA_SHT(DRV_NAME),
47599 - };
47600 -
47601 --static struct ata_port_operations netcell_ops = {
47602 -+static const struct ata_port_operations netcell_ops = {
47603 - .inherits = &ata_bmdma_port_ops,
47604 - .cable_detect = ata_cable_80wire,
47605 - .read_id = netcell_read_id,
47606 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ninja32.c linux-2.6.32.48/drivers/ata/pata_ninja32.c
47607 ---- linux-2.6.32.48/drivers/ata/pata_ninja32.c 2009-12-02 22:51:21.000000000 -0500
47608 -+++ linux-2.6.32.48/drivers/ata/pata_ninja32.c 2011-11-12 12:46:42.000000000 -0500
47609 -@@ -81,7 +81,7 @@ static struct scsi_host_template ninja32
47610 - ATA_BMDMA_SHT(DRV_NAME),
47611 - };
47612 -
47613 --static struct ata_port_operations ninja32_port_ops = {
47614 -+static const struct ata_port_operations ninja32_port_ops = {
47615 - .inherits = &ata_bmdma_port_ops,
47616 - .sff_dev_select = ninja32_dev_select,
47617 - .cable_detect = ata_cable_40wire,
47618 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ns87410.c linux-2.6.32.48/drivers/ata/pata_ns87410.c
47619 ---- linux-2.6.32.48/drivers/ata/pata_ns87410.c 2009-12-02 22:51:21.000000000 -0500
47620 -+++ linux-2.6.32.48/drivers/ata/pata_ns87410.c 2011-11-12 12:46:42.000000000 -0500
47621 -@@ -132,7 +132,7 @@ static struct scsi_host_template ns87410
47622 - ATA_PIO_SHT(DRV_NAME),
47623 - };
47624 -
47625 --static struct ata_port_operations ns87410_port_ops = {
47626 -+static const struct ata_port_operations ns87410_port_ops = {
47627 - .inherits = &ata_sff_port_ops,
47628 - .qc_issue = ns87410_qc_issue,
47629 - .cable_detect = ata_cable_40wire,
47630 -diff -urNp linux-2.6.32.48/drivers/ata/pata_ns87415.c linux-2.6.32.48/drivers/ata/pata_ns87415.c
47631 ---- linux-2.6.32.48/drivers/ata/pata_ns87415.c 2009-12-02 22:51:21.000000000 -0500
47632 -+++ linux-2.6.32.48/drivers/ata/pata_ns87415.c 2011-11-12 12:46:42.000000000 -0500
47633 -@@ -299,7 +299,7 @@ static u8 ns87560_bmdma_status(struct at
47634 - }
47635 - #endif /* 87560 SuperIO Support */
47636 -
47637 --static struct ata_port_operations ns87415_pata_ops = {
47638 -+static const struct ata_port_operations ns87415_pata_ops = {
47639 - .inherits = &ata_bmdma_port_ops,
47640 -
47641 - .check_atapi_dma = ns87415_check_atapi_dma,
47642 -@@ -313,7 +313,7 @@ static struct ata_port_operations ns8741
47643 - };
47644 -
47645 - #if defined(CONFIG_SUPERIO)
47646 --static struct ata_port_operations ns87560_pata_ops = {
47647 -+static const struct ata_port_operations ns87560_pata_ops = {
47648 - .inherits = &ns87415_pata_ops,
47649 - .sff_tf_read = ns87560_tf_read,
47650 - .sff_check_status = ns87560_check_status,
47651 -diff -urNp linux-2.6.32.48/drivers/ata/pata_octeon_cf.c linux-2.6.32.48/drivers/ata/pata_octeon_cf.c
47652 ---- linux-2.6.32.48/drivers/ata/pata_octeon_cf.c 2009-12-02 22:51:21.000000000 -0500
47653 -+++ linux-2.6.32.48/drivers/ata/pata_octeon_cf.c 2011-11-12 12:46:42.000000000 -0500
47654 -@@ -801,6 +801,7 @@ static unsigned int octeon_cf_qc_issue(s
47655 - return 0;
47656 - }
47657 -
47658 -+/* cannot be const */
47659 - static struct ata_port_operations octeon_cf_ops = {
47660 - .inherits = &ata_sff_port_ops,
47661 - .check_atapi_dma = octeon_cf_check_atapi_dma,
47662 -diff -urNp linux-2.6.32.48/drivers/ata/pata_oldpiix.c linux-2.6.32.48/drivers/ata/pata_oldpiix.c
47663 ---- linux-2.6.32.48/drivers/ata/pata_oldpiix.c 2009-12-02 22:51:21.000000000 -0500
47664 -+++ linux-2.6.32.48/drivers/ata/pata_oldpiix.c 2011-11-12 12:46:42.000000000 -0500
47665 -@@ -208,7 +208,7 @@ static struct scsi_host_template oldpiix
47666 - ATA_BMDMA_SHT(DRV_NAME),
47667 - };
47668 -
47669 --static struct ata_port_operations oldpiix_pata_ops = {
47670 -+static const struct ata_port_operations oldpiix_pata_ops = {
47671 - .inherits = &ata_bmdma_port_ops,
47672 - .qc_issue = oldpiix_qc_issue,
47673 - .cable_detect = ata_cable_40wire,
47674 -diff -urNp linux-2.6.32.48/drivers/ata/pata_opti.c linux-2.6.32.48/drivers/ata/pata_opti.c
47675 ---- linux-2.6.32.48/drivers/ata/pata_opti.c 2009-12-02 22:51:21.000000000 -0500
47676 -+++ linux-2.6.32.48/drivers/ata/pata_opti.c 2011-11-12 12:46:42.000000000 -0500
47677 -@@ -152,7 +152,7 @@ static struct scsi_host_template opti_sh
47678 - ATA_PIO_SHT(DRV_NAME),
47679 - };
47680 -
47681 --static struct ata_port_operations opti_port_ops = {
47682 -+static const struct ata_port_operations opti_port_ops = {
47683 - .inherits = &ata_sff_port_ops,
47684 - .cable_detect = ata_cable_40wire,
47685 - .set_piomode = opti_set_piomode,
47686 -diff -urNp linux-2.6.32.48/drivers/ata/pata_optidma.c linux-2.6.32.48/drivers/ata/pata_optidma.c
47687 ---- linux-2.6.32.48/drivers/ata/pata_optidma.c 2009-12-02 22:51:21.000000000 -0500
47688 -+++ linux-2.6.32.48/drivers/ata/pata_optidma.c 2011-11-12 12:46:42.000000000 -0500
47689 -@@ -337,7 +337,7 @@ static struct scsi_host_template optidma
47690 - ATA_BMDMA_SHT(DRV_NAME),
47691 - };
47692 -
47693 --static struct ata_port_operations optidma_port_ops = {
47694 -+static const struct ata_port_operations optidma_port_ops = {
47695 - .inherits = &ata_bmdma_port_ops,
47696 - .cable_detect = ata_cable_40wire,
47697 - .set_piomode = optidma_set_pio_mode,
47698 -@@ -346,7 +346,7 @@ static struct ata_port_operations optidm
47699 - .prereset = optidma_pre_reset,
47700 - };
47701 -
47702 --static struct ata_port_operations optiplus_port_ops = {
47703 -+static const struct ata_port_operations optiplus_port_ops = {
47704 - .inherits = &optidma_port_ops,
47705 - .set_piomode = optiplus_set_pio_mode,
47706 - .set_dmamode = optiplus_set_dma_mode,
47707 -diff -urNp linux-2.6.32.48/drivers/ata/pata_palmld.c linux-2.6.32.48/drivers/ata/pata_palmld.c
47708 ---- linux-2.6.32.48/drivers/ata/pata_palmld.c 2009-12-02 22:51:21.000000000 -0500
47709 -+++ linux-2.6.32.48/drivers/ata/pata_palmld.c 2011-11-12 12:46:42.000000000 -0500
47710 -@@ -37,7 +37,7 @@ static struct scsi_host_template palmld_
47711 - ATA_PIO_SHT(DRV_NAME),
47712 - };
47713 -
47714 --static struct ata_port_operations palmld_port_ops = {
47715 -+static const struct ata_port_operations palmld_port_ops = {
47716 - .inherits = &ata_sff_port_ops,
47717 - .sff_data_xfer = ata_sff_data_xfer_noirq,
47718 - .cable_detect = ata_cable_40wire,
47719 -diff -urNp linux-2.6.32.48/drivers/ata/pata_pcmcia.c linux-2.6.32.48/drivers/ata/pata_pcmcia.c
47720 ---- linux-2.6.32.48/drivers/ata/pata_pcmcia.c 2009-12-02 22:51:21.000000000 -0500
47721 -+++ linux-2.6.32.48/drivers/ata/pata_pcmcia.c 2011-11-12 12:46:42.000000000 -0500
47722 -@@ -162,14 +162,14 @@ static struct scsi_host_template pcmcia_
47723 - ATA_PIO_SHT(DRV_NAME),
47724 - };
47725 -
47726 --static struct ata_port_operations pcmcia_port_ops = {
47727 -+static const struct ata_port_operations pcmcia_port_ops = {
47728 - .inherits = &ata_sff_port_ops,
47729 - .sff_data_xfer = ata_sff_data_xfer_noirq,
47730 - .cable_detect = ata_cable_40wire,
47731 - .set_mode = pcmcia_set_mode,
47732 - };
47733 -
47734 --static struct ata_port_operations pcmcia_8bit_port_ops = {
47735 -+static const struct ata_port_operations pcmcia_8bit_port_ops = {
47736 - .inherits = &ata_sff_port_ops,
47737 - .sff_data_xfer = ata_data_xfer_8bit,
47738 - .cable_detect = ata_cable_40wire,
47739 -@@ -256,7 +256,7 @@ static int pcmcia_init_one(struct pcmcia
47740 - unsigned long io_base, ctl_base;
47741 - void __iomem *io_addr, *ctl_addr;
47742 - int n_ports = 1;
47743 -- struct ata_port_operations *ops = &pcmcia_port_ops;
47744 -+ const struct ata_port_operations *ops = &pcmcia_port_ops;
47745 -
47746 - info = kzalloc(sizeof(*info), GFP_KERNEL);
47747 - if (info == NULL)
47748 -diff -urNp linux-2.6.32.48/drivers/ata/pata_pdc2027x.c linux-2.6.32.48/drivers/ata/pata_pdc2027x.c
47749 ---- linux-2.6.32.48/drivers/ata/pata_pdc2027x.c 2009-12-02 22:51:21.000000000 -0500
47750 -+++ linux-2.6.32.48/drivers/ata/pata_pdc2027x.c 2011-11-12 12:46:42.000000000 -0500
47751 -@@ -132,14 +132,14 @@ static struct scsi_host_template pdc2027
47752 - ATA_BMDMA_SHT(DRV_NAME),
47753 - };
47754 -
47755 --static struct ata_port_operations pdc2027x_pata100_ops = {
47756 -+static const struct ata_port_operations pdc2027x_pata100_ops = {
47757 - .inherits = &ata_bmdma_port_ops,
47758 - .check_atapi_dma = pdc2027x_check_atapi_dma,
47759 - .cable_detect = pdc2027x_cable_detect,
47760 - .prereset = pdc2027x_prereset,
47761 - };
47762 -
47763 --static struct ata_port_operations pdc2027x_pata133_ops = {
47764 -+static const struct ata_port_operations pdc2027x_pata133_ops = {
47765 - .inherits = &pdc2027x_pata100_ops,
47766 - .mode_filter = pdc2027x_mode_filter,
47767 - .set_piomode = pdc2027x_set_piomode,
47768 -diff -urNp linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c
47769 ---- linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c 2011-11-12 12:44:28.000000000 -0500
47770 -+++ linux-2.6.32.48/drivers/ata/pata_pdc202xx_old.c 2011-11-12 12:46:42.000000000 -0500
47771 -@@ -274,7 +274,7 @@ static struct scsi_host_template pdc202x
47772 - ATA_BMDMA_SHT(DRV_NAME),
47773 - };
47774 -
47775 --static struct ata_port_operations pdc2024x_port_ops = {
47776 -+static const struct ata_port_operations pdc2024x_port_ops = {
47777 - .inherits = &ata_bmdma_port_ops,
47778 -
47779 - .cable_detect = ata_cable_40wire,
47780 -@@ -284,7 +284,7 @@ static struct ata_port_operations pdc202
47781 - .sff_exec_command = pdc202xx_exec_command,
47782 - };
47783 -
47784 --static struct ata_port_operations pdc2026x_port_ops = {
47785 -+static const struct ata_port_operations pdc2026x_port_ops = {
47786 - .inherits = &pdc2024x_port_ops,
47787 -
47788 - .check_atapi_dma = pdc2026x_check_atapi_dma,
47789 -diff -urNp linux-2.6.32.48/drivers/ata/pata_platform.c linux-2.6.32.48/drivers/ata/pata_platform.c
47790 ---- linux-2.6.32.48/drivers/ata/pata_platform.c 2009-12-02 22:51:21.000000000 -0500
47791 -+++ linux-2.6.32.48/drivers/ata/pata_platform.c 2011-11-12 12:46:42.000000000 -0500
47792 -@@ -48,7 +48,7 @@ static struct scsi_host_template pata_pl
47793 - ATA_PIO_SHT(DRV_NAME),
47794 - };
47795 -
47796 --static struct ata_port_operations pata_platform_port_ops = {
47797 -+static const struct ata_port_operations pata_platform_port_ops = {
47798 - .inherits = &ata_sff_port_ops,
47799 - .sff_data_xfer = ata_sff_data_xfer_noirq,
47800 - .cable_detect = ata_cable_unknown,
47801 -diff -urNp linux-2.6.32.48/drivers/ata/pata_qdi.c linux-2.6.32.48/drivers/ata/pata_qdi.c
47802 ---- linux-2.6.32.48/drivers/ata/pata_qdi.c 2009-12-02 22:51:21.000000000 -0500
47803 -+++ linux-2.6.32.48/drivers/ata/pata_qdi.c 2011-11-12 12:46:42.000000000 -0500
47804 -@@ -157,7 +157,7 @@ static struct scsi_host_template qdi_sht
47805 - ATA_PIO_SHT(DRV_NAME),
47806 - };
47807 -
47808 --static struct ata_port_operations qdi6500_port_ops = {
47809 -+static const struct ata_port_operations qdi6500_port_ops = {
47810 - .inherits = &ata_sff_port_ops,
47811 - .qc_issue = qdi_qc_issue,
47812 - .sff_data_xfer = qdi_data_xfer,
47813 -@@ -165,7 +165,7 @@ static struct ata_port_operations qdi650
47814 - .set_piomode = qdi6500_set_piomode,
47815 - };
47816 -
47817 --static struct ata_port_operations qdi6580_port_ops = {
47818 -+static const struct ata_port_operations qdi6580_port_ops = {
47819 - .inherits = &qdi6500_port_ops,
47820 - .set_piomode = qdi6580_set_piomode,
47821 - };
47822 -diff -urNp linux-2.6.32.48/drivers/ata/pata_radisys.c linux-2.6.32.48/drivers/ata/pata_radisys.c
47823 ---- linux-2.6.32.48/drivers/ata/pata_radisys.c 2009-12-02 22:51:21.000000000 -0500
47824 -+++ linux-2.6.32.48/drivers/ata/pata_radisys.c 2011-11-12 12:46:42.000000000 -0500
47825 -@@ -187,7 +187,7 @@ static struct scsi_host_template radisys
47826 - ATA_BMDMA_SHT(DRV_NAME),
47827 - };
47828 -
47829 --static struct ata_port_operations radisys_pata_ops = {
47830 -+static const struct ata_port_operations radisys_pata_ops = {
47831 - .inherits = &ata_bmdma_port_ops,
47832 - .qc_issue = radisys_qc_issue,
47833 - .cable_detect = ata_cable_unknown,
47834 -diff -urNp linux-2.6.32.48/drivers/ata/pata_rb532_cf.c linux-2.6.32.48/drivers/ata/pata_rb532_cf.c
47835 ---- linux-2.6.32.48/drivers/ata/pata_rb532_cf.c 2009-12-02 22:51:21.000000000 -0500
47836 -+++ linux-2.6.32.48/drivers/ata/pata_rb532_cf.c 2011-11-12 12:46:42.000000000 -0500
47837 -@@ -68,7 +68,7 @@ static irqreturn_t rb532_pata_irq_handle
47838 - return IRQ_HANDLED;
47839 - }
47840 -
47841 --static struct ata_port_operations rb532_pata_port_ops = {
47842 -+static const struct ata_port_operations rb532_pata_port_ops = {
47843 - .inherits = &ata_sff_port_ops,
47844 - .sff_data_xfer = ata_sff_data_xfer32,
47845 - };
47846 -diff -urNp linux-2.6.32.48/drivers/ata/pata_rdc.c linux-2.6.32.48/drivers/ata/pata_rdc.c
47847 ---- linux-2.6.32.48/drivers/ata/pata_rdc.c 2009-12-02 22:51:21.000000000 -0500
47848 -+++ linux-2.6.32.48/drivers/ata/pata_rdc.c 2011-11-12 12:46:42.000000000 -0500
47849 -@@ -272,7 +272,7 @@ static void rdc_set_dmamode(struct ata_p
47850 - pci_write_config_byte(dev, 0x48, udma_enable);
47851 - }
47852 -
47853 --static struct ata_port_operations rdc_pata_ops = {
47854 -+static const struct ata_port_operations rdc_pata_ops = {
47855 - .inherits = &ata_bmdma32_port_ops,
47856 - .cable_detect = rdc_pata_cable_detect,
47857 - .set_piomode = rdc_set_piomode,
47858 -diff -urNp linux-2.6.32.48/drivers/ata/pata_rz1000.c linux-2.6.32.48/drivers/ata/pata_rz1000.c
47859 ---- linux-2.6.32.48/drivers/ata/pata_rz1000.c 2009-12-02 22:51:21.000000000 -0500
47860 -+++ linux-2.6.32.48/drivers/ata/pata_rz1000.c 2011-11-12 12:46:42.000000000 -0500
47861 -@@ -54,7 +54,7 @@ static struct scsi_host_template rz1000_
47862 - ATA_PIO_SHT(DRV_NAME),
47863 - };
47864 -
47865 --static struct ata_port_operations rz1000_port_ops = {
47866 -+static const struct ata_port_operations rz1000_port_ops = {
47867 - .inherits = &ata_sff_port_ops,
47868 - .cable_detect = ata_cable_40wire,
47869 - .set_mode = rz1000_set_mode,
47870 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sc1200.c linux-2.6.32.48/drivers/ata/pata_sc1200.c
47871 ---- linux-2.6.32.48/drivers/ata/pata_sc1200.c 2009-12-02 22:51:21.000000000 -0500
47872 -+++ linux-2.6.32.48/drivers/ata/pata_sc1200.c 2011-11-12 12:46:42.000000000 -0500
47873 -@@ -207,7 +207,7 @@ static struct scsi_host_template sc1200_
47874 - .sg_tablesize = LIBATA_DUMB_MAX_PRD,
47875 - };
47876 -
47877 --static struct ata_port_operations sc1200_port_ops = {
47878 -+static const struct ata_port_operations sc1200_port_ops = {
47879 - .inherits = &ata_bmdma_port_ops,
47880 - .qc_prep = ata_sff_dumb_qc_prep,
47881 - .qc_issue = sc1200_qc_issue,
47882 -diff -urNp linux-2.6.32.48/drivers/ata/pata_scc.c linux-2.6.32.48/drivers/ata/pata_scc.c
47883 ---- linux-2.6.32.48/drivers/ata/pata_scc.c 2009-12-02 22:51:21.000000000 -0500
47884 -+++ linux-2.6.32.48/drivers/ata/pata_scc.c 2011-11-12 12:46:42.000000000 -0500
47885 -@@ -965,7 +965,7 @@ static struct scsi_host_template scc_sht
47886 - ATA_BMDMA_SHT(DRV_NAME),
47887 - };
47888 -
47889 --static struct ata_port_operations scc_pata_ops = {
47890 -+static const struct ata_port_operations scc_pata_ops = {
47891 - .inherits = &ata_bmdma_port_ops,
47892 -
47893 - .set_piomode = scc_set_piomode,
47894 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sch.c linux-2.6.32.48/drivers/ata/pata_sch.c
47895 ---- linux-2.6.32.48/drivers/ata/pata_sch.c 2009-12-02 22:51:21.000000000 -0500
47896 -+++ linux-2.6.32.48/drivers/ata/pata_sch.c 2011-11-12 12:46:42.000000000 -0500
47897 -@@ -75,7 +75,7 @@ static struct scsi_host_template sch_sht
47898 - ATA_BMDMA_SHT(DRV_NAME),
47899 - };
47900 -
47901 --static struct ata_port_operations sch_pata_ops = {
47902 -+static const struct ata_port_operations sch_pata_ops = {
47903 - .inherits = &ata_bmdma_port_ops,
47904 - .cable_detect = ata_cable_unknown,
47905 - .set_piomode = sch_set_piomode,
47906 -diff -urNp linux-2.6.32.48/drivers/ata/pata_serverworks.c linux-2.6.32.48/drivers/ata/pata_serverworks.c
47907 ---- linux-2.6.32.48/drivers/ata/pata_serverworks.c 2009-12-02 22:51:21.000000000 -0500
47908 -+++ linux-2.6.32.48/drivers/ata/pata_serverworks.c 2011-11-12 12:46:42.000000000 -0500
47909 -@@ -299,7 +299,7 @@ static struct scsi_host_template serverw
47910 - ATA_BMDMA_SHT(DRV_NAME),
47911 - };
47912 -
47913 --static struct ata_port_operations serverworks_osb4_port_ops = {
47914 -+static const struct ata_port_operations serverworks_osb4_port_ops = {
47915 - .inherits = &ata_bmdma_port_ops,
47916 - .cable_detect = serverworks_cable_detect,
47917 - .mode_filter = serverworks_osb4_filter,
47918 -@@ -307,7 +307,7 @@ static struct ata_port_operations server
47919 - .set_dmamode = serverworks_set_dmamode,
47920 - };
47921 -
47922 --static struct ata_port_operations serverworks_csb_port_ops = {
47923 -+static const struct ata_port_operations serverworks_csb_port_ops = {
47924 - .inherits = &serverworks_osb4_port_ops,
47925 - .mode_filter = serverworks_csb_filter,
47926 - };
47927 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sil680.c linux-2.6.32.48/drivers/ata/pata_sil680.c
47928 ---- linux-2.6.32.48/drivers/ata/pata_sil680.c 2011-11-12 12:44:28.000000000 -0500
47929 -+++ linux-2.6.32.48/drivers/ata/pata_sil680.c 2011-11-12 12:46:42.000000000 -0500
47930 -@@ -194,7 +194,7 @@ static struct scsi_host_template sil680_
47931 - ATA_BMDMA_SHT(DRV_NAME),
47932 - };
47933 -
47934 --static struct ata_port_operations sil680_port_ops = {
47935 -+static const struct ata_port_operations sil680_port_ops = {
47936 - .inherits = &ata_bmdma32_port_ops,
47937 - .cable_detect = sil680_cable_detect,
47938 - .set_piomode = sil680_set_piomode,
47939 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sis.c linux-2.6.32.48/drivers/ata/pata_sis.c
47940 ---- linux-2.6.32.48/drivers/ata/pata_sis.c 2009-12-02 22:51:21.000000000 -0500
47941 -+++ linux-2.6.32.48/drivers/ata/pata_sis.c 2011-11-12 12:46:42.000000000 -0500
47942 -@@ -503,47 +503,47 @@ static struct scsi_host_template sis_sht
47943 - ATA_BMDMA_SHT(DRV_NAME),
47944 - };
47945 -
47946 --static struct ata_port_operations sis_133_for_sata_ops = {
47947 -+static const struct ata_port_operations sis_133_for_sata_ops = {
47948 - .inherits = &ata_bmdma_port_ops,
47949 - .set_piomode = sis_133_set_piomode,
47950 - .set_dmamode = sis_133_set_dmamode,
47951 - .cable_detect = sis_133_cable_detect,
47952 - };
47953 -
47954 --static struct ata_port_operations sis_base_ops = {
47955 -+static const struct ata_port_operations sis_base_ops = {
47956 - .inherits = &ata_bmdma_port_ops,
47957 - .prereset = sis_pre_reset,
47958 - };
47959 -
47960 --static struct ata_port_operations sis_133_ops = {
47961 -+static const struct ata_port_operations sis_133_ops = {
47962 - .inherits = &sis_base_ops,
47963 - .set_piomode = sis_133_set_piomode,
47964 - .set_dmamode = sis_133_set_dmamode,
47965 - .cable_detect = sis_133_cable_detect,
47966 - };
47967 -
47968 --static struct ata_port_operations sis_133_early_ops = {
47969 -+static const struct ata_port_operations sis_133_early_ops = {
47970 - .inherits = &sis_base_ops,
47971 - .set_piomode = sis_100_set_piomode,
47972 - .set_dmamode = sis_133_early_set_dmamode,
47973 - .cable_detect = sis_66_cable_detect,
47974 - };
47975 -
47976 --static struct ata_port_operations sis_100_ops = {
47977 -+static const struct ata_port_operations sis_100_ops = {
47978 - .inherits = &sis_base_ops,
47979 - .set_piomode = sis_100_set_piomode,
47980 - .set_dmamode = sis_100_set_dmamode,
47981 - .cable_detect = sis_66_cable_detect,
47982 - };
47983 -
47984 --static struct ata_port_operations sis_66_ops = {
47985 -+static const struct ata_port_operations sis_66_ops = {
47986 - .inherits = &sis_base_ops,
47987 - .set_piomode = sis_old_set_piomode,
47988 - .set_dmamode = sis_66_set_dmamode,
47989 - .cable_detect = sis_66_cable_detect,
47990 - };
47991 -
47992 --static struct ata_port_operations sis_old_ops = {
47993 -+static const struct ata_port_operations sis_old_ops = {
47994 - .inherits = &sis_base_ops,
47995 - .set_piomode = sis_old_set_piomode,
47996 - .set_dmamode = sis_old_set_dmamode,
47997 -diff -urNp linux-2.6.32.48/drivers/ata/pata_sl82c105.c linux-2.6.32.48/drivers/ata/pata_sl82c105.c
47998 ---- linux-2.6.32.48/drivers/ata/pata_sl82c105.c 2009-12-02 22:51:21.000000000 -0500
47999 -+++ linux-2.6.32.48/drivers/ata/pata_sl82c105.c 2011-11-12 12:46:42.000000000 -0500
48000 -@@ -231,7 +231,7 @@ static struct scsi_host_template sl82c10
48001 - ATA_BMDMA_SHT(DRV_NAME),
48002 - };
48003 -
48004 --static struct ata_port_operations sl82c105_port_ops = {
48005 -+static const struct ata_port_operations sl82c105_port_ops = {
48006 - .inherits = &ata_bmdma_port_ops,
48007 - .qc_defer = sl82c105_qc_defer,
48008 - .bmdma_start = sl82c105_bmdma_start,
48009 -diff -urNp linux-2.6.32.48/drivers/ata/pata_triflex.c linux-2.6.32.48/drivers/ata/pata_triflex.c
48010 ---- linux-2.6.32.48/drivers/ata/pata_triflex.c 2009-12-02 22:51:21.000000000 -0500
48011 -+++ linux-2.6.32.48/drivers/ata/pata_triflex.c 2011-11-12 12:46:42.000000000 -0500
48012 -@@ -178,7 +178,7 @@ static struct scsi_host_template triflex
48013 - ATA_BMDMA_SHT(DRV_NAME),
48014 - };
48015 -
48016 --static struct ata_port_operations triflex_port_ops = {
48017 -+static const struct ata_port_operations triflex_port_ops = {
48018 - .inherits = &ata_bmdma_port_ops,
48019 - .bmdma_start = triflex_bmdma_start,
48020 - .bmdma_stop = triflex_bmdma_stop,
48021 -diff -urNp linux-2.6.32.48/drivers/ata/pata_via.c linux-2.6.32.48/drivers/ata/pata_via.c
48022 ---- linux-2.6.32.48/drivers/ata/pata_via.c 2011-11-12 12:44:28.000000000 -0500
48023 -+++ linux-2.6.32.48/drivers/ata/pata_via.c 2011-11-12 12:46:42.000000000 -0500
48024 -@@ -419,7 +419,7 @@ static struct scsi_host_template via_sht
48025 - ATA_BMDMA_SHT(DRV_NAME),
48026 - };
48027 -
48028 --static struct ata_port_operations via_port_ops = {
48029 -+static const struct ata_port_operations via_port_ops = {
48030 - .inherits = &ata_bmdma_port_ops,
48031 - .cable_detect = via_cable_detect,
48032 - .set_piomode = via_set_piomode,
48033 -@@ -429,7 +429,7 @@ static struct ata_port_operations via_po
48034 - .port_start = via_port_start,
48035 - };
48036 -
48037 --static struct ata_port_operations via_port_ops_noirq = {
48038 -+static const struct ata_port_operations via_port_ops_noirq = {
48039 - .inherits = &via_port_ops,
48040 - .sff_data_xfer = ata_sff_data_xfer_noirq,
48041 - };
48042 -diff -urNp linux-2.6.32.48/drivers/ata/pata_winbond.c linux-2.6.32.48/drivers/ata/pata_winbond.c
48043 ---- linux-2.6.32.48/drivers/ata/pata_winbond.c 2009-12-02 22:51:21.000000000 -0500
48044 -+++ linux-2.6.32.48/drivers/ata/pata_winbond.c 2011-11-12 12:46:42.000000000 -0500
48045 -@@ -125,7 +125,7 @@ static struct scsi_host_template winbond
48046 - ATA_PIO_SHT(DRV_NAME),
48047 - };
48048 -
48049 --static struct ata_port_operations winbond_port_ops = {
48050 -+static const struct ata_port_operations winbond_port_ops = {
48051 - .inherits = &ata_sff_port_ops,
48052 - .sff_data_xfer = winbond_data_xfer,
48053 - .cable_detect = ata_cable_40wire,
48054 -diff -urNp linux-2.6.32.48/drivers/ata/pdc_adma.c linux-2.6.32.48/drivers/ata/pdc_adma.c
48055 ---- linux-2.6.32.48/drivers/ata/pdc_adma.c 2009-12-02 22:51:21.000000000 -0500
48056 -+++ linux-2.6.32.48/drivers/ata/pdc_adma.c 2011-11-12 12:46:42.000000000 -0500
48057 -@@ -145,7 +145,7 @@ static struct scsi_host_template adma_at
48058 - .dma_boundary = ADMA_DMA_BOUNDARY,
48059 - };
48060 -
48061 --static struct ata_port_operations adma_ata_ops = {
48062 -+static const struct ata_port_operations adma_ata_ops = {
48063 - .inherits = &ata_sff_port_ops,
48064 -
48065 - .lost_interrupt = ATA_OP_NULL,
48066 -diff -urNp linux-2.6.32.48/drivers/ata/sata_fsl.c linux-2.6.32.48/drivers/ata/sata_fsl.c
48067 ---- linux-2.6.32.48/drivers/ata/sata_fsl.c 2009-12-02 22:51:21.000000000 -0500
48068 -+++ linux-2.6.32.48/drivers/ata/sata_fsl.c 2011-11-12 12:46:42.000000000 -0500
48069 -@@ -1258,7 +1258,7 @@ static struct scsi_host_template sata_fs
48070 - .dma_boundary = ATA_DMA_BOUNDARY,
48071 - };
48072 -
48073 --static struct ata_port_operations sata_fsl_ops = {
48074 -+static const struct ata_port_operations sata_fsl_ops = {
48075 - .inherits = &sata_pmp_port_ops,
48076 -
48077 - .qc_defer = ata_std_qc_defer,
48078 -diff -urNp linux-2.6.32.48/drivers/ata/sata_inic162x.c linux-2.6.32.48/drivers/ata/sata_inic162x.c
48079 ---- linux-2.6.32.48/drivers/ata/sata_inic162x.c 2009-12-02 22:51:21.000000000 -0500
48080 -+++ linux-2.6.32.48/drivers/ata/sata_inic162x.c 2011-11-12 12:46:42.000000000 -0500
48081 -@@ -721,7 +721,7 @@ static int inic_port_start(struct ata_po
48082 - return 0;
48083 - }
48084 -
48085 --static struct ata_port_operations inic_port_ops = {
48086 -+static const struct ata_port_operations inic_port_ops = {
48087 - .inherits = &sata_port_ops,
48088 -
48089 - .check_atapi_dma = inic_check_atapi_dma,
48090 -diff -urNp linux-2.6.32.48/drivers/ata/sata_mv.c linux-2.6.32.48/drivers/ata/sata_mv.c
48091 ---- linux-2.6.32.48/drivers/ata/sata_mv.c 2011-11-12 12:44:28.000000000 -0500
48092 -+++ linux-2.6.32.48/drivers/ata/sata_mv.c 2011-11-12 12:46:42.000000000 -0500
48093 -@@ -656,7 +656,7 @@ static struct scsi_host_template mv6_sht
48094 - .dma_boundary = MV_DMA_BOUNDARY,
48095 - };
48096 -
48097 --static struct ata_port_operations mv5_ops = {
48098 -+static const struct ata_port_operations mv5_ops = {
48099 - .inherits = &ata_sff_port_ops,
48100 -
48101 - .lost_interrupt = ATA_OP_NULL,
48102 -@@ -678,7 +678,7 @@ static struct ata_port_operations mv5_op
48103 - .port_stop = mv_port_stop,
48104 - };
48105 -
48106 --static struct ata_port_operations mv6_ops = {
48107 -+static const struct ata_port_operations mv6_ops = {
48108 - .inherits = &mv5_ops,
48109 - .dev_config = mv6_dev_config,
48110 - .scr_read = mv_scr_read,
48111 -@@ -698,7 +698,7 @@ static struct ata_port_operations mv6_op
48112 - .bmdma_status = mv_bmdma_status,
48113 - };
48114 -
48115 --static struct ata_port_operations mv_iie_ops = {
48116 -+static const struct ata_port_operations mv_iie_ops = {
48117 - .inherits = &mv6_ops,
48118 - .dev_config = ATA_OP_NULL,
48119 - .qc_prep = mv_qc_prep_iie,
48120 -diff -urNp linux-2.6.32.48/drivers/ata/sata_nv.c linux-2.6.32.48/drivers/ata/sata_nv.c
48121 ---- linux-2.6.32.48/drivers/ata/sata_nv.c 2011-11-12 12:44:28.000000000 -0500
48122 -+++ linux-2.6.32.48/drivers/ata/sata_nv.c 2011-11-12 12:46:42.000000000 -0500
48123 -@@ -464,7 +464,7 @@ static struct scsi_host_template nv_swnc
48124 - * cases. Define nv_hardreset() which only kicks in for post-boot
48125 - * probing and use it for all variants.
48126 - */
48127 --static struct ata_port_operations nv_generic_ops = {
48128 -+static const struct ata_port_operations nv_generic_ops = {
48129 - .inherits = &ata_bmdma_port_ops,
48130 - .lost_interrupt = ATA_OP_NULL,
48131 - .scr_read = nv_scr_read,
48132 -@@ -472,20 +472,20 @@ static struct ata_port_operations nv_gen
48133 - .hardreset = nv_hardreset,
48134 - };
48135 -
48136 --static struct ata_port_operations nv_nf2_ops = {
48137 -+static const struct ata_port_operations nv_nf2_ops = {
48138 - .inherits = &nv_generic_ops,
48139 - .freeze = nv_nf2_freeze,
48140 - .thaw = nv_nf2_thaw,
48141 - };
48142 -
48143 --static struct ata_port_operations nv_ck804_ops = {
48144 -+static const struct ata_port_operations nv_ck804_ops = {
48145 - .inherits = &nv_generic_ops,
48146 - .freeze = nv_ck804_freeze,
48147 - .thaw = nv_ck804_thaw,
48148 - .host_stop = nv_ck804_host_stop,
48149 - };
48150 -
48151 --static struct ata_port_operations nv_adma_ops = {
48152 -+static const struct ata_port_operations nv_adma_ops = {
48153 - .inherits = &nv_ck804_ops,
48154 -
48155 - .check_atapi_dma = nv_adma_check_atapi_dma,
48156 -@@ -509,7 +509,7 @@ static struct ata_port_operations nv_adm
48157 - .host_stop = nv_adma_host_stop,
48158 - };
48159 -
48160 --static struct ata_port_operations nv_swncq_ops = {
48161 -+static const struct ata_port_operations nv_swncq_ops = {
48162 - .inherits = &nv_generic_ops,
48163 -
48164 - .qc_defer = ata_std_qc_defer,
48165 -diff -urNp linux-2.6.32.48/drivers/ata/sata_promise.c linux-2.6.32.48/drivers/ata/sata_promise.c
48166 ---- linux-2.6.32.48/drivers/ata/sata_promise.c 2009-12-02 22:51:21.000000000 -0500
48167 -+++ linux-2.6.32.48/drivers/ata/sata_promise.c 2011-11-12 12:46:42.000000000 -0500
48168 -@@ -195,7 +195,7 @@ static const struct ata_port_operations
48169 - .error_handler = pdc_error_handler,
48170 - };
48171 -
48172 --static struct ata_port_operations pdc_sata_ops = {
48173 -+static const struct ata_port_operations pdc_sata_ops = {
48174 - .inherits = &pdc_common_ops,
48175 - .cable_detect = pdc_sata_cable_detect,
48176 - .freeze = pdc_sata_freeze,
48177 -@@ -208,14 +208,14 @@ static struct ata_port_operations pdc_sa
48178 -
48179 - /* First-generation chips need a more restrictive ->check_atapi_dma op,
48180 - and ->freeze/thaw that ignore the hotplug controls. */
48181 --static struct ata_port_operations pdc_old_sata_ops = {
48182 -+static const struct ata_port_operations pdc_old_sata_ops = {
48183 - .inherits = &pdc_sata_ops,
48184 - .freeze = pdc_freeze,
48185 - .thaw = pdc_thaw,
48186 - .check_atapi_dma = pdc_old_sata_check_atapi_dma,
48187 - };
48188 -
48189 --static struct ata_port_operations pdc_pata_ops = {
48190 -+static const struct ata_port_operations pdc_pata_ops = {
48191 - .inherits = &pdc_common_ops,
48192 - .cable_detect = pdc_pata_cable_detect,
48193 - .freeze = pdc_freeze,
48194 -diff -urNp linux-2.6.32.48/drivers/ata/sata_qstor.c linux-2.6.32.48/drivers/ata/sata_qstor.c
48195 ---- linux-2.6.32.48/drivers/ata/sata_qstor.c 2009-12-02 22:51:21.000000000 -0500
48196 -+++ linux-2.6.32.48/drivers/ata/sata_qstor.c 2011-11-12 12:46:42.000000000 -0500
48197 -@@ -132,7 +132,7 @@ static struct scsi_host_template qs_ata_
48198 - .dma_boundary = QS_DMA_BOUNDARY,
48199 - };
48200 -
48201 --static struct ata_port_operations qs_ata_ops = {
48202 -+static const struct ata_port_operations qs_ata_ops = {
48203 - .inherits = &ata_sff_port_ops,
48204 -
48205 - .check_atapi_dma = qs_check_atapi_dma,
48206 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sil24.c linux-2.6.32.48/drivers/ata/sata_sil24.c
48207 ---- linux-2.6.32.48/drivers/ata/sata_sil24.c 2009-12-02 22:51:21.000000000 -0500
48208 -+++ linux-2.6.32.48/drivers/ata/sata_sil24.c 2011-11-12 12:46:42.000000000 -0500
48209 -@@ -388,7 +388,7 @@ static struct scsi_host_template sil24_s
48210 - .dma_boundary = ATA_DMA_BOUNDARY,
48211 - };
48212 -
48213 --static struct ata_port_operations sil24_ops = {
48214 -+static const struct ata_port_operations sil24_ops = {
48215 - .inherits = &sata_pmp_port_ops,
48216 -
48217 - .qc_defer = sil24_qc_defer,
48218 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sil.c linux-2.6.32.48/drivers/ata/sata_sil.c
48219 ---- linux-2.6.32.48/drivers/ata/sata_sil.c 2009-12-02 22:51:21.000000000 -0500
48220 -+++ linux-2.6.32.48/drivers/ata/sata_sil.c 2011-11-12 12:46:42.000000000 -0500
48221 -@@ -182,7 +182,7 @@ static struct scsi_host_template sil_sht
48222 - .sg_tablesize = ATA_MAX_PRD
48223 - };
48224 -
48225 --static struct ata_port_operations sil_ops = {
48226 -+static const struct ata_port_operations sil_ops = {
48227 - .inherits = &ata_bmdma32_port_ops,
48228 - .dev_config = sil_dev_config,
48229 - .set_mode = sil_set_mode,
48230 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sis.c linux-2.6.32.48/drivers/ata/sata_sis.c
48231 ---- linux-2.6.32.48/drivers/ata/sata_sis.c 2009-12-02 22:51:21.000000000 -0500
48232 -+++ linux-2.6.32.48/drivers/ata/sata_sis.c 2011-11-12 12:46:42.000000000 -0500
48233 -@@ -89,7 +89,7 @@ static struct scsi_host_template sis_sht
48234 - ATA_BMDMA_SHT(DRV_NAME),
48235 - };
48236 -
48237 --static struct ata_port_operations sis_ops = {
48238 -+static const struct ata_port_operations sis_ops = {
48239 - .inherits = &ata_bmdma_port_ops,
48240 - .scr_read = sis_scr_read,
48241 - .scr_write = sis_scr_write,
48242 -diff -urNp linux-2.6.32.48/drivers/ata/sata_svw.c linux-2.6.32.48/drivers/ata/sata_svw.c
48243 ---- linux-2.6.32.48/drivers/ata/sata_svw.c 2009-12-02 22:51:21.000000000 -0500
48244 -+++ linux-2.6.32.48/drivers/ata/sata_svw.c 2011-11-12 12:46:42.000000000 -0500
48245 -@@ -344,7 +344,7 @@ static struct scsi_host_template k2_sata
48246 - };
48247 -
48248 -
48249 --static struct ata_port_operations k2_sata_ops = {
48250 -+static const struct ata_port_operations k2_sata_ops = {
48251 - .inherits = &ata_bmdma_port_ops,
48252 - .sff_tf_load = k2_sata_tf_load,
48253 - .sff_tf_read = k2_sata_tf_read,
48254 -diff -urNp linux-2.6.32.48/drivers/ata/sata_sx4.c linux-2.6.32.48/drivers/ata/sata_sx4.c
48255 ---- linux-2.6.32.48/drivers/ata/sata_sx4.c 2009-12-02 22:51:21.000000000 -0500
48256 -+++ linux-2.6.32.48/drivers/ata/sata_sx4.c 2011-11-12 12:46:42.000000000 -0500
48257 -@@ -248,7 +248,7 @@ static struct scsi_host_template pdc_sat
48258 - };
48259 -
48260 - /* TODO: inherit from base port_ops after converting to new EH */
48261 --static struct ata_port_operations pdc_20621_ops = {
48262 -+static const struct ata_port_operations pdc_20621_ops = {
48263 - .inherits = &ata_sff_port_ops,
48264 -
48265 - .check_atapi_dma = pdc_check_atapi_dma,
48266 -diff -urNp linux-2.6.32.48/drivers/ata/sata_uli.c linux-2.6.32.48/drivers/ata/sata_uli.c
48267 ---- linux-2.6.32.48/drivers/ata/sata_uli.c 2009-12-02 22:51:21.000000000 -0500
48268 -+++ linux-2.6.32.48/drivers/ata/sata_uli.c 2011-11-12 12:46:42.000000000 -0500
48269 -@@ -79,7 +79,7 @@ static struct scsi_host_template uli_sht
48270 - ATA_BMDMA_SHT(DRV_NAME),
48271 - };
48272 -
48273 --static struct ata_port_operations uli_ops = {
48274 -+static const struct ata_port_operations uli_ops = {
48275 - .inherits = &ata_bmdma_port_ops,
48276 - .scr_read = uli_scr_read,
48277 - .scr_write = uli_scr_write,
48278 -diff -urNp linux-2.6.32.48/drivers/ata/sata_via.c linux-2.6.32.48/drivers/ata/sata_via.c
48279 ---- linux-2.6.32.48/drivers/ata/sata_via.c 2011-11-12 12:44:28.000000000 -0500
48280 -+++ linux-2.6.32.48/drivers/ata/sata_via.c 2011-11-12 12:46:42.000000000 -0500
48281 -@@ -115,32 +115,32 @@ static struct scsi_host_template svia_sh
48282 - ATA_BMDMA_SHT(DRV_NAME),
48283 - };
48284 -
48285 --static struct ata_port_operations svia_base_ops = {
48286 -+static const struct ata_port_operations svia_base_ops = {
48287 - .inherits = &ata_bmdma_port_ops,
48288 - .sff_tf_load = svia_tf_load,
48289 - };
48290 -
48291 --static struct ata_port_operations vt6420_sata_ops = {
48292 -+static const struct ata_port_operations vt6420_sata_ops = {
48293 - .inherits = &svia_base_ops,
48294 - .freeze = svia_noop_freeze,
48295 - .prereset = vt6420_prereset,
48296 - .bmdma_start = vt6420_bmdma_start,
48297 - };
48298 -
48299 --static struct ata_port_operations vt6421_pata_ops = {
48300 -+static const struct ata_port_operations vt6421_pata_ops = {
48301 - .inherits = &svia_base_ops,
48302 - .cable_detect = vt6421_pata_cable_detect,
48303 - .set_piomode = vt6421_set_pio_mode,
48304 - .set_dmamode = vt6421_set_dma_mode,
48305 - };
48306 -
48307 --static struct ata_port_operations vt6421_sata_ops = {
48308 -+static const struct ata_port_operations vt6421_sata_ops = {
48309 - .inherits = &svia_base_ops,
48310 - .scr_read = svia_scr_read,
48311 - .scr_write = svia_scr_write,
48312 - };
48313 -
48314 --static struct ata_port_operations vt8251_ops = {
48315 -+static const struct ata_port_operations vt8251_ops = {
48316 - .inherits = &svia_base_ops,
48317 - .hardreset = sata_std_hardreset,
48318 - .scr_read = vt8251_scr_read,
48319 -diff -urNp linux-2.6.32.48/drivers/ata/sata_vsc.c linux-2.6.32.48/drivers/ata/sata_vsc.c
48320 ---- linux-2.6.32.48/drivers/ata/sata_vsc.c 2009-12-02 22:51:21.000000000 -0500
48321 -+++ linux-2.6.32.48/drivers/ata/sata_vsc.c 2011-11-12 12:46:42.000000000 -0500
48322 -@@ -306,7 +306,7 @@ static struct scsi_host_template vsc_sat
48323 - };
48324 -
48325 -
48326 --static struct ata_port_operations vsc_sata_ops = {
48327 -+static const struct ata_port_operations vsc_sata_ops = {
48328 - .inherits = &ata_bmdma_port_ops,
48329 - /* The IRQ handling is not quite standard SFF behaviour so we
48330 - cannot use the default lost interrupt handler */
48331 -diff -urNp linux-2.6.32.48/drivers/atm/adummy.c linux-2.6.32.48/drivers/atm/adummy.c
48332 ---- linux-2.6.32.48/drivers/atm/adummy.c 2009-12-02 22:51:21.000000000 -0500
48333 -+++ linux-2.6.32.48/drivers/atm/adummy.c 2011-11-12 12:46:42.000000000 -0500
48334 -@@ -77,7 +77,7 @@ adummy_send(struct atm_vcc *vcc, struct
48335 - vcc->pop(vcc, skb);
48336 - else
48337 - dev_kfree_skb_any(skb);
48338 -- atomic_inc(&vcc->stats->tx);
48339 -+ atomic_inc_unchecked(&vcc->stats->tx);
48340 -
48341 - return 0;
48342 - }
48343 -diff -urNp linux-2.6.32.48/drivers/atm/ambassador.c linux-2.6.32.48/drivers/atm/ambassador.c
48344 ---- linux-2.6.32.48/drivers/atm/ambassador.c 2009-12-02 22:51:21.000000000 -0500
48345 -+++ linux-2.6.32.48/drivers/atm/ambassador.c 2011-11-12 12:46:42.000000000 -0500
48346 -@@ -453,7 +453,7 @@ static void tx_complete (amb_dev * dev,
48347 - PRINTD (DBG_FLOW|DBG_TX, "tx_complete %p %p", dev, tx);
48348 -
48349 - // VC layer stats
48350 -- atomic_inc(&ATM_SKB(skb)->vcc->stats->tx);
48351 -+ atomic_inc_unchecked(&ATM_SKB(skb)->vcc->stats->tx);
48352 -
48353 - // free the descriptor
48354 - kfree (tx_descr);
48355 -@@ -494,7 +494,7 @@ static void rx_complete (amb_dev * dev,
48356 - dump_skb ("<<<", vc, skb);
48357 -
48358 - // VC layer stats
48359 -- atomic_inc(&atm_vcc->stats->rx);
48360 -+ atomic_inc_unchecked(&atm_vcc->stats->rx);
48361 - __net_timestamp(skb);
48362 - // end of our responsability
48363 - atm_vcc->push (atm_vcc, skb);
48364 -@@ -509,7 +509,7 @@ static void rx_complete (amb_dev * dev,
48365 - } else {
48366 - PRINTK (KERN_INFO, "dropped over-size frame");
48367 - // should we count this?
48368 -- atomic_inc(&atm_vcc->stats->rx_drop);
48369 -+ atomic_inc_unchecked(&atm_vcc->stats->rx_drop);
48370 - }
48371 -
48372 - } else {
48373 -@@ -1341,7 +1341,7 @@ static int amb_send (struct atm_vcc * at
48374 - }
48375 -
48376 - if (check_area (skb->data, skb->len)) {
48377 -- atomic_inc(&atm_vcc->stats->tx_err);
48378 -+ atomic_inc_unchecked(&atm_vcc->stats->tx_err);
48379 - return -ENOMEM; // ?
48380 - }
48381 -
48382 -diff -urNp linux-2.6.32.48/drivers/atm/atmtcp.c linux-2.6.32.48/drivers/atm/atmtcp.c
48383 ---- linux-2.6.32.48/drivers/atm/atmtcp.c 2009-12-02 22:51:21.000000000 -0500
48384 -+++ linux-2.6.32.48/drivers/atm/atmtcp.c 2011-11-12 12:46:42.000000000 -0500
48385 -@@ -206,7 +206,7 @@ static int atmtcp_v_send(struct atm_vcc
48386 - if (vcc->pop) vcc->pop(vcc,skb);
48387 - else dev_kfree_skb(skb);
48388 - if (dev_data) return 0;
48389 -- atomic_inc(&vcc->stats->tx_err);
48390 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48391 - return -ENOLINK;
48392 - }
48393 - size = skb->len+sizeof(struct atmtcp_hdr);
48394 -@@ -214,7 +214,7 @@ static int atmtcp_v_send(struct atm_vcc
48395 - if (!new_skb) {
48396 - if (vcc->pop) vcc->pop(vcc,skb);
48397 - else dev_kfree_skb(skb);
48398 -- atomic_inc(&vcc->stats->tx_err);
48399 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48400 - return -ENOBUFS;
48401 - }
48402 - hdr = (void *) skb_put(new_skb,sizeof(struct atmtcp_hdr));
48403 -@@ -225,8 +225,8 @@ static int atmtcp_v_send(struct atm_vcc
48404 - if (vcc->pop) vcc->pop(vcc,skb);
48405 - else dev_kfree_skb(skb);
48406 - out_vcc->push(out_vcc,new_skb);
48407 -- atomic_inc(&vcc->stats->tx);
48408 -- atomic_inc(&out_vcc->stats->rx);
48409 -+ atomic_inc_unchecked(&vcc->stats->tx);
48410 -+ atomic_inc_unchecked(&out_vcc->stats->rx);
48411 - return 0;
48412 - }
48413 -
48414 -@@ -300,7 +300,7 @@ static int atmtcp_c_send(struct atm_vcc
48415 - out_vcc = find_vcc(dev, ntohs(hdr->vpi), ntohs(hdr->vci));
48416 - read_unlock(&vcc_sklist_lock);
48417 - if (!out_vcc) {
48418 -- atomic_inc(&vcc->stats->tx_err);
48419 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48420 - goto done;
48421 - }
48422 - skb_pull(skb,sizeof(struct atmtcp_hdr));
48423 -@@ -312,8 +312,8 @@ static int atmtcp_c_send(struct atm_vcc
48424 - __net_timestamp(new_skb);
48425 - skb_copy_from_linear_data(skb, skb_put(new_skb, skb->len), skb->len);
48426 - out_vcc->push(out_vcc,new_skb);
48427 -- atomic_inc(&vcc->stats->tx);
48428 -- atomic_inc(&out_vcc->stats->rx);
48429 -+ atomic_inc_unchecked(&vcc->stats->tx);
48430 -+ atomic_inc_unchecked(&out_vcc->stats->rx);
48431 - done:
48432 - if (vcc->pop) vcc->pop(vcc,skb);
48433 - else dev_kfree_skb(skb);
48434 -diff -urNp linux-2.6.32.48/drivers/atm/eni.c linux-2.6.32.48/drivers/atm/eni.c
48435 ---- linux-2.6.32.48/drivers/atm/eni.c 2009-12-02 22:51:21.000000000 -0500
48436 -+++ linux-2.6.32.48/drivers/atm/eni.c 2011-11-12 12:46:42.000000000 -0500
48437 -@@ -525,7 +525,7 @@ static int rx_aal0(struct atm_vcc *vcc)
48438 - DPRINTK(DEV_LABEL "(itf %d): trashing empty cell\n",
48439 - vcc->dev->number);
48440 - length = 0;
48441 -- atomic_inc(&vcc->stats->rx_err);
48442 -+ atomic_inc_unchecked(&vcc->stats->rx_err);
48443 - }
48444 - else {
48445 - length = ATM_CELL_SIZE-1; /* no HEC */
48446 -@@ -580,7 +580,7 @@ static int rx_aal5(struct atm_vcc *vcc)
48447 - size);
48448 - }
48449 - eff = length = 0;
48450 -- atomic_inc(&vcc->stats->rx_err);
48451 -+ atomic_inc_unchecked(&vcc->stats->rx_err);
48452 - }
48453 - else {
48454 - size = (descr & MID_RED_COUNT)*(ATM_CELL_PAYLOAD >> 2);
48455 -@@ -597,7 +597,7 @@ static int rx_aal5(struct atm_vcc *vcc)
48456 - "(VCI=%d,length=%ld,size=%ld (descr 0x%lx))\n",
48457 - vcc->dev->number,vcc->vci,length,size << 2,descr);
48458 - length = eff = 0;
48459 -- atomic_inc(&vcc->stats->rx_err);
48460 -+ atomic_inc_unchecked(&vcc->stats->rx_err);
48461 - }
48462 - }
48463 - skb = eff ? atm_alloc_charge(vcc,eff << 2,GFP_ATOMIC) : NULL;
48464 -@@ -770,7 +770,7 @@ rx_dequeued++;
48465 - vcc->push(vcc,skb);
48466 - pushed++;
48467 - }
48468 -- atomic_inc(&vcc->stats->rx);
48469 -+ atomic_inc_unchecked(&vcc->stats->rx);
48470 - }
48471 - wake_up(&eni_dev->rx_wait);
48472 - }
48473 -@@ -1227,7 +1227,7 @@ static void dequeue_tx(struct atm_dev *d
48474 - PCI_DMA_TODEVICE);
48475 - if (vcc->pop) vcc->pop(vcc,skb);
48476 - else dev_kfree_skb_irq(skb);
48477 -- atomic_inc(&vcc->stats->tx);
48478 -+ atomic_inc_unchecked(&vcc->stats->tx);
48479 - wake_up(&eni_dev->tx_wait);
48480 - dma_complete++;
48481 - }
48482 -diff -urNp linux-2.6.32.48/drivers/atm/firestream.c linux-2.6.32.48/drivers/atm/firestream.c
48483 ---- linux-2.6.32.48/drivers/atm/firestream.c 2009-12-02 22:51:21.000000000 -0500
48484 -+++ linux-2.6.32.48/drivers/atm/firestream.c 2011-11-12 12:46:42.000000000 -0500
48485 -@@ -748,7 +748,7 @@ static void process_txdone_queue (struct
48486 - }
48487 - }
48488 -
48489 -- atomic_inc(&ATM_SKB(skb)->vcc->stats->tx);
48490 -+ atomic_inc_unchecked(&ATM_SKB(skb)->vcc->stats->tx);
48491 +- atomic_inc(&ATM_SKB(skb)->vcc->stats->tx);
48492 ++ atomic_inc_unchecked(&ATM_SKB(skb)->vcc->stats->tx);
48493
48494 fs_dprintk (FS_DEBUG_TXMEM, "i");
48495 fs_dprintk (FS_DEBUG_ALLOC, "Free t-skb: %p\n", skb);
48496 -@@ -815,7 +815,7 @@ static void process_incoming (struct fs_
48497 +@@ -816,7 +816,7 @@ static void process_incoming (struct fs_
48498 #endif
48499 skb_put (skb, qe->p1 & 0xffff);
48500 ATM_SKB(skb)->vcc = atm_vcc;
48501 @@ -27232,7 +23888,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/firestream.c linux-2.6.32.48/drivers/atm/
48502 __net_timestamp(skb);
48503 fs_dprintk (FS_DEBUG_ALLOC, "Free rec-skb: %p (pushed)\n", skb);
48504 atm_vcc->push (atm_vcc, skb);
48505 -@@ -836,12 +836,12 @@ static void process_incoming (struct fs_
48506 +@@ -837,12 +837,12 @@ static void process_incoming (struct fs_
48507 kfree (pe);
48508 }
48509 if (atm_vcc)
48510 @@ -27247,10 +23903,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/firestream.c linux-2.6.32.48/drivers/atm/
48511 break;
48512 default: /* Hmm. Haven't written the code to handle the others yet... -- REW */
48513 printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n",
48514 -diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fore200e.c
48515 ---- linux-2.6.32.48/drivers/atm/fore200e.c 2009-12-02 22:51:21.000000000 -0500
48516 -+++ linux-2.6.32.48/drivers/atm/fore200e.c 2011-11-12 12:46:42.000000000 -0500
48517 -@@ -931,9 +931,9 @@ fore200e_tx_irq(struct fore200e* fore200
48518 +diff -urNp linux-3.0.8/drivers/atm/fore200e.c linux-3.0.8/drivers/atm/fore200e.c
48519 +--- linux-3.0.8/drivers/atm/fore200e.c 2011-07-21 22:17:23.000000000 -0400
48520 ++++ linux-3.0.8/drivers/atm/fore200e.c 2011-08-23 21:47:55.000000000 -0400
48521 +@@ -933,9 +933,9 @@ fore200e_tx_irq(struct fore200e* fore200
48522 #endif
48523 /* check error condition */
48524 if (*entry->status & STATUS_ERROR)
48525 @@ -27262,7 +23918,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fo
48526 }
48527 }
48528
48529 -@@ -1082,7 +1082,7 @@ fore200e_push_rpd(struct fore200e* fore2
48530 +@@ -1084,7 +1084,7 @@ fore200e_push_rpd(struct fore200e* fore2
48531 if (skb == NULL) {
48532 DPRINTK(2, "unable to alloc new skb, rx PDU length = %d\n", pdu_len);
48533
48534 @@ -27271,7 +23927,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fo
48535 return -ENOMEM;
48536 }
48537
48538 -@@ -1125,14 +1125,14 @@ fore200e_push_rpd(struct fore200e* fore2
48539 +@@ -1127,14 +1127,14 @@ fore200e_push_rpd(struct fore200e* fore2
48540
48541 dev_kfree_skb_any(skb);
48542
48543 @@ -27288,7 +23944,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fo
48544
48545 ASSERT(atomic_read(&sk_atm(vcc)->sk_wmem_alloc) >= 0);
48546
48547 -@@ -1210,7 +1210,7 @@ fore200e_rx_irq(struct fore200e* fore200
48548 +@@ -1212,7 +1212,7 @@ fore200e_rx_irq(struct fore200e* fore200
48549 DPRINTK(2, "damaged PDU on %d.%d.%d\n",
48550 fore200e->atm_dev->number,
48551 entry->rpd->atm_header.vpi, entry->rpd->atm_header.vci);
48552 @@ -27297,7 +23953,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fo
48553 }
48554 }
48555
48556 -@@ -1655,7 +1655,7 @@ fore200e_send(struct atm_vcc *vcc, struc
48557 +@@ -1657,7 +1657,7 @@ fore200e_send(struct atm_vcc *vcc, struc
48558 goto retry_here;
48559 }
48560
48561 @@ -27306,10 +23962,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/fore200e.c linux-2.6.32.48/drivers/atm/fo
48562
48563 fore200e->tx_sat++;
48564 DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n",
48565 -diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48566 ---- linux-2.6.32.48/drivers/atm/he.c 2009-12-02 22:51:21.000000000 -0500
48567 -+++ linux-2.6.32.48/drivers/atm/he.c 2011-11-12 12:46:42.000000000 -0500
48568 -@@ -1769,7 +1769,7 @@ he_service_rbrq(struct he_dev *he_dev, i
48569 +diff -urNp linux-3.0.8/drivers/atm/he.c linux-3.0.8/drivers/atm/he.c
48570 +--- linux-3.0.8/drivers/atm/he.c 2011-07-21 22:17:23.000000000 -0400
48571 ++++ linux-3.0.8/drivers/atm/he.c 2011-08-23 21:47:55.000000000 -0400
48572 +@@ -1709,7 +1709,7 @@ he_service_rbrq(struct he_dev *he_dev, i
48573
48574 if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) {
48575 hprintk("HBUF_ERR! (cid 0x%x)\n", cid);
48576 @@ -27318,7 +23974,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48577 goto return_host_buffers;
48578 }
48579
48580 -@@ -1802,7 +1802,7 @@ he_service_rbrq(struct he_dev *he_dev, i
48581 +@@ -1736,7 +1736,7 @@ he_service_rbrq(struct he_dev *he_dev, i
48582 RBRQ_LEN_ERR(he_dev->rbrq_head)
48583 ? "LEN_ERR" : "",
48584 vcc->vpi, vcc->vci);
48585 @@ -27327,7 +23983,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48586 goto return_host_buffers;
48587 }
48588
48589 -@@ -1861,7 +1861,7 @@ he_service_rbrq(struct he_dev *he_dev, i
48590 +@@ -1788,7 +1788,7 @@ he_service_rbrq(struct he_dev *he_dev, i
48591 vcc->push(vcc, skb);
48592 spin_lock(&he_dev->global_lock);
48593
48594 @@ -27336,7 +23992,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48595
48596 return_host_buffers:
48597 ++pdus_assembled;
48598 -@@ -2206,7 +2206,7 @@ __enqueue_tpd(struct he_dev *he_dev, str
48599 +@@ -2114,7 +2114,7 @@ __enqueue_tpd(struct he_dev *he_dev, str
48600 tpd->vcc->pop(tpd->vcc, tpd->skb);
48601 else
48602 dev_kfree_skb_any(tpd->skb);
48603 @@ -27345,7 +24001,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48604 }
48605 pci_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status));
48606 return;
48607 -@@ -2618,7 +2618,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48608 +@@ -2526,7 +2526,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48609 vcc->pop(vcc, skb);
48610 else
48611 dev_kfree_skb_any(skb);
48612 @@ -27354,7 +24010,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48613 return -EINVAL;
48614 }
48615
48616 -@@ -2629,7 +2629,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48617 +@@ -2537,7 +2537,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48618 vcc->pop(vcc, skb);
48619 else
48620 dev_kfree_skb_any(skb);
48621 @@ -27363,7 +24019,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48622 return -EINVAL;
48623 }
48624 #endif
48625 -@@ -2641,7 +2641,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48626 +@@ -2549,7 +2549,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48627 vcc->pop(vcc, skb);
48628 else
48629 dev_kfree_skb_any(skb);
48630 @@ -27372,7 +24028,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48631 spin_unlock_irqrestore(&he_dev->global_lock, flags);
48632 return -ENOMEM;
48633 }
48634 -@@ -2683,7 +2683,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48635 +@@ -2591,7 +2591,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48636 vcc->pop(vcc, skb);
48637 else
48638 dev_kfree_skb_any(skb);
48639 @@ -27381,7 +24037,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48640 spin_unlock_irqrestore(&he_dev->global_lock, flags);
48641 return -ENOMEM;
48642 }
48643 -@@ -2714,7 +2714,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48644 +@@ -2622,7 +2622,7 @@ he_send(struct atm_vcc *vcc, struct sk_b
48645 __enqueue_tpd(he_dev, tpd, cid);
48646 spin_unlock_irqrestore(&he_dev->global_lock, flags);
48647
48648 @@ -27390,19 +24046,19 @@ diff -urNp linux-2.6.32.48/drivers/atm/he.c linux-2.6.32.48/drivers/atm/he.c
48649
48650 return 0;
48651 }
48652 -diff -urNp linux-2.6.32.48/drivers/atm/horizon.c linux-2.6.32.48/drivers/atm/horizon.c
48653 ---- linux-2.6.32.48/drivers/atm/horizon.c 2009-12-02 22:51:21.000000000 -0500
48654 -+++ linux-2.6.32.48/drivers/atm/horizon.c 2011-11-12 12:46:42.000000000 -0500
48655 -@@ -1033,7 +1033,7 @@ static void rx_schedule (hrz_dev * dev,
48656 +diff -urNp linux-3.0.8/drivers/atm/horizon.c linux-3.0.8/drivers/atm/horizon.c
48657 +--- linux-3.0.8/drivers/atm/horizon.c 2011-07-21 22:17:23.000000000 -0400
48658 ++++ linux-3.0.8/drivers/atm/horizon.c 2011-08-23 21:47:55.000000000 -0400
48659 +@@ -1034,7 +1034,7 @@ static void rx_schedule (hrz_dev * dev,
48660 {
48661 struct atm_vcc * vcc = ATM_SKB(skb)->vcc;
48662 // VC layer stats
48663 - atomic_inc(&vcc->stats->rx);
48664 + atomic_inc_unchecked(&vcc->stats->rx);
48665 __net_timestamp(skb);
48666 - // end of our responsability
48667 + // end of our responsibility
48668 vcc->push (vcc, skb);
48669 -@@ -1185,7 +1185,7 @@ static void tx_schedule (hrz_dev * const
48670 +@@ -1186,7 +1186,7 @@ static void tx_schedule (hrz_dev * const
48671 dev->tx_iovec = NULL;
48672
48673 // VC layer stats
48674 @@ -27411,10 +24067,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/horizon.c linux-2.6.32.48/drivers/atm/hor
48675
48676 // free the skb
48677 hrz_kfree_skb (skb);
48678 -diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/idt77252.c
48679 ---- linux-2.6.32.48/drivers/atm/idt77252.c 2009-12-02 22:51:21.000000000 -0500
48680 -+++ linux-2.6.32.48/drivers/atm/idt77252.c 2011-11-12 12:46:42.000000000 -0500
48681 -@@ -810,7 +810,7 @@ drain_scq(struct idt77252_dev *card, str
48682 +diff -urNp linux-3.0.8/drivers/atm/idt77252.c linux-3.0.8/drivers/atm/idt77252.c
48683 +--- linux-3.0.8/drivers/atm/idt77252.c 2011-07-21 22:17:23.000000000 -0400
48684 ++++ linux-3.0.8/drivers/atm/idt77252.c 2011-08-23 21:47:55.000000000 -0400
48685 +@@ -811,7 +811,7 @@ drain_scq(struct idt77252_dev *card, str
48686 else
48687 dev_kfree_skb(skb);
48688
48689 @@ -27423,7 +24079,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
48690 }
48691
48692 atomic_dec(&scq->used);
48693 -@@ -1073,13 +1073,13 @@ dequeue_rx(struct idt77252_dev *card, st
48694 +@@ -1074,13 +1074,13 @@ dequeue_rx(struct idt77252_dev *card, st
48695 if ((sb = dev_alloc_skb(64)) == NULL) {
48696 printk("%s: Can't allocate buffers for aal0.\n",
48697 card->name);
48698 @@ -27439,7 +24095,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
48699 dev_kfree_skb(sb);
48700 break;
48701 }
48702 -@@ -1096,7 +1096,7 @@ dequeue_rx(struct idt77252_dev *card, st
48703 +@@ -1097,7 +1097,7 @@ dequeue_rx(struct idt77252_dev *card, st
48704 ATM_SKB(sb)->vcc = vcc;
48705 __net_timestamp(sb);
48706 vcc->push(vcc, sb);
48707 @@ -27448,7 +24104,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
48708
48709 cell += ATM_CELL_PAYLOAD;
48710 }
48711 -@@ -1133,13 +1133,13 @@ dequeue_rx(struct idt77252_dev *card, st
48712 +@@ -1134,13 +1134,13 @@ dequeue_rx(struct idt77252_dev *card, st
48713 "(CDC: %08x)\n",
48714 card->name, len, rpp->len, readl(SAR_REG_CDC));
48715 recycle_rx_pool_skb(card, rpp);
48716 @@ -27464,7 +24120,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
48717 return;
48718 }
48719 if (skb_queue_len(&rpp->queue) > 1) {
48720 -@@ -1150,7 +1150,7 @@ dequeue_rx(struct idt77252_dev *card, st
48721 +@@ -1151,7 +1151,7 @@ dequeue_rx(struct idt77252_dev *card, st
48722 RXPRINTK("%s: Can't alloc RX skb.\n",
48723 card->name);
48724 recycle_rx_pool_skb(card, rpp);
48725 @@ -27473,7 +24129,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
48726 return;
48727 }
48728 if (!atm_charge(vcc, skb->truesize)) {
48729 -@@ -1169,7 +1169,7 @@ dequeue_rx(struct idt77252_dev *card, st
48730 +@@ -1170,7 +1170,7 @@ dequeue_rx(struct idt77252_dev *card, st
48731 __net_timestamp(skb);
48732
48733 vcc->push(vcc, skb);
48734 @@ -27482,7 +24138,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
48735
48736 return;
48737 }
48738 -@@ -1191,7 +1191,7 @@ dequeue_rx(struct idt77252_dev *card, st
48739 +@@ -1192,7 +1192,7 @@ dequeue_rx(struct idt77252_dev *card, st
48740 __net_timestamp(skb);
48741
48742 vcc->push(vcc, skb);
48743 @@ -27568,10 +24224,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/idt77252.c linux-2.6.32.48/drivers/atm/id
48744 return -ENOMEM;
48745 }
48746 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
48747 -diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/iphase.c
48748 ---- linux-2.6.32.48/drivers/atm/iphase.c 2009-12-02 22:51:21.000000000 -0500
48749 -+++ linux-2.6.32.48/drivers/atm/iphase.c 2011-11-12 12:46:42.000000000 -0500
48750 -@@ -1123,7 +1123,7 @@ static int rx_pkt(struct atm_dev *dev)
48751 +diff -urNp linux-3.0.8/drivers/atm/iphase.c linux-3.0.8/drivers/atm/iphase.c
48752 +--- linux-3.0.8/drivers/atm/iphase.c 2011-07-21 22:17:23.000000000 -0400
48753 ++++ linux-3.0.8/drivers/atm/iphase.c 2011-08-23 21:47:55.000000000 -0400
48754 +@@ -1120,7 +1120,7 @@ static int rx_pkt(struct atm_dev *dev)
48755 status = (u_short) (buf_desc_ptr->desc_mode);
48756 if (status & (RX_CER | RX_PTE | RX_OFL))
48757 {
48758 @@ -27580,7 +24236,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48759 IF_ERR(printk("IA: bad packet, dropping it");)
48760 if (status & RX_CER) {
48761 IF_ERR(printk(" cause: packet CRC error\n");)
48762 -@@ -1146,7 +1146,7 @@ static int rx_pkt(struct atm_dev *dev)
48763 +@@ -1143,7 +1143,7 @@ static int rx_pkt(struct atm_dev *dev)
48764 len = dma_addr - buf_addr;
48765 if (len > iadev->rx_buf_sz) {
48766 printk("Over %d bytes sdu received, dropped!!!\n", iadev->rx_buf_sz);
48767 @@ -27589,7 +24245,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48768 goto out_free_desc;
48769 }
48770
48771 -@@ -1296,7 +1296,7 @@ static void rx_dle_intr(struct atm_dev *
48772 +@@ -1293,7 +1293,7 @@ static void rx_dle_intr(struct atm_dev *
48773 ia_vcc = INPH_IA_VCC(vcc);
48774 if (ia_vcc == NULL)
48775 {
48776 @@ -27598,7 +24254,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48777 dev_kfree_skb_any(skb);
48778 atm_return(vcc, atm_guess_pdu2truesize(len));
48779 goto INCR_DLE;
48780 -@@ -1308,7 +1308,7 @@ static void rx_dle_intr(struct atm_dev *
48781 +@@ -1305,7 +1305,7 @@ static void rx_dle_intr(struct atm_dev *
48782 if ((length > iadev->rx_buf_sz) || (length >
48783 (skb->len - sizeof(struct cpcs_trailer))))
48784 {
48785 @@ -27607,7 +24263,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48786 IF_ERR(printk("rx_dle_intr: Bad AAL5 trailer %d (skb len %d)",
48787 length, skb->len);)
48788 dev_kfree_skb_any(skb);
48789 -@@ -1324,7 +1324,7 @@ static void rx_dle_intr(struct atm_dev *
48790 +@@ -1321,7 +1321,7 @@ static void rx_dle_intr(struct atm_dev *
48791
48792 IF_RX(printk("rx_dle_intr: skb push");)
48793 vcc->push(vcc,skb);
48794 @@ -27616,7 +24272,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48795 iadev->rx_pkt_cnt++;
48796 }
48797 INCR_DLE:
48798 -@@ -2806,15 +2806,15 @@ static int ia_ioctl(struct atm_dev *dev,
48799 +@@ -2801,15 +2801,15 @@ static int ia_ioctl(struct atm_dev *dev,
48800 {
48801 struct k_sonet_stats *stats;
48802 stats = &PRIV(_ia_dev[board])->sonet_stats;
48803 @@ -27641,7 +24297,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48804 }
48805 ia_cmds.status = 0;
48806 break;
48807 -@@ -2919,7 +2919,7 @@ static int ia_pkt_tx (struct atm_vcc *vc
48808 +@@ -2914,7 +2914,7 @@ static int ia_pkt_tx (struct atm_vcc *vc
48809 if ((desc == 0) || (desc > iadev->num_tx_desc))
48810 {
48811 IF_ERR(printk(DEV_LABEL "invalid desc for send: %d\n", desc);)
48812 @@ -27650,7 +24306,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48813 if (vcc->pop)
48814 vcc->pop(vcc, skb);
48815 else
48816 -@@ -3024,14 +3024,14 @@ static int ia_pkt_tx (struct atm_vcc *vc
48817 +@@ -3019,14 +3019,14 @@ static int ia_pkt_tx (struct atm_vcc *vc
48818 ATM_DESC(skb) = vcc->vci;
48819 skb_queue_tail(&iadev->tx_dma_q, skb);
48820
48821 @@ -27667,10 +24323,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/iphase.c linux-2.6.32.48/drivers/atm/ipha
48822 if (iavcc->vc_desc_cnt > 10) {
48823 vcc->tx_quota = vcc->tx_quota * 3 / 4;
48824 printk("Tx1: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
48825 -diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai.c
48826 ---- linux-2.6.32.48/drivers/atm/lanai.c 2009-12-02 22:51:21.000000000 -0500
48827 -+++ linux-2.6.32.48/drivers/atm/lanai.c 2011-11-12 12:46:42.000000000 -0500
48828 -@@ -1305,7 +1305,7 @@ static void lanai_send_one_aal5(struct l
48829 +diff -urNp linux-3.0.8/drivers/atm/lanai.c linux-3.0.8/drivers/atm/lanai.c
48830 +--- linux-3.0.8/drivers/atm/lanai.c 2011-07-21 22:17:23.000000000 -0400
48831 ++++ linux-3.0.8/drivers/atm/lanai.c 2011-08-23 21:47:55.000000000 -0400
48832 +@@ -1303,7 +1303,7 @@ static void lanai_send_one_aal5(struct l
48833 vcc_tx_add_aal5_trailer(lvcc, skb->len, 0, 0);
48834 lanai_endtx(lanai, lvcc);
48835 lanai_free_skb(lvcc->tx.atmvcc, skb);
48836 @@ -27679,7 +24335,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai
48837 }
48838
48839 /* Try to fill the buffer - don't call unless there is backlog */
48840 -@@ -1428,7 +1428,7 @@ static void vcc_rx_aal5(struct lanai_vcc
48841 +@@ -1426,7 +1426,7 @@ static void vcc_rx_aal5(struct lanai_vcc
48842 ATM_SKB(skb)->vcc = lvcc->rx.atmvcc;
48843 __net_timestamp(skb);
48844 lvcc->rx.atmvcc->push(lvcc->rx.atmvcc, skb);
48845 @@ -27688,7 +24344,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai
48846 out:
48847 lvcc->rx.buf.ptr = end;
48848 cardvcc_write(lvcc, endptr, vcc_rxreadptr);
48849 -@@ -1670,7 +1670,7 @@ static int handle_service(struct lanai_d
48850 +@@ -1668,7 +1668,7 @@ static int handle_service(struct lanai_d
48851 DPRINTK("(itf %d) got RX service entry 0x%X for non-AAL5 "
48852 "vcc %d\n", lanai->number, (unsigned int) s, vci);
48853 lanai->stats.service_rxnotaal5++;
48854 @@ -27697,7 +24353,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai
48855 return 0;
48856 }
48857 if (likely(!(s & (SERVICE_TRASH | SERVICE_STREAM | SERVICE_CRCERR)))) {
48858 -@@ -1682,7 +1682,7 @@ static int handle_service(struct lanai_d
48859 +@@ -1680,7 +1680,7 @@ static int handle_service(struct lanai_d
48860 int bytes;
48861 read_unlock(&vcc_sklist_lock);
48862 DPRINTK("got trashed rx pdu on vci %d\n", vci);
48863 @@ -27706,7 +24362,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai
48864 lvcc->stats.x.aal5.service_trash++;
48865 bytes = (SERVICE_GET_END(s) * 16) -
48866 (((unsigned long) lvcc->rx.buf.ptr) -
48867 -@@ -1694,7 +1694,7 @@ static int handle_service(struct lanai_d
48868 +@@ -1692,7 +1692,7 @@ static int handle_service(struct lanai_d
48869 }
48870 if (s & SERVICE_STREAM) {
48871 read_unlock(&vcc_sklist_lock);
48872 @@ -27715,7 +24371,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai
48873 lvcc->stats.x.aal5.service_stream++;
48874 printk(KERN_ERR DEV_LABEL "(itf %d): Got AAL5 stream "
48875 "PDU on VCI %d!\n", lanai->number, vci);
48876 -@@ -1702,7 +1702,7 @@ static int handle_service(struct lanai_d
48877 +@@ -1700,7 +1700,7 @@ static int handle_service(struct lanai_d
48878 return 0;
48879 }
48880 DPRINTK("got rx crc error on vci %d\n", vci);
48881 @@ -27724,215 +24380,214 @@ diff -urNp linux-2.6.32.48/drivers/atm/lanai.c linux-2.6.32.48/drivers/atm/lanai
48882 lvcc->stats.x.aal5.service_rxcrc++;
48883 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4];
48884 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr);
48885 -diff -urNp linux-2.6.32.48/drivers/atm/nicstar.c linux-2.6.32.48/drivers/atm/nicstar.c
48886 ---- linux-2.6.32.48/drivers/atm/nicstar.c 2009-12-02 22:51:21.000000000 -0500
48887 -+++ linux-2.6.32.48/drivers/atm/nicstar.c 2011-11-12 12:46:42.000000000 -0500
48888 -@@ -1723,7 +1723,7 @@ static int ns_send(struct atm_vcc *vcc,
48889 - if ((vc = (vc_map *) vcc->dev_data) == NULL)
48890 - {
48891 - printk("nicstar%d: vcc->dev_data == NULL on ns_send().\n", card->index);
48892 -- atomic_inc(&vcc->stats->tx_err);
48893 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48894 - dev_kfree_skb_any(skb);
48895 - return -EINVAL;
48896 - }
48897 -@@ -1731,7 +1731,7 @@ static int ns_send(struct atm_vcc *vcc,
48898 - if (!vc->tx)
48899 - {
48900 - printk("nicstar%d: Trying to transmit on a non-tx VC.\n", card->index);
48901 -- atomic_inc(&vcc->stats->tx_err);
48902 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48903 - dev_kfree_skb_any(skb);
48904 - return -EINVAL;
48905 - }
48906 -@@ -1739,7 +1739,7 @@ static int ns_send(struct atm_vcc *vcc,
48907 - if (vcc->qos.aal != ATM_AAL5 && vcc->qos.aal != ATM_AAL0)
48908 - {
48909 - printk("nicstar%d: Only AAL0 and AAL5 are supported.\n", card->index);
48910 -- atomic_inc(&vcc->stats->tx_err);
48911 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48912 - dev_kfree_skb_any(skb);
48913 - return -EINVAL;
48914 - }
48915 -@@ -1747,7 +1747,7 @@ static int ns_send(struct atm_vcc *vcc,
48916 - if (skb_shinfo(skb)->nr_frags != 0)
48917 - {
48918 - printk("nicstar%d: No scatter-gather yet.\n", card->index);
48919 -- atomic_inc(&vcc->stats->tx_err);
48920 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48921 - dev_kfree_skb_any(skb);
48922 - return -EINVAL;
48923 - }
48924 -@@ -1792,11 +1792,11 @@ static int ns_send(struct atm_vcc *vcc,
48925 -
48926 - if (push_scqe(card, vc, scq, &scqe, skb) != 0)
48927 - {
48928 -- atomic_inc(&vcc->stats->tx_err);
48929 -+ atomic_inc_unchecked(&vcc->stats->tx_err);
48930 - dev_kfree_skb_any(skb);
48931 - return -EIO;
48932 - }
48933 -- atomic_inc(&vcc->stats->tx);
48934 -+ atomic_inc_unchecked(&vcc->stats->tx);
48935 -
48936 - return 0;
48937 - }
48938 -@@ -2111,14 +2111,14 @@ static void dequeue_rx(ns_dev *card, ns_
48939 - {
48940 - printk("nicstar%d: Can't allocate buffers for aal0.\n",
48941 - card->index);
48942 -- atomic_add(i,&vcc->stats->rx_drop);
48943 -+ atomic_add_unchecked(i,&vcc->stats->rx_drop);
48944 - break;
48945 - }
48946 - if (!atm_charge(vcc, sb->truesize))
48947 - {
48948 - RXPRINTK("nicstar%d: atm_charge() dropped aal0 packets.\n",
48949 - card->index);
48950 -- atomic_add(i-1,&vcc->stats->rx_drop); /* already increased by 1 */
48951 -+ atomic_add_unchecked(i-1,&vcc->stats->rx_drop); /* already increased by 1 */
48952 - dev_kfree_skb_any(sb);
48953 - break;
48954 - }
48955 -@@ -2133,7 +2133,7 @@ static void dequeue_rx(ns_dev *card, ns_
48956 - ATM_SKB(sb)->vcc = vcc;
48957 - __net_timestamp(sb);
48958 - vcc->push(vcc, sb);
48959 -- atomic_inc(&vcc->stats->rx);
48960 -+ atomic_inc_unchecked(&vcc->stats->rx);
48961 - cell += ATM_CELL_PAYLOAD;
48962 - }
48963 +diff -urNp linux-3.0.8/drivers/atm/nicstar.c linux-3.0.8/drivers/atm/nicstar.c
48964 +--- linux-3.0.8/drivers/atm/nicstar.c 2011-07-21 22:17:23.000000000 -0400
48965 ++++ linux-3.0.8/drivers/atm/nicstar.c 2011-08-23 21:47:55.000000000 -0400
48966 +@@ -1654,7 +1654,7 @@ static int ns_send(struct atm_vcc *vcc,
48967 + if ((vc = (vc_map *) vcc->dev_data) == NULL) {
48968 + printk("nicstar%d: vcc->dev_data == NULL on ns_send().\n",
48969 + card->index);
48970 +- atomic_inc(&vcc->stats->tx_err);
48971 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
48972 + dev_kfree_skb_any(skb);
48973 + return -EINVAL;
48974 + }
48975 +@@ -1662,7 +1662,7 @@ static int ns_send(struct atm_vcc *vcc,
48976 + if (!vc->tx) {
48977 + printk("nicstar%d: Trying to transmit on a non-tx VC.\n",
48978 + card->index);
48979 +- atomic_inc(&vcc->stats->tx_err);
48980 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
48981 + dev_kfree_skb_any(skb);
48982 + return -EINVAL;
48983 + }
48984 +@@ -1670,14 +1670,14 @@ static int ns_send(struct atm_vcc *vcc,
48985 + if (vcc->qos.aal != ATM_AAL5 && vcc->qos.aal != ATM_AAL0) {
48986 + printk("nicstar%d: Only AAL0 and AAL5 are supported.\n",
48987 + card->index);
48988 +- atomic_inc(&vcc->stats->tx_err);
48989 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
48990 + dev_kfree_skb_any(skb);
48991 + return -EINVAL;
48992 + }
48993
48994 -@@ -2152,7 +2152,7 @@ static void dequeue_rx(ns_dev *card, ns_
48995 - if (iovb == NULL)
48996 - {
48997 - printk("nicstar%d: Out of iovec buffers.\n", card->index);
48998 -- atomic_inc(&vcc->stats->rx_drop);
48999 -+ atomic_inc_unchecked(&vcc->stats->rx_drop);
49000 - recycle_rx_buf(card, skb);
49001 - return;
49002 - }
49003 -@@ -2182,7 +2182,7 @@ static void dequeue_rx(ns_dev *card, ns_
49004 - else if (NS_SKB(iovb)->iovcnt >= NS_MAX_IOVECS)
49005 - {
49006 - printk("nicstar%d: received too big AAL5 SDU.\n", card->index);
49007 -- atomic_inc(&vcc->stats->rx_err);
49008 -+ atomic_inc_unchecked(&vcc->stats->rx_err);
49009 - recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data, NS_MAX_IOVECS);
49010 - NS_SKB(iovb)->iovcnt = 0;
49011 - iovb->len = 0;
49012 -@@ -2202,7 +2202,7 @@ static void dequeue_rx(ns_dev *card, ns_
49013 - printk("nicstar%d: Expected a small buffer, and this is not one.\n",
49014 - card->index);
49015 - which_list(card, skb);
49016 -- atomic_inc(&vcc->stats->rx_err);
49017 -+ atomic_inc_unchecked(&vcc->stats->rx_err);
49018 - recycle_rx_buf(card, skb);
49019 - vc->rx_iov = NULL;
49020 - recycle_iov_buf(card, iovb);
49021 -@@ -2216,7 +2216,7 @@ static void dequeue_rx(ns_dev *card, ns_
49022 - printk("nicstar%d: Expected a large buffer, and this is not one.\n",
49023 - card->index);
49024 - which_list(card, skb);
49025 -- atomic_inc(&vcc->stats->rx_err);
49026 -+ atomic_inc_unchecked(&vcc->stats->rx_err);
49027 - recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data,
49028 - NS_SKB(iovb)->iovcnt);
49029 - vc->rx_iov = NULL;
49030 -@@ -2240,7 +2240,7 @@ static void dequeue_rx(ns_dev *card, ns_
49031 - printk(" - PDU size mismatch.\n");
49032 - else
49033 - printk(".\n");
49034 -- atomic_inc(&vcc->stats->rx_err);
49035 -+ atomic_inc_unchecked(&vcc->stats->rx_err);
49036 - recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data,
49037 - NS_SKB(iovb)->iovcnt);
49038 - vc->rx_iov = NULL;
49039 -@@ -2256,7 +2256,7 @@ static void dequeue_rx(ns_dev *card, ns_
49040 - if (!atm_charge(vcc, skb->truesize))
49041 - {
49042 - push_rxbufs(card, skb);
49043 -- atomic_inc(&vcc->stats->rx_drop);
49044 -+ atomic_inc_unchecked(&vcc->stats->rx_drop);
49045 - }
49046 - else
49047 - {
49048 -@@ -2268,7 +2268,7 @@ static void dequeue_rx(ns_dev *card, ns_
49049 - ATM_SKB(skb)->vcc = vcc;
49050 - __net_timestamp(skb);
49051 - vcc->push(vcc, skb);
49052 -- atomic_inc(&vcc->stats->rx);
49053 -+ atomic_inc_unchecked(&vcc->stats->rx);
49054 - }
49055 - }
49056 - else if (NS_SKB(iovb)->iovcnt == 2) /* One small plus one large buffer */
49057 -@@ -2283,7 +2283,7 @@ static void dequeue_rx(ns_dev *card, ns_
49058 - if (!atm_charge(vcc, sb->truesize))
49059 - {
49060 - push_rxbufs(card, sb);
49061 -- atomic_inc(&vcc->stats->rx_drop);
49062 -+ atomic_inc_unchecked(&vcc->stats->rx_drop);
49063 - }
49064 - else
49065 - {
49066 -@@ -2295,7 +2295,7 @@ static void dequeue_rx(ns_dev *card, ns_
49067 - ATM_SKB(sb)->vcc = vcc;
49068 - __net_timestamp(sb);
49069 - vcc->push(vcc, sb);
49070 -- atomic_inc(&vcc->stats->rx);
49071 -+ atomic_inc_unchecked(&vcc->stats->rx);
49072 - }
49073 -
49074 - push_rxbufs(card, skb);
49075 -@@ -2306,7 +2306,7 @@ static void dequeue_rx(ns_dev *card, ns_
49076 - if (!atm_charge(vcc, skb->truesize))
49077 - {
49078 - push_rxbufs(card, skb);
49079 -- atomic_inc(&vcc->stats->rx_drop);
49080 -+ atomic_inc_unchecked(&vcc->stats->rx_drop);
49081 - }
49082 - else
49083 - {
49084 -@@ -2320,7 +2320,7 @@ static void dequeue_rx(ns_dev *card, ns_
49085 - ATM_SKB(skb)->vcc = vcc;
49086 - __net_timestamp(skb);
49087 - vcc->push(vcc, skb);
49088 -- atomic_inc(&vcc->stats->rx);
49089 -+ atomic_inc_unchecked(&vcc->stats->rx);
49090 - }
49091 -
49092 - push_rxbufs(card, sb);
49093 -@@ -2342,7 +2342,7 @@ static void dequeue_rx(ns_dev *card, ns_
49094 - if (hb == NULL)
49095 - {
49096 - printk("nicstar%d: Out of huge buffers.\n", card->index);
49097 -- atomic_inc(&vcc->stats->rx_drop);
49098 -+ atomic_inc_unchecked(&vcc->stats->rx_drop);
49099 - recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data,
49100 - NS_SKB(iovb)->iovcnt);
49101 - vc->rx_iov = NULL;
49102 -@@ -2393,7 +2393,7 @@ static void dequeue_rx(ns_dev *card, ns_
49103 - }
49104 - else
49105 - dev_kfree_skb_any(hb);
49106 -- atomic_inc(&vcc->stats->rx_drop);
49107 -+ atomic_inc_unchecked(&vcc->stats->rx_drop);
49108 - }
49109 - else
49110 - {
49111 -@@ -2427,7 +2427,7 @@ static void dequeue_rx(ns_dev *card, ns_
49112 + if (skb_shinfo(skb)->nr_frags != 0) {
49113 + printk("nicstar%d: No scatter-gather yet.\n", card->index);
49114 +- atomic_inc(&vcc->stats->tx_err);
49115 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
49116 + dev_kfree_skb_any(skb);
49117 + return -EINVAL;
49118 + }
49119 +@@ -1725,11 +1725,11 @@ static int ns_send(struct atm_vcc *vcc,
49120 + }
49121 +
49122 + if (push_scqe(card, vc, scq, &scqe, skb) != 0) {
49123 +- atomic_inc(&vcc->stats->tx_err);
49124 ++ atomic_inc_unchecked(&vcc->stats->tx_err);
49125 + dev_kfree_skb_any(skb);
49126 + return -EIO;
49127 + }
49128 +- atomic_inc(&vcc->stats->tx);
49129 ++ atomic_inc_unchecked(&vcc->stats->tx);
49130 +
49131 + return 0;
49132 + }
49133 +@@ -2046,14 +2046,14 @@ static void dequeue_rx(ns_dev * card, ns
49134 + printk
49135 + ("nicstar%d: Can't allocate buffers for aal0.\n",
49136 + card->index);
49137 +- atomic_add(i, &vcc->stats->rx_drop);
49138 ++ atomic_add_unchecked(i, &vcc->stats->rx_drop);
49139 + break;
49140 + }
49141 + if (!atm_charge(vcc, sb->truesize)) {
49142 + RXPRINTK
49143 + ("nicstar%d: atm_charge() dropped aal0 packets.\n",
49144 + card->index);
49145 +- atomic_add(i - 1, &vcc->stats->rx_drop); /* already increased by 1 */
49146 ++ atomic_add_unchecked(i - 1, &vcc->stats->rx_drop); /* already increased by 1 */
49147 + dev_kfree_skb_any(sb);
49148 + break;
49149 + }
49150 +@@ -2068,7 +2068,7 @@ static void dequeue_rx(ns_dev * card, ns
49151 + ATM_SKB(sb)->vcc = vcc;
49152 + __net_timestamp(sb);
49153 + vcc->push(vcc, sb);
49154 +- atomic_inc(&vcc->stats->rx);
49155 ++ atomic_inc_unchecked(&vcc->stats->rx);
49156 + cell += ATM_CELL_PAYLOAD;
49157 + }
49158 +
49159 +@@ -2085,7 +2085,7 @@ static void dequeue_rx(ns_dev * card, ns
49160 + if (iovb == NULL) {
49161 + printk("nicstar%d: Out of iovec buffers.\n",
49162 + card->index);
49163 +- atomic_inc(&vcc->stats->rx_drop);
49164 ++ atomic_inc_unchecked(&vcc->stats->rx_drop);
49165 + recycle_rx_buf(card, skb);
49166 + return;
49167 + }
49168 +@@ -2109,7 +2109,7 @@ static void dequeue_rx(ns_dev * card, ns
49169 + small or large buffer itself. */
49170 + } else if (NS_PRV_IOVCNT(iovb) >= NS_MAX_IOVECS) {
49171 + printk("nicstar%d: received too big AAL5 SDU.\n", card->index);
49172 +- atomic_inc(&vcc->stats->rx_err);
49173 ++ atomic_inc_unchecked(&vcc->stats->rx_err);
49174 + recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data,
49175 + NS_MAX_IOVECS);
49176 + NS_PRV_IOVCNT(iovb) = 0;
49177 +@@ -2129,7 +2129,7 @@ static void dequeue_rx(ns_dev * card, ns
49178 + ("nicstar%d: Expected a small buffer, and this is not one.\n",
49179 + card->index);
49180 + which_list(card, skb);
49181 +- atomic_inc(&vcc->stats->rx_err);
49182 ++ atomic_inc_unchecked(&vcc->stats->rx_err);
49183 + recycle_rx_buf(card, skb);
49184 + vc->rx_iov = NULL;
49185 + recycle_iov_buf(card, iovb);
49186 +@@ -2142,7 +2142,7 @@ static void dequeue_rx(ns_dev * card, ns
49187 + ("nicstar%d: Expected a large buffer, and this is not one.\n",
49188 + card->index);
49189 + which_list(card, skb);
49190 +- atomic_inc(&vcc->stats->rx_err);
49191 ++ atomic_inc_unchecked(&vcc->stats->rx_err);
49192 + recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data,
49193 + NS_PRV_IOVCNT(iovb));
49194 + vc->rx_iov = NULL;
49195 +@@ -2165,7 +2165,7 @@ static void dequeue_rx(ns_dev * card, ns
49196 + printk(" - PDU size mismatch.\n");
49197 + else
49198 + printk(".\n");
49199 +- atomic_inc(&vcc->stats->rx_err);
49200 ++ atomic_inc_unchecked(&vcc->stats->rx_err);
49201 + recycle_iovec_rx_bufs(card, (struct iovec *)iovb->data,
49202 + NS_PRV_IOVCNT(iovb));
49203 + vc->rx_iov = NULL;
49204 +@@ -2179,7 +2179,7 @@ static void dequeue_rx(ns_dev * card, ns
49205 + /* skb points to a small buffer */
49206 + if (!atm_charge(vcc, skb->truesize)) {
49207 + push_rxbufs(card, skb);
49208 +- atomic_inc(&vcc->stats->rx_drop);
49209 ++ atomic_inc_unchecked(&vcc->stats->rx_drop);
49210 + } else {
49211 + skb_put(skb, len);
49212 + dequeue_sm_buf(card, skb);
49213 +@@ -2189,7 +2189,7 @@ static void dequeue_rx(ns_dev * card, ns
49214 + ATM_SKB(skb)->vcc = vcc;
49215 + __net_timestamp(skb);
49216 + vcc->push(vcc, skb);
49217 +- atomic_inc(&vcc->stats->rx);
49218 ++ atomic_inc_unchecked(&vcc->stats->rx);
49219 + }
49220 + } else if (NS_PRV_IOVCNT(iovb) == 2) { /* One small plus one large buffer */
49221 + struct sk_buff *sb;
49222 +@@ -2200,7 +2200,7 @@ static void dequeue_rx(ns_dev * card, ns
49223 + if (len <= NS_SMBUFSIZE) {
49224 + if (!atm_charge(vcc, sb->truesize)) {
49225 + push_rxbufs(card, sb);
49226 +- atomic_inc(&vcc->stats->rx_drop);
49227 ++ atomic_inc_unchecked(&vcc->stats->rx_drop);
49228 + } else {
49229 + skb_put(sb, len);
49230 + dequeue_sm_buf(card, sb);
49231 +@@ -2210,7 +2210,7 @@ static void dequeue_rx(ns_dev * card, ns
49232 + ATM_SKB(sb)->vcc = vcc;
49233 + __net_timestamp(sb);
49234 + vcc->push(vcc, sb);
49235 +- atomic_inc(&vcc->stats->rx);
49236 ++ atomic_inc_unchecked(&vcc->stats->rx);
49237 + }
49238 +
49239 + push_rxbufs(card, skb);
49240 +@@ -2219,7 +2219,7 @@ static void dequeue_rx(ns_dev * card, ns
49241 +
49242 + if (!atm_charge(vcc, skb->truesize)) {
49243 + push_rxbufs(card, skb);
49244 +- atomic_inc(&vcc->stats->rx_drop);
49245 ++ atomic_inc_unchecked(&vcc->stats->rx_drop);
49246 + } else {
49247 + dequeue_lg_buf(card, skb);
49248 + #ifdef NS_USE_DESTRUCTORS
49249 +@@ -2232,7 +2232,7 @@ static void dequeue_rx(ns_dev * card, ns
49250 + ATM_SKB(skb)->vcc = vcc;
49251 + __net_timestamp(skb);
49252 + vcc->push(vcc, skb);
49253 +- atomic_inc(&vcc->stats->rx);
49254 ++ atomic_inc_unchecked(&vcc->stats->rx);
49255 + }
49256 +
49257 + push_rxbufs(card, sb);
49258 +@@ -2253,7 +2253,7 @@ static void dequeue_rx(ns_dev * card, ns
49259 + printk
49260 + ("nicstar%d: Out of huge buffers.\n",
49261 + card->index);
49262 +- atomic_inc(&vcc->stats->rx_drop);
49263 ++ atomic_inc_unchecked(&vcc->stats->rx_drop);
49264 + recycle_iovec_rx_bufs(card,
49265 + (struct iovec *)
49266 + iovb->data,
49267 +@@ -2304,7 +2304,7 @@ static void dequeue_rx(ns_dev * card, ns
49268 + card->hbpool.count++;
49269 + } else
49270 + dev_kfree_skb_any(hb);
49271 +- atomic_inc(&vcc->stats->rx_drop);
49272 ++ atomic_inc_unchecked(&vcc->stats->rx_drop);
49273 + } else {
49274 + /* Copy the small buffer to the huge buffer */
49275 + sb = (struct sk_buff *)iov->iov_base;
49276 +@@ -2341,7 +2341,7 @@ static void dequeue_rx(ns_dev * card, ns
49277 #endif /* NS_USE_DESTRUCTORS */
49278 - __net_timestamp(hb);
49279 - vcc->push(vcc, hb);
49280 -- atomic_inc(&vcc->stats->rx);
49281 -+ atomic_inc_unchecked(&vcc->stats->rx);
49282 - }
49283 - }
49284 + __net_timestamp(hb);
49285 + vcc->push(vcc, hb);
49286 +- atomic_inc(&vcc->stats->rx);
49287 ++ atomic_inc_unchecked(&vcc->stats->rx);
49288 + }
49289 + }
49290
49291 -diff -urNp linux-2.6.32.48/drivers/atm/solos-pci.c linux-2.6.32.48/drivers/atm/solos-pci.c
49292 ---- linux-2.6.32.48/drivers/atm/solos-pci.c 2011-11-12 12:44:28.000000000 -0500
49293 -+++ linux-2.6.32.48/drivers/atm/solos-pci.c 2011-11-12 12:46:42.000000000 -0500
49294 -@@ -708,7 +708,7 @@ void solos_bh(unsigned long card_arg)
49295 +diff -urNp linux-3.0.8/drivers/atm/solos-pci.c linux-3.0.8/drivers/atm/solos-pci.c
49296 +--- linux-3.0.8/drivers/atm/solos-pci.c 2011-07-21 22:17:23.000000000 -0400
49297 ++++ linux-3.0.8/drivers/atm/solos-pci.c 2011-08-23 21:48:14.000000000 -0400
49298 +@@ -714,7 +714,7 @@ void solos_bh(unsigned long card_arg)
49299 }
49300 atm_charge(vcc, skb->truesize);
49301 vcc->push(vcc, skb);
49302 @@ -27941,7 +24596,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/solos-pci.c linux-2.6.32.48/drivers/atm/s
49303 break;
49304
49305 case PKT_STATUS:
49306 -@@ -914,6 +914,8 @@ static int print_buffer(struct sk_buff *
49307 +@@ -899,6 +899,8 @@ static int print_buffer(struct sk_buff *
49308 char msg[500];
49309 char item[10];
49310
49311 @@ -27950,7 +24605,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/solos-pci.c linux-2.6.32.48/drivers/atm/s
49312 len = buf->len;
49313 for (i = 0; i < len; i++){
49314 if(i % 8 == 0)
49315 -@@ -1023,7 +1025,7 @@ static uint32_t fpga_tx(struct solos_car
49316 +@@ -1008,7 +1010,7 @@ static uint32_t fpga_tx(struct solos_car
49317 vcc = SKB_CB(oldskb)->vcc;
49318
49319 if (vcc) {
49320 @@ -27959,10 +24614,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/solos-pci.c linux-2.6.32.48/drivers/atm/s
49321 solos_pop(vcc, oldskb);
49322 } else
49323 dev_kfree_skb_irq(oldskb);
49324 -diff -urNp linux-2.6.32.48/drivers/atm/suni.c linux-2.6.32.48/drivers/atm/suni.c
49325 ---- linux-2.6.32.48/drivers/atm/suni.c 2009-12-02 22:51:21.000000000 -0500
49326 -+++ linux-2.6.32.48/drivers/atm/suni.c 2011-11-12 12:46:42.000000000 -0500
49327 -@@ -49,8 +49,8 @@ static DEFINE_SPINLOCK(sunis_lock);
49328 +diff -urNp linux-3.0.8/drivers/atm/suni.c linux-3.0.8/drivers/atm/suni.c
49329 +--- linux-3.0.8/drivers/atm/suni.c 2011-07-21 22:17:23.000000000 -0400
49330 ++++ linux-3.0.8/drivers/atm/suni.c 2011-08-23 21:47:55.000000000 -0400
49331 +@@ -50,8 +50,8 @@ static DEFINE_SPINLOCK(sunis_lock);
49332
49333
49334 #define ADD_LIMITED(s,v) \
49335 @@ -27973,10 +24628,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/suni.c linux-2.6.32.48/drivers/atm/suni.c
49336
49337
49338 static void suni_hz(unsigned long from_timer)
49339 -diff -urNp linux-2.6.32.48/drivers/atm/uPD98402.c linux-2.6.32.48/drivers/atm/uPD98402.c
49340 ---- linux-2.6.32.48/drivers/atm/uPD98402.c 2009-12-02 22:51:21.000000000 -0500
49341 -+++ linux-2.6.32.48/drivers/atm/uPD98402.c 2011-11-12 12:46:42.000000000 -0500
49342 -@@ -41,7 +41,7 @@ static int fetch_stats(struct atm_dev *d
49343 +diff -urNp linux-3.0.8/drivers/atm/uPD98402.c linux-3.0.8/drivers/atm/uPD98402.c
49344 +--- linux-3.0.8/drivers/atm/uPD98402.c 2011-07-21 22:17:23.000000000 -0400
49345 ++++ linux-3.0.8/drivers/atm/uPD98402.c 2011-08-23 21:47:55.000000000 -0400
49346 +@@ -42,7 +42,7 @@ static int fetch_stats(struct atm_dev *d
49347 struct sonet_stats tmp;
49348 int error = 0;
49349
49350 @@ -27985,7 +24640,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/uPD98402.c linux-2.6.32.48/drivers/atm/uP
49351 sonet_copy_stats(&PRIV(dev)->sonet_stats,&tmp);
49352 if (arg) error = copy_to_user(arg,&tmp,sizeof(tmp));
49353 if (zero && !error) {
49354 -@@ -160,9 +160,9 @@ static int uPD98402_ioctl(struct atm_dev
49355 +@@ -161,9 +161,9 @@ static int uPD98402_ioctl(struct atm_dev
49356
49357
49358 #define ADD_LIMITED(s,v) \
49359 @@ -27998,7 +24653,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/uPD98402.c linux-2.6.32.48/drivers/atm/uP
49360
49361
49362 static void stat_event(struct atm_dev *dev)
49363 -@@ -193,7 +193,7 @@ static void uPD98402_int(struct atm_dev
49364 +@@ -194,7 +194,7 @@ static void uPD98402_int(struct atm_dev
49365 if (reason & uPD98402_INT_PFM) stat_event(dev);
49366 if (reason & uPD98402_INT_PCO) {
49367 (void) GET(PCOCR); /* clear interrupt cause */
49368 @@ -28007,7 +24662,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/uPD98402.c linux-2.6.32.48/drivers/atm/uP
49369 &PRIV(dev)->sonet_stats.uncorr_hcs);
49370 }
49371 if ((reason & uPD98402_INT_RFO) &&
49372 -@@ -221,9 +221,9 @@ static int uPD98402_start(struct atm_dev
49373 +@@ -222,9 +222,9 @@ static int uPD98402_start(struct atm_dev
49374 PUT(~(uPD98402_INT_PFM | uPD98402_INT_ALM | uPD98402_INT_RFO |
49375 uPD98402_INT_LOS),PIMR); /* enable them */
49376 (void) fetch_stats(dev,NULL,1); /* clear kernel counters */
49377 @@ -28020,10 +24675,10 @@ diff -urNp linux-2.6.32.48/drivers/atm/uPD98402.c linux-2.6.32.48/drivers/atm/uP
49378 return 0;
49379 }
49380
49381 -diff -urNp linux-2.6.32.48/drivers/atm/zatm.c linux-2.6.32.48/drivers/atm/zatm.c
49382 ---- linux-2.6.32.48/drivers/atm/zatm.c 2009-12-02 22:51:21.000000000 -0500
49383 -+++ linux-2.6.32.48/drivers/atm/zatm.c 2011-11-12 12:46:42.000000000 -0500
49384 -@@ -458,7 +458,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
49385 +diff -urNp linux-3.0.8/drivers/atm/zatm.c linux-3.0.8/drivers/atm/zatm.c
49386 +--- linux-3.0.8/drivers/atm/zatm.c 2011-07-21 22:17:23.000000000 -0400
49387 ++++ linux-3.0.8/drivers/atm/zatm.c 2011-08-23 21:47:55.000000000 -0400
49388 +@@ -459,7 +459,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
49389 }
49390 if (!size) {
49391 dev_kfree_skb_irq(skb);
49392 @@ -28032,7 +24687,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/zatm.c linux-2.6.32.48/drivers/atm/zatm.c
49393 continue;
49394 }
49395 if (!atm_charge(vcc,skb->truesize)) {
49396 -@@ -468,7 +468,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
49397 +@@ -469,7 +469,7 @@ printk("dummy: 0x%08lx, 0x%08lx\n",dummy
49398 skb->len = size;
49399 ATM_SKB(skb)->vcc = vcc;
49400 vcc->push(vcc,skb);
49401 @@ -28041,7 +24696,7 @@ diff -urNp linux-2.6.32.48/drivers/atm/zatm.c linux-2.6.32.48/drivers/atm/zatm.c
49402 }
49403 zout(pos & 0xffff,MTA(mbx));
49404 #if 0 /* probably a stupid idea */
49405 -@@ -732,7 +732,7 @@ if (*ZATM_PRV_DSC(skb) != (uPD98401_TXPD
49406 +@@ -733,7 +733,7 @@ if (*ZATM_PRV_DSC(skb) != (uPD98401_TXPD
49407 skb_queue_head(&zatm_vcc->backlog,skb);
49408 break;
49409 }
49410 @@ -28050,106 +24705,60 @@ diff -urNp linux-2.6.32.48/drivers/atm/zatm.c linux-2.6.32.48/drivers/atm/zatm.c
49411 wake_up(&zatm_vcc->tx_wait);
49412 }
49413
49414 -diff -urNp linux-2.6.32.48/drivers/base/bus.c linux-2.6.32.48/drivers/base/bus.c
49415 ---- linux-2.6.32.48/drivers/base/bus.c 2009-12-02 22:51:21.000000000 -0500
49416 -+++ linux-2.6.32.48/drivers/base/bus.c 2011-11-12 12:46:42.000000000 -0500
49417 -@@ -70,7 +70,7 @@ static ssize_t drv_attr_store(struct kob
49418 - return ret;
49419 - }
49420 -
49421 --static struct sysfs_ops driver_sysfs_ops = {
49422 -+static const struct sysfs_ops driver_sysfs_ops = {
49423 - .show = drv_attr_show,
49424 - .store = drv_attr_store,
49425 - };
49426 -@@ -115,7 +115,7 @@ static ssize_t bus_attr_store(struct kob
49427 - return ret;
49428 - }
49429 -
49430 --static struct sysfs_ops bus_sysfs_ops = {
49431 -+static const struct sysfs_ops bus_sysfs_ops = {
49432 - .show = bus_attr_show,
49433 - .store = bus_attr_store,
49434 - };
49435 -@@ -154,7 +154,7 @@ static int bus_uevent_filter(struct kset
49436 - return 0;
49437 - }
49438 -
49439 --static struct kset_uevent_ops bus_uevent_ops = {
49440 -+static const struct kset_uevent_ops bus_uevent_ops = {
49441 - .filter = bus_uevent_filter,
49442 - };
49443 +diff -urNp linux-3.0.8/drivers/base/devtmpfs.c linux-3.0.8/drivers/base/devtmpfs.c
49444 +--- linux-3.0.8/drivers/base/devtmpfs.c 2011-07-21 22:17:23.000000000 -0400
49445 ++++ linux-3.0.8/drivers/base/devtmpfs.c 2011-10-06 04:17:55.000000000 -0400
49446 +@@ -357,7 +357,7 @@ int devtmpfs_mount(const char *mntdir)
49447 + if (!dev_mnt)
49448 + return 0;
49449
49450 -diff -urNp linux-2.6.32.48/drivers/base/class.c linux-2.6.32.48/drivers/base/class.c
49451 ---- linux-2.6.32.48/drivers/base/class.c 2011-11-12 12:44:28.000000000 -0500
49452 -+++ linux-2.6.32.48/drivers/base/class.c 2011-11-12 12:46:42.000000000 -0500
49453 -@@ -63,7 +63,7 @@ static void class_release(struct kobject
49454 - kfree(cp);
49455 - }
49456 +- err = sys_mount("devtmpfs", (char *)mntdir, "devtmpfs", MS_SILENT, NULL);
49457 ++ err = sys_mount((char __force_user *)"devtmpfs", (char __force_user *)mntdir, (char __force_user *)"devtmpfs", MS_SILENT, NULL);
49458 + if (err)
49459 + printk(KERN_INFO "devtmpfs: error mounting %i\n", err);
49460 + else
49461 +diff -urNp linux-3.0.8/drivers/base/power/wakeup.c linux-3.0.8/drivers/base/power/wakeup.c
49462 +--- linux-3.0.8/drivers/base/power/wakeup.c 2011-07-21 22:17:23.000000000 -0400
49463 ++++ linux-3.0.8/drivers/base/power/wakeup.c 2011-08-23 21:47:55.000000000 -0400
49464 +@@ -29,14 +29,14 @@ bool events_check_enabled;
49465 + * They need to be modified together atomically, so it's better to use one
49466 + * atomic variable to hold them both.
49467 + */
49468 +-static atomic_t combined_event_count = ATOMIC_INIT(0);
49469 ++static atomic_unchecked_t combined_event_count = ATOMIC_INIT(0);
49470
49471 --static struct sysfs_ops class_sysfs_ops = {
49472 -+static const struct sysfs_ops class_sysfs_ops = {
49473 - .show = class_attr_show,
49474 - .store = class_attr_store,
49475 - };
49476 -diff -urNp linux-2.6.32.48/drivers/base/core.c linux-2.6.32.48/drivers/base/core.c
49477 ---- linux-2.6.32.48/drivers/base/core.c 2011-11-12 12:44:28.000000000 -0500
49478 -+++ linux-2.6.32.48/drivers/base/core.c 2011-11-12 12:46:42.000000000 -0500
49479 -@@ -100,7 +100,7 @@ static ssize_t dev_attr_store(struct kob
49480 - return ret;
49481 - }
49482 + #define IN_PROGRESS_BITS (sizeof(int) * 4)
49483 + #define MAX_IN_PROGRESS ((1 << IN_PROGRESS_BITS) - 1)
49484
49485 --static struct sysfs_ops dev_sysfs_ops = {
49486 -+static const struct sysfs_ops dev_sysfs_ops = {
49487 - .show = dev_attr_show,
49488 - .store = dev_attr_store,
49489 - };
49490 -@@ -252,7 +252,7 @@ static int dev_uevent(struct kset *kset,
49491 - return retval;
49492 - }
49493 + static void split_counters(unsigned int *cnt, unsigned int *inpr)
49494 + {
49495 +- unsigned int comb = atomic_read(&combined_event_count);
49496 ++ unsigned int comb = atomic_read_unchecked(&combined_event_count);
49497
49498 --static struct kset_uevent_ops device_uevent_ops = {
49499 -+static const struct kset_uevent_ops device_uevent_ops = {
49500 - .filter = dev_uevent_filter,
49501 - .name = dev_uevent_name,
49502 - .uevent = dev_uevent,
49503 -diff -urNp linux-2.6.32.48/drivers/base/memory.c linux-2.6.32.48/drivers/base/memory.c
49504 ---- linux-2.6.32.48/drivers/base/memory.c 2009-12-02 22:51:21.000000000 -0500
49505 -+++ linux-2.6.32.48/drivers/base/memory.c 2011-11-12 12:46:42.000000000 -0500
49506 -@@ -44,7 +44,7 @@ static int memory_uevent(struct kset *ks
49507 - return retval;
49508 - }
49509 + *cnt = (comb >> IN_PROGRESS_BITS);
49510 + *inpr = comb & MAX_IN_PROGRESS;
49511 +@@ -350,7 +350,7 @@ static void wakeup_source_activate(struc
49512 + ws->last_time = ktime_get();
49513
49514 --static struct kset_uevent_ops memory_uevent_ops = {
49515 -+static const struct kset_uevent_ops memory_uevent_ops = {
49516 - .name = memory_uevent_name,
49517 - .uevent = memory_uevent,
49518 - };
49519 -diff -urNp linux-2.6.32.48/drivers/base/sys.c linux-2.6.32.48/drivers/base/sys.c
49520 ---- linux-2.6.32.48/drivers/base/sys.c 2009-12-02 22:51:21.000000000 -0500
49521 -+++ linux-2.6.32.48/drivers/base/sys.c 2011-11-12 12:46:42.000000000 -0500
49522 -@@ -54,7 +54,7 @@ sysdev_store(struct kobject *kobj, struc
49523 - return -EIO;
49524 + /* Increment the counter of events in progress. */
49525 +- atomic_inc(&combined_event_count);
49526 ++ atomic_inc_unchecked(&combined_event_count);
49527 }
49528
49529 --static struct sysfs_ops sysfs_ops = {
49530 -+static const struct sysfs_ops sysfs_ops = {
49531 - .show = sysdev_show,
49532 - .store = sysdev_store,
49533 - };
49534 -@@ -104,7 +104,7 @@ static ssize_t sysdev_class_store(struct
49535 - return -EIO;
49536 + /**
49537 +@@ -440,7 +440,7 @@ static void wakeup_source_deactivate(str
49538 + * Increment the counter of registered wakeup events and decrement the
49539 + * couter of wakeup events in progress simultaneously.
49540 + */
49541 +- atomic_add(MAX_IN_PROGRESS, &combined_event_count);
49542 ++ atomic_add_unchecked(MAX_IN_PROGRESS, &combined_event_count);
49543 }
49544
49545 --static struct sysfs_ops sysfs_class_ops = {
49546 -+static const struct sysfs_ops sysfs_class_ops = {
49547 - .show = sysdev_class_show,
49548 - .store = sysdev_class_store,
49549 - };
49550 -diff -urNp linux-2.6.32.48/drivers/block/cciss.c linux-2.6.32.48/drivers/block/cciss.c
49551 ---- linux-2.6.32.48/drivers/block/cciss.c 2011-11-12 12:44:28.000000000 -0500
49552 -+++ linux-2.6.32.48/drivers/block/cciss.c 2011-11-12 12:46:42.000000000 -0500
49553 -@@ -1011,6 +1011,8 @@ static int cciss_ioctl32_passthru(struct
49554 + /**
49555 +diff -urNp linux-3.0.8/drivers/block/cciss.c linux-3.0.8/drivers/block/cciss.c
49556 +--- linux-3.0.8/drivers/block/cciss.c 2011-07-21 22:17:23.000000000 -0400
49557 ++++ linux-3.0.8/drivers/block/cciss.c 2011-08-23 21:48:14.000000000 -0400
49558 +@@ -1179,6 +1179,8 @@ static int cciss_ioctl32_passthru(struct
49559 int err;
49560 u32 cp;
49561
49562 @@ -28158,51 +24767,17 @@ diff -urNp linux-2.6.32.48/drivers/block/cciss.c linux-2.6.32.48/drivers/block/c
49563 err = 0;
49564 err |=
49565 copy_from_user(&arg64.LUN_info, &arg32->LUN_info,
49566 -@@ -2852,7 +2854,7 @@ static unsigned long pollcomplete(int ct
49567 - /* Wait (up to 20 seconds) for a command to complete */
49568 -
49569 - for (i = 20 * HZ; i > 0; i--) {
49570 -- done = hba[ctlr]->access.command_completed(hba[ctlr]);
49571 -+ done = hba[ctlr]->access->command_completed(hba[ctlr]);
49572 - if (done == FIFO_EMPTY)
49573 - schedule_timeout_uninterruptible(1);
49574 - else
49575 -@@ -2876,7 +2878,7 @@ static int sendcmd_core(ctlr_info_t *h,
49576 - resend_cmd1:
49577 -
49578 - /* Disable interrupt on the board. */
49579 -- h->access.set_intr_mask(h, CCISS_INTR_OFF);
49580 -+ h->access->set_intr_mask(h, CCISS_INTR_OFF);
49581 -
49582 - /* Make sure there is room in the command FIFO */
49583 - /* Actually it should be completely empty at this time */
49584 -@@ -2884,13 +2886,13 @@ resend_cmd1:
49585 - /* tape side of the driver. */
49586 - for (i = 200000; i > 0; i--) {
49587 - /* if fifo isn't full go */
49588 -- if (!(h->access.fifo_full(h)))
49589 -+ if (!(h->access->fifo_full(h)))
49590 - break;
49591 - udelay(10);
49592 - printk(KERN_WARNING "cciss cciss%d: SendCmd FIFO full,"
49593 - " waiting!\n", h->ctlr);
49594 - }
49595 -- h->access.submit_command(h, c); /* Send the cmd */
49596 -+ h->access->submit_command(h, c); /* Send the cmd */
49597 - do {
49598 - complete = pollcomplete(h->ctlr);
49599 -
49600 -@@ -3023,7 +3025,7 @@ static void start_io(ctlr_info_t *h)
49601 - while (!hlist_empty(&h->reqQ)) {
49602 - c = hlist_entry(h->reqQ.first, CommandList_struct, list);
49603 - /* can't do anything if fifo is full */
49604 -- if ((h->access.fifo_full(h))) {
49605 -+ if ((h->access->fifo_full(h))) {
49606 - printk(KERN_WARNING "cciss: fifo full\n");
49607 - break;
49608 - }
49609 -@@ -3033,7 +3035,7 @@ static void start_io(ctlr_info_t *h)
49610 - h->Qdepth--;
49611 +@@ -2986,7 +2988,7 @@ static void start_io(ctlr_info_t *h)
49612 + while (!list_empty(&h->reqQ)) {
49613 + c = list_entry(h->reqQ.next, CommandList_struct, list);
49614 + /* can't do anything if fifo is full */
49615 +- if ((h->access.fifo_full(h))) {
49616 ++ if ((h->access->fifo_full(h))) {
49617 + dev_warn(&h->pdev->dev, "fifo full\n");
49618 + break;
49619 + }
49620 +@@ -2996,7 +2998,7 @@ static void start_io(ctlr_info_t *h)
49621 + h->Qdepth--;
49622
49623 /* Tell the controller execute command */
49624 - h->access.submit_command(h, c);
49625 @@ -28210,7 +24785,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cciss.c linux-2.6.32.48/drivers/block/c
49626
49627 /* Put job onto the completed Q */
49628 addQ(&h->cmpQ, c);
49629 -@@ -3393,17 +3395,17 @@ startio:
49630 +@@ -3422,17 +3424,17 @@ startio:
49631
49632 static inline unsigned long get_next_completion(ctlr_info_t *h)
49633 {
49634 @@ -28226,54 +24801,102 @@ diff -urNp linux-2.6.32.48/drivers/block/cciss.c linux-2.6.32.48/drivers/block/c
49635
49636 static inline long interrupt_not_for_us(ctlr_info_t *h)
49637 {
49638 -- return (((h->access.intr_pending(h) == 0) ||
49639 -+ return (((h->access->intr_pending(h) == 0) ||
49640 - (h->interrupts_enabled == 0)));
49641 +- return ((h->access.intr_pending(h) == 0) ||
49642 ++ return ((h->access->intr_pending(h) == 0) ||
49643 + (h->interrupts_enabled == 0));
49644 }
49645
49646 -@@ -3892,7 +3894,7 @@ static int __devinit cciss_pci_init(ctlr
49647 - */
49648 - c->max_commands = readl(&(c->cfgtable->CmdsOutMax));
49649 - c->product_name = products[prod_index].product_name;
49650 -- c->access = *(products[prod_index].access);
49651 -+ c->access = products[prod_index].access;
49652 - c->nr_cmds = c->max_commands - 4;
49653 - if ((readb(&c->cfgtable->Signature[0]) != 'C') ||
49654 - (readb(&c->cfgtable->Signature[1]) != 'I') ||
49655 -@@ -4291,7 +4293,7 @@ static int __devinit cciss_init_one(stru
49656 +@@ -3465,7 +3467,7 @@ static inline u32 next_command(ctlr_info
49657 + u32 a;
49658 +
49659 + if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
49660 +- return h->access.command_completed(h);
49661 ++ return h->access->command_completed(h);
49662 +
49663 + if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
49664 + a = *(h->reply_pool_head); /* Next cmd in ring buffer */
49665 +@@ -4020,7 +4022,7 @@ static void __devinit cciss_put_controll
49666 + trans_support & CFGTBL_Trans_use_short_tags);
49667 +
49668 + /* Change the access methods to the performant access methods */
49669 +- h->access = SA5_performant_access;
49670 ++ h->access = &SA5_performant_access;
49671 + h->transMethod = CFGTBL_Trans_Performant;
49672 +
49673 + return;
49674 +@@ -4292,7 +4294,7 @@ static int __devinit cciss_pci_init(ctlr
49675 + if (prod_index < 0)
49676 + return -ENODEV;
49677 + h->product_name = products[prod_index].product_name;
49678 +- h->access = *(products[prod_index].access);
49679 ++ h->access = products[prod_index].access;
49680 +
49681 + if (cciss_board_disabled(h)) {
49682 + dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
49683 +@@ -5002,7 +5004,7 @@ reinit_after_soft_reset:
49684 }
49685
49686 /* make sure the board interrupts are off */
49687 -- hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_OFF);
49688 -+ hba[i]->access->set_intr_mask(hba[i], CCISS_INTR_OFF);
49689 - if (request_irq(hba[i]->intr[SIMPLE_MODE_INT], do_cciss_intr,
49690 - IRQF_DISABLED | IRQF_SHARED, hba[i]->devname, hba[i])) {
49691 - printk(KERN_ERR "cciss: Unable to get irq %d for %s\n",
49692 -@@ -4341,7 +4343,7 @@ static int __devinit cciss_init_one(stru
49693 - cciss_scsi_setup(i);
49694 +- h->access.set_intr_mask(h, CCISS_INTR_OFF);
49695 ++ h->access->set_intr_mask(h, CCISS_INTR_OFF);
49696 + rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx);
49697 + if (rc)
49698 + goto clean2;
49699 +@@ -5054,7 +5056,7 @@ reinit_after_soft_reset:
49700 + * fake ones to scoop up any residual completions.
49701 + */
49702 + spin_lock_irqsave(&h->lock, flags);
49703 +- h->access.set_intr_mask(h, CCISS_INTR_OFF);
49704 ++ h->access->set_intr_mask(h, CCISS_INTR_OFF);
49705 + spin_unlock_irqrestore(&h->lock, flags);
49706 + free_irq(h->intr[PERF_MODE_INT], h);
49707 + rc = cciss_request_irq(h, cciss_msix_discard_completions,
49708 +@@ -5074,9 +5076,9 @@ reinit_after_soft_reset:
49709 + dev_info(&h->pdev->dev, "Board READY.\n");
49710 + dev_info(&h->pdev->dev,
49711 + "Waiting for stale completions to drain.\n");
49712 +- h->access.set_intr_mask(h, CCISS_INTR_ON);
49713 ++ h->access->set_intr_mask(h, CCISS_INTR_ON);
49714 + msleep(10000);
49715 +- h->access.set_intr_mask(h, CCISS_INTR_OFF);
49716 ++ h->access->set_intr_mask(h, CCISS_INTR_OFF);
49717 +
49718 + rc = controller_reset_failed(h->cfgtable);
49719 + if (rc)
49720 +@@ -5099,7 +5101,7 @@ reinit_after_soft_reset:
49721 + cciss_scsi_setup(h);
49722
49723 /* Turn the interrupts on so we can service requests */
49724 -- hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_ON);
49725 -+ hba[i]->access->set_intr_mask(hba[i], CCISS_INTR_ON);
49726 +- h->access.set_intr_mask(h, CCISS_INTR_ON);
49727 ++ h->access->set_intr_mask(h, CCISS_INTR_ON);
49728
49729 /* Get the firmware version */
49730 inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
49731 -diff -urNp linux-2.6.32.48/drivers/block/cciss.h linux-2.6.32.48/drivers/block/cciss.h
49732 ---- linux-2.6.32.48/drivers/block/cciss.h 2011-11-12 12:44:28.000000000 -0500
49733 -+++ linux-2.6.32.48/drivers/block/cciss.h 2011-11-12 12:46:42.000000000 -0500
49734 -@@ -90,7 +90,7 @@ struct ctlr_info
49735 - // information about each logical volume
49736 +@@ -5171,7 +5173,7 @@ static void cciss_shutdown(struct pci_de
49737 + kfree(flush_buf);
49738 + if (return_code != IO_OK)
49739 + dev_warn(&h->pdev->dev, "Error flushing cache\n");
49740 +- h->access.set_intr_mask(h, CCISS_INTR_OFF);
49741 ++ h->access->set_intr_mask(h, CCISS_INTR_OFF);
49742 + free_irq(h->intr[PERF_MODE_INT], h);
49743 + }
49744 +
49745 +diff -urNp linux-3.0.8/drivers/block/cciss.h linux-3.0.8/drivers/block/cciss.h
49746 +--- linux-3.0.8/drivers/block/cciss.h 2011-10-24 08:05:21.000000000 -0400
49747 ++++ linux-3.0.8/drivers/block/cciss.h 2011-08-23 21:47:55.000000000 -0400
49748 +@@ -100,7 +100,7 @@ struct ctlr_info
49749 + /* information about each logical volume */
49750 drive_info_struct *drv[CISS_MAX_LUN];
49751
49752 - struct access_method access;
49753 + struct access_method *access;
49754
49755 /* queue and queue Info */
49756 - struct hlist_head reqQ;
49757 -diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/block/cpqarray.c
49758 ---- linux-2.6.32.48/drivers/block/cpqarray.c 2009-12-02 22:51:21.000000000 -0500
49759 -+++ linux-2.6.32.48/drivers/block/cpqarray.c 2011-11-12 12:46:42.000000000 -0500
49760 -@@ -402,7 +402,7 @@ static int __init cpqarray_register_ctlr
49761 + struct list_head reqQ;
49762 +diff -urNp linux-3.0.8/drivers/block/cpqarray.c linux-3.0.8/drivers/block/cpqarray.c
49763 +--- linux-3.0.8/drivers/block/cpqarray.c 2011-07-21 22:17:23.000000000 -0400
49764 ++++ linux-3.0.8/drivers/block/cpqarray.c 2011-08-23 21:48:14.000000000 -0400
49765 +@@ -404,7 +404,7 @@ static int __devinit cpqarray_register_c
49766 if (register_blkdev(COMPAQ_SMART2_MAJOR+i, hba[i]->devname)) {
49767 goto Enomem4;
49768 }
49769 @@ -28282,7 +24905,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49770 if (request_irq(hba[i]->intr, do_ida_intr,
49771 IRQF_DISABLED|IRQF_SHARED, hba[i]->devname, hba[i]))
49772 {
49773 -@@ -460,7 +460,7 @@ static int __init cpqarray_register_ctlr
49774 +@@ -459,7 +459,7 @@ static int __devinit cpqarray_register_c
49775 add_timer(&hba[i]->timer);
49776
49777 /* Enable IRQ now that spinlock and rate limit timer are set up */
49778 @@ -28291,7 +24914,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49779
49780 for(j=0; j<NWD; j++) {
49781 struct gendisk *disk = ida_gendisk[i][j];
49782 -@@ -695,7 +695,7 @@ DBGINFO(
49783 +@@ -694,7 +694,7 @@ DBGINFO(
49784 for(i=0; i<NR_PRODUCTS; i++) {
49785 if (board_id == products[i].board_id) {
49786 c->product_name = products[i].product_name;
49787 @@ -28300,7 +24923,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49788 break;
49789 }
49790 }
49791 -@@ -793,7 +793,7 @@ static int __init cpqarray_eisa_detect(v
49792 +@@ -792,7 +792,7 @@ static int __devinit cpqarray_eisa_detec
49793 hba[ctlr]->intr = intr;
49794 sprintf(hba[ctlr]->devname, "ida%d", nr_ctlr);
49795 hba[ctlr]->product_name = products[j].product_name;
49796 @@ -28309,16 +24932,16 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49797 hba[ctlr]->ctlr = ctlr;
49798 hba[ctlr]->board_id = board_id;
49799 hba[ctlr]->pci_dev = NULL; /* not PCI */
49800 -@@ -896,6 +896,8 @@ static void do_ida_request(struct reques
49801 +@@ -911,6 +911,8 @@ static void do_ida_request(struct reques
49802 struct scatterlist tmp_sg[SG_MAX];
49803 int i, dir, seg;
49804
49805 + pax_track_stack();
49806 +
49807 - if (blk_queue_plugged(q))
49808 - goto startio;
49809 -
49810 -@@ -968,7 +970,7 @@ static void start_io(ctlr_info_t *h)
49811 + queue_next:
49812 + creq = blk_peek_request(q);
49813 + if (!creq)
49814 +@@ -980,7 +982,7 @@ static void start_io(ctlr_info_t *h)
49815
49816 while((c = h->reqQ) != NULL) {
49817 /* Can't do anything if we're busy */
49818 @@ -28327,7 +24950,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49819 return;
49820
49821 /* Get the first entry from the request Q */
49822 -@@ -976,7 +978,7 @@ static void start_io(ctlr_info_t *h)
49823 +@@ -988,7 +990,7 @@ static void start_io(ctlr_info_t *h)
49824 h->Qdepth--;
49825
49826 /* Tell the controller to do our bidding */
49827 @@ -28336,7 +24959,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49828
49829 /* Get onto the completion Q */
49830 addQ(&h->cmpQ, c);
49831 -@@ -1038,7 +1040,7 @@ static irqreturn_t do_ida_intr(int irq,
49832 +@@ -1050,7 +1052,7 @@ static irqreturn_t do_ida_intr(int irq,
49833 unsigned long flags;
49834 __u32 a,a1;
49835
49836 @@ -28345,7 +24968,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49837 /* Is this interrupt for us? */
49838 if (istat == 0)
49839 return IRQ_NONE;
49840 -@@ -1049,7 +1051,7 @@ static irqreturn_t do_ida_intr(int irq,
49841 +@@ -1061,7 +1063,7 @@ static irqreturn_t do_ida_intr(int irq,
49842 */
49843 spin_lock_irqsave(IDA_LOCK(h->ctlr), flags);
49844 if (istat & FIFO_NOT_EMPTY) {
49845 @@ -28354,7 +24977,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49846 a1 = a; a &= ~3;
49847 if ((c = h->cmpQ) == NULL)
49848 {
49849 -@@ -1434,11 +1436,11 @@ static int sendcmd(
49850 +@@ -1449,11 +1451,11 @@ static int sendcmd(
49851 /*
49852 * Disable interrupt
49853 */
49854 @@ -28368,7 +24991,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49855 if (temp != 0) {
49856 break;
49857 }
49858 -@@ -1451,7 +1453,7 @@ DBG(
49859 +@@ -1466,7 +1468,7 @@ DBG(
49860 /*
49861 * Send the cmd
49862 */
49863 @@ -28377,7 +25000,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49864 complete = pollcomplete(ctlr);
49865
49866 pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr,
49867 -@@ -1534,9 +1536,9 @@ static int revalidate_allvol(ctlr_info_t
49868 +@@ -1549,9 +1551,9 @@ static int revalidate_allvol(ctlr_info_t
49869 * we check the new geometry. Then turn interrupts back on when
49870 * we're done.
49871 */
49872 @@ -28389,7 +25012,7 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49873
49874 for(i=0; i<NWD; i++) {
49875 struct gendisk *disk = ida_gendisk[ctlr][i];
49876 -@@ -1576,7 +1578,7 @@ static int pollcomplete(int ctlr)
49877 +@@ -1591,7 +1593,7 @@ static int pollcomplete(int ctlr)
49878 /* Wait (up to 2 seconds) for a command to complete */
49879
49880 for (i = 200000; i > 0; i--) {
49881 @@ -28398,9 +25021,9 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.c linux-2.6.32.48/drivers/bloc
49882 if (done == 0) {
49883 udelay(10); /* a short fixed delay */
49884 } else
49885 -diff -urNp linux-2.6.32.48/drivers/block/cpqarray.h linux-2.6.32.48/drivers/block/cpqarray.h
49886 ---- linux-2.6.32.48/drivers/block/cpqarray.h 2009-12-02 22:51:21.000000000 -0500
49887 -+++ linux-2.6.32.48/drivers/block/cpqarray.h 2011-11-12 12:46:42.000000000 -0500
49888 +diff -urNp linux-3.0.8/drivers/block/cpqarray.h linux-3.0.8/drivers/block/cpqarray.h
49889 +--- linux-3.0.8/drivers/block/cpqarray.h 2011-07-21 22:17:23.000000000 -0400
49890 ++++ linux-3.0.8/drivers/block/cpqarray.h 2011-08-23 21:47:55.000000000 -0400
49891 @@ -99,7 +99,7 @@ struct ctlr_info {
49892 drv_info_t drv[NWD];
49893 struct proc_dir_entry *proc;
49894 @@ -28410,10 +25033,10 @@ diff -urNp linux-2.6.32.48/drivers/block/cpqarray.h linux-2.6.32.48/drivers/bloc
49895
49896 cmdlist_t *reqQ;
49897 cmdlist_t *cmpQ;
49898 -diff -urNp linux-2.6.32.48/drivers/block/DAC960.c linux-2.6.32.48/drivers/block/DAC960.c
49899 ---- linux-2.6.32.48/drivers/block/DAC960.c 2009-12-02 22:51:21.000000000 -0500
49900 -+++ linux-2.6.32.48/drivers/block/DAC960.c 2011-11-12 12:46:42.000000000 -0500
49901 -@@ -1973,6 +1973,8 @@ static bool DAC960_V1_ReadDeviceConfigur
49902 +diff -urNp linux-3.0.8/drivers/block/DAC960.c linux-3.0.8/drivers/block/DAC960.c
49903 +--- linux-3.0.8/drivers/block/DAC960.c 2011-07-21 22:17:23.000000000 -0400
49904 ++++ linux-3.0.8/drivers/block/DAC960.c 2011-08-23 21:48:14.000000000 -0400
49905 +@@ -1980,6 +1980,8 @@ static bool DAC960_V1_ReadDeviceConfigur
49906 unsigned long flags;
49907 int Channel, TargetID;
49908
49909 @@ -28422,10 +25045,247 @@ diff -urNp linux-2.6.32.48/drivers/block/DAC960.c linux-2.6.32.48/drivers/block/
49910 if (!init_dma_loaf(Controller->PCIDevice, &local_dma,
49911 DAC960_V1_MaxChannels*(sizeof(DAC960_V1_DCDB_T) +
49912 sizeof(DAC960_SCSI_Inquiry_T) +
49913 -diff -urNp linux-2.6.32.48/drivers/block/loop.c linux-2.6.32.48/drivers/block/loop.c
49914 ---- linux-2.6.32.48/drivers/block/loop.c 2011-11-12 12:44:28.000000000 -0500
49915 -+++ linux-2.6.32.48/drivers/block/loop.c 2011-11-12 12:46:42.000000000 -0500
49916 -@@ -282,7 +282,7 @@ static int __do_lo_send_write(struct fil
49917 +diff -urNp linux-3.0.8/drivers/block/drbd/drbd_int.h linux-3.0.8/drivers/block/drbd/drbd_int.h
49918 +--- linux-3.0.8/drivers/block/drbd/drbd_int.h 2011-07-21 22:17:23.000000000 -0400
49919 ++++ linux-3.0.8/drivers/block/drbd/drbd_int.h 2011-10-06 04:17:55.000000000 -0400
49920 +@@ -737,7 +737,7 @@ struct drbd_request;
49921 + struct drbd_epoch {
49922 + struct list_head list;
49923 + unsigned int barrier_nr;
49924 +- atomic_t epoch_size; /* increased on every request added. */
49925 ++ atomic_unchecked_t epoch_size; /* increased on every request added. */
49926 + atomic_t active; /* increased on every req. added, and dec on every finished. */
49927 + unsigned long flags;
49928 + };
49929 +@@ -1109,7 +1109,7 @@ struct drbd_conf {
49930 + void *int_dig_in;
49931 + void *int_dig_vv;
49932 + wait_queue_head_t seq_wait;
49933 +- atomic_t packet_seq;
49934 ++ atomic_unchecked_t packet_seq;
49935 + unsigned int peer_seq;
49936 + spinlock_t peer_seq_lock;
49937 + unsigned int minor;
49938 +@@ -1618,30 +1618,30 @@ static inline int drbd_setsockopt(struct
49939 +
49940 + static inline void drbd_tcp_cork(struct socket *sock)
49941 + {
49942 +- int __user val = 1;
49943 ++ int val = 1;
49944 + (void) drbd_setsockopt(sock, SOL_TCP, TCP_CORK,
49945 +- (char __user *)&val, sizeof(val));
49946 ++ (char __force_user *)&val, sizeof(val));
49947 + }
49948 +
49949 + static inline void drbd_tcp_uncork(struct socket *sock)
49950 + {
49951 +- int __user val = 0;
49952 ++ int val = 0;
49953 + (void) drbd_setsockopt(sock, SOL_TCP, TCP_CORK,
49954 +- (char __user *)&val, sizeof(val));
49955 ++ (char __force_user *)&val, sizeof(val));
49956 + }
49957 +
49958 + static inline void drbd_tcp_nodelay(struct socket *sock)
49959 + {
49960 +- int __user val = 1;
49961 ++ int val = 1;
49962 + (void) drbd_setsockopt(sock, SOL_TCP, TCP_NODELAY,
49963 +- (char __user *)&val, sizeof(val));
49964 ++ (char __force_user *)&val, sizeof(val));
49965 + }
49966 +
49967 + static inline void drbd_tcp_quickack(struct socket *sock)
49968 + {
49969 +- int __user val = 2;
49970 ++ int val = 2;
49971 + (void) drbd_setsockopt(sock, SOL_TCP, TCP_QUICKACK,
49972 +- (char __user *)&val, sizeof(val));
49973 ++ (char __force_user *)&val, sizeof(val));
49974 + }
49975 +
49976 + void drbd_bump_write_ordering(struct drbd_conf *mdev, enum write_ordering_e wo);
49977 +diff -urNp linux-3.0.8/drivers/block/drbd/drbd_main.c linux-3.0.8/drivers/block/drbd/drbd_main.c
49978 +--- linux-3.0.8/drivers/block/drbd/drbd_main.c 2011-07-21 22:17:23.000000000 -0400
49979 ++++ linux-3.0.8/drivers/block/drbd/drbd_main.c 2011-08-23 21:47:55.000000000 -0400
49980 +@@ -2397,7 +2397,7 @@ static int _drbd_send_ack(struct drbd_co
49981 + p.sector = sector;
49982 + p.block_id = block_id;
49983 + p.blksize = blksize;
49984 +- p.seq_num = cpu_to_be32(atomic_add_return(1, &mdev->packet_seq));
49985 ++ p.seq_num = cpu_to_be32(atomic_add_return_unchecked(1, &mdev->packet_seq));
49986 +
49987 + if (!mdev->meta.socket || mdev->state.conn < C_CONNECTED)
49988 + return false;
49989 +@@ -2696,7 +2696,7 @@ int drbd_send_dblock(struct drbd_conf *m
49990 + p.sector = cpu_to_be64(req->sector);
49991 + p.block_id = (unsigned long)req;
49992 + p.seq_num = cpu_to_be32(req->seq_num =
49993 +- atomic_add_return(1, &mdev->packet_seq));
49994 ++ atomic_add_return_unchecked(1, &mdev->packet_seq));
49995 +
49996 + dp_flags = bio_flags_to_wire(mdev, req->master_bio->bi_rw);
49997 +
49998 +@@ -2981,7 +2981,7 @@ void drbd_init_set_defaults(struct drbd_
49999 + atomic_set(&mdev->unacked_cnt, 0);
50000 + atomic_set(&mdev->local_cnt, 0);
50001 + atomic_set(&mdev->net_cnt, 0);
50002 +- atomic_set(&mdev->packet_seq, 0);
50003 ++ atomic_set_unchecked(&mdev->packet_seq, 0);
50004 + atomic_set(&mdev->pp_in_use, 0);
50005 + atomic_set(&mdev->pp_in_use_by_net, 0);
50006 + atomic_set(&mdev->rs_sect_in, 0);
50007 +@@ -3063,8 +3063,8 @@ void drbd_mdev_cleanup(struct drbd_conf
50008 + mdev->receiver.t_state);
50009 +
50010 + /* no need to lock it, I'm the only thread alive */
50011 +- if (atomic_read(&mdev->current_epoch->epoch_size) != 0)
50012 +- dev_err(DEV, "epoch_size:%d\n", atomic_read(&mdev->current_epoch->epoch_size));
50013 ++ if (atomic_read_unchecked(&mdev->current_epoch->epoch_size) != 0)
50014 ++ dev_err(DEV, "epoch_size:%d\n", atomic_read_unchecked(&mdev->current_epoch->epoch_size));
50015 + mdev->al_writ_cnt =
50016 + mdev->bm_writ_cnt =
50017 + mdev->read_cnt =
50018 +diff -urNp linux-3.0.8/drivers/block/drbd/drbd_nl.c linux-3.0.8/drivers/block/drbd/drbd_nl.c
50019 +--- linux-3.0.8/drivers/block/drbd/drbd_nl.c 2011-07-21 22:17:23.000000000 -0400
50020 ++++ linux-3.0.8/drivers/block/drbd/drbd_nl.c 2011-08-23 21:47:55.000000000 -0400
50021 +@@ -2359,7 +2359,7 @@ static void drbd_connector_callback(stru
50022 + module_put(THIS_MODULE);
50023 + }
50024 +
50025 +-static atomic_t drbd_nl_seq = ATOMIC_INIT(2); /* two. */
50026 ++static atomic_unchecked_t drbd_nl_seq = ATOMIC_INIT(2); /* two. */
50027 +
50028 + static unsigned short *
50029 + __tl_add_blob(unsigned short *tl, enum drbd_tags tag, const void *data,
50030 +@@ -2430,7 +2430,7 @@ void drbd_bcast_state(struct drbd_conf *
50031 + cn_reply->id.idx = CN_IDX_DRBD;
50032 + cn_reply->id.val = CN_VAL_DRBD;
50033 +
50034 +- cn_reply->seq = atomic_add_return(1, &drbd_nl_seq);
50035 ++ cn_reply->seq = atomic_add_return_unchecked(1, &drbd_nl_seq);
50036 + cn_reply->ack = 0; /* not used here. */
50037 + cn_reply->len = sizeof(struct drbd_nl_cfg_reply) +
50038 + (int)((char *)tl - (char *)reply->tag_list);
50039 +@@ -2462,7 +2462,7 @@ void drbd_bcast_ev_helper(struct drbd_co
50040 + cn_reply->id.idx = CN_IDX_DRBD;
50041 + cn_reply->id.val = CN_VAL_DRBD;
50042 +
50043 +- cn_reply->seq = atomic_add_return(1, &drbd_nl_seq);
50044 ++ cn_reply->seq = atomic_add_return_unchecked(1, &drbd_nl_seq);
50045 + cn_reply->ack = 0; /* not used here. */
50046 + cn_reply->len = sizeof(struct drbd_nl_cfg_reply) +
50047 + (int)((char *)tl - (char *)reply->tag_list);
50048 +@@ -2540,7 +2540,7 @@ void drbd_bcast_ee(struct drbd_conf *mde
50049 + cn_reply->id.idx = CN_IDX_DRBD;
50050 + cn_reply->id.val = CN_VAL_DRBD;
50051 +
50052 +- cn_reply->seq = atomic_add_return(1,&drbd_nl_seq);
50053 ++ cn_reply->seq = atomic_add_return_unchecked(1,&drbd_nl_seq);
50054 + cn_reply->ack = 0; // not used here.
50055 + cn_reply->len = sizeof(struct drbd_nl_cfg_reply) +
50056 + (int)((char*)tl - (char*)reply->tag_list);
50057 +@@ -2579,7 +2579,7 @@ void drbd_bcast_sync_progress(struct drb
50058 + cn_reply->id.idx = CN_IDX_DRBD;
50059 + cn_reply->id.val = CN_VAL_DRBD;
50060 +
50061 +- cn_reply->seq = atomic_add_return(1, &drbd_nl_seq);
50062 ++ cn_reply->seq = atomic_add_return_unchecked(1, &drbd_nl_seq);
50063 + cn_reply->ack = 0; /* not used here. */
50064 + cn_reply->len = sizeof(struct drbd_nl_cfg_reply) +
50065 + (int)((char *)tl - (char *)reply->tag_list);
50066 +diff -urNp linux-3.0.8/drivers/block/drbd/drbd_receiver.c linux-3.0.8/drivers/block/drbd/drbd_receiver.c
50067 +--- linux-3.0.8/drivers/block/drbd/drbd_receiver.c 2011-07-21 22:17:23.000000000 -0400
50068 ++++ linux-3.0.8/drivers/block/drbd/drbd_receiver.c 2011-08-23 21:47:55.000000000 -0400
50069 +@@ -894,7 +894,7 @@ retry:
50070 + sock->sk->sk_sndtimeo = mdev->net_conf->timeout*HZ/10;
50071 + sock->sk->sk_rcvtimeo = MAX_SCHEDULE_TIMEOUT;
50072 +
50073 +- atomic_set(&mdev->packet_seq, 0);
50074 ++ atomic_set_unchecked(&mdev->packet_seq, 0);
50075 + mdev->peer_seq = 0;
50076 +
50077 + drbd_thread_start(&mdev->asender);
50078 +@@ -985,7 +985,7 @@ static enum finish_epoch drbd_may_finish
50079 + do {
50080 + next_epoch = NULL;
50081 +
50082 +- epoch_size = atomic_read(&epoch->epoch_size);
50083 ++ epoch_size = atomic_read_unchecked(&epoch->epoch_size);
50084 +
50085 + switch (ev & ~EV_CLEANUP) {
50086 + case EV_PUT:
50087 +@@ -1020,7 +1020,7 @@ static enum finish_epoch drbd_may_finish
50088 + rv = FE_DESTROYED;
50089 + } else {
50090 + epoch->flags = 0;
50091 +- atomic_set(&epoch->epoch_size, 0);
50092 ++ atomic_set_unchecked(&epoch->epoch_size, 0);
50093 + /* atomic_set(&epoch->active, 0); is already zero */
50094 + if (rv == FE_STILL_LIVE)
50095 + rv = FE_RECYCLED;
50096 +@@ -1191,14 +1191,14 @@ static int receive_Barrier(struct drbd_c
50097 + drbd_wait_ee_list_empty(mdev, &mdev->active_ee);
50098 + drbd_flush(mdev);
50099 +
50100 +- if (atomic_read(&mdev->current_epoch->epoch_size)) {
50101 ++ if (atomic_read_unchecked(&mdev->current_epoch->epoch_size)) {
50102 + epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO);
50103 + if (epoch)
50104 + break;
50105 + }
50106 +
50107 + epoch = mdev->current_epoch;
50108 +- wait_event(mdev->ee_wait, atomic_read(&epoch->epoch_size) == 0);
50109 ++ wait_event(mdev->ee_wait, atomic_read_unchecked(&epoch->epoch_size) == 0);
50110 +
50111 + D_ASSERT(atomic_read(&epoch->active) == 0);
50112 + D_ASSERT(epoch->flags == 0);
50113 +@@ -1210,11 +1210,11 @@ static int receive_Barrier(struct drbd_c
50114 + }
50115 +
50116 + epoch->flags = 0;
50117 +- atomic_set(&epoch->epoch_size, 0);
50118 ++ atomic_set_unchecked(&epoch->epoch_size, 0);
50119 + atomic_set(&epoch->active, 0);
50120 +
50121 + spin_lock(&mdev->epoch_lock);
50122 +- if (atomic_read(&mdev->current_epoch->epoch_size)) {
50123 ++ if (atomic_read_unchecked(&mdev->current_epoch->epoch_size)) {
50124 + list_add(&epoch->list, &mdev->current_epoch->list);
50125 + mdev->current_epoch = epoch;
50126 + mdev->epochs++;
50127 +@@ -1663,7 +1663,7 @@ static int receive_Data(struct drbd_conf
50128 + spin_unlock(&mdev->peer_seq_lock);
50129 +
50130 + drbd_send_ack_dp(mdev, P_NEG_ACK, p, data_size);
50131 +- atomic_inc(&mdev->current_epoch->epoch_size);
50132 ++ atomic_inc_unchecked(&mdev->current_epoch->epoch_size);
50133 + return drbd_drain_block(mdev, data_size);
50134 + }
50135 +
50136 +@@ -1689,7 +1689,7 @@ static int receive_Data(struct drbd_conf
50137 +
50138 + spin_lock(&mdev->epoch_lock);
50139 + e->epoch = mdev->current_epoch;
50140 +- atomic_inc(&e->epoch->epoch_size);
50141 ++ atomic_inc_unchecked(&e->epoch->epoch_size);
50142 + atomic_inc(&e->epoch->active);
50143 + spin_unlock(&mdev->epoch_lock);
50144 +
50145 +@@ -3885,7 +3885,7 @@ static void drbd_disconnect(struct drbd_
50146 + D_ASSERT(list_empty(&mdev->done_ee));
50147 +
50148 + /* ok, no more ee's on the fly, it is safe to reset the epoch_size */
50149 +- atomic_set(&mdev->current_epoch->epoch_size, 0);
50150 ++ atomic_set_unchecked(&mdev->current_epoch->epoch_size, 0);
50151 + D_ASSERT(list_empty(&mdev->current_epoch->list));
50152 + }
50153 +
50154 +diff -urNp linux-3.0.8/drivers/block/loop.c linux-3.0.8/drivers/block/loop.c
50155 +--- linux-3.0.8/drivers/block/loop.c 2011-10-24 08:05:23.000000000 -0400
50156 ++++ linux-3.0.8/drivers/block/loop.c 2011-10-06 04:17:55.000000000 -0400
50157 +@@ -283,7 +283,7 @@ static int __do_lo_send_write(struct fil
50158 mm_segment_t old_fs = get_fs();
50159
50160 set_fs(get_ds());
50161 @@ -28434,10 +25294,10 @@ diff -urNp linux-2.6.32.48/drivers/block/loop.c linux-2.6.32.48/drivers/block/lo
50162 set_fs(old_fs);
50163 if (likely(bw == len))
50164 return 0;
50165 -diff -urNp linux-2.6.32.48/drivers/block/nbd.c linux-2.6.32.48/drivers/block/nbd.c
50166 ---- linux-2.6.32.48/drivers/block/nbd.c 2011-11-12 12:44:28.000000000 -0500
50167 -+++ linux-2.6.32.48/drivers/block/nbd.c 2011-11-12 12:46:42.000000000 -0500
50168 -@@ -155,6 +155,8 @@ static int sock_xmit(struct nbd_device *
50169 +diff -urNp linux-3.0.8/drivers/block/nbd.c linux-3.0.8/drivers/block/nbd.c
50170 +--- linux-3.0.8/drivers/block/nbd.c 2011-07-21 22:17:23.000000000 -0400
50171 ++++ linux-3.0.8/drivers/block/nbd.c 2011-08-23 21:48:14.000000000 -0400
50172 +@@ -157,6 +157,8 @@ static int sock_xmit(struct nbd_device *
50173 struct kvec iov;
50174 sigset_t blocked, oldset;
50175
50176 @@ -28446,7 +25306,7 @@ diff -urNp linux-2.6.32.48/drivers/block/nbd.c linux-2.6.32.48/drivers/block/nbd
50177 if (unlikely(!sock)) {
50178 printk(KERN_ERR "%s: Attempted %s on closed socket in sock_xmit\n",
50179 lo->disk->disk_name, (send ? "send" : "recv"));
50180 -@@ -569,6 +571,8 @@ static void do_nbd_request(struct reques
50181 +@@ -572,6 +574,8 @@ static void do_nbd_request(struct reques
50182 static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *lo,
50183 unsigned int cmd, unsigned long arg)
50184 {
50185 @@ -28455,22 +25315,10 @@ diff -urNp linux-2.6.32.48/drivers/block/nbd.c linux-2.6.32.48/drivers/block/nbd
50186 switch (cmd) {
50187 case NBD_DISCONNECT: {
50188 struct request sreq;
50189 -diff -urNp linux-2.6.32.48/drivers/block/pktcdvd.c linux-2.6.32.48/drivers/block/pktcdvd.c
50190 ---- linux-2.6.32.48/drivers/block/pktcdvd.c 2011-11-12 12:44:28.000000000 -0500
50191 -+++ linux-2.6.32.48/drivers/block/pktcdvd.c 2011-11-12 12:46:42.000000000 -0500
50192 -@@ -284,7 +284,7 @@ static ssize_t kobj_pkt_store(struct kob
50193 - return len;
50194 - }
50195 -
50196 --static struct sysfs_ops kobj_pkt_ops = {
50197 -+static const struct sysfs_ops kobj_pkt_ops = {
50198 - .show = kobj_pkt_show,
50199 - .store = kobj_pkt_store
50200 - };
50201 -diff -urNp linux-2.6.32.48/drivers/char/agp/frontend.c linux-2.6.32.48/drivers/char/agp/frontend.c
50202 ---- linux-2.6.32.48/drivers/char/agp/frontend.c 2009-12-02 22:51:21.000000000 -0500
50203 -+++ linux-2.6.32.48/drivers/char/agp/frontend.c 2011-11-12 12:46:42.000000000 -0500
50204 -@@ -824,7 +824,7 @@ static int agpioc_reserve_wrap(struct ag
50205 +diff -urNp linux-3.0.8/drivers/char/agp/frontend.c linux-3.0.8/drivers/char/agp/frontend.c
50206 +--- linux-3.0.8/drivers/char/agp/frontend.c 2011-07-21 22:17:23.000000000 -0400
50207 ++++ linux-3.0.8/drivers/char/agp/frontend.c 2011-08-23 21:47:55.000000000 -0400
50208 +@@ -817,7 +817,7 @@ static int agpioc_reserve_wrap(struct ag
50209 if (copy_from_user(&reserve, arg, sizeof(struct agp_region)))
50210 return -EFAULT;
50211
50212 @@ -28479,10 +25327,10 @@ diff -urNp linux-2.6.32.48/drivers/char/agp/frontend.c linux-2.6.32.48/drivers/c
50213 return -EFAULT;
50214
50215 client = agp_find_client_by_pid(reserve.pid);
50216 -diff -urNp linux-2.6.32.48/drivers/char/briq_panel.c linux-2.6.32.48/drivers/char/briq_panel.c
50217 ---- linux-2.6.32.48/drivers/char/briq_panel.c 2009-12-02 22:51:21.000000000 -0500
50218 -+++ linux-2.6.32.48/drivers/char/briq_panel.c 2011-11-12 12:46:42.000000000 -0500
50219 -@@ -10,6 +10,7 @@
50220 +diff -urNp linux-3.0.8/drivers/char/briq_panel.c linux-3.0.8/drivers/char/briq_panel.c
50221 +--- linux-3.0.8/drivers/char/briq_panel.c 2011-07-21 22:17:23.000000000 -0400
50222 ++++ linux-3.0.8/drivers/char/briq_panel.c 2011-08-23 21:48:14.000000000 -0400
50223 +@@ -9,6 +9,7 @@
50224 #include <linux/types.h>
50225 #include <linux/errno.h>
50226 #include <linux/tty.h>
50227 @@ -28490,7 +25338,7 @@ diff -urNp linux-2.6.32.48/drivers/char/briq_panel.c linux-2.6.32.48/drivers/cha
50228 #include <linux/timer.h>
50229 #include <linux/kernel.h>
50230 #include <linux/wait.h>
50231 -@@ -36,6 +37,7 @@ static int vfd_is_open;
50232 +@@ -34,6 +35,7 @@ static int vfd_is_open;
50233 static unsigned char vfd[40];
50234 static int vfd_cursor;
50235 static unsigned char ledpb, led;
50236 @@ -28498,7 +25346,7 @@ diff -urNp linux-2.6.32.48/drivers/char/briq_panel.c linux-2.6.32.48/drivers/cha
50237
50238 static void update_vfd(void)
50239 {
50240 -@@ -142,12 +144,15 @@ static ssize_t briq_panel_write(struct f
50241 +@@ -140,12 +142,15 @@ static ssize_t briq_panel_write(struct f
50242 if (!vfd_is_open)
50243 return -EBUSY;
50244
50245 @@ -28515,7 +25363,7 @@ diff -urNp linux-2.6.32.48/drivers/char/briq_panel.c linux-2.6.32.48/drivers/cha
50246 if (esc) {
50247 set_led(c);
50248 esc = 0;
50249 -@@ -177,6 +182,7 @@ static ssize_t briq_panel_write(struct f
50250 +@@ -175,6 +180,7 @@ static ssize_t briq_panel_write(struct f
50251 buf++;
50252 }
50253 update_vfd();
50254 @@ -28523,10 +25371,10 @@ diff -urNp linux-2.6.32.48/drivers/char/briq_panel.c linux-2.6.32.48/drivers/cha
50255
50256 return len;
50257 }
50258 -diff -urNp linux-2.6.32.48/drivers/char/genrtc.c linux-2.6.32.48/drivers/char/genrtc.c
50259 ---- linux-2.6.32.48/drivers/char/genrtc.c 2009-12-02 22:51:21.000000000 -0500
50260 -+++ linux-2.6.32.48/drivers/char/genrtc.c 2011-11-12 12:46:42.000000000 -0500
50261 -@@ -272,6 +272,7 @@ static int gen_rtc_ioctl(struct inode *i
50262 +diff -urNp linux-3.0.8/drivers/char/genrtc.c linux-3.0.8/drivers/char/genrtc.c
50263 +--- linux-3.0.8/drivers/char/genrtc.c 2011-07-21 22:17:23.000000000 -0400
50264 ++++ linux-3.0.8/drivers/char/genrtc.c 2011-08-23 21:48:14.000000000 -0400
50265 +@@ -273,6 +273,7 @@ static int gen_rtc_ioctl(struct file *fi
50266 switch (cmd) {
50267
50268 case RTC_PLL_GET:
50269 @@ -28534,290 +25382,22 @@ diff -urNp linux-2.6.32.48/drivers/char/genrtc.c linux-2.6.32.48/drivers/char/ge
50270 if (get_rtc_pll(&pll))
50271 return -EINVAL;
50272 else
50273 -diff -urNp linux-2.6.32.48/drivers/char/hpet.c linux-2.6.32.48/drivers/char/hpet.c
50274 ---- linux-2.6.32.48/drivers/char/hpet.c 2011-11-12 12:44:28.000000000 -0500
50275 -+++ linux-2.6.32.48/drivers/char/hpet.c 2011-11-12 12:46:42.000000000 -0500
50276 -@@ -430,7 +430,7 @@ static int hpet_release(struct inode *in
50277 - return 0;
50278 - }
50279 -
50280 --static int hpet_ioctl_common(struct hpet_dev *, int, unsigned long, int);
50281 -+static int hpet_ioctl_common(struct hpet_dev *, unsigned int, unsigned long, int);
50282 -
50283 - static int
50284 - hpet_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
50285 -@@ -565,7 +565,7 @@ static inline unsigned long hpet_time_di
50286 +diff -urNp linux-3.0.8/drivers/char/hpet.c linux-3.0.8/drivers/char/hpet.c
50287 +--- linux-3.0.8/drivers/char/hpet.c 2011-07-21 22:17:23.000000000 -0400
50288 ++++ linux-3.0.8/drivers/char/hpet.c 2011-08-23 21:47:55.000000000 -0400
50289 +@@ -572,7 +572,7 @@ static inline unsigned long hpet_time_di
50290 }
50291
50292 static int
50293 --hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg, int kernel)
50294 -+hpet_ioctl_common(struct hpet_dev *devp, unsigned int cmd, unsigned long arg, int kernel)
50295 +-hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg,
50296 ++hpet_ioctl_common(struct hpet_dev *devp, unsigned int cmd, unsigned long arg,
50297 + struct hpet_info *info)
50298 {
50299 struct hpet_timer __iomem *timer;
50300 - struct hpet __iomem *hpet;
50301 -@@ -608,11 +608,11 @@ hpet_ioctl_common(struct hpet_dev *devp,
50302 - {
50303 - struct hpet_info info;
50304 -
50305 -+ memset(&info, 0, sizeof(info));
50306 -+
50307 - if (devp->hd_ireqfreq)
50308 - info.hi_ireqfreq =
50309 - hpet_time_div(hpetp, devp->hd_ireqfreq);
50310 -- else
50311 -- info.hi_ireqfreq = 0;
50312 - info.hi_flags =
50313 - readq(&timer->hpet_config) & Tn_PER_INT_CAP_MASK;
50314 - info.hi_hpet = hpetp->hp_which;
50315 -diff -urNp linux-2.6.32.48/drivers/char/hvc_beat.c linux-2.6.32.48/drivers/char/hvc_beat.c
50316 ---- linux-2.6.32.48/drivers/char/hvc_beat.c 2009-12-02 22:51:21.000000000 -0500
50317 -+++ linux-2.6.32.48/drivers/char/hvc_beat.c 2011-11-12 12:46:42.000000000 -0500
50318 -@@ -84,7 +84,7 @@ static int hvc_beat_put_chars(uint32_t v
50319 - return cnt;
50320 - }
50321 -
50322 --static struct hv_ops hvc_beat_get_put_ops = {
50323 -+static const struct hv_ops hvc_beat_get_put_ops = {
50324 - .get_chars = hvc_beat_get_chars,
50325 - .put_chars = hvc_beat_put_chars,
50326 - };
50327 -diff -urNp linux-2.6.32.48/drivers/char/hvc_console.c linux-2.6.32.48/drivers/char/hvc_console.c
50328 ---- linux-2.6.32.48/drivers/char/hvc_console.c 2011-11-12 12:44:28.000000000 -0500
50329 -+++ linux-2.6.32.48/drivers/char/hvc_console.c 2011-11-12 12:46:42.000000000 -0500
50330 -@@ -125,7 +125,7 @@ static struct hvc_struct *hvc_get_by_ind
50331 - * console interfaces but can still be used as a tty device. This has to be
50332 - * static because kmalloc will not work during early console init.
50333 - */
50334 --static struct hv_ops *cons_ops[MAX_NR_HVC_CONSOLES];
50335 -+static const struct hv_ops *cons_ops[MAX_NR_HVC_CONSOLES];
50336 - static uint32_t vtermnos[MAX_NR_HVC_CONSOLES] =
50337 - {[0 ... MAX_NR_HVC_CONSOLES - 1] = -1};
50338 -
50339 -@@ -249,7 +249,7 @@ static void destroy_hvc_struct(struct kr
50340 - * vty adapters do NOT get an hvc_instantiate() callback since they
50341 - * appear after early console init.
50342 - */
50343 --int hvc_instantiate(uint32_t vtermno, int index, struct hv_ops *ops)
50344 -+int hvc_instantiate(uint32_t vtermno, int index, const struct hv_ops *ops)
50345 - {
50346 - struct hvc_struct *hp;
50347 -
50348 -@@ -758,7 +758,7 @@ static const struct tty_operations hvc_o
50349 - };
50350 -
50351 - struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int data,
50352 -- struct hv_ops *ops, int outbuf_size)
50353 -+ const struct hv_ops *ops, int outbuf_size)
50354 - {
50355 - struct hvc_struct *hp;
50356 - int i;
50357 -diff -urNp linux-2.6.32.48/drivers/char/hvc_console.h linux-2.6.32.48/drivers/char/hvc_console.h
50358 ---- linux-2.6.32.48/drivers/char/hvc_console.h 2009-12-02 22:51:21.000000000 -0500
50359 -+++ linux-2.6.32.48/drivers/char/hvc_console.h 2011-11-12 12:46:42.000000000 -0500
50360 -@@ -55,7 +55,7 @@ struct hvc_struct {
50361 - int outbuf_size;
50362 - int n_outbuf;
50363 - uint32_t vtermno;
50364 -- struct hv_ops *ops;
50365 -+ const struct hv_ops *ops;
50366 - int irq_requested;
50367 - int data;
50368 - struct winsize ws;
50369 -@@ -76,11 +76,11 @@ struct hv_ops {
50370 - };
50371 -
50372 - /* Register a vterm and a slot index for use as a console (console_init) */
50373 --extern int hvc_instantiate(uint32_t vtermno, int index, struct hv_ops *ops);
50374 -+extern int hvc_instantiate(uint32_t vtermno, int index, const struct hv_ops *ops);
50375 -
50376 - /* register a vterm for hvc tty operation (module_init or hotplug add) */
50377 - extern struct hvc_struct * __devinit hvc_alloc(uint32_t vtermno, int data,
50378 -- struct hv_ops *ops, int outbuf_size);
50379 -+ const struct hv_ops *ops, int outbuf_size);
50380 - /* remove a vterm from hvc tty operation (module_exit or hotplug remove) */
50381 - extern int hvc_remove(struct hvc_struct *hp);
50382 -
50383 -diff -urNp linux-2.6.32.48/drivers/char/hvc_iseries.c linux-2.6.32.48/drivers/char/hvc_iseries.c
50384 ---- linux-2.6.32.48/drivers/char/hvc_iseries.c 2009-12-02 22:51:21.000000000 -0500
50385 -+++ linux-2.6.32.48/drivers/char/hvc_iseries.c 2011-11-12 12:46:42.000000000 -0500
50386 -@@ -197,7 +197,7 @@ done:
50387 - return sent;
50388 - }
50389 -
50390 --static struct hv_ops hvc_get_put_ops = {
50391 -+static const struct hv_ops hvc_get_put_ops = {
50392 - .get_chars = get_chars,
50393 - .put_chars = put_chars,
50394 - .notifier_add = notifier_add_irq,
50395 -diff -urNp linux-2.6.32.48/drivers/char/hvc_iucv.c linux-2.6.32.48/drivers/char/hvc_iucv.c
50396 ---- linux-2.6.32.48/drivers/char/hvc_iucv.c 2011-11-12 12:44:28.000000000 -0500
50397 -+++ linux-2.6.32.48/drivers/char/hvc_iucv.c 2011-11-12 12:46:42.000000000 -0500
50398 -@@ -924,7 +924,7 @@ static int hvc_iucv_pm_restore_thaw(stru
50399 -
50400 -
50401 - /* HVC operations */
50402 --static struct hv_ops hvc_iucv_ops = {
50403 -+static const struct hv_ops hvc_iucv_ops = {
50404 - .get_chars = hvc_iucv_get_chars,
50405 - .put_chars = hvc_iucv_put_chars,
50406 - .notifier_add = hvc_iucv_notifier_add,
50407 -diff -urNp linux-2.6.32.48/drivers/char/hvc_rtas.c linux-2.6.32.48/drivers/char/hvc_rtas.c
50408 ---- linux-2.6.32.48/drivers/char/hvc_rtas.c 2009-12-02 22:51:21.000000000 -0500
50409 -+++ linux-2.6.32.48/drivers/char/hvc_rtas.c 2011-11-12 12:46:42.000000000 -0500
50410 -@@ -71,7 +71,7 @@ static int hvc_rtas_read_console(uint32_
50411 - return i;
50412 - }
50413 -
50414 --static struct hv_ops hvc_rtas_get_put_ops = {
50415 -+static const struct hv_ops hvc_rtas_get_put_ops = {
50416 - .get_chars = hvc_rtas_read_console,
50417 - .put_chars = hvc_rtas_write_console,
50418 - };
50419 -diff -urNp linux-2.6.32.48/drivers/char/hvcs.c linux-2.6.32.48/drivers/char/hvcs.c
50420 ---- linux-2.6.32.48/drivers/char/hvcs.c 2009-12-02 22:51:21.000000000 -0500
50421 -+++ linux-2.6.32.48/drivers/char/hvcs.c 2011-11-12 12:46:42.000000000 -0500
50422 -@@ -82,6 +82,7 @@
50423 - #include <asm/hvcserver.h>
50424 - #include <asm/uaccess.h>
50425 - #include <asm/vio.h>
50426 -+#include <asm/local.h>
50427 -
50428 - /*
50429 - * 1.3.0 -> 1.3.1 In hvcs_open memset(..,0x00,..) instead of memset(..,0x3F,00).
50430 -@@ -269,7 +270,7 @@ struct hvcs_struct {
50431 - unsigned int index;
50432 -
50433 - struct tty_struct *tty;
50434 -- int open_count;
50435 -+ local_t open_count;
50436 -
50437 - /*
50438 - * Used to tell the driver kernel_thread what operations need to take
50439 -@@ -419,7 +420,7 @@ static ssize_t hvcs_vterm_state_store(st
50440 -
50441 - spin_lock_irqsave(&hvcsd->lock, flags);
50442 -
50443 -- if (hvcsd->open_count > 0) {
50444 -+ if (local_read(&hvcsd->open_count) > 0) {
50445 - spin_unlock_irqrestore(&hvcsd->lock, flags);
50446 - printk(KERN_INFO "HVCS: vterm state unchanged. "
50447 - "The hvcs device node is still in use.\n");
50448 -@@ -1135,7 +1136,7 @@ static int hvcs_open(struct tty_struct *
50449 - if ((retval = hvcs_partner_connect(hvcsd)))
50450 - goto error_release;
50451 -
50452 -- hvcsd->open_count = 1;
50453 -+ local_set(&hvcsd->open_count, 1);
50454 - hvcsd->tty = tty;
50455 - tty->driver_data = hvcsd;
50456 -
50457 -@@ -1169,7 +1170,7 @@ fast_open:
50458 -
50459 - spin_lock_irqsave(&hvcsd->lock, flags);
50460 - kref_get(&hvcsd->kref);
50461 -- hvcsd->open_count++;
50462 -+ local_inc(&hvcsd->open_count);
50463 - hvcsd->todo_mask |= HVCS_SCHED_READ;
50464 - spin_unlock_irqrestore(&hvcsd->lock, flags);
50465 -
50466 -@@ -1213,7 +1214,7 @@ static void hvcs_close(struct tty_struct
50467 - hvcsd = tty->driver_data;
50468 -
50469 - spin_lock_irqsave(&hvcsd->lock, flags);
50470 -- if (--hvcsd->open_count == 0) {
50471 -+ if (local_dec_and_test(&hvcsd->open_count)) {
50472 -
50473 - vio_disable_interrupts(hvcsd->vdev);
50474 -
50475 -@@ -1239,10 +1240,10 @@ static void hvcs_close(struct tty_struct
50476 - free_irq(irq, hvcsd);
50477 - kref_put(&hvcsd->kref, destroy_hvcs_struct);
50478 - return;
50479 -- } else if (hvcsd->open_count < 0) {
50480 -+ } else if (local_read(&hvcsd->open_count) < 0) {
50481 - printk(KERN_ERR "HVCS: vty-server@%X open_count: %d"
50482 - " is missmanaged.\n",
50483 -- hvcsd->vdev->unit_address, hvcsd->open_count);
50484 -+ hvcsd->vdev->unit_address, local_read(&hvcsd->open_count));
50485 - }
50486 -
50487 - spin_unlock_irqrestore(&hvcsd->lock, flags);
50488 -@@ -1258,7 +1259,7 @@ static void hvcs_hangup(struct tty_struc
50489 -
50490 - spin_lock_irqsave(&hvcsd->lock, flags);
50491 - /* Preserve this so that we know how many kref refs to put */
50492 -- temp_open_count = hvcsd->open_count;
50493 -+ temp_open_count = local_read(&hvcsd->open_count);
50494 -
50495 - /*
50496 - * Don't kref put inside the spinlock because the destruction
50497 -@@ -1273,7 +1274,7 @@ static void hvcs_hangup(struct tty_struc
50498 - hvcsd->tty->driver_data = NULL;
50499 - hvcsd->tty = NULL;
50500 -
50501 -- hvcsd->open_count = 0;
50502 -+ local_set(&hvcsd->open_count, 0);
50503 -
50504 - /* This will drop any buffered data on the floor which is OK in a hangup
50505 - * scenario. */
50506 -@@ -1344,7 +1345,7 @@ static int hvcs_write(struct tty_struct
50507 - * the middle of a write operation? This is a crummy place to do this
50508 - * but we want to keep it all in the spinlock.
50509 - */
50510 -- if (hvcsd->open_count <= 0) {
50511 -+ if (local_read(&hvcsd->open_count) <= 0) {
50512 - spin_unlock_irqrestore(&hvcsd->lock, flags);
50513 - return -ENODEV;
50514 - }
50515 -@@ -1418,7 +1419,7 @@ static int hvcs_write_room(struct tty_st
50516 - {
50517 - struct hvcs_struct *hvcsd = tty->driver_data;
50518 -
50519 -- if (!hvcsd || hvcsd->open_count <= 0)
50520 -+ if (!hvcsd || local_read(&hvcsd->open_count) <= 0)
50521 - return 0;
50522 -
50523 - return HVCS_BUFF_LEN - hvcsd->chars_in_buffer;
50524 -diff -urNp linux-2.6.32.48/drivers/char/hvc_udbg.c linux-2.6.32.48/drivers/char/hvc_udbg.c
50525 ---- linux-2.6.32.48/drivers/char/hvc_udbg.c 2009-12-02 22:51:21.000000000 -0500
50526 -+++ linux-2.6.32.48/drivers/char/hvc_udbg.c 2011-11-12 12:46:42.000000000 -0500
50527 -@@ -58,7 +58,7 @@ static int hvc_udbg_get(uint32_t vtermno
50528 - return i;
50529 - }
50530 -
50531 --static struct hv_ops hvc_udbg_ops = {
50532 -+static const struct hv_ops hvc_udbg_ops = {
50533 - .get_chars = hvc_udbg_get,
50534 - .put_chars = hvc_udbg_put,
50535 - };
50536 -diff -urNp linux-2.6.32.48/drivers/char/hvc_vio.c linux-2.6.32.48/drivers/char/hvc_vio.c
50537 ---- linux-2.6.32.48/drivers/char/hvc_vio.c 2009-12-02 22:51:21.000000000 -0500
50538 -+++ linux-2.6.32.48/drivers/char/hvc_vio.c 2011-11-12 12:46:42.000000000 -0500
50539 -@@ -77,7 +77,7 @@ static int filtered_get_chars(uint32_t v
50540 - return got;
50541 - }
50542 -
50543 --static struct hv_ops hvc_get_put_ops = {
50544 -+static const struct hv_ops hvc_get_put_ops = {
50545 - .get_chars = filtered_get_chars,
50546 - .put_chars = hvc_put_chars,
50547 - .notifier_add = notifier_add_irq,
50548 -diff -urNp linux-2.6.32.48/drivers/char/hvc_xen.c linux-2.6.32.48/drivers/char/hvc_xen.c
50549 ---- linux-2.6.32.48/drivers/char/hvc_xen.c 2009-12-02 22:51:21.000000000 -0500
50550 -+++ linux-2.6.32.48/drivers/char/hvc_xen.c 2011-11-12 12:46:42.000000000 -0500
50551 -@@ -120,7 +120,7 @@ static int read_console(uint32_t vtermno
50552 - return recv;
50553 - }
50554 -
50555 --static struct hv_ops hvc_ops = {
50556 -+static const struct hv_ops hvc_ops = {
50557 - .get_chars = read_console,
50558 - .put_chars = write_console,
50559 - .notifier_add = notifier_add_irq,
50560 -diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c
50561 ---- linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c 2009-12-02 22:51:21.000000000 -0500
50562 -+++ linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c 2011-11-12 12:46:42.000000000 -0500
50563 -@@ -414,7 +414,7 @@ struct ipmi_smi {
50564 +diff -urNp linux-3.0.8/drivers/char/ipmi/ipmi_msghandler.c linux-3.0.8/drivers/char/ipmi/ipmi_msghandler.c
50565 +--- linux-3.0.8/drivers/char/ipmi/ipmi_msghandler.c 2011-07-21 22:17:23.000000000 -0400
50566 ++++ linux-3.0.8/drivers/char/ipmi/ipmi_msghandler.c 2011-08-23 21:48:14.000000000 -0400
50567 +@@ -415,7 +415,7 @@ struct ipmi_smi {
50568 struct proc_dir_entry *proc_dir;
50569 char proc_dir_name[10];
50570
50571 @@ -28826,7 +25406,7 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.48/d
50572
50573 /*
50574 * run_to_completion duplicate of smb_info, smi_info
50575 -@@ -447,9 +447,9 @@ static DEFINE_MUTEX(smi_watchers_mutex);
50576 +@@ -448,9 +448,9 @@ static DEFINE_MUTEX(smi_watchers_mutex);
50577
50578
50579 #define ipmi_inc_stat(intf, stat) \
50580 @@ -28838,7 +25418,7 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.48/d
50581
50582 static int is_lan_addr(struct ipmi_addr *addr)
50583 {
50584 -@@ -2808,7 +2808,7 @@ int ipmi_register_smi(struct ipmi_smi_ha
50585 +@@ -2868,7 +2868,7 @@ int ipmi_register_smi(struct ipmi_smi_ha
50586 INIT_LIST_HEAD(&intf->cmd_rcvrs);
50587 init_waitqueue_head(&intf->waitq);
50588 for (i = 0; i < IPMI_NUM_STATS; i++)
50589 @@ -28847,7 +25427,7 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.48/d
50590
50591 intf->proc_dir = NULL;
50592
50593 -@@ -4160,6 +4160,8 @@ static void send_panic_events(char *str)
50594 +@@ -4220,6 +4220,8 @@ static void send_panic_events(char *str)
50595 struct ipmi_smi_msg smi_msg;
50596 struct ipmi_recv_msg recv_msg;
50597
50598 @@ -28856,9 +25436,9 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_msghandler.c linux-2.6.32.48/d
50599 si = (struct ipmi_system_interface_addr *) &addr;
50600 si->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
50601 si->channel = IPMI_BMC_CHANNEL;
50602 -diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c
50603 ---- linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c 2011-11-12 12:44:28.000000000 -0500
50604 -+++ linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c 2011-11-12 12:46:42.000000000 -0500
50605 +diff -urNp linux-3.0.8/drivers/char/ipmi/ipmi_si_intf.c linux-3.0.8/drivers/char/ipmi/ipmi_si_intf.c
50606 +--- linux-3.0.8/drivers/char/ipmi/ipmi_si_intf.c 2011-07-21 22:17:23.000000000 -0400
50607 ++++ linux-3.0.8/drivers/char/ipmi/ipmi_si_intf.c 2011-08-23 21:47:55.000000000 -0400
50608 @@ -277,7 +277,7 @@ struct smi_info {
50609 unsigned char slave_addr;
50610
50611 @@ -28868,7 +25448,7 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.32.48/driv
50612
50613 struct task_struct *thread;
50614
50615 -@@ -285,9 +285,9 @@ struct smi_info {
50616 +@@ -286,9 +286,9 @@ struct smi_info {
50617 };
50618
50619 #define smi_inc_stat(smi, stat) \
50620 @@ -28880,56 +25460,19 @@ diff -urNp linux-2.6.32.48/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.32.48/driv
50621
50622 #define SI_MAX_PARMS 4
50623
50624 -@@ -2931,7 +2931,7 @@ static int try_smi_init(struct smi_info
50625 +@@ -3230,7 +3230,7 @@ static int try_smi_init(struct smi_info
50626 atomic_set(&new_smi->req_events, 0);
50627 new_smi->run_to_completion = 0;
50628 for (i = 0; i < SI_NUM_STATS; i++)
50629 - atomic_set(&new_smi->stats[i], 0);
50630 + atomic_set_unchecked(&new_smi->stats[i], 0);
50631
50632 - new_smi->interrupt_disabled = 0;
50633 + new_smi->interrupt_disabled = 1;
50634 atomic_set(&new_smi->stop_operation, 0);
50635 -diff -urNp linux-2.6.32.48/drivers/char/istallion.c linux-2.6.32.48/drivers/char/istallion.c
50636 ---- linux-2.6.32.48/drivers/char/istallion.c 2009-12-02 22:51:21.000000000 -0500
50637 -+++ linux-2.6.32.48/drivers/char/istallion.c 2011-11-12 12:46:42.000000000 -0500
50638 -@@ -187,7 +187,6 @@ static struct ktermios stli_deftermios
50639 - * re-used for each stats call.
50640 - */
50641 - static comstats_t stli_comstats;
50642 --static combrd_t stli_brdstats;
50643 - static struct asystats stli_cdkstats;
50644 -
50645 - /*****************************************************************************/
50646 -@@ -4058,6 +4057,7 @@ static int stli_getbrdstats(combrd_t __u
50647 - {
50648 - struct stlibrd *brdp;
50649 - unsigned int i;
50650 -+ combrd_t stli_brdstats;
50651 -
50652 - if (copy_from_user(&stli_brdstats, bp, sizeof(combrd_t)))
50653 - return -EFAULT;
50654 -@@ -4269,6 +4269,8 @@ static int stli_getportstruct(struct stl
50655 - struct stliport stli_dummyport;
50656 - struct stliport *portp;
50657 -
50658 -+ pax_track_stack();
50659 -+
50660 - if (copy_from_user(&stli_dummyport, arg, sizeof(struct stliport)))
50661 - return -EFAULT;
50662 - portp = stli_getport(stli_dummyport.brdnr, stli_dummyport.panelnr,
50663 -@@ -4291,6 +4293,8 @@ static int stli_getbrdstruct(struct stli
50664 - struct stlibrd stli_dummybrd;
50665 - struct stlibrd *brdp;
50666 -
50667 -+ pax_track_stack();
50668 -+
50669 - if (copy_from_user(&stli_dummybrd, arg, sizeof(struct stlibrd)))
50670 - return -EFAULT;
50671 - if (stli_dummybrd.brdnr >= STL_MAXBRDS)
50672 -diff -urNp linux-2.6.32.48/drivers/char/Kconfig linux-2.6.32.48/drivers/char/Kconfig
50673 ---- linux-2.6.32.48/drivers/char/Kconfig 2009-12-02 22:51:21.000000000 -0500
50674 -+++ linux-2.6.32.48/drivers/char/Kconfig 2011-11-12 12:46:42.000000000 -0500
50675 -@@ -90,7 +90,8 @@ config VT_HW_CONSOLE_BINDING
50676 +diff -urNp linux-3.0.8/drivers/char/Kconfig linux-3.0.8/drivers/char/Kconfig
50677 +--- linux-3.0.8/drivers/char/Kconfig 2011-07-21 22:17:23.000000000 -0400
50678 ++++ linux-3.0.8/drivers/char/Kconfig 2011-08-23 21:48:14.000000000 -0400
50679 +@@ -8,7 +8,8 @@ source "drivers/tty/Kconfig"
50680
50681 config DEVKMEM
50682 bool "/dev/kmem virtual device support"
50683 @@ -28939,7 +25482,7 @@ diff -urNp linux-2.6.32.48/drivers/char/Kconfig linux-2.6.32.48/drivers/char/Kco
50684 help
50685 Say Y here if you want to support the /dev/kmem device. The
50686 /dev/kmem device is rarely used, but can be used for certain
50687 -@@ -1114,6 +1115,7 @@ config DEVPORT
50688 +@@ -596,6 +597,7 @@ config DEVPORT
50689 bool
50690 depends on !M68K
50691 depends on ISA || PCI
50692 @@ -28947,38 +25490,21 @@ diff -urNp linux-2.6.32.48/drivers/char/Kconfig linux-2.6.32.48/drivers/char/Kco
50693 default y
50694
50695 source "drivers/s390/char/Kconfig"
50696 -diff -urNp linux-2.6.32.48/drivers/char/keyboard.c linux-2.6.32.48/drivers/char/keyboard.c
50697 ---- linux-2.6.32.48/drivers/char/keyboard.c 2009-12-02 22:51:21.000000000 -0500
50698 -+++ linux-2.6.32.48/drivers/char/keyboard.c 2011-11-12 12:46:42.000000000 -0500
50699 -@@ -635,6 +635,16 @@ static void k_spec(struct vc_data *vc, u
50700 - kbd->kbdmode == VC_MEDIUMRAW) &&
50701 - value != KVAL(K_SAK))
50702 - return; /* SAK is allowed even in raw mode */
50703 -+
50704 -+#if defined(CONFIG_GRKERNSEC_PROC) || defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
50705 -+ {
50706 -+ void *func = fn_handler[value];
50707 -+ if (func == fn_show_state || func == fn_show_ptregs ||
50708 -+ func == fn_show_mem)
50709 -+ return;
50710 -+ }
50711 -+#endif
50712 -+
50713 - fn_handler[value](vc);
50714 +diff -urNp linux-3.0.8/drivers/char/mbcs.c linux-3.0.8/drivers/char/mbcs.c
50715 +--- linux-3.0.8/drivers/char/mbcs.c 2011-07-21 22:17:23.000000000 -0400
50716 ++++ linux-3.0.8/drivers/char/mbcs.c 2011-10-11 10:44:33.000000000 -0400
50717 +@@ -800,7 +800,7 @@ static int mbcs_remove(struct cx_dev *de
50718 + return 0;
50719 }
50720
50721 -@@ -1386,7 +1396,7 @@ static const struct input_device_id kbd_
50722 - .evbit = { BIT_MASK(EV_SND) },
50723 - },
50724 -
50725 -- { }, /* Terminating entry */
50726 -+ { 0 }, /* Terminating entry */
50727 - };
50728 -
50729 - MODULE_DEVICE_TABLE(input, kbd_ids);
50730 -diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50731 ---- linux-2.6.32.48/drivers/char/mem.c 2011-11-12 12:44:28.000000000 -0500
50732 -+++ linux-2.6.32.48/drivers/char/mem.c 2011-11-12 12:46:42.000000000 -0500
50733 +-static const struct cx_device_id __devinitdata mbcs_id_table[] = {
50734 ++static const struct cx_device_id __devinitconst mbcs_id_table[] = {
50735 + {
50736 + .part_num = MBCS_PART_NUM,
50737 + .mfg_num = MBCS_MFG_NUM,
50738 +diff -urNp linux-3.0.8/drivers/char/mem.c linux-3.0.8/drivers/char/mem.c
50739 +--- linux-3.0.8/drivers/char/mem.c 2011-07-21 22:17:23.000000000 -0400
50740 ++++ linux-3.0.8/drivers/char/mem.c 2011-08-23 21:48:14.000000000 -0400
50741 @@ -18,6 +18,7 @@
50742 #include <linux/raw.h>
50743 #include <linux/tty.h>
50744 @@ -28987,7 +25513,7 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50745 #include <linux/ptrace.h>
50746 #include <linux/device.h>
50747 #include <linux/highmem.h>
50748 -@@ -35,6 +36,10 @@
50749 +@@ -34,6 +35,10 @@
50750 # include <linux/efi.h>
50751 #endif
50752
50753 @@ -28998,7 +25524,7 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50754 static inline unsigned long size_inside_page(unsigned long start,
50755 unsigned long size)
50756 {
50757 -@@ -102,9 +107,13 @@ static inline int range_is_allowed(unsig
50758 +@@ -65,9 +70,13 @@ static inline int range_is_allowed(unsig
50759
50760 while (cursor < to) {
50761 if (!devmem_is_allowed(pfn)) {
50762 @@ -29012,7 +25538,7 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50763 return 0;
50764 }
50765 cursor += PAGE_SIZE;
50766 -@@ -112,6 +121,11 @@ static inline int range_is_allowed(unsig
50767 +@@ -75,6 +84,11 @@ static inline int range_is_allowed(unsig
50768 }
50769 return 1;
50770 }
50771 @@ -29024,20 +25550,19 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50772 #else
50773 static inline int range_is_allowed(unsigned long pfn, unsigned long size)
50774 {
50775 -@@ -155,6 +169,8 @@ static ssize_t read_mem(struct file * fi
50776 - #endif
50777 +@@ -117,6 +131,7 @@ static ssize_t read_mem(struct file *fil
50778
50779 while (count > 0) {
50780 + unsigned long remaining;
50781 + char *temp;
50782 -+
50783 - /*
50784 - * Handle first page in case it's not aligned
50785 - */
50786 -@@ -177,11 +193,31 @@ static ssize_t read_mem(struct file * fi
50787 +
50788 + sz = size_inside_page(p, count);
50789 +
50790 +@@ -132,7 +147,23 @@ static ssize_t read_mem(struct file *fil
50791 if (!ptr)
50792 return -EFAULT;
50793
50794 -- if (copy_to_user(buf, ptr, sz)) {
50795 +- remaining = copy_to_user(buf, ptr, sz);
50796 +#ifdef CONFIG_PAX_USERCOPY
50797 + temp = kmalloc(sz, GFP_KERNEL);
50798 + if (!temp) {
50799 @@ -29049,24 +25574,16 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50800 + temp = ptr;
50801 +#endif
50802 +
50803 -+ if (copy_to_user(buf, temp, sz)) {
50804 ++ remaining = copy_to_user(buf, temp, sz);
50805 +
50806 +#ifdef CONFIG_PAX_USERCOPY
50807 -+ kfree(temp);
50808 -+#endif
50809 -+
50810 - unxlate_dev_mem_ptr(p, ptr);
50811 - return -EFAULT;
50812 - }
50813 -
50814 -+#ifdef CONFIG_PAX_USERCOPY
50815 + kfree(temp);
50816 +#endif
50817 +
50818 unxlate_dev_mem_ptr(p, ptr);
50819 -
50820 - buf += sz;
50821 -@@ -419,9 +455,8 @@ static ssize_t read_kmem(struct file *fi
50822 + if (remaining)
50823 + return -EFAULT;
50824 +@@ -395,9 +426,8 @@ static ssize_t read_kmem(struct file *fi
50825 size_t count, loff_t *ppos)
50826 {
50827 unsigned long p = *ppos;
50828 @@ -29077,7 +25594,7 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50829
50830 read = 0;
50831 if (p < (unsigned long) high_memory) {
50832 -@@ -444,6 +479,8 @@ static ssize_t read_kmem(struct file *fi
50833 +@@ -419,6 +449,8 @@ static ssize_t read_kmem(struct file *fi
50834 }
50835 #endif
50836 while (low_count > 0) {
50837 @@ -29086,7 +25603,7 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50838 sz = size_inside_page(p, low_count);
50839
50840 /*
50841 -@@ -453,7 +490,22 @@ static ssize_t read_kmem(struct file *fi
50842 +@@ -428,7 +460,22 @@ static ssize_t read_kmem(struct file *fi
50843 */
50844 kbuf = xlate_dev_kmem_ptr((char *)p);
50845
50846 @@ -29110,7 +25627,7 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50847 return -EFAULT;
50848 buf += sz;
50849 p += sz;
50850 -@@ -889,6 +941,9 @@ static const struct memdev {
50851 +@@ -866,6 +913,9 @@ static const struct memdev {
50852 #ifdef CONFIG_CRASH_DUMP
50853 [12] = { "oldmem", 0, &oldmem_fops, NULL },
50854 #endif
50855 @@ -29120,150 +25637,22 @@ diff -urNp linux-2.6.32.48/drivers/char/mem.c linux-2.6.32.48/drivers/char/mem.c
50856 };
50857
50858 static int memory_open(struct inode *inode, struct file *filp)
50859 -diff -urNp linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c
50860 ---- linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c 2009-12-02 22:51:21.000000000 -0500
50861 -+++ linux-2.6.32.48/drivers/char/pcmcia/ipwireless/tty.c 2011-11-12 12:46:42.000000000 -0500
50862 -@@ -29,6 +29,7 @@
50863 - #include <linux/tty_driver.h>
50864 - #include <linux/tty_flip.h>
50865 - #include <linux/uaccess.h>
50866 -+#include <asm/local.h>
50867 -
50868 - #include "tty.h"
50869 - #include "network.h"
50870 -@@ -51,7 +52,7 @@ struct ipw_tty {
50871 - int tty_type;
50872 - struct ipw_network *network;
50873 - struct tty_struct *linux_tty;
50874 -- int open_count;
50875 -+ local_t open_count;
50876 - unsigned int control_lines;
50877 - struct mutex ipw_tty_mutex;
50878 - int tx_bytes_queued;
50879 -@@ -127,10 +128,10 @@ static int ipw_open(struct tty_struct *l
50880 - mutex_unlock(&tty->ipw_tty_mutex);
50881 - return -ENODEV;
50882 - }
50883 -- if (tty->open_count == 0)
50884 -+ if (local_read(&tty->open_count) == 0)
50885 - tty->tx_bytes_queued = 0;
50886 -
50887 -- tty->open_count++;
50888 -+ local_inc(&tty->open_count);
50889 -
50890 - tty->linux_tty = linux_tty;
50891 - linux_tty->driver_data = tty;
50892 -@@ -146,9 +147,7 @@ static int ipw_open(struct tty_struct *l
50893 -
50894 - static void do_ipw_close(struct ipw_tty *tty)
50895 - {
50896 -- tty->open_count--;
50897 --
50898 -- if (tty->open_count == 0) {
50899 -+ if (local_dec_return(&tty->open_count) == 0) {
50900 - struct tty_struct *linux_tty = tty->linux_tty;
50901 -
50902 - if (linux_tty != NULL) {
50903 -@@ -169,7 +168,7 @@ static void ipw_hangup(struct tty_struct
50904 - return;
50905 -
50906 - mutex_lock(&tty->ipw_tty_mutex);
50907 -- if (tty->open_count == 0) {
50908 -+ if (local_read(&tty->open_count) == 0) {
50909 - mutex_unlock(&tty->ipw_tty_mutex);
50910 - return;
50911 - }
50912 -@@ -198,7 +197,7 @@ void ipwireless_tty_received(struct ipw_
50913 - return;
50914 - }
50915 -
50916 -- if (!tty->open_count) {
50917 -+ if (!local_read(&tty->open_count)) {
50918 - mutex_unlock(&tty->ipw_tty_mutex);
50919 - return;
50920 - }
50921 -@@ -240,7 +239,7 @@ static int ipw_write(struct tty_struct *
50922 - return -ENODEV;
50923 -
50924 - mutex_lock(&tty->ipw_tty_mutex);
50925 -- if (!tty->open_count) {
50926 -+ if (!local_read(&tty->open_count)) {
50927 - mutex_unlock(&tty->ipw_tty_mutex);
50928 - return -EINVAL;
50929 - }
50930 -@@ -280,7 +279,7 @@ static int ipw_write_room(struct tty_str
50931 - if (!tty)
50932 - return -ENODEV;
50933 -
50934 -- if (!tty->open_count)
50935 -+ if (!local_read(&tty->open_count))
50936 - return -EINVAL;
50937 -
50938 - room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued;
50939 -@@ -322,7 +321,7 @@ static int ipw_chars_in_buffer(struct tt
50940 - if (!tty)
50941 - return 0;
50942 -
50943 -- if (!tty->open_count)
50944 -+ if (!local_read(&tty->open_count))
50945 - return 0;
50946 -
50947 - return tty->tx_bytes_queued;
50948 -@@ -403,7 +402,7 @@ static int ipw_tiocmget(struct tty_struc
50949 - if (!tty)
50950 - return -ENODEV;
50951 -
50952 -- if (!tty->open_count)
50953 -+ if (!local_read(&tty->open_count))
50954 - return -EINVAL;
50955 -
50956 - return get_control_lines(tty);
50957 -@@ -419,7 +418,7 @@ ipw_tiocmset(struct tty_struct *linux_tt
50958 - if (!tty)
50959 - return -ENODEV;
50960 -
50961 -- if (!tty->open_count)
50962 -+ if (!local_read(&tty->open_count))
50963 - return -EINVAL;
50964 -
50965 - return set_control_lines(tty, set, clear);
50966 -@@ -433,7 +432,7 @@ static int ipw_ioctl(struct tty_struct *
50967 - if (!tty)
50968 - return -ENODEV;
50969 +diff -urNp linux-3.0.8/drivers/char/nvram.c linux-3.0.8/drivers/char/nvram.c
50970 +--- linux-3.0.8/drivers/char/nvram.c 2011-07-21 22:17:23.000000000 -0400
50971 ++++ linux-3.0.8/drivers/char/nvram.c 2011-08-23 21:47:55.000000000 -0400
50972 +@@ -246,7 +246,7 @@ static ssize_t nvram_read(struct file *f
50973
50974 -- if (!tty->open_count)
50975 -+ if (!local_read(&tty->open_count))
50976 - return -EINVAL;
50977 -
50978 - /* FIXME: Exactly how is the tty object locked here .. */
50979 -@@ -591,7 +590,7 @@ void ipwireless_tty_free(struct ipw_tty
50980 - against a parallel ioctl etc */
50981 - mutex_lock(&ttyj->ipw_tty_mutex);
50982 - }
50983 -- while (ttyj->open_count)
50984 -+ while (local_read(&ttyj->open_count))
50985 - do_ipw_close(ttyj);
50986 - ipwireless_disassociate_network_ttys(network,
50987 - ttyj->channel_idx);
50988 -diff -urNp linux-2.6.32.48/drivers/char/pty.c linux-2.6.32.48/drivers/char/pty.c
50989 ---- linux-2.6.32.48/drivers/char/pty.c 2009-12-02 22:51:21.000000000 -0500
50990 -+++ linux-2.6.32.48/drivers/char/pty.c 2011-11-12 12:46:42.000000000 -0500
50991 -@@ -736,8 +736,10 @@ static void __init unix98_pty_init(void)
50992 - register_sysctl_table(pty_root_table);
50993 + spin_unlock_irq(&rtc_lock);
50994
50995 - /* Now create the /dev/ptmx special device */
50996 -+ pax_open_kernel();
50997 - tty_default_fops(&ptmx_fops);
50998 -- ptmx_fops.open = ptmx_open;
50999 -+ *(void **)&ptmx_fops.open = ptmx_open;
51000 -+ pax_close_kernel();
51001 +- if (copy_to_user(buf, contents, tmp - contents))
51002 ++ if (tmp - contents > sizeof(contents) || copy_to_user(buf, contents, tmp - contents))
51003 + return -EFAULT;
51004
51005 - cdev_init(&ptmx_cdev, &ptmx_fops);
51006 - if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
51007 -diff -urNp linux-2.6.32.48/drivers/char/random.c linux-2.6.32.48/drivers/char/random.c
51008 ---- linux-2.6.32.48/drivers/char/random.c 2011-11-12 12:44:28.000000000 -0500
51009 -+++ linux-2.6.32.48/drivers/char/random.c 2011-11-12 12:46:42.000000000 -0500
51010 -@@ -254,8 +254,13 @@
51011 + *ppos = i;
51012 +diff -urNp linux-3.0.8/drivers/char/random.c linux-3.0.8/drivers/char/random.c
51013 +--- linux-3.0.8/drivers/char/random.c 2011-10-24 08:05:21.000000000 -0400
51014 ++++ linux-3.0.8/drivers/char/random.c 2011-08-23 21:48:14.000000000 -0400
51015 +@@ -261,8 +261,13 @@
51016 /*
51017 * Configuration information
51018 */
51019 @@ -29275,9 +25664,9 @@ diff -urNp linux-2.6.32.48/drivers/char/random.c linux-2.6.32.48/drivers/char/ra
51020 #define OUTPUT_POOL_WORDS 32
51021 +#endif
51022 #define SEC_XFER_SIZE 512
51023 + #define EXTRACT_SIZE 10
51024
51025 - /*
51026 -@@ -292,10 +297,17 @@ static struct poolinfo {
51027 +@@ -300,10 +305,17 @@ static struct poolinfo {
51028 int poolwords;
51029 int tap1, tap2, tap3, tap4, tap5;
51030 } poolinfo_table[] = {
51031 @@ -29295,7 +25684,16 @@ diff -urNp linux-2.6.32.48/drivers/char/random.c linux-2.6.32.48/drivers/char/ra
51032 #if 0
51033 /* x^2048 + x^1638 + x^1231 + x^819 + x^411 + x + 1 -- 115 */
51034 { 2048, 1638, 1231, 819, 411, 1 },
51035 -@@ -1209,7 +1221,7 @@ EXPORT_SYMBOL(generate_random_uuid);
51036 +@@ -909,7 +921,7 @@ static ssize_t extract_entropy_user(stru
51037 +
51038 + extract_buf(r, tmp);
51039 + i = min_t(int, nbytes, EXTRACT_SIZE);
51040 +- if (copy_to_user(buf, tmp, i)) {
51041 ++ if (i > sizeof(tmp) || copy_to_user(buf, tmp, i)) {
51042 + ret = -EFAULT;
51043 + break;
51044 + }
51045 +@@ -1214,7 +1226,7 @@ EXPORT_SYMBOL(generate_random_uuid);
51046 #include <linux/sysctl.h>
51047
51048 static int min_read_thresh = 8, min_write_thresh;
51049 @@ -29304,21 +25702,9 @@ diff -urNp linux-2.6.32.48/drivers/char/random.c linux-2.6.32.48/drivers/char/ra
51050 static int max_write_thresh = INPUT_POOL_WORDS * 32;
51051 static char sysctl_bootid[16];
51052
51053 -diff -urNp linux-2.6.32.48/drivers/char/rocket.c linux-2.6.32.48/drivers/char/rocket.c
51054 ---- linux-2.6.32.48/drivers/char/rocket.c 2009-12-02 22:51:21.000000000 -0500
51055 -+++ linux-2.6.32.48/drivers/char/rocket.c 2011-11-12 12:46:42.000000000 -0500
51056 -@@ -1266,6 +1266,8 @@ static int get_ports(struct r_port *info
51057 - struct rocket_ports tmp;
51058 - int board;
51059 -
51060 -+ pax_track_stack();
51061 -+
51062 - if (!retports)
51063 - return -EFAULT;
51064 - memset(&tmp, 0, sizeof (tmp));
51065 -diff -urNp linux-2.6.32.48/drivers/char/sonypi.c linux-2.6.32.48/drivers/char/sonypi.c
51066 ---- linux-2.6.32.48/drivers/char/sonypi.c 2009-12-02 22:51:21.000000000 -0500
51067 -+++ linux-2.6.32.48/drivers/char/sonypi.c 2011-11-12 12:46:42.000000000 -0500
51068 +diff -urNp linux-3.0.8/drivers/char/sonypi.c linux-3.0.8/drivers/char/sonypi.c
51069 +--- linux-3.0.8/drivers/char/sonypi.c 2011-07-21 22:17:23.000000000 -0400
51070 ++++ linux-3.0.8/drivers/char/sonypi.c 2011-08-23 21:47:55.000000000 -0400
51071 @@ -55,6 +55,7 @@
51072 #include <asm/uaccess.h>
51073 #include <asm/io.h>
51074 @@ -29336,7 +25722,7 @@ diff -urNp linux-2.6.32.48/drivers/char/sonypi.c linux-2.6.32.48/drivers/char/so
51075 int model;
51076 struct input_dev *input_jog_dev;
51077 struct input_dev *input_key_dev;
51078 -@@ -895,7 +896,7 @@ static int sonypi_misc_fasync(int fd, st
51079 +@@ -898,7 +899,7 @@ static int sonypi_misc_fasync(int fd, st
51080 static int sonypi_misc_release(struct inode *inode, struct file *file)
51081 {
51082 mutex_lock(&sonypi_device.lock);
51083 @@ -29345,34 +25731,22 @@ diff -urNp linux-2.6.32.48/drivers/char/sonypi.c linux-2.6.32.48/drivers/char/so
51084 mutex_unlock(&sonypi_device.lock);
51085 return 0;
51086 }
51087 -@@ -905,9 +906,9 @@ static int sonypi_misc_open(struct inode
51088 - lock_kernel();
51089 +@@ -907,9 +908,9 @@ static int sonypi_misc_open(struct inode
51090 + {
51091 mutex_lock(&sonypi_device.lock);
51092 /* Flush input queue on first open */
51093 - if (!sonypi_device.open_count)
51094 + if (!local_read(&sonypi_device.open_count))
51095 - kfifo_reset(sonypi_device.fifo);
51096 + kfifo_reset(&sonypi_device.fifo);
51097 - sonypi_device.open_count++;
51098 + local_inc(&sonypi_device.open_count);
51099 mutex_unlock(&sonypi_device.lock);
51100 - unlock_kernel();
51101 - return 0;
51102 -diff -urNp linux-2.6.32.48/drivers/char/stallion.c linux-2.6.32.48/drivers/char/stallion.c
51103 ---- linux-2.6.32.48/drivers/char/stallion.c 2009-12-02 22:51:21.000000000 -0500
51104 -+++ linux-2.6.32.48/drivers/char/stallion.c 2011-11-12 12:46:42.000000000 -0500
51105 -@@ -2448,6 +2448,8 @@ static int stl_getportstruct(struct stlp
51106 - struct stlport stl_dummyport;
51107 - struct stlport *portp;
51108
51109 -+ pax_track_stack();
51110 -+
51111 - if (copy_from_user(&stl_dummyport, arg, sizeof(struct stlport)))
51112 - return -EFAULT;
51113 - portp = stl_getport(stl_dummyport.brdnr, stl_dummyport.panelnr,
51114 -diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm_bios.c linux-2.6.32.48/drivers/char/tpm/tpm_bios.c
51115 ---- linux-2.6.32.48/drivers/char/tpm/tpm_bios.c 2009-12-02 22:51:21.000000000 -0500
51116 -+++ linux-2.6.32.48/drivers/char/tpm/tpm_bios.c 2011-11-12 12:46:42.000000000 -0500
51117 -@@ -172,7 +172,7 @@ static void *tpm_bios_measurements_start
51118 + return 0;
51119 +diff -urNp linux-3.0.8/drivers/char/tpm/tpm_bios.c linux-3.0.8/drivers/char/tpm/tpm_bios.c
51120 +--- linux-3.0.8/drivers/char/tpm/tpm_bios.c 2011-07-21 22:17:23.000000000 -0400
51121 ++++ linux-3.0.8/drivers/char/tpm/tpm_bios.c 2011-10-06 04:17:55.000000000 -0400
51122 +@@ -173,7 +173,7 @@ static void *tpm_bios_measurements_start
51123 event = addr;
51124
51125 if ((event->event_type == 0 && event->event_size == 0) ||
51126 @@ -29381,7 +25755,7 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm_bios.c linux-2.6.32.48/drivers/c
51127 return NULL;
51128
51129 return addr;
51130 -@@ -197,7 +197,7 @@ static void *tpm_bios_measurements_next(
51131 +@@ -198,7 +198,7 @@ static void *tpm_bios_measurements_next(
51132 return NULL;
51133
51134 if ((event->event_type == 0 && event->event_size == 0) ||
51135 @@ -29390,7 +25764,7 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm_bios.c linux-2.6.32.48/drivers/c
51136 return NULL;
51137
51138 (*pos)++;
51139 -@@ -290,7 +290,8 @@ static int tpm_binary_bios_measurements_
51140 +@@ -291,7 +291,8 @@ static int tpm_binary_bios_measurements_
51141 int i;
51142
51143 for (i = 0; i < sizeof(struct tcpa_event) + event->event_size; i++)
51144 @@ -29400,7 +25774,7 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm_bios.c linux-2.6.32.48/drivers/c
51145
51146 return 0;
51147 }
51148 -@@ -409,8 +410,13 @@ static int read_log(struct tpm_bios_log
51149 +@@ -410,8 +411,13 @@ static int read_log(struct tpm_bios_log
51150 log->bios_event_log_end = log->bios_event_log + len;
51151
51152 virt = acpi_os_map_memory(start, len);
51153 @@ -29415,10 +25789,10 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm_bios.c linux-2.6.32.48/drivers/c
51154
51155 acpi_os_unmap_memory(virt, len);
51156 return 0;
51157 -diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm.c linux-2.6.32.48/drivers/char/tpm/tpm.c
51158 ---- linux-2.6.32.48/drivers/char/tpm/tpm.c 2011-11-12 12:44:28.000000000 -0500
51159 -+++ linux-2.6.32.48/drivers/char/tpm/tpm.c 2011-11-12 12:51:33.000000000 -0500
51160 -@@ -405,7 +405,7 @@ static ssize_t tpm_transmit(struct tpm_c
51161 +diff -urNp linux-3.0.8/drivers/char/tpm/tpm.c linux-3.0.8/drivers/char/tpm/tpm.c
51162 +--- linux-3.0.8/drivers/char/tpm/tpm.c 2011-10-24 08:05:30.000000000 -0400
51163 ++++ linux-3.0.8/drivers/char/tpm/tpm.c 2011-10-16 21:55:27.000000000 -0400
51164 +@@ -414,7 +414,7 @@ static ssize_t tpm_transmit(struct tpm_c
51165 chip->vendor.req_complete_val)
51166 goto out_recv;
51167
51168 @@ -29427,7 +25801,7 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm.c linux-2.6.32.48/drivers/char/t
51169 dev_err(chip->dev, "Operation Canceled\n");
51170 rc = -ECANCELED;
51171 goto out;
51172 -@@ -824,6 +824,8 @@ ssize_t tpm_show_pubek(struct device *de
51173 +@@ -847,6 +847,8 @@ ssize_t tpm_show_pubek(struct device *de
51174
51175 struct tpm_chip *chip = dev_get_drvdata(dev);
51176
51177 @@ -29436,231 +25810,30 @@ diff -urNp linux-2.6.32.48/drivers/char/tpm/tpm.c linux-2.6.32.48/drivers/char/t
51178 tpm_cmd.header.in = tpm_readpubek_header;
51179 err = transmit_cmd(chip, &tpm_cmd, READ_PUBEK_RESULT_SIZE,
51180 "attempting to read the PUBEK");
51181 -diff -urNp linux-2.6.32.48/drivers/char/tty_io.c linux-2.6.32.48/drivers/char/tty_io.c
51182 ---- linux-2.6.32.48/drivers/char/tty_io.c 2011-11-12 12:44:28.000000000 -0500
51183 -+++ linux-2.6.32.48/drivers/char/tty_io.c 2011-11-12 12:50:08.000000000 -0500
51184 -@@ -1773,6 +1773,7 @@ got_driver:
51185 -
51186 - if (IS_ERR(tty)) {
51187 - mutex_unlock(&tty_mutex);
51188 -+ tty_driver_kref_put(driver);
51189 - return PTR_ERR(tty);
51190 - }
51191 - }
51192 -@@ -2582,8 +2583,10 @@ long tty_ioctl(struct file *file, unsign
51193 - return retval;
51194 - }
51195 -
51196 -+EXPORT_SYMBOL(tty_ioctl);
51197 -+
51198 - #ifdef CONFIG_COMPAT
51199 --static long tty_compat_ioctl(struct file *file, unsigned int cmd,
51200 -+long tty_compat_ioctl(struct file *file, unsigned int cmd,
51201 - unsigned long arg)
51202 - {
51203 - struct inode *inode = file->f_dentry->d_inode;
51204 -@@ -2607,6 +2610,8 @@ static long tty_compat_ioctl(struct file
51205 -
51206 - return retval;
51207 - }
51208 -+
51209 -+EXPORT_SYMBOL(tty_compat_ioctl);
51210 - #endif
51211 -
51212 - /*
51213 -@@ -3052,7 +3057,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
51214 -
51215 - void tty_default_fops(struct file_operations *fops)
51216 - {
51217 -- *fops = tty_fops;
51218 -+ memcpy((void *)fops, &tty_fops, sizeof(tty_fops));
51219 - }
51220 -
51221 - /*
51222 -diff -urNp linux-2.6.32.48/drivers/char/tty_ldisc.c linux-2.6.32.48/drivers/char/tty_ldisc.c
51223 ---- linux-2.6.32.48/drivers/char/tty_ldisc.c 2011-11-12 12:44:28.000000000 -0500
51224 -+++ linux-2.6.32.48/drivers/char/tty_ldisc.c 2011-11-12 12:46:45.000000000 -0500
51225 -@@ -74,7 +74,7 @@ static void put_ldisc(struct tty_ldisc *
51226 - if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
51227 - struct tty_ldisc_ops *ldo = ld->ops;
51228 -
51229 -- ldo->refcount--;
51230 -+ atomic_dec(&ldo->refcount);
51231 - module_put(ldo->owner);
51232 - spin_unlock_irqrestore(&tty_ldisc_lock, flags);
51233 -
51234 -@@ -109,7 +109,7 @@ int tty_register_ldisc(int disc, struct
51235 - spin_lock_irqsave(&tty_ldisc_lock, flags);
51236 - tty_ldiscs[disc] = new_ldisc;
51237 - new_ldisc->num = disc;
51238 -- new_ldisc->refcount = 0;
51239 -+ atomic_set(&new_ldisc->refcount, 0);
51240 - spin_unlock_irqrestore(&tty_ldisc_lock, flags);
51241 -
51242 - return ret;
51243 -@@ -137,7 +137,7 @@ int tty_unregister_ldisc(int disc)
51244 - return -EINVAL;
51245 -
51246 - spin_lock_irqsave(&tty_ldisc_lock, flags);
51247 -- if (tty_ldiscs[disc]->refcount)
51248 -+ if (atomic_read(&tty_ldiscs[disc]->refcount))
51249 - ret = -EBUSY;
51250 - else
51251 - tty_ldiscs[disc] = NULL;
51252 -@@ -158,7 +158,7 @@ static struct tty_ldisc_ops *get_ldops(i
51253 - if (ldops) {
51254 - ret = ERR_PTR(-EAGAIN);
51255 - if (try_module_get(ldops->owner)) {
51256 -- ldops->refcount++;
51257 -+ atomic_inc(&ldops->refcount);
51258 - ret = ldops;
51259 - }
51260 - }
51261 -@@ -171,7 +171,7 @@ static void put_ldops(struct tty_ldisc_o
51262 - unsigned long flags;
51263 -
51264 - spin_lock_irqsave(&tty_ldisc_lock, flags);
51265 -- ldops->refcount--;
51266 -+ atomic_dec(&ldops->refcount);
51267 - module_put(ldops->owner);
51268 - spin_unlock_irqrestore(&tty_ldisc_lock, flags);
51269 - }
51270 -diff -urNp linux-2.6.32.48/drivers/char/virtio_console.c linux-2.6.32.48/drivers/char/virtio_console.c
51271 ---- linux-2.6.32.48/drivers/char/virtio_console.c 2009-12-02 22:51:21.000000000 -0500
51272 -+++ linux-2.6.32.48/drivers/char/virtio_console.c 2011-11-12 12:46:45.000000000 -0500
51273 -@@ -133,7 +133,9 @@ static int get_chars(u32 vtermno, char *
51274 - * virtqueue, so we let the drivers do some boutique early-output thing. */
51275 - int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int))
51276 - {
51277 -- virtio_cons.put_chars = put_chars;
51278 -+ pax_open_kernel();
51279 -+ *(void **)&virtio_cons.put_chars = put_chars;
51280 -+ pax_close_kernel();
51281 - return hvc_instantiate(0, 0, &virtio_cons);
51282 - }
51283 -
51284 -@@ -213,11 +215,13 @@ static int __devinit virtcons_probe(stru
51285 - out_vq = vqs[1];
51286 -
51287 - /* Start using the new console output. */
51288 -- virtio_cons.get_chars = get_chars;
51289 -- virtio_cons.put_chars = put_chars;
51290 -- virtio_cons.notifier_add = notifier_add_vio;
51291 -- virtio_cons.notifier_del = notifier_del_vio;
51292 -- virtio_cons.notifier_hangup = notifier_del_vio;
51293 -+ pax_open_kernel();
51294 -+ *(void **)&virtio_cons.get_chars = get_chars;
51295 -+ *(void **)&virtio_cons.put_chars = put_chars;
51296 -+ *(void **)&virtio_cons.notifier_add = notifier_add_vio;
51297 -+ *(void **)&virtio_cons.notifier_del = notifier_del_vio;
51298 -+ *(void **)&virtio_cons.notifier_hangup = notifier_del_vio;
51299 -+ pax_close_kernel();
51300 -
51301 - /* The first argument of hvc_alloc() is the virtual console number, so
51302 - * we use zero. The second argument is the parameter for the
51303 -diff -urNp linux-2.6.32.48/drivers/char/vt.c linux-2.6.32.48/drivers/char/vt.c
51304 ---- linux-2.6.32.48/drivers/char/vt.c 2009-12-02 22:51:21.000000000 -0500
51305 -+++ linux-2.6.32.48/drivers/char/vt.c 2011-11-12 12:46:45.000000000 -0500
51306 -@@ -243,7 +243,7 @@ EXPORT_SYMBOL_GPL(unregister_vt_notifier
51307 -
51308 - static void notify_write(struct vc_data *vc, unsigned int unicode)
51309 - {
51310 -- struct vt_notifier_param param = { .vc = vc, unicode = unicode };
51311 -+ struct vt_notifier_param param = { .vc = vc, .c = unicode };
51312 - atomic_notifier_call_chain(&vt_notifier_list, VT_WRITE, &param);
51313 - }
51314 -
51315 -diff -urNp linux-2.6.32.48/drivers/char/vt_ioctl.c linux-2.6.32.48/drivers/char/vt_ioctl.c
51316 ---- linux-2.6.32.48/drivers/char/vt_ioctl.c 2011-11-12 12:44:28.000000000 -0500
51317 -+++ linux-2.6.32.48/drivers/char/vt_ioctl.c 2011-11-12 12:46:45.000000000 -0500
51318 -@@ -210,9 +210,6 @@ do_kdsk_ioctl(int cmd, struct kbentry __
51319 - if (copy_from_user(&tmp, user_kbe, sizeof(struct kbentry)))
51320 - return -EFAULT;
51321 -
51322 -- if (!capable(CAP_SYS_TTY_CONFIG))
51323 -- perm = 0;
51324 --
51325 - switch (cmd) {
51326 - case KDGKBENT:
51327 - key_map = key_maps[s];
51328 -@@ -224,8 +221,12 @@ do_kdsk_ioctl(int cmd, struct kbentry __
51329 - val = (i ? K_HOLE : K_NOSUCHMAP);
51330 - return put_user(val, &user_kbe->kb_value);
51331 - case KDSKBENT:
51332 -+ if (!capable(CAP_SYS_TTY_CONFIG))
51333 -+ perm = 0;
51334 -+
51335 - if (!perm)
51336 - return -EPERM;
51337 -+
51338 - if (!i && v == K_NOSUCHMAP) {
51339 - /* deallocate map */
51340 - key_map = key_maps[s];
51341 -@@ -325,9 +326,6 @@ do_kdgkb_ioctl(int cmd, struct kbsentry
51342 - int i, j, k;
51343 - int ret;
51344 -
51345 -- if (!capable(CAP_SYS_TTY_CONFIG))
51346 -- perm = 0;
51347 --
51348 - kbs = kmalloc(sizeof(*kbs), GFP_KERNEL);
51349 - if (!kbs) {
51350 - ret = -ENOMEM;
51351 -@@ -361,6 +359,9 @@ do_kdgkb_ioctl(int cmd, struct kbsentry
51352 - kfree(kbs);
51353 - return ((p && *p) ? -EOVERFLOW : 0);
51354 - case KDSKBSENT:
51355 -+ if (!capable(CAP_SYS_TTY_CONFIG))
51356 -+ perm = 0;
51357 -+
51358 - if (!perm) {
51359 - ret = -EPERM;
51360 - goto reterr;
51361 -diff -urNp linux-2.6.32.48/drivers/cpufreq/cpufreq.c linux-2.6.32.48/drivers/cpufreq/cpufreq.c
51362 ---- linux-2.6.32.48/drivers/cpufreq/cpufreq.c 2011-11-12 12:44:28.000000000 -0500
51363 -+++ linux-2.6.32.48/drivers/cpufreq/cpufreq.c 2011-11-12 12:46:45.000000000 -0500
51364 -@@ -750,7 +750,7 @@ static void cpufreq_sysfs_release(struct
51365 - complete(&policy->kobj_unregister);
51366 - }
51367 -
51368 --static struct sysfs_ops sysfs_ops = {
51369 -+static const struct sysfs_ops sysfs_ops = {
51370 - .show = show,
51371 - .store = store,
51372 - };
51373 -diff -urNp linux-2.6.32.48/drivers/cpuidle/sysfs.c linux-2.6.32.48/drivers/cpuidle/sysfs.c
51374 ---- linux-2.6.32.48/drivers/cpuidle/sysfs.c 2009-12-02 22:51:21.000000000 -0500
51375 -+++ linux-2.6.32.48/drivers/cpuidle/sysfs.c 2011-11-12 12:46:45.000000000 -0500
51376 -@@ -191,7 +191,7 @@ static ssize_t cpuidle_store(struct kobj
51377 - return ret;
51378 - }
51379 +diff -urNp linux-3.0.8/drivers/char/virtio_console.c linux-3.0.8/drivers/char/virtio_console.c
51380 +--- linux-3.0.8/drivers/char/virtio_console.c 2011-07-21 22:17:23.000000000 -0400
51381 ++++ linux-3.0.8/drivers/char/virtio_console.c 2011-10-06 04:17:55.000000000 -0400
51382 +@@ -555,7 +555,7 @@ static ssize_t fill_readbuf(struct port
51383 + if (to_user) {
51384 + ssize_t ret;
51385 +
51386 +- ret = copy_to_user(out_buf, buf->buf + buf->offset, out_count);
51387 ++ ret = copy_to_user((char __force_user *)out_buf, buf->buf + buf->offset, out_count);
51388 + if (ret)
51389 + return -EFAULT;
51390 + } else {
51391 +@@ -654,7 +654,7 @@ static ssize_t port_fops_read(struct fil
51392 + if (!port_has_data(port) && !port->host_connected)
51393 + return 0;
51394
51395 --static struct sysfs_ops cpuidle_sysfs_ops = {
51396 -+static const struct sysfs_ops cpuidle_sysfs_ops = {
51397 - .show = cpuidle_show,
51398 - .store = cpuidle_store,
51399 - };
51400 -@@ -277,7 +277,7 @@ static ssize_t cpuidle_state_show(struct
51401 - return ret;
51402 +- return fill_readbuf(port, ubuf, count, true);
51403 ++ return fill_readbuf(port, (char __force_kernel *)ubuf, count, true);
51404 }
51405
51406 --static struct sysfs_ops cpuidle_state_sysfs_ops = {
51407 -+static const struct sysfs_ops cpuidle_state_sysfs_ops = {
51408 - .show = cpuidle_state_show,
51409 - };
51410 -
51411 -@@ -294,7 +294,7 @@ static struct kobj_type ktype_state_cpui
51412 - .release = cpuidle_state_sysfs_release,
51413 - };
51414 -
51415 --static void inline cpuidle_free_state_kobj(struct cpuidle_device *device, int i)
51416 -+static inline void cpuidle_free_state_kobj(struct cpuidle_device *device, int i)
51417 - {
51418 - kobject_put(&device->kobjs[i]->kobj);
51419 - wait_for_completion(&device->kobjs[i]->kobj_unregister);
51420 -diff -urNp linux-2.6.32.48/drivers/crypto/hifn_795x.c linux-2.6.32.48/drivers/crypto/hifn_795x.c
51421 ---- linux-2.6.32.48/drivers/crypto/hifn_795x.c 2009-12-02 22:51:21.000000000 -0500
51422 -+++ linux-2.6.32.48/drivers/crypto/hifn_795x.c 2011-11-12 12:46:45.000000000 -0500
51423 + static ssize_t port_fops_write(struct file *filp, const char __user *ubuf,
51424 +diff -urNp linux-3.0.8/drivers/crypto/hifn_795x.c linux-3.0.8/drivers/crypto/hifn_795x.c
51425 +--- linux-3.0.8/drivers/crypto/hifn_795x.c 2011-07-21 22:17:23.000000000 -0400
51426 ++++ linux-3.0.8/drivers/crypto/hifn_795x.c 2011-08-23 21:48:14.000000000 -0400
51427 @@ -1655,6 +1655,8 @@ static int hifn_test(struct hifn_device
51428 0xCA, 0x34, 0x2B, 0x2E};
51429 struct scatterlist sg;
51430 @@ -29670,10 +25843,10 @@ diff -urNp linux-2.6.32.48/drivers/crypto/hifn_795x.c linux-2.6.32.48/drivers/cr
51431 memset(src, 0, sizeof(src));
51432 memset(ctx.key, 0, sizeof(ctx.key));
51433
51434 -diff -urNp linux-2.6.32.48/drivers/crypto/padlock-aes.c linux-2.6.32.48/drivers/crypto/padlock-aes.c
51435 ---- linux-2.6.32.48/drivers/crypto/padlock-aes.c 2011-11-12 12:44:28.000000000 -0500
51436 -+++ linux-2.6.32.48/drivers/crypto/padlock-aes.c 2011-11-12 12:46:45.000000000 -0500
51437 -@@ -108,6 +108,8 @@ static int aes_set_key(struct crypto_tfm
51438 +diff -urNp linux-3.0.8/drivers/crypto/padlock-aes.c linux-3.0.8/drivers/crypto/padlock-aes.c
51439 +--- linux-3.0.8/drivers/crypto/padlock-aes.c 2011-07-21 22:17:23.000000000 -0400
51440 ++++ linux-3.0.8/drivers/crypto/padlock-aes.c 2011-08-23 21:48:14.000000000 -0400
51441 +@@ -109,6 +109,8 @@ static int aes_set_key(struct crypto_tfm
51442 struct crypto_aes_ctx gen_aes;
51443 int cpu;
51444
51445 @@ -29682,85 +25855,76 @@ diff -urNp linux-2.6.32.48/drivers/crypto/padlock-aes.c linux-2.6.32.48/drivers/
51446 if (key_len % 8) {
51447 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
51448 return -EINVAL;
51449 -diff -urNp linux-2.6.32.48/drivers/dma/ioat/dma.c linux-2.6.32.48/drivers/dma/ioat/dma.c
51450 ---- linux-2.6.32.48/drivers/dma/ioat/dma.c 2011-11-12 12:44:28.000000000 -0500
51451 -+++ linux-2.6.32.48/drivers/dma/ioat/dma.c 2011-11-12 12:46:45.000000000 -0500
51452 -@@ -1146,7 +1146,7 @@ ioat_attr_show(struct kobject *kobj, str
51453 - return entry->show(&chan->common, page);
51454 - }
51455 -
51456 --struct sysfs_ops ioat_sysfs_ops = {
51457 -+const struct sysfs_ops ioat_sysfs_ops = {
51458 - .show = ioat_attr_show,
51459 - };
51460 -
51461 -diff -urNp linux-2.6.32.48/drivers/dma/ioat/dma.h linux-2.6.32.48/drivers/dma/ioat/dma.h
51462 ---- linux-2.6.32.48/drivers/dma/ioat/dma.h 2011-11-12 12:44:28.000000000 -0500
51463 -+++ linux-2.6.32.48/drivers/dma/ioat/dma.h 2011-11-12 12:46:45.000000000 -0500
51464 -@@ -347,7 +347,7 @@ bool ioat_cleanup_preamble(struct ioat_c
51465 - unsigned long *phys_complete);
51466 - void ioat_kobject_add(struct ioatdma_device *device, struct kobj_type *type);
51467 - void ioat_kobject_del(struct ioatdma_device *device);
51468 --extern struct sysfs_ops ioat_sysfs_ops;
51469 -+extern const struct sysfs_ops ioat_sysfs_ops;
51470 - extern struct ioat_sysfs_entry ioat_version_attr;
51471 - extern struct ioat_sysfs_entry ioat_cap_attr;
51472 - #endif /* IOATDMA_H */
51473 -diff -urNp linux-2.6.32.48/drivers/edac/edac_device_sysfs.c linux-2.6.32.48/drivers/edac/edac_device_sysfs.c
51474 ---- linux-2.6.32.48/drivers/edac/edac_device_sysfs.c 2009-12-02 22:51:21.000000000 -0500
51475 -+++ linux-2.6.32.48/drivers/edac/edac_device_sysfs.c 2011-11-12 12:46:45.000000000 -0500
51476 -@@ -137,7 +137,7 @@ static ssize_t edac_dev_ctl_info_store(s
51477 - }
51478 -
51479 - /* edac_dev file operations for an 'ctl_info' */
51480 --static struct sysfs_ops device_ctl_info_ops = {
51481 -+static const struct sysfs_ops device_ctl_info_ops = {
51482 - .show = edac_dev_ctl_info_show,
51483 - .store = edac_dev_ctl_info_store
51484 - };
51485 -@@ -373,7 +373,7 @@ static ssize_t edac_dev_instance_store(s
51486 - }
51487 -
51488 - /* edac_dev file operations for an 'instance' */
51489 --static struct sysfs_ops device_instance_ops = {
51490 -+static const struct sysfs_ops device_instance_ops = {
51491 - .show = edac_dev_instance_show,
51492 - .store = edac_dev_instance_store
51493 - };
51494 -@@ -476,7 +476,7 @@ static ssize_t edac_dev_block_store(stru
51495 +diff -urNp linux-3.0.8/drivers/dma/ioat/dma_v3.c linux-3.0.8/drivers/dma/ioat/dma_v3.c
51496 +--- linux-3.0.8/drivers/dma/ioat/dma_v3.c 2011-07-21 22:17:23.000000000 -0400
51497 ++++ linux-3.0.8/drivers/dma/ioat/dma_v3.c 2011-10-11 10:44:33.000000000 -0400
51498 +@@ -73,10 +73,10 @@
51499 + /* provide a lookup table for setting the source address in the base or
51500 + * extended descriptor of an xor or pq descriptor
51501 + */
51502 +-static const u8 xor_idx_to_desc __read_mostly = 0xd0;
51503 +-static const u8 xor_idx_to_field[] __read_mostly = { 1, 4, 5, 6, 7, 0, 1, 2 };
51504 +-static const u8 pq_idx_to_desc __read_mostly = 0xf8;
51505 +-static const u8 pq_idx_to_field[] __read_mostly = { 1, 4, 5, 0, 1, 2, 4, 5 };
51506 ++static const u8 xor_idx_to_desc = 0xd0;
51507 ++static const u8 xor_idx_to_field[] = { 1, 4, 5, 6, 7, 0, 1, 2 };
51508 ++static const u8 pq_idx_to_desc = 0xf8;
51509 ++static const u8 pq_idx_to_field[] = { 1, 4, 5, 0, 1, 2, 4, 5 };
51510 +
51511 + static dma_addr_t xor_get_src(struct ioat_raw_descriptor *descs[2], int idx)
51512 + {
51513 +diff -urNp linux-3.0.8/drivers/edac/amd64_edac.c linux-3.0.8/drivers/edac/amd64_edac.c
51514 +--- linux-3.0.8/drivers/edac/amd64_edac.c 2011-07-21 22:17:23.000000000 -0400
51515 ++++ linux-3.0.8/drivers/edac/amd64_edac.c 2011-10-11 10:44:33.000000000 -0400
51516 +@@ -2670,7 +2670,7 @@ static void __devexit amd64_remove_one_i
51517 + * PCI core identifies what devices are on a system during boot, and then
51518 + * inquiry this table to see if this driver is for a given device found.
51519 + */
51520 +-static const struct pci_device_id amd64_pci_table[] __devinitdata = {
51521 ++static const struct pci_device_id amd64_pci_table[] __devinitconst = {
51522 + {
51523 + .vendor = PCI_VENDOR_ID_AMD,
51524 + .device = PCI_DEVICE_ID_AMD_K8_NB_MEMCTL,
51525 +diff -urNp linux-3.0.8/drivers/edac/amd76x_edac.c linux-3.0.8/drivers/edac/amd76x_edac.c
51526 +--- linux-3.0.8/drivers/edac/amd76x_edac.c 2011-07-21 22:17:23.000000000 -0400
51527 ++++ linux-3.0.8/drivers/edac/amd76x_edac.c 2011-10-11 10:44:33.000000000 -0400
51528 +@@ -321,7 +321,7 @@ static void __devexit amd76x_remove_one(
51529 + edac_mc_free(mci);
51530 }
51531
51532 - /* edac_dev file operations for a 'block' */
51533 --static struct sysfs_ops device_block_ops = {
51534 -+static const struct sysfs_ops device_block_ops = {
51535 - .show = edac_dev_block_show,
51536 - .store = edac_dev_block_store
51537 - };
51538 -diff -urNp linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c
51539 ---- linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c 2009-12-02 22:51:21.000000000 -0500
51540 -+++ linux-2.6.32.48/drivers/edac/edac_mc_sysfs.c 2011-11-12 12:46:45.000000000 -0500
51541 -@@ -245,7 +245,7 @@ static ssize_t csrowdev_store(struct kob
51542 - return -EIO;
51543 +-static const struct pci_device_id amd76x_pci_tbl[] __devinitdata = {
51544 ++static const struct pci_device_id amd76x_pci_tbl[] __devinitconst = {
51545 + {
51546 + PCI_VEND_DEV(AMD, FE_GATE_700C), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51547 + AMD762},
51548 +diff -urNp linux-3.0.8/drivers/edac/e752x_edac.c linux-3.0.8/drivers/edac/e752x_edac.c
51549 +--- linux-3.0.8/drivers/edac/e752x_edac.c 2011-07-21 22:17:23.000000000 -0400
51550 ++++ linux-3.0.8/drivers/edac/e752x_edac.c 2011-10-11 10:44:33.000000000 -0400
51551 +@@ -1380,7 +1380,7 @@ static void __devexit e752x_remove_one(s
51552 + edac_mc_free(mci);
51553 }
51554
51555 --static struct sysfs_ops csrowfs_ops = {
51556 -+static const struct sysfs_ops csrowfs_ops = {
51557 - .show = csrowdev_show,
51558 - .store = csrowdev_store
51559 - };
51560 -@@ -575,7 +575,7 @@ static ssize_t mcidev_store(struct kobje
51561 +-static const struct pci_device_id e752x_pci_tbl[] __devinitdata = {
51562 ++static const struct pci_device_id e752x_pci_tbl[] __devinitconst = {
51563 + {
51564 + PCI_VEND_DEV(INTEL, 7520_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51565 + E7520},
51566 +diff -urNp linux-3.0.8/drivers/edac/e7xxx_edac.c linux-3.0.8/drivers/edac/e7xxx_edac.c
51567 +--- linux-3.0.8/drivers/edac/e7xxx_edac.c 2011-07-21 22:17:23.000000000 -0400
51568 ++++ linux-3.0.8/drivers/edac/e7xxx_edac.c 2011-10-11 10:44:33.000000000 -0400
51569 +@@ -525,7 +525,7 @@ static void __devexit e7xxx_remove_one(s
51570 + edac_mc_free(mci);
51571 }
51572
51573 - /* Intermediate show/store table */
51574 --static struct sysfs_ops mci_ops = {
51575 -+static const struct sysfs_ops mci_ops = {
51576 - .show = mcidev_show,
51577 - .store = mcidev_store
51578 - };
51579 -diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c
51580 ---- linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c 2009-12-02 22:51:21.000000000 -0500
51581 -+++ linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c 2011-11-12 12:46:45.000000000 -0500
51582 -@@ -25,8 +25,8 @@ static int edac_pci_log_pe = 1; /* log
51583 +-static const struct pci_device_id e7xxx_pci_tbl[] __devinitdata = {
51584 ++static const struct pci_device_id e7xxx_pci_tbl[] __devinitconst = {
51585 + {
51586 + PCI_VEND_DEV(INTEL, 7205_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51587 + E7205},
51588 +diff -urNp linux-3.0.8/drivers/edac/edac_pci_sysfs.c linux-3.0.8/drivers/edac/edac_pci_sysfs.c
51589 +--- linux-3.0.8/drivers/edac/edac_pci_sysfs.c 2011-07-21 22:17:23.000000000 -0400
51590 ++++ linux-3.0.8/drivers/edac/edac_pci_sysfs.c 2011-08-23 21:47:55.000000000 -0400
51591 +@@ -26,8 +26,8 @@ static int edac_pci_log_pe = 1; /* log
51592 static int edac_pci_log_npe = 1; /* log PCI non-parity error errors */
51593 static int edac_pci_poll_msec = 1000; /* one second workq period */
51594
51595 @@ -29771,25 +25935,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51596
51597 static struct kobject *edac_pci_top_main_kobj;
51598 static atomic_t edac_pci_sysfs_refcount = ATOMIC_INIT(0);
51599 -@@ -121,7 +121,7 @@ static ssize_t edac_pci_instance_store(s
51600 - }
51601 -
51602 - /* fs_ops table */
51603 --static struct sysfs_ops pci_instance_ops = {
51604 -+static const struct sysfs_ops pci_instance_ops = {
51605 - .show = edac_pci_instance_show,
51606 - .store = edac_pci_instance_store
51607 - };
51608 -@@ -261,7 +261,7 @@ static ssize_t edac_pci_dev_store(struct
51609 - return -EIO;
51610 - }
51611 -
51612 --static struct sysfs_ops edac_pci_sysfs_ops = {
51613 -+static const struct sysfs_ops edac_pci_sysfs_ops = {
51614 - .show = edac_pci_dev_show,
51615 - .store = edac_pci_dev_store
51616 - };
51617 -@@ -579,7 +579,7 @@ static void edac_pci_dev_parity_test(str
51618 +@@ -582,7 +582,7 @@ static void edac_pci_dev_parity_test(str
51619 edac_printk(KERN_CRIT, EDAC_PCI,
51620 "Signaled System Error on %s\n",
51621 pci_name(dev));
51622 @@ -29798,7 +25944,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51623 }
51624
51625 if (status & (PCI_STATUS_PARITY)) {
51626 -@@ -587,7 +587,7 @@ static void edac_pci_dev_parity_test(str
51627 +@@ -590,7 +590,7 @@ static void edac_pci_dev_parity_test(str
51628 "Master Data Parity Error on %s\n",
51629 pci_name(dev));
51630
51631 @@ -29807,7 +25953,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51632 }
51633
51634 if (status & (PCI_STATUS_DETECTED_PARITY)) {
51635 -@@ -595,7 +595,7 @@ static void edac_pci_dev_parity_test(str
51636 +@@ -598,7 +598,7 @@ static void edac_pci_dev_parity_test(str
51637 "Detected Parity Error on %s\n",
51638 pci_name(dev));
51639
51640 @@ -29816,7 +25962,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51641 }
51642 }
51643
51644 -@@ -616,7 +616,7 @@ static void edac_pci_dev_parity_test(str
51645 +@@ -619,7 +619,7 @@ static void edac_pci_dev_parity_test(str
51646 edac_printk(KERN_CRIT, EDAC_PCI, "Bridge "
51647 "Signaled System Error on %s\n",
51648 pci_name(dev));
51649 @@ -29825,7 +25971,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51650 }
51651
51652 if (status & (PCI_STATUS_PARITY)) {
51653 -@@ -624,7 +624,7 @@ static void edac_pci_dev_parity_test(str
51654 +@@ -627,7 +627,7 @@ static void edac_pci_dev_parity_test(str
51655 "Master Data Parity Error on "
51656 "%s\n", pci_name(dev));
51657
51658 @@ -29834,7 +25980,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51659 }
51660
51661 if (status & (PCI_STATUS_DETECTED_PARITY)) {
51662 -@@ -632,7 +632,7 @@ static void edac_pci_dev_parity_test(str
51663 +@@ -635,7 +635,7 @@ static void edac_pci_dev_parity_test(str
51664 "Detected Parity Error on %s\n",
51665 pci_name(dev));
51666
51667 @@ -29843,7 +25989,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51668 }
51669 }
51670 }
51671 -@@ -674,7 +674,7 @@ void edac_pci_do_parity_check(void)
51672 +@@ -677,7 +677,7 @@ void edac_pci_do_parity_check(void)
51673 if (!check_pci_errors)
51674 return;
51675
51676 @@ -29852,7 +25998,7 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51677
51678 /* scan all PCI devices looking for a Parity Error on devices and
51679 * bridges.
51680 -@@ -686,7 +686,7 @@ void edac_pci_do_parity_check(void)
51681 +@@ -689,7 +689,7 @@ void edac_pci_do_parity_check(void)
51682 /* Only if operator has selected panic on PCI Error */
51683 if (edac_pci_get_panic_on_pe()) {
51684 /* If the count is different 'after' from 'before' */
51685 @@ -29861,10 +26007,178 @@ diff -urNp linux-2.6.32.48/drivers/edac/edac_pci_sysfs.c linux-2.6.32.48/drivers
51686 panic("EDAC: PCI Parity Error");
51687 }
51688 }
51689 -diff -urNp linux-2.6.32.48/drivers/firewire/core-card.c linux-2.6.32.48/drivers/firewire/core-card.c
51690 ---- linux-2.6.32.48/drivers/firewire/core-card.c 2011-11-12 12:44:28.000000000 -0500
51691 -+++ linux-2.6.32.48/drivers/firewire/core-card.c 2011-11-12 12:46:45.000000000 -0500
51692 -@@ -558,7 +558,7 @@ void fw_card_release(struct kref *kref)
51693 +diff -urNp linux-3.0.8/drivers/edac/i3000_edac.c linux-3.0.8/drivers/edac/i3000_edac.c
51694 +--- linux-3.0.8/drivers/edac/i3000_edac.c 2011-07-21 22:17:23.000000000 -0400
51695 ++++ linux-3.0.8/drivers/edac/i3000_edac.c 2011-10-11 10:44:33.000000000 -0400
51696 +@@ -470,7 +470,7 @@ static void __devexit i3000_remove_one(s
51697 + edac_mc_free(mci);
51698 + }
51699 +
51700 +-static const struct pci_device_id i3000_pci_tbl[] __devinitdata = {
51701 ++static const struct pci_device_id i3000_pci_tbl[] __devinitconst = {
51702 + {
51703 + PCI_VEND_DEV(INTEL, 3000_HB), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51704 + I3000},
51705 +diff -urNp linux-3.0.8/drivers/edac/i3200_edac.c linux-3.0.8/drivers/edac/i3200_edac.c
51706 +--- linux-3.0.8/drivers/edac/i3200_edac.c 2011-07-21 22:17:23.000000000 -0400
51707 ++++ linux-3.0.8/drivers/edac/i3200_edac.c 2011-10-11 10:44:33.000000000 -0400
51708 +@@ -456,7 +456,7 @@ static void __devexit i3200_remove_one(s
51709 + edac_mc_free(mci);
51710 + }
51711 +
51712 +-static const struct pci_device_id i3200_pci_tbl[] __devinitdata = {
51713 ++static const struct pci_device_id i3200_pci_tbl[] __devinitconst = {
51714 + {
51715 + PCI_VEND_DEV(INTEL, 3200_HB), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51716 + I3200},
51717 +diff -urNp linux-3.0.8/drivers/edac/i5000_edac.c linux-3.0.8/drivers/edac/i5000_edac.c
51718 +--- linux-3.0.8/drivers/edac/i5000_edac.c 2011-07-21 22:17:23.000000000 -0400
51719 ++++ linux-3.0.8/drivers/edac/i5000_edac.c 2011-10-11 10:44:33.000000000 -0400
51720 +@@ -1516,7 +1516,7 @@ static void __devexit i5000_remove_one(s
51721 + *
51722 + * The "E500P" device is the first device supported.
51723 + */
51724 +-static const struct pci_device_id i5000_pci_tbl[] __devinitdata = {
51725 ++static const struct pci_device_id i5000_pci_tbl[] __devinitconst = {
51726 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I5000_DEV16),
51727 + .driver_data = I5000P},
51728 +
51729 +diff -urNp linux-3.0.8/drivers/edac/i5100_edac.c linux-3.0.8/drivers/edac/i5100_edac.c
51730 +--- linux-3.0.8/drivers/edac/i5100_edac.c 2011-07-21 22:17:23.000000000 -0400
51731 ++++ linux-3.0.8/drivers/edac/i5100_edac.c 2011-10-11 10:44:33.000000000 -0400
51732 +@@ -1051,7 +1051,7 @@ static void __devexit i5100_remove_one(s
51733 + edac_mc_free(mci);
51734 + }
51735 +
51736 +-static const struct pci_device_id i5100_pci_tbl[] __devinitdata = {
51737 ++static const struct pci_device_id i5100_pci_tbl[] __devinitconst = {
51738 + /* Device 16, Function 0, Channel 0 Memory Map, Error Flag/Mask, ... */
51739 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5100_16) },
51740 + { 0, }
51741 +diff -urNp linux-3.0.8/drivers/edac/i5400_edac.c linux-3.0.8/drivers/edac/i5400_edac.c
51742 +--- linux-3.0.8/drivers/edac/i5400_edac.c 2011-07-21 22:17:23.000000000 -0400
51743 ++++ linux-3.0.8/drivers/edac/i5400_edac.c 2011-10-11 10:44:33.000000000 -0400
51744 +@@ -1383,7 +1383,7 @@ static void __devexit i5400_remove_one(s
51745 + *
51746 + * The "E500P" device is the first device supported.
51747 + */
51748 +-static const struct pci_device_id i5400_pci_tbl[] __devinitdata = {
51749 ++static const struct pci_device_id i5400_pci_tbl[] __devinitconst = {
51750 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5400_ERR)},
51751 + {0,} /* 0 terminated list. */
51752 + };
51753 +diff -urNp linux-3.0.8/drivers/edac/i7300_edac.c linux-3.0.8/drivers/edac/i7300_edac.c
51754 +--- linux-3.0.8/drivers/edac/i7300_edac.c 2011-07-21 22:17:23.000000000 -0400
51755 ++++ linux-3.0.8/drivers/edac/i7300_edac.c 2011-10-11 10:44:33.000000000 -0400
51756 +@@ -1191,7 +1191,7 @@ static void __devexit i7300_remove_one(s
51757 + *
51758 + * Has only 8086:360c PCI ID
51759 + */
51760 +-static const struct pci_device_id i7300_pci_tbl[] __devinitdata = {
51761 ++static const struct pci_device_id i7300_pci_tbl[] __devinitconst = {
51762 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I7300_MCH_ERR)},
51763 + {0,} /* 0 terminated list. */
51764 + };
51765 +diff -urNp linux-3.0.8/drivers/edac/i7core_edac.c linux-3.0.8/drivers/edac/i7core_edac.c
51766 +--- linux-3.0.8/drivers/edac/i7core_edac.c 2011-10-24 08:05:23.000000000 -0400
51767 ++++ linux-3.0.8/drivers/edac/i7core_edac.c 2011-10-11 10:44:33.000000000 -0400
51768 +@@ -359,7 +359,7 @@ static const struct pci_id_table pci_dev
51769 + /*
51770 + * pci_device_id table for which devices we are looking for
51771 + */
51772 +-static const struct pci_device_id i7core_pci_tbl[] __devinitdata = {
51773 ++static const struct pci_device_id i7core_pci_tbl[] __devinitconst = {
51774 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_X58_HUB_MGMT)},
51775 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNNFIELD_QPI_LINK0)},
51776 + {0,} /* 0 terminated list. */
51777 +diff -urNp linux-3.0.8/drivers/edac/i82443bxgx_edac.c linux-3.0.8/drivers/edac/i82443bxgx_edac.c
51778 +--- linux-3.0.8/drivers/edac/i82443bxgx_edac.c 2011-07-21 22:17:23.000000000 -0400
51779 ++++ linux-3.0.8/drivers/edac/i82443bxgx_edac.c 2011-10-11 10:44:33.000000000 -0400
51780 +@@ -380,7 +380,7 @@ static void __devexit i82443bxgx_edacmc_
51781 +
51782 + EXPORT_SYMBOL_GPL(i82443bxgx_edacmc_remove_one);
51783 +
51784 +-static const struct pci_device_id i82443bxgx_pci_tbl[] __devinitdata = {
51785 ++static const struct pci_device_id i82443bxgx_pci_tbl[] __devinitconst = {
51786 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_0)},
51787 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_2)},
51788 + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_0)},
51789 +diff -urNp linux-3.0.8/drivers/edac/i82860_edac.c linux-3.0.8/drivers/edac/i82860_edac.c
51790 +--- linux-3.0.8/drivers/edac/i82860_edac.c 2011-07-21 22:17:23.000000000 -0400
51791 ++++ linux-3.0.8/drivers/edac/i82860_edac.c 2011-10-11 10:44:33.000000000 -0400
51792 +@@ -270,7 +270,7 @@ static void __devexit i82860_remove_one(
51793 + edac_mc_free(mci);
51794 + }
51795 +
51796 +-static const struct pci_device_id i82860_pci_tbl[] __devinitdata = {
51797 ++static const struct pci_device_id i82860_pci_tbl[] __devinitconst = {
51798 + {
51799 + PCI_VEND_DEV(INTEL, 82860_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51800 + I82860},
51801 +diff -urNp linux-3.0.8/drivers/edac/i82875p_edac.c linux-3.0.8/drivers/edac/i82875p_edac.c
51802 +--- linux-3.0.8/drivers/edac/i82875p_edac.c 2011-07-21 22:17:23.000000000 -0400
51803 ++++ linux-3.0.8/drivers/edac/i82875p_edac.c 2011-10-11 10:44:33.000000000 -0400
51804 +@@ -511,7 +511,7 @@ static void __devexit i82875p_remove_one
51805 + edac_mc_free(mci);
51806 + }
51807 +
51808 +-static const struct pci_device_id i82875p_pci_tbl[] __devinitdata = {
51809 ++static const struct pci_device_id i82875p_pci_tbl[] __devinitconst = {
51810 + {
51811 + PCI_VEND_DEV(INTEL, 82875_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51812 + I82875P},
51813 +diff -urNp linux-3.0.8/drivers/edac/i82975x_edac.c linux-3.0.8/drivers/edac/i82975x_edac.c
51814 +--- linux-3.0.8/drivers/edac/i82975x_edac.c 2011-07-21 22:17:23.000000000 -0400
51815 ++++ linux-3.0.8/drivers/edac/i82975x_edac.c 2011-10-11 10:44:33.000000000 -0400
51816 +@@ -604,7 +604,7 @@ static void __devexit i82975x_remove_one
51817 + edac_mc_free(mci);
51818 + }
51819 +
51820 +-static const struct pci_device_id i82975x_pci_tbl[] __devinitdata = {
51821 ++static const struct pci_device_id i82975x_pci_tbl[] __devinitconst = {
51822 + {
51823 + PCI_VEND_DEV(INTEL, 82975_0), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51824 + I82975X
51825 +diff -urNp linux-3.0.8/drivers/edac/mce_amd.h linux-3.0.8/drivers/edac/mce_amd.h
51826 +--- linux-3.0.8/drivers/edac/mce_amd.h 2011-07-21 22:17:23.000000000 -0400
51827 ++++ linux-3.0.8/drivers/edac/mce_amd.h 2011-08-23 21:47:55.000000000 -0400
51828 +@@ -83,7 +83,7 @@ struct amd_decoder_ops {
51829 + bool (*dc_mce)(u16, u8);
51830 + bool (*ic_mce)(u16, u8);
51831 + bool (*nb_mce)(u16, u8);
51832 +-};
51833 ++} __no_const;
51834 +
51835 + void amd_report_gart_errors(bool);
51836 + void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32));
51837 +diff -urNp linux-3.0.8/drivers/edac/r82600_edac.c linux-3.0.8/drivers/edac/r82600_edac.c
51838 +--- linux-3.0.8/drivers/edac/r82600_edac.c 2011-07-21 22:17:23.000000000 -0400
51839 ++++ linux-3.0.8/drivers/edac/r82600_edac.c 2011-10-11 10:44:33.000000000 -0400
51840 +@@ -373,7 +373,7 @@ static void __devexit r82600_remove_one(
51841 + edac_mc_free(mci);
51842 + }
51843 +
51844 +-static const struct pci_device_id r82600_pci_tbl[] __devinitdata = {
51845 ++static const struct pci_device_id r82600_pci_tbl[] __devinitconst = {
51846 + {
51847 + PCI_DEVICE(PCI_VENDOR_ID_RADISYS, R82600_BRIDGE_ID)
51848 + },
51849 +diff -urNp linux-3.0.8/drivers/edac/x38_edac.c linux-3.0.8/drivers/edac/x38_edac.c
51850 +--- linux-3.0.8/drivers/edac/x38_edac.c 2011-07-21 22:17:23.000000000 -0400
51851 ++++ linux-3.0.8/drivers/edac/x38_edac.c 2011-10-11 10:44:33.000000000 -0400
51852 +@@ -440,7 +440,7 @@ static void __devexit x38_remove_one(str
51853 + edac_mc_free(mci);
51854 + }
51855 +
51856 +-static const struct pci_device_id x38_pci_tbl[] __devinitdata = {
51857 ++static const struct pci_device_id x38_pci_tbl[] __devinitconst = {
51858 + {
51859 + PCI_VEND_DEV(INTEL, X38_HB), PCI_ANY_ID, PCI_ANY_ID, 0, 0,
51860 + X38},
51861 +diff -urNp linux-3.0.8/drivers/firewire/core-card.c linux-3.0.8/drivers/firewire/core-card.c
51862 +--- linux-3.0.8/drivers/firewire/core-card.c 2011-07-21 22:17:23.000000000 -0400
51863 ++++ linux-3.0.8/drivers/firewire/core-card.c 2011-08-23 21:47:55.000000000 -0400
51864 +@@ -657,7 +657,7 @@ void fw_card_release(struct kref *kref)
51865
51866 void fw_core_remove_card(struct fw_card *card)
51867 {
51868 @@ -29873,10 +26187,10 @@ diff -urNp linux-2.6.32.48/drivers/firewire/core-card.c linux-2.6.32.48/drivers/
51869
51870 card->driver->update_phy_reg(card, 4,
51871 PHY_LINK_ACTIVE | PHY_CONTENDER, 0);
51872 -diff -urNp linux-2.6.32.48/drivers/firewire/core-cdev.c linux-2.6.32.48/drivers/firewire/core-cdev.c
51873 ---- linux-2.6.32.48/drivers/firewire/core-cdev.c 2011-11-12 12:44:28.000000000 -0500
51874 -+++ linux-2.6.32.48/drivers/firewire/core-cdev.c 2011-11-12 12:46:45.000000000 -0500
51875 -@@ -1141,8 +1141,7 @@ static int init_iso_resource(struct clie
51876 +diff -urNp linux-3.0.8/drivers/firewire/core-cdev.c linux-3.0.8/drivers/firewire/core-cdev.c
51877 +--- linux-3.0.8/drivers/firewire/core-cdev.c 2011-10-24 08:05:21.000000000 -0400
51878 ++++ linux-3.0.8/drivers/firewire/core-cdev.c 2011-08-23 21:47:55.000000000 -0400
51879 +@@ -1313,8 +1313,7 @@ static int init_iso_resource(struct clie
51880 int ret;
51881
51882 if ((request->channels == 0 && request->bandwidth == 0) ||
51883 @@ -29886,10 +26200,10 @@ diff -urNp linux-2.6.32.48/drivers/firewire/core-cdev.c linux-2.6.32.48/drivers/
51884 return -EINVAL;
51885
51886 r = kmalloc(sizeof(*r), GFP_KERNEL);
51887 -diff -urNp linux-2.6.32.48/drivers/firewire/core.h linux-2.6.32.48/drivers/firewire/core.h
51888 ---- linux-2.6.32.48/drivers/firewire/core.h 2009-12-02 22:51:21.000000000 -0500
51889 -+++ linux-2.6.32.48/drivers/firewire/core.h 2011-11-12 12:46:45.000000000 -0500
51890 -@@ -86,6 +86,7 @@ struct fw_card_driver {
51891 +diff -urNp linux-3.0.8/drivers/firewire/core.h linux-3.0.8/drivers/firewire/core.h
51892 +--- linux-3.0.8/drivers/firewire/core.h 2011-07-21 22:17:23.000000000 -0400
51893 ++++ linux-3.0.8/drivers/firewire/core.h 2011-08-23 21:47:55.000000000 -0400
51894 +@@ -101,6 +101,7 @@ struct fw_card_driver {
51895
51896 int (*stop_iso)(struct fw_iso_context *ctx);
51897 };
51898 @@ -29897,30 +26211,30 @@ diff -urNp linux-2.6.32.48/drivers/firewire/core.h linux-2.6.32.48/drivers/firew
51899
51900 void fw_card_initialize(struct fw_card *card,
51901 const struct fw_card_driver *driver, struct device *device);
51902 -diff -urNp linux-2.6.32.48/drivers/firewire/core-transaction.c linux-2.6.32.48/drivers/firewire/core-transaction.c
51903 ---- linux-2.6.32.48/drivers/firewire/core-transaction.c 2009-12-02 22:51:21.000000000 -0500
51904 -+++ linux-2.6.32.48/drivers/firewire/core-transaction.c 2011-11-12 12:46:45.000000000 -0500
51905 -@@ -36,6 +36,7 @@
51906 - #include <linux/string.h>
51907 +diff -urNp linux-3.0.8/drivers/firewire/core-transaction.c linux-3.0.8/drivers/firewire/core-transaction.c
51908 +--- linux-3.0.8/drivers/firewire/core-transaction.c 2011-07-21 22:17:23.000000000 -0400
51909 ++++ linux-3.0.8/drivers/firewire/core-transaction.c 2011-08-23 21:48:14.000000000 -0400
51910 +@@ -37,6 +37,7 @@
51911 #include <linux/timer.h>
51912 #include <linux/types.h>
51913 + #include <linux/workqueue.h>
51914 +#include <linux/sched.h>
51915
51916 #include <asm/byteorder.h>
51917
51918 -@@ -344,6 +345,8 @@ int fw_run_transaction(struct fw_card *c
51919 +@@ -422,6 +423,8 @@ int fw_run_transaction(struct fw_card *c
51920 struct transaction_callback_data d;
51921 struct fw_transaction t;
51922
51923 + pax_track_stack();
51924 +
51925 + init_timer_on_stack(&t.split_timeout_timer);
51926 init_completion(&d.done);
51927 d.payload = payload;
51928 - fw_send_request(card, &t, tcode, destination_id, generation, speed,
51929 -diff -urNp linux-2.6.32.48/drivers/firmware/dmi_scan.c linux-2.6.32.48/drivers/firmware/dmi_scan.c
51930 ---- linux-2.6.32.48/drivers/firmware/dmi_scan.c 2011-11-12 12:44:28.000000000 -0500
51931 -+++ linux-2.6.32.48/drivers/firmware/dmi_scan.c 2011-11-12 12:46:45.000000000 -0500
51932 -@@ -391,11 +391,6 @@ void __init dmi_scan_machine(void)
51933 +diff -urNp linux-3.0.8/drivers/firmware/dmi_scan.c linux-3.0.8/drivers/firmware/dmi_scan.c
51934 +--- linux-3.0.8/drivers/firmware/dmi_scan.c 2011-07-21 22:17:23.000000000 -0400
51935 ++++ linux-3.0.8/drivers/firmware/dmi_scan.c 2011-10-06 04:17:55.000000000 -0400
51936 +@@ -449,11 +449,6 @@ void __init dmi_scan_machine(void)
51937 }
51938 }
51939 else {
51940 @@ -29932,7 +26246,7 @@ diff -urNp linux-2.6.32.48/drivers/firmware/dmi_scan.c linux-2.6.32.48/drivers/f
51941 p = dmi_ioremap(0xF0000, 0x10000);
51942 if (p == NULL)
51943 goto error;
51944 -@@ -667,7 +662,7 @@ int dmi_walk(void (*decode)(const struct
51945 +@@ -725,7 +720,7 @@ int dmi_walk(void (*decode)(const struct
51946 if (buf == NULL)
51947 return -1;
51948
51949 @@ -29941,57 +26255,9 @@ diff -urNp linux-2.6.32.48/drivers/firmware/dmi_scan.c linux-2.6.32.48/drivers/f
51950
51951 iounmap(buf);
51952 return 0;
51953 -diff -urNp linux-2.6.32.48/drivers/firmware/edd.c linux-2.6.32.48/drivers/firmware/edd.c
51954 ---- linux-2.6.32.48/drivers/firmware/edd.c 2009-12-02 22:51:21.000000000 -0500
51955 -+++ linux-2.6.32.48/drivers/firmware/edd.c 2011-11-12 12:46:45.000000000 -0500
51956 -@@ -122,7 +122,7 @@ edd_attr_show(struct kobject * kobj, str
51957 - return ret;
51958 - }
51959 -
51960 --static struct sysfs_ops edd_attr_ops = {
51961 -+static const struct sysfs_ops edd_attr_ops = {
51962 - .show = edd_attr_show,
51963 - };
51964 -
51965 -diff -urNp linux-2.6.32.48/drivers/firmware/efivars.c linux-2.6.32.48/drivers/firmware/efivars.c
51966 ---- linux-2.6.32.48/drivers/firmware/efivars.c 2009-12-02 22:51:21.000000000 -0500
51967 -+++ linux-2.6.32.48/drivers/firmware/efivars.c 2011-11-12 12:46:45.000000000 -0500
51968 -@@ -362,7 +362,7 @@ static ssize_t efivar_attr_store(struct
51969 - return ret;
51970 - }
51971 -
51972 --static struct sysfs_ops efivar_attr_ops = {
51973 -+static const struct sysfs_ops efivar_attr_ops = {
51974 - .show = efivar_attr_show,
51975 - .store = efivar_attr_store,
51976 - };
51977 -diff -urNp linux-2.6.32.48/drivers/firmware/iscsi_ibft.c linux-2.6.32.48/drivers/firmware/iscsi_ibft.c
51978 ---- linux-2.6.32.48/drivers/firmware/iscsi_ibft.c 2009-12-02 22:51:21.000000000 -0500
51979 -+++ linux-2.6.32.48/drivers/firmware/iscsi_ibft.c 2011-11-12 12:46:45.000000000 -0500
51980 -@@ -525,7 +525,7 @@ static ssize_t ibft_show_attribute(struc
51981 - return ret;
51982 - }
51983 -
51984 --static struct sysfs_ops ibft_attr_ops = {
51985 -+static const struct sysfs_ops ibft_attr_ops = {
51986 - .show = ibft_show_attribute,
51987 - };
51988 -
51989 -diff -urNp linux-2.6.32.48/drivers/firmware/memmap.c linux-2.6.32.48/drivers/firmware/memmap.c
51990 ---- linux-2.6.32.48/drivers/firmware/memmap.c 2009-12-02 22:51:21.000000000 -0500
51991 -+++ linux-2.6.32.48/drivers/firmware/memmap.c 2011-11-12 12:46:45.000000000 -0500
51992 -@@ -74,7 +74,7 @@ static struct attribute *def_attrs[] = {
51993 - NULL
51994 - };
51995 -
51996 --static struct sysfs_ops memmap_attr_ops = {
51997 -+static const struct sysfs_ops memmap_attr_ops = {
51998 - .show = memmap_attr_show,
51999 - };
52000 -
52001 -diff -urNp linux-2.6.32.48/drivers/gpio/vr41xx_giu.c linux-2.6.32.48/drivers/gpio/vr41xx_giu.c
52002 ---- linux-2.6.32.48/drivers/gpio/vr41xx_giu.c 2009-12-02 22:51:21.000000000 -0500
52003 -+++ linux-2.6.32.48/drivers/gpio/vr41xx_giu.c 2011-11-12 12:46:45.000000000 -0500
52004 +diff -urNp linux-3.0.8/drivers/gpio/vr41xx_giu.c linux-3.0.8/drivers/gpio/vr41xx_giu.c
52005 +--- linux-3.0.8/drivers/gpio/vr41xx_giu.c 2011-07-21 22:17:23.000000000 -0400
52006 ++++ linux-3.0.8/drivers/gpio/vr41xx_giu.c 2011-08-23 21:47:55.000000000 -0400
52007 @@ -204,7 +204,7 @@ static int giu_get_irq(unsigned int irq)
52008 printk(KERN_ERR "spurious GIU interrupt: %04x(%04x),%04x(%04x)\n",
52009 maskl, pendl, maskh, pendh);
52010 @@ -30001,10 +26267,10 @@ diff -urNp linux-2.6.32.48/drivers/gpio/vr41xx_giu.c linux-2.6.32.48/drivers/gpi
52011
52012 return -EINVAL;
52013 }
52014 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c
52015 ---- linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c 2011-11-12 12:44:28.000000000 -0500
52016 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c 2011-11-12 12:46:45.000000000 -0500
52017 -@@ -1323,7 +1323,7 @@ int drm_mode_getconnector(struct drm_dev
52018 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_crtc.c linux-3.0.8/drivers/gpu/drm/drm_crtc.c
52019 +--- linux-3.0.8/drivers/gpu/drm/drm_crtc.c 2011-07-21 22:17:23.000000000 -0400
52020 ++++ linux-3.0.8/drivers/gpu/drm/drm_crtc.c 2011-10-06 04:17:55.000000000 -0400
52021 +@@ -1372,7 +1372,7 @@ int drm_mode_getconnector(struct drm_dev
52022 */
52023 if ((out_resp->count_modes >= mode_count) && mode_count) {
52024 copied = 0;
52025 @@ -30013,7 +26279,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52026 list_for_each_entry(mode, &connector->modes, head) {
52027 drm_crtc_convert_to_umode(&u_mode, mode);
52028 if (copy_to_user(mode_ptr + copied,
52029 -@@ -1338,8 +1338,8 @@ int drm_mode_getconnector(struct drm_dev
52030 +@@ -1387,8 +1387,8 @@ int drm_mode_getconnector(struct drm_dev
52031
52032 if ((out_resp->count_props >= props_count) && props_count) {
52033 copied = 0;
52034 @@ -30024,7 +26290,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52035 for (i = 0; i < DRM_CONNECTOR_MAX_PROPERTY; i++) {
52036 if (connector->property_ids[i] != 0) {
52037 if (put_user(connector->property_ids[i],
52038 -@@ -1361,7 +1361,7 @@ int drm_mode_getconnector(struct drm_dev
52039 +@@ -1410,7 +1410,7 @@ int drm_mode_getconnector(struct drm_dev
52040
52041 if ((out_resp->count_encoders >= encoders_count) && encoders_count) {
52042 copied = 0;
52043 @@ -30033,7 +26299,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52044 for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
52045 if (connector->encoder_ids[i] != 0) {
52046 if (put_user(connector->encoder_ids[i],
52047 -@@ -1513,7 +1513,7 @@ int drm_mode_setcrtc(struct drm_device *
52048 +@@ -1569,7 +1569,7 @@ int drm_mode_setcrtc(struct drm_device *
52049 }
52050
52051 for (i = 0; i < crtc_req->count_connectors; i++) {
52052 @@ -30042,7 +26308,16 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52053 if (get_user(out_id, &set_connectors_ptr[i])) {
52054 ret = -EFAULT;
52055 goto out;
52056 -@@ -2118,7 +2118,7 @@ int drm_mode_getproperty_ioctl(struct dr
52057 +@@ -1850,7 +1850,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_de
52058 + fb = obj_to_fb(obj);
52059 +
52060 + num_clips = r->num_clips;
52061 +- clips_ptr = (struct drm_clip_rect *)(unsigned long)r->clips_ptr;
52062 ++ clips_ptr = (struct drm_clip_rect __user *)(unsigned long)r->clips_ptr;
52063 +
52064 + if (!num_clips != !clips_ptr) {
52065 + ret = -EINVAL;
52066 +@@ -2270,7 +2270,7 @@ int drm_mode_getproperty_ioctl(struct dr
52067 out_resp->flags = property->flags;
52068
52069 if ((out_resp->count_values >= value_count) && value_count) {
52070 @@ -30051,7 +26326,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52071 for (i = 0; i < value_count; i++) {
52072 if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
52073 ret = -EFAULT;
52074 -@@ -2131,7 +2131,7 @@ int drm_mode_getproperty_ioctl(struct dr
52075 +@@ -2283,7 +2283,7 @@ int drm_mode_getproperty_ioctl(struct dr
52076 if (property->flags & DRM_MODE_PROP_ENUM) {
52077 if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
52078 copied = 0;
52079 @@ -30060,7 +26335,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52080 list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
52081
52082 if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
52083 -@@ -2154,7 +2154,7 @@ int drm_mode_getproperty_ioctl(struct dr
52084 +@@ -2306,7 +2306,7 @@ int drm_mode_getproperty_ioctl(struct dr
52085 if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
52086 copied = 0;
52087 blob_id_ptr = (uint32_t *)(unsigned long)out_resp->enum_blob_ptr;
52088 @@ -30069,7 +26344,16 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52089
52090 list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
52091 if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
52092 -@@ -2226,7 +2226,7 @@ int drm_mode_getblob_ioctl(struct drm_de
52093 +@@ -2367,7 +2367,7 @@ int drm_mode_getblob_ioctl(struct drm_de
52094 + struct drm_mode_get_blob *out_resp = data;
52095 + struct drm_property_blob *blob;
52096 + int ret = 0;
52097 +- void *blob_ptr;
52098 ++ void __user *blob_ptr;
52099 +
52100 + if (!drm_core_check_feature(dev, DRIVER_MODESET))
52101 + return -EINVAL;
52102 +@@ -2381,7 +2381,7 @@ int drm_mode_getblob_ioctl(struct drm_de
52103 blob = obj_to_blob(obj);
52104
52105 if (out_resp->length == blob->length) {
52106 @@ -30078,43 +26362,52 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc.c linux-2.6.32.48/drivers/gp
52107 if (copy_to_user(blob_ptr, blob->data, blob->length)){
52108 ret = -EFAULT;
52109 goto done;
52110 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c
52111 ---- linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c 2011-11-12 12:44:28.000000000 -0500
52112 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_crtc_helper.c 2011-11-12 12:46:45.000000000 -0500
52113 -@@ -573,7 +573,7 @@ static bool drm_encoder_crtc_ok(struct d
52114 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_crtc_helper.c linux-3.0.8/drivers/gpu/drm/drm_crtc_helper.c
52115 +--- linux-3.0.8/drivers/gpu/drm/drm_crtc_helper.c 2011-07-21 22:17:23.000000000 -0400
52116 ++++ linux-3.0.8/drivers/gpu/drm/drm_crtc_helper.c 2011-08-23 21:48:14.000000000 -0400
52117 +@@ -276,7 +276,7 @@ static bool drm_encoder_crtc_ok(struct d
52118 struct drm_crtc *tmp;
52119 int crtc_mask = 1;
52120
52121 -- WARN(!crtc, "checking null crtc?");
52122 +- WARN(!crtc, "checking null crtc?\n");
52123 + BUG_ON(!crtc);
52124
52125 dev = crtc->dev;
52126
52127 -@@ -642,6 +642,8 @@ bool drm_crtc_helper_set_mode(struct drm
52128 -
52129 - adjusted_mode = drm_mode_duplicate(dev, mode);
52130 +@@ -343,6 +343,8 @@ bool drm_crtc_helper_set_mode(struct drm
52131 + struct drm_encoder *encoder;
52132 + bool ret = true;
52133
52134 + pax_track_stack();
52135 +
52136 crtc->enabled = drm_helper_crtc_in_use(crtc);
52137 -
52138 if (!crtc->enabled)
52139 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_drv.c linux-2.6.32.48/drivers/gpu/drm/drm_drv.c
52140 ---- linux-2.6.32.48/drivers/gpu/drm/drm_drv.c 2011-11-12 12:44:28.000000000 -0500
52141 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_drv.c 2011-11-12 12:46:45.000000000 -0500
52142 -@@ -417,7 +417,7 @@ int drm_ioctl(struct inode *inode, struc
52143 - char *kdata = NULL;
52144 + return true;
52145 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_drv.c linux-3.0.8/drivers/gpu/drm/drm_drv.c
52146 +--- linux-3.0.8/drivers/gpu/drm/drm_drv.c 2011-07-21 22:17:23.000000000 -0400
52147 ++++ linux-3.0.8/drivers/gpu/drm/drm_drv.c 2011-10-06 04:17:55.000000000 -0400
52148 +@@ -307,7 +307,7 @@ module_exit(drm_core_exit);
52149 + /**
52150 + * Copy and IOCTL return string to user space
52151 + */
52152 +-static int drm_copy_field(char *buf, size_t *buf_len, const char *value)
52153 ++static int drm_copy_field(char __user *buf, size_t *buf_len, const char *value)
52154 + {
52155 + int len;
52156
52157 +@@ -386,7 +386,7 @@ long drm_ioctl(struct file *filp,
52158 +
52159 + dev = file_priv->minor->dev;
52160 atomic_inc(&dev->ioctl_count);
52161 - atomic_inc(&dev->counts[_DRM_STAT_IOCTLS]);
52162 + atomic_inc_unchecked(&dev->counts[_DRM_STAT_IOCTLS]);
52163 ++file_priv->ioctl_count;
52164
52165 DRM_DEBUG("pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n",
52166 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_fops.c linux-2.6.32.48/drivers/gpu/drm/drm_fops.c
52167 ---- linux-2.6.32.48/drivers/gpu/drm/drm_fops.c 2011-11-12 12:44:28.000000000 -0500
52168 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_fops.c 2011-11-12 12:46:45.000000000 -0500
52169 -@@ -66,7 +66,7 @@ static int drm_setup(struct drm_device *
52170 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_fops.c linux-3.0.8/drivers/gpu/drm/drm_fops.c
52171 +--- linux-3.0.8/drivers/gpu/drm/drm_fops.c 2011-07-21 22:17:23.000000000 -0400
52172 ++++ linux-3.0.8/drivers/gpu/drm/drm_fops.c 2011-08-23 21:47:55.000000000 -0400
52173 +@@ -70,7 +70,7 @@ static int drm_setup(struct drm_device *
52174 }
52175
52176 for (i = 0; i < ARRAY_SIZE(dev->counts); i++)
52177 @@ -30123,28 +26416,27 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_fops.c linux-2.6.32.48/drivers/gp
52178
52179 dev->sigdata.lock = NULL;
52180
52181 -@@ -130,9 +130,9 @@ int drm_open(struct inode *inode, struct
52182 +@@ -134,8 +134,8 @@ int drm_open(struct inode *inode, struct
52183
52184 retcode = drm_open_helper(inode, filp, dev);
52185 if (!retcode) {
52186 - atomic_inc(&dev->counts[_DRM_STAT_OPENS]);
52187 +- if (!dev->open_count++)
52188 + atomic_inc_unchecked(&dev->counts[_DRM_STAT_OPENS]);
52189 - spin_lock(&dev->count_lock);
52190 -- if (!dev->open_count++) {
52191 -+ if (local_inc_return(&dev->open_count) == 1) {
52192 - spin_unlock(&dev->count_lock);
52193 ++ if (local_inc_return(&dev->open_count) == 1)
52194 retcode = drm_setup(dev);
52195 - goto out;
52196 -@@ -435,7 +435,7 @@ int drm_release(struct inode *inode, str
52197 + }
52198 + if (!retcode) {
52199 +@@ -472,7 +472,7 @@ int drm_release(struct inode *inode, str
52200
52201 - lock_kernel();
52202 + mutex_lock(&drm_global_mutex);
52203
52204 - DRM_DEBUG("open_count = %d\n", dev->open_count);
52205 + DRM_DEBUG("open_count = %d\n", local_read(&dev->open_count));
52206
52207 if (dev->driver->preclose)
52208 dev->driver->preclose(dev, file_priv);
52209 -@@ -447,7 +447,7 @@ int drm_release(struct inode *inode, str
52210 +@@ -484,7 +484,7 @@ int drm_release(struct inode *inode, str
52211 DRM_DEBUG("pid = %d, device = 0x%lx, open_count = %d\n",
52212 task_pid_nr(current),
52213 (long)old_encode_dev(file_priv->minor->device),
52214 @@ -30153,57 +26445,80 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_fops.c linux-2.6.32.48/drivers/gp
52215
52216 /* if the master has gone away we can't do anything with the lock */
52217 if (file_priv->minor->master)
52218 -@@ -524,9 +524,9 @@ int drm_release(struct inode *inode, str
52219 +@@ -565,8 +565,8 @@ int drm_release(struct inode *inode, str
52220 * End inline drm_release
52221 */
52222
52223 - atomic_inc(&dev->counts[_DRM_STAT_CLOSES]);
52224 -+ atomic_inc_unchecked(&dev->counts[_DRM_STAT_CLOSES]);
52225 - spin_lock(&dev->count_lock);
52226 - if (!--dev->open_count) {
52227 ++ atomic_inc_unchecked(&dev->counts[_DRM_STAT_CLOSES]);
52228 + if (local_dec_and_test(&dev->open_count)) {
52229 if (atomic_read(&dev->ioctl_count)) {
52230 DRM_ERROR("Device busy: %d\n",
52231 atomic_read(&dev->ioctl_count));
52232 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_gem.c linux-2.6.32.48/drivers/gpu/drm/drm_gem.c
52233 ---- linux-2.6.32.48/drivers/gpu/drm/drm_gem.c 2011-11-12 12:44:28.000000000 -0500
52234 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_gem.c 2011-11-12 12:46:45.000000000 -0500
52235 -@@ -83,11 +83,11 @@ drm_gem_init(struct drm_device *dev)
52236 - spin_lock_init(&dev->object_name_lock);
52237 - idr_init(&dev->object_name_idr);
52238 - atomic_set(&dev->object_count, 0);
52239 -- atomic_set(&dev->object_memory, 0);
52240 -+ atomic_set_unchecked(&dev->object_memory, 0);
52241 - atomic_set(&dev->pin_count, 0);
52242 -- atomic_set(&dev->pin_memory, 0);
52243 -+ atomic_set_unchecked(&dev->pin_memory, 0);
52244 - atomic_set(&dev->gtt_count, 0);
52245 -- atomic_set(&dev->gtt_memory, 0);
52246 -+ atomic_set_unchecked(&dev->gtt_memory, 0);
52247 -
52248 - mm = kzalloc(sizeof(struct drm_gem_mm), GFP_KERNEL);
52249 - if (!mm) {
52250 -@@ -150,7 +150,7 @@ drm_gem_object_alloc(struct drm_device *
52251 - goto fput;
52252 - }
52253 - atomic_inc(&dev->object_count);
52254 -- atomic_add(obj->size, &dev->object_memory);
52255 -+ atomic_add_unchecked(obj->size, &dev->object_memory);
52256 - return obj;
52257 - fput:
52258 - fput(obj->filp);
52259 -@@ -429,7 +429,7 @@ drm_gem_object_free(struct kref *kref)
52260 -
52261 - fput(obj->filp);
52262 - atomic_dec(&dev->object_count);
52263 -- atomic_sub(obj->size, &dev->object_memory);
52264 -+ atomic_sub_unchecked(obj->size, &dev->object_memory);
52265 - kfree(obj);
52266 - }
52267 - EXPORT_SYMBOL(drm_gem_object_free);
52268 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_info.c linux-2.6.32.48/drivers/gpu/drm/drm_info.c
52269 ---- linux-2.6.32.48/drivers/gpu/drm/drm_info.c 2009-12-02 22:51:21.000000000 -0500
52270 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_info.c 2011-11-12 12:46:45.000000000 -0500
52271 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_global.c linux-3.0.8/drivers/gpu/drm/drm_global.c
52272 +--- linux-3.0.8/drivers/gpu/drm/drm_global.c 2011-07-21 22:17:23.000000000 -0400
52273 ++++ linux-3.0.8/drivers/gpu/drm/drm_global.c 2011-08-23 21:47:55.000000000 -0400
52274 +@@ -36,7 +36,7 @@
52275 + struct drm_global_item {
52276 + struct mutex mutex;
52277 + void *object;
52278 +- int refcount;
52279 ++ atomic_t refcount;
52280 + };
52281 +
52282 + static struct drm_global_item glob[DRM_GLOBAL_NUM];
52283 +@@ -49,7 +49,7 @@ void drm_global_init(void)
52284 + struct drm_global_item *item = &glob[i];
52285 + mutex_init(&item->mutex);
52286 + item->object = NULL;
52287 +- item->refcount = 0;
52288 ++ atomic_set(&item->refcount, 0);
52289 + }
52290 + }
52291 +
52292 +@@ -59,7 +59,7 @@ void drm_global_release(void)
52293 + for (i = 0; i < DRM_GLOBAL_NUM; ++i) {
52294 + struct drm_global_item *item = &glob[i];
52295 + BUG_ON(item->object != NULL);
52296 +- BUG_ON(item->refcount != 0);
52297 ++ BUG_ON(atomic_read(&item->refcount) != 0);
52298 + }
52299 + }
52300 +
52301 +@@ -70,7 +70,7 @@ int drm_global_item_ref(struct drm_globa
52302 + void *object;
52303 +
52304 + mutex_lock(&item->mutex);
52305 +- if (item->refcount == 0) {
52306 ++ if (atomic_read(&item->refcount) == 0) {
52307 + item->object = kzalloc(ref->size, GFP_KERNEL);
52308 + if (unlikely(item->object == NULL)) {
52309 + ret = -ENOMEM;
52310 +@@ -83,7 +83,7 @@ int drm_global_item_ref(struct drm_globa
52311 + goto out_err;
52312 +
52313 + }
52314 +- ++item->refcount;
52315 ++ atomic_inc(&item->refcount);
52316 + ref->object = item->object;
52317 + object = item->object;
52318 + mutex_unlock(&item->mutex);
52319 +@@ -100,9 +100,9 @@ void drm_global_item_unref(struct drm_gl
52320 + struct drm_global_item *item = &glob[ref->global_type];
52321 +
52322 + mutex_lock(&item->mutex);
52323 +- BUG_ON(item->refcount == 0);
52324 ++ BUG_ON(atomic_read(&item->refcount) == 0);
52325 + BUG_ON(ref->object != item->object);
52326 +- if (--item->refcount == 0) {
52327 ++ if (atomic_dec_and_test(&item->refcount)) {
52328 + ref->release(ref);
52329 + item->object = NULL;
52330 + }
52331 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_info.c linux-3.0.8/drivers/gpu/drm/drm_info.c
52332 +--- linux-3.0.8/drivers/gpu/drm/drm_info.c 2011-07-21 22:17:23.000000000 -0400
52333 ++++ linux-3.0.8/drivers/gpu/drm/drm_info.c 2011-08-23 21:48:14.000000000 -0400
52334 @@ -75,10 +75,14 @@ int drm_vm_info(struct seq_file *m, void
52335 struct drm_local_map *map;
52336 struct drm_map_list *r_list;
52337 @@ -30232,46 +26547,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_info.c linux-2.6.32.48/drivers/gp
52338 type = "??";
52339 else
52340 type = types[map->type];
52341 -@@ -265,10 +269,10 @@ int drm_gem_object_info(struct seq_file
52342 - struct drm_device *dev = node->minor->dev;
52343 -
52344 - seq_printf(m, "%d objects\n", atomic_read(&dev->object_count));
52345 -- seq_printf(m, "%d object bytes\n", atomic_read(&dev->object_memory));
52346 -+ seq_printf(m, "%d object bytes\n", atomic_read_unchecked(&dev->object_memory));
52347 - seq_printf(m, "%d pinned\n", atomic_read(&dev->pin_count));
52348 -- seq_printf(m, "%d pin bytes\n", atomic_read(&dev->pin_memory));
52349 -- seq_printf(m, "%d gtt bytes\n", atomic_read(&dev->gtt_memory));
52350 -+ seq_printf(m, "%d pin bytes\n", atomic_read_unchecked(&dev->pin_memory));
52351 -+ seq_printf(m, "%d gtt bytes\n", atomic_read_unchecked(&dev->gtt_memory));
52352 - seq_printf(m, "%d gtt total\n", dev->gtt_total);
52353 - return 0;
52354 - }
52355 -@@ -288,7 +292,11 @@ int drm_vma_info(struct seq_file *m, voi
52356 - mutex_lock(&dev->struct_mutex);
52357 - seq_printf(m, "vma use count: %d, high_memory = %p, 0x%08llx\n",
52358 - atomic_read(&dev->vma_count),
52359 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
52360 -+ NULL, 0);
52361 -+#else
52362 - high_memory, (u64)virt_to_phys(high_memory));
52363 -+#endif
52364 -
52365 - list_for_each_entry(pt, &dev->vmalist, head) {
52366 - vma = pt->vma;
52367 -@@ -296,14 +304,23 @@ int drm_vma_info(struct seq_file *m, voi
52368 - continue;
52369 - seq_printf(m,
52370 - "\n%5d 0x%08lx-0x%08lx %c%c%c%c%c%c 0x%08lx000",
52371 -- pt->pid, vma->vm_start, vma->vm_end,
52372 -+ pt->pid,
52373 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
52374 -+ 0, 0,
52375 -+#else
52376 -+ vma->vm_start, vma->vm_end,
52377 -+#endif
52378 - vma->vm_flags & VM_READ ? 'r' : '-',
52379 - vma->vm_flags & VM_WRITE ? 'w' : '-',
52380 - vma->vm_flags & VM_EXEC ? 'x' : '-',
52381 +@@ -290,7 +294,11 @@ int drm_vma_info(struct seq_file *m, voi
52382 vma->vm_flags & VM_MAYSHARE ? 's' : 'p',
52383 vma->vm_flags & VM_LOCKED ? 'l' : '-',
52384 vma->vm_flags & VM_IO ? 'i' : '-',
52385 @@ -30283,10 +26559,10 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_info.c linux-2.6.32.48/drivers/gp
52386
52387 #if defined(__i386__)
52388 pgprot = pgprot_val(vma->vm_page_prot);
52389 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c
52390 ---- linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c 2009-12-02 22:51:21.000000000 -0500
52391 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c 2011-11-12 12:46:45.000000000 -0500
52392 -@@ -463,7 +463,7 @@ static int compat_drm_infobufs(struct fi
52393 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_ioc32.c linux-3.0.8/drivers/gpu/drm/drm_ioc32.c
52394 +--- linux-3.0.8/drivers/gpu/drm/drm_ioc32.c 2011-07-21 22:17:23.000000000 -0400
52395 ++++ linux-3.0.8/drivers/gpu/drm/drm_ioc32.c 2011-10-06 04:17:55.000000000 -0400
52396 +@@ -455,7 +455,7 @@ static int compat_drm_infobufs(struct fi
52397 request = compat_alloc_user_space(nbytes);
52398 if (!access_ok(VERIFY_WRITE, request, nbytes))
52399 return -EFAULT;
52400 @@ -30295,7 +26571,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c linux-2.6.32.48/drivers/g
52401
52402 if (__put_user(count, &request->count)
52403 || __put_user(list, &request->list))
52404 -@@ -525,7 +525,7 @@ static int compat_drm_mapbufs(struct fil
52405 +@@ -516,7 +516,7 @@ static int compat_drm_mapbufs(struct fil
52406 request = compat_alloc_user_space(nbytes);
52407 if (!access_ok(VERIFY_WRITE, request, nbytes))
52408 return -EFAULT;
52409 @@ -30304,10 +26580,10 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioc32.c linux-2.6.32.48/drivers/g
52410
52411 if (__put_user(count, &request->count)
52412 || __put_user(list, &request->list))
52413 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c
52414 ---- linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c 2009-12-02 22:51:21.000000000 -0500
52415 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c 2011-11-12 12:46:45.000000000 -0500
52416 -@@ -283,7 +283,7 @@ int drm_getstats(struct drm_device *dev,
52417 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_ioctl.c linux-3.0.8/drivers/gpu/drm/drm_ioctl.c
52418 +--- linux-3.0.8/drivers/gpu/drm/drm_ioctl.c 2011-07-21 22:17:23.000000000 -0400
52419 ++++ linux-3.0.8/drivers/gpu/drm/drm_ioctl.c 2011-08-23 21:47:55.000000000 -0400
52420 +@@ -256,7 +256,7 @@ int drm_getstats(struct drm_device *dev,
52421 stats->data[i].value =
52422 (file_priv->master->lock.hw_lock ? file_priv->master->lock.hw_lock->lock : 0);
52423 else
52424 @@ -30316,10 +26592,10 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_ioctl.c linux-2.6.32.48/drivers/g
52425 stats->data[i].type = dev->types[i];
52426 }
52427
52428 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_lock.c linux-2.6.32.48/drivers/gpu/drm/drm_lock.c
52429 ---- linux-2.6.32.48/drivers/gpu/drm/drm_lock.c 2009-12-02 22:51:21.000000000 -0500
52430 -+++ linux-2.6.32.48/drivers/gpu/drm/drm_lock.c 2011-11-12 12:46:45.000000000 -0500
52431 -@@ -87,7 +87,7 @@ int drm_lock(struct drm_device *dev, voi
52432 +diff -urNp linux-3.0.8/drivers/gpu/drm/drm_lock.c linux-3.0.8/drivers/gpu/drm/drm_lock.c
52433 +--- linux-3.0.8/drivers/gpu/drm/drm_lock.c 2011-07-21 22:17:23.000000000 -0400
52434 ++++ linux-3.0.8/drivers/gpu/drm/drm_lock.c 2011-08-23 21:47:55.000000000 -0400
52435 +@@ -89,7 +89,7 @@ int drm_lock(struct drm_device *dev, voi
52436 if (drm_lock_take(&master->lock, lock->context)) {
52437 master->lock.file_priv = file_priv;
52438 master->lock.lock_time = jiffies;
52439 @@ -30328,19 +26604,19 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/drm_lock.c linux-2.6.32.48/drivers/gp
52440 break; /* Got lock */
52441 }
52442
52443 -@@ -165,7 +165,7 @@ int drm_unlock(struct drm_device *dev, v
52444 +@@ -160,7 +160,7 @@ int drm_unlock(struct drm_device *dev, v
52445 return -EINVAL;
52446 }
52447
52448 - atomic_inc(&dev->counts[_DRM_STAT_UNLOCKS]);
52449 + atomic_inc_unchecked(&dev->counts[_DRM_STAT_UNLOCKS]);
52450
52451 - /* kernel_context_switch isn't used by any of the x86 drm
52452 - * modules but is required by the Sparc driver.
52453 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c
52454 ---- linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c 2009-12-02 22:51:21.000000000 -0500
52455 -+++ linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c 2011-11-12 12:46:45.000000000 -0500
52456 -@@ -952,8 +952,8 @@ static int i810_dma_vertex(struct drm_de
52457 + if (drm_lock_free(&master->lock, lock->context)) {
52458 + /* FIXME: Should really bail out here. */
52459 +diff -urNp linux-3.0.8/drivers/gpu/drm/i810/i810_dma.c linux-3.0.8/drivers/gpu/drm/i810/i810_dma.c
52460 +--- linux-3.0.8/drivers/gpu/drm/i810/i810_dma.c 2011-07-21 22:17:23.000000000 -0400
52461 ++++ linux-3.0.8/drivers/gpu/drm/i810/i810_dma.c 2011-08-23 21:47:55.000000000 -0400
52462 +@@ -950,8 +950,8 @@ static int i810_dma_vertex(struct drm_de
52463 dma->buflist[vertex->idx],
52464 vertex->discard, vertex->used);
52465
52466 @@ -30351,7 +26627,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c linux-2.6.32.48/drive
52467 sarea_priv->last_enqueue = dev_priv->counter - 1;
52468 sarea_priv->last_dispatch = (int)hw_status[5];
52469
52470 -@@ -1115,8 +1115,8 @@ static int i810_dma_mc(struct drm_device
52471 +@@ -1111,8 +1111,8 @@ static int i810_dma_mc(struct drm_device
52472 i810_dma_dispatch_mc(dev, dma->buflist[mc->idx], mc->used,
52473 mc->last_render);
52474
52475 @@ -30362,9 +26638,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_dma.c linux-2.6.32.48/drive
52476 sarea_priv->last_enqueue = dev_priv->counter - 1;
52477 sarea_priv->last_dispatch = (int)hw_status[5];
52478
52479 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h
52480 ---- linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h 2009-12-02 22:51:21.000000000 -0500
52481 -+++ linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h 2011-11-12 12:46:45.000000000 -0500
52482 +diff -urNp linux-3.0.8/drivers/gpu/drm/i810/i810_drv.h linux-3.0.8/drivers/gpu/drm/i810/i810_drv.h
52483 +--- linux-3.0.8/drivers/gpu/drm/i810/i810_drv.h 2011-07-21 22:17:23.000000000 -0400
52484 ++++ linux-3.0.8/drivers/gpu/drm/i810/i810_drv.h 2011-08-23 21:47:55.000000000 -0400
52485 @@ -108,8 +108,8 @@ typedef struct drm_i810_private {
52486 int page_flipping;
52487
52488 @@ -30376,316 +26652,121 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i810/i810_drv.h linux-2.6.32.48/drive
52489
52490 int front_offset;
52491 } drm_i810_private_t;
52492 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h
52493 ---- linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h 2009-12-02 22:51:21.000000000 -0500
52494 -+++ linux-2.6.32.48/drivers/gpu/drm/i830/i830_drv.h 2011-11-12 12:46:45.000000000 -0500
52495 -@@ -115,8 +115,8 @@ typedef struct drm_i830_private {
52496 - int page_flipping;
52497 -
52498 - wait_queue_head_t irq_queue;
52499 -- atomic_t irq_received;
52500 -- atomic_t irq_emitted;
52501 -+ atomic_unchecked_t irq_received;
52502 -+ atomic_unchecked_t irq_emitted;
52503 -
52504 - int use_mi_batchbuffer_start;
52505 -
52506 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c
52507 ---- linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c 2009-12-02 22:51:21.000000000 -0500
52508 -+++ linux-2.6.32.48/drivers/gpu/drm/i830/i830_irq.c 2011-11-12 12:46:45.000000000 -0500
52509 -@@ -47,7 +47,7 @@ irqreturn_t i830_driver_irq_handler(DRM_
52510 -
52511 - I830_WRITE16(I830REG_INT_IDENTITY_R, temp);
52512 -
52513 -- atomic_inc(&dev_priv->irq_received);
52514 -+ atomic_inc_unchecked(&dev_priv->irq_received);
52515 - wake_up_interruptible(&dev_priv->irq_queue);
52516 -
52517 - return IRQ_HANDLED;
52518 -@@ -60,14 +60,14 @@ static int i830_emit_irq(struct drm_devi
52519 -
52520 - DRM_DEBUG("%s\n", __func__);
52521 -
52522 -- atomic_inc(&dev_priv->irq_emitted);
52523 -+ atomic_inc_unchecked(&dev_priv->irq_emitted);
52524 -
52525 - BEGIN_LP_RING(2);
52526 - OUT_RING(0);
52527 - OUT_RING(GFX_OP_USER_INTERRUPT);
52528 - ADVANCE_LP_RING();
52529 -
52530 -- return atomic_read(&dev_priv->irq_emitted);
52531 -+ return atomic_read_unchecked(&dev_priv->irq_emitted);
52532 - }
52533 -
52534 - static int i830_wait_irq(struct drm_device * dev, int irq_nr)
52535 -@@ -79,7 +79,7 @@ static int i830_wait_irq(struct drm_devi
52536 -
52537 - DRM_DEBUG("%s\n", __func__);
52538 -
52539 -- if (atomic_read(&dev_priv->irq_received) >= irq_nr)
52540 -+ if (atomic_read_unchecked(&dev_priv->irq_received) >= irq_nr)
52541 - return 0;
52542 -
52543 - dev_priv->sarea_priv->perf_boxes |= I830_BOX_WAIT;
52544 -@@ -88,7 +88,7 @@ static int i830_wait_irq(struct drm_devi
52545 -
52546 - for (;;) {
52547 - __set_current_state(TASK_INTERRUPTIBLE);
52548 -- if (atomic_read(&dev_priv->irq_received) >= irq_nr)
52549 -+ if (atomic_read_unchecked(&dev_priv->irq_received) >= irq_nr)
52550 - break;
52551 - if ((signed)(end - jiffies) <= 0) {
52552 - DRM_ERROR("timeout iir %x imr %x ier %x hwstam %x\n",
52553 -@@ -163,8 +163,8 @@ void i830_driver_irq_preinstall(struct d
52554 - I830_WRITE16(I830REG_HWSTAM, 0xffff);
52555 - I830_WRITE16(I830REG_INT_MASK_R, 0x0);
52556 - I830_WRITE16(I830REG_INT_ENABLE_R, 0x0);
52557 -- atomic_set(&dev_priv->irq_received, 0);
52558 -- atomic_set(&dev_priv->irq_emitted, 0);
52559 -+ atomic_set_unchecked(&dev_priv->irq_received, 0);
52560 -+ atomic_set_unchecked(&dev_priv->irq_emitted, 0);
52561 - init_waitqueue_head(&dev_priv->irq_queue);
52562 - }
52563 -
52564 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c
52565 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c 2009-12-02 22:51:21.000000000 -0500
52566 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7017.c 2011-11-12 12:46:45.000000000 -0500
52567 -@@ -443,7 +443,7 @@ static void ch7017_destroy(struct intel_
52568 - }
52569 - }
52570 -
52571 --struct intel_dvo_dev_ops ch7017_ops = {
52572 -+const struct intel_dvo_dev_ops ch7017_ops = {
52573 - .init = ch7017_init,
52574 - .detect = ch7017_detect,
52575 - .mode_valid = ch7017_mode_valid,
52576 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c
52577 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c 2009-12-02 22:51:21.000000000 -0500
52578 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ch7xxx.c 2011-11-12 12:46:45.000000000 -0500
52579 -@@ -356,7 +356,7 @@ static void ch7xxx_destroy(struct intel_
52580 - }
52581 - }
52582 -
52583 --struct intel_dvo_dev_ops ch7xxx_ops = {
52584 -+const struct intel_dvo_dev_ops ch7xxx_ops = {
52585 - .init = ch7xxx_init,
52586 - .detect = ch7xxx_detect,
52587 - .mode_valid = ch7xxx_mode_valid,
52588 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h
52589 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h 2009-12-02 22:51:21.000000000 -0500
52590 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo.h 2011-11-12 12:46:45.000000000 -0500
52591 -@@ -135,23 +135,23 @@ struct intel_dvo_dev_ops {
52592 - *
52593 - * \return singly-linked list of modes or NULL if no modes found.
52594 - */
52595 -- struct drm_display_mode *(*get_modes)(struct intel_dvo_device *dvo);
52596 -+ struct drm_display_mode *(* const get_modes)(struct intel_dvo_device *dvo);
52597 -
52598 - /**
52599 - * Clean up driver-specific bits of the output
52600 - */
52601 -- void (*destroy) (struct intel_dvo_device *dvo);
52602 -+ void (* const destroy) (struct intel_dvo_device *dvo);
52603 -
52604 - /**
52605 - * Debugging hook to dump device registers to log file
52606 - */
52607 -- void (*dump_regs)(struct intel_dvo_device *dvo);
52608 -+ void (* const dump_regs)(struct intel_dvo_device *dvo);
52609 - };
52610 -
52611 --extern struct intel_dvo_dev_ops sil164_ops;
52612 --extern struct intel_dvo_dev_ops ch7xxx_ops;
52613 --extern struct intel_dvo_dev_ops ivch_ops;
52614 --extern struct intel_dvo_dev_ops tfp410_ops;
52615 --extern struct intel_dvo_dev_ops ch7017_ops;
52616 -+extern const struct intel_dvo_dev_ops sil164_ops;
52617 -+extern const struct intel_dvo_dev_ops ch7xxx_ops;
52618 -+extern const struct intel_dvo_dev_ops ivch_ops;
52619 -+extern const struct intel_dvo_dev_ops tfp410_ops;
52620 -+extern const struct intel_dvo_dev_ops ch7017_ops;
52621 -
52622 - #endif /* _INTEL_DVO_H */
52623 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c
52624 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c 2009-12-02 22:51:21.000000000 -0500
52625 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_ivch.c 2011-11-12 12:46:45.000000000 -0500
52626 -@@ -430,7 +430,7 @@ static void ivch_destroy(struct intel_dv
52627 - }
52628 - }
52629 -
52630 --struct intel_dvo_dev_ops ivch_ops= {
52631 -+const struct intel_dvo_dev_ops ivch_ops= {
52632 - .init = ivch_init,
52633 - .dpms = ivch_dpms,
52634 - .save = ivch_save,
52635 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c
52636 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c 2009-12-02 22:51:21.000000000 -0500
52637 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_sil164.c 2011-11-12 12:46:45.000000000 -0500
52638 -@@ -290,7 +290,7 @@ static void sil164_destroy(struct intel_
52639 - }
52640 - }
52641 -
52642 --struct intel_dvo_dev_ops sil164_ops = {
52643 -+const struct intel_dvo_dev_ops sil164_ops = {
52644 - .init = sil164_init,
52645 - .detect = sil164_detect,
52646 - .mode_valid = sil164_mode_valid,
52647 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c
52648 ---- linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c 2011-11-12 12:44:28.000000000 -0500
52649 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/dvo_tfp410.c 2011-11-12 12:46:45.000000000 -0500
52650 -@@ -323,7 +323,7 @@ static void tfp410_destroy(struct intel_
52651 - }
52652 - }
52653 -
52654 --struct intel_dvo_dev_ops tfp410_ops = {
52655 -+const struct intel_dvo_dev_ops tfp410_ops = {
52656 - .init = tfp410_init,
52657 - .detect = tfp410_detect,
52658 - .mode_valid = tfp410_mode_valid,
52659 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c
52660 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-12 12:44:28.000000000 -0500
52661 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_debugfs.c 2011-11-12 12:46:45.000000000 -0500
52662 -@@ -192,7 +192,7 @@ static int i915_interrupt_info(struct se
52663 +diff -urNp linux-3.0.8/drivers/gpu/drm/i915/i915_debugfs.c linux-3.0.8/drivers/gpu/drm/i915/i915_debugfs.c
52664 +--- linux-3.0.8/drivers/gpu/drm/i915/i915_debugfs.c 2011-07-21 22:17:23.000000000 -0400
52665 ++++ linux-3.0.8/drivers/gpu/drm/i915/i915_debugfs.c 2011-10-06 04:17:55.000000000 -0400
52666 +@@ -497,7 +497,7 @@ static int i915_interrupt_info(struct se
52667 I915_READ(GTIMR));
52668 }
52669 seq_printf(m, "Interrupts received: %d\n",
52670 - atomic_read(&dev_priv->irq_received));
52671 + atomic_read_unchecked(&dev_priv->irq_received));
52672 - if (dev_priv->hw_status_page != NULL) {
52673 - seq_printf(m, "Current sequence: %d\n",
52674 - i915_get_gem_seqno(dev));
52675 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c
52676 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c 2011-11-12 12:44:28.000000000 -0500
52677 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.c 2011-11-12 12:46:45.000000000 -0500
52678 -@@ -285,7 +285,7 @@ i915_pci_resume(struct pci_dev *pdev)
52679 - return i915_resume(dev);
52680 - }
52681 -
52682 --static struct vm_operations_struct i915_gem_vm_ops = {
52683 -+static const struct vm_operations_struct i915_gem_vm_ops = {
52684 - .fault = i915_gem_fault,
52685 - .open = drm_gem_vm_open,
52686 - .close = drm_gem_vm_close,
52687 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h
52688 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h 2011-11-12 12:44:28.000000000 -0500
52689 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_drv.h 2011-11-12 12:46:45.000000000 -0500
52690 -@@ -168,7 +168,7 @@ struct drm_i915_display_funcs {
52691 + for (i = 0; i < I915_NUM_RINGS; i++) {
52692 + if (IS_GEN6(dev)) {
52693 + seq_printf(m, "Graphics Interrupt mask (%s): %08x\n",
52694 +@@ -1147,7 +1147,7 @@ static int i915_opregion(struct seq_file
52695 + return ret;
52696 +
52697 + if (opregion->header)
52698 +- seq_write(m, opregion->header, OPREGION_SIZE);
52699 ++ seq_write(m, (const void __force_kernel *)opregion->header, OPREGION_SIZE);
52700 +
52701 + mutex_unlock(&dev->struct_mutex);
52702 +
52703 +diff -urNp linux-3.0.8/drivers/gpu/drm/i915/i915_dma.c linux-3.0.8/drivers/gpu/drm/i915/i915_dma.c
52704 +--- linux-3.0.8/drivers/gpu/drm/i915/i915_dma.c 2011-10-24 08:05:21.000000000 -0400
52705 ++++ linux-3.0.8/drivers/gpu/drm/i915/i915_dma.c 2011-08-23 21:47:55.000000000 -0400
52706 +@@ -1169,7 +1169,7 @@ static bool i915_switcheroo_can_switch(s
52707 + bool can_switch;
52708 +
52709 + spin_lock(&dev->count_lock);
52710 +- can_switch = (dev->open_count == 0);
52711 ++ can_switch = (local_read(&dev->open_count) == 0);
52712 + spin_unlock(&dev->count_lock);
52713 + return can_switch;
52714 + }
52715 +diff -urNp linux-3.0.8/drivers/gpu/drm/i915/i915_drv.h linux-3.0.8/drivers/gpu/drm/i915/i915_drv.h
52716 +--- linux-3.0.8/drivers/gpu/drm/i915/i915_drv.h 2011-07-21 22:17:23.000000000 -0400
52717 ++++ linux-3.0.8/drivers/gpu/drm/i915/i915_drv.h 2011-08-23 21:47:55.000000000 -0400
52718 +@@ -219,7 +219,7 @@ struct drm_i915_display_funcs {
52719 + /* render clock increase/decrease */
52720 /* display clock increase/decrease */
52721 /* pll clock increase/decrease */
52722 - /* clock gating init */
52723 -};
52724 +} __no_const;
52725
52726 - typedef struct drm_i915_private {
52727 - struct drm_device *dev;
52728 -@@ -197,7 +197,7 @@ typedef struct drm_i915_private {
52729 + struct intel_device_info {
52730 + u8 gen;
52731 +@@ -300,7 +300,7 @@ typedef struct drm_i915_private {
52732 + int current_page;
52733 int page_flipping;
52734
52735 - wait_queue_head_t irq_queue;
52736 - atomic_t irq_received;
52737 + atomic_unchecked_t irq_received;
52738 - /** Protects user_irq_refcount and irq_mask_reg */
52739 - spinlock_t user_irq_lock;
52740 - /** Refcount for i915_user_irq_get() versus i915_user_irq_put(). */
52741 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c
52742 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c 2011-11-12 12:44:28.000000000 -0500
52743 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_gem.c 2011-11-12 12:46:45.000000000 -0500
52744 -@@ -102,7 +102,7 @@ i915_gem_get_aperture_ioctl(struct drm_d
52745 -
52746 - args->aper_size = dev->gtt_total;
52747 - args->aper_available_size = (args->aper_size -
52748 -- atomic_read(&dev->pin_memory));
52749 -+ atomic_read_unchecked(&dev->pin_memory));
52750
52751 - return 0;
52752 - }
52753 -@@ -492,6 +492,11 @@ i915_gem_pread_ioctl(struct drm_device *
52754 - return -EINVAL;
52755 - }
52756 + /* protects the irq masks */
52757 + spinlock_t irq_lock;
52758 +@@ -874,7 +874,7 @@ struct drm_i915_gem_object {
52759 + * will be page flipped away on the next vblank. When it
52760 + * reaches 0, dev_priv->pending_flip_queue will be woken up.
52761 + */
52762 +- atomic_t pending_flip;
52763 ++ atomic_unchecked_t pending_flip;
52764 + };
52765
52766 -+ if (!access_ok(VERIFY_WRITE, (char __user *) (uintptr_t)args->data_ptr, args->size)) {
52767 -+ drm_gem_object_unreference(obj);
52768 -+ return -EFAULT;
52769 -+ }
52770 -+
52771 - if (i915_gem_object_needs_bit17_swizzle(obj)) {
52772 - ret = i915_gem_shmem_pread_slow(dev, obj, args, file_priv);
52773 - } else {
52774 -@@ -965,6 +970,11 @@ i915_gem_pwrite_ioctl(struct drm_device
52775 - return -EINVAL;
52776 - }
52777 + #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
52778 +@@ -1247,7 +1247,7 @@ extern int intel_setup_gmbus(struct drm_
52779 + extern void intel_teardown_gmbus(struct drm_device *dev);
52780 + extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed);
52781 + extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
52782 +-extern inline bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter)
52783 ++static inline bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter)
52784 + {
52785 + return container_of(adapter, struct intel_gmbus, adapter)->force_bit;
52786 + }
52787 +diff -urNp linux-3.0.8/drivers/gpu/drm/i915/i915_gem_execbuffer.c linux-3.0.8/drivers/gpu/drm/i915/i915_gem_execbuffer.c
52788 +--- linux-3.0.8/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2011-07-21 22:17:23.000000000 -0400
52789 ++++ linux-3.0.8/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2011-08-23 21:47:55.000000000 -0400
52790 +@@ -188,7 +188,7 @@ i915_gem_object_set_to_gpu_domain(struct
52791 + i915_gem_clflush_object(obj);
52792 +
52793 + if (obj->base.pending_write_domain)
52794 +- cd->flips |= atomic_read(&obj->pending_flip);
52795 ++ cd->flips |= atomic_read_unchecked(&obj->pending_flip);
52796 +
52797 + /* The actual obj->write_domain will be updated with
52798 + * pending_write_domain after we emit the accumulated flush for all
52799 +diff -urNp linux-3.0.8/drivers/gpu/drm/i915/i915_irq.c linux-3.0.8/drivers/gpu/drm/i915/i915_irq.c
52800 +--- linux-3.0.8/drivers/gpu/drm/i915/i915_irq.c 2011-10-24 08:05:21.000000000 -0400
52801 ++++ linux-3.0.8/drivers/gpu/drm/i915/i915_irq.c 2011-08-23 21:47:55.000000000 -0400
52802 +@@ -473,7 +473,7 @@ static irqreturn_t ivybridge_irq_handler
52803 + u32 de_iir, gt_iir, de_ier, pch_iir, pm_iir;
52804 + struct drm_i915_master_private *master_priv;
52805
52806 -+ if (!access_ok(VERIFY_READ, (char __user *) (uintptr_t)args->data_ptr, args->size)) {
52807 -+ drm_gem_object_unreference(obj);
52808 -+ return -EFAULT;
52809 -+ }
52810 -+
52811 - /* We can only do the GTT pwrite on untiled buffers, as otherwise
52812 - * it would end up going through the fenced access, and we'll get
52813 - * different detiling behavior between reading and writing.
52814 -@@ -2054,7 +2064,7 @@ i915_gem_object_unbind(struct drm_gem_ob
52815 -
52816 - if (obj_priv->gtt_space) {
52817 - atomic_dec(&dev->gtt_count);
52818 -- atomic_sub(obj->size, &dev->gtt_memory);
52819 -+ atomic_sub_unchecked(obj->size, &dev->gtt_memory);
52820 -
52821 - drm_mm_put_block(obj_priv->gtt_space);
52822 - obj_priv->gtt_space = NULL;
52823 -@@ -2697,7 +2707,7 @@ i915_gem_object_bind_to_gtt(struct drm_g
52824 - goto search_free;
52825 - }
52826 - atomic_inc(&dev->gtt_count);
52827 -- atomic_add(obj->size, &dev->gtt_memory);
52828 -+ atomic_add_unchecked(obj->size, &dev->gtt_memory);
52829 -
52830 - /* Assert that the object is not currently in any GPU domain. As it
52831 - * wasn't in the GTT, there shouldn't be any way it could have been in
52832 -@@ -3751,9 +3761,9 @@ i915_gem_execbuffer(struct drm_device *d
52833 - "%d/%d gtt bytes\n",
52834 - atomic_read(&dev->object_count),
52835 - atomic_read(&dev->pin_count),
52836 -- atomic_read(&dev->object_memory),
52837 -- atomic_read(&dev->pin_memory),
52838 -- atomic_read(&dev->gtt_memory),
52839 -+ atomic_read_unchecked(&dev->object_memory),
52840 -+ atomic_read_unchecked(&dev->pin_memory),
52841 -+ atomic_read_unchecked(&dev->gtt_memory),
52842 - dev->gtt_total);
52843 - }
52844 - goto err;
52845 -@@ -3985,7 +3995,7 @@ i915_gem_object_pin(struct drm_gem_objec
52846 - */
52847 - if (obj_priv->pin_count == 1) {
52848 - atomic_inc(&dev->pin_count);
52849 -- atomic_add(obj->size, &dev->pin_memory);
52850 -+ atomic_add_unchecked(obj->size, &dev->pin_memory);
52851 - if (!obj_priv->active &&
52852 - (obj->write_domain & I915_GEM_GPU_DOMAINS) == 0 &&
52853 - !list_empty(&obj_priv->list))
52854 -@@ -4018,7 +4028,7 @@ i915_gem_object_unpin(struct drm_gem_obj
52855 - list_move_tail(&obj_priv->list,
52856 - &dev_priv->mm.inactive_list);
52857 - atomic_dec(&dev->pin_count);
52858 -- atomic_sub(obj->size, &dev->pin_memory);
52859 -+ atomic_sub_unchecked(obj->size, &dev->pin_memory);
52860 - }
52861 - i915_verify_inactive(dev, __FILE__, __LINE__);
52862 - }
52863 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c
52864 ---- linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c 2011-11-12 12:44:28.000000000 -0500
52865 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c 2011-11-12 12:46:45.000000000 -0500
52866 -@@ -528,7 +528,7 @@ irqreturn_t i915_driver_irq_handler(DRM_
52867 - int irq_received;
52868 - int ret = IRQ_NONE;
52869 +- atomic_inc(&dev_priv->irq_received);
52870 ++ atomic_inc_unchecked(&dev_priv->irq_received);
52871 +
52872 + /* disable master interrupt before clearing iir */
52873 + de_ier = I915_READ(DEIER);
52874 +@@ -563,7 +563,7 @@ static irqreturn_t ironlake_irq_handler(
52875 + struct drm_i915_master_private *master_priv;
52876 + u32 bsd_usr_interrupt = GT_BSD_USER_INTERRUPT;
52877
52878 - atomic_inc(&dev_priv->irq_received);
52879 + atomic_inc_unchecked(&dev_priv->irq_received);
52880
52881 - if (IS_IGDNG(dev))
52882 - return igdng_irq_handler(dev);
52883 -@@ -1021,7 +1021,7 @@ void i915_driver_irq_preinstall(struct d
52884 + if (IS_GEN6(dev))
52885 + bsd_usr_interrupt = GT_GEN6_BSD_USER_INTERRUPT;
52886 +@@ -1226,7 +1226,7 @@ static irqreturn_t i915_driver_irq_handl
52887 + int ret = IRQ_NONE, pipe;
52888 + bool blc_event = false;
52889 +
52890 +- atomic_inc(&dev_priv->irq_received);
52891 ++ atomic_inc_unchecked(&dev_priv->irq_received);
52892 +
52893 + iir = I915_READ(IIR);
52894 +
52895 +@@ -1735,7 +1735,7 @@ static void ironlake_irq_preinstall(stru
52896 {
52897 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
52898
52899 @@ -30694,23 +26775,66 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/i915_irq.c linux-2.6.32.48/drive
52900
52901 INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
52902 INIT_WORK(&dev_priv->error_work, i915_error_work_func);
52903 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c
52904 ---- linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c 2011-11-12 12:44:28.000000000 -0500
52905 -+++ linux-2.6.32.48/drivers/gpu/drm/i915/intel_sdvo.c 2011-11-12 12:46:45.000000000 -0500
52906 -@@ -2795,7 +2795,9 @@ bool intel_sdvo_init(struct drm_device *
52907 - sdvo_priv->slave_addr = intel_sdvo_get_slave_addr(dev, output_device);
52908 -
52909 - /* Save the bit-banging i2c functionality for use by the DDC wrapper */
52910 -- intel_sdvo_i2c_bit_algo.functionality = intel_output->i2c_bus->algo->functionality;
52911 -+ pax_open_kernel();
52912 -+ *(void **)&intel_sdvo_i2c_bit_algo.functionality = intel_output->i2c_bus->algo->functionality;
52913 -+ pax_close_kernel();
52914 +@@ -1899,7 +1899,7 @@ static void i915_driver_irq_preinstall(s
52915 + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
52916 + int pipe;
52917 +
52918 +- atomic_set(&dev_priv->irq_received, 0);
52919 ++ atomic_set_unchecked(&dev_priv->irq_received, 0);
52920 +
52921 + INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
52922 + INIT_WORK(&dev_priv->error_work, i915_error_work_func);
52923 +diff -urNp linux-3.0.8/drivers/gpu/drm/i915/intel_display.c linux-3.0.8/drivers/gpu/drm/i915/intel_display.c
52924 +--- linux-3.0.8/drivers/gpu/drm/i915/intel_display.c 2011-10-24 08:05:21.000000000 -0400
52925 ++++ linux-3.0.8/drivers/gpu/drm/i915/intel_display.c 2011-08-23 21:47:55.000000000 -0400
52926 +@@ -1961,7 +1961,7 @@ intel_pipe_set_base(struct drm_crtc *crt
52927 +
52928 + wait_event(dev_priv->pending_flip_queue,
52929 + atomic_read(&dev_priv->mm.wedged) ||
52930 +- atomic_read(&obj->pending_flip) == 0);
52931 ++ atomic_read_unchecked(&obj->pending_flip) == 0);
52932 +
52933 + /* Big Hammer, we also need to ensure that any pending
52934 + * MI_WAIT_FOR_EVENT inside a user batch buffer on the
52935 +@@ -2548,7 +2548,7 @@ static void intel_crtc_wait_for_pending_
52936 + obj = to_intel_framebuffer(crtc->fb)->obj;
52937 + dev_priv = crtc->dev->dev_private;
52938 + wait_event(dev_priv->pending_flip_queue,
52939 +- atomic_read(&obj->pending_flip) == 0);
52940 ++ atomic_read_unchecked(&obj->pending_flip) == 0);
52941 + }
52942 +
52943 + static bool intel_crtc_driving_pch(struct drm_crtc *crtc)
52944 +@@ -6225,7 +6225,7 @@ static void do_intel_finish_page_flip(st
52945 +
52946 + atomic_clear_mask(1 << intel_crtc->plane,
52947 + &obj->pending_flip.counter);
52948 +- if (atomic_read(&obj->pending_flip) == 0)
52949 ++ if (atomic_read_unchecked(&obj->pending_flip) == 0)
52950 + wake_up(&dev_priv->pending_flip_queue);
52951 +
52952 + schedule_work(&work->work);
52953 +@@ -6514,7 +6514,7 @@ static int intel_crtc_page_flip(struct d
52954 + /* Block clients from rendering to the new back buffer until
52955 + * the flip occurs and the object is no longer visible.
52956 + */
52957 +- atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
52958 ++ atomic_add_unchecked(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
52959 +
52960 + ret = dev_priv->display.queue_flip(dev, crtc, fb, obj);
52961 + if (ret)
52962 +@@ -6527,7 +6527,7 @@ static int intel_crtc_page_flip(struct d
52963 + return 0;
52964
52965 - /* Read the regs to test if we can talk to the device */
52966 - for (i = 0; i < 0x40; i++) {
52967 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h
52968 ---- linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h 2009-12-02 22:51:21.000000000 -0500
52969 -+++ linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h 2011-11-12 12:46:45.000000000 -0500
52970 + cleanup_pending:
52971 +- atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
52972 ++ atomic_sub_unchecked(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
52973 + cleanup_objs:
52974 + drm_gem_object_unreference(&work->old_fb_obj->base);
52975 + drm_gem_object_unreference(&obj->base);
52976 +diff -urNp linux-3.0.8/drivers/gpu/drm/mga/mga_drv.h linux-3.0.8/drivers/gpu/drm/mga/mga_drv.h
52977 +--- linux-3.0.8/drivers/gpu/drm/mga/mga_drv.h 2011-07-21 22:17:23.000000000 -0400
52978 ++++ linux-3.0.8/drivers/gpu/drm/mga/mga_drv.h 2011-08-23 21:47:55.000000000 -0400
52979 @@ -120,9 +120,9 @@ typedef struct drm_mga_private {
52980 u32 clear_cmd;
52981 u32 maccess;
52982 @@ -30723,9 +26847,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_drv.h linux-2.6.32.48/drivers
52983 u32 next_fence_to_post;
52984
52985 unsigned int fb_cpp;
52986 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c
52987 ---- linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c 2009-12-02 22:51:21.000000000 -0500
52988 -+++ linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c 2011-11-12 12:46:45.000000000 -0500
52989 +diff -urNp linux-3.0.8/drivers/gpu/drm/mga/mga_irq.c linux-3.0.8/drivers/gpu/drm/mga/mga_irq.c
52990 +--- linux-3.0.8/drivers/gpu/drm/mga/mga_irq.c 2011-07-21 22:17:23.000000000 -0400
52991 ++++ linux-3.0.8/drivers/gpu/drm/mga/mga_irq.c 2011-08-23 21:47:55.000000000 -0400
52992 @@ -44,7 +44,7 @@ u32 mga_get_vblank_counter(struct drm_de
52993 if (crtc != 0)
52994 return 0;
52995 @@ -30744,16 +26868,16 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c linux-2.6.32.48/drivers
52996 drm_handle_vblank(dev, 0);
52997 handled = 1;
52998 }
52999 -@@ -80,7 +80,7 @@ irqreturn_t mga_driver_irq_handler(DRM_I
53000 +@@ -79,7 +79,7 @@ irqreturn_t mga_driver_irq_handler(DRM_I
53001 + if ((prim_start & ~0x03) != (prim_end & ~0x03))
53002 MGA_WRITE(MGA_PRIMEND, prim_end);
53003 - }
53004
53005 - atomic_inc(&dev_priv->last_fence_retired);
53006 + atomic_inc_unchecked(&dev_priv->last_fence_retired);
53007 DRM_WAKEUP(&dev_priv->fence_queue);
53008 handled = 1;
53009 }
53010 -@@ -131,7 +131,7 @@ int mga_driver_fence_wait(struct drm_dev
53011 +@@ -130,7 +130,7 @@ int mga_driver_fence_wait(struct drm_dev
53012 * using fences.
53013 */
53014 DRM_WAIT_ON(ret, dev_priv->fence_queue, 3 * DRM_HZ,
53015 @@ -30762,9 +26886,142 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/mga/mga_irq.c linux-2.6.32.48/drivers
53016 - *sequence) <= (1 << 23)));
53017
53018 *sequence = cur_fence;
53019 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c
53020 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c 2009-12-02 22:51:21.000000000 -0500
53021 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c 2011-11-12 12:46:45.000000000 -0500
53022 +diff -urNp linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_bios.c linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_bios.c
53023 +--- linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_bios.c 2011-07-21 22:17:23.000000000 -0400
53024 ++++ linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_bios.c 2011-08-26 19:49:56.000000000 -0400
53025 +@@ -200,7 +200,7 @@ struct methods {
53026 + const char desc[8];
53027 + void (*loadbios)(struct drm_device *, uint8_t *);
53028 + const bool rw;
53029 +-};
53030 ++} __do_const;
53031 +
53032 + static struct methods shadow_methods[] = {
53033 + { "PRAMIN", load_vbios_pramin, true },
53034 +@@ -5488,7 +5488,7 @@ parse_bit_displayport_tbl_entry(struct d
53035 + struct bit_table {
53036 + const char id;
53037 + int (* const parse_fn)(struct drm_device *, struct nvbios *, struct bit_entry *);
53038 +-};
53039 ++} __no_const;
53040 +
53041 + #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry })
53042 +
53043 +diff -urNp linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_drv.h linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_drv.h
53044 +--- linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_drv.h 2011-07-21 22:17:23.000000000 -0400
53045 ++++ linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_drv.h 2011-08-23 21:47:55.000000000 -0400
53046 +@@ -227,7 +227,7 @@ struct nouveau_channel {
53047 + struct list_head pending;
53048 + uint32_t sequence;
53049 + uint32_t sequence_ack;
53050 +- atomic_t last_sequence_irq;
53051 ++ atomic_unchecked_t last_sequence_irq;
53052 + } fence;
53053 +
53054 + /* DMA push buffer */
53055 +@@ -304,7 +304,7 @@ struct nouveau_exec_engine {
53056 + u32 handle, u16 class);
53057 + void (*set_tile_region)(struct drm_device *dev, int i);
53058 + void (*tlb_flush)(struct drm_device *, int engine);
53059 +-};
53060 ++} __no_const;
53061 +
53062 + struct nouveau_instmem_engine {
53063 + void *priv;
53064 +@@ -325,13 +325,13 @@ struct nouveau_instmem_engine {
53065 + struct nouveau_mc_engine {
53066 + int (*init)(struct drm_device *dev);
53067 + void (*takedown)(struct drm_device *dev);
53068 +-};
53069 ++} __no_const;
53070 +
53071 + struct nouveau_timer_engine {
53072 + int (*init)(struct drm_device *dev);
53073 + void (*takedown)(struct drm_device *dev);
53074 + uint64_t (*read)(struct drm_device *dev);
53075 +-};
53076 ++} __no_const;
53077 +
53078 + struct nouveau_fb_engine {
53079 + int num_tiles;
53080 +@@ -494,7 +494,7 @@ struct nouveau_vram_engine {
53081 + void (*put)(struct drm_device *, struct nouveau_mem **);
53082 +
53083 + bool (*flags_valid)(struct drm_device *, u32 tile_flags);
53084 +-};
53085 ++} __no_const;
53086 +
53087 + struct nouveau_engine {
53088 + struct nouveau_instmem_engine instmem;
53089 +@@ -640,7 +640,7 @@ struct drm_nouveau_private {
53090 + struct drm_global_reference mem_global_ref;
53091 + struct ttm_bo_global_ref bo_global_ref;
53092 + struct ttm_bo_device bdev;
53093 +- atomic_t validate_sequence;
53094 ++ atomic_unchecked_t validate_sequence;
53095 + } ttm;
53096 +
53097 + struct {
53098 +diff -urNp linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_fence.c linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_fence.c
53099 +--- linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_fence.c 2011-07-21 22:17:23.000000000 -0400
53100 ++++ linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_fence.c 2011-08-23 21:47:55.000000000 -0400
53101 +@@ -85,7 +85,7 @@ nouveau_fence_update(struct nouveau_chan
53102 + if (USE_REFCNT(dev))
53103 + sequence = nvchan_rd32(chan, 0x48);
53104 + else
53105 +- sequence = atomic_read(&chan->fence.last_sequence_irq);
53106 ++ sequence = atomic_read_unchecked(&chan->fence.last_sequence_irq);
53107 +
53108 + if (chan->fence.sequence_ack == sequence)
53109 + goto out;
53110 +@@ -544,7 +544,7 @@ nouveau_fence_channel_init(struct nouvea
53111 +
53112 + INIT_LIST_HEAD(&chan->fence.pending);
53113 + spin_lock_init(&chan->fence.lock);
53114 +- atomic_set(&chan->fence.last_sequence_irq, 0);
53115 ++ atomic_set_unchecked(&chan->fence.last_sequence_irq, 0);
53116 + return 0;
53117 + }
53118 +
53119 +diff -urNp linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_gem.c linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_gem.c
53120 +--- linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_gem.c 2011-07-21 22:17:23.000000000 -0400
53121 ++++ linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_gem.c 2011-08-23 21:47:55.000000000 -0400
53122 +@@ -249,7 +249,7 @@ validate_init(struct nouveau_channel *ch
53123 + int trycnt = 0;
53124 + int ret, i;
53125 +
53126 +- sequence = atomic_add_return(1, &dev_priv->ttm.validate_sequence);
53127 ++ sequence = atomic_add_return_unchecked(1, &dev_priv->ttm.validate_sequence);
53128 + retry:
53129 + if (++trycnt > 100000) {
53130 + NV_ERROR(dev, "%s failed and gave up.\n", __func__);
53131 +diff -urNp linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_state.c linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_state.c
53132 +--- linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_state.c 2011-07-21 22:17:23.000000000 -0400
53133 ++++ linux-3.0.8/drivers/gpu/drm/nouveau/nouveau_state.c 2011-08-23 21:47:55.000000000 -0400
53134 +@@ -488,7 +488,7 @@ static bool nouveau_switcheroo_can_switc
53135 + bool can_switch;
53136 +
53137 + spin_lock(&dev->count_lock);
53138 +- can_switch = (dev->open_count == 0);
53139 ++ can_switch = (local_read(&dev->open_count) == 0);
53140 + spin_unlock(&dev->count_lock);
53141 + return can_switch;
53142 + }
53143 +diff -urNp linux-3.0.8/drivers/gpu/drm/nouveau/nv04_graph.c linux-3.0.8/drivers/gpu/drm/nouveau/nv04_graph.c
53144 +--- linux-3.0.8/drivers/gpu/drm/nouveau/nv04_graph.c 2011-07-21 22:17:23.000000000 -0400
53145 ++++ linux-3.0.8/drivers/gpu/drm/nouveau/nv04_graph.c 2011-08-23 21:47:55.000000000 -0400
53146 +@@ -560,7 +560,7 @@ static int
53147 + nv04_graph_mthd_set_ref(struct nouveau_channel *chan,
53148 + u32 class, u32 mthd, u32 data)
53149 + {
53150 +- atomic_set(&chan->fence.last_sequence_irq, data);
53151 ++ atomic_set_unchecked(&chan->fence.last_sequence_irq, data);
53152 + return 0;
53153 + }
53154 +
53155 +diff -urNp linux-3.0.8/drivers/gpu/drm/r128/r128_cce.c linux-3.0.8/drivers/gpu/drm/r128/r128_cce.c
53156 +--- linux-3.0.8/drivers/gpu/drm/r128/r128_cce.c 2011-07-21 22:17:23.000000000 -0400
53157 ++++ linux-3.0.8/drivers/gpu/drm/r128/r128_cce.c 2011-08-23 21:47:55.000000000 -0400
53158 @@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_d
53159
53160 /* GH: Simple idle check.
53161 @@ -30774,9 +27031,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_cce.c linux-2.6.32.48/drive
53162
53163 /* We don't support anything other than bus-mastering ring mode,
53164 * but the ring can be in either AGP or PCI space for the ring
53165 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h
53166 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h 2009-12-02 22:51:21.000000000 -0500
53167 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h 2011-11-12 12:46:45.000000000 -0500
53168 +diff -urNp linux-3.0.8/drivers/gpu/drm/r128/r128_drv.h linux-3.0.8/drivers/gpu/drm/r128/r128_drv.h
53169 +--- linux-3.0.8/drivers/gpu/drm/r128/r128_drv.h 2011-07-21 22:17:23.000000000 -0400
53170 ++++ linux-3.0.8/drivers/gpu/drm/r128/r128_drv.h 2011-08-23 21:47:55.000000000 -0400
53171 @@ -90,14 +90,14 @@ typedef struct drm_r128_private {
53172 int is_pci;
53173 unsigned long cce_buffers_offset;
53174 @@ -30794,9 +27051,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_drv.h linux-2.6.32.48/drive
53175
53176 u32 color_fmt;
53177 unsigned int front_offset;
53178 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c
53179 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c 2009-12-02 22:51:21.000000000 -0500
53180 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c 2011-11-12 12:46:45.000000000 -0500
53181 +diff -urNp linux-3.0.8/drivers/gpu/drm/r128/r128_irq.c linux-3.0.8/drivers/gpu/drm/r128/r128_irq.c
53182 +--- linux-3.0.8/drivers/gpu/drm/r128/r128_irq.c 2011-07-21 22:17:23.000000000 -0400
53183 ++++ linux-3.0.8/drivers/gpu/drm/r128/r128_irq.c 2011-08-23 21:47:55.000000000 -0400
53184 @@ -42,7 +42,7 @@ u32 r128_get_vblank_counter(struct drm_d
53185 if (crtc != 0)
53186 return 0;
53187 @@ -30815,26 +27072,26 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_irq.c linux-2.6.32.48/drive
53188 drm_handle_vblank(dev, 0);
53189 return IRQ_HANDLED;
53190 }
53191 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c
53192 ---- linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c 2009-12-02 22:51:21.000000000 -0500
53193 -+++ linux-2.6.32.48/drivers/gpu/drm/r128/r128_state.c 2011-11-12 12:46:45.000000000 -0500
53194 -@@ -323,10 +323,10 @@ static void r128_clear_box(drm_r128_priv
53195 +diff -urNp linux-3.0.8/drivers/gpu/drm/r128/r128_state.c linux-3.0.8/drivers/gpu/drm/r128/r128_state.c
53196 +--- linux-3.0.8/drivers/gpu/drm/r128/r128_state.c 2011-07-21 22:17:23.000000000 -0400
53197 ++++ linux-3.0.8/drivers/gpu/drm/r128/r128_state.c 2011-08-23 21:47:55.000000000 -0400
53198 +@@ -321,10 +321,10 @@ static void r128_clear_box(drm_r128_priv
53199
53200 - static void r128_cce_performance_boxes(drm_r128_private_t * dev_priv)
53201 + static void r128_cce_performance_boxes(drm_r128_private_t *dev_priv)
53202 {
53203 -- if (atomic_read(&dev_priv->idle_count) == 0) {
53204 -+ if (atomic_read_unchecked(&dev_priv->idle_count) == 0) {
53205 +- if (atomic_read(&dev_priv->idle_count) == 0)
53206 ++ if (atomic_read_unchecked(&dev_priv->idle_count) == 0)
53207 r128_clear_box(dev_priv, 64, 4, 8, 8, 0, 255, 0);
53208 - } else {
53209 + else
53210 - atomic_set(&dev_priv->idle_count, 0);
53211 + atomic_set_unchecked(&dev_priv->idle_count, 0);
53212 - }
53213 }
53214
53215 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c
53216 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c 2011-11-12 12:44:28.000000000 -0500
53217 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c 2011-11-12 12:46:45.000000000 -0500
53218 -@@ -1115,6 +1115,8 @@ struct atom_context *atom_parse(struct c
53219 + #endif
53220 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/atom.c linux-3.0.8/drivers/gpu/drm/radeon/atom.c
53221 +--- linux-3.0.8/drivers/gpu/drm/radeon/atom.c 2011-10-25 09:10:33.000000000 -0400
53222 ++++ linux-3.0.8/drivers/gpu/drm/radeon/atom.c 2011-10-25 09:10:41.000000000 -0400
53223 +@@ -1254,6 +1254,8 @@ struct atom_context *atom_parse(struct c
53224 char name[512];
53225 int i;
53226
53227 @@ -30843,9 +27100,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/atom.c linux-2.6.32.48/drivers
53228 ctx->card = card;
53229 ctx->bios = bios;
53230
53231 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c
53232 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c 2009-12-02 22:51:21.000000000 -0500
53233 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c 2011-11-12 12:46:45.000000000 -0500
53234 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/mkregtable.c linux-3.0.8/drivers/gpu/drm/radeon/mkregtable.c
53235 +--- linux-3.0.8/drivers/gpu/drm/radeon/mkregtable.c 2011-07-21 22:17:23.000000000 -0400
53236 ++++ linux-3.0.8/drivers/gpu/drm/radeon/mkregtable.c 2011-08-23 21:47:55.000000000 -0400
53237 @@ -637,14 +637,14 @@ static int parser_auth(struct table *t,
53238 regex_t mask_rex;
53239 regmatch_t match[4];
53240 @@ -30863,58 +27120,46 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/mkregtable.c linux-2.6.32.48/d
53241
53242 if (regcomp
53243 (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
53244 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c
53245 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-12 12:44:28.000000000 -0500
53246 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_atombios.c 2011-11-12 12:46:45.000000000 -0500
53247 -@@ -275,6 +275,8 @@ bool radeon_get_atom_connector_info_from
53248 - bool linkb;
53249 - struct radeon_i2c_bus_rec ddc_bus;
53250 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_atombios.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_atombios.c
53251 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_atombios.c 2011-07-21 22:17:23.000000000 -0400
53252 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_atombios.c 2011-08-23 21:48:14.000000000 -0400
53253 +@@ -545,6 +545,8 @@ bool radeon_get_atom_connector_info_from
53254 + struct radeon_gpio_rec gpio;
53255 + struct radeon_hpd hpd;
53256
53257 + pax_track_stack();
53258 +
53259 - atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset);
53260 + if (!atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset))
53261 + return false;
53262
53263 - if (data_offset == 0)
53264 -@@ -520,13 +522,13 @@ static uint16_t atombios_get_connector_o
53265 - }
53266 - }
53267 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_device.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_device.c
53268 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_device.c 2011-10-24 08:05:21.000000000 -0400
53269 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_device.c 2011-08-23 21:47:55.000000000 -0400
53270 +@@ -678,7 +678,7 @@ static bool radeon_switcheroo_can_switch
53271 + bool can_switch;
53272
53273 --struct bios_connector {
53274 -+static struct bios_connector {
53275 - bool valid;
53276 - uint16_t line_mux;
53277 - uint16_t devices;
53278 - int connector_type;
53279 - struct radeon_i2c_bus_rec ddc_bus;
53280 --};
53281 -+} bios_connectors[ATOM_MAX_SUPPORTED_DEVICE];
53282 + spin_lock(&dev->count_lock);
53283 +- can_switch = (dev->open_count == 0);
53284 ++ can_switch = (local_read(&dev->open_count) == 0);
53285 + spin_unlock(&dev->count_lock);
53286 + return can_switch;
53287 + }
53288 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_display.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_display.c
53289 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_display.c 2011-10-24 08:05:21.000000000 -0400
53290 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_display.c 2011-08-23 21:48:14.000000000 -0400
53291 +@@ -946,6 +946,8 @@ void radeon_compute_pll_legacy(struct ra
53292 + uint32_t post_div;
53293 + u32 pll_out_min, pll_out_max;
53294
53295 - bool radeon_get_atom_connector_info_from_supported_devices_table(struct
53296 - drm_device
53297 -@@ -542,7 +544,6 @@ bool radeon_get_atom_connector_info_from
53298 - uint8_t dac;
53299 - union atom_supported_devices *supported_devices;
53300 - int i, j;
53301 -- struct bios_connector bios_connectors[ATOM_MAX_SUPPORTED_DEVICE];
53302 -
53303 - atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset);
53304 -
53305 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c
53306 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c 2011-11-12 12:44:28.000000000 -0500
53307 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_display.c 2011-11-12 12:46:45.000000000 -0500
53308 -@@ -482,7 +482,7 @@ void radeon_compute_pll(struct radeon_pl
53309 -
53310 - if (flags & RADEON_PLL_PREFER_CLOSEST_LOWER) {
53311 - error = freq - current_freq;
53312 -- error = error < 0 ? 0xffffffff : error;
53313 -+ error = (int32_t)error < 0 ? 0xffffffff : error;
53314 - } else
53315 - error = abs(current_freq - freq);
53316 - vco_diff = abs(vco - best_vco);
53317 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h
53318 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-12 12:44:28.000000000 -0500
53319 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h 2011-11-12 12:46:45.000000000 -0500
53320 -@@ -253,7 +253,7 @@ typedef struct drm_radeon_private {
53321 ++ pax_track_stack();
53322 ++
53323 + DRM_DEBUG_KMS("PLL freq %llu %u %u\n", freq, pll->min_ref_div, pll->max_ref_div);
53324 + freq = freq * 1000;
53325 +
53326 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_drv.h linux-3.0.8/drivers/gpu/drm/radeon/radeon_drv.h
53327 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_drv.h 2011-07-21 22:17:23.000000000 -0400
53328 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_drv.h 2011-08-23 21:47:55.000000000 -0400
53329 +@@ -255,7 +255,7 @@ typedef struct drm_radeon_private {
53330
53331 /* SW interrupt */
53332 wait_queue_head_t swi_queue;
53333 @@ -30923,52 +27168,52 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_drv.h linux-2.6.32.48/d
53334 int vblank_crtc;
53335 uint32_t irq_enable_reg;
53336 uint32_t r500_disp_irq_reg;
53337 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c
53338 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c 2009-12-02 22:51:21.000000000 -0500
53339 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_fence.c 2011-11-12 12:46:45.000000000 -0500
53340 -@@ -47,7 +47,7 @@ int radeon_fence_emit(struct radeon_devi
53341 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_fence.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_fence.c
53342 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_fence.c 2011-07-21 22:17:23.000000000 -0400
53343 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_fence.c 2011-08-23 21:47:55.000000000 -0400
53344 +@@ -78,7 +78,7 @@ int radeon_fence_emit(struct radeon_devi
53345 write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
53346 return 0;
53347 }
53348 - fence->seq = atomic_add_return(1, &rdev->fence_drv.seq);
53349 + fence->seq = atomic_add_return_unchecked(1, &rdev->fence_drv.seq);
53350 - if (!rdev->cp.ready) {
53351 + if (!rdev->cp.ready)
53352 /* FIXME: cp is not running assume everythings is done right
53353 * away
53354 -@@ -364,7 +364,7 @@ int radeon_fence_driver_init(struct rade
53355 +@@ -373,7 +373,7 @@ int radeon_fence_driver_init(struct rade
53356 return r;
53357 }
53358 - WREG32(rdev->fence_drv.scratch_reg, 0);
53359 + radeon_fence_write(rdev, 0);
53360 - atomic_set(&rdev->fence_drv.seq, 0);
53361 + atomic_set_unchecked(&rdev->fence_drv.seq, 0);
53362 INIT_LIST_HEAD(&rdev->fence_drv.created);
53363 INIT_LIST_HEAD(&rdev->fence_drv.emited);
53364 INIT_LIST_HEAD(&rdev->fence_drv.signaled);
53365 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h
53366 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h 2011-11-12 12:44:28.000000000 -0500
53367 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon.h 2011-11-12 12:46:45.000000000 -0500
53368 -@@ -149,7 +149,7 @@ int radeon_pm_init(struct radeon_device
53369 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon.h linux-3.0.8/drivers/gpu/drm/radeon/radeon.h
53370 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon.h 2011-10-24 08:05:30.000000000 -0400
53371 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon.h 2011-10-16 21:55:27.000000000 -0400
53372 +@@ -191,7 +191,7 @@ extern int sumo_get_temp(struct radeon_d
53373 */
53374 struct radeon_fence_driver {
53375 uint32_t scratch_reg;
53376 - atomic_t seq;
53377 + atomic_unchecked_t seq;
53378 uint32_t last_seq;
53379 - unsigned long count_timeout;
53380 - wait_queue_head_t queue;
53381 -@@ -640,7 +640,7 @@ struct radeon_asic {
53382 - uint32_t offset, uint32_t obj_size);
53383 - int (*clear_surface_reg)(struct radeon_device *rdev, int reg);
53384 - void (*bandwidth_update)(struct radeon_device *rdev);
53385 + unsigned long last_jiffies;
53386 + unsigned long last_timeout;
53387 +@@ -961,7 +961,7 @@ struct radeon_asic {
53388 + void (*pre_page_flip)(struct radeon_device *rdev, int crtc);
53389 + u32 (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base);
53390 + void (*post_page_flip)(struct radeon_device *rdev, int crtc);
53391 -};
53392 +} __no_const;
53393
53394 /*
53395 * Asic structures
53396 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c
53397 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c 2009-12-02 22:51:21.000000000 -0500
53398 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-11-12 12:46:45.000000000 -0500
53399 -@@ -368,7 +368,7 @@ static int compat_radeon_cp_setparam(str
53400 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_ioc32.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_ioc32.c
53401 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-07-21 22:17:23.000000000 -0400
53402 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-08-23 21:47:55.000000000 -0400
53403 +@@ -359,7 +359,7 @@ static int compat_radeon_cp_setparam(str
53404 request = compat_alloc_user_space(sizeof(*request));
53405 if (!access_ok(VERIFY_WRITE, request, sizeof(*request))
53406 || __put_user(req32.param, &request->param)
53407 @@ -30977,9 +27222,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ioc32.c linux-2.6.32.48
53408 &request->value))
53409 return -EFAULT;
53410
53411 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c
53412 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c 2009-12-02 22:51:21.000000000 -0500
53413 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c 2011-11-12 12:46:45.000000000 -0500
53414 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_irq.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_irq.c
53415 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_irq.c 2011-07-21 22:17:23.000000000 -0400
53416 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_irq.c 2011-08-23 21:47:55.000000000 -0400
53417 @@ -225,8 +225,8 @@ static int radeon_emit_irq(struct drm_de
53418 unsigned int ret;
53419 RING_LOCALS;
53420 @@ -31000,10 +27245,19 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_irq.c linux-2.6.32.48/d
53421 DRM_INIT_WAITQUEUE(&dev_priv->swi_queue);
53422
53423 dev->max_vblank_count = 0x001fffff;
53424 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c
53425 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c 2011-11-12 12:44:28.000000000 -0500
53426 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c 2011-11-12 12:46:45.000000000 -0500
53427 -@@ -3021,7 +3021,7 @@ static int radeon_cp_getparam(struct drm
53428 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_state.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_state.c
53429 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_state.c 2011-07-21 22:17:23.000000000 -0400
53430 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_state.c 2011-08-23 21:47:55.000000000 -0400
53431 +@@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_de
53432 + if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS)
53433 + sarea_priv->nbox = RADEON_NR_SAREA_CLIPRECTS;
53434 +
53435 +- if (DRM_COPY_FROM_USER(&depth_boxes, clear->depth_boxes,
53436 ++ if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS || DRM_COPY_FROM_USER(&depth_boxes, clear->depth_boxes,
53437 + sarea_priv->nbox * sizeof(depth_boxes[0])))
53438 + return -EFAULT;
53439 +
53440 +@@ -3031,7 +3031,7 @@ static int radeon_cp_getparam(struct drm
53441 {
53442 drm_radeon_private_t *dev_priv = dev->dev_private;
53443 drm_radeon_getparam_t *param = data;
53444 @@ -31012,186 +27266,56 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_state.c linux-2.6.32.48
53445
53446 DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
53447
53448 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c
53449 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c 2009-12-02 22:51:21.000000000 -0500
53450 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/radeon_ttm.c 2011-11-12 12:46:45.000000000 -0500
53451 -@@ -535,27 +535,10 @@ void radeon_ttm_fini(struct radeon_devic
53452 - DRM_INFO("radeon: ttm finalized\n");
53453 - }
53454 -
53455 --static struct vm_operations_struct radeon_ttm_vm_ops;
53456 --static const struct vm_operations_struct *ttm_vm_ops = NULL;
53457 --
53458 --static int radeon_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
53459 --{
53460 -- struct ttm_buffer_object *bo;
53461 -- int r;
53462 --
53463 -- bo = (struct ttm_buffer_object *)vma->vm_private_data;
53464 -- if (bo == NULL) {
53465 -- return VM_FAULT_NOPAGE;
53466 -- }
53467 -- r = ttm_vm_ops->fault(vma, vmf);
53468 -- return r;
53469 --}
53470 --
53471 - int radeon_mmap(struct file *filp, struct vm_area_struct *vma)
53472 - {
53473 - struct drm_file *file_priv;
53474 - struct radeon_device *rdev;
53475 -- int r;
53476 -
53477 - if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET)) {
53478 - return drm_mmap(filp, vma);
53479 -@@ -563,20 +546,9 @@ int radeon_mmap(struct file *filp, struc
53480 -
53481 - file_priv = (struct drm_file *)filp->private_data;
53482 - rdev = file_priv->minor->dev->dev_private;
53483 -- if (rdev == NULL) {
53484 -+ if (!rdev)
53485 - return -EINVAL;
53486 -- }
53487 -- r = ttm_bo_mmap(filp, vma, &rdev->mman.bdev);
53488 -- if (unlikely(r != 0)) {
53489 -- return r;
53490 -- }
53491 -- if (unlikely(ttm_vm_ops == NULL)) {
53492 -- ttm_vm_ops = vma->vm_ops;
53493 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/radeon_ttm.c linux-3.0.8/drivers/gpu/drm/radeon/radeon_ttm.c
53494 +--- linux-3.0.8/drivers/gpu/drm/radeon/radeon_ttm.c 2011-10-24 08:05:30.000000000 -0400
53495 ++++ linux-3.0.8/drivers/gpu/drm/radeon/radeon_ttm.c 2011-10-16 21:55:27.000000000 -0400
53496 +@@ -649,8 +649,10 @@ int radeon_mmap(struct file *filp, struc
53497 + }
53498 + if (unlikely(ttm_vm_ops == NULL)) {
53499 + ttm_vm_ops = vma->vm_ops;
53500 - radeon_ttm_vm_ops = *ttm_vm_ops;
53501 - radeon_ttm_vm_ops.fault = &radeon_ttm_fault;
53502 -- }
53503 -- vma->vm_ops = &radeon_ttm_vm_ops;
53504 -- return 0;
53505 -+ return ttm_bo_mmap(filp, vma, &rdev->mman.bdev);
53506 - }
53507 -
53508 -
53509 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c
53510 ---- linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c 2011-11-12 12:44:28.000000000 -0500
53511 -+++ linux-2.6.32.48/drivers/gpu/drm/radeon/rs690.c 2011-11-12 12:46:45.000000000 -0500
53512 -@@ -302,9 +302,11 @@ void rs690_crtc_bandwidth_compute(struct
53513 ++ pax_open_kernel();
53514 ++ memcpy((void *)&radeon_ttm_vm_ops, ttm_vm_ops, sizeof(radeon_ttm_vm_ops));
53515 ++ *(void **)&radeon_ttm_vm_ops.fault = &radeon_ttm_fault;
53516 ++ pax_close_kernel();
53517 + }
53518 + vma->vm_ops = &radeon_ttm_vm_ops;
53519 + return 0;
53520 +diff -urNp linux-3.0.8/drivers/gpu/drm/radeon/rs690.c linux-3.0.8/drivers/gpu/drm/radeon/rs690.c
53521 +--- linux-3.0.8/drivers/gpu/drm/radeon/rs690.c 2011-07-21 22:17:23.000000000 -0400
53522 ++++ linux-3.0.8/drivers/gpu/drm/radeon/rs690.c 2011-08-23 21:47:55.000000000 -0400
53523 +@@ -304,9 +304,11 @@ void rs690_crtc_bandwidth_compute(struct
53524 if (rdev->pm.max_bandwidth.full > rdev->pm.sideport_bandwidth.full &&
53525 rdev->pm.sideport_bandwidth.full)
53526 rdev->pm.max_bandwidth = rdev->pm.sideport_bandwidth;
53527 -- read_delay_latency.full = rfixed_const(370 * 800 * 1000);
53528 -+ read_delay_latency.full = rfixed_const(800 * 1000);
53529 - read_delay_latency.full = rfixed_div(read_delay_latency,
53530 +- read_delay_latency.full = dfixed_const(370 * 800 * 1000);
53531 ++ read_delay_latency.full = dfixed_const(800 * 1000);
53532 + read_delay_latency.full = dfixed_div(read_delay_latency,
53533 rdev->pm.igp_sideport_mclk);
53534 -+ a.full = rfixed_const(370);
53535 -+ read_delay_latency.full = rfixed_mul(read_delay_latency, a);
53536 ++ a.full = dfixed_const(370);
53537 ++ read_delay_latency.full = dfixed_mul(read_delay_latency, a);
53538 } else {
53539 if (rdev->pm.max_bandwidth.full > rdev->pm.k8_bandwidth.full &&
53540 rdev->pm.k8_bandwidth.full)
53541 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c
53542 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c 2011-11-12 12:44:28.000000000 -0500
53543 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo.c 2011-11-12 12:46:45.000000000 -0500
53544 -@@ -67,7 +67,7 @@ static struct attribute *ttm_bo_global_a
53545 - NULL
53546 - };
53547 -
53548 --static struct sysfs_ops ttm_bo_global_ops = {
53549 -+static const struct sysfs_ops ttm_bo_global_ops = {
53550 - .show = &ttm_bo_global_show
53551 - };
53552 -
53553 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c
53554 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c 2009-12-02 22:51:21.000000000 -0500
53555 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_bo_vm.c 2011-11-12 12:46:45.000000000 -0500
53556 -@@ -73,7 +73,7 @@ static int ttm_bo_vm_fault(struct vm_are
53557 - {
53558 - struct ttm_buffer_object *bo = (struct ttm_buffer_object *)
53559 - vma->vm_private_data;
53560 -- struct ttm_bo_device *bdev = bo->bdev;
53561 -+ struct ttm_bo_device *bdev;
53562 - unsigned long bus_base;
53563 - unsigned long bus_offset;
53564 - unsigned long bus_size;
53565 -@@ -88,6 +88,10 @@ static int ttm_bo_vm_fault(struct vm_are
53566 - unsigned long address = (unsigned long)vmf->virtual_address;
53567 - int retval = VM_FAULT_NOPAGE;
53568 -
53569 -+ if (!bo)
53570 -+ return VM_FAULT_NOPAGE;
53571 -+ bdev = bo->bdev;
53572 -+
53573 - /*
53574 - * Work around locking order reversal in fault / nopfn
53575 - * between mmap_sem and bo_reserve: Perform a trylock operation
53576 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c
53577 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c 2009-12-02 22:51:21.000000000 -0500
53578 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_global.c 2011-11-12 12:46:45.000000000 -0500
53579 -@@ -36,7 +36,7 @@
53580 - struct ttm_global_item {
53581 - struct mutex mutex;
53582 - void *object;
53583 -- int refcount;
53584 -+ atomic_t refcount;
53585 - };
53586 -
53587 - static struct ttm_global_item glob[TTM_GLOBAL_NUM];
53588 -@@ -49,7 +49,7 @@ void ttm_global_init(void)
53589 - struct ttm_global_item *item = &glob[i];
53590 - mutex_init(&item->mutex);
53591 - item->object = NULL;
53592 -- item->refcount = 0;
53593 -+ atomic_set(&item->refcount, 0);
53594 - }
53595 - }
53596 -
53597 -@@ -59,7 +59,7 @@ void ttm_global_release(void)
53598 - for (i = 0; i < TTM_GLOBAL_NUM; ++i) {
53599 - struct ttm_global_item *item = &glob[i];
53600 - BUG_ON(item->object != NULL);
53601 -- BUG_ON(item->refcount != 0);
53602 -+ BUG_ON(atomic_read(&item->refcount) != 0);
53603 - }
53604 - }
53605 -
53606 -@@ -70,7 +70,7 @@ int ttm_global_item_ref(struct ttm_globa
53607 - void *object;
53608 -
53609 - mutex_lock(&item->mutex);
53610 -- if (item->refcount == 0) {
53611 -+ if (atomic_read(&item->refcount) == 0) {
53612 - item->object = kzalloc(ref->size, GFP_KERNEL);
53613 - if (unlikely(item->object == NULL)) {
53614 - ret = -ENOMEM;
53615 -@@ -83,7 +83,7 @@ int ttm_global_item_ref(struct ttm_globa
53616 - goto out_err;
53617 -
53618 - }
53619 -- ++item->refcount;
53620 -+ atomic_inc(&item->refcount);
53621 - ref->object = item->object;
53622 - object = item->object;
53623 - mutex_unlock(&item->mutex);
53624 -@@ -100,9 +100,9 @@ void ttm_global_item_unref(struct ttm_gl
53625 - struct ttm_global_item *item = &glob[ref->global_type];
53626 -
53627 - mutex_lock(&item->mutex);
53628 -- BUG_ON(item->refcount == 0);
53629 -+ BUG_ON(atomic_read(&item->refcount) == 0);
53630 - BUG_ON(ref->object != item->object);
53631 -- if (--item->refcount == 0) {
53632 -+ if (atomic_dec_and_test(&item->refcount)) {
53633 - ref->release(ref);
53634 - item->object = NULL;
53635 - }
53636 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c
53637 ---- linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c 2009-12-02 22:51:21.000000000 -0500
53638 -+++ linux-2.6.32.48/drivers/gpu/drm/ttm/ttm_memory.c 2011-11-12 12:46:45.000000000 -0500
53639 -@@ -152,7 +152,7 @@ static struct attribute *ttm_mem_zone_at
53640 - NULL
53641 - };
53642 -
53643 --static struct sysfs_ops ttm_mem_zone_ops = {
53644 -+static const struct sysfs_ops ttm_mem_zone_ops = {
53645 - .show = &ttm_mem_zone_show,
53646 - .store = &ttm_mem_zone_store
53647 - };
53648 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h
53649 ---- linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h 2009-12-02 22:51:21.000000000 -0500
53650 -+++ linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h 2011-11-12 12:46:45.000000000 -0500
53651 +diff -urNp linux-3.0.8/drivers/gpu/drm/ttm/ttm_page_alloc.c linux-3.0.8/drivers/gpu/drm/ttm/ttm_page_alloc.c
53652 +--- linux-3.0.8/drivers/gpu/drm/ttm/ttm_page_alloc.c 2011-07-21 22:17:23.000000000 -0400
53653 ++++ linux-3.0.8/drivers/gpu/drm/ttm/ttm_page_alloc.c 2011-08-23 21:47:55.000000000 -0400
53654 +@@ -398,9 +398,9 @@ static int ttm_pool_get_num_unused_pages
53655 + static int ttm_pool_mm_shrink(struct shrinker *shrink,
53656 + struct shrink_control *sc)
53657 + {
53658 +- static atomic_t start_pool = ATOMIC_INIT(0);
53659 ++ static atomic_unchecked_t start_pool = ATOMIC_INIT(0);
53660 + unsigned i;
53661 +- unsigned pool_offset = atomic_add_return(1, &start_pool);
53662 ++ unsigned pool_offset = atomic_add_return_unchecked(1, &start_pool);
53663 + struct ttm_page_pool *pool;
53664 + int shrink_pages = sc->nr_to_scan;
53665 +
53666 +diff -urNp linux-3.0.8/drivers/gpu/drm/via/via_drv.h linux-3.0.8/drivers/gpu/drm/via/via_drv.h
53667 +--- linux-3.0.8/drivers/gpu/drm/via/via_drv.h 2011-07-21 22:17:23.000000000 -0400
53668 ++++ linux-3.0.8/drivers/gpu/drm/via/via_drv.h 2011-08-23 21:47:55.000000000 -0400
53669 @@ -51,7 +51,7 @@ typedef struct drm_via_ring_buffer {
53670 typedef uint32_t maskarray_t[5];
53671
53672 @@ -31210,9 +27334,9 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_drv.h linux-2.6.32.48/drivers
53673 drm_via_state_t hc_state;
53674 char pci_buf[VIA_PCI_BUF_SIZE];
53675 const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE];
53676 -diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c
53677 ---- linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c 2009-12-02 22:51:21.000000000 -0500
53678 -+++ linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c 2011-11-12 12:46:45.000000000 -0500
53679 +diff -urNp linux-3.0.8/drivers/gpu/drm/via/via_irq.c linux-3.0.8/drivers/gpu/drm/via/via_irq.c
53680 +--- linux-3.0.8/drivers/gpu/drm/via/via_irq.c 2011-07-21 22:17:23.000000000 -0400
53681 ++++ linux-3.0.8/drivers/gpu/drm/via/via_irq.c 2011-08-23 21:47:55.000000000 -0400
53682 @@ -102,7 +102,7 @@ u32 via_get_vblank_counter(struct drm_de
53683 if (crtc != 0)
53684 return 0;
53685 @@ -31250,8 +27374,8 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c linux-2.6.32.48/drivers
53686 + atomic_inc_unchecked(&cur_irq->irq_received);
53687 DRM_WAKEUP(&cur_irq->irq_queue);
53688 handled = 1;
53689 - if (dev_priv->irq_map[drm_via_irq_dma0_td] == i) {
53690 -@@ -244,11 +244,11 @@ via_driver_irq_wait(struct drm_device *
53691 + if (dev_priv->irq_map[drm_via_irq_dma0_td] == i)
53692 +@@ -243,11 +243,11 @@ via_driver_irq_wait(struct drm_device *d
53693 DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * DRM_HZ,
53694 ((VIA_READ(masks[irq][2]) & masks[irq][3]) ==
53695 masks[irq][4]));
53696 @@ -31265,7 +27389,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c linux-2.6.32.48/drivers
53697 *sequence) <= (1 << 23)));
53698 }
53699 *sequence = cur_irq_sequence;
53700 -@@ -286,7 +286,7 @@ void via_driver_irq_preinstall(struct dr
53701 +@@ -285,7 +285,7 @@ void via_driver_irq_preinstall(struct dr
53702 }
53703
53704 for (i = 0; i < dev_priv->num_irqs; ++i) {
53705 @@ -31274,7 +27398,7 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c linux-2.6.32.48/drivers
53706 cur_irq->enable_mask = dev_priv->irq_masks[i][0];
53707 cur_irq->pending_mask = dev_priv->irq_masks[i][1];
53708 DRM_INIT_WAITQUEUE(&cur_irq->irq_queue);
53709 -@@ -368,7 +368,7 @@ int via_wait_irq(struct drm_device *dev,
53710 +@@ -367,7 +367,7 @@ int via_wait_irq(struct drm_device *dev,
53711 switch (irqwait->request.type & ~VIA_IRQ_FLAGS_MASK) {
53712 case VIA_IRQ_RELATIVE:
53713 irqwait->request.sequence +=
53714 @@ -31283,10 +27407,106 @@ diff -urNp linux-2.6.32.48/drivers/gpu/drm/via/via_irq.c linux-2.6.32.48/drivers
53715 irqwait->request.type &= ~_DRM_VBLANK_RELATIVE;
53716 case VIA_IRQ_ABSOLUTE:
53717 break;
53718 -diff -urNp linux-2.6.32.48/drivers/hid/hid-core.c linux-2.6.32.48/drivers/hid/hid-core.c
53719 ---- linux-2.6.32.48/drivers/hid/hid-core.c 2011-11-12 12:44:28.000000000 -0500
53720 -+++ linux-2.6.32.48/drivers/hid/hid-core.c 2011-11-12 12:46:45.000000000 -0500
53721 -@@ -1752,7 +1752,7 @@ static bool hid_ignore(struct hid_device
53722 +diff -urNp linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
53723 +--- linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 2011-07-21 22:17:23.000000000 -0400
53724 ++++ linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 2011-08-23 21:47:55.000000000 -0400
53725 +@@ -240,7 +240,7 @@ struct vmw_private {
53726 + * Fencing and IRQs.
53727 + */
53728 +
53729 +- atomic_t fence_seq;
53730 ++ atomic_unchecked_t fence_seq;
53731 + wait_queue_head_t fence_queue;
53732 + wait_queue_head_t fifo_queue;
53733 + atomic_t fence_queue_waiters;
53734 +diff -urNp linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
53735 +--- linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c 2011-07-21 22:17:23.000000000 -0400
53736 ++++ linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c 2011-10-06 04:17:55.000000000 -0400
53737 +@@ -610,7 +610,7 @@ int vmw_execbuf_ioctl(struct drm_device
53738 + struct drm_vmw_fence_rep fence_rep;
53739 + struct drm_vmw_fence_rep __user *user_fence_rep;
53740 + int ret;
53741 +- void *user_cmd;
53742 ++ void __user *user_cmd;
53743 + void *cmd;
53744 + uint32_t sequence;
53745 + struct vmw_sw_context *sw_context = &dev_priv->ctx;
53746 +diff -urNp linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
53747 +--- linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c 2011-07-21 22:17:23.000000000 -0400
53748 ++++ linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c 2011-08-23 21:47:55.000000000 -0400
53749 +@@ -151,7 +151,7 @@ int vmw_wait_lag(struct vmw_private *dev
53750 + while (!vmw_lag_lt(queue, us)) {
53751 + spin_lock(&queue->lock);
53752 + if (list_empty(&queue->head))
53753 +- sequence = atomic_read(&dev_priv->fence_seq);
53754 ++ sequence = atomic_read_unchecked(&dev_priv->fence_seq);
53755 + else {
53756 + fence = list_first_entry(&queue->head,
53757 + struct vmw_fence, head);
53758 +diff -urNp linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
53759 +--- linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 2011-07-21 22:17:23.000000000 -0400
53760 ++++ linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c 2011-10-06 04:17:55.000000000 -0400
53761 +@@ -137,7 +137,7 @@ int vmw_fifo_init(struct vmw_private *de
53762 + (unsigned int) min,
53763 + (unsigned int) fifo->capabilities);
53764 +
53765 +- atomic_set(&dev_priv->fence_seq, dev_priv->last_read_sequence);
53766 ++ atomic_set_unchecked(&dev_priv->fence_seq, dev_priv->last_read_sequence);
53767 + iowrite32(dev_priv->last_read_sequence, fifo_mem + SVGA_FIFO_FENCE);
53768 + vmw_fence_queue_init(&fifo->fence_queue);
53769 + return vmw_fifo_send_fence(dev_priv, &dummy);
53770 +@@ -356,7 +356,7 @@ void *vmw_fifo_reserve(struct vmw_privat
53771 + if (reserveable)
53772 + iowrite32(bytes, fifo_mem +
53773 + SVGA_FIFO_RESERVED);
53774 +- return fifo_mem + (next_cmd >> 2);
53775 ++ return (__le32 __force_kernel *)fifo_mem + (next_cmd >> 2);
53776 + } else {
53777 + need_bounce = true;
53778 + }
53779 +@@ -476,7 +476,7 @@ int vmw_fifo_send_fence(struct vmw_priva
53780 +
53781 + fm = vmw_fifo_reserve(dev_priv, bytes);
53782 + if (unlikely(fm == NULL)) {
53783 +- *sequence = atomic_read(&dev_priv->fence_seq);
53784 ++ *sequence = atomic_read_unchecked(&dev_priv->fence_seq);
53785 + ret = -ENOMEM;
53786 + (void)vmw_fallback_wait(dev_priv, false, true, *sequence,
53787 + false, 3*HZ);
53788 +@@ -484,7 +484,7 @@ int vmw_fifo_send_fence(struct vmw_priva
53789 + }
53790 +
53791 + do {
53792 +- *sequence = atomic_add_return(1, &dev_priv->fence_seq);
53793 ++ *sequence = atomic_add_return_unchecked(1, &dev_priv->fence_seq);
53794 + } while (*sequence == 0);
53795 +
53796 + if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
53797 +diff -urNp linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
53798 +--- linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 2011-07-21 22:17:23.000000000 -0400
53799 ++++ linux-3.0.8/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c 2011-08-23 21:47:55.000000000 -0400
53800 +@@ -100,7 +100,7 @@ bool vmw_fence_signaled(struct vmw_priva
53801 + * emitted. Then the fence is stale and signaled.
53802 + */
53803 +
53804 +- ret = ((atomic_read(&dev_priv->fence_seq) - sequence)
53805 ++ ret = ((atomic_read_unchecked(&dev_priv->fence_seq) - sequence)
53806 + > VMW_FENCE_WRAP);
53807 +
53808 + return ret;
53809 +@@ -131,7 +131,7 @@ int vmw_fallback_wait(struct vmw_private
53810 +
53811 + if (fifo_idle)
53812 + down_read(&fifo_state->rwsem);
53813 +- signal_seq = atomic_read(&dev_priv->fence_seq);
53814 ++ signal_seq = atomic_read_unchecked(&dev_priv->fence_seq);
53815 + ret = 0;
53816 +
53817 + for (;;) {
53818 +diff -urNp linux-3.0.8/drivers/hid/hid-core.c linux-3.0.8/drivers/hid/hid-core.c
53819 +--- linux-3.0.8/drivers/hid/hid-core.c 2011-07-21 22:17:23.000000000 -0400
53820 ++++ linux-3.0.8/drivers/hid/hid-core.c 2011-08-23 21:47:55.000000000 -0400
53821 +@@ -1923,7 +1923,7 @@ static bool hid_ignore(struct hid_device
53822
53823 int hid_add_device(struct hid_device *hdev)
53824 {
53825 @@ -31295,91 +27515,52 @@ diff -urNp linux-2.6.32.48/drivers/hid/hid-core.c linux-2.6.32.48/drivers/hid/hi
53826 int ret;
53827
53828 if (WARN_ON(hdev->status & HID_STAT_ADDED))
53829 -@@ -1766,7 +1766,7 @@ int hid_add_device(struct hid_device *hd
53830 +@@ -1938,7 +1938,7 @@ int hid_add_device(struct hid_device *hd
53831 /* XXX hack, any other cleaner solution after the driver core
53832 * is converted to allow more than 20 bytes as the device name? */
53833 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
53834 - hdev->vendor, hdev->product, atomic_inc_return(&id));
53835 + hdev->vendor, hdev->product, atomic_inc_return_unchecked(&id));
53836
53837 + hid_debug_register(hdev, dev_name(&hdev->dev));
53838 ret = device_add(&hdev->dev);
53839 - if (!ret)
53840 -diff -urNp linux-2.6.32.48/drivers/hid/usbhid/hiddev.c linux-2.6.32.48/drivers/hid/usbhid/hiddev.c
53841 ---- linux-2.6.32.48/drivers/hid/usbhid/hiddev.c 2009-12-02 22:51:21.000000000 -0500
53842 -+++ linux-2.6.32.48/drivers/hid/usbhid/hiddev.c 2011-11-12 12:46:45.000000000 -0500
53843 -@@ -617,7 +617,7 @@ static long hiddev_ioctl(struct file *fi
53844 - return put_user(HID_VERSION, (int __user *)arg);
53845 +diff -urNp linux-3.0.8/drivers/hid/usbhid/hiddev.c linux-3.0.8/drivers/hid/usbhid/hiddev.c
53846 +--- linux-3.0.8/drivers/hid/usbhid/hiddev.c 2011-07-21 22:17:23.000000000 -0400
53847 ++++ linux-3.0.8/drivers/hid/usbhid/hiddev.c 2011-08-23 21:47:55.000000000 -0400
53848 +@@ -624,7 +624,7 @@ static long hiddev_ioctl(struct file *fi
53849 + break;
53850
53851 case HIDIOCAPPLICATION:
53852 - if (arg < 0 || arg >= hid->maxapplication)
53853 + if (arg >= hid->maxapplication)
53854 - return -EINVAL;
53855 + break;
53856
53857 for (i = 0; i < hid->maxcollection; i++)
53858 -diff -urNp linux-2.6.32.48/drivers/hwmon/lis3lv02d.c linux-2.6.32.48/drivers/hwmon/lis3lv02d.c
53859 ---- linux-2.6.32.48/drivers/hwmon/lis3lv02d.c 2011-11-12 12:44:28.000000000 -0500
53860 -+++ linux-2.6.32.48/drivers/hwmon/lis3lv02d.c 2011-11-12 12:46:45.000000000 -0500
53861 -@@ -146,7 +146,7 @@ static irqreturn_t lis302dl_interrupt(in
53862 - * the lid is closed. This leads to interrupts as soon as a little move
53863 - * is done.
53864 - */
53865 -- atomic_inc(&lis3_dev.count);
53866 -+ atomic_inc_unchecked(&lis3_dev.count);
53867 -
53868 - wake_up_interruptible(&lis3_dev.misc_wait);
53869 - kill_fasync(&lis3_dev.async_queue, SIGIO, POLL_IN);
53870 -@@ -160,7 +160,7 @@ static int lis3lv02d_misc_open(struct in
53871 - if (test_and_set_bit(0, &lis3_dev.misc_opened))
53872 - return -EBUSY; /* already open */
53873 -
53874 -- atomic_set(&lis3_dev.count, 0);
53875 -+ atomic_set_unchecked(&lis3_dev.count, 0);
53876 -
53877 - /*
53878 - * The sensor can generate interrupts for free-fall and direction
53879 -@@ -206,7 +206,7 @@ static ssize_t lis3lv02d_misc_read(struc
53880 - add_wait_queue(&lis3_dev.misc_wait, &wait);
53881 - while (true) {
53882 - set_current_state(TASK_INTERRUPTIBLE);
53883 -- data = atomic_xchg(&lis3_dev.count, 0);
53884 -+ data = atomic_xchg_unchecked(&lis3_dev.count, 0);
53885 - if (data)
53886 - break;
53887 +diff -urNp linux-3.0.8/drivers/hwmon/acpi_power_meter.c linux-3.0.8/drivers/hwmon/acpi_power_meter.c
53888 +--- linux-3.0.8/drivers/hwmon/acpi_power_meter.c 2011-07-21 22:17:23.000000000 -0400
53889 ++++ linux-3.0.8/drivers/hwmon/acpi_power_meter.c 2011-08-23 21:47:55.000000000 -0400
53890 +@@ -316,8 +316,6 @@ static ssize_t set_trip(struct device *d
53891 + return res;
53892
53893 -@@ -244,7 +244,7 @@ out:
53894 - static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait)
53895 - {
53896 - poll_wait(file, &lis3_dev.misc_wait, wait);
53897 -- if (atomic_read(&lis3_dev.count))
53898 -+ if (atomic_read_unchecked(&lis3_dev.count))
53899 - return POLLIN | POLLRDNORM;
53900 - return 0;
53901 - }
53902 -diff -urNp linux-2.6.32.48/drivers/hwmon/lis3lv02d.h linux-2.6.32.48/drivers/hwmon/lis3lv02d.h
53903 ---- linux-2.6.32.48/drivers/hwmon/lis3lv02d.h 2011-11-12 12:44:28.000000000 -0500
53904 -+++ linux-2.6.32.48/drivers/hwmon/lis3lv02d.h 2011-11-12 12:46:45.000000000 -0500
53905 -@@ -201,7 +201,7 @@ struct lis3lv02d {
53906 + temp /= 1000;
53907 +- if (temp < 0)
53908 +- return -EINVAL;
53909
53910 - struct input_polled_dev *idev; /* input device */
53911 - struct platform_device *pdev; /* platform device */
53912 -- atomic_t count; /* interrupt count after last read */
53913 -+ atomic_unchecked_t count; /* interrupt count after last read */
53914 - int xcalib; /* calibrated null value for x */
53915 - int ycalib; /* calibrated null value for y */
53916 - int zcalib; /* calibrated null value for z */
53917 -diff -urNp linux-2.6.32.48/drivers/hwmon/sht15.c linux-2.6.32.48/drivers/hwmon/sht15.c
53918 ---- linux-2.6.32.48/drivers/hwmon/sht15.c 2011-11-12 12:44:29.000000000 -0500
53919 -+++ linux-2.6.32.48/drivers/hwmon/sht15.c 2011-11-12 12:46:45.000000000 -0500
53920 -@@ -112,7 +112,7 @@ struct sht15_data {
53921 + mutex_lock(&resource->lock);
53922 + resource->trip[attr->index - 7] = temp;
53923 +diff -urNp linux-3.0.8/drivers/hwmon/sht15.c linux-3.0.8/drivers/hwmon/sht15.c
53924 +--- linux-3.0.8/drivers/hwmon/sht15.c 2011-07-21 22:17:23.000000000 -0400
53925 ++++ linux-3.0.8/drivers/hwmon/sht15.c 2011-08-23 21:47:55.000000000 -0400
53926 +@@ -166,7 +166,7 @@ struct sht15_data {
53927 int supply_uV;
53928 - int supply_uV_valid;
53929 + bool supply_uV_valid;
53930 struct work_struct update_supply_work;
53931 - atomic_t interrupt_handled;
53932 + atomic_unchecked_t interrupt_handled;
53933 };
53934
53935 /**
53936 -@@ -245,13 +245,13 @@ static inline int sht15_update_single_va
53937 +@@ -509,13 +509,13 @@ static int sht15_measurement(struct sht1
53938 return ret;
53939
53940 gpio_direction_input(data->pdata->gpio_data);
53941 @@ -31389,39 +27570,39 @@ diff -urNp linux-2.6.32.48/drivers/hwmon/sht15.c linux-2.6.32.48/drivers/hwmon/s
53942 enable_irq(gpio_to_irq(data->pdata->gpio_data));
53943 if (gpio_get_value(data->pdata->gpio_data) == 0) {
53944 disable_irq_nosync(gpio_to_irq(data->pdata->gpio_data));
53945 - /* Only relevant if the interrupt hasn't occured. */
53946 + /* Only relevant if the interrupt hasn't occurred. */
53947 - if (!atomic_read(&data->interrupt_handled))
53948 + if (!atomic_read_unchecked(&data->interrupt_handled))
53949 schedule_work(&data->read_work);
53950 }
53951 ret = wait_event_timeout(data->wait_queue,
53952 -@@ -398,7 +398,7 @@ static irqreturn_t sht15_interrupt_fired
53953 - struct sht15_data *data = d;
53954 +@@ -782,7 +782,7 @@ static irqreturn_t sht15_interrupt_fired
53955 +
53956 /* First disable the interrupt */
53957 disable_irq_nosync(irq);
53958 - atomic_inc(&data->interrupt_handled);
53959 + atomic_inc_unchecked(&data->interrupt_handled);
53960 /* Then schedule a reading work struct */
53961 - if (data->flag != SHT15_READING_NOTHING)
53962 + if (data->state != SHT15_READING_NOTHING)
53963 schedule_work(&data->read_work);
53964 -@@ -449,11 +449,11 @@ static void sht15_bh_read_data(struct wo
53965 - here as could have gone low in meantime so verify
53966 - it hasn't!
53967 - */
53968 +@@ -804,11 +804,11 @@ static void sht15_bh_read_data(struct wo
53969 + * If not, then start the interrupt again - care here as could
53970 + * have gone low in meantime so verify it hasn't!
53971 + */
53972 - atomic_set(&data->interrupt_handled, 0);
53973 + atomic_set_unchecked(&data->interrupt_handled, 0);
53974 enable_irq(gpio_to_irq(data->pdata->gpio_data));
53975 - /* If still not occured or another handler has been scheduled */
53976 + /* If still not occurred or another handler has been scheduled */
53977 if (gpio_get_value(data->pdata->gpio_data)
53978 - || atomic_read(&data->interrupt_handled))
53979 + || atomic_read_unchecked(&data->interrupt_handled))
53980 return;
53981 }
53982 - /* Read the data back from the device */
53983 -diff -urNp linux-2.6.32.48/drivers/hwmon/w83791d.c linux-2.6.32.48/drivers/hwmon/w83791d.c
53984 ---- linux-2.6.32.48/drivers/hwmon/w83791d.c 2009-12-02 22:51:21.000000000 -0500
53985 -+++ linux-2.6.32.48/drivers/hwmon/w83791d.c 2011-11-12 12:46:45.000000000 -0500
53986 -@@ -330,8 +330,8 @@ static int w83791d_detect(struct i2c_cli
53987 +
53988 +diff -urNp linux-3.0.8/drivers/hwmon/w83791d.c linux-3.0.8/drivers/hwmon/w83791d.c
53989 +--- linux-3.0.8/drivers/hwmon/w83791d.c 2011-07-21 22:17:23.000000000 -0400
53990 ++++ linux-3.0.8/drivers/hwmon/w83791d.c 2011-08-23 21:47:55.000000000 -0400
53991 +@@ -329,8 +329,8 @@ static int w83791d_detect(struct i2c_cli
53992 struct i2c_board_info *info);
53993 static int w83791d_remove(struct i2c_client *client);
53994
53995 @@ -31432,9 +27613,9 @@ diff -urNp linux-2.6.32.48/drivers/hwmon/w83791d.c linux-2.6.32.48/drivers/hwmon
53996 static struct w83791d_data *w83791d_update_device(struct device *dev);
53997
53998 #ifdef DEBUG
53999 -diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c
54000 ---- linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c 2009-12-02 22:51:21.000000000 -0500
54001 -+++ linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c 2011-11-12 12:46:45.000000000 -0500
54002 +diff -urNp linux-3.0.8/drivers/i2c/busses/i2c-amd756-s4882.c linux-3.0.8/drivers/i2c/busses/i2c-amd756-s4882.c
54003 +--- linux-3.0.8/drivers/i2c/busses/i2c-amd756-s4882.c 2011-07-21 22:17:23.000000000 -0400
54004 ++++ linux-3.0.8/drivers/i2c/busses/i2c-amd756-s4882.c 2011-08-23 21:47:55.000000000 -0400
54005 @@ -43,7 +43,7 @@
54006 extern struct i2c_adapter amd756_smbus;
54007
54008 @@ -31444,9 +27625,9 @@ diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-amd756-s4882.c linux-2.6.32.48
54009
54010 /* Wrapper access functions for multiplexed SMBus */
54011 static DEFINE_MUTEX(amd756_lock);
54012 -diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c
54013 ---- linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c 2009-12-02 22:51:21.000000000 -0500
54014 -+++ linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-11-12 12:46:45.000000000 -0500
54015 +diff -urNp linux-3.0.8/drivers/i2c/busses/i2c-nforce2-s4985.c linux-3.0.8/drivers/i2c/busses/i2c-nforce2-s4985.c
54016 +--- linux-3.0.8/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-07-21 22:17:23.000000000 -0400
54017 ++++ linux-3.0.8/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-08-23 21:47:55.000000000 -0400
54018 @@ -41,7 +41,7 @@
54019 extern struct i2c_adapter *nforce2_smbus;
54020
54021 @@ -31456,10 +27637,241 @@ diff -urNp linux-2.6.32.48/drivers/i2c/busses/i2c-nforce2-s4985.c linux-2.6.32.4
54022
54023 /* Wrapper access functions for multiplexed SMBus */
54024 static DEFINE_MUTEX(nforce2_lock);
54025 -diff -urNp linux-2.6.32.48/drivers/ide/ide-cd.c linux-2.6.32.48/drivers/ide/ide-cd.c
54026 ---- linux-2.6.32.48/drivers/ide/ide-cd.c 2011-11-12 12:44:29.000000000 -0500
54027 -+++ linux-2.6.32.48/drivers/ide/ide-cd.c 2011-11-12 12:46:45.000000000 -0500
54028 -@@ -774,7 +774,7 @@ static void cdrom_do_block_pc(ide_drive_
54029 +diff -urNp linux-3.0.8/drivers/i2c/i2c-mux.c linux-3.0.8/drivers/i2c/i2c-mux.c
54030 +--- linux-3.0.8/drivers/i2c/i2c-mux.c 2011-07-21 22:17:23.000000000 -0400
54031 ++++ linux-3.0.8/drivers/i2c/i2c-mux.c 2011-08-23 21:47:55.000000000 -0400
54032 +@@ -28,7 +28,7 @@
54033 + /* multiplexer per channel data */
54034 + struct i2c_mux_priv {
54035 + struct i2c_adapter adap;
54036 +- struct i2c_algorithm algo;
54037 ++ i2c_algorithm_no_const algo;
54038 +
54039 + struct i2c_adapter *parent;
54040 + void *mux_dev; /* the mux chip/device */
54041 +diff -urNp linux-3.0.8/drivers/ide/aec62xx.c linux-3.0.8/drivers/ide/aec62xx.c
54042 +--- linux-3.0.8/drivers/ide/aec62xx.c 2011-07-21 22:17:23.000000000 -0400
54043 ++++ linux-3.0.8/drivers/ide/aec62xx.c 2011-10-11 10:44:33.000000000 -0400
54044 +@@ -181,7 +181,7 @@ static const struct ide_port_ops atp86x_
54045 + .cable_detect = atp86x_cable_detect,
54046 + };
54047 +
54048 +-static const struct ide_port_info aec62xx_chipsets[] __devinitdata = {
54049 ++static const struct ide_port_info aec62xx_chipsets[] __devinitconst = {
54050 + { /* 0: AEC6210 */
54051 + .name = DRV_NAME,
54052 + .init_chipset = init_chipset_aec62xx,
54053 +diff -urNp linux-3.0.8/drivers/ide/alim15x3.c linux-3.0.8/drivers/ide/alim15x3.c
54054 +--- linux-3.0.8/drivers/ide/alim15x3.c 2011-07-21 22:17:23.000000000 -0400
54055 ++++ linux-3.0.8/drivers/ide/alim15x3.c 2011-10-11 10:44:33.000000000 -0400
54056 +@@ -512,7 +512,7 @@ static const struct ide_dma_ops ali_dma_
54057 + .dma_sff_read_status = ide_dma_sff_read_status,
54058 + };
54059 +
54060 +-static const struct ide_port_info ali15x3_chipset __devinitdata = {
54061 ++static const struct ide_port_info ali15x3_chipset __devinitconst = {
54062 + .name = DRV_NAME,
54063 + .init_chipset = init_chipset_ali15x3,
54064 + .init_hwif = init_hwif_ali15x3,
54065 +diff -urNp linux-3.0.8/drivers/ide/amd74xx.c linux-3.0.8/drivers/ide/amd74xx.c
54066 +--- linux-3.0.8/drivers/ide/amd74xx.c 2011-07-21 22:17:23.000000000 -0400
54067 ++++ linux-3.0.8/drivers/ide/amd74xx.c 2011-10-11 10:44:33.000000000 -0400
54068 +@@ -223,7 +223,7 @@ static const struct ide_port_ops amd_por
54069 + .udma_mask = udma, \
54070 + }
54071 +
54072 +-static const struct ide_port_info amd74xx_chipsets[] __devinitdata = {
54073 ++static const struct ide_port_info amd74xx_chipsets[] __devinitconst = {
54074 + /* 0: AMD7401 */ DECLARE_AMD_DEV(0x00, ATA_UDMA2),
54075 + /* 1: AMD7409 */ DECLARE_AMD_DEV(ATA_SWDMA2, ATA_UDMA4),
54076 + /* 2: AMD7411/7441 */ DECLARE_AMD_DEV(ATA_SWDMA2, ATA_UDMA5),
54077 +diff -urNp linux-3.0.8/drivers/ide/atiixp.c linux-3.0.8/drivers/ide/atiixp.c
54078 +--- linux-3.0.8/drivers/ide/atiixp.c 2011-07-21 22:17:23.000000000 -0400
54079 ++++ linux-3.0.8/drivers/ide/atiixp.c 2011-10-11 10:44:33.000000000 -0400
54080 +@@ -139,7 +139,7 @@ static const struct ide_port_ops atiixp_
54081 + .cable_detect = atiixp_cable_detect,
54082 + };
54083 +
54084 +-static const struct ide_port_info atiixp_pci_info[] __devinitdata = {
54085 ++static const struct ide_port_info atiixp_pci_info[] __devinitconst = {
54086 + { /* 0: IXP200/300/400/700 */
54087 + .name = DRV_NAME,
54088 + .enablebits = {{0x48,0x01,0x00}, {0x48,0x08,0x00}},
54089 +diff -urNp linux-3.0.8/drivers/ide/cmd64x.c linux-3.0.8/drivers/ide/cmd64x.c
54090 +--- linux-3.0.8/drivers/ide/cmd64x.c 2011-07-21 22:17:23.000000000 -0400
54091 ++++ linux-3.0.8/drivers/ide/cmd64x.c 2011-10-11 10:44:33.000000000 -0400
54092 +@@ -327,7 +327,7 @@ static const struct ide_dma_ops cmd646_r
54093 + .dma_sff_read_status = ide_dma_sff_read_status,
54094 + };
54095 +
54096 +-static const struct ide_port_info cmd64x_chipsets[] __devinitdata = {
54097 ++static const struct ide_port_info cmd64x_chipsets[] __devinitconst = {
54098 + { /* 0: CMD643 */
54099 + .name = DRV_NAME,
54100 + .init_chipset = init_chipset_cmd64x,
54101 +diff -urNp linux-3.0.8/drivers/ide/cs5520.c linux-3.0.8/drivers/ide/cs5520.c
54102 +--- linux-3.0.8/drivers/ide/cs5520.c 2011-07-21 22:17:23.000000000 -0400
54103 ++++ linux-3.0.8/drivers/ide/cs5520.c 2011-10-11 10:44:33.000000000 -0400
54104 +@@ -94,7 +94,7 @@ static const struct ide_port_ops cs5520_
54105 + .set_dma_mode = cs5520_set_dma_mode,
54106 + };
54107 +
54108 +-static const struct ide_port_info cyrix_chipset __devinitdata = {
54109 ++static const struct ide_port_info cyrix_chipset __devinitconst = {
54110 + .name = DRV_NAME,
54111 + .enablebits = { { 0x60, 0x01, 0x01 }, { 0x60, 0x02, 0x02 } },
54112 + .port_ops = &cs5520_port_ops,
54113 +diff -urNp linux-3.0.8/drivers/ide/cs5530.c linux-3.0.8/drivers/ide/cs5530.c
54114 +--- linux-3.0.8/drivers/ide/cs5530.c 2011-07-21 22:17:23.000000000 -0400
54115 ++++ linux-3.0.8/drivers/ide/cs5530.c 2011-10-11 10:44:33.000000000 -0400
54116 +@@ -245,7 +245,7 @@ static const struct ide_port_ops cs5530_
54117 + .udma_filter = cs5530_udma_filter,
54118 + };
54119 +
54120 +-static const struct ide_port_info cs5530_chipset __devinitdata = {
54121 ++static const struct ide_port_info cs5530_chipset __devinitconst = {
54122 + .name = DRV_NAME,
54123 + .init_chipset = init_chipset_cs5530,
54124 + .init_hwif = init_hwif_cs5530,
54125 +diff -urNp linux-3.0.8/drivers/ide/cs5535.c linux-3.0.8/drivers/ide/cs5535.c
54126 +--- linux-3.0.8/drivers/ide/cs5535.c 2011-07-21 22:17:23.000000000 -0400
54127 ++++ linux-3.0.8/drivers/ide/cs5535.c 2011-10-11 10:44:33.000000000 -0400
54128 +@@ -170,7 +170,7 @@ static const struct ide_port_ops cs5535_
54129 + .cable_detect = cs5535_cable_detect,
54130 + };
54131 +
54132 +-static const struct ide_port_info cs5535_chipset __devinitdata = {
54133 ++static const struct ide_port_info cs5535_chipset __devinitconst = {
54134 + .name = DRV_NAME,
54135 + .port_ops = &cs5535_port_ops,
54136 + .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_POST_SET_MODE,
54137 +diff -urNp linux-3.0.8/drivers/ide/cy82c693.c linux-3.0.8/drivers/ide/cy82c693.c
54138 +--- linux-3.0.8/drivers/ide/cy82c693.c 2011-07-21 22:17:23.000000000 -0400
54139 ++++ linux-3.0.8/drivers/ide/cy82c693.c 2011-10-11 10:44:33.000000000 -0400
54140 +@@ -161,7 +161,7 @@ static const struct ide_port_ops cy82c69
54141 + .set_dma_mode = cy82c693_set_dma_mode,
54142 + };
54143 +
54144 +-static const struct ide_port_info cy82c693_chipset __devinitdata = {
54145 ++static const struct ide_port_info cy82c693_chipset __devinitconst = {
54146 + .name = DRV_NAME,
54147 + .init_iops = init_iops_cy82c693,
54148 + .port_ops = &cy82c693_port_ops,
54149 +diff -urNp linux-3.0.8/drivers/ide/hpt366.c linux-3.0.8/drivers/ide/hpt366.c
54150 +--- linux-3.0.8/drivers/ide/hpt366.c 2011-07-21 22:17:23.000000000 -0400
54151 ++++ linux-3.0.8/drivers/ide/hpt366.c 2011-10-11 10:44:33.000000000 -0400
54152 +@@ -443,7 +443,7 @@ static struct hpt_timings hpt37x_timings
54153 + }
54154 + };
54155 +
54156 +-static const struct hpt_info hpt36x __devinitdata = {
54157 ++static const struct hpt_info hpt36x __devinitconst = {
54158 + .chip_name = "HPT36x",
54159 + .chip_type = HPT36x,
54160 + .udma_mask = HPT366_ALLOW_ATA66_3 ? (HPT366_ALLOW_ATA66_4 ? ATA_UDMA4 : ATA_UDMA3) : ATA_UDMA2,
54161 +@@ -451,7 +451,7 @@ static const struct hpt_info hpt36x __de
54162 + .timings = &hpt36x_timings
54163 + };
54164 +
54165 +-static const struct hpt_info hpt370 __devinitdata = {
54166 ++static const struct hpt_info hpt370 __devinitconst = {
54167 + .chip_name = "HPT370",
54168 + .chip_type = HPT370,
54169 + .udma_mask = HPT370_ALLOW_ATA100_5 ? ATA_UDMA5 : ATA_UDMA4,
54170 +@@ -459,7 +459,7 @@ static const struct hpt_info hpt370 __de
54171 + .timings = &hpt37x_timings
54172 + };
54173 +
54174 +-static const struct hpt_info hpt370a __devinitdata = {
54175 ++static const struct hpt_info hpt370a __devinitconst = {
54176 + .chip_name = "HPT370A",
54177 + .chip_type = HPT370A,
54178 + .udma_mask = HPT370_ALLOW_ATA100_5 ? ATA_UDMA5 : ATA_UDMA4,
54179 +@@ -467,7 +467,7 @@ static const struct hpt_info hpt370a __d
54180 + .timings = &hpt37x_timings
54181 + };
54182 +
54183 +-static const struct hpt_info hpt374 __devinitdata = {
54184 ++static const struct hpt_info hpt374 __devinitconst = {
54185 + .chip_name = "HPT374",
54186 + .chip_type = HPT374,
54187 + .udma_mask = ATA_UDMA5,
54188 +@@ -475,7 +475,7 @@ static const struct hpt_info hpt374 __de
54189 + .timings = &hpt37x_timings
54190 + };
54191 +
54192 +-static const struct hpt_info hpt372 __devinitdata = {
54193 ++static const struct hpt_info hpt372 __devinitconst = {
54194 + .chip_name = "HPT372",
54195 + .chip_type = HPT372,
54196 + .udma_mask = HPT372_ALLOW_ATA133_6 ? ATA_UDMA6 : ATA_UDMA5,
54197 +@@ -483,7 +483,7 @@ static const struct hpt_info hpt372 __de
54198 + .timings = &hpt37x_timings
54199 + };
54200 +
54201 +-static const struct hpt_info hpt372a __devinitdata = {
54202 ++static const struct hpt_info hpt372a __devinitconst = {
54203 + .chip_name = "HPT372A",
54204 + .chip_type = HPT372A,
54205 + .udma_mask = HPT372_ALLOW_ATA133_6 ? ATA_UDMA6 : ATA_UDMA5,
54206 +@@ -491,7 +491,7 @@ static const struct hpt_info hpt372a __d
54207 + .timings = &hpt37x_timings
54208 + };
54209 +
54210 +-static const struct hpt_info hpt302 __devinitdata = {
54211 ++static const struct hpt_info hpt302 __devinitconst = {
54212 + .chip_name = "HPT302",
54213 + .chip_type = HPT302,
54214 + .udma_mask = HPT302_ALLOW_ATA133_6 ? ATA_UDMA6 : ATA_UDMA5,
54215 +@@ -499,7 +499,7 @@ static const struct hpt_info hpt302 __de
54216 + .timings = &hpt37x_timings
54217 + };
54218 +
54219 +-static const struct hpt_info hpt371 __devinitdata = {
54220 ++static const struct hpt_info hpt371 __devinitconst = {
54221 + .chip_name = "HPT371",
54222 + .chip_type = HPT371,
54223 + .udma_mask = HPT371_ALLOW_ATA133_6 ? ATA_UDMA6 : ATA_UDMA5,
54224 +@@ -507,7 +507,7 @@ static const struct hpt_info hpt371 __de
54225 + .timings = &hpt37x_timings
54226 + };
54227 +
54228 +-static const struct hpt_info hpt372n __devinitdata = {
54229 ++static const struct hpt_info hpt372n __devinitconst = {
54230 + .chip_name = "HPT372N",
54231 + .chip_type = HPT372N,
54232 + .udma_mask = HPT372_ALLOW_ATA133_6 ? ATA_UDMA6 : ATA_UDMA5,
54233 +@@ -515,7 +515,7 @@ static const struct hpt_info hpt372n __d
54234 + .timings = &hpt37x_timings
54235 + };
54236 +
54237 +-static const struct hpt_info hpt302n __devinitdata = {
54238 ++static const struct hpt_info hpt302n __devinitconst = {
54239 + .chip_name = "HPT302N",
54240 + .chip_type = HPT302N,
54241 + .udma_mask = HPT302_ALLOW_ATA133_6 ? ATA_UDMA6 : ATA_UDMA5,
54242 +@@ -523,7 +523,7 @@ static const struct hpt_info hpt302n __d
54243 + .timings = &hpt37x_timings
54244 + };
54245 +
54246 +-static const struct hpt_info hpt371n __devinitdata = {
54247 ++static const struct hpt_info hpt371n __devinitconst = {
54248 + .chip_name = "HPT371N",
54249 + .chip_type = HPT371N,
54250 + .udma_mask = HPT371_ALLOW_ATA133_6 ? ATA_UDMA6 : ATA_UDMA5,
54251 +@@ -1361,7 +1361,7 @@ static const struct ide_dma_ops hpt36x_d
54252 + .dma_sff_read_status = ide_dma_sff_read_status,
54253 + };
54254 +
54255 +-static const struct ide_port_info hpt366_chipsets[] __devinitdata = {
54256 ++static const struct ide_port_info hpt366_chipsets[] __devinitconst = {
54257 + { /* 0: HPT36x */
54258 + .name = DRV_NAME,
54259 + .init_chipset = init_chipset_hpt366,
54260 +diff -urNp linux-3.0.8/drivers/ide/ide-cd.c linux-3.0.8/drivers/ide/ide-cd.c
54261 +--- linux-3.0.8/drivers/ide/ide-cd.c 2011-07-21 22:17:23.000000000 -0400
54262 ++++ linux-3.0.8/drivers/ide/ide-cd.c 2011-08-23 21:47:55.000000000 -0400
54263 +@@ -769,7 +769,7 @@ static void cdrom_do_block_pc(ide_drive_
54264 alignment = queue_dma_alignment(q) | q->dma_pad_mask;
54265 if ((unsigned long)buf & alignment
54266 || blk_rq_bytes(rq) & q->dma_pad_mask
54267 @@ -31468,10 +27880,10 @@ diff -urNp linux-2.6.32.48/drivers/ide/ide-cd.c linux-2.6.32.48/drivers/ide/ide-
54268 drive->dma = 0;
54269 }
54270 }
54271 -diff -urNp linux-2.6.32.48/drivers/ide/ide-floppy.c linux-2.6.32.48/drivers/ide/ide-floppy.c
54272 ---- linux-2.6.32.48/drivers/ide/ide-floppy.c 2009-12-02 22:51:21.000000000 -0500
54273 -+++ linux-2.6.32.48/drivers/ide/ide-floppy.c 2011-11-12 12:46:45.000000000 -0500
54274 -@@ -373,6 +373,8 @@ static int ide_floppy_get_capacity(ide_d
54275 +diff -urNp linux-3.0.8/drivers/ide/ide-floppy.c linux-3.0.8/drivers/ide/ide-floppy.c
54276 +--- linux-3.0.8/drivers/ide/ide-floppy.c 2011-07-21 22:17:23.000000000 -0400
54277 ++++ linux-3.0.8/drivers/ide/ide-floppy.c 2011-08-23 21:48:14.000000000 -0400
54278 +@@ -379,6 +379,8 @@ static int ide_floppy_get_capacity(ide_d
54279 u8 pc_buf[256], header_len, desc_cnt;
54280 int i, rc = 1, blocks, length;
54281
54282 @@ -31480,9 +27892,177 @@ diff -urNp linux-2.6.32.48/drivers/ide/ide-floppy.c linux-2.6.32.48/drivers/ide/
54283 ide_debug_log(IDE_DBG_FUNC, "enter");
54284
54285 drive->bios_cyl = 0;
54286 -diff -urNp linux-2.6.32.48/drivers/ide/setup-pci.c linux-2.6.32.48/drivers/ide/setup-pci.c
54287 ---- linux-2.6.32.48/drivers/ide/setup-pci.c 2009-12-02 22:51:21.000000000 -0500
54288 -+++ linux-2.6.32.48/drivers/ide/setup-pci.c 2011-11-12 12:46:45.000000000 -0500
54289 +diff -urNp linux-3.0.8/drivers/ide/ide-pci-generic.c linux-3.0.8/drivers/ide/ide-pci-generic.c
54290 +--- linux-3.0.8/drivers/ide/ide-pci-generic.c 2011-07-21 22:17:23.000000000 -0400
54291 ++++ linux-3.0.8/drivers/ide/ide-pci-generic.c 2011-10-11 10:44:33.000000000 -0400
54292 +@@ -53,7 +53,7 @@ static const struct ide_port_ops netcell
54293 + .udma_mask = ATA_UDMA6, \
54294 + }
54295 +
54296 +-static const struct ide_port_info generic_chipsets[] __devinitdata = {
54297 ++static const struct ide_port_info generic_chipsets[] __devinitconst = {
54298 + /* 0: Unknown */
54299 + DECLARE_GENERIC_PCI_DEV(0),
54300 +
54301 +diff -urNp linux-3.0.8/drivers/ide/it8172.c linux-3.0.8/drivers/ide/it8172.c
54302 +--- linux-3.0.8/drivers/ide/it8172.c 2011-07-21 22:17:23.000000000 -0400
54303 ++++ linux-3.0.8/drivers/ide/it8172.c 2011-10-11 10:44:33.000000000 -0400
54304 +@@ -115,7 +115,7 @@ static const struct ide_port_ops it8172_
54305 + .set_dma_mode = it8172_set_dma_mode,
54306 + };
54307 +
54308 +-static const struct ide_port_info it8172_port_info __devinitdata = {
54309 ++static const struct ide_port_info it8172_port_info __devinitconst = {
54310 + .name = DRV_NAME,
54311 + .port_ops = &it8172_port_ops,
54312 + .enablebits = { {0x41, 0x80, 0x80}, {0x00, 0x00, 0x00} },
54313 +diff -urNp linux-3.0.8/drivers/ide/it8213.c linux-3.0.8/drivers/ide/it8213.c
54314 +--- linux-3.0.8/drivers/ide/it8213.c 2011-07-21 22:17:23.000000000 -0400
54315 ++++ linux-3.0.8/drivers/ide/it8213.c 2011-10-11 10:44:33.000000000 -0400
54316 +@@ -156,7 +156,7 @@ static const struct ide_port_ops it8213_
54317 + .cable_detect = it8213_cable_detect,
54318 + };
54319 +
54320 +-static const struct ide_port_info it8213_chipset __devinitdata = {
54321 ++static const struct ide_port_info it8213_chipset __devinitconst = {
54322 + .name = DRV_NAME,
54323 + .enablebits = { {0x41, 0x80, 0x80} },
54324 + .port_ops = &it8213_port_ops,
54325 +diff -urNp linux-3.0.8/drivers/ide/it821x.c linux-3.0.8/drivers/ide/it821x.c
54326 +--- linux-3.0.8/drivers/ide/it821x.c 2011-07-21 22:17:23.000000000 -0400
54327 ++++ linux-3.0.8/drivers/ide/it821x.c 2011-10-11 10:44:33.000000000 -0400
54328 +@@ -630,7 +630,7 @@ static const struct ide_port_ops it821x_
54329 + .cable_detect = it821x_cable_detect,
54330 + };
54331 +
54332 +-static const struct ide_port_info it821x_chipset __devinitdata = {
54333 ++static const struct ide_port_info it821x_chipset __devinitconst = {
54334 + .name = DRV_NAME,
54335 + .init_chipset = init_chipset_it821x,
54336 + .init_hwif = init_hwif_it821x,
54337 +diff -urNp linux-3.0.8/drivers/ide/jmicron.c linux-3.0.8/drivers/ide/jmicron.c
54338 +--- linux-3.0.8/drivers/ide/jmicron.c 2011-07-21 22:17:23.000000000 -0400
54339 ++++ linux-3.0.8/drivers/ide/jmicron.c 2011-10-11 10:44:33.000000000 -0400
54340 +@@ -102,7 +102,7 @@ static const struct ide_port_ops jmicron
54341 + .cable_detect = jmicron_cable_detect,
54342 + };
54343 +
54344 +-static const struct ide_port_info jmicron_chipset __devinitdata = {
54345 ++static const struct ide_port_info jmicron_chipset __devinitconst = {
54346 + .name = DRV_NAME,
54347 + .enablebits = { { 0x40, 0x01, 0x01 }, { 0x40, 0x10, 0x10 } },
54348 + .port_ops = &jmicron_port_ops,
54349 +diff -urNp linux-3.0.8/drivers/ide/ns87415.c linux-3.0.8/drivers/ide/ns87415.c
54350 +--- linux-3.0.8/drivers/ide/ns87415.c 2011-07-21 22:17:23.000000000 -0400
54351 ++++ linux-3.0.8/drivers/ide/ns87415.c 2011-10-11 10:44:33.000000000 -0400
54352 +@@ -293,7 +293,7 @@ static const struct ide_dma_ops ns87415_
54353 + .dma_sff_read_status = superio_dma_sff_read_status,
54354 + };
54355 +
54356 +-static const struct ide_port_info ns87415_chipset __devinitdata = {
54357 ++static const struct ide_port_info ns87415_chipset __devinitconst = {
54358 + .name = DRV_NAME,
54359 + .init_hwif = init_hwif_ns87415,
54360 + .tp_ops = &ns87415_tp_ops,
54361 +diff -urNp linux-3.0.8/drivers/ide/opti621.c linux-3.0.8/drivers/ide/opti621.c
54362 +--- linux-3.0.8/drivers/ide/opti621.c 2011-07-21 22:17:23.000000000 -0400
54363 ++++ linux-3.0.8/drivers/ide/opti621.c 2011-10-11 10:44:33.000000000 -0400
54364 +@@ -131,7 +131,7 @@ static const struct ide_port_ops opti621
54365 + .set_pio_mode = opti621_set_pio_mode,
54366 + };
54367 +
54368 +-static const struct ide_port_info opti621_chipset __devinitdata = {
54369 ++static const struct ide_port_info opti621_chipset __devinitconst = {
54370 + .name = DRV_NAME,
54371 + .enablebits = { {0x45, 0x80, 0x00}, {0x40, 0x08, 0x00} },
54372 + .port_ops = &opti621_port_ops,
54373 +diff -urNp linux-3.0.8/drivers/ide/pdc202xx_new.c linux-3.0.8/drivers/ide/pdc202xx_new.c
54374 +--- linux-3.0.8/drivers/ide/pdc202xx_new.c 2011-07-21 22:17:23.000000000 -0400
54375 ++++ linux-3.0.8/drivers/ide/pdc202xx_new.c 2011-10-11 10:44:33.000000000 -0400
54376 +@@ -465,7 +465,7 @@ static const struct ide_port_ops pdcnew_
54377 + .udma_mask = udma, \
54378 + }
54379 +
54380 +-static const struct ide_port_info pdcnew_chipsets[] __devinitdata = {
54381 ++static const struct ide_port_info pdcnew_chipsets[] __devinitconst = {
54382 + /* 0: PDC202{68,70} */ DECLARE_PDCNEW_DEV(ATA_UDMA5),
54383 + /* 1: PDC202{69,71,75,76,77} */ DECLARE_PDCNEW_DEV(ATA_UDMA6),
54384 + };
54385 +diff -urNp linux-3.0.8/drivers/ide/pdc202xx_old.c linux-3.0.8/drivers/ide/pdc202xx_old.c
54386 +--- linux-3.0.8/drivers/ide/pdc202xx_old.c 2011-07-21 22:17:23.000000000 -0400
54387 ++++ linux-3.0.8/drivers/ide/pdc202xx_old.c 2011-10-11 10:44:33.000000000 -0400
54388 +@@ -270,7 +270,7 @@ static const struct ide_dma_ops pdc2026x
54389 + .max_sectors = sectors, \
54390 + }
54391 +
54392 +-static const struct ide_port_info pdc202xx_chipsets[] __devinitdata = {
54393 ++static const struct ide_port_info pdc202xx_chipsets[] __devinitconst = {
54394 + { /* 0: PDC20246 */
54395 + .name = DRV_NAME,
54396 + .init_chipset = init_chipset_pdc202xx,
54397 +diff -urNp linux-3.0.8/drivers/ide/piix.c linux-3.0.8/drivers/ide/piix.c
54398 +--- linux-3.0.8/drivers/ide/piix.c 2011-07-21 22:17:23.000000000 -0400
54399 ++++ linux-3.0.8/drivers/ide/piix.c 2011-10-11 10:44:33.000000000 -0400
54400 +@@ -344,7 +344,7 @@ static const struct ide_port_ops ich_por
54401 + .udma_mask = udma, \
54402 + }
54403 +
54404 +-static const struct ide_port_info piix_pci_info[] __devinitdata = {
54405 ++static const struct ide_port_info piix_pci_info[] __devinitconst = {
54406 + /* 0: MPIIX */
54407 + { /*
54408 + * MPIIX actually has only a single IDE channel mapped to
54409 +diff -urNp linux-3.0.8/drivers/ide/rz1000.c linux-3.0.8/drivers/ide/rz1000.c
54410 +--- linux-3.0.8/drivers/ide/rz1000.c 2011-07-21 22:17:23.000000000 -0400
54411 ++++ linux-3.0.8/drivers/ide/rz1000.c 2011-10-11 10:44:33.000000000 -0400
54412 +@@ -38,7 +38,7 @@ static int __devinit rz1000_disable_read
54413 + }
54414 + }
54415 +
54416 +-static const struct ide_port_info rz1000_chipset __devinitdata = {
54417 ++static const struct ide_port_info rz1000_chipset __devinitconst = {
54418 + .name = DRV_NAME,
54419 + .host_flags = IDE_HFLAG_NO_DMA,
54420 + };
54421 +diff -urNp linux-3.0.8/drivers/ide/sc1200.c linux-3.0.8/drivers/ide/sc1200.c
54422 +--- linux-3.0.8/drivers/ide/sc1200.c 2011-07-21 22:17:23.000000000 -0400
54423 ++++ linux-3.0.8/drivers/ide/sc1200.c 2011-10-11 10:44:33.000000000 -0400
54424 +@@ -291,7 +291,7 @@ static const struct ide_dma_ops sc1200_d
54425 + .dma_sff_read_status = ide_dma_sff_read_status,
54426 + };
54427 +
54428 +-static const struct ide_port_info sc1200_chipset __devinitdata = {
54429 ++static const struct ide_port_info sc1200_chipset __devinitconst = {
54430 + .name = DRV_NAME,
54431 + .port_ops = &sc1200_port_ops,
54432 + .dma_ops = &sc1200_dma_ops,
54433 +diff -urNp linux-3.0.8/drivers/ide/scc_pata.c linux-3.0.8/drivers/ide/scc_pata.c
54434 +--- linux-3.0.8/drivers/ide/scc_pata.c 2011-07-21 22:17:23.000000000 -0400
54435 ++++ linux-3.0.8/drivers/ide/scc_pata.c 2011-10-11 10:44:33.000000000 -0400
54436 +@@ -811,7 +811,7 @@ static const struct ide_dma_ops scc_dma_
54437 + .dma_sff_read_status = scc_dma_sff_read_status,
54438 + };
54439 +
54440 +-static const struct ide_port_info scc_chipset __devinitdata = {
54441 ++static const struct ide_port_info scc_chipset __devinitconst = {
54442 + .name = "sccIDE",
54443 + .init_iops = init_iops_scc,
54444 + .init_dma = scc_init_dma,
54445 +diff -urNp linux-3.0.8/drivers/ide/serverworks.c linux-3.0.8/drivers/ide/serverworks.c
54446 +--- linux-3.0.8/drivers/ide/serverworks.c 2011-07-21 22:17:23.000000000 -0400
54447 ++++ linux-3.0.8/drivers/ide/serverworks.c 2011-10-11 10:44:33.000000000 -0400
54448 +@@ -337,7 +337,7 @@ static const struct ide_port_ops svwks_p
54449 + .cable_detect = svwks_cable_detect,
54450 + };
54451 +
54452 +-static const struct ide_port_info serverworks_chipsets[] __devinitdata = {
54453 ++static const struct ide_port_info serverworks_chipsets[] __devinitconst = {
54454 + { /* 0: OSB4 */
54455 + .name = DRV_NAME,
54456 + .init_chipset = init_chipset_svwks,
54457 +diff -urNp linux-3.0.8/drivers/ide/setup-pci.c linux-3.0.8/drivers/ide/setup-pci.c
54458 +--- linux-3.0.8/drivers/ide/setup-pci.c 2011-07-21 22:17:23.000000000 -0400
54459 ++++ linux-3.0.8/drivers/ide/setup-pci.c 2011-08-23 21:48:14.000000000 -0400
54460 @@ -542,6 +542,8 @@ int ide_pci_init_two(struct pci_dev *dev
54461 int ret, i, n_ports = dev2 ? 4 : 2;
54462 struct ide_hw hw[4], *hws[] = { NULL, NULL, NULL, NULL };
54463 @@ -31492,72 +28072,106 @@ diff -urNp linux-2.6.32.48/drivers/ide/setup-pci.c linux-2.6.32.48/drivers/ide/s
54464 for (i = 0; i < n_ports / 2; i++) {
54465 ret = ide_setup_pci_controller(pdev[i], d, !i);
54466 if (ret < 0)
54467 -diff -urNp linux-2.6.32.48/drivers/ieee1394/dv1394.c linux-2.6.32.48/drivers/ieee1394/dv1394.c
54468 ---- linux-2.6.32.48/drivers/ieee1394/dv1394.c 2009-12-02 22:51:21.000000000 -0500
54469 -+++ linux-2.6.32.48/drivers/ieee1394/dv1394.c 2011-11-12 12:46:45.000000000 -0500
54470 -@@ -739,7 +739,7 @@ static void frame_prepare(struct video_c
54471 - based upon DIF section and sequence
54472 - */
54473 +diff -urNp linux-3.0.8/drivers/ide/siimage.c linux-3.0.8/drivers/ide/siimage.c
54474 +--- linux-3.0.8/drivers/ide/siimage.c 2011-07-21 22:17:23.000000000 -0400
54475 ++++ linux-3.0.8/drivers/ide/siimage.c 2011-10-11 10:44:33.000000000 -0400
54476 +@@ -719,7 +719,7 @@ static const struct ide_dma_ops sil_dma_
54477 + .udma_mask = ATA_UDMA6, \
54478 + }
54479
54480 --static void inline
54481 -+static inline void
54482 - frame_put_packet (struct frame *f, struct packet *p)
54483 - {
54484 - int section_type = p->data[0] >> 5; /* section type is in bits 5 - 7 */
54485 -diff -urNp linux-2.6.32.48/drivers/ieee1394/hosts.c linux-2.6.32.48/drivers/ieee1394/hosts.c
54486 ---- linux-2.6.32.48/drivers/ieee1394/hosts.c 2009-12-02 22:51:21.000000000 -0500
54487 -+++ linux-2.6.32.48/drivers/ieee1394/hosts.c 2011-11-12 12:46:45.000000000 -0500
54488 -@@ -78,6 +78,7 @@ static int dummy_isoctl(struct hpsb_iso
54489 - }
54490 -
54491 - static struct hpsb_host_driver dummy_driver = {
54492 -+ .name = "dummy",
54493 - .transmit_packet = dummy_transmit_packet,
54494 - .devctl = dummy_devctl,
54495 - .isoctl = dummy_isoctl
54496 -diff -urNp linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c
54497 ---- linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c 2009-12-02 22:51:21.000000000 -0500
54498 -+++ linux-2.6.32.48/drivers/ieee1394/init_ohci1394_dma.c 2011-11-12 12:46:45.000000000 -0500
54499 -@@ -257,7 +257,7 @@ void __init init_ohci1394_dma_on_all_con
54500 - for (func = 0; func < 8; func++) {
54501 - u32 class = read_pci_config(num,slot,func,
54502 - PCI_CLASS_REVISION);
54503 -- if ((class == 0xffffffff))
54504 -+ if (class == 0xffffffff)
54505 - continue; /* No device at this func */
54506 -
54507 - if (class>>8 != PCI_CLASS_SERIAL_FIREWIRE_OHCI)
54508 -diff -urNp linux-2.6.32.48/drivers/ieee1394/ohci1394.c linux-2.6.32.48/drivers/ieee1394/ohci1394.c
54509 ---- linux-2.6.32.48/drivers/ieee1394/ohci1394.c 2009-12-02 22:51:21.000000000 -0500
54510 -+++ linux-2.6.32.48/drivers/ieee1394/ohci1394.c 2011-11-12 12:46:45.000000000 -0500
54511 -@@ -147,9 +147,9 @@ printk(level "%s: " fmt "\n" , OHCI1394_
54512 - printk(level "%s: fw-host%d: " fmt "\n" , OHCI1394_DRIVER_NAME, ohci->host->id , ## args)
54513 -
54514 - /* Module Parameters */
54515 --static int phys_dma = 1;
54516 -+static int phys_dma;
54517 - module_param(phys_dma, int, 0444);
54518 --MODULE_PARM_DESC(phys_dma, "Enable physical DMA (default = 1).");
54519 -+MODULE_PARM_DESC(phys_dma, "Enable physical DMA (default = 0).");
54520 -
54521 - static void dma_trm_tasklet(unsigned long data);
54522 - static void dma_trm_reset(struct dma_trm_ctx *d);
54523 -diff -urNp linux-2.6.32.48/drivers/ieee1394/sbp2.c linux-2.6.32.48/drivers/ieee1394/sbp2.c
54524 ---- linux-2.6.32.48/drivers/ieee1394/sbp2.c 2009-12-02 22:51:21.000000000 -0500
54525 -+++ linux-2.6.32.48/drivers/ieee1394/sbp2.c 2011-11-12 12:46:45.000000000 -0500
54526 -@@ -2111,7 +2111,7 @@ MODULE_DESCRIPTION("IEEE-1394 SBP-2 prot
54527 - MODULE_SUPPORTED_DEVICE(SBP2_DEVICE_NAME);
54528 - MODULE_LICENSE("GPL");
54529 +-static const struct ide_port_info siimage_chipsets[] __devinitdata = {
54530 ++static const struct ide_port_info siimage_chipsets[] __devinitconst = {
54531 + /* 0: SiI680 */ DECLARE_SII_DEV(&sil_pata_port_ops),
54532 + /* 1: SiI3112 */ DECLARE_SII_DEV(&sil_sata_port_ops)
54533 + };
54534 +diff -urNp linux-3.0.8/drivers/ide/sis5513.c linux-3.0.8/drivers/ide/sis5513.c
54535 +--- linux-3.0.8/drivers/ide/sis5513.c 2011-07-21 22:17:23.000000000 -0400
54536 ++++ linux-3.0.8/drivers/ide/sis5513.c 2011-10-11 10:44:33.000000000 -0400
54537 +@@ -563,7 +563,7 @@ static const struct ide_port_ops sis_ata
54538 + .cable_detect = sis_cable_detect,
54539 + };
54540
54541 --static int sbp2_module_init(void)
54542 -+static int __init sbp2_module_init(void)
54543 - {
54544 - int ret;
54545 +-static const struct ide_port_info sis5513_chipset __devinitdata = {
54546 ++static const struct ide_port_info sis5513_chipset __devinitconst = {
54547 + .name = DRV_NAME,
54548 + .init_chipset = init_chipset_sis5513,
54549 + .enablebits = { {0x4a, 0x02, 0x02}, {0x4a, 0x04, 0x04} },
54550 +diff -urNp linux-3.0.8/drivers/ide/sl82c105.c linux-3.0.8/drivers/ide/sl82c105.c
54551 +--- linux-3.0.8/drivers/ide/sl82c105.c 2011-07-21 22:17:23.000000000 -0400
54552 ++++ linux-3.0.8/drivers/ide/sl82c105.c 2011-10-11 10:44:33.000000000 -0400
54553 +@@ -299,7 +299,7 @@ static const struct ide_dma_ops sl82c105
54554 + .dma_sff_read_status = ide_dma_sff_read_status,
54555 + };
54556 +
54557 +-static const struct ide_port_info sl82c105_chipset __devinitdata = {
54558 ++static const struct ide_port_info sl82c105_chipset __devinitconst = {
54559 + .name = DRV_NAME,
54560 + .init_chipset = init_chipset_sl82c105,
54561 + .enablebits = {{0x40,0x01,0x01}, {0x40,0x10,0x10}},
54562 +diff -urNp linux-3.0.8/drivers/ide/slc90e66.c linux-3.0.8/drivers/ide/slc90e66.c
54563 +--- linux-3.0.8/drivers/ide/slc90e66.c 2011-07-21 22:17:23.000000000 -0400
54564 ++++ linux-3.0.8/drivers/ide/slc90e66.c 2011-10-11 10:44:33.000000000 -0400
54565 +@@ -132,7 +132,7 @@ static const struct ide_port_ops slc90e6
54566 + .cable_detect = slc90e66_cable_detect,
54567 + };
54568 +
54569 +-static const struct ide_port_info slc90e66_chipset __devinitdata = {
54570 ++static const struct ide_port_info slc90e66_chipset __devinitconst = {
54571 + .name = DRV_NAME,
54572 + .enablebits = { {0x41, 0x80, 0x80}, {0x43, 0x80, 0x80} },
54573 + .port_ops = &slc90e66_port_ops,
54574 +diff -urNp linux-3.0.8/drivers/ide/tc86c001.c linux-3.0.8/drivers/ide/tc86c001.c
54575 +--- linux-3.0.8/drivers/ide/tc86c001.c 2011-07-21 22:17:23.000000000 -0400
54576 ++++ linux-3.0.8/drivers/ide/tc86c001.c 2011-10-11 10:44:33.000000000 -0400
54577 +@@ -191,7 +191,7 @@ static const struct ide_dma_ops tc86c001
54578 + .dma_sff_read_status = ide_dma_sff_read_status,
54579 + };
54580 +
54581 +-static const struct ide_port_info tc86c001_chipset __devinitdata = {
54582 ++static const struct ide_port_info tc86c001_chipset __devinitconst = {
54583 + .name = DRV_NAME,
54584 + .init_hwif = init_hwif_tc86c001,
54585 + .port_ops = &tc86c001_port_ops,
54586 +diff -urNp linux-3.0.8/drivers/ide/triflex.c linux-3.0.8/drivers/ide/triflex.c
54587 +--- linux-3.0.8/drivers/ide/triflex.c 2011-07-21 22:17:23.000000000 -0400
54588 ++++ linux-3.0.8/drivers/ide/triflex.c 2011-10-11 10:44:33.000000000 -0400
54589 +@@ -92,7 +92,7 @@ static const struct ide_port_ops triflex
54590 + .set_dma_mode = triflex_set_mode,
54591 + };
54592 +
54593 +-static const struct ide_port_info triflex_device __devinitdata = {
54594 ++static const struct ide_port_info triflex_device __devinitconst = {
54595 + .name = DRV_NAME,
54596 + .enablebits = {{0x80, 0x01, 0x01}, {0x80, 0x02, 0x02}},
54597 + .port_ops = &triflex_port_ops,
54598 +diff -urNp linux-3.0.8/drivers/ide/trm290.c linux-3.0.8/drivers/ide/trm290.c
54599 +--- linux-3.0.8/drivers/ide/trm290.c 2011-07-21 22:17:23.000000000 -0400
54600 ++++ linux-3.0.8/drivers/ide/trm290.c 2011-10-11 10:44:33.000000000 -0400
54601 +@@ -324,7 +324,7 @@ static struct ide_dma_ops trm290_dma_ops
54602 + .dma_check = trm290_dma_check,
54603 + };
54604 +
54605 +-static const struct ide_port_info trm290_chipset __devinitdata = {
54606 ++static const struct ide_port_info trm290_chipset __devinitconst = {
54607 + .name = DRV_NAME,
54608 + .init_hwif = init_hwif_trm290,
54609 + .tp_ops = &trm290_tp_ops,
54610 +diff -urNp linux-3.0.8/drivers/ide/via82cxxx.c linux-3.0.8/drivers/ide/via82cxxx.c
54611 +--- linux-3.0.8/drivers/ide/via82cxxx.c 2011-07-21 22:17:23.000000000 -0400
54612 ++++ linux-3.0.8/drivers/ide/via82cxxx.c 2011-10-11 10:44:33.000000000 -0400
54613 +@@ -403,7 +403,7 @@ static const struct ide_port_ops via_por
54614 + .cable_detect = via82cxxx_cable_detect,
54615 + };
54616
54617 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/infiniband/core/cm.c
54618 ---- linux-2.6.32.48/drivers/infiniband/core/cm.c 2011-11-12 12:44:29.000000000 -0500
54619 -+++ linux-2.6.32.48/drivers/infiniband/core/cm.c 2011-11-12 12:46:45.000000000 -0500
54620 -@@ -112,7 +112,7 @@ static char const counter_group_names[CM
54621 +-static const struct ide_port_info via82cxxx_chipset __devinitdata = {
54622 ++static const struct ide_port_info via82cxxx_chipset __devinitconst = {
54623 + .name = DRV_NAME,
54624 + .init_chipset = init_chipset_via82cxxx,
54625 + .enablebits = { { 0x40, 0x02, 0x02 }, { 0x40, 0x01, 0x01 } },
54626 +diff -urNp linux-3.0.8/drivers/infiniband/core/cm.c linux-3.0.8/drivers/infiniband/core/cm.c
54627 +--- linux-3.0.8/drivers/infiniband/core/cm.c 2011-07-21 22:17:23.000000000 -0400
54628 ++++ linux-3.0.8/drivers/infiniband/core/cm.c 2011-08-23 21:47:55.000000000 -0400
54629 +@@ -113,7 +113,7 @@ static char const counter_group_names[CM
54630
54631 struct cm_counter_group {
54632 struct kobject obj;
54633 @@ -31566,7 +28180,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54634 };
54635
54636 struct cm_counter_attribute {
54637 -@@ -1386,7 +1386,7 @@ static void cm_dup_req_handler(struct cm
54638 +@@ -1387,7 +1387,7 @@ static void cm_dup_req_handler(struct cm
54639 struct ib_mad_send_buf *msg = NULL;
54640 int ret;
54641
54642 @@ -31575,7 +28189,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54643 counter[CM_REQ_COUNTER]);
54644
54645 /* Quick state check to discard duplicate REQs. */
54646 -@@ -1764,7 +1764,7 @@ static void cm_dup_rep_handler(struct cm
54647 +@@ -1765,7 +1765,7 @@ static void cm_dup_rep_handler(struct cm
54648 if (!cm_id_priv)
54649 return;
54650
54651 @@ -31584,7 +28198,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54652 counter[CM_REP_COUNTER]);
54653 ret = cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg);
54654 if (ret)
54655 -@@ -1931,7 +1931,7 @@ static int cm_rtu_handler(struct cm_work
54656 +@@ -1932,7 +1932,7 @@ static int cm_rtu_handler(struct cm_work
54657 if (cm_id_priv->id.state != IB_CM_REP_SENT &&
54658 cm_id_priv->id.state != IB_CM_MRA_REP_RCVD) {
54659 spin_unlock_irq(&cm_id_priv->lock);
54660 @@ -31593,7 +28207,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54661 counter[CM_RTU_COUNTER]);
54662 goto out;
54663 }
54664 -@@ -2110,7 +2110,7 @@ static int cm_dreq_handler(struct cm_wor
54665 +@@ -2115,7 +2115,7 @@ static int cm_dreq_handler(struct cm_wor
54666 cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id,
54667 dreq_msg->local_comm_id);
54668 if (!cm_id_priv) {
54669 @@ -31602,7 +28216,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54670 counter[CM_DREQ_COUNTER]);
54671 cm_issue_drep(work->port, work->mad_recv_wc);
54672 return -EINVAL;
54673 -@@ -2131,7 +2131,7 @@ static int cm_dreq_handler(struct cm_wor
54674 +@@ -2140,7 +2140,7 @@ static int cm_dreq_handler(struct cm_wor
54675 case IB_CM_MRA_REP_RCVD:
54676 break;
54677 case IB_CM_TIMEWAIT:
54678 @@ -31611,7 +28225,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54679 counter[CM_DREQ_COUNTER]);
54680 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
54681 goto unlock;
54682 -@@ -2145,7 +2145,7 @@ static int cm_dreq_handler(struct cm_wor
54683 +@@ -2154,7 +2154,7 @@ static int cm_dreq_handler(struct cm_wor
54684 cm_free_msg(msg);
54685 goto deref;
54686 case IB_CM_DREQ_RCVD:
54687 @@ -31620,7 +28234,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54688 counter[CM_DREQ_COUNTER]);
54689 goto unlock;
54690 default:
54691 -@@ -2501,7 +2501,7 @@ static int cm_mra_handler(struct cm_work
54692 +@@ -2521,7 +2521,7 @@ static int cm_mra_handler(struct cm_work
54693 ib_modify_mad(cm_id_priv->av.port->mad_agent,
54694 cm_id_priv->msg, timeout)) {
54695 if (cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD)
54696 @@ -31629,7 +28243,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54697 counter_group[CM_RECV_DUPLICATES].
54698 counter[CM_MRA_COUNTER]);
54699 goto out;
54700 -@@ -2510,7 +2510,7 @@ static int cm_mra_handler(struct cm_work
54701 +@@ -2530,7 +2530,7 @@ static int cm_mra_handler(struct cm_work
54702 break;
54703 case IB_CM_MRA_REQ_RCVD:
54704 case IB_CM_MRA_REP_RCVD:
54705 @@ -31638,7 +28252,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54706 counter[CM_MRA_COUNTER]);
54707 /* fall through */
54708 default:
54709 -@@ -2672,7 +2672,7 @@ static int cm_lap_handler(struct cm_work
54710 +@@ -2692,7 +2692,7 @@ static int cm_lap_handler(struct cm_work
54711 case IB_CM_LAP_IDLE:
54712 break;
54713 case IB_CM_MRA_LAP_SENT:
54714 @@ -31647,7 +28261,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54715 counter[CM_LAP_COUNTER]);
54716 if (cm_alloc_response_msg(work->port, work->mad_recv_wc, &msg))
54717 goto unlock;
54718 -@@ -2688,7 +2688,7 @@ static int cm_lap_handler(struct cm_work
54719 +@@ -2708,7 +2708,7 @@ static int cm_lap_handler(struct cm_work
54720 cm_free_msg(msg);
54721 goto deref;
54722 case IB_CM_LAP_RCVD:
54723 @@ -31656,7 +28270,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54724 counter[CM_LAP_COUNTER]);
54725 goto unlock;
54726 default:
54727 -@@ -2972,7 +2972,7 @@ static int cm_sidr_req_handler(struct cm
54728 +@@ -2992,7 +2992,7 @@ static int cm_sidr_req_handler(struct cm
54729 cur_cm_id_priv = cm_insert_remote_sidr(cm_id_priv);
54730 if (cur_cm_id_priv) {
54731 spin_unlock_irq(&cm.lock);
54732 @@ -31665,7 +28279,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54733 counter[CM_SIDR_REQ_COUNTER]);
54734 goto out; /* Duplicate message. */
54735 }
54736 -@@ -3184,10 +3184,10 @@ static void cm_send_handler(struct ib_ma
54737 +@@ -3204,10 +3204,10 @@ static void cm_send_handler(struct ib_ma
54738 if (!msg->context[0] && (attr_index != CM_REJ_COUNTER))
54739 msg->retries = 1;
54740
54741 @@ -31678,7 +28292,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54742 &port->counter_group[CM_XMIT_RETRIES].
54743 counter[attr_index]);
54744
54745 -@@ -3397,7 +3397,7 @@ static void cm_recv_handler(struct ib_ma
54746 +@@ -3417,7 +3417,7 @@ static void cm_recv_handler(struct ib_ma
54747 }
54748
54749 attr_id = be16_to_cpu(mad_recv_wc->recv_buf.mad->mad_hdr.attr_id);
54750 @@ -31687,7 +28301,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54751 counter[attr_id - CM_ATTR_ID_OFFSET]);
54752
54753 work = kmalloc(sizeof *work + sizeof(struct ib_sa_path_rec) * paths,
54754 -@@ -3595,10 +3595,10 @@ static ssize_t cm_show_counter(struct ko
54755 +@@ -3615,7 +3615,7 @@ static ssize_t cm_show_counter(struct ko
54756 cm_attr = container_of(attr, struct cm_counter_attribute, attr);
54757
54758 return sprintf(buf, "%ld\n",
54759 @@ -31695,14 +28309,10 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/cm.c linux-2.6.32.48/drivers/
54760 + atomic_long_read_unchecked(&group->counter[cm_attr->index]));
54761 }
54762
54763 --static struct sysfs_ops cm_counter_ops = {
54764 -+static const struct sysfs_ops cm_counter_ops = {
54765 - .show = cm_show_counter
54766 - };
54767 -
54768 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c
54769 ---- linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c 2009-12-02 22:51:21.000000000 -0500
54770 -+++ linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c 2011-11-12 12:46:45.000000000 -0500
54771 + static const struct sysfs_ops cm_counter_ops = {
54772 +diff -urNp linux-3.0.8/drivers/infiniband/core/fmr_pool.c linux-3.0.8/drivers/infiniband/core/fmr_pool.c
54773 +--- linux-3.0.8/drivers/infiniband/core/fmr_pool.c 2011-07-21 22:17:23.000000000 -0400
54774 ++++ linux-3.0.8/drivers/infiniband/core/fmr_pool.c 2011-08-23 21:47:55.000000000 -0400
54775 @@ -97,8 +97,8 @@ struct ib_fmr_pool {
54776
54777 struct task_struct *thread;
54778 @@ -31770,55 +28380,31 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/core/fmr_pool.c linux-2.6.32.48/dr
54779 wake_up_process(pool->thread);
54780 }
54781 }
54782 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/sysfs.c linux-2.6.32.48/drivers/infiniband/core/sysfs.c
54783 ---- linux-2.6.32.48/drivers/infiniband/core/sysfs.c 2009-12-02 22:51:21.000000000 -0500
54784 -+++ linux-2.6.32.48/drivers/infiniband/core/sysfs.c 2011-11-12 12:46:45.000000000 -0500
54785 -@@ -79,7 +79,7 @@ static ssize_t port_attr_show(struct kob
54786 - return port_attr->show(p, port_attr, buf);
54787 - }
54788 -
54789 --static struct sysfs_ops port_sysfs_ops = {
54790 -+static const struct sysfs_ops port_sysfs_ops = {
54791 - .show = port_attr_show
54792 - };
54793 +diff -urNp linux-3.0.8/drivers/infiniband/hw/cxgb4/mem.c linux-3.0.8/drivers/infiniband/hw/cxgb4/mem.c
54794 +--- linux-3.0.8/drivers/infiniband/hw/cxgb4/mem.c 2011-07-21 22:17:23.000000000 -0400
54795 ++++ linux-3.0.8/drivers/infiniband/hw/cxgb4/mem.c 2011-08-23 21:47:55.000000000 -0400
54796 +@@ -122,7 +122,7 @@ static int write_tpt_entry(struct c4iw_r
54797 + int err;
54798 + struct fw_ri_tpte tpt;
54799 + u32 stag_idx;
54800 +- static atomic_t key;
54801 ++ static atomic_unchecked_t key;
54802
54803 -diff -urNp linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c
54804 ---- linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c 2009-12-02 22:51:21.000000000 -0500
54805 -+++ linux-2.6.32.48/drivers/infiniband/core/uverbs_marshall.c 2011-11-12 12:46:45.000000000 -0500
54806 -@@ -40,18 +40,21 @@ void ib_copy_ah_attr_to_user(struct ib_u
54807 - dst->grh.sgid_index = src->grh.sgid_index;
54808 - dst->grh.hop_limit = src->grh.hop_limit;
54809 - dst->grh.traffic_class = src->grh.traffic_class;
54810 -+ memset(&dst->grh.reserved, 0, sizeof(dst->grh.reserved));
54811 - dst->dlid = src->dlid;
54812 - dst->sl = src->sl;
54813 - dst->src_path_bits = src->src_path_bits;
54814 - dst->static_rate = src->static_rate;
54815 - dst->is_global = src->ah_flags & IB_AH_GRH ? 1 : 0;
54816 - dst->port_num = src->port_num;
54817 -+ dst->reserved = 0;
54818 - }
54819 - EXPORT_SYMBOL(ib_copy_ah_attr_to_user);
54820 -
54821 - void ib_copy_qp_attr_to_user(struct ib_uverbs_qp_attr *dst,
54822 - struct ib_qp_attr *src)
54823 - {
54824 -+ dst->qp_state = src->qp_state;
54825 - dst->cur_qp_state = src->cur_qp_state;
54826 - dst->path_mtu = src->path_mtu;
54827 - dst->path_mig_state = src->path_mig_state;
54828 -@@ -83,6 +86,7 @@ void ib_copy_qp_attr_to_user(struct ib_u
54829 - dst->rnr_retry = src->rnr_retry;
54830 - dst->alt_port_num = src->alt_port_num;
54831 - dst->alt_timeout = src->alt_timeout;
54832 -+ memset(dst->reserved, 0, sizeof(dst->reserved));
54833 - }
54834 - EXPORT_SYMBOL(ib_copy_qp_attr_to_user);
54835 -
54836 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c
54837 ---- linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-12 12:44:29.000000000 -0500
54838 -+++ linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c 2011-11-12 12:46:45.000000000 -0500
54839 -@@ -110,6 +110,8 @@ static ssize_t atomic_counters_read(stru
54840 + if (c4iw_fatal_error(rdev))
54841 + return -EIO;
54842 +@@ -135,7 +135,7 @@ static int write_tpt_entry(struct c4iw_r
54843 + &rdev->resource.tpt_fifo_lock);
54844 + if (!stag_idx)
54845 + return -ENOMEM;
54846 +- *stag = (stag_idx << 8) | (atomic_inc_return(&key) & 0xff);
54847 ++ *stag = (stag_idx << 8) | (atomic_inc_return_unchecked(&key) & 0xff);
54848 + }
54849 + PDBG("%s stag_state 0x%0x type 0x%0x pdid 0x%0x, stag_idx 0x%x\n",
54850 + __func__, stag_state, type, pdid, stag_idx);
54851 +diff -urNp linux-3.0.8/drivers/infiniband/hw/ipath/ipath_fs.c linux-3.0.8/drivers/infiniband/hw/ipath/ipath_fs.c
54852 +--- linux-3.0.8/drivers/infiniband/hw/ipath/ipath_fs.c 2011-07-21 22:17:23.000000000 -0400
54853 ++++ linux-3.0.8/drivers/infiniband/hw/ipath/ipath_fs.c 2011-08-23 21:48:14.000000000 -0400
54854 +@@ -113,6 +113,8 @@ static ssize_t atomic_counters_read(stru
54855 struct infinipath_counters counters;
54856 struct ipath_devdata *dd;
54857
54858 @@ -31827,10 +28413,62 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/ipath/ipath_fs.c linux-2.6.32.4
54859 dd = file->f_path.dentry->d_inode->i_private;
54860 dd->ipath_f_read_counters(dd, &counters);
54861
54862 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c
54863 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c 2009-12-02 22:51:21.000000000 -0500
54864 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c 2011-11-12 12:46:45.000000000 -0500
54865 -@@ -102,7 +102,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limi
54866 +diff -urNp linux-3.0.8/drivers/infiniband/hw/ipath/ipath_rc.c linux-3.0.8/drivers/infiniband/hw/ipath/ipath_rc.c
54867 +--- linux-3.0.8/drivers/infiniband/hw/ipath/ipath_rc.c 2011-07-21 22:17:23.000000000 -0400
54868 ++++ linux-3.0.8/drivers/infiniband/hw/ipath/ipath_rc.c 2011-08-23 21:47:55.000000000 -0400
54869 +@@ -1868,7 +1868,7 @@ void ipath_rc_rcv(struct ipath_ibdev *de
54870 + struct ib_atomic_eth *ateth;
54871 + struct ipath_ack_entry *e;
54872 + u64 vaddr;
54873 +- atomic64_t *maddr;
54874 ++ atomic64_unchecked_t *maddr;
54875 + u64 sdata;
54876 + u32 rkey;
54877 + u8 next;
54878 +@@ -1903,11 +1903,11 @@ void ipath_rc_rcv(struct ipath_ibdev *de
54879 + IB_ACCESS_REMOTE_ATOMIC)))
54880 + goto nack_acc_unlck;
54881 + /* Perform atomic OP and save result. */
54882 +- maddr = (atomic64_t *) qp->r_sge.sge.vaddr;
54883 ++ maddr = (atomic64_unchecked_t *) qp->r_sge.sge.vaddr;
54884 + sdata = be64_to_cpu(ateth->swap_data);
54885 + e = &qp->s_ack_queue[qp->r_head_ack_queue];
54886 + e->atomic_data = (opcode == OP(FETCH_ADD)) ?
54887 +- (u64) atomic64_add_return(sdata, maddr) - sdata :
54888 ++ (u64) atomic64_add_return_unchecked(sdata, maddr) - sdata :
54889 + (u64) cmpxchg((u64 *) qp->r_sge.sge.vaddr,
54890 + be64_to_cpu(ateth->compare_data),
54891 + sdata);
54892 +diff -urNp linux-3.0.8/drivers/infiniband/hw/ipath/ipath_ruc.c linux-3.0.8/drivers/infiniband/hw/ipath/ipath_ruc.c
54893 +--- linux-3.0.8/drivers/infiniband/hw/ipath/ipath_ruc.c 2011-07-21 22:17:23.000000000 -0400
54894 ++++ linux-3.0.8/drivers/infiniband/hw/ipath/ipath_ruc.c 2011-08-23 21:47:55.000000000 -0400
54895 +@@ -266,7 +266,7 @@ static void ipath_ruc_loopback(struct ip
54896 + unsigned long flags;
54897 + struct ib_wc wc;
54898 + u64 sdata;
54899 +- atomic64_t *maddr;
54900 ++ atomic64_unchecked_t *maddr;
54901 + enum ib_wc_status send_status;
54902 +
54903 + /*
54904 +@@ -382,11 +382,11 @@ again:
54905 + IB_ACCESS_REMOTE_ATOMIC)))
54906 + goto acc_err;
54907 + /* Perform atomic OP and save result. */
54908 +- maddr = (atomic64_t *) qp->r_sge.sge.vaddr;
54909 ++ maddr = (atomic64_unchecked_t *) qp->r_sge.sge.vaddr;
54910 + sdata = wqe->wr.wr.atomic.compare_add;
54911 + *(u64 *) sqp->s_sge.sge.vaddr =
54912 + (wqe->wr.opcode == IB_WR_ATOMIC_FETCH_AND_ADD) ?
54913 +- (u64) atomic64_add_return(sdata, maddr) - sdata :
54914 ++ (u64) atomic64_add_return_unchecked(sdata, maddr) - sdata :
54915 + (u64) cmpxchg((u64 *) qp->r_sge.sge.vaddr,
54916 + sdata, wqe->wr.wr.atomic.swap);
54917 + goto send_comp;
54918 +diff -urNp linux-3.0.8/drivers/infiniband/hw/nes/nes.c linux-3.0.8/drivers/infiniband/hw/nes/nes.c
54919 +--- linux-3.0.8/drivers/infiniband/hw/nes/nes.c 2011-07-21 22:17:23.000000000 -0400
54920 ++++ linux-3.0.8/drivers/infiniband/hw/nes/nes.c 2011-08-23 21:47:55.000000000 -0400
54921 +@@ -103,7 +103,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limi
54922 LIST_HEAD(nes_adapter_list);
54923 static LIST_HEAD(nes_dev_list);
54924
54925 @@ -31839,21 +28477,26 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.c linux-2.6.32.48/drive
54926
54927 static unsigned int ee_flsh_adapter;
54928 static unsigned int sysfs_nonidx_addr;
54929 -@@ -259,7 +259,7 @@ static void nes_cqp_rem_ref_callback(str
54930 +@@ -275,7 +275,7 @@ static void nes_cqp_rem_ref_callback(str
54931 + struct nes_qp *nesqp = cqp_request->cqp_callback_pointer;
54932 struct nes_adapter *nesadapter = nesdev->nesadapter;
54933 - u32 qp_id;
54934
54935 - atomic_inc(&qps_destroyed);
54936 + atomic_inc_unchecked(&qps_destroyed);
54937
54938 /* Free the control structures */
54939
54940 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c
54941 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c 2009-12-02 22:51:21.000000000 -0500
54942 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c 2011-11-12 12:46:45.000000000 -0500
54943 -@@ -69,11 +69,11 @@ u32 cm_packets_received;
54944 - u32 cm_listens_created;
54945 - u32 cm_listens_destroyed;
54946 +diff -urNp linux-3.0.8/drivers/infiniband/hw/nes/nes_cm.c linux-3.0.8/drivers/infiniband/hw/nes/nes_cm.c
54947 +--- linux-3.0.8/drivers/infiniband/hw/nes/nes_cm.c 2011-07-21 22:17:23.000000000 -0400
54948 ++++ linux-3.0.8/drivers/infiniband/hw/nes/nes_cm.c 2011-08-23 21:47:55.000000000 -0400
54949 +@@ -68,14 +68,14 @@ u32 cm_packets_dropped;
54950 + u32 cm_packets_retrans;
54951 + u32 cm_packets_created;
54952 + u32 cm_packets_received;
54953 +-atomic_t cm_listens_created;
54954 +-atomic_t cm_listens_destroyed;
54955 ++atomic_unchecked_t cm_listens_created;
54956 ++atomic_unchecked_t cm_listens_destroyed;
54957 u32 cm_backlog_drops;
54958 -atomic_t cm_loopbacks;
54959 -atomic_t cm_nodes_created;
54960 @@ -31868,7 +28511,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
54961
54962 static inline int mini_cm_accelerated(struct nes_cm_core *,
54963 struct nes_cm_node *);
54964 -@@ -149,13 +149,13 @@ static struct nes_cm_ops nes_cm_api = {
54965 +@@ -151,13 +151,13 @@ static struct nes_cm_ops nes_cm_api = {
54966
54967 static struct nes_cm_core *g_cm_core;
54968
54969 @@ -31889,7 +28532,16 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
54970
54971
54972 /**
54973 -@@ -1195,7 +1195,7 @@ static struct nes_cm_node *make_cm_node(
54974 +@@ -1045,7 +1045,7 @@ static int mini_cm_dec_refcnt_listen(str
54975 + kfree(listener);
54976 + listener = NULL;
54977 + ret = 0;
54978 +- atomic_inc(&cm_listens_destroyed);
54979 ++ atomic_inc_unchecked(&cm_listens_destroyed);
54980 + } else {
54981 + spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
54982 + }
54983 +@@ -1240,7 +1240,7 @@ static struct nes_cm_node *make_cm_node(
54984 cm_node->rem_mac);
54985
54986 add_hte_node(cm_core, cm_node);
54987 @@ -31898,7 +28550,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
54988
54989 return cm_node;
54990 }
54991 -@@ -1253,7 +1253,7 @@ static int rem_ref_cm_node(struct nes_cm
54992 +@@ -1298,7 +1298,7 @@ static int rem_ref_cm_node(struct nes_cm
54993 }
54994
54995 atomic_dec(&cm_core->node_cnt);
54996 @@ -31907,7 +28559,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
54997 nesqp = cm_node->nesqp;
54998 if (nesqp) {
54999 nesqp->cm_node = NULL;
55000 -@@ -1320,7 +1320,7 @@ static int process_options(struct nes_cm
55001 +@@ -1365,7 +1365,7 @@ static int process_options(struct nes_cm
55002
55003 static void drop_packet(struct sk_buff *skb)
55004 {
55005 @@ -31916,16 +28568,16 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55006 dev_kfree_skb_any(skb);
55007 }
55008
55009 -@@ -1377,7 +1377,7 @@ static void handle_rst_pkt(struct nes_cm
55010 +@@ -1428,7 +1428,7 @@ static void handle_rst_pkt(struct nes_cm
55011 + {
55012
55013 int reset = 0; /* whether to send reset in case of err.. */
55014 - int passive_state;
55015 - atomic_inc(&cm_resets_recvd);
55016 + atomic_inc_unchecked(&cm_resets_recvd);
55017 nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
55018 " refcnt=%d\n", cm_node, cm_node->state,
55019 atomic_read(&cm_node->ref_count));
55020 -@@ -2000,7 +2000,7 @@ static struct nes_cm_node *mini_cm_conne
55021 +@@ -2057,7 +2057,7 @@ static struct nes_cm_node *mini_cm_conne
55022 rem_ref_cm_node(cm_node->cm_core, cm_node);
55023 return NULL;
55024 }
55025 @@ -31934,7 +28586,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55026 loopbackremotenode->loopbackpartner = cm_node;
55027 loopbackremotenode->tcp_cntxt.rcv_wscale =
55028 NES_CM_DEFAULT_RCV_WND_SCALE;
55029 -@@ -2262,7 +2262,7 @@ static int mini_cm_recv_pkt(struct nes_c
55030 +@@ -2332,7 +2332,7 @@ static int mini_cm_recv_pkt(struct nes_c
55031 add_ref_cm_node(cm_node);
55032 } else if (cm_node->state == NES_CM_STATE_TSA) {
55033 rem_ref_cm_node(cm_core, cm_node);
55034 @@ -31943,7 +28595,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55035 dev_kfree_skb_any(skb);
55036 break;
55037 }
55038 -@@ -2568,7 +2568,7 @@ static int nes_cm_disconn_true(struct ne
55039 +@@ -2638,7 +2638,7 @@ static int nes_cm_disconn_true(struct ne
55040
55041 if ((cm_id) && (cm_id->event_handler)) {
55042 if (issue_disconn) {
55043 @@ -31952,7 +28604,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55044 cm_event.event = IW_CM_EVENT_DISCONNECT;
55045 cm_event.status = disconn_status;
55046 cm_event.local_addr = cm_id->local_addr;
55047 -@@ -2590,7 +2590,7 @@ static int nes_cm_disconn_true(struct ne
55048 +@@ -2660,7 +2660,7 @@ static int nes_cm_disconn_true(struct ne
55049 }
55050
55051 if (issue_close) {
55052 @@ -31961,7 +28613,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55053 nes_disconnect(nesqp, 1);
55054
55055 cm_id->provider_data = nesqp;
55056 -@@ -2710,7 +2710,7 @@ int nes_accept(struct iw_cm_id *cm_id, s
55057 +@@ -2791,7 +2791,7 @@ int nes_accept(struct iw_cm_id *cm_id, s
55058
55059 nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n",
55060 nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener);
55061 @@ -31969,8 +28621,8 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55062 + atomic_inc_unchecked(&cm_accepts);
55063
55064 nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
55065 - atomic_read(&nesvnic->netdev->refcnt));
55066 -@@ -2919,7 +2919,7 @@ int nes_reject(struct iw_cm_id *cm_id, c
55067 + netdev_refcnt_read(nesvnic->netdev));
55068 +@@ -3001,7 +3001,7 @@ int nes_reject(struct iw_cm_id *cm_id, c
55069
55070 struct nes_cm_core *cm_core;
55071
55072 @@ -31979,7 +28631,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55073 cm_node = (struct nes_cm_node *) cm_id->provider_data;
55074 loopback = cm_node->loopbackpartner;
55075 cm_core = cm_node->cm_core;
55076 -@@ -2982,7 +2982,7 @@ int nes_connect(struct iw_cm_id *cm_id,
55077 +@@ -3067,7 +3067,7 @@ int nes_connect(struct iw_cm_id *cm_id,
55078 ntohl(cm_id->local_addr.sin_addr.s_addr),
55079 ntohs(cm_id->local_addr.sin_port));
55080
55081 @@ -31988,7 +28640,16 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55082 nesqp->active_conn = 1;
55083
55084 /* cache the cm_id in the qp */
55085 -@@ -3195,7 +3195,7 @@ static void cm_event_connected(struct ne
55086 +@@ -3173,7 +3173,7 @@ int nes_create_listen(struct iw_cm_id *c
55087 + g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
55088 + return err;
55089 + }
55090 +- atomic_inc(&cm_listens_created);
55091 ++ atomic_inc_unchecked(&cm_listens_created);
55092 + }
55093 +
55094 + cm_id->add_ref(cm_id);
55095 +@@ -3278,7 +3278,7 @@ static void cm_event_connected(struct ne
55096 if (nesqp->destroyed) {
55097 return;
55098 }
55099 @@ -31997,16 +28658,16 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55100 nes_debug(NES_DBG_CM, "QP%u attempting to connect to 0x%08X:0x%04X on"
55101 " local port 0x%04X. jiffies = %lu.\n",
55102 nesqp->hwqp.qp_id,
55103 -@@ -3403,7 +3403,7 @@ static void cm_event_reset(struct nes_cm
55104 +@@ -3493,7 +3493,7 @@ static void cm_event_reset(struct nes_cm
55105
55106 - ret = cm_id->event_handler(cm_id, &cm_event);
55107 cm_id->add_ref(cm_id);
55108 + ret = cm_id->event_handler(cm_id, &cm_event);
55109 - atomic_inc(&cm_closes);
55110 + atomic_inc_unchecked(&cm_closes);
55111 cm_event.event = IW_CM_EVENT_CLOSE;
55112 - cm_event.status = IW_CM_EVENT_STATUS_OK;
55113 + cm_event.status = 0;
55114 cm_event.provider_data = cm_id->provider_data;
55115 -@@ -3439,7 +3439,7 @@ static void cm_event_mpa_req(struct nes_
55116 +@@ -3529,7 +3529,7 @@ static void cm_event_mpa_req(struct nes_
55117 return;
55118 cm_id = cm_node->cm_id;
55119
55120 @@ -32015,7 +28676,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55121 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
55122 cm_node, cm_id, jiffies);
55123
55124 -@@ -3477,7 +3477,7 @@ static void cm_event_mpa_reject(struct n
55125 +@@ -3567,7 +3567,7 @@ static void cm_event_mpa_reject(struct n
55126 return;
55127 cm_id = cm_node->cm_id;
55128
55129 @@ -32024,10 +28685,10 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.32.48/dr
55130 nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
55131 cm_node, cm_id, jiffies);
55132
55133 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h
55134 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h 2009-12-02 22:51:21.000000000 -0500
55135 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h 2011-11-12 12:46:45.000000000 -0500
55136 -@@ -174,17 +174,17 @@ extern unsigned int nes_debug_level;
55137 +diff -urNp linux-3.0.8/drivers/infiniband/hw/nes/nes.h linux-3.0.8/drivers/infiniband/hw/nes/nes.h
55138 +--- linux-3.0.8/drivers/infiniband/hw/nes/nes.h 2011-07-21 22:17:23.000000000 -0400
55139 ++++ linux-3.0.8/drivers/infiniband/hw/nes/nes.h 2011-08-23 21:47:55.000000000 -0400
55140 +@@ -175,17 +175,17 @@ extern unsigned int nes_debug_level;
55141 extern unsigned int wqm_quanta;
55142 extern struct list_head nes_adapter_list;
55143
55144 @@ -32056,9 +28717,14 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h linux-2.6.32.48/drive
55145 extern u32 mh_detected;
55146 extern u32 mh_pauses_sent;
55147 extern u32 cm_packets_sent;
55148 -@@ -196,11 +196,11 @@ extern u32 cm_packets_retrans;
55149 - extern u32 cm_listens_created;
55150 - extern u32 cm_listens_destroyed;
55151 +@@ -194,14 +194,14 @@ extern u32 cm_packets_created;
55152 + extern u32 cm_packets_received;
55153 + extern u32 cm_packets_dropped;
55154 + extern u32 cm_packets_retrans;
55155 +-extern atomic_t cm_listens_created;
55156 +-extern atomic_t cm_listens_destroyed;
55157 ++extern atomic_unchecked_t cm_listens_created;
55158 ++extern atomic_unchecked_t cm_listens_destroyed;
55159 extern u32 cm_backlog_drops;
55160 -extern atomic_t cm_loopbacks;
55161 -extern atomic_t cm_nodes_created;
55162 @@ -32073,10 +28739,10 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes.h linux-2.6.32.48/drive
55163
55164 extern u32 int_mod_timer_init;
55165 extern u32 int_mod_cq_depth_256;
55166 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c
55167 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c 2009-12-02 22:51:21.000000000 -0500
55168 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c 2011-11-12 12:46:45.000000000 -0500
55169 -@@ -1210,17 +1210,17 @@ static void nes_netdev_get_ethtool_stats
55170 +diff -urNp linux-3.0.8/drivers/infiniband/hw/nes/nes_nic.c linux-3.0.8/drivers/infiniband/hw/nes/nes_nic.c
55171 +--- linux-3.0.8/drivers/infiniband/hw/nes/nes_nic.c 2011-07-21 22:17:23.000000000 -0400
55172 ++++ linux-3.0.8/drivers/infiniband/hw/nes/nes_nic.c 2011-08-23 21:47:55.000000000 -0400
55173 +@@ -1274,31 +1274,31 @@ static void nes_netdev_get_ethtool_stats
55174 target_stat_values[++index] = mh_detected;
55175 target_stat_values[++index] = mh_pauses_sent;
55176 target_stat_values[++index] = nesvnic->endnode_ipv4_tcp_retransmits;
55177 @@ -32105,9 +28771,13 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c linux-2.6.32.48/d
55178 target_stat_values[++index] = cm_packets_sent;
55179 target_stat_values[++index] = cm_packets_bounced;
55180 target_stat_values[++index] = cm_packets_created;
55181 -@@ -1230,11 +1230,11 @@ static void nes_netdev_get_ethtool_stats
55182 - target_stat_values[++index] = cm_listens_created;
55183 - target_stat_values[++index] = cm_listens_destroyed;
55184 + target_stat_values[++index] = cm_packets_received;
55185 + target_stat_values[++index] = cm_packets_dropped;
55186 + target_stat_values[++index] = cm_packets_retrans;
55187 +- target_stat_values[++index] = atomic_read(&cm_listens_created);
55188 +- target_stat_values[++index] = atomic_read(&cm_listens_destroyed);
55189 ++ target_stat_values[++index] = atomic_read_unchecked(&cm_listens_created);
55190 ++ target_stat_values[++index] = atomic_read_unchecked(&cm_listens_destroyed);
55191 target_stat_values[++index] = cm_backlog_drops;
55192 - target_stat_values[++index] = atomic_read(&cm_loopbacks);
55193 - target_stat_values[++index] = atomic_read(&cm_nodes_created);
55194 @@ -32119,13 +28789,13 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_nic.c linux-2.6.32.48/d
55195 + target_stat_values[++index] = atomic_read_unchecked(&cm_nodes_destroyed);
55196 + target_stat_values[++index] = atomic_read_unchecked(&cm_accel_dropped_pkts);
55197 + target_stat_values[++index] = atomic_read_unchecked(&cm_resets_recvd);
55198 + target_stat_values[++index] = nesadapter->free_4kpbl;
55199 + target_stat_values[++index] = nesadapter->free_256pbl;
55200 target_stat_values[++index] = int_mod_timer_init;
55201 - target_stat_values[++index] = int_mod_cq_depth_1;
55202 - target_stat_values[++index] = int_mod_cq_depth_4;
55203 -diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c
55204 ---- linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c 2009-12-02 22:51:21.000000000 -0500
55205 -+++ linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c 2011-11-12 12:46:45.000000000 -0500
55206 -@@ -45,9 +45,9 @@
55207 +diff -urNp linux-3.0.8/drivers/infiniband/hw/nes/nes_verbs.c linux-3.0.8/drivers/infiniband/hw/nes/nes_verbs.c
55208 +--- linux-3.0.8/drivers/infiniband/hw/nes/nes_verbs.c 2011-07-21 22:17:23.000000000 -0400
55209 ++++ linux-3.0.8/drivers/infiniband/hw/nes/nes_verbs.c 2011-08-23 21:47:55.000000000 -0400
55210 +@@ -46,9 +46,9 @@
55211
55212 #include <rdma/ib_umem.h>
55213
55214 @@ -32138,7 +28808,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.32.48
55215
55216 static void nes_unregister_ofa_device(struct nes_ib_device *nesibdev);
55217
55218 -@@ -1240,7 +1240,7 @@ static struct ib_qp *nes_create_qp(struc
55219 +@@ -1141,7 +1141,7 @@ static struct ib_qp *nes_create_qp(struc
55220 if (init_attr->create_flags)
55221 return ERR_PTR(-EINVAL);
55222
55223 @@ -32147,7 +28817,7 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.32.48
55224 switch (init_attr->qp_type) {
55225 case IB_QPT_RC:
55226 if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) {
55227 -@@ -1568,7 +1568,7 @@ static int nes_destroy_qp(struct ib_qp *
55228 +@@ -1470,7 +1470,7 @@ static int nes_destroy_qp(struct ib_qp *
55229 struct iw_cm_event cm_event;
55230 int ret;
55231
55232 @@ -32156,10 +28826,21 @@ diff -urNp linux-2.6.32.48/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.32.48
55233 nesqp->destroyed = 1;
55234
55235 /* Blow away the connection if it exists. */
55236 -diff -urNp linux-2.6.32.48/drivers/input/gameport/gameport.c linux-2.6.32.48/drivers/input/gameport/gameport.c
55237 ---- linux-2.6.32.48/drivers/input/gameport/gameport.c 2009-12-02 22:51:21.000000000 -0500
55238 -+++ linux-2.6.32.48/drivers/input/gameport/gameport.c 2011-11-12 12:46:45.000000000 -0500
55239 -@@ -515,13 +515,13 @@ EXPORT_SYMBOL(gameport_set_phys);
55240 +diff -urNp linux-3.0.8/drivers/infiniband/hw/qib/qib.h linux-3.0.8/drivers/infiniband/hw/qib/qib.h
55241 +--- linux-3.0.8/drivers/infiniband/hw/qib/qib.h 2011-07-21 22:17:23.000000000 -0400
55242 ++++ linux-3.0.8/drivers/infiniband/hw/qib/qib.h 2011-08-23 21:47:55.000000000 -0400
55243 +@@ -51,6 +51,7 @@
55244 + #include <linux/completion.h>
55245 + #include <linux/kref.h>
55246 + #include <linux/sched.h>
55247 ++#include <linux/slab.h>
55248 +
55249 + #include "qib_common.h"
55250 + #include "qib_verbs.h"
55251 +diff -urNp linux-3.0.8/drivers/input/gameport/gameport.c linux-3.0.8/drivers/input/gameport/gameport.c
55252 +--- linux-3.0.8/drivers/input/gameport/gameport.c 2011-07-21 22:17:23.000000000 -0400
55253 ++++ linux-3.0.8/drivers/input/gameport/gameport.c 2011-08-23 21:47:55.000000000 -0400
55254 +@@ -488,14 +488,14 @@ EXPORT_SYMBOL(gameport_set_phys);
55255 */
55256 static void gameport_init_port(struct gameport *gameport)
55257 {
55258 @@ -32170,15 +28851,16 @@ diff -urNp linux-2.6.32.48/drivers/input/gameport/gameport.c linux-2.6.32.48/dri
55259
55260 mutex_init(&gameport->drv_mutex);
55261 device_initialize(&gameport->dev);
55262 -- dev_set_name(&gameport->dev, "gameport%lu", (unsigned long)atomic_inc_return(&gameport_no) - 1);
55263 -+ dev_set_name(&gameport->dev, "gameport%lu", (unsigned long)atomic_inc_return_unchecked(&gameport_no) - 1);
55264 + dev_set_name(&gameport->dev, "gameport%lu",
55265 +- (unsigned long)atomic_inc_return(&gameport_no) - 1);
55266 ++ (unsigned long)atomic_inc_return_unchecked(&gameport_no) - 1);
55267 gameport->dev.bus = &gameport_bus;
55268 gameport->dev.release = gameport_release_port;
55269 if (gameport->parent)
55270 -diff -urNp linux-2.6.32.48/drivers/input/input.c linux-2.6.32.48/drivers/input/input.c
55271 ---- linux-2.6.32.48/drivers/input/input.c 2011-11-12 12:44:29.000000000 -0500
55272 -+++ linux-2.6.32.48/drivers/input/input.c 2011-11-12 12:46:45.000000000 -0500
55273 -@@ -1558,7 +1558,7 @@ EXPORT_SYMBOL(input_set_capability);
55274 +diff -urNp linux-3.0.8/drivers/input/input.c linux-3.0.8/drivers/input/input.c
55275 +--- linux-3.0.8/drivers/input/input.c 2011-07-21 22:17:23.000000000 -0400
55276 ++++ linux-3.0.8/drivers/input/input.c 2011-08-23 21:47:55.000000000 -0400
55277 +@@ -1814,7 +1814,7 @@ static void input_cleanse_bitmasks(struc
55278 */
55279 int input_register_device(struct input_dev *dev)
55280 {
55281 @@ -32187,7 +28869,7 @@ diff -urNp linux-2.6.32.48/drivers/input/input.c linux-2.6.32.48/drivers/input/i
55282 struct input_handler *handler;
55283 const char *path;
55284 int error;
55285 -@@ -1585,7 +1585,7 @@ int input_register_device(struct input_d
55286 +@@ -1851,7 +1851,7 @@ int input_register_device(struct input_d
55287 dev->setkeycode = input_default_setkeycode;
55288
55289 dev_set_name(&dev->dev, "input%ld",
55290 @@ -32196,9 +28878,9 @@ diff -urNp linux-2.6.32.48/drivers/input/input.c linux-2.6.32.48/drivers/input/i
55291
55292 error = device_add(&dev->dev);
55293 if (error)
55294 -diff -urNp linux-2.6.32.48/drivers/input/joystick/sidewinder.c linux-2.6.32.48/drivers/input/joystick/sidewinder.c
55295 ---- linux-2.6.32.48/drivers/input/joystick/sidewinder.c 2009-12-02 22:51:21.000000000 -0500
55296 -+++ linux-2.6.32.48/drivers/input/joystick/sidewinder.c 2011-11-12 12:46:45.000000000 -0500
55297 +diff -urNp linux-3.0.8/drivers/input/joystick/sidewinder.c linux-3.0.8/drivers/input/joystick/sidewinder.c
55298 +--- linux-3.0.8/drivers/input/joystick/sidewinder.c 2011-07-21 22:17:23.000000000 -0400
55299 ++++ linux-3.0.8/drivers/input/joystick/sidewinder.c 2011-08-23 21:48:14.000000000 -0400
55300 @@ -30,6 +30,7 @@
55301 #include <linux/kernel.h>
55302 #include <linux/module.h>
55303 @@ -32216,10 +28898,10 @@ diff -urNp linux-2.6.32.48/drivers/input/joystick/sidewinder.c linux-2.6.32.48/d
55304 i = sw_read_packet(sw->gameport, buf, sw->length, 0);
55305
55306 if (sw->type == SW_ID_3DP && sw->length == 66 && i != 66) { /* Broken packet, try to fix */
55307 -diff -urNp linux-2.6.32.48/drivers/input/joystick/xpad.c linux-2.6.32.48/drivers/input/joystick/xpad.c
55308 ---- linux-2.6.32.48/drivers/input/joystick/xpad.c 2009-12-02 22:51:21.000000000 -0500
55309 -+++ linux-2.6.32.48/drivers/input/joystick/xpad.c 2011-11-12 12:46:45.000000000 -0500
55310 -@@ -621,7 +621,7 @@ static void xpad_led_set(struct led_clas
55311 +diff -urNp linux-3.0.8/drivers/input/joystick/xpad.c linux-3.0.8/drivers/input/joystick/xpad.c
55312 +--- linux-3.0.8/drivers/input/joystick/xpad.c 2011-07-21 22:17:23.000000000 -0400
55313 ++++ linux-3.0.8/drivers/input/joystick/xpad.c 2011-08-23 21:47:55.000000000 -0400
55314 +@@ -689,7 +689,7 @@ static void xpad_led_set(struct led_clas
55315
55316 static int xpad_led_probe(struct usb_xpad *xpad)
55317 {
55318 @@ -32228,7 +28910,7 @@ diff -urNp linux-2.6.32.48/drivers/input/joystick/xpad.c linux-2.6.32.48/drivers
55319 long led_no;
55320 struct xpad_led *led;
55321 struct led_classdev *led_cdev;
55322 -@@ -634,7 +634,7 @@ static int xpad_led_probe(struct usb_xpa
55323 +@@ -702,7 +702,7 @@ static int xpad_led_probe(struct usb_xpa
55324 if (!led)
55325 return -ENOMEM;
55326
55327 @@ -32237,10 +28919,22 @@ diff -urNp linux-2.6.32.48/drivers/input/joystick/xpad.c linux-2.6.32.48/drivers
55328
55329 snprintf(led->name, sizeof(led->name), "xpad%ld", led_no);
55330 led->xpad = xpad;
55331 -diff -urNp linux-2.6.32.48/drivers/input/serio/serio.c linux-2.6.32.48/drivers/input/serio/serio.c
55332 ---- linux-2.6.32.48/drivers/input/serio/serio.c 2009-12-02 22:51:21.000000000 -0500
55333 -+++ linux-2.6.32.48/drivers/input/serio/serio.c 2011-11-12 12:46:45.000000000 -0500
55334 -@@ -527,7 +527,7 @@ static void serio_release_port(struct de
55335 +diff -urNp linux-3.0.8/drivers/input/mousedev.c linux-3.0.8/drivers/input/mousedev.c
55336 +--- linux-3.0.8/drivers/input/mousedev.c 2011-07-21 22:17:23.000000000 -0400
55337 ++++ linux-3.0.8/drivers/input/mousedev.c 2011-08-23 21:47:55.000000000 -0400
55338 +@@ -763,7 +763,7 @@ static ssize_t mousedev_read(struct file
55339 +
55340 + spin_unlock_irq(&client->packet_lock);
55341 +
55342 +- if (copy_to_user(buffer, data, count))
55343 ++ if (count > sizeof(data) || copy_to_user(buffer, data, count))
55344 + return -EFAULT;
55345 +
55346 + return count;
55347 +diff -urNp linux-3.0.8/drivers/input/serio/serio.c linux-3.0.8/drivers/input/serio/serio.c
55348 +--- linux-3.0.8/drivers/input/serio/serio.c 2011-07-21 22:17:23.000000000 -0400
55349 ++++ linux-3.0.8/drivers/input/serio/serio.c 2011-08-23 21:47:55.000000000 -0400
55350 +@@ -497,7 +497,7 @@ static void serio_release_port(struct de
55351 */
55352 static void serio_init_port(struct serio *serio)
55353 {
55354 @@ -32249,7 +28943,7 @@ diff -urNp linux-2.6.32.48/drivers/input/serio/serio.c linux-2.6.32.48/drivers/i
55355
55356 __module_get(THIS_MODULE);
55357
55358 -@@ -536,7 +536,7 @@ static void serio_init_port(struct serio
55359 +@@ -508,7 +508,7 @@ static void serio_init_port(struct serio
55360 mutex_init(&serio->drv_mutex);
55361 device_initialize(&serio->dev);
55362 dev_set_name(&serio->dev, "serio%ld",
55363 @@ -32257,11 +28951,51 @@ diff -urNp linux-2.6.32.48/drivers/input/serio/serio.c linux-2.6.32.48/drivers/i
55364 + (long)atomic_inc_return_unchecked(&serio_no) - 1);
55365 serio->dev.bus = &serio_bus;
55366 serio->dev.release = serio_release_port;
55367 - if (serio->parent) {
55368 -diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/common.c linux-2.6.32.48/drivers/isdn/gigaset/common.c
55369 ---- linux-2.6.32.48/drivers/isdn/gigaset/common.c 2009-12-02 22:51:21.000000000 -0500
55370 -+++ linux-2.6.32.48/drivers/isdn/gigaset/common.c 2011-11-12 12:46:45.000000000 -0500
55371 -@@ -712,7 +712,7 @@ struct cardstate *gigaset_initcs(struct
55372 + serio->dev.groups = serio_device_attr_groups;
55373 +diff -urNp linux-3.0.8/drivers/isdn/capi/capi.c linux-3.0.8/drivers/isdn/capi/capi.c
55374 +--- linux-3.0.8/drivers/isdn/capi/capi.c 2011-07-21 22:17:23.000000000 -0400
55375 ++++ linux-3.0.8/drivers/isdn/capi/capi.c 2011-08-23 21:47:55.000000000 -0400
55376 +@@ -83,8 +83,8 @@ struct capiminor {
55377 +
55378 + struct capi20_appl *ap;
55379 + u32 ncci;
55380 +- atomic_t datahandle;
55381 +- atomic_t msgid;
55382 ++ atomic_unchecked_t datahandle;
55383 ++ atomic_unchecked_t msgid;
55384 +
55385 + struct tty_port port;
55386 + int ttyinstop;
55387 +@@ -397,7 +397,7 @@ gen_data_b3_resp_for(struct capiminor *m
55388 + capimsg_setu16(s, 2, mp->ap->applid);
55389 + capimsg_setu8 (s, 4, CAPI_DATA_B3);
55390 + capimsg_setu8 (s, 5, CAPI_RESP);
55391 +- capimsg_setu16(s, 6, atomic_inc_return(&mp->msgid));
55392 ++ capimsg_setu16(s, 6, atomic_inc_return_unchecked(&mp->msgid));
55393 + capimsg_setu32(s, 8, mp->ncci);
55394 + capimsg_setu16(s, 12, datahandle);
55395 + }
55396 +@@ -518,14 +518,14 @@ static void handle_minor_send(struct cap
55397 + mp->outbytes -= len;
55398 + spin_unlock_bh(&mp->outlock);
55399 +
55400 +- datahandle = atomic_inc_return(&mp->datahandle);
55401 ++ datahandle = atomic_inc_return_unchecked(&mp->datahandle);
55402 + skb_push(skb, CAPI_DATA_B3_REQ_LEN);
55403 + memset(skb->data, 0, CAPI_DATA_B3_REQ_LEN);
55404 + capimsg_setu16(skb->data, 0, CAPI_DATA_B3_REQ_LEN);
55405 + capimsg_setu16(skb->data, 2, mp->ap->applid);
55406 + capimsg_setu8 (skb->data, 4, CAPI_DATA_B3);
55407 + capimsg_setu8 (skb->data, 5, CAPI_REQ);
55408 +- capimsg_setu16(skb->data, 6, atomic_inc_return(&mp->msgid));
55409 ++ capimsg_setu16(skb->data, 6, atomic_inc_return_unchecked(&mp->msgid));
55410 + capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */
55411 + capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */
55412 + capimsg_setu16(skb->data, 16, len); /* Data length */
55413 +diff -urNp linux-3.0.8/drivers/isdn/gigaset/common.c linux-3.0.8/drivers/isdn/gigaset/common.c
55414 +--- linux-3.0.8/drivers/isdn/gigaset/common.c 2011-07-21 22:17:23.000000000 -0400
55415 ++++ linux-3.0.8/drivers/isdn/gigaset/common.c 2011-08-23 21:47:55.000000000 -0400
55416 +@@ -723,7 +723,7 @@ struct cardstate *gigaset_initcs(struct
55417 cs->commands_pending = 0;
55418 cs->cur_at_seq = 0;
55419 cs->gotfwver = -1;
55420 @@ -32270,18 +29004,18 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/common.c linux-2.6.32.48/drivers
55421 cs->dev = NULL;
55422 cs->tty = NULL;
55423 cs->tty_dev = NULL;
55424 -diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h
55425 ---- linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h 2009-12-02 22:51:21.000000000 -0500
55426 -+++ linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h 2011-11-12 12:46:45.000000000 -0500
55427 -@@ -34,6 +34,7 @@
55428 +diff -urNp linux-3.0.8/drivers/isdn/gigaset/gigaset.h linux-3.0.8/drivers/isdn/gigaset/gigaset.h
55429 +--- linux-3.0.8/drivers/isdn/gigaset/gigaset.h 2011-07-21 22:17:23.000000000 -0400
55430 ++++ linux-3.0.8/drivers/isdn/gigaset/gigaset.h 2011-08-23 21:47:55.000000000 -0400
55431 +@@ -35,6 +35,7 @@
55432 #include <linux/tty_driver.h>
55433 #include <linux/list.h>
55434 #include <asm/atomic.h>
55435 +#include <asm/local.h>
55436
55437 - #define GIG_VERSION {0,5,0,0}
55438 - #define GIG_COMPAT {0,4,0,0}
55439 -@@ -446,7 +447,7 @@ struct cardstate {
55440 + #define GIG_VERSION {0, 5, 0, 0}
55441 + #define GIG_COMPAT {0, 4, 0, 0}
55442 +@@ -433,7 +434,7 @@ struct cardstate {
55443 spinlock_t cmdlock;
55444 unsigned curlen, cmdbytes;
55445
55446 @@ -32290,11 +29024,11 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/gigaset.h linux-2.6.32.48/driver
55447 struct tty_struct *tty;
55448 struct tasklet_struct if_wake_tasklet;
55449 unsigned control_state;
55450 -diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/drivers/isdn/gigaset/interface.c
55451 ---- linux-2.6.32.48/drivers/isdn/gigaset/interface.c 2011-11-12 12:44:29.000000000 -0500
55452 -+++ linux-2.6.32.48/drivers/isdn/gigaset/interface.c 2011-11-12 12:46:45.000000000 -0500
55453 -@@ -165,9 +165,7 @@ static int if_open(struct tty_struct *tt
55454 - return -ERESTARTSYS; // FIXME -EINTR?
55455 +diff -urNp linux-3.0.8/drivers/isdn/gigaset/interface.c linux-3.0.8/drivers/isdn/gigaset/interface.c
55456 +--- linux-3.0.8/drivers/isdn/gigaset/interface.c 2011-07-21 22:17:23.000000000 -0400
55457 ++++ linux-3.0.8/drivers/isdn/gigaset/interface.c 2011-08-23 21:47:55.000000000 -0400
55458 +@@ -162,9 +162,7 @@ static int if_open(struct tty_struct *tt
55459 + }
55460 tty->driver_data = cs;
55461
55462 - ++cs->open_count;
55463 @@ -32304,7 +29038,7 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/driv
55464 spin_lock_irqsave(&cs->lock, flags);
55465 cs->tty = tty;
55466 spin_unlock_irqrestore(&cs->lock, flags);
55467 -@@ -195,10 +193,10 @@ static void if_close(struct tty_struct *
55468 +@@ -192,10 +190,10 @@ static void if_close(struct tty_struct *
55469
55470 if (!cs->connected)
55471 gig_dbg(DEBUG_IF, "not connected"); /* nothing to do */
55472 @@ -32317,7 +29051,7 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/driv
55473 spin_lock_irqsave(&cs->lock, flags);
55474 cs->tty = NULL;
55475 spin_unlock_irqrestore(&cs->lock, flags);
55476 -@@ -233,7 +231,7 @@ static int if_ioctl(struct tty_struct *t
55477 +@@ -230,7 +228,7 @@ static int if_ioctl(struct tty_struct *t
55478 if (!cs->connected) {
55479 gig_dbg(DEBUG_IF, "not connected");
55480 retval = -ENODEV;
55481 @@ -32326,16 +29060,16 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/driv
55482 dev_warn(cs->dev, "%s: device not opened\n", __func__);
55483 else {
55484 retval = 0;
55485 -@@ -361,7 +359,7 @@ static int if_write(struct tty_struct *t
55486 - if (!cs->connected) {
55487 - gig_dbg(DEBUG_IF, "not connected");
55488 +@@ -360,7 +358,7 @@ static int if_write(struct tty_struct *t
55489 retval = -ENODEV;
55490 -- } else if (!cs->open_count)
55491 -+ } else if (!local_read(&cs->open_count))
55492 + goto done;
55493 + }
55494 +- if (!cs->open_count) {
55495 ++ if (!local_read(&cs->open_count)) {
55496 dev_warn(cs->dev, "%s: device not opened\n", __func__);
55497 - else if (cs->mstate != MS_LOCKED) {
55498 - dev_warn(cs->dev, "can't write to unlocked device\n");
55499 -@@ -395,7 +393,7 @@ static int if_write_room(struct tty_stru
55500 + retval = -ENODEV;
55501 + goto done;
55502 +@@ -413,7 +411,7 @@ static int if_write_room(struct tty_stru
55503 if (!cs->connected) {
55504 gig_dbg(DEBUG_IF, "not connected");
55505 retval = -ENODEV;
55506 @@ -32344,7 +29078,7 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/driv
55507 dev_warn(cs->dev, "%s: device not opened\n", __func__);
55508 else if (cs->mstate != MS_LOCKED) {
55509 dev_warn(cs->dev, "can't write to unlocked device\n");
55510 -@@ -425,7 +423,7 @@ static int if_chars_in_buffer(struct tty
55511 +@@ -443,7 +441,7 @@ static int if_chars_in_buffer(struct tty
55512
55513 if (!cs->connected)
55514 gig_dbg(DEBUG_IF, "not connected");
55515 @@ -32353,25 +29087,25 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/driv
55516 dev_warn(cs->dev, "%s: device not opened\n", __func__);
55517 else if (cs->mstate != MS_LOCKED)
55518 dev_warn(cs->dev, "can't write to unlocked device\n");
55519 -@@ -453,7 +451,7 @@ static void if_throttle(struct tty_struc
55520 +@@ -471,7 +469,7 @@ static void if_throttle(struct tty_struc
55521
55522 if (!cs->connected)
55523 gig_dbg(DEBUG_IF, "not connected"); /* nothing to do */
55524 - else if (!cs->open_count)
55525 + else if (!local_read(&cs->open_count))
55526 dev_warn(cs->dev, "%s: device not opened\n", __func__);
55527 - else {
55528 - //FIXME
55529 -@@ -478,7 +476,7 @@ static void if_unthrottle(struct tty_str
55530 + else
55531 + gig_dbg(DEBUG_IF, "%s: not implemented\n", __func__);
55532 +@@ -495,7 +493,7 @@ static void if_unthrottle(struct tty_str
55533
55534 if (!cs->connected)
55535 gig_dbg(DEBUG_IF, "not connected"); /* nothing to do */
55536 - else if (!cs->open_count)
55537 + else if (!local_read(&cs->open_count))
55538 dev_warn(cs->dev, "%s: device not opened\n", __func__);
55539 - else {
55540 - //FIXME
55541 -@@ -510,7 +508,7 @@ static void if_set_termios(struct tty_st
55542 + else
55543 + gig_dbg(DEBUG_IF, "%s: not implemented\n", __func__);
55544 +@@ -526,7 +524,7 @@ static void if_set_termios(struct tty_st
55545 goto out;
55546 }
55547
55548 @@ -32380,10 +29114,10 @@ diff -urNp linux-2.6.32.48/drivers/isdn/gigaset/interface.c linux-2.6.32.48/driv
55549 dev_warn(cs->dev, "%s: device not opened\n", __func__);
55550 goto out;
55551 }
55552 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c
55553 ---- linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c 2009-12-02 22:51:21.000000000 -0500
55554 -+++ linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c 2011-11-12 12:46:45.000000000 -0500
55555 -@@ -173,7 +173,7 @@ int b1_load_t4file(avmcard *card, capilo
55556 +diff -urNp linux-3.0.8/drivers/isdn/hardware/avm/b1.c linux-3.0.8/drivers/isdn/hardware/avm/b1.c
55557 +--- linux-3.0.8/drivers/isdn/hardware/avm/b1.c 2011-07-21 22:17:23.000000000 -0400
55558 ++++ linux-3.0.8/drivers/isdn/hardware/avm/b1.c 2011-08-23 21:47:55.000000000 -0400
55559 +@@ -176,7 +176,7 @@ int b1_load_t4file(avmcard *card, capilo
55560 }
55561 if (left) {
55562 if (t4file->user) {
55563 @@ -32392,7 +29126,7 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c linux-2.6.32.48/driver
55564 return -EFAULT;
55565 } else {
55566 memcpy(buf, dp, left);
55567 -@@ -221,7 +221,7 @@ int b1_load_config(avmcard *card, capilo
55568 +@@ -224,7 +224,7 @@ int b1_load_config(avmcard *card, capilo
55569 }
55570 if (left) {
55571 if (config->user) {
55572 @@ -32401,9 +29135,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/avm/b1.c linux-2.6.32.48/driver
55573 return -EFAULT;
55574 } else {
55575 memcpy(buf, dp, left);
55576 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c
55577 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c 2009-12-02 22:51:21.000000000 -0500
55578 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c 2011-11-12 12:46:45.000000000 -0500
55579 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/capidtmf.c linux-3.0.8/drivers/isdn/hardware/eicon/capidtmf.c
55580 +--- linux-3.0.8/drivers/isdn/hardware/eicon/capidtmf.c 2011-07-21 22:17:23.000000000 -0400
55581 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/capidtmf.c 2011-08-23 21:48:14.000000000 -0400
55582 @@ -498,6 +498,7 @@ void capidtmf_recv_block (t_capidtmf_sta
55583 byte goertzel_result_buffer[CAPIDTMF_RECV_TOTAL_FREQUENCY_COUNT];
55584 short windowed_sample_buffer[CAPIDTMF_RECV_WINDOWED_SAMPLES];
55585 @@ -32412,9 +29146,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capidtmf.c linux-2.6.32.4
55586
55587 if (p_state->recv.state & CAPIDTMF_RECV_STATE_DTMF_ACTIVE)
55588 {
55589 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c
55590 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c 2009-12-02 22:51:21.000000000 -0500
55591 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c 2011-11-12 12:46:45.000000000 -0500
55592 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/capifunc.c linux-3.0.8/drivers/isdn/hardware/eicon/capifunc.c
55593 +--- linux-3.0.8/drivers/isdn/hardware/eicon/capifunc.c 2011-07-21 22:17:23.000000000 -0400
55594 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/capifunc.c 2011-08-23 21:48:14.000000000 -0400
55595 @@ -1055,6 +1055,8 @@ static int divacapi_connect_didd(void)
55596 IDI_SYNC_REQ req;
55597 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
55598 @@ -32424,9 +29158,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/capifunc.c linux-2.6.32.4
55599 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
55600
55601 for (x = 0; x < MAX_DESCRIPTORS; x++) {
55602 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c
55603 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c 2009-12-02 22:51:21.000000000 -0500
55604 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c 2011-11-12 12:46:45.000000000 -0500
55605 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/diddfunc.c linux-3.0.8/drivers/isdn/hardware/eicon/diddfunc.c
55606 +--- linux-3.0.8/drivers/isdn/hardware/eicon/diddfunc.c 2011-07-21 22:17:23.000000000 -0400
55607 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/diddfunc.c 2011-08-23 21:48:14.000000000 -0400
55608 @@ -54,6 +54,8 @@ static int DIVA_INIT_FUNCTION connect_di
55609 IDI_SYNC_REQ req;
55610 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
55611 @@ -32436,10 +29170,10 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/diddfunc.c linux-2.6.32.4
55612 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
55613
55614 for (x = 0; x < MAX_DESCRIPTORS; x++) {
55615 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c
55616 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c 2009-12-02 22:51:21.000000000 -0500
55617 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c 2011-11-12 12:46:45.000000000 -0500
55618 -@@ -161,6 +161,8 @@ static int DIVA_INIT_FUNCTION connect_di
55619 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/divasfunc.c linux-3.0.8/drivers/isdn/hardware/eicon/divasfunc.c
55620 +--- linux-3.0.8/drivers/isdn/hardware/eicon/divasfunc.c 2011-07-21 22:17:23.000000000 -0400
55621 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/divasfunc.c 2011-08-23 21:48:14.000000000 -0400
55622 +@@ -160,6 +160,8 @@ static int DIVA_INIT_FUNCTION connect_di
55623 IDI_SYNC_REQ req;
55624 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
55625
55626 @@ -32448,9 +29182,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasfunc.c linux-2.6.32.
55627 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
55628
55629 for (x = 0; x < MAX_DESCRIPTORS; x++) {
55630 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h
55631 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h 2009-12-02 22:51:21.000000000 -0500
55632 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h 2011-11-12 12:46:45.000000000 -0500
55633 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/divasync.h linux-3.0.8/drivers/isdn/hardware/eicon/divasync.h
55634 +--- linux-3.0.8/drivers/isdn/hardware/eicon/divasync.h 2011-07-21 22:17:23.000000000 -0400
55635 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/divasync.h 2011-08-23 21:47:55.000000000 -0400
55636 @@ -146,7 +146,7 @@ typedef struct _diva_didd_add_adapter {
55637 } diva_didd_add_adapter_t;
55638 typedef struct _diva_didd_remove_adapter {
55639 @@ -32460,9 +29194,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/divasync.h linux-2.6.32.4
55640 typedef struct _diva_didd_read_adapter_array {
55641 void * buffer;
55642 dword length;
55643 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c
55644 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c 2009-12-02 22:51:21.000000000 -0500
55645 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c 2011-11-12 12:46:45.000000000 -0500
55646 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/idifunc.c linux-3.0.8/drivers/isdn/hardware/eicon/idifunc.c
55647 +--- linux-3.0.8/drivers/isdn/hardware/eicon/idifunc.c 2011-07-21 22:17:23.000000000 -0400
55648 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/idifunc.c 2011-08-23 21:48:14.000000000 -0400
55649 @@ -188,6 +188,8 @@ static int DIVA_INIT_FUNCTION connect_di
55650 IDI_SYNC_REQ req;
55651 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
55652 @@ -32472,10 +29206,10 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/idifunc.c linux-2.6.32.48
55653 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
55654
55655 for (x = 0; x < MAX_DESCRIPTORS; x++) {
55656 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c
55657 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c 2009-12-02 22:51:21.000000000 -0500
55658 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c 2011-11-12 12:46:45.000000000 -0500
55659 -@@ -4889,6 +4889,8 @@ static void sig_ind(PLCI *plci)
55660 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/message.c linux-3.0.8/drivers/isdn/hardware/eicon/message.c
55661 +--- linux-3.0.8/drivers/isdn/hardware/eicon/message.c 2011-07-21 22:17:23.000000000 -0400
55662 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/message.c 2011-08-23 21:48:14.000000000 -0400
55663 +@@ -4886,6 +4886,8 @@ static void sig_ind(PLCI *plci)
55664 dword d;
55665 word w;
55666
55667 @@ -32484,7 +29218,7 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c linux-2.6.32.48
55668 a = plci->adapter;
55669 Id = ((word)plci->Id<<8)|a->Id;
55670 PUT_WORD(&SS_Ind[4],0x0000);
55671 -@@ -7484,6 +7486,8 @@ static word add_b1(PLCI *plci, API_PARSE
55672 +@@ -7480,6 +7482,8 @@ static word add_b1(PLCI *plci, API_PARSE
55673 word j, n, w;
55674 dword d;
55675
55676 @@ -32493,7 +29227,7 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c linux-2.6.32.48
55677
55678 for(i=0;i<8;i++) bp_parms[i].length = 0;
55679 for(i=0;i<2;i++) global_config[i].length = 0;
55680 -@@ -7958,6 +7962,8 @@ static word add_b23(PLCI *plci, API_PARS
55681 +@@ -7954,6 +7958,8 @@ static word add_b23(PLCI *plci, API_PARS
55682 const byte llc3[] = {4,3,2,2,6,6,0};
55683 const byte header[] = {0,2,3,3,0,0,0};
55684
55685 @@ -32502,7 +29236,7 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c linux-2.6.32.48
55686 for(i=0;i<8;i++) bp_parms[i].length = 0;
55687 for(i=0;i<6;i++) b2_config_parms[i].length = 0;
55688 for(i=0;i<5;i++) b3_config_parms[i].length = 0;
55689 -@@ -14761,6 +14767,8 @@ static void group_optimization(DIVA_CAPI
55690 +@@ -14741,6 +14747,8 @@ static void group_optimization(DIVA_CAPI
55691 word appl_number_group_type[MAX_APPL];
55692 PLCI *auxplci;
55693
55694 @@ -32511,9 +29245,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/message.c linux-2.6.32.48
55695 set_group_ind_mask (plci); /* all APPLs within this inc. call are allowed to dial in */
55696
55697 if(!a->group_optimization_enabled)
55698 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c
55699 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c 2009-12-02 22:51:21.000000000 -0500
55700 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c 2011-11-12 12:46:45.000000000 -0500
55701 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/mntfunc.c linux-3.0.8/drivers/isdn/hardware/eicon/mntfunc.c
55702 +--- linux-3.0.8/drivers/isdn/hardware/eicon/mntfunc.c 2011-07-21 22:17:23.000000000 -0400
55703 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/mntfunc.c 2011-08-23 21:48:14.000000000 -0400
55704 @@ -79,6 +79,8 @@ static int DIVA_INIT_FUNCTION connect_di
55705 IDI_SYNC_REQ req;
55706 DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];
55707 @@ -32523,9 +29257,9 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/mntfunc.c linux-2.6.32.48
55708 DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
55709
55710 for (x = 0; x < MAX_DESCRIPTORS; x++) {
55711 -diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h
55712 ---- linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h 2009-12-02 22:51:21.000000000 -0500
55713 -+++ linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-11-12 12:46:45.000000000 -0500
55714 +diff -urNp linux-3.0.8/drivers/isdn/hardware/eicon/xdi_adapter.h linux-3.0.8/drivers/isdn/hardware/eicon/xdi_adapter.h
55715 +--- linux-3.0.8/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-07-21 22:17:23.000000000 -0400
55716 ++++ linux-3.0.8/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-08-23 21:47:55.000000000 -0400
55717 @@ -44,7 +44,7 @@ typedef struct _xdi_mbox_t {
55718 typedef struct _diva_os_idi_adapter_interface {
55719 diva_init_card_proc_t cleanup_adapter_proc;
55720 @@ -32535,10 +29269,10 @@ diff -urNp linux-2.6.32.48/drivers/isdn/hardware/eicon/xdi_adapter.h linux-2.6.3
55721
55722 typedef struct _diva_os_xdi_adapter {
55723 struct list_head link;
55724 -diff -urNp linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c
55725 ---- linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c 2009-12-02 22:51:21.000000000 -0500
55726 -+++ linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c 2011-11-12 12:46:45.000000000 -0500
55727 -@@ -1290,6 +1290,8 @@ isdn_ioctl(struct inode *inode, struct f
55728 +diff -urNp linux-3.0.8/drivers/isdn/i4l/isdn_common.c linux-3.0.8/drivers/isdn/i4l/isdn_common.c
55729 +--- linux-3.0.8/drivers/isdn/i4l/isdn_common.c 2011-07-21 22:17:23.000000000 -0400
55730 ++++ linux-3.0.8/drivers/isdn/i4l/isdn_common.c 2011-08-23 21:48:14.000000000 -0400
55731 +@@ -1286,6 +1286,8 @@ isdn_ioctl(struct file *file, uint cmd,
55732 } iocpar;
55733 void __user *argp = (void __user *)arg;
55734
55735 @@ -32547,10 +29281,10 @@ diff -urNp linux-2.6.32.48/drivers/isdn/i4l/isdn_common.c linux-2.6.32.48/driver
55736 #define name iocpar.name
55737 #define bname iocpar.bname
55738 #define iocts iocpar.iocts
55739 -diff -urNp linux-2.6.32.48/drivers/isdn/icn/icn.c linux-2.6.32.48/drivers/isdn/icn/icn.c
55740 ---- linux-2.6.32.48/drivers/isdn/icn/icn.c 2009-12-02 22:51:21.000000000 -0500
55741 -+++ linux-2.6.32.48/drivers/isdn/icn/icn.c 2011-11-12 12:46:45.000000000 -0500
55742 -@@ -1044,7 +1044,7 @@ icn_writecmd(const u_char * buf, int len
55743 +diff -urNp linux-3.0.8/drivers/isdn/icn/icn.c linux-3.0.8/drivers/isdn/icn/icn.c
55744 +--- linux-3.0.8/drivers/isdn/icn/icn.c 2011-07-21 22:17:23.000000000 -0400
55745 ++++ linux-3.0.8/drivers/isdn/icn/icn.c 2011-08-23 21:47:55.000000000 -0400
55746 +@@ -1045,7 +1045,7 @@ icn_writecmd(const u_char * buf, int len
55747 if (count > len)
55748 count = len;
55749 if (user) {
55750 @@ -32559,66 +29293,10 @@ diff -urNp linux-2.6.32.48/drivers/isdn/icn/icn.c linux-2.6.32.48/drivers/isdn/i
55751 return -EFAULT;
55752 } else
55753 memcpy(msg, buf, count);
55754 -diff -urNp linux-2.6.32.48/drivers/isdn/mISDN/socket.c linux-2.6.32.48/drivers/isdn/mISDN/socket.c
55755 ---- linux-2.6.32.48/drivers/isdn/mISDN/socket.c 2009-12-02 22:51:21.000000000 -0500
55756 -+++ linux-2.6.32.48/drivers/isdn/mISDN/socket.c 2011-11-12 12:46:45.000000000 -0500
55757 -@@ -391,6 +391,7 @@ data_sock_ioctl(struct socket *sock, uns
55758 - if (dev) {
55759 - struct mISDN_devinfo di;
55760 -
55761 -+ memset(&di, 0, sizeof(di));
55762 - di.id = dev->id;
55763 - di.Dprotocols = dev->Dprotocols;
55764 - di.Bprotocols = dev->Bprotocols | get_all_Bprotocols();
55765 -@@ -671,6 +672,7 @@ base_sock_ioctl(struct socket *sock, uns
55766 - if (dev) {
55767 - struct mISDN_devinfo di;
55768 -
55769 -+ memset(&di, 0, sizeof(di));
55770 - di.id = dev->id;
55771 - di.Dprotocols = dev->Dprotocols;
55772 - di.Bprotocols = dev->Bprotocols | get_all_Bprotocols();
55773 -diff -urNp linux-2.6.32.48/drivers/isdn/sc/interrupt.c linux-2.6.32.48/drivers/isdn/sc/interrupt.c
55774 ---- linux-2.6.32.48/drivers/isdn/sc/interrupt.c 2009-12-02 22:51:21.000000000 -0500
55775 -+++ linux-2.6.32.48/drivers/isdn/sc/interrupt.c 2011-11-12 12:46:45.000000000 -0500
55776 -@@ -112,11 +112,19 @@ irqreturn_t interrupt_handler(int dummy,
55777 - }
55778 - else if(callid>=0x0000 && callid<=0x7FFF)
55779 - {
55780 -+ int len;
55781 -+
55782 - pr_debug("%s: Got Incoming Call\n",
55783 - sc_adapter[card]->devicename);
55784 -- strcpy(setup.phone,&(rcvmsg.msg_data.byte_array[4]));
55785 -- strcpy(setup.eazmsn,
55786 -- sc_adapter[card]->channel[rcvmsg.phy_link_no-1].dn);
55787 -+ len = strlcpy(setup.phone, &(rcvmsg.msg_data.byte_array[4]),
55788 -+ sizeof(setup.phone));
55789 -+ if (len >= sizeof(setup.phone))
55790 -+ continue;
55791 -+ len = strlcpy(setup.eazmsn,
55792 -+ sc_adapter[card]->channel[rcvmsg.phy_link_no - 1].dn,
55793 -+ sizeof(setup.eazmsn));
55794 -+ if (len >= sizeof(setup.eazmsn))
55795 -+ continue;
55796 - setup.si1 = 7;
55797 - setup.si2 = 0;
55798 - setup.plan = 0;
55799 -@@ -176,7 +184,9 @@ irqreturn_t interrupt_handler(int dummy,
55800 - * Handle a GetMyNumber Rsp
55801 - */
55802 - if (IS_CE_MESSAGE(rcvmsg,Call,0,GetMyNumber)){
55803 -- strcpy(sc_adapter[card]->channel[rcvmsg.phy_link_no-1].dn,rcvmsg.msg_data.byte_array);
55804 -+ strlcpy(sc_adapter[card]->channel[rcvmsg.phy_link_no - 1].dn,
55805 -+ rcvmsg.msg_data.byte_array,
55806 -+ sizeof(rcvmsg.msg_data.byte_array));
55807 - continue;
55808 - }
55809 -
55810 -diff -urNp linux-2.6.32.48/drivers/lguest/core.c linux-2.6.32.48/drivers/lguest/core.c
55811 ---- linux-2.6.32.48/drivers/lguest/core.c 2009-12-02 22:51:21.000000000 -0500
55812 -+++ linux-2.6.32.48/drivers/lguest/core.c 2011-11-12 12:46:45.000000000 -0500
55813 -@@ -91,9 +91,17 @@ static __init int map_switcher(void)
55814 +diff -urNp linux-3.0.8/drivers/lguest/core.c linux-3.0.8/drivers/lguest/core.c
55815 +--- linux-3.0.8/drivers/lguest/core.c 2011-07-21 22:17:23.000000000 -0400
55816 ++++ linux-3.0.8/drivers/lguest/core.c 2011-08-23 21:47:55.000000000 -0400
55817 +@@ -92,9 +92,17 @@ static __init int map_switcher(void)
55818 * it's worked so far. The end address needs +1 because __get_vm_area
55819 * allocates an extra guard page, so we need space for that.
55820 */
55821 @@ -32636,7 +29314,7 @@ diff -urNp linux-2.6.32.48/drivers/lguest/core.c linux-2.6.32.48/drivers/lguest/
55822 if (!switcher_vma) {
55823 err = -ENOMEM;
55824 printk("lguest: could not map switcher pages high\n");
55825 -@@ -118,7 +126,7 @@ static __init int map_switcher(void)
55826 +@@ -119,7 +127,7 @@ static __init int map_switcher(void)
55827 * Now the Switcher is mapped at the right address, we can't fail!
55828 * Copy in the compiled-in Switcher code (from <arch>_switcher.S).
55829 */
55830 @@ -32645,9 +29323,9 @@ diff -urNp linux-2.6.32.48/drivers/lguest/core.c linux-2.6.32.48/drivers/lguest/
55831 end_switcher_text - start_switcher_text);
55832
55833 printk(KERN_INFO "lguest: mapped switcher at %p\n",
55834 -diff -urNp linux-2.6.32.48/drivers/lguest/x86/core.c linux-2.6.32.48/drivers/lguest/x86/core.c
55835 ---- linux-2.6.32.48/drivers/lguest/x86/core.c 2009-12-02 22:51:21.000000000 -0500
55836 -+++ linux-2.6.32.48/drivers/lguest/x86/core.c 2011-11-12 12:46:45.000000000 -0500
55837 +diff -urNp linux-3.0.8/drivers/lguest/x86/core.c linux-3.0.8/drivers/lguest/x86/core.c
55838 +--- linux-3.0.8/drivers/lguest/x86/core.c 2011-07-21 22:17:23.000000000 -0400
55839 ++++ linux-3.0.8/drivers/lguest/x86/core.c 2011-08-23 21:47:55.000000000 -0400
55840 @@ -59,7 +59,7 @@ static struct {
55841 /* Offset from where switcher.S was compiled to where we've copied it */
55842 static unsigned long switcher_offset(void)
55843 @@ -32671,7 +29349,7 @@ diff -urNp linux-2.6.32.48/drivers/lguest/x86/core.c linux-2.6.32.48/drivers/lgu
55844 /*
55845 * Set up the Guest's page tables to see this CPU's pages (and no
55846 * other CPU's pages).
55847 -@@ -535,7 +541,7 @@ void __init lguest_arch_host_init(void)
55848 +@@ -547,7 +553,7 @@ void __init lguest_arch_host_init(void)
55849 * compiled-in switcher code and the high-mapped copy we just made.
55850 */
55851 for (i = 0; i < IDT_ENTRIES; i++)
55852 @@ -32680,7 +29358,7 @@ diff -urNp linux-2.6.32.48/drivers/lguest/x86/core.c linux-2.6.32.48/drivers/lgu
55853
55854 /*
55855 * Set up the Switcher's per-cpu areas.
55856 -@@ -618,7 +624,7 @@ void __init lguest_arch_host_init(void)
55857 +@@ -630,7 +636,7 @@ void __init lguest_arch_host_init(void)
55858 * it will be undisturbed when we switch. To change %cs and jump we
55859 * need this structure to feed to Intel's "lcall" instruction.
55860 */
55861 @@ -32689,9 +29367,9 @@ diff -urNp linux-2.6.32.48/drivers/lguest/x86/core.c linux-2.6.32.48/drivers/lgu
55862 lguest_entry.segment = LGUEST_CS;
55863
55864 /*
55865 -diff -urNp linux-2.6.32.48/drivers/lguest/x86/switcher_32.S linux-2.6.32.48/drivers/lguest/x86/switcher_32.S
55866 ---- linux-2.6.32.48/drivers/lguest/x86/switcher_32.S 2009-12-02 22:51:21.000000000 -0500
55867 -+++ linux-2.6.32.48/drivers/lguest/x86/switcher_32.S 2011-11-12 12:46:45.000000000 -0500
55868 +diff -urNp linux-3.0.8/drivers/lguest/x86/switcher_32.S linux-3.0.8/drivers/lguest/x86/switcher_32.S
55869 +--- linux-3.0.8/drivers/lguest/x86/switcher_32.S 2011-07-21 22:17:23.000000000 -0400
55870 ++++ linux-3.0.8/drivers/lguest/x86/switcher_32.S 2011-08-23 21:47:55.000000000 -0400
55871 @@ -87,6 +87,7 @@
55872 #include <asm/page.h>
55873 #include <asm/segment.h>
55874 @@ -32750,43 +29428,22 @@ diff -urNp linux-2.6.32.48/drivers/lguest/x86/switcher_32.S linux-2.6.32.48/driv
55875
55876 // Every interrupt can come to us here
55877 // But we must truly tell each apart.
55878 -diff -urNp linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c
55879 ---- linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c 2009-12-02 22:51:21.000000000 -0500
55880 -+++ linux-2.6.32.48/drivers/macintosh/via-pmu-backlight.c 2011-11-12 12:46:45.000000000 -0500
55881 -@@ -15,7 +15,7 @@
55882 -
55883 - #define MAX_PMU_LEVEL 0xFF
55884 -
55885 --static struct backlight_ops pmu_backlight_data;
55886 -+static const struct backlight_ops pmu_backlight_data;
55887 - static DEFINE_SPINLOCK(pmu_backlight_lock);
55888 - static int sleeping, uses_pmu_bl;
55889 - static u8 bl_curve[FB_BACKLIGHT_LEVELS];
55890 -@@ -115,7 +115,7 @@ static int pmu_backlight_get_brightness(
55891 - return bd->props.brightness;
55892 - }
55893 -
55894 --static struct backlight_ops pmu_backlight_data = {
55895 -+static const struct backlight_ops pmu_backlight_data = {
55896 - .get_brightness = pmu_backlight_get_brightness,
55897 - .update_status = pmu_backlight_update_status,
55898 -
55899 -diff -urNp linux-2.6.32.48/drivers/macintosh/via-pmu.c linux-2.6.32.48/drivers/macintosh/via-pmu.c
55900 ---- linux-2.6.32.48/drivers/macintosh/via-pmu.c 2009-12-02 22:51:21.000000000 -0500
55901 -+++ linux-2.6.32.48/drivers/macintosh/via-pmu.c 2011-11-12 12:46:45.000000000 -0500
55902 -@@ -2232,7 +2232,7 @@ static int pmu_sleep_valid(suspend_state
55903 - && (pmac_call_feature(PMAC_FTR_SLEEP_STATE, NULL, 0, -1) >= 0);
55904 - }
55905 -
55906 --static struct platform_suspend_ops pmu_pm_ops = {
55907 -+static const struct platform_suspend_ops pmu_pm_ops = {
55908 - .enter = powerbook_sleep,
55909 - .valid = pmu_sleep_valid,
55910 - };
55911 -diff -urNp linux-2.6.32.48/drivers/md/dm.c linux-2.6.32.48/drivers/md/dm.c
55912 ---- linux-2.6.32.48/drivers/md/dm.c 2011-11-12 12:44:29.000000000 -0500
55913 -+++ linux-2.6.32.48/drivers/md/dm.c 2011-11-12 12:46:45.000000000 -0500
55914 -@@ -165,9 +165,9 @@ struct mapped_device {
55915 +diff -urNp linux-3.0.8/drivers/macintosh/macio_asic.c linux-3.0.8/drivers/macintosh/macio_asic.c
55916 +--- linux-3.0.8/drivers/macintosh/macio_asic.c 2011-07-21 22:17:23.000000000 -0400
55917 ++++ linux-3.0.8/drivers/macintosh/macio_asic.c 2011-10-11 10:44:33.000000000 -0400
55918 +@@ -748,7 +748,7 @@ static void __devexit macio_pci_remove(s
55919 + * MacIO is matched against any Apple ID, it's probe() function
55920 + * will then decide wether it applies or not
55921 + */
55922 +-static const struct pci_device_id __devinitdata pci_ids [] = { {
55923 ++static const struct pci_device_id __devinitconst pci_ids [] = { {
55924 + .vendor = PCI_VENDOR_ID_APPLE,
55925 + .device = PCI_ANY_ID,
55926 + .subvendor = PCI_ANY_ID,
55927 +diff -urNp linux-3.0.8/drivers/md/dm.c linux-3.0.8/drivers/md/dm.c
55928 +--- linux-3.0.8/drivers/md/dm.c 2011-10-24 08:05:21.000000000 -0400
55929 ++++ linux-3.0.8/drivers/md/dm.c 2011-08-23 21:47:55.000000000 -0400
55930 +@@ -164,9 +164,9 @@ struct mapped_device {
55931 /*
55932 * Event handling.
55933 */
55934 @@ -32798,7 +29455,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm.c linux-2.6.32.48/drivers/md/dm.c
55935 struct list_head uevent_list;
55936 spinlock_t uevent_lock; /* Protect access to uevent_list */
55937
55938 -@@ -1776,8 +1776,8 @@ static struct mapped_device *alloc_dev(i
55939 +@@ -1842,8 +1842,8 @@ static struct mapped_device *alloc_dev(i
55940 rwlock_init(&md->map_lock);
55941 atomic_set(&md->holders, 1);
55942 atomic_set(&md->open_count, 0);
55943 @@ -32809,7 +29466,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm.c linux-2.6.32.48/drivers/md/dm.c
55944 INIT_LIST_HEAD(&md->uevent_list);
55945 spin_lock_init(&md->uevent_lock);
55946
55947 -@@ -1927,7 +1927,7 @@ static void event_callback(void *context
55948 +@@ -1977,7 +1977,7 @@ static void event_callback(void *context
55949
55950 dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
55951
55952 @@ -32818,7 +29475,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm.c linux-2.6.32.48/drivers/md/dm.c
55953 wake_up(&md->eventq);
55954 }
55955
55956 -@@ -2562,18 +2562,18 @@ void dm_kobject_uevent(struct mapped_dev
55957 +@@ -2553,18 +2553,18 @@ int dm_kobject_uevent(struct mapped_devi
55958
55959 uint32_t dm_next_uevent_seq(struct mapped_device *md)
55960 {
55961 @@ -32840,10 +29497,10 @@ diff -urNp linux-2.6.32.48/drivers/md/dm.c linux-2.6.32.48/drivers/md/dm.c
55962 }
55963
55964 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
55965 -diff -urNp linux-2.6.32.48/drivers/md/dm-ioctl.c linux-2.6.32.48/drivers/md/dm-ioctl.c
55966 ---- linux-2.6.32.48/drivers/md/dm-ioctl.c 2011-11-12 12:44:29.000000000 -0500
55967 -+++ linux-2.6.32.48/drivers/md/dm-ioctl.c 2011-11-12 12:46:45.000000000 -0500
55968 -@@ -1437,7 +1437,7 @@ static int validate_params(uint cmd, str
55969 +diff -urNp linux-3.0.8/drivers/md/dm-ioctl.c linux-3.0.8/drivers/md/dm-ioctl.c
55970 +--- linux-3.0.8/drivers/md/dm-ioctl.c 2011-07-21 22:17:23.000000000 -0400
55971 ++++ linux-3.0.8/drivers/md/dm-ioctl.c 2011-08-23 21:47:55.000000000 -0400
55972 +@@ -1551,7 +1551,7 @@ static int validate_params(uint cmd, str
55973 cmd == DM_LIST_VERSIONS_CMD)
55974 return 0;
55975
55976 @@ -32852,10 +29509,10 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-ioctl.c linux-2.6.32.48/drivers/md/dm-i
55977 if (!*param->name) {
55978 DMWARN("name not supplied when creating device");
55979 return -EINVAL;
55980 -diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-raid1.c
55981 ---- linux-2.6.32.48/drivers/md/dm-raid1.c 2011-11-12 12:44:29.000000000 -0500
55982 -+++ linux-2.6.32.48/drivers/md/dm-raid1.c 2011-11-12 12:46:45.000000000 -0500
55983 -@@ -41,7 +41,7 @@ enum dm_raid1_error {
55984 +diff -urNp linux-3.0.8/drivers/md/dm-raid1.c linux-3.0.8/drivers/md/dm-raid1.c
55985 +--- linux-3.0.8/drivers/md/dm-raid1.c 2011-07-21 22:17:23.000000000 -0400
55986 ++++ linux-3.0.8/drivers/md/dm-raid1.c 2011-08-23 21:47:55.000000000 -0400
55987 +@@ -40,7 +40,7 @@ enum dm_raid1_error {
55988
55989 struct mirror {
55990 struct mirror_set *ms;
55991 @@ -32864,7 +29521,16 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
55992 unsigned long error_type;
55993 struct dm_dev *dev;
55994 sector_t offset;
55995 -@@ -203,7 +203,7 @@ static void fail_mirror(struct mirror *m
55996 +@@ -185,7 +185,7 @@ static struct mirror *get_valid_mirror(s
55997 + struct mirror *m;
55998 +
55999 + for (m = ms->mirror; m < ms->mirror + ms->nr_mirrors; m++)
56000 +- if (!atomic_read(&m->error_count))
56001 ++ if (!atomic_read_unchecked(&m->error_count))
56002 + return m;
56003 +
56004 + return NULL;
56005 +@@ -217,7 +217,7 @@ static void fail_mirror(struct mirror *m
56006 * simple way to tell if a device has encountered
56007 * errors.
56008 */
56009 @@ -32873,16 +29539,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
56010
56011 if (test_and_set_bit(error_type, &m->error_type))
56012 return;
56013 -@@ -225,7 +225,7 @@ static void fail_mirror(struct mirror *m
56014 - }
56015 -
56016 - for (new = ms->mirror; new < ms->mirror + ms->nr_mirrors; new++)
56017 -- if (!atomic_read(&new->error_count)) {
56018 -+ if (!atomic_read_unchecked(&new->error_count)) {
56019 - set_default_mirror(new);
56020 - break;
56021 - }
56022 -@@ -363,7 +363,7 @@ static struct mirror *choose_mirror(stru
56023 +@@ -408,7 +408,7 @@ static struct mirror *choose_mirror(stru
56024 struct mirror *m = get_default_mirror(ms);
56025
56026 do {
56027 @@ -32891,7 +29548,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
56028 return m;
56029
56030 if (m-- == ms->mirror)
56031 -@@ -377,7 +377,7 @@ static int default_ok(struct mirror *m)
56032 +@@ -422,7 +422,7 @@ static int default_ok(struct mirror *m)
56033 {
56034 struct mirror *default_mirror = get_default_mirror(m->ms);
56035
56036 @@ -32900,7 +29557,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
56037 }
56038
56039 static int mirror_available(struct mirror_set *ms, struct bio *bio)
56040 -@@ -484,7 +484,7 @@ static void do_reads(struct mirror_set *
56041 +@@ -559,7 +559,7 @@ static void do_reads(struct mirror_set *
56042 */
56043 if (likely(region_in_sync(ms, region, 1)))
56044 m = choose_mirror(ms, bio->bi_sector);
56045 @@ -32909,7 +29566,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
56046 m = NULL;
56047
56048 if (likely(m))
56049 -@@ -855,7 +855,7 @@ static int get_mirror(struct mirror_set
56050 +@@ -937,7 +937,7 @@ static int get_mirror(struct mirror_set
56051 }
56052
56053 ms->mirror[mirror].ms = ms;
56054 @@ -32918,7 +29575,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
56055 ms->mirror[mirror].error_type = 0;
56056 ms->mirror[mirror].offset = offset;
56057
56058 -@@ -1241,7 +1241,7 @@ static void mirror_resume(struct dm_targ
56059 +@@ -1347,7 +1347,7 @@ static void mirror_resume(struct dm_targ
56060 */
56061 static char device_status_char(struct mirror *m)
56062 {
56063 @@ -32926,10 +29583,10 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-raid1.c linux-2.6.32.48/drivers/md/dm-r
56064 + if (!atomic_read_unchecked(&(m->error_count)))
56065 return 'A';
56066
56067 - return (test_bit(DM_RAID1_WRITE_ERROR, &(m->error_type))) ? 'D' :
56068 -diff -urNp linux-2.6.32.48/drivers/md/dm-stripe.c linux-2.6.32.48/drivers/md/dm-stripe.c
56069 ---- linux-2.6.32.48/drivers/md/dm-stripe.c 2011-11-12 12:44:29.000000000 -0500
56070 -+++ linux-2.6.32.48/drivers/md/dm-stripe.c 2011-11-12 12:46:45.000000000 -0500
56071 + return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' :
56072 +diff -urNp linux-3.0.8/drivers/md/dm-stripe.c linux-3.0.8/drivers/md/dm-stripe.c
56073 +--- linux-3.0.8/drivers/md/dm-stripe.c 2011-07-21 22:17:23.000000000 -0400
56074 ++++ linux-3.0.8/drivers/md/dm-stripe.c 2011-08-23 21:47:55.000000000 -0400
56075 @@ -20,7 +20,7 @@ struct stripe {
56076 struct dm_dev *dev;
56077 sector_t physical_start;
56078 @@ -32939,7 +29596,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-stripe.c linux-2.6.32.48/drivers/md/dm-
56079 };
56080
56081 struct stripe_c {
56082 -@@ -188,7 +188,7 @@ static int stripe_ctr(struct dm_target *
56083 +@@ -192,7 +192,7 @@ static int stripe_ctr(struct dm_target *
56084 kfree(sc);
56085 return r;
56086 }
56087 @@ -32948,7 +29605,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-stripe.c linux-2.6.32.48/drivers/md/dm-
56088 }
56089
56090 ti->private = sc;
56091 -@@ -257,7 +257,7 @@ static int stripe_status(struct dm_targe
56092 +@@ -314,7 +314,7 @@ static int stripe_status(struct dm_targe
56093 DMEMIT("%d ", sc->stripes);
56094 for (i = 0; i < sc->stripes; i++) {
56095 DMEMIT("%s ", sc->stripe[i].dev->name);
56096 @@ -32957,7 +29614,7 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-stripe.c linux-2.6.32.48/drivers/md/dm-
56097 'D' : 'A';
56098 }
56099 buffer[i] = '\0';
56100 -@@ -304,8 +304,8 @@ static int stripe_end_io(struct dm_targe
56101 +@@ -361,8 +361,8 @@ static int stripe_end_io(struct dm_targe
56102 */
56103 for (i = 0; i < sc->stripes; i++)
56104 if (!strcmp(sc->stripe[i].dev->name, major_minor)) {
56105 @@ -32966,24 +29623,12 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-stripe.c linux-2.6.32.48/drivers/md/dm-
56106 + atomic_inc_unchecked(&(sc->stripe[i].error_count));
56107 + if (atomic_read_unchecked(&(sc->stripe[i].error_count)) <
56108 DM_IO_ERROR_THRESHOLD)
56109 - queue_work(kstriped, &sc->kstriped_ws);
56110 + schedule_work(&sc->trigger_event);
56111 }
56112 -diff -urNp linux-2.6.32.48/drivers/md/dm-sysfs.c linux-2.6.32.48/drivers/md/dm-sysfs.c
56113 ---- linux-2.6.32.48/drivers/md/dm-sysfs.c 2009-12-02 22:51:21.000000000 -0500
56114 -+++ linux-2.6.32.48/drivers/md/dm-sysfs.c 2011-11-12 12:46:45.000000000 -0500
56115 -@@ -75,7 +75,7 @@ static struct attribute *dm_attrs[] = {
56116 - NULL,
56117 - };
56118 -
56119 --static struct sysfs_ops dm_sysfs_ops = {
56120 -+static const struct sysfs_ops dm_sysfs_ops = {
56121 - .show = dm_attr_show,
56122 - };
56123 -
56124 -diff -urNp linux-2.6.32.48/drivers/md/dm-table.c linux-2.6.32.48/drivers/md/dm-table.c
56125 ---- linux-2.6.32.48/drivers/md/dm-table.c 2011-11-12 12:44:29.000000000 -0500
56126 -+++ linux-2.6.32.48/drivers/md/dm-table.c 2011-11-12 12:46:45.000000000 -0500
56127 -@@ -376,7 +376,7 @@ static int device_area_is_invalid(struct
56128 +diff -urNp linux-3.0.8/drivers/md/dm-table.c linux-3.0.8/drivers/md/dm-table.c
56129 +--- linux-3.0.8/drivers/md/dm-table.c 2011-10-24 08:05:32.000000000 -0400
56130 ++++ linux-3.0.8/drivers/md/dm-table.c 2011-10-17 23:17:19.000000000 -0400
56131 +@@ -390,7 +390,7 @@ static int device_area_is_invalid(struct
56132 if (!dev_size)
56133 return 0;
56134
56135 @@ -32992,10 +29637,10 @@ diff -urNp linux-2.6.32.48/drivers/md/dm-table.c linux-2.6.32.48/drivers/md/dm-t
56136 DMWARN("%s: %s too small for target: "
56137 "start=%llu, len=%llu, dev_size=%llu",
56138 dm_device_name(ti->table->md), bdevname(bdev, b),
56139 -diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56140 ---- linux-2.6.32.48/drivers/md/md.c 2011-11-12 12:44:29.000000000 -0500
56141 -+++ linux-2.6.32.48/drivers/md/md.c 2011-11-12 12:46:45.000000000 -0500
56142 -@@ -153,10 +153,10 @@ static int start_readonly;
56143 +diff -urNp linux-3.0.8/drivers/md/md.c linux-3.0.8/drivers/md/md.c
56144 +--- linux-3.0.8/drivers/md/md.c 2011-10-24 08:05:32.000000000 -0400
56145 ++++ linux-3.0.8/drivers/md/md.c 2011-10-17 23:17:19.000000000 -0400
56146 +@@ -231,10 +231,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev);
56147 * start build, activate spare
56148 */
56149 static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters);
56150 @@ -33008,7 +29653,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56151 wake_up(&md_event_waiters);
56152 }
56153 EXPORT_SYMBOL_GPL(md_new_event);
56154 -@@ -166,7 +166,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
56155 +@@ -244,7 +244,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
56156 */
56157 static void md_new_event_inintr(mddev_t *mddev)
56158 {
56159 @@ -33017,7 +29662,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56160 wake_up(&md_event_waiters);
56161 }
56162
56163 -@@ -1226,7 +1226,7 @@ static int super_1_load(mdk_rdev_t *rdev
56164 +@@ -1475,7 +1475,7 @@ static int super_1_load(mdk_rdev_t *rdev
56165
56166 rdev->preferred_minor = 0xffff;
56167 rdev->data_offset = le64_to_cpu(sb->data_offset);
56168 @@ -33026,7 +29671,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56169
56170 rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
56171 bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
56172 -@@ -1400,7 +1400,7 @@ static void super_1_sync(mddev_t *mddev,
56173 +@@ -1653,7 +1653,7 @@ static void super_1_sync(mddev_t *mddev,
56174 else
56175 sb->resync_offset = cpu_to_le64(0);
56176
56177 @@ -33035,7 +29680,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56178
56179 sb->raid_disks = cpu_to_le32(mddev->raid_disks);
56180 sb->size = cpu_to_le64(mddev->dev_sectors);
56181 -@@ -2222,7 +2222,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_sho
56182 +@@ -2446,7 +2446,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_sho
56183 static ssize_t
56184 errors_show(mdk_rdev_t *rdev, char *page)
56185 {
56186 @@ -33044,7 +29689,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56187 }
56188
56189 static ssize_t
56190 -@@ -2231,7 +2231,7 @@ errors_store(mdk_rdev_t *rdev, const cha
56191 +@@ -2455,7 +2455,7 @@ errors_store(mdk_rdev_t *rdev, const cha
56192 char *e;
56193 unsigned long n = simple_strtoul(buf, &e, 10);
56194 if (*buf && (*e == 0 || *e == '\n')) {
56195 @@ -33053,46 +29698,18 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56196 return len;
56197 }
56198 return -EINVAL;
56199 -@@ -2525,7 +2525,7 @@ static void rdev_free(struct kobject *ko
56200 - mdk_rdev_t *rdev = container_of(ko, mdk_rdev_t, kobj);
56201 - kfree(rdev);
56202 - }
56203 --static struct sysfs_ops rdev_sysfs_ops = {
56204 -+static const struct sysfs_ops rdev_sysfs_ops = {
56205 - .show = rdev_attr_show,
56206 - .store = rdev_attr_store,
56207 - };
56208 -@@ -2574,8 +2574,8 @@ static mdk_rdev_t *md_import_device(dev_
56209 - rdev->data_offset = 0;
56210 - rdev->sb_events = 0;
56211 +@@ -2811,8 +2811,8 @@ void md_rdev_init(mdk_rdev_t *rdev)
56212 + rdev->last_read_error.tv_sec = 0;
56213 + rdev->last_read_error.tv_nsec = 0;
56214 atomic_set(&rdev->nr_pending, 0);
56215 - atomic_set(&rdev->read_errors, 0);
56216 - atomic_set(&rdev->corrected_errors, 0);
56217 + atomic_set_unchecked(&rdev->read_errors, 0);
56218 + atomic_set_unchecked(&rdev->corrected_errors, 0);
56219
56220 - size = rdev->bdev->bd_inode->i_size >> BLOCK_SIZE_BITS;
56221 - if (!size) {
56222 -@@ -3895,7 +3895,7 @@ static void md_free(struct kobject *ko)
56223 - kfree(mddev);
56224 - }
56225 -
56226 --static struct sysfs_ops md_sysfs_ops = {
56227 -+static const struct sysfs_ops md_sysfs_ops = {
56228 - .show = md_attr_show,
56229 - .store = md_attr_store,
56230 - };
56231 -@@ -4482,7 +4482,8 @@ out:
56232 - err = 0;
56233 - blk_integrity_unregister(disk);
56234 - md_new_event(mddev);
56235 -- sysfs_notify_dirent(mddev->sysfs_state);
56236 -+ if (mddev->sysfs_state)
56237 -+ sysfs_notify_dirent(mddev->sysfs_state);
56238 - return err;
56239 - }
56240 -
56241 -@@ -5962,7 +5963,7 @@ static int md_seq_show(struct seq_file *
56242 + INIT_LIST_HEAD(&rdev->same_set);
56243 + init_waitqueue_head(&rdev->blocked_wait);
56244 +@@ -6440,7 +6440,7 @@ static int md_seq_show(struct seq_file *
56245
56246 spin_unlock(&pers_lock);
56247 seq_printf(seq, "\n");
56248 @@ -33101,7 +29718,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56249 return 0;
56250 }
56251 if (v == (void*)2) {
56252 -@@ -6051,7 +6052,7 @@ static int md_seq_show(struct seq_file *
56253 +@@ -6529,7 +6529,7 @@ static int md_seq_show(struct seq_file *
56254 chunk_kb ? "KB" : "B");
56255 if (bitmap->file) {
56256 seq_printf(seq, ", file: ");
56257 @@ -33110,7 +29727,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56258 }
56259
56260 seq_printf(seq, "\n");
56261 -@@ -6085,7 +6086,7 @@ static int md_seq_open(struct inode *ino
56262 +@@ -6563,7 +6563,7 @@ static int md_seq_open(struct inode *ino
56263 else {
56264 struct seq_file *p = file->private_data;
56265 p->private = mi;
56266 @@ -33119,7 +29736,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56267 }
56268 return error;
56269 }
56270 -@@ -6101,7 +6102,7 @@ static unsigned int mdstat_poll(struct f
56271 +@@ -6579,7 +6579,7 @@ static unsigned int mdstat_poll(struct f
56272 /* always allow read */
56273 mask = POLLIN | POLLRDNORM;
56274
56275 @@ -33128,7 +29745,7 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56276 mask |= POLLERR | POLLPRI;
56277 return mask;
56278 }
56279 -@@ -6145,7 +6146,7 @@ static int is_mddev_idle(mddev_t *mddev,
56280 +@@ -6623,7 +6623,7 @@ static int is_mddev_idle(mddev_t *mddev,
56281 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
56282 curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
56283 (int)part_stat_read(&disk->part0, sectors[1]) -
56284 @@ -33137,10 +29754,10 @@ diff -urNp linux-2.6.32.48/drivers/md/md.c linux-2.6.32.48/drivers/md/md.c
56285 /* sync IO will cause sync_io to increase before the disk_stats
56286 * as sync_io is counted when a request starts, and
56287 * disk_stats is counted when it completes.
56288 -diff -urNp linux-2.6.32.48/drivers/md/md.h linux-2.6.32.48/drivers/md/md.h
56289 ---- linux-2.6.32.48/drivers/md/md.h 2011-11-12 12:44:29.000000000 -0500
56290 -+++ linux-2.6.32.48/drivers/md/md.h 2011-11-12 12:46:45.000000000 -0500
56291 -@@ -94,10 +94,10 @@ struct mdk_rdev_s
56292 +diff -urNp linux-3.0.8/drivers/md/md.h linux-3.0.8/drivers/md/md.h
56293 +--- linux-3.0.8/drivers/md/md.h 2011-10-24 08:05:32.000000000 -0400
56294 ++++ linux-3.0.8/drivers/md/md.h 2011-10-17 23:17:19.000000000 -0400
56295 +@@ -97,13 +97,13 @@ struct mdk_rdev_s
56296 * only maintained for arrays that
56297 * support hot removal
56298 */
56299 @@ -33148,12 +29765,15 @@ diff -urNp linux-2.6.32.48/drivers/md/md.h linux-2.6.32.48/drivers/md/md.h
56300 + atomic_unchecked_t read_errors; /* number of consecutive read errors that
56301 * we have tried to ignore.
56302 */
56303 + struct timespec last_read_error; /* monotonic time since our
56304 + * last read error
56305 + */
56306 - atomic_t corrected_errors; /* number of corrected read errors,
56307 + atomic_unchecked_t corrected_errors; /* number of corrected read errors,
56308 * for reporting to userspace and storing
56309 * in superblock.
56310 */
56311 -@@ -304,7 +304,7 @@ static inline void rdev_dec_pending(mdk_
56312 +@@ -344,7 +344,7 @@ static inline void rdev_dec_pending(mdk_
56313
56314 static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
56315 {
56316 @@ -33162,10 +29782,10 @@ diff -urNp linux-2.6.32.48/drivers/md/md.h linux-2.6.32.48/drivers/md/md.h
56317 }
56318
56319 struct mdk_personality
56320 -diff -urNp linux-2.6.32.48/drivers/md/raid10.c linux-2.6.32.48/drivers/md/raid10.c
56321 ---- linux-2.6.32.48/drivers/md/raid10.c 2011-11-12 12:44:29.000000000 -0500
56322 -+++ linux-2.6.32.48/drivers/md/raid10.c 2011-11-12 12:46:45.000000000 -0500
56323 -@@ -1255,7 +1255,7 @@ static void end_sync_read(struct bio *bi
56324 +diff -urNp linux-3.0.8/drivers/md/raid10.c linux-3.0.8/drivers/md/raid10.c
56325 +--- linux-3.0.8/drivers/md/raid10.c 2011-10-24 08:05:32.000000000 -0400
56326 ++++ linux-3.0.8/drivers/md/raid10.c 2011-10-17 23:17:19.000000000 -0400
56327 +@@ -1186,7 +1186,7 @@ static void end_sync_read(struct bio *bi
56328 if (test_bit(BIO_UPTODATE, &bio->bi_flags))
56329 set_bit(R10BIO_Uptodate, &r10_bio->state);
56330 else {
56331 @@ -33174,40 +29794,81 @@ diff -urNp linux-2.6.32.48/drivers/md/raid10.c linux-2.6.32.48/drivers/md/raid10
56332 &conf->mirrors[d].rdev->corrected_errors);
56333 if (!test_bit(MD_RECOVERY_SYNC, &conf->mddev->recovery))
56334 md_error(r10_bio->mddev,
56335 +@@ -1394,7 +1394,7 @@ static void check_decay_read_errors(mdde
56336 + {
56337 + struct timespec cur_time_mon;
56338 + unsigned long hours_since_last;
56339 +- unsigned int read_errors = atomic_read(&rdev->read_errors);
56340 ++ unsigned int read_errors = atomic_read_unchecked(&rdev->read_errors);
56341 +
56342 + ktime_get_ts(&cur_time_mon);
56343 +
56344 +@@ -1416,9 +1416,9 @@ static void check_decay_read_errors(mdde
56345 + * overflowing the shift of read_errors by hours_since_last.
56346 + */
56347 + if (hours_since_last >= 8 * sizeof(read_errors))
56348 +- atomic_set(&rdev->read_errors, 0);
56349 ++ atomic_set_unchecked(&rdev->read_errors, 0);
56350 + else
56351 +- atomic_set(&rdev->read_errors, read_errors >> hours_since_last);
56352 ++ atomic_set_unchecked(&rdev->read_errors, read_errors >> hours_since_last);
56353 + }
56354 +
56355 + /*
56356 +@@ -1448,8 +1448,8 @@ static void fix_read_error(conf_t *conf,
56357 + return;
56358 +
56359 + check_decay_read_errors(mddev, rdev);
56360 +- atomic_inc(&rdev->read_errors);
56361 +- if (atomic_read(&rdev->read_errors) > max_read_errors) {
56362 ++ atomic_inc_unchecked(&rdev->read_errors);
56363 ++ if (atomic_read_unchecked(&rdev->read_errors) > max_read_errors) {
56364 + char b[BDEVNAME_SIZE];
56365 + bdevname(rdev->bdev, b);
56366 +
56367 +@@ -1457,7 +1457,7 @@ static void fix_read_error(conf_t *conf,
56368 + "md/raid10:%s: %s: Raid device exceeded "
56369 + "read_error threshold [cur %d:max %d]\n",
56370 + mdname(mddev), b,
56371 +- atomic_read(&rdev->read_errors), max_read_errors);
56372 ++ atomic_read_unchecked(&rdev->read_errors), max_read_errors);
56373 + printk(KERN_NOTICE
56374 + "md/raid10:%s: %s: Failing raid device\n",
56375 + mdname(mddev), b);
56376 @@ -1520,7 +1520,7 @@ static void fix_read_error(conf_t *conf,
56377 test_bit(In_sync, &rdev->flags)) {
56378 atomic_inc(&rdev->nr_pending);
56379 rcu_read_unlock();
56380 - atomic_add(s, &rdev->corrected_errors);
56381 + atomic_add_unchecked(s, &rdev->corrected_errors);
56382 - if (sync_page_io(rdev->bdev,
56383 + if (sync_page_io(rdev,
56384 r10_bio->devs[sl].addr +
56385 - sect + rdev->data_offset,
56386 -diff -urNp linux-2.6.32.48/drivers/md/raid1.c linux-2.6.32.48/drivers/md/raid1.c
56387 ---- linux-2.6.32.48/drivers/md/raid1.c 2011-11-12 12:44:29.000000000 -0500
56388 -+++ linux-2.6.32.48/drivers/md/raid1.c 2011-11-12 12:46:45.000000000 -0500
56389 -@@ -1415,7 +1415,7 @@ static void sync_request_write(mddev_t *
56390 - if (r1_bio->bios[d]->bi_end_io != end_sync_read)
56391 - continue;
56392 - rdev = conf->mirrors[d].rdev;
56393 -- atomic_add(s, &rdev->corrected_errors);
56394 -+ atomic_add_unchecked(s, &rdev->corrected_errors);
56395 - if (sync_page_io(rdev->bdev,
56396 - sect + rdev->data_offset,
56397 - s<<9,
56398 -@@ -1564,7 +1564,7 @@ static void fix_read_error(conf_t *conf,
56399 + sect,
56400 +diff -urNp linux-3.0.8/drivers/md/raid1.c linux-3.0.8/drivers/md/raid1.c
56401 +--- linux-3.0.8/drivers/md/raid1.c 2011-10-24 08:05:32.000000000 -0400
56402 ++++ linux-3.0.8/drivers/md/raid1.c 2011-10-17 23:17:19.000000000 -0400
56403 +@@ -1263,7 +1263,7 @@ static int fix_sync_read_error(r1bio_t *
56404 + rdev_dec_pending(rdev, mddev);
56405 + md_error(mddev, rdev);
56406 + } else
56407 +- atomic_add(s, &rdev->corrected_errors);
56408 ++ atomic_add_unchecked(s, &rdev->corrected_errors);
56409 + }
56410 + d = start;
56411 + while (d != r1_bio->read_disk) {
56412 +@@ -1492,7 +1492,7 @@ static void fix_read_error(conf_t *conf,
56413 /* Well, this device is dead */
56414 md_error(mddev, rdev);
56415 else {
56416 - atomic_add(s, &rdev->corrected_errors);
56417 + atomic_add_unchecked(s, &rdev->corrected_errors);
56418 printk(KERN_INFO
56419 - "raid1:%s: read error corrected "
56420 + "md/raid1:%s: read error corrected "
56421 "(%d sectors at %llu on %s)\n",
56422 -diff -urNp linux-2.6.32.48/drivers/md/raid5.c linux-2.6.32.48/drivers/md/raid5.c
56423 ---- linux-2.6.32.48/drivers/md/raid5.c 2011-11-12 12:44:29.000000000 -0500
56424 -+++ linux-2.6.32.48/drivers/md/raid5.c 2011-11-12 12:46:45.000000000 -0500
56425 -@@ -482,7 +482,7 @@ static void ops_run_io(struct stripe_hea
56426 +diff -urNp linux-3.0.8/drivers/md/raid5.c linux-3.0.8/drivers/md/raid5.c
56427 +--- linux-3.0.8/drivers/md/raid5.c 2011-10-24 08:05:32.000000000 -0400
56428 ++++ linux-3.0.8/drivers/md/raid5.c 2011-10-17 23:17:19.000000000 -0400
56429 +@@ -550,7 +550,7 @@ static void ops_run_io(struct stripe_hea
56430 bi->bi_next = NULL;
56431 if ((rw & WRITE) &&
56432 test_bit(R5_ReWrite, &sh->dev[i].flags))
56433 @@ -33216,7 +29877,7 @@ diff -urNp linux-2.6.32.48/drivers/md/raid5.c linux-2.6.32.48/drivers/md/raid5.c
56434 &rdev->corrected_errors);
56435 generic_make_request(bi);
56436 } else {
56437 -@@ -1517,15 +1517,15 @@ static void raid5_end_read_request(struc
56438 +@@ -1596,15 +1596,15 @@ static void raid5_end_read_request(struc
56439 clear_bit(R5_ReadError, &sh->dev[i].flags);
56440 clear_bit(R5_ReWrite, &sh->dev[i].flags);
56441 }
56442 @@ -33234,8 +29895,8 @@ diff -urNp linux-2.6.32.48/drivers/md/raid5.c linux-2.6.32.48/drivers/md/raid5.c
56443 + atomic_inc_unchecked(&rdev->read_errors);
56444 if (conf->mddev->degraded >= conf->max_degraded)
56445 printk_rl(KERN_WARNING
56446 - "raid5:%s: read error not correctable "
56447 -@@ -1543,7 +1543,7 @@ static void raid5_end_read_request(struc
56448 + "md/raid:%s: read error not correctable "
56449 +@@ -1622,7 +1622,7 @@ static void raid5_end_read_request(struc
56450 (unsigned long long)(sh->sector
56451 + rdev->data_offset),
56452 bdn);
56453 @@ -33243,8 +29904,8 @@ diff -urNp linux-2.6.32.48/drivers/md/raid5.c linux-2.6.32.48/drivers/md/raid5.c
56454 + else if (atomic_read_unchecked(&rdev->read_errors)
56455 > conf->max_nr_stripes)
56456 printk(KERN_WARNING
56457 - "raid5:%s: Too many read errors, failing device %s.\n",
56458 -@@ -1870,6 +1870,7 @@ static sector_t compute_blocknr(struct s
56459 + "md/raid:%s: Too many read errors, failing device %s.\n",
56460 +@@ -1945,6 +1945,7 @@ static sector_t compute_blocknr(struct s
56461 sector_t r_sector;
56462 struct stripe_head sh2;
56463
56464 @@ -33252,9 +29913,9 @@ diff -urNp linux-2.6.32.48/drivers/md/raid5.c linux-2.6.32.48/drivers/md/raid5.c
56465
56466 chunk_offset = sector_div(new_sector, sectors_per_chunk);
56467 stripe = new_sector;
56468 -diff -urNp linux-2.6.32.48/drivers/media/common/saa7146_hlp.c linux-2.6.32.48/drivers/media/common/saa7146_hlp.c
56469 ---- linux-2.6.32.48/drivers/media/common/saa7146_hlp.c 2009-12-02 22:51:21.000000000 -0500
56470 -+++ linux-2.6.32.48/drivers/media/common/saa7146_hlp.c 2011-11-12 12:46:45.000000000 -0500
56471 +diff -urNp linux-3.0.8/drivers/media/common/saa7146_hlp.c linux-3.0.8/drivers/media/common/saa7146_hlp.c
56472 +--- linux-3.0.8/drivers/media/common/saa7146_hlp.c 2011-07-21 22:17:23.000000000 -0400
56473 ++++ linux-3.0.8/drivers/media/common/saa7146_hlp.c 2011-08-23 21:48:14.000000000 -0400
56474 @@ -353,6 +353,8 @@ static void calculate_clipping_registers
56475
56476 int x[32], y[32], w[32], h[32];
56477 @@ -33264,9 +29925,9 @@ diff -urNp linux-2.6.32.48/drivers/media/common/saa7146_hlp.c linux-2.6.32.48/dr
56478 /* clear out memory */
56479 memset(&line_list[0], 0x00, sizeof(u32)*32);
56480 memset(&pixel_list[0], 0x00, sizeof(u32)*32);
56481 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
56482 ---- linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2009-12-02 22:51:21.000000000 -0500
56483 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-11-12 12:46:45.000000000 -0500
56484 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-3.0.8/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
56485 +--- linux-3.0.8/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-07-21 22:17:23.000000000 -0400
56486 ++++ linux-3.0.8/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2011-08-23 21:48:14.000000000 -0400
56487 @@ -590,6 +590,8 @@ static int dvb_ca_en50221_read_data(stru
56488 u8 buf[HOST_LINK_BUF_SIZE];
56489 int i;
56490 @@ -33285,10 +29946,16 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-2.6
56491 dprintk("%s\n", __func__);
56492
56493 /* Incoming packet has a 2 byte header. hdr[0] = slot_id, hdr[1] = connection_id */
56494 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h
56495 ---- linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h 2009-12-02 22:51:21.000000000 -0500
56496 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h 2011-11-12 12:46:45.000000000 -0500
56497 -@@ -71,7 +71,7 @@ struct dvb_demux_feed {
56498 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-core/dvb_demux.h linux-3.0.8/drivers/media/dvb/dvb-core/dvb_demux.h
56499 +--- linux-3.0.8/drivers/media/dvb/dvb-core/dvb_demux.h 2011-07-21 22:17:23.000000000 -0400
56500 ++++ linux-3.0.8/drivers/media/dvb/dvb-core/dvb_demux.h 2011-08-24 18:24:40.000000000 -0400
56501 +@@ -68,12 +68,12 @@ struct dvb_demux_feed {
56502 + union {
56503 + struct dmx_ts_feed ts;
56504 + struct dmx_section_feed sec;
56505 +- } feed;
56506 ++ } __no_const feed;
56507 +
56508 union {
56509 dmx_ts_cb ts;
56510 dmx_section_cb sec;
56511 @@ -33297,10 +29964,10 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvb_demux.h linux-2.6.32.4
56512
56513 struct dvb_demux *demux;
56514 void *priv;
56515 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c
56516 ---- linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c 2009-12-02 22:51:21.000000000 -0500
56517 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c 2011-11-12 12:46:45.000000000 -0500
56518 -@@ -191,7 +191,7 @@ int dvb_register_device(struct dvb_adapt
56519 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-core/dvbdev.c linux-3.0.8/drivers/media/dvb/dvb-core/dvbdev.c
56520 +--- linux-3.0.8/drivers/media/dvb/dvb-core/dvbdev.c 2011-07-21 22:17:23.000000000 -0400
56521 ++++ linux-3.0.8/drivers/media/dvb/dvb-core/dvbdev.c 2011-08-24 18:24:19.000000000 -0400
56522 +@@ -192,7 +192,7 @@ int dvb_register_device(struct dvb_adapt
56523 const struct dvb_device *template, void *priv, int type)
56524 {
56525 struct dvb_device *dvbdev;
56526 @@ -33309,10 +29976,10 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-core/dvbdev.c linux-2.6.32.48/d
56527 struct device *clsdev;
56528 int minor;
56529 int id;
56530 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c
56531 ---- linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c 2009-12-02 22:51:21.000000000 -0500
56532 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c 2011-11-12 12:46:45.000000000 -0500
56533 -@@ -1040,7 +1040,7 @@ static struct dib0070_config dib7070p_di
56534 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-usb/cxusb.c linux-3.0.8/drivers/media/dvb/dvb-usb/cxusb.c
56535 +--- linux-3.0.8/drivers/media/dvb/dvb-usb/cxusb.c 2011-07-21 22:17:23.000000000 -0400
56536 ++++ linux-3.0.8/drivers/media/dvb/dvb-usb/cxusb.c 2011-08-24 18:26:33.000000000 -0400
56537 +@@ -1059,7 +1059,7 @@ static struct dib0070_config dib7070p_di
56538 struct dib0700_adapter_state {
56539 int (*set_param_save) (struct dvb_frontend *,
56540 struct dvb_frontend_parameters *);
56541 @@ -33321,45 +29988,105 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/cxusb.c linux-2.6.32.48/dri
56542
56543 static int dib7070_set_param_override(struct dvb_frontend *fe,
56544 struct dvb_frontend_parameters *fep)
56545 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c
56546 ---- linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c 2009-12-02 22:51:21.000000000 -0500
56547 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-11-12 12:46:45.000000000 -0500
56548 -@@ -332,6 +332,8 @@ int dib0700_download_firmware(struct usb
56549 -
56550 - u8 buf[260];
56551 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-usb/dib0700_core.c linux-3.0.8/drivers/media/dvb/dvb-usb/dib0700_core.c
56552 +--- linux-3.0.8/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-07-21 22:17:23.000000000 -0400
56553 ++++ linux-3.0.8/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-08-23 21:48:14.000000000 -0400
56554 +@@ -434,6 +434,8 @@ int dib0700_download_firmware(struct usb
56555 + if (!buf)
56556 + return -ENOMEM;
56557
56558 + pax_track_stack();
56559 +
56560 while ((ret = dvb_usb_get_hexline(fw, &hx, &pos)) > 0) {
56561 - deb_fwdata("writing to address 0x%08x (buffer: 0x%02x %02x)\n",hx.addr, hx.len, hx.chk);
56562 -
56563 -diff -urNp linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c
56564 ---- linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-11-12 12:44:29.000000000 -0500
56565 -+++ linux-2.6.32.48/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-11-12 12:46:45.000000000 -0500
56566 -@@ -28,7 +28,7 @@ MODULE_PARM_DESC(force_lna_activation, "
56567 + deb_fwdata("writing to address 0x%08x (buffer: 0x%02x %02x)\n",
56568 + hx.addr, hx.len, hx.chk);
56569 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-usb/dibusb.h linux-3.0.8/drivers/media/dvb/dvb-usb/dibusb.h
56570 +--- linux-3.0.8/drivers/media/dvb/dvb-usb/dibusb.h 2011-07-21 22:17:23.000000000 -0400
56571 ++++ linux-3.0.8/drivers/media/dvb/dvb-usb/dibusb.h 2011-08-24 18:27:27.000000000 -0400
56572 +@@ -97,7 +97,7 @@
56573 + #define DIBUSB_IOCTL_CMD_DISABLE_STREAM 0x02
56574 +
56575 + struct dibusb_state {
56576 +- struct dib_fe_xfer_ops ops;
56577 ++ dib_fe_xfer_ops_no_const ops;
56578 + int mt2060_present;
56579 + u8 tuner_addr;
56580 + };
56581 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-usb/dw2102.c linux-3.0.8/drivers/media/dvb/dvb-usb/dw2102.c
56582 +--- linux-3.0.8/drivers/media/dvb/dvb-usb/dw2102.c 2011-07-21 22:17:23.000000000 -0400
56583 ++++ linux-3.0.8/drivers/media/dvb/dvb-usb/dw2102.c 2011-08-24 18:27:45.000000000 -0400
56584 +@@ -95,7 +95,7 @@ struct su3000_state {
56585
56586 - struct dib0700_adapter_state {
56587 - int (*set_param_save) (struct dvb_frontend *, struct dvb_frontend_parameters *);
56588 + struct s6x0_state {
56589 + int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v);
56590 -};
56591 +} __no_const;
56592
56593 - /* Hauppauge Nova-T 500 (aka Bristol)
56594 - * has a LNA on GPIO0 which is enabled by setting 1 */
56595 -diff -urNp linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h
56596 ---- linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h 2009-12-02 22:51:21.000000000 -0500
56597 -+++ linux-2.6.32.48/drivers/media/dvb/frontends/dib3000.h 2011-11-12 12:46:45.000000000 -0500
56598 -@@ -39,7 +39,7 @@ struct dib_fe_xfer_ops
56599 - int (*fifo_ctrl)(struct dvb_frontend *fe, int onoff);
56600 + /* debug */
56601 + static int dvb_usb_dw2102_debug;
56602 +diff -urNp linux-3.0.8/drivers/media/dvb/dvb-usb/lmedm04.c linux-3.0.8/drivers/media/dvb/dvb-usb/lmedm04.c
56603 +--- linux-3.0.8/drivers/media/dvb/dvb-usb/lmedm04.c 2011-07-21 22:17:23.000000000 -0400
56604 ++++ linux-3.0.8/drivers/media/dvb/dvb-usb/lmedm04.c 2011-08-23 21:48:14.000000000 -0400
56605 +@@ -742,6 +742,7 @@ static int lme2510_download_firmware(str
56606 + usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
56607 + 0x06, 0x80, 0x0200, 0x00, data, 0x0109, 1000);
56608 +
56609 ++ pax_track_stack();
56610 +
56611 + data[0] = 0x8a;
56612 + len_in = 1;
56613 +@@ -764,6 +765,8 @@ static void lme_coldreset(struct usb_dev
56614 + int ret = 0, len_in;
56615 + u8 data[512] = {0};
56616 +
56617 ++ pax_track_stack();
56618 ++
56619 + data[0] = 0x0a;
56620 + len_in = 1;
56621 + info("FRM Firmware Cold Reset");
56622 +diff -urNp linux-3.0.8/drivers/media/dvb/frontends/dib3000.h linux-3.0.8/drivers/media/dvb/frontends/dib3000.h
56623 +--- linux-3.0.8/drivers/media/dvb/frontends/dib3000.h 2011-07-21 22:17:23.000000000 -0400
56624 ++++ linux-3.0.8/drivers/media/dvb/frontends/dib3000.h 2011-10-07 19:07:39.000000000 -0400
56625 +@@ -40,10 +40,11 @@ struct dib_fe_xfer_ops
56626 int (*pid_ctrl)(struct dvb_frontend *fe, int index, int pid, int onoff);
56627 int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl);
56628 --};
56629 -+} __no_const;
56630 + };
56631 ++typedef struct dib_fe_xfer_ops __no_const dib_fe_xfer_ops_no_const;
56632
56633 #if defined(CONFIG_DVB_DIB3000MB) || (defined(CONFIG_DVB_DIB3000MB_MODULE) && defined(MODULE))
56634 extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
56635 -diff -urNp linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c
56636 ---- linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c 2009-12-02 22:51:21.000000000 -0500
56637 -+++ linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c 2011-11-12 12:46:45.000000000 -0500
56638 +- struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops);
56639 ++ struct i2c_adapter* i2c, dib_fe_xfer_ops_no_const *xfer_ops);
56640 + #else
56641 + static inline struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
56642 + struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops)
56643 +diff -urNp linux-3.0.8/drivers/media/dvb/frontends/dib3000mb.c linux-3.0.8/drivers/media/dvb/frontends/dib3000mb.c
56644 +--- linux-3.0.8/drivers/media/dvb/frontends/dib3000mb.c 2011-07-21 22:17:23.000000000 -0400
56645 ++++ linux-3.0.8/drivers/media/dvb/frontends/dib3000mb.c 2011-08-24 18:28:42.000000000 -0400
56646 +@@ -756,7 +756,7 @@ static int dib3000mb_tuner_pass_ctrl(str
56647 + static struct dvb_frontend_ops dib3000mb_ops;
56648 +
56649 + struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
56650 +- struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops)
56651 ++ struct i2c_adapter* i2c, dib_fe_xfer_ops_no_const *xfer_ops)
56652 + {
56653 + struct dib3000_state* state = NULL;
56654 +
56655 +diff -urNp linux-3.0.8/drivers/media/dvb/frontends/mb86a16.c linux-3.0.8/drivers/media/dvb/frontends/mb86a16.c
56656 +--- linux-3.0.8/drivers/media/dvb/frontends/mb86a16.c 2011-07-21 22:17:23.000000000 -0400
56657 ++++ linux-3.0.8/drivers/media/dvb/frontends/mb86a16.c 2011-08-23 21:48:14.000000000 -0400
56658 +@@ -1060,6 +1060,8 @@ static int mb86a16_set_fe(struct mb86a16
56659 + int ret = -1;
56660 + int sync;
56661 +
56662 ++ pax_track_stack();
56663 ++
56664 + dprintk(verbose, MB86A16_INFO, 1, "freq=%d Mhz, symbrt=%d Ksps", state->frequency, state->srate);
56665 +
56666 + fcp = 3000;
56667 +diff -urNp linux-3.0.8/drivers/media/dvb/frontends/or51211.c linux-3.0.8/drivers/media/dvb/frontends/or51211.c
56668 +--- linux-3.0.8/drivers/media/dvb/frontends/or51211.c 2011-07-21 22:17:23.000000000 -0400
56669 ++++ linux-3.0.8/drivers/media/dvb/frontends/or51211.c 2011-08-23 21:48:14.000000000 -0400
56670 @@ -113,6 +113,8 @@ static int or51211_load_firmware (struct
56671 u8 tudata[585];
56672 int i;
56673 @@ -33369,31 +30096,22 @@ diff -urNp linux-2.6.32.48/drivers/media/dvb/frontends/or51211.c linux-2.6.32.48
56674 dprintk("Firmware is %zd bytes\n",fw->size);
56675
56676 /* Get eprom data */
56677 -diff -urNp linux-2.6.32.48/drivers/media/radio/radio-cadet.c linux-2.6.32.48/drivers/media/radio/radio-cadet.c
56678 ---- linux-2.6.32.48/drivers/media/radio/radio-cadet.c 2009-12-02 22:51:21.000000000 -0500
56679 -+++ linux-2.6.32.48/drivers/media/radio/radio-cadet.c 2011-11-12 12:46:45.000000000 -0500
56680 -@@ -347,7 +347,7 @@ static ssize_t cadet_read(struct file *f
56681 - while (i < count && dev->rdsin != dev->rdsout)
56682 - readbuf[i++] = dev->rdsbuf[dev->rdsout++];
56683 -
56684 -- if (copy_to_user(data, readbuf, i))
56685 -+ if (i > sizeof readbuf || copy_to_user(data, readbuf, i))
56686 - return -EFAULT;
56687 - return i;
56688 - }
56689 -diff -urNp linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c
56690 ---- linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c 2009-12-02 22:51:21.000000000 -0500
56691 -+++ linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c 2011-11-12 12:46:45.000000000 -0500
56692 -@@ -56,7 +56,7 @@ static struct pci_device_id cx18_pci_tbl
56693 -
56694 - MODULE_DEVICE_TABLE(pci, cx18_pci_tbl);
56695 -
56696 --static atomic_t cx18_instance = ATOMIC_INIT(0);
56697 -+static atomic_unchecked_t cx18_instance = ATOMIC_INIT(0);
56698 -
56699 - /* Parameter declarations */
56700 - static int cardtype[CX18_MAX_CARDS];
56701 -@@ -288,6 +288,8 @@ void cx18_read_eeprom(struct cx18 *cx, s
56702 +diff -urNp linux-3.0.8/drivers/media/dvb/ngene/ngene-cards.c linux-3.0.8/drivers/media/dvb/ngene/ngene-cards.c
56703 +--- linux-3.0.8/drivers/media/dvb/ngene/ngene-cards.c 2011-07-21 22:17:23.000000000 -0400
56704 ++++ linux-3.0.8/drivers/media/dvb/ngene/ngene-cards.c 2011-10-11 10:44:33.000000000 -0400
56705 +@@ -379,7 +379,7 @@ static struct ngene_info ngene_info_m780
56706 +
56707 + /****************************************************************************/
56708 +
56709 +-static const struct pci_device_id ngene_id_tbl[] __devinitdata = {
56710 ++static const struct pci_device_id ngene_id_tbl[] __devinitconst = {
56711 + NGENE_ID(0x18c3, 0xabc3, ngene_info_cineS2),
56712 + NGENE_ID(0x18c3, 0xabc4, ngene_info_cineS2),
56713 + NGENE_ID(0x18c3, 0xdb01, ngene_info_satixS2),
56714 +diff -urNp linux-3.0.8/drivers/media/video/cx18/cx18-driver.c linux-3.0.8/drivers/media/video/cx18/cx18-driver.c
56715 +--- linux-3.0.8/drivers/media/video/cx18/cx18-driver.c 2011-07-21 22:17:23.000000000 -0400
56716 ++++ linux-3.0.8/drivers/media/video/cx18/cx18-driver.c 2011-08-23 21:48:14.000000000 -0400
56717 +@@ -327,6 +327,8 @@ void cx18_read_eeprom(struct cx18 *cx, s
56718 struct i2c_client c;
56719 u8 eedata[256];
56720
56721 @@ -33402,55 +30120,34 @@ diff -urNp linux-2.6.32.48/drivers/media/video/cx18/cx18-driver.c linux-2.6.32.4
56722 memset(&c, 0, sizeof(c));
56723 strlcpy(c.name, "cx18 tveeprom tmp", sizeof(c.name));
56724 c.adapter = &cx->i2c_adap[0];
56725 -@@ -800,7 +802,7 @@ static int __devinit cx18_probe(struct p
56726 - struct cx18 *cx;
56727 -
56728 - /* FIXME - module parameter arrays constrain max instances */
56729 -- i = atomic_inc_return(&cx18_instance) - 1;
56730 -+ i = atomic_inc_return_unchecked(&cx18_instance) - 1;
56731 - if (i >= CX18_MAX_CARDS) {
56732 - printk(KERN_ERR "cx18: cannot manage card %d, driver has a "
56733 - "limit of 0 - %d\n", i, CX18_MAX_CARDS - 1);
56734 -diff -urNp linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c
56735 ---- linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c 2009-12-02 22:51:21.000000000 -0500
56736 -+++ linux-2.6.32.48/drivers/media/video/ivtv/ivtv-driver.c 2011-11-12 12:46:45.000000000 -0500
56737 -@@ -79,7 +79,7 @@ static struct pci_device_id ivtv_pci_tbl
56738 - MODULE_DEVICE_TABLE(pci,ivtv_pci_tbl);
56739 -
56740 - /* ivtv instance counter */
56741 --static atomic_t ivtv_instance = ATOMIC_INIT(0);
56742 -+static atomic_unchecked_t ivtv_instance = ATOMIC_INIT(0);
56743 -
56744 - /* Parameter declarations */
56745 - static int cardtype[IVTV_MAX_CARDS];
56746 -diff -urNp linux-2.6.32.48/drivers/media/video/omap24xxcam.c linux-2.6.32.48/drivers/media/video/omap24xxcam.c
56747 ---- linux-2.6.32.48/drivers/media/video/omap24xxcam.c 2009-12-02 22:51:21.000000000 -0500
56748 -+++ linux-2.6.32.48/drivers/media/video/omap24xxcam.c 2011-11-12 12:46:45.000000000 -0500
56749 -@@ -401,7 +401,7 @@ static void omap24xxcam_vbq_complete(str
56750 - spin_unlock_irqrestore(&cam->core_enable_disable_lock, flags);
56751 -
56752 - do_gettimeofday(&vb->ts);
56753 -- vb->field_count = atomic_add_return(2, &fh->field_count);
56754 -+ vb->field_count = atomic_add_return_unchecked(2, &fh->field_count);
56755 - if (csr & csr_error) {
56756 - vb->state = VIDEOBUF_ERROR;
56757 - if (!atomic_read(&fh->cam->in_reset)) {
56758 -diff -urNp linux-2.6.32.48/drivers/media/video/omap24xxcam.h linux-2.6.32.48/drivers/media/video/omap24xxcam.h
56759 ---- linux-2.6.32.48/drivers/media/video/omap24xxcam.h 2009-12-02 22:51:21.000000000 -0500
56760 -+++ linux-2.6.32.48/drivers/media/video/omap24xxcam.h 2011-11-12 12:46:45.000000000 -0500
56761 -@@ -533,7 +533,7 @@ struct omap24xxcam_fh {
56762 - spinlock_t vbq_lock; /* spinlock for the videobuf queue */
56763 - struct videobuf_queue vbq;
56764 - struct v4l2_pix_format pix; /* serialise pix by vbq->lock */
56765 -- atomic_t field_count; /* field counter for videobuf_buffer */
56766 -+ atomic_unchecked_t field_count; /* field counter for videobuf_buffer */
56767 - /* accessing cam here doesn't need serialisation: it's constant */
56768 - struct omap24xxcam_device *cam;
56769 - };
56770 -diff -urNp linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
56771 ---- linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2009-12-02 22:51:21.000000000 -0500
56772 -+++ linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-11-12 12:46:45.000000000 -0500
56773 -@@ -119,6 +119,8 @@ int pvr2_eeprom_analyze(struct pvr2_hdw
56774 +diff -urNp linux-3.0.8/drivers/media/video/cx23885/cx23885-input.c linux-3.0.8/drivers/media/video/cx23885/cx23885-input.c
56775 +--- linux-3.0.8/drivers/media/video/cx23885/cx23885-input.c 2011-07-21 22:17:23.000000000 -0400
56776 ++++ linux-3.0.8/drivers/media/video/cx23885/cx23885-input.c 2011-08-23 21:48:14.000000000 -0400
56777 +@@ -53,6 +53,8 @@ static void cx23885_input_process_measur
56778 + bool handle = false;
56779 + struct ir_raw_event ir_core_event[64];
56780 +
56781 ++ pax_track_stack();
56782 ++
56783 + do {
56784 + num = 0;
56785 + v4l2_subdev_call(dev->sd_ir, ir, rx_read, (u8 *) ir_core_event,
56786 +diff -urNp linux-3.0.8/drivers/media/video/cx88/cx88-alsa.c linux-3.0.8/drivers/media/video/cx88/cx88-alsa.c
56787 +--- linux-3.0.8/drivers/media/video/cx88/cx88-alsa.c 2011-07-21 22:17:23.000000000 -0400
56788 ++++ linux-3.0.8/drivers/media/video/cx88/cx88-alsa.c 2011-10-11 10:44:33.000000000 -0400
56789 +@@ -764,7 +764,7 @@ static struct snd_kcontrol_new snd_cx88_
56790 + * Only boards with eeprom and byte 1 at eeprom=1 have it
56791 + */
56792 +
56793 +-static const struct pci_device_id const cx88_audio_pci_tbl[] __devinitdata = {
56794 ++static const struct pci_device_id const cx88_audio_pci_tbl[] __devinitconst = {
56795 + {0x14f1,0x8801,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
56796 + {0x14f1,0x8811,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
56797 + {0, }
56798 +diff -urNp linux-3.0.8/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-3.0.8/drivers/media/video/pvrusb2/pvrusb2-eeprom.c
56799 +--- linux-3.0.8/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-07-21 22:17:23.000000000 -0400
56800 ++++ linux-3.0.8/drivers/media/video/pvrusb2/pvrusb2-eeprom.c 2011-08-23 21:48:14.000000000 -0400
56801 +@@ -120,6 +120,8 @@ int pvr2_eeprom_analyze(struct pvr2_hdw
56802 u8 *eeprom;
56803 struct tveeprom tvdata;
56804
56805 @@ -33459,22 +30156,10 @@ diff -urNp linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-eeprom.c linux-2.
56806 memset(&tvdata,0,sizeof(tvdata));
56807
56808 eeprom = pvr2_eeprom_fetch(hdw);
56809 -diff -urNp linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
56810 ---- linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2009-12-02 22:51:21.000000000 -0500
56811 -+++ linux-2.6.32.48/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 2011-11-12 12:46:45.000000000 -0500
56812 -@@ -195,7 +195,7 @@ struct pvr2_hdw {
56813 -
56814 - /* I2C stuff */
56815 - struct i2c_adapter i2c_adap;
56816 -- struct i2c_algorithm i2c_algo;
56817 -+ i2c_algorithm_no_const i2c_algo;
56818 - pvr2_i2c_func i2c_func[PVR2_I2C_FUNC_CNT];
56819 - int i2c_cx25840_hack_state;
56820 - int i2c_linked;
56821 -diff -urNp linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c
56822 ---- linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c 2009-12-02 22:51:21.000000000 -0500
56823 -+++ linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c 2011-11-12 12:46:45.000000000 -0500
56824 -@@ -683,6 +683,8 @@ static int saa6752hs_init(struct v4l2_su
56825 +diff -urNp linux-3.0.8/drivers/media/video/saa7134/saa6752hs.c linux-3.0.8/drivers/media/video/saa7134/saa6752hs.c
56826 +--- linux-3.0.8/drivers/media/video/saa7134/saa6752hs.c 2011-07-21 22:17:23.000000000 -0400
56827 ++++ linux-3.0.8/drivers/media/video/saa7134/saa6752hs.c 2011-08-23 21:48:14.000000000 -0400
56828 +@@ -682,6 +682,8 @@ static int saa6752hs_init(struct v4l2_su
56829 unsigned char localPAT[256];
56830 unsigned char localPMT[256];
56831
56832 @@ -33483,11 +30168,11 @@ diff -urNp linux-2.6.32.48/drivers/media/video/saa7134/saa6752hs.c linux-2.6.32.
56833 /* Set video format - must be done first as it resets other settings */
56834 set_reg8(client, 0x41, h->video_format);
56835
56836 -diff -urNp linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c
56837 ---- linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c 2009-12-02 22:51:21.000000000 -0500
56838 -+++ linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c 2011-11-12 12:46:45.000000000 -0500
56839 -@@ -87,6 +87,8 @@ int saa7164_irq_dequeue(struct saa7164_d
56840 - wait_queue_head_t *q = 0;
56841 +diff -urNp linux-3.0.8/drivers/media/video/saa7164/saa7164-cmd.c linux-3.0.8/drivers/media/video/saa7164/saa7164-cmd.c
56842 +--- linux-3.0.8/drivers/media/video/saa7164/saa7164-cmd.c 2011-07-21 22:17:23.000000000 -0400
56843 ++++ linux-3.0.8/drivers/media/video/saa7164/saa7164-cmd.c 2011-08-23 21:48:14.000000000 -0400
56844 +@@ -88,6 +88,8 @@ int saa7164_irq_dequeue(struct saa7164_d
56845 + u8 tmp[512];
56846 dprintk(DBGLVL_CMD, "%s()\n", __func__);
56847
56848 + pax_track_stack();
56849 @@ -33495,7 +30180,7 @@ diff -urNp linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c linux-2.6.3
56850 /* While any outstand message on the bus exists... */
56851 do {
56852
56853 -@@ -126,6 +128,8 @@ int saa7164_cmd_dequeue(struct saa7164_d
56854 +@@ -141,6 +143,8 @@ int saa7164_cmd_dequeue(struct saa7164_d
56855 u8 tmp[512];
56856 dprintk(DBGLVL_CMD, "%s()\n", __func__);
56857
56858 @@ -33503,179 +30188,35 @@ diff -urNp linux-2.6.32.48/drivers/media/video/saa7164/saa7164-cmd.c linux-2.6.3
56859 +
56860 while (loop) {
56861
56862 - tmComResInfo_t tRsp = { 0, 0, 0, 0, 0, 0 };
56863 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c
56864 ---- linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c 2009-12-02 22:51:21.000000000 -0500
56865 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/ibmcam.c 2011-11-12 12:46:45.000000000 -0500
56866 -@@ -3947,15 +3947,15 @@ static struct usb_device_id id_table[] =
56867 - static int __init ibmcam_init(void)
56868 - {
56869 - struct usbvideo_cb cbTbl;
56870 -- memset(&cbTbl, 0, sizeof(cbTbl));
56871 -- cbTbl.probe = ibmcam_probe;
56872 -- cbTbl.setupOnOpen = ibmcam_setup_on_open;
56873 -- cbTbl.videoStart = ibmcam_video_start;
56874 -- cbTbl.videoStop = ibmcam_video_stop;
56875 -- cbTbl.processData = ibmcam_ProcessIsocData;
56876 -- cbTbl.postProcess = usbvideo_DeinterlaceFrame;
56877 -- cbTbl.adjustPicture = ibmcam_adjust_picture;
56878 -- cbTbl.getFPS = ibmcam_calculate_fps;
56879 -+ memset((void *)&cbTbl, 0, sizeof(cbTbl));
56880 -+ *(void **)&cbTbl.probe = ibmcam_probe;
56881 -+ *(void **)&cbTbl.setupOnOpen = ibmcam_setup_on_open;
56882 -+ *(void **)&cbTbl.videoStart = ibmcam_video_start;
56883 -+ *(void **)&cbTbl.videoStop = ibmcam_video_stop;
56884 -+ *(void **)&cbTbl.processData = ibmcam_ProcessIsocData;
56885 -+ *(void **)&cbTbl.postProcess = usbvideo_DeinterlaceFrame;
56886 -+ *(void **)&cbTbl.adjustPicture = ibmcam_adjust_picture;
56887 -+ *(void **)&cbTbl.getFPS = ibmcam_calculate_fps;
56888 - return usbvideo_register(
56889 - &cams,
56890 - MAX_IBMCAM,
56891 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c
56892 ---- linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c 2009-12-02 22:51:21.000000000 -0500
56893 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/konicawc.c 2011-11-12 12:46:45.000000000 -0500
56894 -@@ -225,7 +225,7 @@ static void konicawc_register_input(stru
56895 - int error;
56896 -
56897 - usb_make_path(dev, cam->input_physname, sizeof(cam->input_physname));
56898 -- strncat(cam->input_physname, "/input0", sizeof(cam->input_physname));
56899 -+ strlcat(cam->input_physname, "/input0", sizeof(cam->input_physname));
56900 -
56901 - cam->input = input_dev = input_allocate_device();
56902 - if (!input_dev) {
56903 -@@ -935,16 +935,16 @@ static int __init konicawc_init(void)
56904 - struct usbvideo_cb cbTbl;
56905 - printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
56906 - DRIVER_DESC "\n");
56907 -- memset(&cbTbl, 0, sizeof(cbTbl));
56908 -- cbTbl.probe = konicawc_probe;
56909 -- cbTbl.setupOnOpen = konicawc_setup_on_open;
56910 -- cbTbl.processData = konicawc_process_isoc;
56911 -- cbTbl.getFPS = konicawc_calculate_fps;
56912 -- cbTbl.setVideoMode = konicawc_set_video_mode;
56913 -- cbTbl.startDataPump = konicawc_start_data;
56914 -- cbTbl.stopDataPump = konicawc_stop_data;
56915 -- cbTbl.adjustPicture = konicawc_adjust_picture;
56916 -- cbTbl.userFree = konicawc_free_uvd;
56917 -+ memset((void * )&cbTbl, 0, sizeof(cbTbl));
56918 -+ *(void **)&cbTbl.probe = konicawc_probe;
56919 -+ *(void **)&cbTbl.setupOnOpen = konicawc_setup_on_open;
56920 -+ *(void **)&cbTbl.processData = konicawc_process_isoc;
56921 -+ *(void **)&cbTbl.getFPS = konicawc_calculate_fps;
56922 -+ *(void **)&cbTbl.setVideoMode = konicawc_set_video_mode;
56923 -+ *(void **)&cbTbl.startDataPump = konicawc_start_data;
56924 -+ *(void **)&cbTbl.stopDataPump = konicawc_stop_data;
56925 -+ *(void **)&cbTbl.adjustPicture = konicawc_adjust_picture;
56926 -+ *(void **)&cbTbl.userFree = konicawc_free_uvd;
56927 - return usbvideo_register(
56928 - &cams,
56929 - MAX_CAMERAS,
56930 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c
56931 ---- linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c 2009-12-02 22:51:21.000000000 -0500
56932 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/quickcam_messenger.c 2011-11-12 12:46:45.000000000 -0500
56933 -@@ -89,7 +89,7 @@ static void qcm_register_input(struct qc
56934 - int error;
56935 -
56936 - usb_make_path(dev, cam->input_physname, sizeof(cam->input_physname));
56937 -- strncat(cam->input_physname, "/input0", sizeof(cam->input_physname));
56938 -+ strlcat(cam->input_physname, "/input0", sizeof(cam->input_physname));
56939 -
56940 - cam->input = input_dev = input_allocate_device();
56941 - if (!input_dev) {
56942 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c
56943 ---- linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c 2009-12-02 22:51:21.000000000 -0500
56944 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/ultracam.c 2011-11-12 12:46:45.000000000 -0500
56945 -@@ -655,14 +655,14 @@ static int __init ultracam_init(void)
56946 - {
56947 - struct usbvideo_cb cbTbl;
56948 - memset(&cbTbl, 0, sizeof(cbTbl));
56949 -- cbTbl.probe = ultracam_probe;
56950 -- cbTbl.setupOnOpen = ultracam_setup_on_open;
56951 -- cbTbl.videoStart = ultracam_video_start;
56952 -- cbTbl.videoStop = ultracam_video_stop;
56953 -- cbTbl.processData = ultracam_ProcessIsocData;
56954 -- cbTbl.postProcess = usbvideo_DeinterlaceFrame;
56955 -- cbTbl.adjustPicture = ultracam_adjust_picture;
56956 -- cbTbl.getFPS = ultracam_calculate_fps;
56957 -+ *(void **)&cbTbl.probe = ultracam_probe;
56958 -+ *(void **)&cbTbl.setupOnOpen = ultracam_setup_on_open;
56959 -+ *(void **)&cbTbl.videoStart = ultracam_video_start;
56960 -+ *(void **)&cbTbl.videoStop = ultracam_video_stop;
56961 -+ *(void **)&cbTbl.processData = ultracam_ProcessIsocData;
56962 -+ *(void **)&cbTbl.postProcess = usbvideo_DeinterlaceFrame;
56963 -+ *(void **)&cbTbl.adjustPicture = ultracam_adjust_picture;
56964 -+ *(void **)&cbTbl.getFPS = ultracam_calculate_fps;
56965 - return usbvideo_register(
56966 - &cams,
56967 - MAX_CAMERAS,
56968 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c
56969 ---- linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c 2009-12-02 22:51:21.000000000 -0500
56970 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.c 2011-11-12 12:46:45.000000000 -0500
56971 -@@ -697,15 +697,15 @@ int usbvideo_register(
56972 - __func__, cams, base_size, num_cams);
56973 -
56974 - /* Copy callbacks, apply defaults for those that are not set */
56975 -- memmove(&cams->cb, cbTbl, sizeof(cams->cb));
56976 -+ memmove((void *)&cams->cb, cbTbl, sizeof(cams->cb));
56977 - if (cams->cb.getFrame == NULL)
56978 -- cams->cb.getFrame = usbvideo_GetFrame;
56979 -+ *(void **)&cams->cb.getFrame = usbvideo_GetFrame;
56980 - if (cams->cb.disconnect == NULL)
56981 -- cams->cb.disconnect = usbvideo_Disconnect;
56982 -+ *(void **)&cams->cb.disconnect = usbvideo_Disconnect;
56983 - if (cams->cb.startDataPump == NULL)
56984 -- cams->cb.startDataPump = usbvideo_StartDataPump;
56985 -+ *(void **)&cams->cb.startDataPump = usbvideo_StartDataPump;
56986 - if (cams->cb.stopDataPump == NULL)
56987 -- cams->cb.stopDataPump = usbvideo_StopDataPump;
56988 -+ *(void **)&cams->cb.stopDataPump = usbvideo_StopDataPump;
56989 -
56990 - cams->num_cameras = num_cams;
56991 - cams->cam = (struct uvd *) &cams[1];
56992 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h
56993 ---- linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h 2009-12-02 22:51:21.000000000 -0500
56994 -+++ linux-2.6.32.48/drivers/media/video/usbvideo/usbvideo.h 2011-11-12 12:46:45.000000000 -0500
56995 -@@ -268,7 +268,7 @@ struct usbvideo_cb {
56996 - int (*startDataPump)(struct uvd *uvd);
56997 - void (*stopDataPump)(struct uvd *uvd);
56998 - int (*setVideoMode)(struct uvd *uvd, struct video_window *vw);
56999 --};
57000 -+} __no_const;
57001 -
57002 - struct usbvideo {
57003 - int num_cameras; /* As allocated */
57004 -diff -urNp linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c
57005 ---- linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c 2009-12-02 22:51:21.000000000 -0500
57006 -+++ linux-2.6.32.48/drivers/media/video/usbvision/usbvision-core.c 2011-11-12 12:46:45.000000000 -0500
57007 -@@ -820,6 +820,8 @@ static enum ParseState usbvision_parse_c
57008 + struct tmComResInfo tRsp = { 0, 0, 0, 0, 0, 0 };
57009 +diff -urNp linux-3.0.8/drivers/media/video/timblogiw.c linux-3.0.8/drivers/media/video/timblogiw.c
57010 +--- linux-3.0.8/drivers/media/video/timblogiw.c 2011-07-21 22:17:23.000000000 -0400
57011 ++++ linux-3.0.8/drivers/media/video/timblogiw.c 2011-08-24 18:29:20.000000000 -0400
57012 +@@ -745,7 +745,7 @@ static int timblogiw_mmap(struct file *f
57013 +
57014 + /* Platform device functions */
57015 +
57016 +-static __devinitconst struct v4l2_ioctl_ops timblogiw_ioctl_ops = {
57017 ++static __devinitconst v4l2_ioctl_ops_no_const timblogiw_ioctl_ops = {
57018 + .vidioc_querycap = timblogiw_querycap,
57019 + .vidioc_enum_fmt_vid_cap = timblogiw_enum_fmt,
57020 + .vidioc_g_fmt_vid_cap = timblogiw_g_fmt,
57021 +diff -urNp linux-3.0.8/drivers/media/video/usbvision/usbvision-core.c linux-3.0.8/drivers/media/video/usbvision/usbvision-core.c
57022 +--- linux-3.0.8/drivers/media/video/usbvision/usbvision-core.c 2011-07-21 22:17:23.000000000 -0400
57023 ++++ linux-3.0.8/drivers/media/video/usbvision/usbvision-core.c 2011-08-23 21:48:14.000000000 -0400
57024 +@@ -707,6 +707,8 @@ static enum parse_state usbvision_parse_
57025 unsigned char rv, gv, bv;
57026 static unsigned char *Y, *U, *V;
57027
57028 + pax_track_stack();
57029 +
57030 - frame = usbvision->curFrame;
57031 - imageSize = frame->frmwidth * frame->frmheight;
57032 - if ( (frame->v4l2_format.format == V4L2_PIX_FMT_YUV422P) ||
57033 -diff -urNp linux-2.6.32.48/drivers/media/video/v4l2-device.c linux-2.6.32.48/drivers/media/video/v4l2-device.c
57034 ---- linux-2.6.32.48/drivers/media/video/v4l2-device.c 2009-12-02 22:51:21.000000000 -0500
57035 -+++ linux-2.6.32.48/drivers/media/video/v4l2-device.c 2011-11-12 12:46:45.000000000 -0500
57036 -@@ -50,9 +50,9 @@ int v4l2_device_register(struct device *
57037 - EXPORT_SYMBOL_GPL(v4l2_device_register);
57038 -
57039 - int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename,
57040 -- atomic_t *instance)
57041 -+ atomic_unchecked_t *instance)
57042 - {
57043 -- int num = atomic_inc_return(instance) - 1;
57044 -+ int num = atomic_inc_return_unchecked(instance) - 1;
57045 - int len = strlen(basename);
57046 -
57047 - if (basename[len - 1] >= '0' && basename[len - 1] <= '9')
57048 -diff -urNp linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c
57049 ---- linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c 2009-12-02 22:51:21.000000000 -0500
57050 -+++ linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c 2011-11-12 12:46:45.000000000 -0500
57051 -@@ -693,6 +693,8 @@ void *videobuf_sg_alloc(size_t size)
57052 + frame = usbvision->cur_frame;
57053 + image_size = frame->frmwidth * frame->frmheight;
57054 + if ((frame->v4l2_format.format == V4L2_PIX_FMT_YUV422P) ||
57055 +diff -urNp linux-3.0.8/drivers/media/video/videobuf-dma-sg.c linux-3.0.8/drivers/media/video/videobuf-dma-sg.c
57056 +--- linux-3.0.8/drivers/media/video/videobuf-dma-sg.c 2011-07-21 22:17:23.000000000 -0400
57057 ++++ linux-3.0.8/drivers/media/video/videobuf-dma-sg.c 2011-08-23 21:48:14.000000000 -0400
57058 +@@ -606,6 +606,8 @@ void *videobuf_sg_alloc(size_t size)
57059 {
57060 struct videobuf_queue q;
57061
57062 @@ -33684,28 +30225,27 @@ diff -urNp linux-2.6.32.48/drivers/media/video/videobuf-dma-sg.c linux-2.6.32.48
57063 /* Required to make generic handler to call __videobuf_alloc */
57064 q.int_ops = &sg_ops;
57065
57066 -diff -urNp linux-2.6.32.48/drivers/message/fusion/mptbase.c linux-2.6.32.48/drivers/message/fusion/mptbase.c
57067 ---- linux-2.6.32.48/drivers/message/fusion/mptbase.c 2011-11-12 12:44:29.000000000 -0500
57068 -+++ linux-2.6.32.48/drivers/message/fusion/mptbase.c 2011-11-12 12:46:45.000000000 -0500
57069 -@@ -6709,8 +6709,14 @@ procmpt_iocinfo_read(char *buf, char **s
57070 - len += sprintf(buf+len, " MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
57071 - len += sprintf(buf+len, " MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
57072 +diff -urNp linux-3.0.8/drivers/message/fusion/mptbase.c linux-3.0.8/drivers/message/fusion/mptbase.c
57073 +--- linux-3.0.8/drivers/message/fusion/mptbase.c 2011-07-21 22:17:23.000000000 -0400
57074 ++++ linux-3.0.8/drivers/message/fusion/mptbase.c 2011-08-23 21:48:14.000000000 -0400
57075 +@@ -6681,8 +6681,13 @@ static int mpt_iocinfo_proc_show(struct
57076 + seq_printf(m, " MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
57077 + seq_printf(m, " MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
57078
57079 +#ifdef CONFIG_GRKERNSEC_HIDESYM
57080 -+ len += sprintf(buf+len, " RequestFrames @ 0x%p (Dma @ 0x%p)\n",
57081 -+ NULL, NULL);
57082 ++ seq_printf(m, " RequestFrames @ 0x%p (Dma @ 0x%p)\n", NULL, NULL);
57083 +#else
57084 - len += sprintf(buf+len, " RequestFrames @ 0x%p (Dma @ 0x%p)\n",
57085 + seq_printf(m, " RequestFrames @ 0x%p (Dma @ 0x%p)\n",
57086 (void *)ioc->req_frames, (void *)(ulong)ioc->req_frames_dma);
57087 +#endif
57088 +
57089 /*
57090 * Rounding UP to nearest 4-kB boundary here...
57091 */
57092 -diff -urNp linux-2.6.32.48/drivers/message/fusion/mptsas.c linux-2.6.32.48/drivers/message/fusion/mptsas.c
57093 ---- linux-2.6.32.48/drivers/message/fusion/mptsas.c 2009-12-02 22:51:21.000000000 -0500
57094 -+++ linux-2.6.32.48/drivers/message/fusion/mptsas.c 2011-11-12 12:46:45.000000000 -0500
57095 -@@ -436,6 +436,23 @@ mptsas_is_end_device(struct mptsas_devin
57096 +diff -urNp linux-3.0.8/drivers/message/fusion/mptsas.c linux-3.0.8/drivers/message/fusion/mptsas.c
57097 +--- linux-3.0.8/drivers/message/fusion/mptsas.c 2011-07-21 22:17:23.000000000 -0400
57098 ++++ linux-3.0.8/drivers/message/fusion/mptsas.c 2011-08-23 21:47:55.000000000 -0400
57099 +@@ -439,6 +439,23 @@ mptsas_is_end_device(struct mptsas_devin
57100 return 0;
57101 }
57102
57103 @@ -33729,7 +30269,7 @@ diff -urNp linux-2.6.32.48/drivers/message/fusion/mptsas.c linux-2.6.32.48/drive
57104 /* no mutex */
57105 static void
57106 mptsas_port_delete(MPT_ADAPTER *ioc, struct mptsas_portinfo_details * port_details)
57107 -@@ -474,23 +491,6 @@ mptsas_get_rphy(struct mptsas_phyinfo *p
57108 +@@ -477,23 +494,6 @@ mptsas_get_rphy(struct mptsas_phyinfo *p
57109 return NULL;
57110 }
57111
57112 @@ -33753,10 +30293,10 @@ diff -urNp linux-2.6.32.48/drivers/message/fusion/mptsas.c linux-2.6.32.48/drive
57113 static inline struct sas_port *
57114 mptsas_get_port(struct mptsas_phyinfo *phy_info)
57115 {
57116 -diff -urNp linux-2.6.32.48/drivers/message/fusion/mptscsih.c linux-2.6.32.48/drivers/message/fusion/mptscsih.c
57117 ---- linux-2.6.32.48/drivers/message/fusion/mptscsih.c 2011-11-12 12:44:29.000000000 -0500
57118 -+++ linux-2.6.32.48/drivers/message/fusion/mptscsih.c 2011-11-12 12:46:45.000000000 -0500
57119 -@@ -1248,15 +1248,16 @@ mptscsih_info(struct Scsi_Host *SChost)
57120 +diff -urNp linux-3.0.8/drivers/message/fusion/mptscsih.c linux-3.0.8/drivers/message/fusion/mptscsih.c
57121 +--- linux-3.0.8/drivers/message/fusion/mptscsih.c 2011-07-21 22:17:23.000000000 -0400
57122 ++++ linux-3.0.8/drivers/message/fusion/mptscsih.c 2011-08-23 21:47:55.000000000 -0400
57123 +@@ -1268,15 +1268,16 @@ mptscsih_info(struct Scsi_Host *SChost)
57124
57125 h = shost_priv(SChost);
57126
57127 @@ -33781,10 +30321,10 @@ diff -urNp linux-2.6.32.48/drivers/message/fusion/mptscsih.c linux-2.6.32.48/dri
57128
57129 return h->info_kbuf;
57130 }
57131 -diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_config.c linux-2.6.32.48/drivers/message/i2o/i2o_config.c
57132 ---- linux-2.6.32.48/drivers/message/i2o/i2o_config.c 2009-12-02 22:51:21.000000000 -0500
57133 -+++ linux-2.6.32.48/drivers/message/i2o/i2o_config.c 2011-11-12 12:46:45.000000000 -0500
57134 -@@ -787,6 +787,8 @@ static int i2o_cfg_passthru(unsigned lon
57135 +diff -urNp linux-3.0.8/drivers/message/i2o/i2o_config.c linux-3.0.8/drivers/message/i2o/i2o_config.c
57136 +--- linux-3.0.8/drivers/message/i2o/i2o_config.c 2011-07-21 22:17:23.000000000 -0400
57137 ++++ linux-3.0.8/drivers/message/i2o/i2o_config.c 2011-08-23 21:48:14.000000000 -0400
57138 +@@ -781,6 +781,8 @@ static int i2o_cfg_passthru(unsigned lon
57139 struct i2o_message *msg;
57140 unsigned int iop;
57141
57142 @@ -33793,10 +30333,10 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_config.c linux-2.6.32.48/driv
57143 if (get_user(iop, &cmd->iop) || get_user(user_msg, &cmd->msg))
57144 return -EFAULT;
57145
57146 -diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/drivers/message/i2o/i2o_proc.c
57147 ---- linux-2.6.32.48/drivers/message/i2o/i2o_proc.c 2009-12-02 22:51:21.000000000 -0500
57148 -+++ linux-2.6.32.48/drivers/message/i2o/i2o_proc.c 2011-11-12 12:46:45.000000000 -0500
57149 -@@ -259,13 +259,6 @@ static char *scsi_devices[] = {
57150 +diff -urNp linux-3.0.8/drivers/message/i2o/i2o_proc.c linux-3.0.8/drivers/message/i2o/i2o_proc.c
57151 +--- linux-3.0.8/drivers/message/i2o/i2o_proc.c 2011-07-21 22:17:23.000000000 -0400
57152 ++++ linux-3.0.8/drivers/message/i2o/i2o_proc.c 2011-08-23 21:47:55.000000000 -0400
57153 +@@ -255,13 +255,6 @@ static char *scsi_devices[] = {
57154 "Array Controller Device"
57155 };
57156
57157 @@ -33810,7 +30350,7 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/driver
57158 static int i2o_report_query_status(struct seq_file *seq, int block_status,
57159 char *group)
57160 {
57161 -@@ -842,8 +835,7 @@ static int i2o_seq_show_ddm_table(struct
57162 +@@ -838,8 +831,7 @@ static int i2o_seq_show_ddm_table(struct
57163
57164 seq_printf(seq, "%-#7x", ddm_table.i2o_vendor_id);
57165 seq_printf(seq, "%-#8x", ddm_table.module_id);
57166 @@ -33820,7 +30360,7 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/driver
57167 seq_printf(seq, "%9d ", ddm_table.data_size);
57168 seq_printf(seq, "%8d", ddm_table.code_size);
57169
57170 -@@ -944,8 +936,8 @@ static int i2o_seq_show_drivers_stored(s
57171 +@@ -940,8 +932,8 @@ static int i2o_seq_show_drivers_stored(s
57172
57173 seq_printf(seq, "%-#7x", dst->i2o_vendor_id);
57174 seq_printf(seq, "%-#8x", dst->module_id);
57175 @@ -33831,7 +30371,7 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/driver
57176 seq_printf(seq, "%8d ", dst->module_size);
57177 seq_printf(seq, "%8d ", dst->mpb_size);
57178 seq_printf(seq, "0x%04x", dst->module_flags);
57179 -@@ -1276,14 +1268,10 @@ static int i2o_seq_show_dev_identity(str
57180 +@@ -1272,14 +1264,10 @@ static int i2o_seq_show_dev_identity(str
57181 seq_printf(seq, "Device Class : %s\n", i2o_get_class_name(work16[0]));
57182 seq_printf(seq, "Owner TID : %0#5x\n", work16[2]);
57183 seq_printf(seq, "Parent TID : %0#5x\n", work16[3]);
57184 @@ -33850,7 +30390,7 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/driver
57185
57186 seq_printf(seq, "Serial number : ");
57187 print_serial_number(seq, (u8 *) (work32 + 16),
57188 -@@ -1328,10 +1316,8 @@ static int i2o_seq_show_ddm_identity(str
57189 +@@ -1324,10 +1312,8 @@ static int i2o_seq_show_ddm_identity(str
57190 }
57191
57192 seq_printf(seq, "Registering DDM TID : 0x%03x\n", result.ddm_tid);
57193 @@ -33863,7 +30403,7 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/driver
57194
57195 seq_printf(seq, "Serial number : ");
57196 print_serial_number(seq, result.serial_number, sizeof(result) - 36);
57197 -@@ -1362,14 +1348,10 @@ static int i2o_seq_show_uinfo(struct seq
57198 +@@ -1358,14 +1344,10 @@ static int i2o_seq_show_uinfo(struct seq
57199 return 0;
57200 }
57201
57202 @@ -33882,10 +30422,10 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/i2o_proc.c linux-2.6.32.48/driver
57203
57204 return 0;
57205 }
57206 -diff -urNp linux-2.6.32.48/drivers/message/i2o/iop.c linux-2.6.32.48/drivers/message/i2o/iop.c
57207 ---- linux-2.6.32.48/drivers/message/i2o/iop.c 2009-12-02 22:51:21.000000000 -0500
57208 -+++ linux-2.6.32.48/drivers/message/i2o/iop.c 2011-11-12 12:46:45.000000000 -0500
57209 -@@ -110,10 +110,10 @@ u32 i2o_cntxt_list_add(struct i2o_contro
57210 +diff -urNp linux-3.0.8/drivers/message/i2o/iop.c linux-3.0.8/drivers/message/i2o/iop.c
57211 +--- linux-3.0.8/drivers/message/i2o/iop.c 2011-07-21 22:17:23.000000000 -0400
57212 ++++ linux-3.0.8/drivers/message/i2o/iop.c 2011-08-23 21:47:55.000000000 -0400
57213 +@@ -111,10 +111,10 @@ u32 i2o_cntxt_list_add(struct i2o_contro
57214
57215 spin_lock_irqsave(&c->context_list_lock, flags);
57216
57217 @@ -33899,7 +30439,7 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/iop.c linux-2.6.32.48/drivers/mes
57218
57219 list_add(&entry->list, &c->context_list);
57220
57221 -@@ -1076,7 +1076,7 @@ struct i2o_controller *i2o_iop_alloc(voi
57222 +@@ -1077,7 +1077,7 @@ struct i2o_controller *i2o_iop_alloc(voi
57223
57224 #if BITS_PER_LONG == 64
57225 spin_lock_init(&c->context_list_lock);
57226 @@ -33908,10 +30448,45 @@ diff -urNp linux-2.6.32.48/drivers/message/i2o/iop.c linux-2.6.32.48/drivers/mes
57227 INIT_LIST_HEAD(&c->context_list);
57228 #endif
57229
57230 -diff -urNp linux-2.6.32.48/drivers/mfd/wm8350-i2c.c linux-2.6.32.48/drivers/mfd/wm8350-i2c.c
57231 ---- linux-2.6.32.48/drivers/mfd/wm8350-i2c.c 2009-12-02 22:51:21.000000000 -0500
57232 -+++ linux-2.6.32.48/drivers/mfd/wm8350-i2c.c 2011-11-12 12:46:45.000000000 -0500
57233 -@@ -43,6 +43,8 @@ static int wm8350_i2c_write_device(struc
57234 +diff -urNp linux-3.0.8/drivers/mfd/ab3100-core.c linux-3.0.8/drivers/mfd/ab3100-core.c
57235 +--- linux-3.0.8/drivers/mfd/ab3100-core.c 2011-07-21 22:17:23.000000000 -0400
57236 ++++ linux-3.0.8/drivers/mfd/ab3100-core.c 2011-10-11 10:44:33.000000000 -0400
57237 +@@ -809,7 +809,7 @@ struct ab_family_id {
57238 + char *name;
57239 + };
57240 +
57241 +-static const struct ab_family_id ids[] __devinitdata = {
57242 ++static const struct ab_family_id ids[] __devinitconst = {
57243 + /* AB3100 */
57244 + {
57245 + .id = 0xc0,
57246 +diff -urNp linux-3.0.8/drivers/mfd/abx500-core.c linux-3.0.8/drivers/mfd/abx500-core.c
57247 +--- linux-3.0.8/drivers/mfd/abx500-core.c 2011-07-21 22:17:23.000000000 -0400
57248 ++++ linux-3.0.8/drivers/mfd/abx500-core.c 2011-08-23 21:47:55.000000000 -0400
57249 +@@ -14,7 +14,7 @@ static LIST_HEAD(abx500_list);
57250 +
57251 + struct abx500_device_entry {
57252 + struct list_head list;
57253 +- struct abx500_ops ops;
57254 ++ abx500_ops_no_const ops;
57255 + struct device *dev;
57256 + };
57257 +
57258 +diff -urNp linux-3.0.8/drivers/mfd/janz-cmodio.c linux-3.0.8/drivers/mfd/janz-cmodio.c
57259 +--- linux-3.0.8/drivers/mfd/janz-cmodio.c 2011-07-21 22:17:23.000000000 -0400
57260 ++++ linux-3.0.8/drivers/mfd/janz-cmodio.c 2011-08-23 21:47:55.000000000 -0400
57261 +@@ -13,6 +13,7 @@
57262 +
57263 + #include <linux/kernel.h>
57264 + #include <linux/module.h>
57265 ++#include <linux/slab.h>
57266 + #include <linux/init.h>
57267 + #include <linux/pci.h>
57268 + #include <linux/interrupt.h>
57269 +diff -urNp linux-3.0.8/drivers/mfd/wm8350-i2c.c linux-3.0.8/drivers/mfd/wm8350-i2c.c
57270 +--- linux-3.0.8/drivers/mfd/wm8350-i2c.c 2011-07-21 22:17:23.000000000 -0400
57271 ++++ linux-3.0.8/drivers/mfd/wm8350-i2c.c 2011-08-23 21:48:14.000000000 -0400
57272 +@@ -44,6 +44,8 @@ static int wm8350_i2c_write_device(struc
57273 u8 msg[(WM8350_MAX_REGISTER << 1) + 1];
57274 int ret;
57275
57276 @@ -33920,44 +30495,74 @@ diff -urNp linux-2.6.32.48/drivers/mfd/wm8350-i2c.c linux-2.6.32.48/drivers/mfd/
57277 if (bytes > ((WM8350_MAX_REGISTER << 1) + 1))
57278 return -EINVAL;
57279
57280 -diff -urNp linux-2.6.32.48/drivers/misc/kgdbts.c linux-2.6.32.48/drivers/misc/kgdbts.c
57281 ---- linux-2.6.32.48/drivers/misc/kgdbts.c 2009-12-02 22:51:21.000000000 -0500
57282 -+++ linux-2.6.32.48/drivers/misc/kgdbts.c 2011-11-12 12:46:45.000000000 -0500
57283 -@@ -118,7 +118,7 @@
57284 - } while (0)
57285 - #define MAX_CONFIG_LEN 40
57286 +diff -urNp linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.c linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.c
57287 +--- linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.c 2011-10-24 08:05:32.000000000 -0400
57288 ++++ linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.c 2011-10-17 23:17:19.000000000 -0400
57289 +@@ -437,7 +437,7 @@ static irqreturn_t lis302dl_interrupt(in
57290 + * the lid is closed. This leads to interrupts as soon as a little move
57291 + * is done.
57292 + */
57293 +- atomic_inc(&lis3_dev.count);
57294 ++ atomic_inc_unchecked(&lis3_dev.count);
57295 +
57296 + wake_up_interruptible(&lis3_dev.misc_wait);
57297 + kill_fasync(&lis3_dev.async_queue, SIGIO, POLL_IN);
57298 +@@ -520,7 +520,7 @@ static int lis3lv02d_misc_open(struct in
57299 + if (lis3_dev.pm_dev)
57300 + pm_runtime_get_sync(lis3_dev.pm_dev);
57301
57302 --static struct kgdb_io kgdbts_io_ops;
57303 -+static const struct kgdb_io kgdbts_io_ops;
57304 - static char get_buf[BUFMAX];
57305 - static int get_buf_cnt;
57306 - static char put_buf[BUFMAX];
57307 -@@ -1102,7 +1102,7 @@ static void kgdbts_post_exp_handler(void
57308 - module_put(THIS_MODULE);
57309 +- atomic_set(&lis3_dev.count, 0);
57310 ++ atomic_set_unchecked(&lis3_dev.count, 0);
57311 + return 0;
57312 }
57313
57314 --static struct kgdb_io kgdbts_io_ops = {
57315 -+static const struct kgdb_io kgdbts_io_ops = {
57316 - .name = "kgdbts",
57317 - .read_char = kgdbts_get_char,
57318 - .write_char = kgdbts_put_char,
57319 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c
57320 ---- linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c 2009-12-02 22:51:21.000000000 -0500
57321 -+++ linux-2.6.32.48/drivers/misc/sgi-gru/gruhandles.c 2011-11-12 12:46:45.000000000 -0500
57322 -@@ -39,8 +39,8 @@ struct mcs_op_statistic mcs_op_statistic
57323 +@@ -547,7 +547,7 @@ static ssize_t lis3lv02d_misc_read(struc
57324 + add_wait_queue(&lis3_dev.misc_wait, &wait);
57325 + while (true) {
57326 + set_current_state(TASK_INTERRUPTIBLE);
57327 +- data = atomic_xchg(&lis3_dev.count, 0);
57328 ++ data = atomic_xchg_unchecked(&lis3_dev.count, 0);
57329 + if (data)
57330 + break;
57331
57332 - static void update_mcs_stats(enum mcs_op op, unsigned long clks)
57333 +@@ -585,7 +585,7 @@ out:
57334 + static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait)
57335 {
57336 + poll_wait(file, &lis3_dev.misc_wait, wait);
57337 +- if (atomic_read(&lis3_dev.count))
57338 ++ if (atomic_read_unchecked(&lis3_dev.count))
57339 + return POLLIN | POLLRDNORM;
57340 + return 0;
57341 + }
57342 +diff -urNp linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.h linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.h
57343 +--- linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.h 2011-07-21 22:17:23.000000000 -0400
57344 ++++ linux-3.0.8/drivers/misc/lis3lv02d/lis3lv02d.h 2011-08-23 21:47:55.000000000 -0400
57345 +@@ -265,7 +265,7 @@ struct lis3lv02d {
57346 + struct input_polled_dev *idev; /* input device */
57347 + struct platform_device *pdev; /* platform device */
57348 + struct regulator_bulk_data regulators[2];
57349 +- atomic_t count; /* interrupt count after last read */
57350 ++ atomic_unchecked_t count; /* interrupt count after last read */
57351 + union axis_conversion ac; /* hw -> logical axis */
57352 + int mapped_btns[3];
57353 +
57354 +diff -urNp linux-3.0.8/drivers/misc/sgi-gru/gruhandles.c linux-3.0.8/drivers/misc/sgi-gru/gruhandles.c
57355 +--- linux-3.0.8/drivers/misc/sgi-gru/gruhandles.c 2011-07-21 22:17:23.000000000 -0400
57356 ++++ linux-3.0.8/drivers/misc/sgi-gru/gruhandles.c 2011-08-23 21:47:55.000000000 -0400
57357 +@@ -44,8 +44,8 @@ static void update_mcs_stats(enum mcs_op
57358 + unsigned long nsec;
57359 +
57360 + nsec = CLKS2NSEC(clks);
57361 - atomic_long_inc(&mcs_op_statistics[op].count);
57362 -- atomic_long_add(clks, &mcs_op_statistics[op].total);
57363 +- atomic_long_add(nsec, &mcs_op_statistics[op].total);
57364 + atomic_long_inc_unchecked(&mcs_op_statistics[op].count);
57365 -+ atomic_long_add_unchecked(clks, &mcs_op_statistics[op].total);
57366 - if (mcs_op_statistics[op].max < clks)
57367 - mcs_op_statistics[op].max = clks;
57368 ++ atomic_long_add_unchecked(nsec, &mcs_op_statistics[op].total);
57369 + if (mcs_op_statistics[op].max < nsec)
57370 + mcs_op_statistics[op].max = nsec;
57371 }
57372 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c
57373 ---- linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c 2009-12-02 22:51:21.000000000 -0500
57374 -+++ linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c 2011-11-12 12:46:45.000000000 -0500
57375 +diff -urNp linux-3.0.8/drivers/misc/sgi-gru/gruprocfs.c linux-3.0.8/drivers/misc/sgi-gru/gruprocfs.c
57376 +--- linux-3.0.8/drivers/misc/sgi-gru/gruprocfs.c 2011-07-21 22:17:23.000000000 -0400
57377 ++++ linux-3.0.8/drivers/misc/sgi-gru/gruprocfs.c 2011-08-23 21:47:55.000000000 -0400
57378 @@ -32,9 +32,9 @@
57379
57380 #define printstat(s, f) printstat_val(s, &gru_stats.f, #f)
57381 @@ -33968,11 +30573,11 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c linux-2.6.32.48/driv
57382 - unsigned long val = atomic_long_read(v);
57383 + unsigned long val = atomic_long_read_unchecked(v);
57384
57385 - if (val)
57386 - seq_printf(s, "%16lu %s\n", val, id);
57387 -@@ -136,8 +136,8 @@ static int mcs_statistics_show(struct se
57388 - "cch_interrupt_sync", "cch_deallocate", "tgh_invalidate"};
57389 + seq_printf(s, "%16lu %s\n", val, id);
57390 + }
57391 +@@ -134,8 +134,8 @@ static int mcs_statistics_show(struct se
57392
57393 + seq_printf(s, "%-20s%12s%12s%12s\n", "#id", "count", "aver-clks", "max-clks");
57394 for (op = 0; op < mcsop_last; op++) {
57395 - count = atomic_long_read(&mcs_op_statistics[op].count);
57396 - total = atomic_long_read(&mcs_op_statistics[op].total);
57397 @@ -33981,10 +30586,10 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/gruprocfs.c linux-2.6.32.48/driv
57398 max = mcs_op_statistics[op].max;
57399 seq_printf(s, "%-20s%12ld%12ld%12ld\n", id[op], count,
57400 count ? total / count : 0, max);
57401 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h
57402 ---- linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h 2009-12-02 22:51:21.000000000 -0500
57403 -+++ linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h 2011-11-12 12:46:45.000000000 -0500
57404 -@@ -167,84 +167,84 @@ extern unsigned int gru_max_gids;
57405 +diff -urNp linux-3.0.8/drivers/misc/sgi-gru/grutables.h linux-3.0.8/drivers/misc/sgi-gru/grutables.h
57406 +--- linux-3.0.8/drivers/misc/sgi-gru/grutables.h 2011-07-21 22:17:23.000000000 -0400
57407 ++++ linux-3.0.8/drivers/misc/sgi-gru/grutables.h 2011-08-23 21:47:55.000000000 -0400
57408 +@@ -167,82 +167,82 @@ extern unsigned int gru_max_gids;
57409 * GRU statistics.
57410 */
57411 struct gru_stats_s {
57412 @@ -33992,7 +30597,8 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57413 - atomic_long_t vdata_free;
57414 - atomic_long_t gts_alloc;
57415 - atomic_long_t gts_free;
57416 -- atomic_long_t vdata_double_alloc;
57417 +- atomic_long_t gms_alloc;
57418 +- atomic_long_t gms_free;
57419 - atomic_long_t gts_double_allocate;
57420 - atomic_long_t assign_context;
57421 - atomic_long_t assign_context_failed;
57422 @@ -34005,28 +30611,25 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57423 - atomic_long_t steal_kernel_context;
57424 - atomic_long_t steal_context_failed;
57425 - atomic_long_t nopfn;
57426 -- atomic_long_t break_cow;
57427 - atomic_long_t asid_new;
57428 - atomic_long_t asid_next;
57429 - atomic_long_t asid_wrap;
57430 - atomic_long_t asid_reuse;
57431 - atomic_long_t intr;
57432 +- atomic_long_t intr_cbr;
57433 +- atomic_long_t intr_tfh;
57434 +- atomic_long_t intr_spurious;
57435 - atomic_long_t intr_mm_lock_failed;
57436 - atomic_long_t call_os;
57437 -- atomic_long_t call_os_offnode_reference;
57438 -- atomic_long_t call_os_check_for_bug;
57439 - atomic_long_t call_os_wait_queue;
57440 - atomic_long_t user_flush_tlb;
57441 - atomic_long_t user_unload_context;
57442 - atomic_long_t user_exception;
57443 - atomic_long_t set_context_option;
57444 -- atomic_long_t migrate_check;
57445 -- atomic_long_t migrated_retarget;
57446 -- atomic_long_t migrated_unload;
57447 -- atomic_long_t migrated_unload_delay;
57448 -- atomic_long_t migrated_nopfn_retarget;
57449 -- atomic_long_t migrated_nopfn_unload;
57450 +- atomic_long_t check_context_retarget_intr;
57451 +- atomic_long_t check_context_unload;
57452 - atomic_long_t tlb_dropin;
57453 +- atomic_long_t tlb_preload_page;
57454 - atomic_long_t tlb_dropin_fail_no_asid;
57455 - atomic_long_t tlb_dropin_fail_upm;
57456 - atomic_long_t tlb_dropin_fail_invalid;
57457 @@ -34034,17 +30637,16 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57458 - atomic_long_t tlb_dropin_fail_idle;
57459 - atomic_long_t tlb_dropin_fail_fmm;
57460 - atomic_long_t tlb_dropin_fail_no_exception;
57461 -- atomic_long_t tlb_dropin_fail_no_exception_war;
57462 - atomic_long_t tfh_stale_on_fault;
57463 - atomic_long_t mmu_invalidate_range;
57464 - atomic_long_t mmu_invalidate_page;
57465 -- atomic_long_t mmu_clear_flush_young;
57466 - atomic_long_t flush_tlb;
57467 - atomic_long_t flush_tlb_gru;
57468 - atomic_long_t flush_tlb_gru_tgh;
57469 - atomic_long_t flush_tlb_gru_zero_asid;
57470 -
57471 - atomic_long_t copy_gpa;
57472 +- atomic_long_t read_gpa;
57473 -
57474 - atomic_long_t mesq_receive;
57475 - atomic_long_t mesq_receive_none;
57476 @@ -34056,7 +30658,7 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57477 - atomic_long_t mesq_send_qlimit_reached;
57478 - atomic_long_t mesq_send_amo_nacked;
57479 - atomic_long_t mesq_send_put_nacked;
57480 -- atomic_long_t mesq_qf_not_full;
57481 +- atomic_long_t mesq_page_overflow;
57482 - atomic_long_t mesq_qf_locked;
57483 - atomic_long_t mesq_qf_noop_not_full;
57484 - atomic_long_t mesq_qf_switch_head_failed;
57485 @@ -34066,11 +30668,13 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57486 - atomic_long_t mesq_noop_qlimit_reached;
57487 - atomic_long_t mesq_noop_amo_nacked;
57488 - atomic_long_t mesq_noop_put_nacked;
57489 +- atomic_long_t mesq_noop_page_overflow;
57490 + atomic_long_unchecked_t vdata_alloc;
57491 + atomic_long_unchecked_t vdata_free;
57492 + atomic_long_unchecked_t gts_alloc;
57493 + atomic_long_unchecked_t gts_free;
57494 -+ atomic_long_unchecked_t vdata_double_alloc;
57495 ++ atomic_long_unchecked_t gms_alloc;
57496 ++ atomic_long_unchecked_t gms_free;
57497 + atomic_long_unchecked_t gts_double_allocate;
57498 + atomic_long_unchecked_t assign_context;
57499 + atomic_long_unchecked_t assign_context_failed;
57500 @@ -34083,28 +30687,25 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57501 + atomic_long_unchecked_t steal_kernel_context;
57502 + atomic_long_unchecked_t steal_context_failed;
57503 + atomic_long_unchecked_t nopfn;
57504 -+ atomic_long_unchecked_t break_cow;
57505 + atomic_long_unchecked_t asid_new;
57506 + atomic_long_unchecked_t asid_next;
57507 + atomic_long_unchecked_t asid_wrap;
57508 + atomic_long_unchecked_t asid_reuse;
57509 + atomic_long_unchecked_t intr;
57510 ++ atomic_long_unchecked_t intr_cbr;
57511 ++ atomic_long_unchecked_t intr_tfh;
57512 ++ atomic_long_unchecked_t intr_spurious;
57513 + atomic_long_unchecked_t intr_mm_lock_failed;
57514 + atomic_long_unchecked_t call_os;
57515 -+ atomic_long_unchecked_t call_os_offnode_reference;
57516 -+ atomic_long_unchecked_t call_os_check_for_bug;
57517 + atomic_long_unchecked_t call_os_wait_queue;
57518 + atomic_long_unchecked_t user_flush_tlb;
57519 + atomic_long_unchecked_t user_unload_context;
57520 + atomic_long_unchecked_t user_exception;
57521 + atomic_long_unchecked_t set_context_option;
57522 -+ atomic_long_unchecked_t migrate_check;
57523 -+ atomic_long_unchecked_t migrated_retarget;
57524 -+ atomic_long_unchecked_t migrated_unload;
57525 -+ atomic_long_unchecked_t migrated_unload_delay;
57526 -+ atomic_long_unchecked_t migrated_nopfn_retarget;
57527 -+ atomic_long_unchecked_t migrated_nopfn_unload;
57528 ++ atomic_long_unchecked_t check_context_retarget_intr;
57529 ++ atomic_long_unchecked_t check_context_unload;
57530 + atomic_long_unchecked_t tlb_dropin;
57531 ++ atomic_long_unchecked_t tlb_preload_page;
57532 + atomic_long_unchecked_t tlb_dropin_fail_no_asid;
57533 + atomic_long_unchecked_t tlb_dropin_fail_upm;
57534 + atomic_long_unchecked_t tlb_dropin_fail_invalid;
57535 @@ -34112,17 +30713,16 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57536 + atomic_long_unchecked_t tlb_dropin_fail_idle;
57537 + atomic_long_unchecked_t tlb_dropin_fail_fmm;
57538 + atomic_long_unchecked_t tlb_dropin_fail_no_exception;
57539 -+ atomic_long_unchecked_t tlb_dropin_fail_no_exception_war;
57540 + atomic_long_unchecked_t tfh_stale_on_fault;
57541 + atomic_long_unchecked_t mmu_invalidate_range;
57542 + atomic_long_unchecked_t mmu_invalidate_page;
57543 -+ atomic_long_unchecked_t mmu_clear_flush_young;
57544 + atomic_long_unchecked_t flush_tlb;
57545 + atomic_long_unchecked_t flush_tlb_gru;
57546 + atomic_long_unchecked_t flush_tlb_gru_tgh;
57547 + atomic_long_unchecked_t flush_tlb_gru_zero_asid;
57548 +
57549 + atomic_long_unchecked_t copy_gpa;
57550 ++ atomic_long_unchecked_t read_gpa;
57551 +
57552 + atomic_long_unchecked_t mesq_receive;
57553 + atomic_long_unchecked_t mesq_receive_none;
57554 @@ -34134,7 +30734,7 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57555 + atomic_long_unchecked_t mesq_send_qlimit_reached;
57556 + atomic_long_unchecked_t mesq_send_amo_nacked;
57557 + atomic_long_unchecked_t mesq_send_put_nacked;
57558 -+ atomic_long_unchecked_t mesq_qf_not_full;
57559 ++ atomic_long_unchecked_t mesq_page_overflow;
57560 + atomic_long_unchecked_t mesq_qf_locked;
57561 + atomic_long_unchecked_t mesq_qf_noop_not_full;
57562 + atomic_long_unchecked_t mesq_qf_switch_head_failed;
57563 @@ -34144,11 +30744,12 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57564 + atomic_long_unchecked_t mesq_noop_qlimit_reached;
57565 + atomic_long_unchecked_t mesq_noop_amo_nacked;
57566 + atomic_long_unchecked_t mesq_noop_put_nacked;
57567 ++ atomic_long_unchecked_t mesq_noop_page_overflow;
57568
57569 };
57570
57571 -@@ -252,8 +252,8 @@ enum mcs_op {cchop_allocate, cchop_start
57572 - cchop_deallocate, tghop_invalidate, mcsop_last};
57573 +@@ -251,8 +251,8 @@ enum mcs_op {cchop_allocate, cchop_start
57574 + tghop_invalidate, mcsop_last};
57575
57576 struct mcs_op_statistic {
57577 - atomic_long_t count;
57578 @@ -34158,7 +30759,7 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57579 unsigned long max;
57580 };
57581
57582 -@@ -276,7 +276,7 @@ extern struct mcs_op_statistic mcs_op_st
57583 +@@ -275,7 +275,7 @@ extern struct mcs_op_statistic mcs_op_st
57584
57585 #define STAT(id) do { \
57586 if (gru_options & OPT_STATS) \
57587 @@ -34167,79 +30768,41 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-gru/grutables.h linux-2.6.32.48/driv
57588 } while (0)
57589
57590 #ifdef CONFIG_SGI_GRU_DEBUG
57591 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h
57592 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h 2009-12-02 22:51:21.000000000 -0500
57593 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc.h 2011-11-12 12:46:45.000000000 -0500
57594 -@@ -876,7 +876,7 @@ extern struct xpc_registration xpc_regis
57595 +diff -urNp linux-3.0.8/drivers/misc/sgi-xp/xpc.h linux-3.0.8/drivers/misc/sgi-xp/xpc.h
57596 +--- linux-3.0.8/drivers/misc/sgi-xp/xpc.h 2011-07-21 22:17:23.000000000 -0400
57597 ++++ linux-3.0.8/drivers/misc/sgi-xp/xpc.h 2011-10-11 10:44:33.000000000 -0400
57598 +@@ -835,6 +835,7 @@ struct xpc_arch_operations {
57599 + void (*received_payload) (struct xpc_channel *, void *);
57600 + void (*notify_senders_of_disconnect) (struct xpc_channel *);
57601 + };
57602 ++typedef struct xpc_arch_operations __no_const xpc_arch_operations_no_const;
57603 +
57604 + /* struct xpc_partition act_state values (for XPC HB) */
57605 +
57606 +@@ -876,7 +877,7 @@ extern struct xpc_registration xpc_regis
57607 /* found in xpc_main.c */
57608 extern struct device *xpc_part;
57609 extern struct device *xpc_chan;
57610 -extern struct xpc_arch_operations xpc_arch_ops;
57611 -+extern const struct xpc_arch_operations xpc_arch_ops;
57612 ++extern xpc_arch_operations_no_const xpc_arch_ops;
57613 extern int xpc_disengage_timelimit;
57614 extern int xpc_disengage_timedout;
57615 extern int xpc_activate_IRQ_rcvd;
57616 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c
57617 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c 2009-12-02 22:51:21.000000000 -0500
57618 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc_main.c 2011-11-12 12:46:45.000000000 -0500
57619 -@@ -169,7 +169,7 @@ static struct notifier_block xpc_die_not
57620 +diff -urNp linux-3.0.8/drivers/misc/sgi-xp/xpc_main.c linux-3.0.8/drivers/misc/sgi-xp/xpc_main.c
57621 +--- linux-3.0.8/drivers/misc/sgi-xp/xpc_main.c 2011-07-21 22:17:23.000000000 -0400
57622 ++++ linux-3.0.8/drivers/misc/sgi-xp/xpc_main.c 2011-10-11 10:44:33.000000000 -0400
57623 +@@ -162,7 +162,7 @@ static struct notifier_block xpc_die_not
57624 .notifier_call = xpc_system_die,
57625 };
57626
57627 -struct xpc_arch_operations xpc_arch_ops;
57628 -+const struct xpc_arch_operations xpc_arch_ops;
57629 ++xpc_arch_operations_no_const xpc_arch_ops;
57630
57631 /*
57632 * Timer function to enforce the timelimit on the partition disengage.
57633 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c
57634 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c 2009-12-02 22:51:21.000000000 -0500
57635 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc_sn2.c 2011-11-12 12:46:45.000000000 -0500
57636 -@@ -2350,7 +2350,7 @@ xpc_received_payload_sn2(struct xpc_chan
57637 - xpc_acknowledge_msgs_sn2(ch, get, msg->flags);
57638 - }
57639 -
57640 --static struct xpc_arch_operations xpc_arch_ops_sn2 = {
57641 -+static const struct xpc_arch_operations xpc_arch_ops_sn2 = {
57642 - .setup_partitions = xpc_setup_partitions_sn2,
57643 - .teardown_partitions = xpc_teardown_partitions_sn2,
57644 - .process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_sn2,
57645 -@@ -2413,7 +2413,9 @@ xpc_init_sn2(void)
57646 - int ret;
57647 - size_t buf_size;
57648 -
57649 -- xpc_arch_ops = xpc_arch_ops_sn2;
57650 -+ pax_open_kernel();
57651 -+ memcpy((void *)&xpc_arch_ops, &xpc_arch_ops_sn2, sizeof(xpc_arch_ops_sn2));
57652 -+ pax_close_kernel();
57653 -
57654 - if (offsetof(struct xpc_msg_sn2, payload) > XPC_MSG_HDR_MAX_SIZE) {
57655 - dev_err(xpc_part, "header portion of struct xpc_msg_sn2 is "
57656 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c
57657 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c 2011-11-12 12:44:29.000000000 -0500
57658 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xpc_uv.c 2011-11-12 12:46:45.000000000 -0500
57659 -@@ -1669,7 +1669,7 @@ xpc_received_payload_uv(struct xpc_chann
57660 - XPC_DEACTIVATE_PARTITION(&xpc_partitions[ch->partid], ret);
57661 - }
57662 -
57663 --static struct xpc_arch_operations xpc_arch_ops_uv = {
57664 -+static const struct xpc_arch_operations xpc_arch_ops_uv = {
57665 - .setup_partitions = xpc_setup_partitions_uv,
57666 - .teardown_partitions = xpc_teardown_partitions_uv,
57667 - .process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_uv,
57668 -@@ -1729,7 +1729,9 @@ static struct xpc_arch_operations xpc_ar
57669 - int
57670 - xpc_init_uv(void)
57671 - {
57672 -- xpc_arch_ops = xpc_arch_ops_uv;
57673 -+ pax_open_kernel();
57674 -+ memcpy((void *)&xpc_arch_ops, &xpc_arch_ops_uv, sizeof(xpc_arch_ops_uv));
57675 -+ pax_close_kernel();
57676 -
57677 - if (sizeof(struct xpc_notify_mq_msghdr_uv) > XPC_MSG_HDR_MAX_SIZE) {
57678 - dev_err(xpc_part, "xpc_notify_mq_msghdr_uv is larger than %d\n",
57679 -diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xp.h linux-2.6.32.48/drivers/misc/sgi-xp/xp.h
57680 ---- linux-2.6.32.48/drivers/misc/sgi-xp/xp.h 2009-12-02 22:51:21.000000000 -0500
57681 -+++ linux-2.6.32.48/drivers/misc/sgi-xp/xp.h 2011-11-12 12:46:45.000000000 -0500
57682 +diff -urNp linux-3.0.8/drivers/misc/sgi-xp/xp.h linux-3.0.8/drivers/misc/sgi-xp/xp.h
57683 +--- linux-3.0.8/drivers/misc/sgi-xp/xp.h 2011-07-21 22:17:23.000000000 -0400
57684 ++++ linux-3.0.8/drivers/misc/sgi-xp/xp.h 2011-08-23 21:47:55.000000000 -0400
57685 @@ -289,7 +289,7 @@ struct xpc_interface {
57686 xpc_notify_func, void *);
57687 void (*received) (short, int, void *);
57688 @@ -34249,10 +30812,22 @@ diff -urNp linux-2.6.32.48/drivers/misc/sgi-xp/xp.h linux-2.6.32.48/drivers/misc
57689
57690 extern struct xpc_interface xpc_interface;
57691
57692 -diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c
57693 ---- linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c 2009-12-02 22:51:21.000000000 -0500
57694 -+++ linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c 2011-11-12 12:46:45.000000000 -0500
57695 -@@ -743,6 +743,8 @@ static int chip_ready (struct map_info *
57696 +diff -urNp linux-3.0.8/drivers/mmc/host/sdhci-pci.c linux-3.0.8/drivers/mmc/host/sdhci-pci.c
57697 +--- linux-3.0.8/drivers/mmc/host/sdhci-pci.c 2011-07-21 22:17:23.000000000 -0400
57698 ++++ linux-3.0.8/drivers/mmc/host/sdhci-pci.c 2011-10-11 10:44:33.000000000 -0400
57699 +@@ -524,7 +524,7 @@ static const struct sdhci_pci_fixes sdhc
57700 + .probe = via_probe,
57701 + };
57702 +
57703 +-static const struct pci_device_id pci_ids[] __devinitdata = {
57704 ++static const struct pci_device_id pci_ids[] __devinitconst = {
57705 + {
57706 + .vendor = PCI_VENDOR_ID_RICOH,
57707 + .device = PCI_DEVICE_ID_RICOH_R5C822,
57708 +diff -urNp linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0001.c linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0001.c
57709 +--- linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0001.c 2011-07-21 22:17:23.000000000 -0400
57710 ++++ linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0001.c 2011-08-23 21:48:14.000000000 -0400
57711 +@@ -757,6 +757,8 @@ static int chip_ready (struct map_info *
57712 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
57713 unsigned long timeo = jiffies + HZ;
57714
57715 @@ -34261,7 +30836,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.48/d
57716 /* Prevent setting state FL_SYNCING for chip in suspended state. */
57717 if (mode == FL_SYNCING && chip->oldstate != FL_READY)
57718 goto sleep;
57719 -@@ -1642,6 +1644,8 @@ static int __xipram do_write_buffer(stru
57720 +@@ -1653,6 +1655,8 @@ static int __xipram do_write_buffer(stru
57721 unsigned long initial_adr;
57722 int initial_len = len;
57723
57724 @@ -34270,7 +30845,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.48/d
57725 wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
57726 adr += chip->start;
57727 initial_adr = adr;
57728 -@@ -1860,6 +1864,8 @@ static int __xipram do_erase_oneblock(st
57729 +@@ -1871,6 +1875,8 @@ static int __xipram do_erase_oneblock(st
57730 int retries = 3;
57731 int ret;
57732
57733 @@ -34279,9 +30854,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.48/d
57734 adr += chip->start;
57735
57736 retry:
57737 -diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c
57738 ---- linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c 2009-12-02 22:51:21.000000000 -0500
57739 -+++ linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c 2011-11-12 12:46:45.000000000 -0500
57740 +diff -urNp linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0020.c linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0020.c
57741 +--- linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0020.c 2011-07-21 22:17:23.000000000 -0400
57742 ++++ linux-3.0.8/drivers/mtd/chips/cfi_cmdset_0020.c 2011-08-23 21:48:14.000000000 -0400
57743 @@ -255,6 +255,8 @@ static inline int do_read_onechip(struct
57744 unsigned long cmd_addr;
57745 struct cfi_private *cfi = map->fldrv_priv;
57746 @@ -34291,7 +30866,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/d
57747 adr += chip->start;
57748
57749 /* Ensure cmd read/writes are aligned. */
57750 -@@ -428,6 +430,8 @@ static inline int do_write_buffer(struct
57751 +@@ -429,6 +431,8 @@ static inline int do_write_buffer(struct
57752 DECLARE_WAITQUEUE(wait, current);
57753 int wbufsize, z;
57754
57755 @@ -34300,7 +30875,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/d
57756 /* M58LW064A requires bus alignment for buffer wriets -- saw */
57757 if (adr & (map_bankwidth(map)-1))
57758 return -EINVAL;
57759 -@@ -742,6 +746,8 @@ static inline int do_erase_oneblock(stru
57760 +@@ -743,6 +747,8 @@ static inline int do_erase_oneblock(stru
57761 DECLARE_WAITQUEUE(wait, current);
57762 int ret = 0;
57763
57764 @@ -34309,7 +30884,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/d
57765 adr += chip->start;
57766
57767 /* Let's determine this according to the interleave only once */
57768 -@@ -1047,6 +1053,8 @@ static inline int do_lock_oneblock(struc
57769 +@@ -1048,6 +1054,8 @@ static inline int do_lock_oneblock(struc
57770 unsigned long timeo = jiffies + HZ;
57771 DECLARE_WAITQUEUE(wait, current);
57772
57773 @@ -34318,7 +30893,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/d
57774 adr += chip->start;
57775
57776 /* Let's determine this according to the interleave only once */
57777 -@@ -1196,6 +1204,8 @@ static inline int do_unlock_oneblock(str
57778 +@@ -1197,6 +1205,8 @@ static inline int do_unlock_oneblock(str
57779 unsigned long timeo = jiffies + HZ;
57780 DECLARE_WAITQUEUE(wait, current);
57781
57782 @@ -34327,9 +30902,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/chips/cfi_cmdset_0020.c linux-2.6.32.48/d
57783 adr += chip->start;
57784
57785 /* Let's determine this according to the interleave only once */
57786 -diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2000.c linux-2.6.32.48/drivers/mtd/devices/doc2000.c
57787 ---- linux-2.6.32.48/drivers/mtd/devices/doc2000.c 2009-12-02 22:51:21.000000000 -0500
57788 -+++ linux-2.6.32.48/drivers/mtd/devices/doc2000.c 2011-11-12 12:46:45.000000000 -0500
57789 +diff -urNp linux-3.0.8/drivers/mtd/devices/doc2000.c linux-3.0.8/drivers/mtd/devices/doc2000.c
57790 +--- linux-3.0.8/drivers/mtd/devices/doc2000.c 2011-07-21 22:17:23.000000000 -0400
57791 ++++ linux-3.0.8/drivers/mtd/devices/doc2000.c 2011-08-23 21:47:55.000000000 -0400
57792 @@ -776,7 +776,7 @@ static int doc_write(struct mtd_info *mt
57793
57794 /* The ECC will not be calculated correctly if less than 512 is written */
57795 @@ -34339,9 +30914,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2000.c linux-2.6.32.48/drivers
57796 printk(KERN_WARNING
57797 "ECC needs a full sector write (adr: %lx size %lx)\n",
57798 (long) to, (long) len);
57799 -diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2001.c linux-2.6.32.48/drivers/mtd/devices/doc2001.c
57800 ---- linux-2.6.32.48/drivers/mtd/devices/doc2001.c 2009-12-02 22:51:21.000000000 -0500
57801 -+++ linux-2.6.32.48/drivers/mtd/devices/doc2001.c 2011-11-12 12:46:45.000000000 -0500
57802 +diff -urNp linux-3.0.8/drivers/mtd/devices/doc2001.c linux-3.0.8/drivers/mtd/devices/doc2001.c
57803 +--- linux-3.0.8/drivers/mtd/devices/doc2001.c 2011-07-21 22:17:23.000000000 -0400
57804 ++++ linux-3.0.8/drivers/mtd/devices/doc2001.c 2011-08-23 21:47:55.000000000 -0400
57805 @@ -393,7 +393,7 @@ static int doc_read (struct mtd_info *mt
57806 struct Nand *mychip = &this->chips[from >> (this->chipshift)];
57807
57808 @@ -34351,9 +30926,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/devices/doc2001.c linux-2.6.32.48/drivers
57809 return -EINVAL;
57810
57811 /* Don't allow a single read to cross a 512-byte block boundary */
57812 -diff -urNp linux-2.6.32.48/drivers/mtd/ftl.c linux-2.6.32.48/drivers/mtd/ftl.c
57813 ---- linux-2.6.32.48/drivers/mtd/ftl.c 2009-12-02 22:51:21.000000000 -0500
57814 -+++ linux-2.6.32.48/drivers/mtd/ftl.c 2011-11-12 12:46:45.000000000 -0500
57815 +diff -urNp linux-3.0.8/drivers/mtd/ftl.c linux-3.0.8/drivers/mtd/ftl.c
57816 +--- linux-3.0.8/drivers/mtd/ftl.c 2011-07-21 22:17:23.000000000 -0400
57817 ++++ linux-3.0.8/drivers/mtd/ftl.c 2011-08-23 21:48:14.000000000 -0400
57818 @@ -474,6 +474,8 @@ static int copy_erase_unit(partition_t *
57819 loff_t offset;
57820 uint16_t srcunitswap = cpu_to_le16(srcunit);
57821 @@ -34363,10 +30938,10 @@ diff -urNp linux-2.6.32.48/drivers/mtd/ftl.c linux-2.6.32.48/drivers/mtd/ftl.c
57822 eun = &part->EUNInfo[srcunit];
57823 xfer = &part->XferInfo[xferunit];
57824 DEBUG(2, "ftl_cs: copying block 0x%x to 0x%x\n",
57825 -diff -urNp linux-2.6.32.48/drivers/mtd/inftlcore.c linux-2.6.32.48/drivers/mtd/inftlcore.c
57826 ---- linux-2.6.32.48/drivers/mtd/inftlcore.c 2009-12-02 22:51:21.000000000 -0500
57827 -+++ linux-2.6.32.48/drivers/mtd/inftlcore.c 2011-11-12 12:46:45.000000000 -0500
57828 -@@ -260,6 +260,8 @@ static u16 INFTL_foldchain(struct INFTLr
57829 +diff -urNp linux-3.0.8/drivers/mtd/inftlcore.c linux-3.0.8/drivers/mtd/inftlcore.c
57830 +--- linux-3.0.8/drivers/mtd/inftlcore.c 2011-07-21 22:17:23.000000000 -0400
57831 ++++ linux-3.0.8/drivers/mtd/inftlcore.c 2011-08-23 21:48:14.000000000 -0400
57832 +@@ -259,6 +259,8 @@ static u16 INFTL_foldchain(struct INFTLr
57833 struct inftl_oob oob;
57834 size_t retlen;
57835
57836 @@ -34375,10 +30950,10 @@ diff -urNp linux-2.6.32.48/drivers/mtd/inftlcore.c linux-2.6.32.48/drivers/mtd/i
57837 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: INFTL_foldchain(inftl=%p,thisVUC=%d,"
57838 "pending=%d)\n", inftl, thisVUC, pendingblock);
57839
57840 -diff -urNp linux-2.6.32.48/drivers/mtd/inftlmount.c linux-2.6.32.48/drivers/mtd/inftlmount.c
57841 ---- linux-2.6.32.48/drivers/mtd/inftlmount.c 2009-12-02 22:51:21.000000000 -0500
57842 -+++ linux-2.6.32.48/drivers/mtd/inftlmount.c 2011-11-12 12:46:45.000000000 -0500
57843 -@@ -54,6 +54,8 @@ static int find_boot_record(struct INFTL
57844 +diff -urNp linux-3.0.8/drivers/mtd/inftlmount.c linux-3.0.8/drivers/mtd/inftlmount.c
57845 +--- linux-3.0.8/drivers/mtd/inftlmount.c 2011-07-21 22:17:23.000000000 -0400
57846 ++++ linux-3.0.8/drivers/mtd/inftlmount.c 2011-08-23 21:48:14.000000000 -0400
57847 +@@ -53,6 +53,8 @@ static int find_boot_record(struct INFTL
57848 struct INFTLPartition *ip;
57849 size_t retlen;
57850
57851 @@ -34387,9 +30962,9 @@ diff -urNp linux-2.6.32.48/drivers/mtd/inftlmount.c linux-2.6.32.48/drivers/mtd/
57852 DEBUG(MTD_DEBUG_LEVEL3, "INFTL: find_boot_record(inftl=%p)\n", inftl);
57853
57854 /*
57855 -diff -urNp linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c
57856 ---- linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c 2009-12-02 22:51:21.000000000 -0500
57857 -+++ linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c 2011-11-12 12:46:45.000000000 -0500
57858 +diff -urNp linux-3.0.8/drivers/mtd/lpddr/qinfo_probe.c linux-3.0.8/drivers/mtd/lpddr/qinfo_probe.c
57859 +--- linux-3.0.8/drivers/mtd/lpddr/qinfo_probe.c 2011-07-21 22:17:23.000000000 -0400
57860 ++++ linux-3.0.8/drivers/mtd/lpddr/qinfo_probe.c 2011-08-23 21:48:14.000000000 -0400
57861 @@ -106,6 +106,8 @@ static int lpddr_pfow_present(struct map
57862 {
57863 map_word pfow_val[4];
57864 @@ -34399,10 +30974,10 @@ diff -urNp linux-2.6.32.48/drivers/mtd/lpddr/qinfo_probe.c linux-2.6.32.48/drive
57865 /* Check identification string */
57866 pfow_val[0] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_P);
57867 pfow_val[1] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_F);
57868 -diff -urNp linux-2.6.32.48/drivers/mtd/mtdchar.c linux-2.6.32.48/drivers/mtd/mtdchar.c
57869 ---- linux-2.6.32.48/drivers/mtd/mtdchar.c 2009-12-02 22:51:21.000000000 -0500
57870 -+++ linux-2.6.32.48/drivers/mtd/mtdchar.c 2011-11-12 12:46:45.000000000 -0500
57871 -@@ -460,6 +460,8 @@ static int mtd_ioctl(struct inode *inode
57872 +diff -urNp linux-3.0.8/drivers/mtd/mtdchar.c linux-3.0.8/drivers/mtd/mtdchar.c
57873 +--- linux-3.0.8/drivers/mtd/mtdchar.c 2011-07-21 22:17:23.000000000 -0400
57874 ++++ linux-3.0.8/drivers/mtd/mtdchar.c 2011-08-23 21:48:14.000000000 -0400
57875 +@@ -553,6 +553,8 @@ static int mtd_ioctl(struct file *file,
57876 u_long size;
57877 struct mtd_info_user info;
57878
57879 @@ -34411,10 +30986,21 @@ diff -urNp linux-2.6.32.48/drivers/mtd/mtdchar.c linux-2.6.32.48/drivers/mtd/mtd
57880 DEBUG(MTD_DEBUG_LEVEL0, "MTD_ioctl\n");
57881
57882 size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT;
57883 -diff -urNp linux-2.6.32.48/drivers/mtd/nftlcore.c linux-2.6.32.48/drivers/mtd/nftlcore.c
57884 ---- linux-2.6.32.48/drivers/mtd/nftlcore.c 2009-12-02 22:51:21.000000000 -0500
57885 -+++ linux-2.6.32.48/drivers/mtd/nftlcore.c 2011-11-12 12:46:45.000000000 -0500
57886 -@@ -254,6 +254,8 @@ static u16 NFTL_foldchain (struct NFTLre
57887 +diff -urNp linux-3.0.8/drivers/mtd/nand/denali.c linux-3.0.8/drivers/mtd/nand/denali.c
57888 +--- linux-3.0.8/drivers/mtd/nand/denali.c 2011-07-21 22:17:23.000000000 -0400
57889 ++++ linux-3.0.8/drivers/mtd/nand/denali.c 2011-08-23 21:47:55.000000000 -0400
57890 +@@ -26,6 +26,7 @@
57891 + #include <linux/pci.h>
57892 + #include <linux/mtd/mtd.h>
57893 + #include <linux/module.h>
57894 ++#include <linux/slab.h>
57895 +
57896 + #include "denali.h"
57897 +
57898 +diff -urNp linux-3.0.8/drivers/mtd/nftlcore.c linux-3.0.8/drivers/mtd/nftlcore.c
57899 +--- linux-3.0.8/drivers/mtd/nftlcore.c 2011-07-21 22:17:23.000000000 -0400
57900 ++++ linux-3.0.8/drivers/mtd/nftlcore.c 2011-08-23 21:48:14.000000000 -0400
57901 +@@ -264,6 +264,8 @@ static u16 NFTL_foldchain (struct NFTLre
57902 int inplace = 1;
57903 size_t retlen;
57904
57905 @@ -34423,10 +31009,10 @@ diff -urNp linux-2.6.32.48/drivers/mtd/nftlcore.c linux-2.6.32.48/drivers/mtd/nf
57906 memset(BlockMap, 0xff, sizeof(BlockMap));
57907 memset(BlockFreeFound, 0, sizeof(BlockFreeFound));
57908
57909 -diff -urNp linux-2.6.32.48/drivers/mtd/nftlmount.c linux-2.6.32.48/drivers/mtd/nftlmount.c
57910 ---- linux-2.6.32.48/drivers/mtd/nftlmount.c 2009-12-02 22:51:21.000000000 -0500
57911 -+++ linux-2.6.32.48/drivers/mtd/nftlmount.c 2011-11-12 12:46:45.000000000 -0500
57912 -@@ -23,6 +23,7 @@
57913 +diff -urNp linux-3.0.8/drivers/mtd/nftlmount.c linux-3.0.8/drivers/mtd/nftlmount.c
57914 +--- linux-3.0.8/drivers/mtd/nftlmount.c 2011-07-21 22:17:23.000000000 -0400
57915 ++++ linux-3.0.8/drivers/mtd/nftlmount.c 2011-08-23 21:48:14.000000000 -0400
57916 +@@ -24,6 +24,7 @@
57917 #include <asm/errno.h>
57918 #include <linux/delay.h>
57919 #include <linux/slab.h>
57920 @@ -34434,7 +31020,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/nftlmount.c linux-2.6.32.48/drivers/mtd/n
57921 #include <linux/mtd/mtd.h>
57922 #include <linux/mtd/nand.h>
57923 #include <linux/mtd/nftl.h>
57924 -@@ -44,6 +45,8 @@ static int find_boot_record(struct NFTLr
57925 +@@ -45,6 +46,8 @@ static int find_boot_record(struct NFTLr
57926 struct mtd_info *mtd = nftl->mbd.mtd;
57927 unsigned int i;
57928
57929 @@ -34443,10 +31029,10 @@ diff -urNp linux-2.6.32.48/drivers/mtd/nftlmount.c linux-2.6.32.48/drivers/mtd/n
57930 /* Assume logical EraseSize == physical erasesize for starting the scan.
57931 We'll sort it out later if we find a MediaHeader which says otherwise */
57932 /* Actually, we won't. The new DiskOnChip driver has already scanned
57933 -diff -urNp linux-2.6.32.48/drivers/mtd/ubi/build.c linux-2.6.32.48/drivers/mtd/ubi/build.c
57934 ---- linux-2.6.32.48/drivers/mtd/ubi/build.c 2009-12-02 22:51:21.000000000 -0500
57935 -+++ linux-2.6.32.48/drivers/mtd/ubi/build.c 2011-11-12 12:46:45.000000000 -0500
57936 -@@ -1255,7 +1255,7 @@ module_exit(ubi_exit);
57937 +diff -urNp linux-3.0.8/drivers/mtd/ubi/build.c linux-3.0.8/drivers/mtd/ubi/build.c
57938 +--- linux-3.0.8/drivers/mtd/ubi/build.c 2011-07-21 22:17:23.000000000 -0400
57939 ++++ linux-3.0.8/drivers/mtd/ubi/build.c 2011-08-23 21:47:55.000000000 -0400
57940 +@@ -1287,7 +1287,7 @@ module_exit(ubi_exit);
57941 static int __init bytes_str_to_int(const char *str)
57942 {
57943 char *endp;
57944 @@ -34455,7 +31041,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/ubi/build.c linux-2.6.32.48/drivers/mtd/u
57945
57946 result = simple_strtoul(str, &endp, 0);
57947 if (str == endp || result >= INT_MAX) {
57948 -@@ -1266,11 +1266,11 @@ static int __init bytes_str_to_int(const
57949 +@@ -1298,11 +1298,11 @@ static int __init bytes_str_to_int(const
57950
57951 switch (*endp) {
57952 case 'G':
57953 @@ -34470,7 +31056,7 @@ diff -urNp linux-2.6.32.48/drivers/mtd/ubi/build.c linux-2.6.32.48/drivers/mtd/u
57954 if (endp[1] == 'i' && endp[2] == 'B')
57955 endp += 2;
57956 case '\0':
57957 -@@ -1281,7 +1281,13 @@ static int __init bytes_str_to_int(const
57958 +@@ -1313,7 +1313,13 @@ static int __init bytes_str_to_int(const
57959 return -EINVAL;
57960 }
57961
57962 @@ -34485,10 +31071,133 @@ diff -urNp linux-2.6.32.48/drivers/mtd/ubi/build.c linux-2.6.32.48/drivers/mtd/u
57963 }
57964
57965 /**
57966 -diff -urNp linux-2.6.32.48/drivers/net/bnx2.c linux-2.6.32.48/drivers/net/bnx2.c
57967 ---- linux-2.6.32.48/drivers/net/bnx2.c 2011-11-12 12:44:29.000000000 -0500
57968 -+++ linux-2.6.32.48/drivers/net/bnx2.c 2011-11-12 12:46:45.000000000 -0500
57969 -@@ -5809,6 +5809,8 @@ bnx2_test_nvram(struct bnx2 *bp)
57970 +diff -urNp linux-3.0.8/drivers/net/atlx/atl2.c linux-3.0.8/drivers/net/atlx/atl2.c
57971 +--- linux-3.0.8/drivers/net/atlx/atl2.c 2011-07-21 22:17:23.000000000 -0400
57972 ++++ linux-3.0.8/drivers/net/atlx/atl2.c 2011-10-11 10:44:33.000000000 -0400
57973 +@@ -2840,7 +2840,7 @@ static void atl2_force_ps(struct atl2_hw
57974 + */
57975 +
57976 + #define ATL2_PARAM(X, desc) \
57977 +- static const int __devinitdata X[ATL2_MAX_NIC + 1] = ATL2_PARAM_INIT; \
57978 ++ static const int __devinitconst X[ATL2_MAX_NIC + 1] = ATL2_PARAM_INIT; \
57979 + MODULE_PARM(X, "1-" __MODULE_STRING(ATL2_MAX_NIC) "i"); \
57980 + MODULE_PARM_DESC(X, desc);
57981 + #else
57982 +diff -urNp linux-3.0.8/drivers/net/bna/bfa_ioc_ct.c linux-3.0.8/drivers/net/bna/bfa_ioc_ct.c
57983 +--- linux-3.0.8/drivers/net/bna/bfa_ioc_ct.c 2011-07-21 22:17:23.000000000 -0400
57984 ++++ linux-3.0.8/drivers/net/bna/bfa_ioc_ct.c 2011-08-23 21:47:55.000000000 -0400
57985 +@@ -48,7 +48,21 @@ static void bfa_ioc_ct_sync_ack(struct b
57986 + static bool bfa_ioc_ct_sync_complete(struct bfa_ioc *ioc);
57987 + static enum bfa_status bfa_ioc_ct_pll_init(void __iomem *rb, bool fcmode);
57988 +
57989 +-static struct bfa_ioc_hwif nw_hwif_ct;
57990 ++static struct bfa_ioc_hwif nw_hwif_ct = {
57991 ++ .ioc_pll_init = bfa_ioc_ct_pll_init,
57992 ++ .ioc_firmware_lock = bfa_ioc_ct_firmware_lock,
57993 ++ .ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock,
57994 ++ .ioc_reg_init = bfa_ioc_ct_reg_init,
57995 ++ .ioc_map_port = bfa_ioc_ct_map_port,
57996 ++ .ioc_isr_mode_set = bfa_ioc_ct_isr_mode_set,
57997 ++ .ioc_notify_fail = bfa_ioc_ct_notify_fail,
57998 ++ .ioc_ownership_reset = bfa_ioc_ct_ownership_reset,
57999 ++ .ioc_sync_start = bfa_ioc_ct_sync_start,
58000 ++ .ioc_sync_join = bfa_ioc_ct_sync_join,
58001 ++ .ioc_sync_leave = bfa_ioc_ct_sync_leave,
58002 ++ .ioc_sync_ack = bfa_ioc_ct_sync_ack,
58003 ++ .ioc_sync_complete = bfa_ioc_ct_sync_complete
58004 ++};
58005 +
58006 + /**
58007 + * Called from bfa_ioc_attach() to map asic specific calls.
58008 +@@ -56,20 +70,6 @@ static struct bfa_ioc_hwif nw_hwif_ct;
58009 + void
58010 + bfa_nw_ioc_set_ct_hwif(struct bfa_ioc *ioc)
58011 + {
58012 +- nw_hwif_ct.ioc_pll_init = bfa_ioc_ct_pll_init;
58013 +- nw_hwif_ct.ioc_firmware_lock = bfa_ioc_ct_firmware_lock;
58014 +- nw_hwif_ct.ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock;
58015 +- nw_hwif_ct.ioc_reg_init = bfa_ioc_ct_reg_init;
58016 +- nw_hwif_ct.ioc_map_port = bfa_ioc_ct_map_port;
58017 +- nw_hwif_ct.ioc_isr_mode_set = bfa_ioc_ct_isr_mode_set;
58018 +- nw_hwif_ct.ioc_notify_fail = bfa_ioc_ct_notify_fail;
58019 +- nw_hwif_ct.ioc_ownership_reset = bfa_ioc_ct_ownership_reset;
58020 +- nw_hwif_ct.ioc_sync_start = bfa_ioc_ct_sync_start;
58021 +- nw_hwif_ct.ioc_sync_join = bfa_ioc_ct_sync_join;
58022 +- nw_hwif_ct.ioc_sync_leave = bfa_ioc_ct_sync_leave;
58023 +- nw_hwif_ct.ioc_sync_ack = bfa_ioc_ct_sync_ack;
58024 +- nw_hwif_ct.ioc_sync_complete = bfa_ioc_ct_sync_complete;
58025 +-
58026 + ioc->ioc_hwif = &nw_hwif_ct;
58027 + }
58028 +
58029 +diff -urNp linux-3.0.8/drivers/net/bna/bnad.c linux-3.0.8/drivers/net/bna/bnad.c
58030 +--- linux-3.0.8/drivers/net/bna/bnad.c 2011-07-21 22:17:23.000000000 -0400
58031 ++++ linux-3.0.8/drivers/net/bna/bnad.c 2011-08-23 21:47:55.000000000 -0400
58032 +@@ -1681,7 +1681,14 @@ bnad_setup_tx(struct bnad *bnad, uint tx
58033 + struct bna_intr_info *intr_info =
58034 + &res_info[BNA_TX_RES_INTR_T_TXCMPL].res_u.intr_info;
58035 + struct bna_tx_config *tx_config = &bnad->tx_config[tx_id];
58036 +- struct bna_tx_event_cbfn tx_cbfn;
58037 ++ static struct bna_tx_event_cbfn tx_cbfn = {
58038 ++ /* Initialize the tx event handlers */
58039 ++ .tcb_setup_cbfn = bnad_cb_tcb_setup,
58040 ++ .tcb_destroy_cbfn = bnad_cb_tcb_destroy,
58041 ++ .tx_stall_cbfn = bnad_cb_tx_stall,
58042 ++ .tx_resume_cbfn = bnad_cb_tx_resume,
58043 ++ .tx_cleanup_cbfn = bnad_cb_tx_cleanup
58044 ++ };
58045 + struct bna_tx *tx;
58046 + unsigned long flags;
58047 +
58048 +@@ -1690,13 +1697,6 @@ bnad_setup_tx(struct bnad *bnad, uint tx
58049 + tx_config->txq_depth = bnad->txq_depth;
58050 + tx_config->tx_type = BNA_TX_T_REGULAR;
58051 +
58052 +- /* Initialize the tx event handlers */
58053 +- tx_cbfn.tcb_setup_cbfn = bnad_cb_tcb_setup;
58054 +- tx_cbfn.tcb_destroy_cbfn = bnad_cb_tcb_destroy;
58055 +- tx_cbfn.tx_stall_cbfn = bnad_cb_tx_stall;
58056 +- tx_cbfn.tx_resume_cbfn = bnad_cb_tx_resume;
58057 +- tx_cbfn.tx_cleanup_cbfn = bnad_cb_tx_cleanup;
58058 +-
58059 + /* Get BNA's resource requirement for one tx object */
58060 + spin_lock_irqsave(&bnad->bna_lock, flags);
58061 + bna_tx_res_req(bnad->num_txq_per_tx,
58062 +@@ -1827,21 +1827,21 @@ bnad_setup_rx(struct bnad *bnad, uint rx
58063 + struct bna_intr_info *intr_info =
58064 + &res_info[BNA_RX_RES_T_INTR].res_u.intr_info;
58065 + struct bna_rx_config *rx_config = &bnad->rx_config[rx_id];
58066 +- struct bna_rx_event_cbfn rx_cbfn;
58067 ++ static struct bna_rx_event_cbfn rx_cbfn = {
58068 ++ /* Initialize the Rx event handlers */
58069 ++ .rcb_setup_cbfn = bnad_cb_rcb_setup,
58070 ++ .rcb_destroy_cbfn = bnad_cb_rcb_destroy,
58071 ++ .ccb_setup_cbfn = bnad_cb_ccb_setup,
58072 ++ .ccb_destroy_cbfn = bnad_cb_ccb_destroy,
58073 ++ .rx_cleanup_cbfn = bnad_cb_rx_cleanup,
58074 ++ .rx_post_cbfn = bnad_cb_rx_post
58075 ++ };
58076 + struct bna_rx *rx;
58077 + unsigned long flags;
58078 +
58079 + /* Initialize the Rx object configuration */
58080 + bnad_init_rx_config(bnad, rx_config);
58081 +
58082 +- /* Initialize the Rx event handlers */
58083 +- rx_cbfn.rcb_setup_cbfn = bnad_cb_rcb_setup;
58084 +- rx_cbfn.rcb_destroy_cbfn = bnad_cb_rcb_destroy;
58085 +- rx_cbfn.ccb_setup_cbfn = bnad_cb_ccb_setup;
58086 +- rx_cbfn.ccb_destroy_cbfn = bnad_cb_ccb_destroy;
58087 +- rx_cbfn.rx_cleanup_cbfn = bnad_cb_rx_cleanup;
58088 +- rx_cbfn.rx_post_cbfn = bnad_cb_rx_post;
58089 +-
58090 + /* Get BNA's resource requirement for one Rx object */
58091 + spin_lock_irqsave(&bnad->bna_lock, flags);
58092 + bna_rx_res_req(rx_config, res_info);
58093 +diff -urNp linux-3.0.8/drivers/net/bnx2.c linux-3.0.8/drivers/net/bnx2.c
58094 +--- linux-3.0.8/drivers/net/bnx2.c 2011-10-24 08:05:30.000000000 -0400
58095 ++++ linux-3.0.8/drivers/net/bnx2.c 2011-10-16 21:55:27.000000000 -0400
58096 +@@ -5831,6 +5831,8 @@ bnx2_test_nvram(struct bnx2 *bp)
58097 int rc = 0;
58098 u32 magic, csum;
58099
58100 @@ -34497,10 +31206,56 @@ diff -urNp linux-2.6.32.48/drivers/net/bnx2.c linux-2.6.32.48/drivers/net/bnx2.c
58101 if ((rc = bnx2_nvram_read(bp, 0, data, 4)) != 0)
58102 goto test_nvram_done;
58103
58104 -diff -urNp linux-2.6.32.48/drivers/net/cxgb3/l2t.h linux-2.6.32.48/drivers/net/cxgb3/l2t.h
58105 ---- linux-2.6.32.48/drivers/net/cxgb3/l2t.h 2009-12-02 22:51:21.000000000 -0500
58106 -+++ linux-2.6.32.48/drivers/net/cxgb3/l2t.h 2011-11-12 12:46:45.000000000 -0500
58107 -@@ -86,7 +86,7 @@ typedef void (*arp_failure_handler_func)
58108 +diff -urNp linux-3.0.8/drivers/net/bnx2x/bnx2x_ethtool.c linux-3.0.8/drivers/net/bnx2x/bnx2x_ethtool.c
58109 +--- linux-3.0.8/drivers/net/bnx2x/bnx2x_ethtool.c 2011-07-21 22:17:23.000000000 -0400
58110 ++++ linux-3.0.8/drivers/net/bnx2x/bnx2x_ethtool.c 2011-08-23 21:48:14.000000000 -0400
58111 +@@ -1705,6 +1705,8 @@ static int bnx2x_test_nvram(struct bnx2x
58112 + int i, rc;
58113 + u32 magic, crc;
58114 +
58115 ++ pax_track_stack();
58116 ++
58117 + if (BP_NOMCP(bp))
58118 + return 0;
58119 +
58120 +diff -urNp linux-3.0.8/drivers/net/can/mscan/mscan.c linux-3.0.8/drivers/net/can/mscan/mscan.c
58121 +--- linux-3.0.8/drivers/net/can/mscan/mscan.c 2011-07-21 22:17:23.000000000 -0400
58122 ++++ linux-3.0.8/drivers/net/can/mscan/mscan.c 2011-10-17 02:51:46.000000000 -0400
58123 +@@ -261,11 +261,13 @@ static netdev_tx_t mscan_start_xmit(stru
58124 + void __iomem *data = &regs->tx.dsr1_0;
58125 + u16 *payload = (u16 *)frame->data;
58126 +
58127 +- /* It is safe to write into dsr[dlc+1] */
58128 +- for (i = 0; i < (frame->can_dlc + 1) / 2; i++) {
58129 ++ for (i = 0; i < frame->can_dlc / 2; i++) {
58130 + out_be16(data, *payload++);
58131 + data += 2 + _MSCAN_RESERVED_DSR_SIZE;
58132 + }
58133 ++ /* write remaining byte if necessary */
58134 ++ if (frame->can_dlc & 1)
58135 ++ out_8(data, frame->data[frame->can_dlc - 1]);
58136 + }
58137 +
58138 + out_8(&regs->tx.dlr, frame->can_dlc);
58139 +@@ -330,10 +332,13 @@ static void mscan_get_rx_frame(struct ne
58140 + void __iomem *data = &regs->rx.dsr1_0;
58141 + u16 *payload = (u16 *)frame->data;
58142 +
58143 +- for (i = 0; i < (frame->can_dlc + 1) / 2; i++) {
58144 ++ for (i = 0; i < frame->can_dlc / 2; i++) {
58145 + *payload++ = in_be16(data);
58146 + data += 2 + _MSCAN_RESERVED_DSR_SIZE;
58147 + }
58148 ++ /* read remaining byte if necessary */
58149 ++ if (frame->can_dlc & 1)
58150 ++ frame->data[frame->can_dlc - 1] = in_8(data);
58151 + }
58152 +
58153 + out_8(&regs->canrflg, MSCAN_RXF);
58154 +diff -urNp linux-3.0.8/drivers/net/cxgb3/l2t.h linux-3.0.8/drivers/net/cxgb3/l2t.h
58155 +--- linux-3.0.8/drivers/net/cxgb3/l2t.h 2011-10-24 08:05:30.000000000 -0400
58156 ++++ linux-3.0.8/drivers/net/cxgb3/l2t.h 2011-10-16 21:55:27.000000000 -0400
58157 +@@ -87,7 +87,7 @@ typedef void (*arp_failure_handler_func)
58158 */
58159 struct l2t_skb_cb {
58160 arp_failure_handler_func arp_failure_handler;
58161 @@ -34509,22 +31264,34 @@ diff -urNp linux-2.6.32.48/drivers/net/cxgb3/l2t.h linux-2.6.32.48/drivers/net/c
58162
58163 #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
58164
58165 -diff -urNp linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c
58166 ---- linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c 2009-12-02 22:51:21.000000000 -0500
58167 -+++ linux-2.6.32.48/drivers/net/cxgb3/t3_hw.c 2011-11-12 12:46:45.000000000 -0500
58168 -@@ -699,6 +699,8 @@ static int get_vpd_params(struct adapter
58169 - int i, addr, ret;
58170 - struct t3_vpd vpd;
58171 +diff -urNp linux-3.0.8/drivers/net/cxgb4/cxgb4_main.c linux-3.0.8/drivers/net/cxgb4/cxgb4_main.c
58172 +--- linux-3.0.8/drivers/net/cxgb4/cxgb4_main.c 2011-07-21 22:17:23.000000000 -0400
58173 ++++ linux-3.0.8/drivers/net/cxgb4/cxgb4_main.c 2011-08-23 21:48:14.000000000 -0400
58174 +@@ -3396,6 +3396,8 @@ static int __devinit enable_msix(struct
58175 + unsigned int nchan = adap->params.nports;
58176 + struct msix_entry entries[MAX_INGQ + 1];
58177
58178 + pax_track_stack();
58179 +
58180 - /*
58181 - * Card information is normally at VPD_BASE but some early cards had
58182 - * it at 0.
58183 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/82571.c linux-2.6.32.48/drivers/net/e1000e/82571.c
58184 ---- linux-2.6.32.48/drivers/net/e1000e/82571.c 2009-12-02 22:51:21.000000000 -0500
58185 -+++ linux-2.6.32.48/drivers/net/e1000e/82571.c 2011-11-12 12:46:45.000000000 -0500
58186 -@@ -212,7 +212,7 @@ static s32 e1000_init_mac_params_82571(s
58187 + for (i = 0; i < ARRAY_SIZE(entries); ++i)
58188 + entries[i].entry = i;
58189 +
58190 +diff -urNp linux-3.0.8/drivers/net/cxgb4/t4_hw.c linux-3.0.8/drivers/net/cxgb4/t4_hw.c
58191 +--- linux-3.0.8/drivers/net/cxgb4/t4_hw.c 2011-07-21 22:17:23.000000000 -0400
58192 ++++ linux-3.0.8/drivers/net/cxgb4/t4_hw.c 2011-08-23 21:48:14.000000000 -0400
58193 +@@ -362,6 +362,8 @@ static int get_vpd_params(struct adapter
58194 + u8 vpd[VPD_LEN], csum;
58195 + unsigned int vpdr_len, kw_offset, id_len;
58196 +
58197 ++ pax_track_stack();
58198 ++
58199 + ret = pci_read_vpd(adapter->pdev, VPD_BASE, sizeof(vpd), vpd);
58200 + if (ret < 0)
58201 + return ret;
58202 +diff -urNp linux-3.0.8/drivers/net/e1000e/82571.c linux-3.0.8/drivers/net/e1000e/82571.c
58203 +--- linux-3.0.8/drivers/net/e1000e/82571.c 2011-07-21 22:17:23.000000000 -0400
58204 ++++ linux-3.0.8/drivers/net/e1000e/82571.c 2011-08-23 21:47:55.000000000 -0400
58205 +@@ -239,7 +239,7 @@ static s32 e1000_init_mac_params_82571(s
58206 {
58207 struct e1000_hw *hw = &adapter->hw;
58208 struct e1000_mac_info *mac = &hw->mac;
58209 @@ -34533,71 +31300,10 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/82571.c linux-2.6.32.48/drivers/ne
58210 u32 swsm = 0;
58211 u32 swsm2 = 0;
58212 bool force_clear_smbi = false;
58213 -@@ -1656,7 +1656,7 @@ static void e1000_clear_hw_cntrs_82571(s
58214 - temp = er32(ICRXDMTC);
58215 - }
58216 -
58217 --static struct e1000_mac_operations e82571_mac_ops = {
58218 -+static const struct e1000_mac_operations e82571_mac_ops = {
58219 - /* .check_mng_mode: mac type dependent */
58220 - /* .check_for_link: media type dependent */
58221 - .id_led_init = e1000e_id_led_init,
58222 -@@ -1674,7 +1674,7 @@ static struct e1000_mac_operations e8257
58223 - .setup_led = e1000e_setup_led_generic,
58224 - };
58225 -
58226 --static struct e1000_phy_operations e82_phy_ops_igp = {
58227 -+static const struct e1000_phy_operations e82_phy_ops_igp = {
58228 - .acquire_phy = e1000_get_hw_semaphore_82571,
58229 - .check_reset_block = e1000e_check_reset_block_generic,
58230 - .commit_phy = NULL,
58231 -@@ -1691,7 +1691,7 @@ static struct e1000_phy_operations e82_p
58232 - .cfg_on_link_up = NULL,
58233 - };
58234 -
58235 --static struct e1000_phy_operations e82_phy_ops_m88 = {
58236 -+static const struct e1000_phy_operations e82_phy_ops_m88 = {
58237 - .acquire_phy = e1000_get_hw_semaphore_82571,
58238 - .check_reset_block = e1000e_check_reset_block_generic,
58239 - .commit_phy = e1000e_phy_sw_reset,
58240 -@@ -1708,7 +1708,7 @@ static struct e1000_phy_operations e82_p
58241 - .cfg_on_link_up = NULL,
58242 - };
58243 -
58244 --static struct e1000_phy_operations e82_phy_ops_bm = {
58245 -+static const struct e1000_phy_operations e82_phy_ops_bm = {
58246 - .acquire_phy = e1000_get_hw_semaphore_82571,
58247 - .check_reset_block = e1000e_check_reset_block_generic,
58248 - .commit_phy = e1000e_phy_sw_reset,
58249 -@@ -1725,7 +1725,7 @@ static struct e1000_phy_operations e82_p
58250 - .cfg_on_link_up = NULL,
58251 - };
58252 -
58253 --static struct e1000_nvm_operations e82571_nvm_ops = {
58254 -+static const struct e1000_nvm_operations e82571_nvm_ops = {
58255 - .acquire_nvm = e1000_acquire_nvm_82571,
58256 - .read_nvm = e1000e_read_nvm_eerd,
58257 - .release_nvm = e1000_release_nvm_82571,
58258 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/e1000.h linux-2.6.32.48/drivers/net/e1000e/e1000.h
58259 ---- linux-2.6.32.48/drivers/net/e1000e/e1000.h 2011-11-12 12:44:29.000000000 -0500
58260 -+++ linux-2.6.32.48/drivers/net/e1000e/e1000.h 2011-11-12 12:46:45.000000000 -0500
58261 -@@ -375,9 +375,9 @@ struct e1000_info {
58262 - u32 pba;
58263 - u32 max_hw_frame_size;
58264 - s32 (*get_variants)(struct e1000_adapter *);
58265 -- struct e1000_mac_operations *mac_ops;
58266 -- struct e1000_phy_operations *phy_ops;
58267 -- struct e1000_nvm_operations *nvm_ops;
58268 -+ const struct e1000_mac_operations *mac_ops;
58269 -+ const struct e1000_phy_operations *phy_ops;
58270 -+ const struct e1000_nvm_operations *nvm_ops;
58271 - };
58272 -
58273 - /* hardware capability, feature, and workaround flags */
58274 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/es2lan.c linux-2.6.32.48/drivers/net/e1000e/es2lan.c
58275 ---- linux-2.6.32.48/drivers/net/e1000e/es2lan.c 2009-12-02 22:51:21.000000000 -0500
58276 -+++ linux-2.6.32.48/drivers/net/e1000e/es2lan.c 2011-11-12 12:46:45.000000000 -0500
58277 -@@ -207,7 +207,7 @@ static s32 e1000_init_mac_params_80003es
58278 +diff -urNp linux-3.0.8/drivers/net/e1000e/es2lan.c linux-3.0.8/drivers/net/e1000e/es2lan.c
58279 +--- linux-3.0.8/drivers/net/e1000e/es2lan.c 2011-07-21 22:17:23.000000000 -0400
58280 ++++ linux-3.0.8/drivers/net/e1000e/es2lan.c 2011-08-23 21:47:55.000000000 -0400
58281 +@@ -205,7 +205,7 @@ static s32 e1000_init_mac_params_80003es
58282 {
58283 struct e1000_hw *hw = &adapter->hw;
58284 struct e1000_mac_info *mac = &hw->mac;
58285 @@ -34606,65 +31312,38 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/es2lan.c linux-2.6.32.48/drivers/n
58286
58287 /* Set media type */
58288 switch (adapter->pdev->device) {
58289 -@@ -1365,7 +1365,7 @@ static void e1000_clear_hw_cntrs_80003es
58290 - temp = er32(ICRXDMTC);
58291 - }
58292 -
58293 --static struct e1000_mac_operations es2_mac_ops = {
58294 -+static const struct e1000_mac_operations es2_mac_ops = {
58295 - .id_led_init = e1000e_id_led_init,
58296 - .check_mng_mode = e1000e_check_mng_mode_generic,
58297 - /* check_for_link dependent on media type */
58298 -@@ -1383,7 +1383,7 @@ static struct e1000_mac_operations es2_m
58299 - .setup_led = e1000e_setup_led_generic,
58300 - };
58301 -
58302 --static struct e1000_phy_operations es2_phy_ops = {
58303 -+static const struct e1000_phy_operations es2_phy_ops = {
58304 - .acquire_phy = e1000_acquire_phy_80003es2lan,
58305 - .check_reset_block = e1000e_check_reset_block_generic,
58306 - .commit_phy = e1000e_phy_sw_reset,
58307 -@@ -1400,7 +1400,7 @@ static struct e1000_phy_operations es2_p
58308 - .cfg_on_link_up = e1000_cfg_on_link_up_80003es2lan,
58309 - };
58310 -
58311 --static struct e1000_nvm_operations es2_nvm_ops = {
58312 -+static const struct e1000_nvm_operations es2_nvm_ops = {
58313 - .acquire_nvm = e1000_acquire_nvm_80003es2lan,
58314 - .read_nvm = e1000e_read_nvm_eerd,
58315 - .release_nvm = e1000_release_nvm_80003es2lan,
58316 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/hw.h linux-2.6.32.48/drivers/net/e1000e/hw.h
58317 ---- linux-2.6.32.48/drivers/net/e1000e/hw.h 2011-11-12 12:44:29.000000000 -0500
58318 -+++ linux-2.6.32.48/drivers/net/e1000e/hw.h 2011-11-12 12:46:45.000000000 -0500
58319 -@@ -753,6 +753,7 @@ struct e1000_mac_operations {
58320 - s32 (*setup_physical_interface)(struct e1000_hw *);
58321 - s32 (*setup_led)(struct e1000_hw *);
58322 +diff -urNp linux-3.0.8/drivers/net/e1000e/hw.h linux-3.0.8/drivers/net/e1000e/hw.h
58323 +--- linux-3.0.8/drivers/net/e1000e/hw.h 2011-07-21 22:17:23.000000000 -0400
58324 ++++ linux-3.0.8/drivers/net/e1000e/hw.h 2011-08-23 21:47:55.000000000 -0400
58325 +@@ -776,6 +776,7 @@ struct e1000_mac_operations {
58326 + void (*write_vfta)(struct e1000_hw *, u32, u32);
58327 + s32 (*read_mac_addr)(struct e1000_hw *);
58328 };
58329 +typedef struct e1000_mac_operations __no_const e1000_mac_operations_no_const;
58330
58331 /* Function pointers for the PHY. */
58332 struct e1000_phy_operations {
58333 -@@ -774,6 +775,7 @@ struct e1000_phy_operations {
58334 - s32 (*write_phy_reg_locked)(struct e1000_hw *, u32, u16);
58335 - s32 (*cfg_on_link_up)(struct e1000_hw *);
58336 +@@ -799,6 +800,7 @@ struct e1000_phy_operations {
58337 + void (*power_up)(struct e1000_hw *);
58338 + void (*power_down)(struct e1000_hw *);
58339 };
58340 +typedef struct e1000_phy_operations __no_const e1000_phy_operations_no_const;
58341
58342 /* Function pointers for the NVM. */
58343 struct e1000_nvm_operations {
58344 -@@ -785,9 +787,10 @@ struct e1000_nvm_operations {
58345 - s32 (*validate_nvm)(struct e1000_hw *);
58346 - s32 (*write_nvm)(struct e1000_hw *, u16, u16, u16 *);
58347 +@@ -810,9 +812,10 @@ struct e1000_nvm_operations {
58348 + s32 (*validate)(struct e1000_hw *);
58349 + s32 (*write)(struct e1000_hw *, u16, u16, u16 *);
58350 };
58351 +typedef struct e1000_nvm_operations __no_const e1000_nvm_operations_no_const;
58352
58353 struct e1000_mac_info {
58354 - struct e1000_mac_operations ops;
58355 + e1000_mac_operations_no_const ops;
58356 + u8 addr[ETH_ALEN];
58357 + u8 perm_addr[ETH_ALEN];
58358
58359 - u8 addr[6];
58360 - u8 perm_addr[6];
58361 -@@ -823,7 +826,7 @@ struct e1000_mac_info {
58362 +@@ -853,7 +856,7 @@ struct e1000_mac_info {
58363 };
58364
58365 struct e1000_phy_info {
58366 @@ -34673,7 +31352,7 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/hw.h linux-2.6.32.48/drivers/net/e
58367
58368 enum e1000_phy_type type;
58369
58370 -@@ -857,7 +860,7 @@ struct e1000_phy_info {
58371 +@@ -887,7 +890,7 @@ struct e1000_phy_info {
58372 };
58373
58374 struct e1000_nvm_info {
58375 @@ -34682,40 +31361,22 @@ diff -urNp linux-2.6.32.48/drivers/net/e1000e/hw.h linux-2.6.32.48/drivers/net/e
58376
58377 enum e1000_nvm_type type;
58378 enum e1000_nvm_override override;
58379 -diff -urNp linux-2.6.32.48/drivers/net/e1000e/ich8lan.c linux-2.6.32.48/drivers/net/e1000e/ich8lan.c
58380 ---- linux-2.6.32.48/drivers/net/e1000e/ich8lan.c 2011-11-12 12:44:29.000000000 -0500
58381 -+++ linux-2.6.32.48/drivers/net/e1000e/ich8lan.c 2011-11-12 12:46:45.000000000 -0500
58382 -@@ -3463,7 +3463,7 @@ static void e1000_clear_hw_cntrs_ich8lan
58383 - }
58384 - }
58385 -
58386 --static struct e1000_mac_operations ich8_mac_ops = {
58387 -+static const struct e1000_mac_operations ich8_mac_ops = {
58388 - .id_led_init = e1000e_id_led_init,
58389 - .check_mng_mode = e1000_check_mng_mode_ich8lan,
58390 - .check_for_link = e1000_check_for_copper_link_ich8lan,
58391 -@@ -3481,7 +3481,7 @@ static struct e1000_mac_operations ich8_
58392 - /* id_led_init dependent on mac type */
58393 - };
58394 -
58395 --static struct e1000_phy_operations ich8_phy_ops = {
58396 -+static const struct e1000_phy_operations ich8_phy_ops = {
58397 - .acquire_phy = e1000_acquire_swflag_ich8lan,
58398 - .check_reset_block = e1000_check_reset_block_ich8lan,
58399 - .commit_phy = NULL,
58400 -@@ -3497,7 +3497,7 @@ static struct e1000_phy_operations ich8_
58401 - .write_phy_reg = e1000e_write_phy_reg_igp,
58402 +diff -urNp linux-3.0.8/drivers/net/fealnx.c linux-3.0.8/drivers/net/fealnx.c
58403 +--- linux-3.0.8/drivers/net/fealnx.c 2011-07-21 22:17:23.000000000 -0400
58404 ++++ linux-3.0.8/drivers/net/fealnx.c 2011-10-11 10:44:33.000000000 -0400
58405 +@@ -150,7 +150,7 @@ struct chip_info {
58406 + int flags;
58407 };
58408
58409 --static struct e1000_nvm_operations ich8_nvm_ops = {
58410 -+static const struct e1000_nvm_operations ich8_nvm_ops = {
58411 - .acquire_nvm = e1000_acquire_nvm_ich8lan,
58412 - .read_nvm = e1000_read_nvm_ich8lan,
58413 - .release_nvm = e1000_release_nvm_ich8lan,
58414 -diff -urNp linux-2.6.32.48/drivers/net/hamradio/6pack.c linux-2.6.32.48/drivers/net/hamradio/6pack.c
58415 ---- linux-2.6.32.48/drivers/net/hamradio/6pack.c 2011-11-12 12:44:29.000000000 -0500
58416 -+++ linux-2.6.32.48/drivers/net/hamradio/6pack.c 2011-11-12 12:46:45.000000000 -0500
58417 -@@ -461,6 +461,8 @@ static void sixpack_receive_buf(struct t
58418 +-static const struct chip_info skel_netdrv_tbl[] __devinitdata = {
58419 ++static const struct chip_info skel_netdrv_tbl[] __devinitconst = {
58420 + { "100/10M Ethernet PCI Adapter", HAS_MII_XCVR },
58421 + { "100/10M Ethernet PCI Adapter", HAS_CHIP_XCVR },
58422 + { "1000/100/10M Ethernet PCI Adapter", HAS_MII_XCVR },
58423 +diff -urNp linux-3.0.8/drivers/net/hamradio/6pack.c linux-3.0.8/drivers/net/hamradio/6pack.c
58424 +--- linux-3.0.8/drivers/net/hamradio/6pack.c 2011-07-21 22:17:23.000000000 -0400
58425 ++++ linux-3.0.8/drivers/net/hamradio/6pack.c 2011-08-23 21:48:14.000000000 -0400
58426 +@@ -463,6 +463,8 @@ static void sixpack_receive_buf(struct t
58427 unsigned char buf[512];
58428 int count1;
58429
58430 @@ -34724,50 +31385,10 @@ diff -urNp linux-2.6.32.48/drivers/net/hamradio/6pack.c linux-2.6.32.48/drivers/
58431 if (!count)
58432 return;
58433
58434 -diff -urNp linux-2.6.32.48/drivers/net/ibmveth.c linux-2.6.32.48/drivers/net/ibmveth.c
58435 ---- linux-2.6.32.48/drivers/net/ibmveth.c 2009-12-02 22:51:21.000000000 -0500
58436 -+++ linux-2.6.32.48/drivers/net/ibmveth.c 2011-11-12 12:46:45.000000000 -0500
58437 -@@ -1577,7 +1577,7 @@ static struct attribute * veth_pool_attr
58438 - NULL,
58439 - };
58440 -
58441 --static struct sysfs_ops veth_pool_ops = {
58442 -+static const struct sysfs_ops veth_pool_ops = {
58443 - .show = veth_pool_show,
58444 - .store = veth_pool_store,
58445 - };
58446 -diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_82575.c linux-2.6.32.48/drivers/net/igb/e1000_82575.c
58447 ---- linux-2.6.32.48/drivers/net/igb/e1000_82575.c 2011-11-12 12:44:29.000000000 -0500
58448 -+++ linux-2.6.32.48/drivers/net/igb/e1000_82575.c 2011-11-12 12:46:45.000000000 -0500
58449 -@@ -1411,7 +1411,7 @@ void igb_vmdq_set_replication_pf(struct
58450 - wr32(E1000_VT_CTL, vt_ctl);
58451 - }
58452 -
58453 --static struct e1000_mac_operations e1000_mac_ops_82575 = {
58454 -+static const struct e1000_mac_operations e1000_mac_ops_82575 = {
58455 - .reset_hw = igb_reset_hw_82575,
58456 - .init_hw = igb_init_hw_82575,
58457 - .check_for_link = igb_check_for_link_82575,
58458 -@@ -1420,13 +1420,13 @@ static struct e1000_mac_operations e1000
58459 - .get_speed_and_duplex = igb_get_speed_and_duplex_copper,
58460 - };
58461 -
58462 --static struct e1000_phy_operations e1000_phy_ops_82575 = {
58463 -+static const struct e1000_phy_operations e1000_phy_ops_82575 = {
58464 - .acquire = igb_acquire_phy_82575,
58465 - .get_cfg_done = igb_get_cfg_done_82575,
58466 - .release = igb_release_phy_82575,
58467 - };
58468 -
58469 --static struct e1000_nvm_operations e1000_nvm_ops_82575 = {
58470 -+static const struct e1000_nvm_operations e1000_nvm_ops_82575 = {
58471 - .acquire = igb_acquire_nvm_82575,
58472 - .read = igb_read_nvm_eerd,
58473 - .release = igb_release_nvm_82575,
58474 -diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/net/igb/e1000_hw.h
58475 ---- linux-2.6.32.48/drivers/net/igb/e1000_hw.h 2011-11-12 12:44:29.000000000 -0500
58476 -+++ linux-2.6.32.48/drivers/net/igb/e1000_hw.h 2011-11-12 12:46:45.000000000 -0500
58477 -@@ -288,6 +288,7 @@ struct e1000_mac_operations {
58478 +diff -urNp linux-3.0.8/drivers/net/igb/e1000_hw.h linux-3.0.8/drivers/net/igb/e1000_hw.h
58479 +--- linux-3.0.8/drivers/net/igb/e1000_hw.h 2011-07-21 22:17:23.000000000 -0400
58480 ++++ linux-3.0.8/drivers/net/igb/e1000_hw.h 2011-08-23 21:47:55.000000000 -0400
58481 +@@ -314,6 +314,7 @@ struct e1000_mac_operations {
58482 s32 (*read_mac_addr)(struct e1000_hw *);
58483 s32 (*get_speed_and_duplex)(struct e1000_hw *, u16 *, u16 *);
58484 };
58485 @@ -34775,7 +31396,7 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/ne
58486
58487 struct e1000_phy_operations {
58488 s32 (*acquire)(struct e1000_hw *);
58489 -@@ -303,6 +304,7 @@ struct e1000_phy_operations {
58490 +@@ -330,6 +331,7 @@ struct e1000_phy_operations {
58491 s32 (*set_d3_lplu_state)(struct e1000_hw *, bool);
58492 s32 (*write_reg)(struct e1000_hw *, u32, u16);
58493 };
58494 @@ -34783,15 +31404,15 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/ne
58495
58496 struct e1000_nvm_operations {
58497 s32 (*acquire)(struct e1000_hw *);
58498 -@@ -310,6 +312,7 @@ struct e1000_nvm_operations {
58499 - void (*release)(struct e1000_hw *);
58500 - s32 (*write)(struct e1000_hw *, u16, u16, u16 *);
58501 +@@ -339,6 +341,7 @@ struct e1000_nvm_operations {
58502 + s32 (*update)(struct e1000_hw *);
58503 + s32 (*validate)(struct e1000_hw *);
58504 };
58505 +typedef struct e1000_nvm_operations __no_const e1000_nvm_operations_no_const;
58506
58507 struct e1000_info {
58508 s32 (*get_invariants)(struct e1000_hw *);
58509 -@@ -321,7 +324,7 @@ struct e1000_info {
58510 +@@ -350,7 +353,7 @@ struct e1000_info {
58511 extern const struct e1000_info e1000_82575_info;
58512
58513 struct e1000_mac_info {
58514 @@ -34800,7 +31421,7 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/ne
58515
58516 u8 addr[6];
58517 u8 perm_addr[6];
58518 -@@ -365,7 +368,7 @@ struct e1000_mac_info {
58519 +@@ -388,7 +391,7 @@ struct e1000_mac_info {
58520 };
58521
58522 struct e1000_phy_info {
58523 @@ -34809,16 +31430,16 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/ne
58524
58525 enum e1000_phy_type type;
58526
58527 -@@ -400,7 +403,7 @@ struct e1000_phy_info {
58528 +@@ -423,7 +426,7 @@ struct e1000_phy_info {
58529 };
58530
58531 struct e1000_nvm_info {
58532 - struct e1000_nvm_operations ops;
58533 + e1000_nvm_operations_no_const ops;
58534 -
58535 enum e1000_nvm_type type;
58536 enum e1000_nvm_override override;
58537 -@@ -446,6 +449,7 @@ struct e1000_mbx_operations {
58538 +
58539 +@@ -468,6 +471,7 @@ struct e1000_mbx_operations {
58540 s32 (*check_for_ack)(struct e1000_hw *, u16);
58541 s32 (*check_for_rst)(struct e1000_hw *, u16);
58542 };
58543 @@ -34826,7 +31447,7 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/ne
58544
58545 struct e1000_mbx_stats {
58546 u32 msgs_tx;
58547 -@@ -457,7 +461,7 @@ struct e1000_mbx_stats {
58548 +@@ -479,7 +483,7 @@ struct e1000_mbx_stats {
58549 };
58550
58551 struct e1000_mbx_info {
58552 @@ -34835,10 +31456,10 @@ diff -urNp linux-2.6.32.48/drivers/net/igb/e1000_hw.h linux-2.6.32.48/drivers/ne
58553 struct e1000_mbx_stats stats;
58554 u32 timeout;
58555 u32 usec_delay;
58556 -diff -urNp linux-2.6.32.48/drivers/net/igbvf/vf.h linux-2.6.32.48/drivers/net/igbvf/vf.h
58557 ---- linux-2.6.32.48/drivers/net/igbvf/vf.h 2009-12-02 22:51:21.000000000 -0500
58558 -+++ linux-2.6.32.48/drivers/net/igbvf/vf.h 2011-11-12 12:46:45.000000000 -0500
58559 -@@ -187,9 +187,10 @@ struct e1000_mac_operations {
58560 +diff -urNp linux-3.0.8/drivers/net/igbvf/vf.h linux-3.0.8/drivers/net/igbvf/vf.h
58561 +--- linux-3.0.8/drivers/net/igbvf/vf.h 2011-07-21 22:17:23.000000000 -0400
58562 ++++ linux-3.0.8/drivers/net/igbvf/vf.h 2011-08-23 21:47:55.000000000 -0400
58563 +@@ -189,9 +189,10 @@ struct e1000_mac_operations {
58564 s32 (*read_mac_addr)(struct e1000_hw *);
58565 s32 (*set_vfta)(struct e1000_hw *, u16, bool);
58566 };
58567 @@ -34850,7 +31471,7 @@ diff -urNp linux-2.6.32.48/drivers/net/igbvf/vf.h linux-2.6.32.48/drivers/net/ig
58568 u8 addr[6];
58569 u8 perm_addr[6];
58570
58571 -@@ -211,6 +212,7 @@ struct e1000_mbx_operations {
58572 +@@ -213,6 +214,7 @@ struct e1000_mbx_operations {
58573 s32 (*check_for_ack)(struct e1000_hw *);
58574 s32 (*check_for_rst)(struct e1000_hw *);
58575 };
58576 @@ -34858,7 +31479,7 @@ diff -urNp linux-2.6.32.48/drivers/net/igbvf/vf.h linux-2.6.32.48/drivers/net/ig
58577
58578 struct e1000_mbx_stats {
58579 u32 msgs_tx;
58580 -@@ -222,7 +224,7 @@ struct e1000_mbx_stats {
58581 +@@ -224,7 +226,7 @@ struct e1000_mbx_stats {
58582 };
58583
58584 struct e1000_mbx_info {
58585 @@ -34867,31 +31488,10 @@ diff -urNp linux-2.6.32.48/drivers/net/igbvf/vf.h linux-2.6.32.48/drivers/net/ig
58586 struct e1000_mbx_stats stats;
58587 u32 timeout;
58588 u32 usec_delay;
58589 -diff -urNp linux-2.6.32.48/drivers/net/iseries_veth.c linux-2.6.32.48/drivers/net/iseries_veth.c
58590 ---- linux-2.6.32.48/drivers/net/iseries_veth.c 2009-12-02 22:51:21.000000000 -0500
58591 -+++ linux-2.6.32.48/drivers/net/iseries_veth.c 2011-11-12 12:46:45.000000000 -0500
58592 -@@ -384,7 +384,7 @@ static struct attribute *veth_cnx_defaul
58593 - NULL
58594 - };
58595 -
58596 --static struct sysfs_ops veth_cnx_sysfs_ops = {
58597 -+static const struct sysfs_ops veth_cnx_sysfs_ops = {
58598 - .show = veth_cnx_attribute_show
58599 - };
58600 -
58601 -@@ -441,7 +441,7 @@ static struct attribute *veth_port_defau
58602 - NULL
58603 - };
58604 -
58605 --static struct sysfs_ops veth_port_sysfs_ops = {
58606 -+static const struct sysfs_ops veth_port_sysfs_ops = {
58607 - .show = veth_port_attribute_show
58608 - };
58609 -
58610 -diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c
58611 ---- linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c 2009-12-02 22:51:21.000000000 -0500
58612 -+++ linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c 2011-11-12 12:46:45.000000000 -0500
58613 -@@ -1052,6 +1052,8 @@ ixgb_set_multi(struct net_device *netdev
58614 +diff -urNp linux-3.0.8/drivers/net/ixgb/ixgb_main.c linux-3.0.8/drivers/net/ixgb/ixgb_main.c
58615 +--- linux-3.0.8/drivers/net/ixgb/ixgb_main.c 2011-07-21 22:17:23.000000000 -0400
58616 ++++ linux-3.0.8/drivers/net/ixgb/ixgb_main.c 2011-08-23 21:48:14.000000000 -0400
58617 +@@ -1070,6 +1070,8 @@ ixgb_set_multi(struct net_device *netdev
58618 u32 rctl;
58619 int i;
58620
58621 @@ -34900,10 +31500,10 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_main.c linux-2.6.32.48/drivers/
58622 /* Check for Promiscuous and All Multicast modes */
58623
58624 rctl = IXGB_READ_REG(hw, RCTL);
58625 -diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c
58626 ---- linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c 2009-12-02 22:51:21.000000000 -0500
58627 -+++ linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c 2011-11-12 12:46:45.000000000 -0500
58628 -@@ -260,6 +260,9 @@ void __devinit
58629 +diff -urNp linux-3.0.8/drivers/net/ixgb/ixgb_param.c linux-3.0.8/drivers/net/ixgb/ixgb_param.c
58630 +--- linux-3.0.8/drivers/net/ixgb/ixgb_param.c 2011-07-21 22:17:23.000000000 -0400
58631 ++++ linux-3.0.8/drivers/net/ixgb/ixgb_param.c 2011-08-23 21:48:14.000000000 -0400
58632 +@@ -261,6 +261,9 @@ void __devinit
58633 ixgb_check_options(struct ixgb_adapter *adapter)
58634 {
58635 int bd = adapter->bd_number;
58636 @@ -34911,20 +31511,20 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgb/ixgb_param.c linux-2.6.32.48/drivers
58637 + pax_track_stack();
58638 +
58639 if (bd >= IXGB_MAX_NIC) {
58640 - printk(KERN_NOTICE
58641 - "Warning: no configuration for board #%i\n", bd);
58642 -diff -urNp linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h
58643 ---- linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h 2011-11-12 12:44:29.000000000 -0500
58644 -+++ linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h 2011-11-12 12:46:45.000000000 -0500
58645 -@@ -2327,6 +2327,7 @@ struct ixgbe_eeprom_operations {
58646 - s32 (*validate_checksum)(struct ixgbe_hw *, u16 *);
58647 + pr_notice("Warning: no configuration for board #%i\n", bd);
58648 + pr_notice("Using defaults for all values\n");
58649 +diff -urNp linux-3.0.8/drivers/net/ixgbe/ixgbe_type.h linux-3.0.8/drivers/net/ixgbe/ixgbe_type.h
58650 +--- linux-3.0.8/drivers/net/ixgbe/ixgbe_type.h 2011-07-21 22:17:23.000000000 -0400
58651 ++++ linux-3.0.8/drivers/net/ixgbe/ixgbe_type.h 2011-08-23 21:47:55.000000000 -0400
58652 +@@ -2584,6 +2584,7 @@ struct ixgbe_eeprom_operations {
58653 s32 (*update_checksum)(struct ixgbe_hw *);
58654 + u16 (*calc_checksum)(struct ixgbe_hw *);
58655 };
58656 +typedef struct ixgbe_eeprom_operations __no_const ixgbe_eeprom_operations_no_const;
58657
58658 struct ixgbe_mac_operations {
58659 s32 (*init_hw)(struct ixgbe_hw *);
58660 -@@ -2376,6 +2377,7 @@ struct ixgbe_mac_operations {
58661 +@@ -2639,6 +2640,7 @@ struct ixgbe_mac_operations {
58662 /* Flow Control */
58663 s32 (*fc_enable)(struct ixgbe_hw *, s32);
58664 };
58665 @@ -34932,9 +31532,9 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h linux-2.6.32.48/driver
58666
58667 struct ixgbe_phy_operations {
58668 s32 (*identify)(struct ixgbe_hw *);
58669 -@@ -2394,9 +2396,10 @@ struct ixgbe_phy_operations {
58670 - s32 (*read_i2c_eeprom)(struct ixgbe_hw *, u8 , u8 *);
58671 +@@ -2658,9 +2660,10 @@ struct ixgbe_phy_operations {
58672 s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8);
58673 + s32 (*check_overtemp)(struct ixgbe_hw *);
58674 };
58675 +typedef struct ixgbe_phy_operations __no_const ixgbe_phy_operations_no_const;
58676
58677 @@ -34944,16 +31544,16 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h linux-2.6.32.48/driver
58678 enum ixgbe_eeprom_type type;
58679 u32 semaphore_delay;
58680 u16 word_size;
58681 -@@ -2404,7 +2407,7 @@ struct ixgbe_eeprom_info {
58682 - };
58683 +@@ -2670,7 +2673,7 @@ struct ixgbe_eeprom_info {
58684
58685 + #define IXGBE_FLAGS_DOUBLE_RESET_REQUIRED 0x01
58686 struct ixgbe_mac_info {
58687 - struct ixgbe_mac_operations ops;
58688 + ixgbe_mac_operations_no_const ops;
58689 enum ixgbe_mac_type type;
58690 u8 addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
58691 u8 perm_addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
58692 -@@ -2423,7 +2426,7 @@ struct ixgbe_mac_info {
58693 +@@ -2698,7 +2701,7 @@ struct ixgbe_mac_info {
58694 };
58695
58696 struct ixgbe_phy_info {
58697 @@ -34962,18 +31562,84 @@ diff -urNp linux-2.6.32.48/drivers/net/ixgbe/ixgbe_type.h linux-2.6.32.48/driver
58698 struct mdio_if_info mdio;
58699 enum ixgbe_phy_type type;
58700 u32 id;
58701 -diff -urNp linux-2.6.32.48/drivers/net/mlx4/main.c linux-2.6.32.48/drivers/net/mlx4/main.c
58702 ---- linux-2.6.32.48/drivers/net/mlx4/main.c 2009-12-02 22:51:21.000000000 -0500
58703 -+++ linux-2.6.32.48/drivers/net/mlx4/main.c 2011-11-12 12:46:45.000000000 -0500
58704 -@@ -38,6 +38,7 @@
58705 - #include <linux/errno.h>
58706 - #include <linux/pci.h>
58707 +@@ -2726,6 +2729,7 @@ struct ixgbe_mbx_operations {
58708 + s32 (*check_for_ack)(struct ixgbe_hw *, u16);
58709 + s32 (*check_for_rst)(struct ixgbe_hw *, u16);
58710 + };
58711 ++typedef struct ixgbe_mbx_operations __no_const ixgbe_mbx_operations_no_const;
58712 +
58713 + struct ixgbe_mbx_stats {
58714 + u32 msgs_tx;
58715 +@@ -2737,7 +2741,7 @@ struct ixgbe_mbx_stats {
58716 + };
58717 +
58718 + struct ixgbe_mbx_info {
58719 +- struct ixgbe_mbx_operations ops;
58720 ++ ixgbe_mbx_operations_no_const ops;
58721 + struct ixgbe_mbx_stats stats;
58722 + u32 timeout;
58723 + u32 usec_delay;
58724 +diff -urNp linux-3.0.8/drivers/net/ixgbevf/vf.h linux-3.0.8/drivers/net/ixgbevf/vf.h
58725 +--- linux-3.0.8/drivers/net/ixgbevf/vf.h 2011-07-21 22:17:23.000000000 -0400
58726 ++++ linux-3.0.8/drivers/net/ixgbevf/vf.h 2011-08-23 21:47:55.000000000 -0400
58727 +@@ -70,6 +70,7 @@ struct ixgbe_mac_operations {
58728 + s32 (*clear_vfta)(struct ixgbe_hw *);
58729 + s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool);
58730 + };
58731 ++typedef struct ixgbe_mac_operations __no_const ixgbe_mac_operations_no_const;
58732 +
58733 + enum ixgbe_mac_type {
58734 + ixgbe_mac_unknown = 0,
58735 +@@ -79,7 +80,7 @@ enum ixgbe_mac_type {
58736 + };
58737 +
58738 + struct ixgbe_mac_info {
58739 +- struct ixgbe_mac_operations ops;
58740 ++ ixgbe_mac_operations_no_const ops;
58741 + u8 addr[6];
58742 + u8 perm_addr[6];
58743 +
58744 +@@ -103,6 +104,7 @@ struct ixgbe_mbx_operations {
58745 + s32 (*check_for_ack)(struct ixgbe_hw *);
58746 + s32 (*check_for_rst)(struct ixgbe_hw *);
58747 + };
58748 ++typedef struct ixgbe_mbx_operations __no_const ixgbe_mbx_operations_no_const;
58749 +
58750 + struct ixgbe_mbx_stats {
58751 + u32 msgs_tx;
58752 +@@ -114,7 +116,7 @@ struct ixgbe_mbx_stats {
58753 + };
58754 +
58755 + struct ixgbe_mbx_info {
58756 +- struct ixgbe_mbx_operations ops;
58757 ++ ixgbe_mbx_operations_no_const ops;
58758 + struct ixgbe_mbx_stats stats;
58759 + u32 timeout;
58760 + u32 udelay;
58761 +diff -urNp linux-3.0.8/drivers/net/ksz884x.c linux-3.0.8/drivers/net/ksz884x.c
58762 +--- linux-3.0.8/drivers/net/ksz884x.c 2011-07-21 22:17:23.000000000 -0400
58763 ++++ linux-3.0.8/drivers/net/ksz884x.c 2011-08-23 21:48:14.000000000 -0400
58764 +@@ -6534,6 +6534,8 @@ static void netdev_get_ethtool_stats(str
58765 + int rc;
58766 + u64 counter[TOTAL_PORT_COUNTER_NUM];
58767 +
58768 ++ pax_track_stack();
58769 ++
58770 + mutex_lock(&hw_priv->lock);
58771 + n = SWITCH_PORT_NUM;
58772 + for (i = 0, p = port->first_port; i < port->mib_port_cnt; i++, p++) {
58773 +diff -urNp linux-3.0.8/drivers/net/mlx4/main.c linux-3.0.8/drivers/net/mlx4/main.c
58774 +--- linux-3.0.8/drivers/net/mlx4/main.c 2011-07-21 22:17:23.000000000 -0400
58775 ++++ linux-3.0.8/drivers/net/mlx4/main.c 2011-08-23 21:48:14.000000000 -0400
58776 +@@ -40,6 +40,7 @@
58777 #include <linux/dma-mapping.h>
58778 + #include <linux/slab.h>
58779 + #include <linux/io-mapping.h>
58780 +#include <linux/sched.h>
58781
58782 #include <linux/mlx4/device.h>
58783 #include <linux/mlx4/doorbell.h>
58784 -@@ -730,6 +731,8 @@ static int mlx4_init_hca(struct mlx4_dev
58785 +@@ -764,6 +765,8 @@ static int mlx4_init_hca(struct mlx4_dev
58786 u64 icm_size;
58787 int err;
58788
58789 @@ -34982,10 +31648,10 @@ diff -urNp linux-2.6.32.48/drivers/net/mlx4/main.c linux-2.6.32.48/drivers/net/m
58790 err = mlx4_QUERY_FW(dev);
58791 if (err) {
58792 if (err == -EACCES)
58793 -diff -urNp linux-2.6.32.48/drivers/net/niu.c linux-2.6.32.48/drivers/net/niu.c
58794 ---- linux-2.6.32.48/drivers/net/niu.c 2011-11-12 12:44:29.000000000 -0500
58795 -+++ linux-2.6.32.48/drivers/net/niu.c 2011-11-12 12:46:45.000000000 -0500
58796 -@@ -9128,6 +9128,8 @@ static void __devinit niu_try_msix(struc
58797 +diff -urNp linux-3.0.8/drivers/net/niu.c linux-3.0.8/drivers/net/niu.c
58798 +--- linux-3.0.8/drivers/net/niu.c 2011-10-24 08:05:21.000000000 -0400
58799 ++++ linux-3.0.8/drivers/net/niu.c 2011-08-23 21:48:14.000000000 -0400
58800 +@@ -9056,6 +9056,8 @@ static void __devinit niu_try_msix(struc
58801 int i, num_irqs, err;
58802 u8 first_ldg;
58803
58804 @@ -34994,10 +31660,10 @@ diff -urNp linux-2.6.32.48/drivers/net/niu.c linux-2.6.32.48/drivers/net/niu.c
58805 first_ldg = (NIU_NUM_LDG / parent->num_ports) * np->port;
58806 for (i = 0; i < (NIU_NUM_LDG / parent->num_ports); i++)
58807 ldg_num_map[i] = first_ldg + i;
58808 -diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcnet32.c
58809 ---- linux-2.6.32.48/drivers/net/pcnet32.c 2009-12-02 22:51:21.000000000 -0500
58810 -+++ linux-2.6.32.48/drivers/net/pcnet32.c 2011-11-12 12:46:45.000000000 -0500
58811 -@@ -79,7 +79,7 @@ static int cards_found;
58812 +diff -urNp linux-3.0.8/drivers/net/pcnet32.c linux-3.0.8/drivers/net/pcnet32.c
58813 +--- linux-3.0.8/drivers/net/pcnet32.c 2011-07-21 22:17:23.000000000 -0400
58814 ++++ linux-3.0.8/drivers/net/pcnet32.c 2011-08-23 21:47:55.000000000 -0400
58815 +@@ -82,7 +82,7 @@ static int cards_found;
58816 /*
58817 * VLB I/O addresses
58818 */
58819 @@ -35005,8 +31671,8 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58820 +static unsigned int pcnet32_portlist[] __devinitdata =
58821 { 0x300, 0x320, 0x340, 0x360, 0 };
58822
58823 - static int pcnet32_debug = 0;
58824 -@@ -267,7 +267,7 @@ struct pcnet32_private {
58825 + static int pcnet32_debug;
58826 +@@ -270,7 +270,7 @@ struct pcnet32_private {
58827 struct sk_buff **rx_skbuff;
58828 dma_addr_t *tx_dma_addr;
58829 dma_addr_t *rx_dma_addr;
58830 @@ -35015,7 +31681,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58831 spinlock_t lock; /* Guard lock */
58832 unsigned int cur_rx, cur_tx; /* The next free ring entry */
58833 unsigned int rx_ring_size; /* current rx ring size */
58834 -@@ -457,9 +457,9 @@ static void pcnet32_netif_start(struct n
58835 +@@ -460,9 +460,9 @@ static void pcnet32_netif_start(struct n
58836 u16 val;
58837
58838 netif_wake_queue(dev);
58839 @@ -35027,7 +31693,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58840 napi_enable(&lp->napi);
58841 }
58842
58843 -@@ -744,7 +744,7 @@ static u32 pcnet32_get_link(struct net_d
58844 +@@ -730,7 +730,7 @@ static u32 pcnet32_get_link(struct net_d
58845 r = mii_link_ok(&lp->mii_if);
58846 } else if (lp->chip_version >= PCNET32_79C970A) {
58847 ulong ioaddr = dev->base_addr; /* card base I/O address */
58848 @@ -35036,7 +31702,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58849 } else { /* can not detect link on really old chips */
58850 r = 1;
58851 }
58852 -@@ -806,7 +806,7 @@ static int pcnet32_set_ringparam(struct
58853 +@@ -792,7 +792,7 @@ static int pcnet32_set_ringparam(struct
58854 pcnet32_netif_stop(dev);
58855
58856 spin_lock_irqsave(&lp->lock, flags);
58857 @@ -35045,7 +31711,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58858
58859 size = min(ering->tx_pending, (unsigned int)TX_MAX_RING_SIZE);
58860
58861 -@@ -886,7 +886,7 @@ static void pcnet32_ethtool_test(struct
58862 +@@ -868,7 +868,7 @@ static void pcnet32_ethtool_test(struct
58863 static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
58864 {
58865 struct pcnet32_private *lp = netdev_priv(dev);
58866 @@ -35054,7 +31720,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58867 ulong ioaddr = dev->base_addr; /* card base I/O address */
58868 struct sk_buff *skb; /* sk buff */
58869 int x, i; /* counters */
58870 -@@ -906,21 +906,21 @@ static int pcnet32_loopback_test(struct
58871 +@@ -888,21 +888,21 @@ static int pcnet32_loopback_test(struct
58872 pcnet32_netif_stop(dev);
58873
58874 spin_lock_irqsave(&lp->lock, flags);
58875 @@ -35081,7 +31747,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58876
58877 /* Initialize Transmit buffers. */
58878 size = data_len + 15;
58879 -@@ -966,10 +966,10 @@ static int pcnet32_loopback_test(struct
58880 +@@ -947,10 +947,10 @@ static int pcnet32_loopback_test(struct
58881
58882 /* set int loopback in CSR15 */
58883 x = a->read_csr(ioaddr, CSR15) & 0xfffc;
58884 @@ -35094,7 +31760,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58885
58886 /* Check status of descriptors */
58887 for (x = 0; x < numbuffs; x++) {
58888 -@@ -990,7 +990,7 @@ static int pcnet32_loopback_test(struct
58889 +@@ -969,7 +969,7 @@ static int pcnet32_loopback_test(struct
58890 }
58891 }
58892
58893 @@ -35102,8 +31768,8 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58894 + lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
58895 wmb();
58896 if (netif_msg_hw(lp) && netif_msg_pktdata(lp)) {
58897 - printk(KERN_DEBUG "%s: RX loopback packets:\n", dev->name);
58898 -@@ -1039,7 +1039,7 @@ static int pcnet32_loopback_test(struct
58899 + netdev_printk(KERN_DEBUG, dev, "RX loopback packets:\n");
58900 +@@ -1015,7 +1015,7 @@ clean_up:
58901 pcnet32_restart(dev, CSR0_NORMAL);
58902 } else {
58903 pcnet32_purge_rx_ring(dev);
58904 @@ -35112,8 +31778,8 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58905 }
58906 spin_unlock_irqrestore(&lp->lock, flags);
58907
58908 -@@ -1049,7 +1049,7 @@ static int pcnet32_loopback_test(struct
58909 - static void pcnet32_led_blink_callback(struct net_device *dev)
58910 +@@ -1026,7 +1026,7 @@ static int pcnet32_set_phys_id(struct ne
58911 + enum ethtool_phys_id_state state)
58912 {
58913 struct pcnet32_private *lp = netdev_priv(dev);
58914 - struct pcnet32_access *a = &lp->a;
58915 @@ -35121,16 +31787,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58916 ulong ioaddr = dev->base_addr;
58917 unsigned long flags;
58918 int i;
58919 -@@ -1066,7 +1066,7 @@ static void pcnet32_led_blink_callback(s
58920 - static int pcnet32_phys_id(struct net_device *dev, u32 data)
58921 - {
58922 - struct pcnet32_private *lp = netdev_priv(dev);
58923 -- struct pcnet32_access *a = &lp->a;
58924 -+ struct pcnet32_access *a = lp->a;
58925 - ulong ioaddr = dev->base_addr;
58926 - unsigned long flags;
58927 - int i, regs[4];
58928 -@@ -1112,7 +1112,7 @@ static int pcnet32_suspend(struct net_de
58929 +@@ -1067,7 +1067,7 @@ static int pcnet32_suspend(struct net_de
58930 {
58931 int csr5;
58932 struct pcnet32_private *lp = netdev_priv(dev);
58933 @@ -35139,7 +31796,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58934 ulong ioaddr = dev->base_addr;
58935 int ticks;
58936
58937 -@@ -1388,8 +1388,8 @@ static int pcnet32_poll(struct napi_stru
58938 +@@ -1324,8 +1324,8 @@ static int pcnet32_poll(struct napi_stru
58939 spin_lock_irqsave(&lp->lock, flags);
58940 if (pcnet32_tx(dev)) {
58941 /* reset the chip to clear the error condition, then restart */
58942 @@ -35150,7 +31807,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58943 pcnet32_restart(dev, CSR0_START);
58944 netif_wake_queue(dev);
58945 }
58946 -@@ -1401,12 +1401,12 @@ static int pcnet32_poll(struct napi_stru
58947 +@@ -1337,12 +1337,12 @@ static int pcnet32_poll(struct napi_stru
58948 __napi_complete(napi);
58949
58950 /* clear interrupt masks */
58951 @@ -35166,7 +31823,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58952
58953 spin_unlock_irqrestore(&lp->lock, flags);
58954 }
58955 -@@ -1429,7 +1429,7 @@ static void pcnet32_get_regs(struct net_
58956 +@@ -1365,7 +1365,7 @@ static void pcnet32_get_regs(struct net_
58957 int i, csr0;
58958 u16 *buff = ptr;
58959 struct pcnet32_private *lp = netdev_priv(dev);
58960 @@ -35175,7 +31832,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58961 ulong ioaddr = dev->base_addr;
58962 unsigned long flags;
58963
58964 -@@ -1466,9 +1466,9 @@ static void pcnet32_get_regs(struct net_
58965 +@@ -1401,9 +1401,9 @@ static void pcnet32_get_regs(struct net_
58966 for (j = 0; j < PCNET32_MAX_PHYS; j++) {
58967 if (lp->phymask & (1 << j)) {
58968 for (i = 0; i < PCNET32_REGS_PER_PHY; i++) {
58969 @@ -35187,7 +31844,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58970 }
58971 }
58972 }
58973 -@@ -1858,7 +1858,7 @@ pcnet32_probe1(unsigned long ioaddr, int
58974 +@@ -1785,7 +1785,7 @@ pcnet32_probe1(unsigned long ioaddr, int
58975 ((cards_found >= MAX_UNITS) || full_duplex[cards_found]))
58976 lp->options |= PCNET32_PORT_FD;
58977
58978 @@ -35196,7 +31853,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58979
58980 /* prior to register_netdev, dev->name is not yet correct */
58981 if (pcnet32_alloc_ring(dev, pci_name(lp->pci_dev))) {
58982 -@@ -1917,7 +1917,7 @@ pcnet32_probe1(unsigned long ioaddr, int
58983 +@@ -1844,7 +1844,7 @@ pcnet32_probe1(unsigned long ioaddr, int
58984 if (lp->mii) {
58985 /* lp->phycount and lp->phymask are set to 0 by memset above */
58986
58987 @@ -35205,16 +31862,16 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
58988 /* scan for PHYs */
58989 for (i = 0; i < PCNET32_MAX_PHYS; i++) {
58990 unsigned short id1, id2;
58991 -@@ -1938,7 +1938,7 @@ pcnet32_probe1(unsigned long ioaddr, int
58992 - "Found PHY %04x:%04x at address %d.\n",
58993 - id1, id2, i);
58994 +@@ -1864,7 +1864,7 @@ pcnet32_probe1(unsigned long ioaddr, int
58995 + pr_info("Found PHY %04x:%04x at address %d\n",
58996 + id1, id2, i);
58997 }
58998 - lp->a.write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
58999 + lp->a->write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
59000 - if (lp->phycount > 1) {
59001 + if (lp->phycount > 1)
59002 lp->options |= PCNET32_PORT_MII;
59003 - }
59004 -@@ -2109,10 +2109,10 @@ static int pcnet32_open(struct net_devic
59005 + }
59006 +@@ -2020,10 +2020,10 @@ static int pcnet32_open(struct net_devic
59007 }
59008
59009 /* Reset the PCNET32 */
59010 @@ -35225,10 +31882,10 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59011 - lp->a.write_bcr(ioaddr, 20, 2);
59012 + lp->a->write_bcr(ioaddr, 20, 2);
59013
59014 - if (netif_msg_ifup(lp))
59015 - printk(KERN_DEBUG
59016 -@@ -2122,14 +2122,14 @@ static int pcnet32_open(struct net_devic
59017 - (u32) (lp->init_dma_addr));
59018 + netif_printk(lp, ifup, KERN_DEBUG, dev,
59019 + "%s() irq %d tx/rx rings %#x/%#x init %#x\n",
59020 +@@ -2032,14 +2032,14 @@ static int pcnet32_open(struct net_devic
59021 + (u32) (lp->init_dma_addr));
59022
59023 /* set/reset autoselect bit */
59024 - val = lp->a.read_bcr(ioaddr, 2) & ~2;
59025 @@ -35245,7 +31902,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59026 if (lp->options & PCNET32_PORT_FD) {
59027 val |= 1;
59028 if (lp->options == (PCNET32_PORT_FD | PCNET32_PORT_AUI))
59029 -@@ -2139,14 +2139,14 @@ static int pcnet32_open(struct net_devic
59030 +@@ -2049,14 +2049,14 @@ static int pcnet32_open(struct net_devic
59031 if (lp->chip_version == 0x2627)
59032 val |= 3;
59033 }
59034 @@ -35263,7 +31920,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59035
59036 /* Allied Telesyn AT 2700/2701 FX are 100Mbit only and do not negotiate */
59037 if (pdev && pdev->subsystem_vendor == PCI_VENDOR_ID_AT &&
59038 -@@ -2167,24 +2167,24 @@ static int pcnet32_open(struct net_devic
59039 +@@ -2075,24 +2075,24 @@ static int pcnet32_open(struct net_devic
59040 * duplex, and/or enable auto negotiation, and clear DANAS
59041 */
59042 if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
59043 @@ -35296,7 +31953,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59044 }
59045 }
59046 } else {
59047 -@@ -2197,10 +2197,10 @@ static int pcnet32_open(struct net_devic
59048 +@@ -2105,10 +2105,10 @@ static int pcnet32_open(struct net_devic
59049 * There is really no good other way to handle multiple PHYs
59050 * other than turning off all automatics
59051 */
59052 @@ -35311,16 +31968,16 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59053
59054 if (!(lp->options & PCNET32_PORT_ASEL)) {
59055 /* setup ecmd */
59056 -@@ -2210,7 +2210,7 @@ static int pcnet32_open(struct net_devic
59057 - ecmd.speed =
59058 - lp->
59059 - options & PCNET32_PORT_100 ? SPEED_100 : SPEED_10;
59060 +@@ -2118,7 +2118,7 @@ static int pcnet32_open(struct net_devic
59061 + ethtool_cmd_speed_set(&ecmd,
59062 + (lp->options & PCNET32_PORT_100) ?
59063 + SPEED_100 : SPEED_10);
59064 - bcr9 = lp->a.read_bcr(ioaddr, 9);
59065 + bcr9 = lp->a->read_bcr(ioaddr, 9);
59066
59067 if (lp->options & PCNET32_PORT_FD) {
59068 ecmd.duplex = DUPLEX_FULL;
59069 -@@ -2219,7 +2219,7 @@ static int pcnet32_open(struct net_devic
59070 +@@ -2127,7 +2127,7 @@ static int pcnet32_open(struct net_devic
59071 ecmd.duplex = DUPLEX_HALF;
59072 bcr9 |= ~(1 << 0);
59073 }
59074 @@ -35329,7 +31986,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59075 }
59076
59077 for (i = 0; i < PCNET32_MAX_PHYS; i++) {
59078 -@@ -2252,9 +2252,9 @@ static int pcnet32_open(struct net_devic
59079 +@@ -2158,9 +2158,9 @@ static int pcnet32_open(struct net_devic
59080
59081 #ifdef DO_DXSUFLO
59082 if (lp->dxsuflo) { /* Disable transmit stop on underflow */
59083 @@ -35341,7 +31998,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59084 }
59085 #endif
59086
59087 -@@ -2270,11 +2270,11 @@ static int pcnet32_open(struct net_devic
59088 +@@ -2176,11 +2176,11 @@ static int pcnet32_open(struct net_devic
59089 napi_enable(&lp->napi);
59090
59091 /* Re-initialize the PCNET32, and start it when done. */
59092 @@ -35357,7 +32014,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59093
59094 netif_start_queue(dev);
59095
59096 -@@ -2286,20 +2286,20 @@ static int pcnet32_open(struct net_devic
59097 +@@ -2192,19 +2192,19 @@ static int pcnet32_open(struct net_devic
59098
59099 i = 0;
59100 while (i++ < 100)
59101 @@ -35371,26 +32028,25 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59102 - lp->a.write_csr(ioaddr, CSR0, CSR0_NORMAL);
59103 + lp->a->write_csr(ioaddr, CSR0, CSR0_NORMAL);
59104
59105 - if (netif_msg_ifup(lp))
59106 - printk(KERN_DEBUG
59107 - "%s: pcnet32 open after %d ticks, init block %#x csr0 %4.4x.\n",
59108 - dev->name, i,
59109 - (u32) (lp->init_dma_addr),
59110 -- lp->a.read_csr(ioaddr, CSR0));
59111 -+ lp->a->read_csr(ioaddr, CSR0));
59112 + netif_printk(lp, ifup, KERN_DEBUG, dev,
59113 + "pcnet32 open after %d ticks, init block %#x csr0 %4.4x\n",
59114 + i,
59115 + (u32) (lp->init_dma_addr),
59116 +- lp->a.read_csr(ioaddr, CSR0));
59117 ++ lp->a->read_csr(ioaddr, CSR0));
59118
59119 spin_unlock_irqrestore(&lp->lock, flags);
59120
59121 -@@ -2313,7 +2313,7 @@ static int pcnet32_open(struct net_devic
59122 +@@ -2218,7 +2218,7 @@ err_free_ring:
59123 * Switch back to 16bit mode to avoid problems with dumb
59124 * DOS packet driver after a warm reboot
59125 */
59126 - lp->a.write_bcr(ioaddr, 20, 4);
59127 + lp->a->write_bcr(ioaddr, 20, 4);
59128
59129 - err_free_irq:
59130 + err_free_irq:
59131 spin_unlock_irqrestore(&lp->lock, flags);
59132 -@@ -2420,7 +2420,7 @@ static void pcnet32_restart(struct net_d
59133 +@@ -2323,7 +2323,7 @@ static void pcnet32_restart(struct net_d
59134
59135 /* wait for stop */
59136 for (i = 0; i < 100; i++)
59137 @@ -35398,8 +32054,8 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59138 + if (lp->a->read_csr(ioaddr, CSR0) & CSR0_STOP)
59139 break;
59140
59141 - if (i >= 100 && netif_msg_drv(lp))
59142 -@@ -2433,13 +2433,13 @@ static void pcnet32_restart(struct net_d
59143 + if (i >= 100)
59144 +@@ -2335,13 +2335,13 @@ static void pcnet32_restart(struct net_d
59145 return;
59146
59147 /* ReInit Ring */
59148 @@ -35416,10 +32072,10 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59149 }
59150
59151 static void pcnet32_tx_timeout(struct net_device *dev)
59152 -@@ -2452,8 +2452,8 @@ static void pcnet32_tx_timeout(struct ne
59153 +@@ -2353,8 +2353,8 @@ static void pcnet32_tx_timeout(struct ne
59154 + /* Transmitter timeout, serious problems. */
59155 if (pcnet32_debug & NETIF_MSG_DRV)
59156 - printk(KERN_ERR
59157 - "%s: transmit timed out, status %4.4x, resetting.\n",
59158 + pr_err("%s: transmit timed out, status %4.4x, resetting\n",
59159 - dev->name, lp->a.read_csr(ioaddr, CSR0));
59160 - lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
59161 + dev->name, lp->a->read_csr(ioaddr, CSR0));
59162 @@ -35427,47 +32083,45 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59163 dev->stats.tx_errors++;
59164 if (netif_msg_tx_err(lp)) {
59165 int i;
59166 -@@ -2497,7 +2497,7 @@ static netdev_tx_t pcnet32_start_xmit(st
59167 - if (netif_msg_tx_queued(lp)) {
59168 - printk(KERN_DEBUG
59169 - "%s: pcnet32_start_xmit() called, csr0 %4.4x.\n",
59170 -- dev->name, lp->a.read_csr(ioaddr, CSR0));
59171 -+ dev->name, lp->a->read_csr(ioaddr, CSR0));
59172 - }
59173 +@@ -2397,7 +2397,7 @@ static netdev_tx_t pcnet32_start_xmit(st
59174 +
59175 + netif_printk(lp, tx_queued, KERN_DEBUG, dev,
59176 + "%s() called, csr0 %4.4x\n",
59177 +- __func__, lp->a.read_csr(ioaddr, CSR0));
59178 ++ __func__, lp->a->read_csr(ioaddr, CSR0));
59179
59180 /* Default status -- will not enable Successful-TxDone
59181 -@@ -2528,7 +2528,7 @@ static netdev_tx_t pcnet32_start_xmit(st
59182 + * interrupt when that option is available to us.
59183 +@@ -2427,7 +2427,7 @@ static netdev_tx_t pcnet32_start_xmit(st
59184 dev->stats.tx_bytes += skb->len;
59185
59186 /* Trigger an immediate send poll. */
59187 - lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
59188 + lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
59189
59190 - dev->trans_start = jiffies;
59191 -
59192 -@@ -2555,18 +2555,18 @@ pcnet32_interrupt(int irq, void *dev_id)
59193 + if (lp->tx_ring[(entry + 1) & lp->tx_mod_mask].base != 0) {
59194 + lp->tx_full = 1;
59195 +@@ -2452,16 +2452,16 @@ pcnet32_interrupt(int irq, void *dev_id)
59196
59197 spin_lock(&lp->lock);
59198
59199 - csr0 = lp->a.read_csr(ioaddr, CSR0);
59200 + csr0 = lp->a->read_csr(ioaddr, CSR0);
59201 while ((csr0 & 0x8f00) && --boguscnt >= 0) {
59202 - if (csr0 == 0xffff) {
59203 + if (csr0 == 0xffff)
59204 break; /* PCMCIA remove happened */
59205 - }
59206 /* Acknowledge all of the current interrupt sources ASAP. */
59207 - lp->a.write_csr(ioaddr, CSR0, csr0 & ~0x004f);
59208 + lp->a->write_csr(ioaddr, CSR0, csr0 & ~0x004f);
59209
59210 - if (netif_msg_intr(lp))
59211 - printk(KERN_DEBUG
59212 - "%s: interrupt csr0=%#2.2x new csr=%#2.2x.\n",
59213 -- dev->name, csr0, lp->a.read_csr(ioaddr, CSR0));
59214 -+ dev->name, csr0, lp->a->read_csr(ioaddr, CSR0));
59215 + netif_printk(lp, intr, KERN_DEBUG, dev,
59216 + "interrupt csr0=%#2.2x new csr=%#2.2x\n",
59217 +- csr0, lp->a.read_csr(ioaddr, CSR0));
59218 ++ csr0, lp->a->read_csr(ioaddr, CSR0));
59219
59220 /* Log misc errors. */
59221 if (csr0 & 0x4000)
59222 -@@ -2595,19 +2595,19 @@ pcnet32_interrupt(int irq, void *dev_id)
59223 +@@ -2488,19 +2488,19 @@ pcnet32_interrupt(int irq, void *dev_id)
59224 if (napi_schedule_prep(&lp->napi)) {
59225 u16 val;
59226 /* set interrupt masks */
59227 @@ -35484,25 +32138,24 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59228 + csr0 = lp->a->read_csr(ioaddr, CSR0);
59229 }
59230
59231 - if (netif_msg_intr(lp))
59232 - printk(KERN_DEBUG "%s: exiting interrupt, csr0=%#4.4x.\n",
59233 -- dev->name, lp->a.read_csr(ioaddr, CSR0));
59234 -+ dev->name, lp->a->read_csr(ioaddr, CSR0));
59235 + netif_printk(lp, intr, KERN_DEBUG, dev,
59236 + "exiting interrupt, csr0=%#4.4x\n",
59237 +- lp->a.read_csr(ioaddr, CSR0));
59238 ++ lp->a->read_csr(ioaddr, CSR0));
59239
59240 spin_unlock(&lp->lock);
59241
59242 -@@ -2627,21 +2627,21 @@ static int pcnet32_close(struct net_devi
59243 +@@ -2520,20 +2520,20 @@ static int pcnet32_close(struct net_devi
59244
59245 spin_lock_irqsave(&lp->lock, flags);
59246
59247 - dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
59248 + dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112);
59249
59250 - if (netif_msg_ifdown(lp))
59251 - printk(KERN_DEBUG
59252 - "%s: Shutting down ethercard, status was %2.2x.\n",
59253 -- dev->name, lp->a.read_csr(ioaddr, CSR0));
59254 -+ dev->name, lp->a->read_csr(ioaddr, CSR0));
59255 + netif_printk(lp, ifdown, KERN_DEBUG, dev,
59256 + "Shutting down ethercard, status was %2.2x\n",
59257 +- lp->a.read_csr(ioaddr, CSR0));
59258 ++ lp->a->read_csr(ioaddr, CSR0));
59259
59260 /* We stop the PCNET32 here -- it occasionally polls memory if we don't. */
59261 - lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
59262 @@ -35517,7 +32170,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59263
59264 spin_unlock_irqrestore(&lp->lock, flags);
59265
59266 -@@ -2664,7 +2664,7 @@ static struct net_device_stats *pcnet32_
59267 +@@ -2556,7 +2556,7 @@ static struct net_device_stats *pcnet32_
59268 unsigned long flags;
59269
59270 spin_lock_irqsave(&lp->lock, flags);
59271 @@ -35526,7 +32179,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59272 spin_unlock_irqrestore(&lp->lock, flags);
59273
59274 return &dev->stats;
59275 -@@ -2686,10 +2686,10 @@ static void pcnet32_load_multicast(struc
59276 +@@ -2578,10 +2578,10 @@ static void pcnet32_load_multicast(struc
59277 if (dev->flags & IFF_ALLMULTI) {
59278 ib->filter[0] = cpu_to_le32(~0U);
59279 ib->filter[1] = cpu_to_le32(~0U);
59280 @@ -35541,16 +32194,16 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59281 return;
59282 }
59283 /* clear the multicast filter */
59284 -@@ -2710,7 +2710,7 @@ static void pcnet32_load_multicast(struc
59285 +@@ -2601,7 +2601,7 @@ static void pcnet32_load_multicast(struc
59286 mcast_table[crc >> 4] |= cpu_to_le16(1 << (crc & 0xf));
59287 }
59288 for (i = 0; i < 4; i++)
59289 - lp->a.write_csr(ioaddr, PCNET32_MC_FILTER + i,
59290 + lp->a->write_csr(ioaddr, PCNET32_MC_FILTER + i,
59291 le16_to_cpu(mcast_table[i]));
59292 - return;
59293 }
59294 -@@ -2726,7 +2726,7 @@ static void pcnet32_set_multicast_list(s
59295 +
59296 +@@ -2616,28 +2616,28 @@ static void pcnet32_set_multicast_list(s
59297
59298 spin_lock_irqsave(&lp->lock, flags);
59299 suspended = pcnet32_suspend(dev, &flags, 0);
59300 @@ -35558,8 +32211,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59301 + csr15 = lp->a->read_csr(ioaddr, CSR15);
59302 if (dev->flags & IFF_PROMISC) {
59303 /* Log any net taps. */
59304 - if (netif_msg_hw(lp))
59305 -@@ -2735,21 +2735,21 @@ static void pcnet32_set_multicast_list(s
59306 + netif_info(lp, hw, dev, "Promiscuous mode enabled\n");
59307 lp->init_block->mode =
59308 cpu_to_le16(0x8000 | (lp->options & PCNET32_PORT_PORTSEL) <<
59309 7);
59310 @@ -35586,7 +32238,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59311 pcnet32_restart(dev, CSR0_NORMAL);
59312 netif_wake_queue(dev);
59313 }
59314 -@@ -2767,8 +2767,8 @@ static int mdio_read(struct net_device *
59315 +@@ -2655,8 +2655,8 @@ static int mdio_read(struct net_device *
59316 if (!lp->mii)
59317 return 0;
59318
59319 @@ -35597,7 +32249,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59320
59321 return val_out;
59322 }
59323 -@@ -2782,8 +2782,8 @@ static void mdio_write(struct net_device
59324 +@@ -2670,8 +2670,8 @@ static void mdio_write(struct net_device
59325 if (!lp->mii)
59326 return;
59327
59328 @@ -35608,7 +32260,7 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59329 }
59330
59331 static int pcnet32_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
59332 -@@ -2862,7 +2862,7 @@ static void pcnet32_check_media(struct n
59333 +@@ -2748,7 +2748,7 @@ static void pcnet32_check_media(struct n
59334 curr_link = mii_link_ok(&lp->mii_if);
59335 } else {
59336 ulong ioaddr = dev->base_addr; /* card base I/O address */
59337 @@ -35617,9 +32269,9 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59338 }
59339 if (!curr_link) {
59340 if (prev_link || verbose) {
59341 -@@ -2887,13 +2887,13 @@ static void pcnet32_check_media(struct n
59342 - (ecmd.duplex ==
59343 - DUPLEX_FULL) ? "full" : "half");
59344 +@@ -2771,13 +2771,13 @@ static void pcnet32_check_media(struct n
59345 + (ecmd.duplex == DUPLEX_FULL)
59346 + ? "full" : "half");
59347 }
59348 - bcr9 = lp->a.read_bcr(dev->base_addr, 9);
59349 + bcr9 = lp->a->read_bcr(dev->base_addr, 9);
59350 @@ -35632,11 +32284,74 @@ diff -urNp linux-2.6.32.48/drivers/net/pcnet32.c linux-2.6.32.48/drivers/net/pcn
59351 + lp->a->write_bcr(dev->base_addr, 9, bcr9);
59352 }
59353 } else {
59354 - if (netif_msg_link(lp))
59355 -diff -urNp linux-2.6.32.48/drivers/net/tg3.h linux-2.6.32.48/drivers/net/tg3.h
59356 ---- linux-2.6.32.48/drivers/net/tg3.h 2011-11-12 12:44:29.000000000 -0500
59357 -+++ linux-2.6.32.48/drivers/net/tg3.h 2011-11-12 12:46:45.000000000 -0500
59358 -@@ -95,6 +95,7 @@
59359 + netif_info(lp, link, dev, "link up\n");
59360 +diff -urNp linux-3.0.8/drivers/net/ppp_generic.c linux-3.0.8/drivers/net/ppp_generic.c
59361 +--- linux-3.0.8/drivers/net/ppp_generic.c 2011-07-21 22:17:23.000000000 -0400
59362 ++++ linux-3.0.8/drivers/net/ppp_generic.c 2011-08-23 21:47:55.000000000 -0400
59363 +@@ -987,7 +987,6 @@ ppp_net_ioctl(struct net_device *dev, st
59364 + void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data;
59365 + struct ppp_stats stats;
59366 + struct ppp_comp_stats cstats;
59367 +- char *vers;
59368 +
59369 + switch (cmd) {
59370 + case SIOCGPPPSTATS:
59371 +@@ -1009,8 +1008,7 @@ ppp_net_ioctl(struct net_device *dev, st
59372 + break;
59373 +
59374 + case SIOCGPPPVER:
59375 +- vers = PPP_VERSION;
59376 +- if (copy_to_user(addr, vers, strlen(vers) + 1))
59377 ++ if (copy_to_user(addr, PPP_VERSION, sizeof(PPP_VERSION)))
59378 + break;
59379 + err = 0;
59380 + break;
59381 +diff -urNp linux-3.0.8/drivers/net/r8169.c linux-3.0.8/drivers/net/r8169.c
59382 +--- linux-3.0.8/drivers/net/r8169.c 2011-10-24 08:05:21.000000000 -0400
59383 ++++ linux-3.0.8/drivers/net/r8169.c 2011-08-23 21:47:55.000000000 -0400
59384 +@@ -645,12 +645,12 @@ struct rtl8169_private {
59385 + struct mdio_ops {
59386 + void (*write)(void __iomem *, int, int);
59387 + int (*read)(void __iomem *, int);
59388 +- } mdio_ops;
59389 ++ } __no_const mdio_ops;
59390 +
59391 + struct pll_power_ops {
59392 + void (*down)(struct rtl8169_private *);
59393 + void (*up)(struct rtl8169_private *);
59394 +- } pll_power_ops;
59395 ++ } __no_const pll_power_ops;
59396 +
59397 + int (*set_speed)(struct net_device *, u8 aneg, u16 sp, u8 dpx, u32 adv);
59398 + int (*get_settings)(struct net_device *, struct ethtool_cmd *);
59399 +diff -urNp linux-3.0.8/drivers/net/sis190.c linux-3.0.8/drivers/net/sis190.c
59400 +--- linux-3.0.8/drivers/net/sis190.c 2011-10-24 08:05:21.000000000 -0400
59401 ++++ linux-3.0.8/drivers/net/sis190.c 2011-10-11 10:44:33.000000000 -0400
59402 +@@ -1623,7 +1623,7 @@ static int __devinit sis190_get_mac_addr
59403 + static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev *pdev,
59404 + struct net_device *dev)
59405 + {
59406 +- static const u16 __devinitdata ids[] = { 0x0965, 0x0966, 0x0968 };
59407 ++ static const u16 __devinitconst ids[] = { 0x0965, 0x0966, 0x0968 };
59408 + struct sis190_private *tp = netdev_priv(dev);
59409 + struct pci_dev *isa_bridge;
59410 + u8 reg, tmp8;
59411 +diff -urNp linux-3.0.8/drivers/net/sundance.c linux-3.0.8/drivers/net/sundance.c
59412 +--- linux-3.0.8/drivers/net/sundance.c 2011-07-21 22:17:23.000000000 -0400
59413 ++++ linux-3.0.8/drivers/net/sundance.c 2011-10-11 10:44:33.000000000 -0400
59414 +@@ -218,7 +218,7 @@ enum {
59415 + struct pci_id_info {
59416 + const char *name;
59417 + };
59418 +-static const struct pci_id_info pci_id_tbl[] __devinitdata = {
59419 ++static const struct pci_id_info pci_id_tbl[] __devinitconst = {
59420 + {"D-Link DFE-550TX FAST Ethernet Adapter"},
59421 + {"D-Link DFE-550FX 100Mbps Fiber-optics Adapter"},
59422 + {"D-Link DFE-580TX 4 port Server Adapter"},
59423 +diff -urNp linux-3.0.8/drivers/net/tg3.h linux-3.0.8/drivers/net/tg3.h
59424 +--- linux-3.0.8/drivers/net/tg3.h 2011-07-21 22:17:23.000000000 -0400
59425 ++++ linux-3.0.8/drivers/net/tg3.h 2011-08-23 21:47:55.000000000 -0400
59426 +@@ -134,6 +134,7 @@
59427 #define CHIPREV_ID_5750_A0 0x4000
59428 #define CHIPREV_ID_5750_A1 0x4001
59429 #define CHIPREV_ID_5750_A3 0x4003
59430 @@ -35644,9 +32359,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tg3.h linux-2.6.32.48/drivers/net/tg3.h
59431 #define CHIPREV_ID_5750_C2 0x4202
59432 #define CHIPREV_ID_5752_A0_HW 0x5000
59433 #define CHIPREV_ID_5752_A0 0x6000
59434 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/abyss.c linux-2.6.32.48/drivers/net/tokenring/abyss.c
59435 ---- linux-2.6.32.48/drivers/net/tokenring/abyss.c 2009-12-02 22:51:21.000000000 -0500
59436 -+++ linux-2.6.32.48/drivers/net/tokenring/abyss.c 2011-11-12 12:46:45.000000000 -0500
59437 +diff -urNp linux-3.0.8/drivers/net/tokenring/abyss.c linux-3.0.8/drivers/net/tokenring/abyss.c
59438 +--- linux-3.0.8/drivers/net/tokenring/abyss.c 2011-07-21 22:17:23.000000000 -0400
59439 ++++ linux-3.0.8/drivers/net/tokenring/abyss.c 2011-08-23 21:47:55.000000000 -0400
59440 @@ -451,10 +451,12 @@ static struct pci_driver abyss_driver =
59441
59442 static int __init abyss_init (void)
59443 @@ -35663,10 +32378,10 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/abyss.c linux-2.6.32.48/drivers
59444
59445 return pci_register_driver(&abyss_driver);
59446 }
59447 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/madgemc.c linux-2.6.32.48/drivers/net/tokenring/madgemc.c
59448 ---- linux-2.6.32.48/drivers/net/tokenring/madgemc.c 2009-12-02 22:51:21.000000000 -0500
59449 -+++ linux-2.6.32.48/drivers/net/tokenring/madgemc.c 2011-11-12 12:46:45.000000000 -0500
59450 -@@ -755,9 +755,11 @@ static struct mca_driver madgemc_driver
59451 +diff -urNp linux-3.0.8/drivers/net/tokenring/madgemc.c linux-3.0.8/drivers/net/tokenring/madgemc.c
59452 +--- linux-3.0.8/drivers/net/tokenring/madgemc.c 2011-07-21 22:17:23.000000000 -0400
59453 ++++ linux-3.0.8/drivers/net/tokenring/madgemc.c 2011-08-23 21:47:55.000000000 -0400
59454 +@@ -744,9 +744,11 @@ static struct mca_driver madgemc_driver
59455
59456 static int __init madgemc_init (void)
59457 {
59458 @@ -35681,9 +32396,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/madgemc.c linux-2.6.32.48/drive
59459
59460 return mca_register_driver (&madgemc_driver);
59461 }
59462 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/proteon.c linux-2.6.32.48/drivers/net/tokenring/proteon.c
59463 ---- linux-2.6.32.48/drivers/net/tokenring/proteon.c 2009-12-02 22:51:21.000000000 -0500
59464 -+++ linux-2.6.32.48/drivers/net/tokenring/proteon.c 2011-11-12 12:46:45.000000000 -0500
59465 +diff -urNp linux-3.0.8/drivers/net/tokenring/proteon.c linux-3.0.8/drivers/net/tokenring/proteon.c
59466 +--- linux-3.0.8/drivers/net/tokenring/proteon.c 2011-07-21 22:17:23.000000000 -0400
59467 ++++ linux-3.0.8/drivers/net/tokenring/proteon.c 2011-08-23 21:47:55.000000000 -0400
59468 @@ -353,9 +353,11 @@ static int __init proteon_init(void)
59469 struct platform_device *pdev;
59470 int i, num = 0, err = 0;
59471 @@ -35699,9 +32414,9 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/proteon.c linux-2.6.32.48/drive
59472
59473 err = platform_driver_register(&proteon_driver);
59474 if (err)
59475 -diff -urNp linux-2.6.32.48/drivers/net/tokenring/skisa.c linux-2.6.32.48/drivers/net/tokenring/skisa.c
59476 ---- linux-2.6.32.48/drivers/net/tokenring/skisa.c 2009-12-02 22:51:21.000000000 -0500
59477 -+++ linux-2.6.32.48/drivers/net/tokenring/skisa.c 2011-11-12 12:46:45.000000000 -0500
59478 +diff -urNp linux-3.0.8/drivers/net/tokenring/skisa.c linux-3.0.8/drivers/net/tokenring/skisa.c
59479 +--- linux-3.0.8/drivers/net/tokenring/skisa.c 2011-07-21 22:17:23.000000000 -0400
59480 ++++ linux-3.0.8/drivers/net/tokenring/skisa.c 2011-08-23 21:47:55.000000000 -0400
59481 @@ -363,9 +363,11 @@ static int __init sk_isa_init(void)
59482 struct platform_device *pdev;
59483 int i, num = 0, err = 0;
59484 @@ -35717,10 +32432,10 @@ diff -urNp linux-2.6.32.48/drivers/net/tokenring/skisa.c linux-2.6.32.48/drivers
59485
59486 err = platform_driver_register(&sk_isa_driver);
59487 if (err)
59488 -diff -urNp linux-2.6.32.48/drivers/net/tulip/de2104x.c linux-2.6.32.48/drivers/net/tulip/de2104x.c
59489 ---- linux-2.6.32.48/drivers/net/tulip/de2104x.c 2009-12-02 22:51:21.000000000 -0500
59490 -+++ linux-2.6.32.48/drivers/net/tulip/de2104x.c 2011-11-12 12:46:45.000000000 -0500
59491 -@@ -1785,6 +1785,8 @@ static void __devinit de21041_get_srom_i
59492 +diff -urNp linux-3.0.8/drivers/net/tulip/de2104x.c linux-3.0.8/drivers/net/tulip/de2104x.c
59493 +--- linux-3.0.8/drivers/net/tulip/de2104x.c 2011-07-21 22:17:23.000000000 -0400
59494 ++++ linux-3.0.8/drivers/net/tulip/de2104x.c 2011-08-23 21:48:14.000000000 -0400
59495 +@@ -1794,6 +1794,8 @@ static void __devinit de21041_get_srom_i
59496 struct de_srom_info_leaf *il;
59497 void *bufp;
59498
59499 @@ -35729,10 +32444,10 @@ diff -urNp linux-2.6.32.48/drivers/net/tulip/de2104x.c linux-2.6.32.48/drivers/n
59500 /* download entire eeprom */
59501 for (i = 0; i < DE_EEPROM_WORDS; i++)
59502 ((__le16 *)ee_data)[i] =
59503 -diff -urNp linux-2.6.32.48/drivers/net/tulip/de4x5.c linux-2.6.32.48/drivers/net/tulip/de4x5.c
59504 ---- linux-2.6.32.48/drivers/net/tulip/de4x5.c 2009-12-02 22:51:21.000000000 -0500
59505 -+++ linux-2.6.32.48/drivers/net/tulip/de4x5.c 2011-11-12 12:46:45.000000000 -0500
59506 -@@ -5472,7 +5472,7 @@ de4x5_ioctl(struct net_device *dev, stru
59507 +diff -urNp linux-3.0.8/drivers/net/tulip/de4x5.c linux-3.0.8/drivers/net/tulip/de4x5.c
59508 +--- linux-3.0.8/drivers/net/tulip/de4x5.c 2011-07-21 22:17:23.000000000 -0400
59509 ++++ linux-3.0.8/drivers/net/tulip/de4x5.c 2011-08-23 21:47:55.000000000 -0400
59510 +@@ -5401,7 +5401,7 @@ de4x5_ioctl(struct net_device *dev, stru
59511 for (i=0; i<ETH_ALEN; i++) {
59512 tmp.addr[i] = dev->dev_addr[i];
59513 }
59514 @@ -35741,7 +32456,7 @@ diff -urNp linux-2.6.32.48/drivers/net/tulip/de4x5.c linux-2.6.32.48/drivers/net
59515 break;
59516
59517 case DE4X5_SET_HWADDR: /* Set the hardware address */
59518 -@@ -5512,7 +5512,7 @@ de4x5_ioctl(struct net_device *dev, stru
59519 +@@ -5441,7 +5441,7 @@ de4x5_ioctl(struct net_device *dev, stru
59520 spin_lock_irqsave(&lp->lock, flags);
59521 memcpy(&statbuf, &lp->pktStats, ioc->len);
59522 spin_unlock_irqrestore(&lp->lock, flags);
59523 @@ -35750,9 +32465,33 @@ diff -urNp linux-2.6.32.48/drivers/net/tulip/de4x5.c linux-2.6.32.48/drivers/net
59524 return -EFAULT;
59525 break;
59526 }
59527 -diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb/hso.c
59528 ---- linux-2.6.32.48/drivers/net/usb/hso.c 2011-11-12 12:44:29.000000000 -0500
59529 -+++ linux-2.6.32.48/drivers/net/usb/hso.c 2011-11-12 12:46:45.000000000 -0500
59530 +diff -urNp linux-3.0.8/drivers/net/tulip/eeprom.c linux-3.0.8/drivers/net/tulip/eeprom.c
59531 +--- linux-3.0.8/drivers/net/tulip/eeprom.c 2011-07-21 22:17:23.000000000 -0400
59532 ++++ linux-3.0.8/drivers/net/tulip/eeprom.c 2011-10-11 10:44:33.000000000 -0400
59533 +@@ -81,7 +81,7 @@ static struct eeprom_fixup eeprom_fixups
59534 + {NULL}};
59535 +
59536 +
59537 +-static const char *block_name[] __devinitdata = {
59538 ++static const char *block_name[] __devinitconst = {
59539 + "21140 non-MII",
59540 + "21140 MII PHY",
59541 + "21142 Serial PHY",
59542 +diff -urNp linux-3.0.8/drivers/net/tulip/winbond-840.c linux-3.0.8/drivers/net/tulip/winbond-840.c
59543 +--- linux-3.0.8/drivers/net/tulip/winbond-840.c 2011-07-21 22:17:23.000000000 -0400
59544 ++++ linux-3.0.8/drivers/net/tulip/winbond-840.c 2011-10-11 10:44:33.000000000 -0400
59545 +@@ -236,7 +236,7 @@ struct pci_id_info {
59546 + int drv_flags; /* Driver use, intended as capability flags. */
59547 + };
59548 +
59549 +-static const struct pci_id_info pci_id_tbl[] __devinitdata = {
59550 ++static const struct pci_id_info pci_id_tbl[] __devinitconst = {
59551 + { /* Sometime a Level-One switch card. */
59552 + "Winbond W89c840", CanHaveMII | HasBrokenTx | FDXOnNoMII},
59553 + { "Winbond W89c840", CanHaveMII | HasBrokenTx},
59554 +diff -urNp linux-3.0.8/drivers/net/usb/hso.c linux-3.0.8/drivers/net/usb/hso.c
59555 +--- linux-3.0.8/drivers/net/usb/hso.c 2011-07-21 22:17:23.000000000 -0400
59556 ++++ linux-3.0.8/drivers/net/usb/hso.c 2011-08-23 21:47:55.000000000 -0400
59557 @@ -71,7 +71,7 @@
59558 #include <asm/byteorder.h>
59559 #include <linux/serial_core.h>
59560 @@ -35760,9 +32499,9 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59561 -
59562 +#include <asm/local.h>
59563
59564 - #define DRIVER_VERSION "1.2"
59565 #define MOD_AUTHOR "Option Wireless"
59566 -@@ -258,7 +258,7 @@ struct hso_serial {
59567 + #define MOD_DESCRIPTION "USB High Speed Option driver"
59568 +@@ -257,7 +257,7 @@ struct hso_serial {
59569
59570 /* from usb_serial_port */
59571 struct tty_struct *tty;
59572 @@ -35771,7 +32510,7 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59573 spinlock_t serial_lock;
59574
59575 int (*write_data) (struct hso_serial *serial);
59576 -@@ -1180,7 +1180,7 @@ static void put_rxbuf_data_and_resubmit_
59577 +@@ -1190,7 +1190,7 @@ static void put_rxbuf_data_and_resubmit_
59578 struct urb *urb;
59579
59580 urb = serial->rx_urb[0];
59581 @@ -35780,7 +32519,7 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59582 count = put_rxbuf_data(urb, serial);
59583 if (count == -1)
59584 return;
59585 -@@ -1216,7 +1216,7 @@ static void hso_std_serial_read_bulk_cal
59586 +@@ -1226,7 +1226,7 @@ static void hso_std_serial_read_bulk_cal
59587 DUMP1(urb->transfer_buffer, urb->actual_length);
59588
59589 /* Anyone listening? */
59590 @@ -35796,10 +32535,10 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59591 - serial->open_count++;
59592 - if (serial->open_count == 1) {
59593 + if (local_inc_return(&serial->open_count) == 1) {
59594 - tty->low_latency = 1;
59595 serial->rx_state = RX_IDLE;
59596 /* Force default termio settings */
59597 -@@ -1325,7 +1324,7 @@ static int hso_serial_open(struct tty_st
59598 + _hso_serial_set_termios(tty, NULL);
59599 +@@ -1324,7 +1323,7 @@ static int hso_serial_open(struct tty_st
59600 result = hso_start_serial_device(serial->parent, GFP_KERNEL);
59601 if (result) {
59602 hso_stop_serial_device(serial->parent);
59603 @@ -35808,7 +32547,7 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59604 kref_put(&serial->parent->ref, hso_serial_ref_free);
59605 }
59606 } else {
59607 -@@ -1362,10 +1361,10 @@ static void hso_serial_close(struct tty_
59608 +@@ -1361,10 +1360,10 @@ static void hso_serial_close(struct tty_
59609
59610 /* reset the rts and dtr */
59611 /* do the actual close */
59612 @@ -35822,7 +32561,7 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59613 spin_lock_irq(&serial->serial_lock);
59614 if (serial->tty == tty) {
59615 serial->tty->driver_data = NULL;
59616 -@@ -1447,7 +1446,7 @@ static void hso_serial_set_termios(struc
59617 +@@ -1446,7 +1445,7 @@ static void hso_serial_set_termios(struc
59618
59619 /* the actual setup */
59620 spin_lock_irqsave(&serial->serial_lock, flags);
59621 @@ -35831,7 +32570,16 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59622 _hso_serial_set_termios(tty, old);
59623 else
59624 tty->termios = old;
59625 -@@ -3097,7 +3096,7 @@ static int hso_resume(struct usb_interfa
59626 +@@ -1905,7 +1904,7 @@ static void intr_callback(struct urb *ur
59627 + D1("Pending read interrupt on port %d\n", i);
59628 + spin_lock(&serial->serial_lock);
59629 + if (serial->rx_state == RX_IDLE &&
59630 +- serial->open_count > 0) {
59631 ++ local_read(&serial->open_count) > 0) {
59632 + /* Setup and send a ctrl req read on
59633 + * port i */
59634 + if (!serial->rx_urb_filled[0]) {
59635 +@@ -3098,7 +3097,7 @@ static int hso_resume(struct usb_interfa
59636 /* Start all serial ports */
59637 for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
59638 if (serial_table[i] && (serial_table[i]->interface == iface)) {
59639 @@ -35840,10 +32588,23 @@ diff -urNp linux-2.6.32.48/drivers/net/usb/hso.c linux-2.6.32.48/drivers/net/usb
59640 result =
59641 hso_start_serial_device(serial_table[i], GFP_NOIO);
59642 hso_kick_transmit(dev2ser(serial_table[i]));
59643 -diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-config.h linux-2.6.32.48/drivers/net/vxge/vxge-config.h
59644 ---- linux-2.6.32.48/drivers/net/vxge/vxge-config.h 2009-12-02 22:51:21.000000000 -0500
59645 -+++ linux-2.6.32.48/drivers/net/vxge/vxge-config.h 2011-11-12 12:46:45.000000000 -0500
59646 -@@ -474,7 +474,7 @@ struct vxge_hw_uld_cbs {
59647 +diff -urNp linux-3.0.8/drivers/net/vmxnet3/vmxnet3_ethtool.c linux-3.0.8/drivers/net/vmxnet3/vmxnet3_ethtool.c
59648 +--- linux-3.0.8/drivers/net/vmxnet3/vmxnet3_ethtool.c 2011-07-21 22:17:23.000000000 -0400
59649 ++++ linux-3.0.8/drivers/net/vmxnet3/vmxnet3_ethtool.c 2011-08-23 21:47:55.000000000 -0400
59650 +@@ -594,8 +594,7 @@ vmxnet3_set_rss_indir(struct net_device
59651 + * Return with error code if any of the queue indices
59652 + * is out of range
59653 + */
59654 +- if (p->ring_index[i] < 0 ||
59655 +- p->ring_index[i] >= adapter->num_rx_queues)
59656 ++ if (p->ring_index[i] >= adapter->num_rx_queues)
59657 + return -EINVAL;
59658 + }
59659 +
59660 +diff -urNp linux-3.0.8/drivers/net/vxge/vxge-config.h linux-3.0.8/drivers/net/vxge/vxge-config.h
59661 +--- linux-3.0.8/drivers/net/vxge/vxge-config.h 2011-07-21 22:17:23.000000000 -0400
59662 ++++ linux-3.0.8/drivers/net/vxge/vxge-config.h 2011-08-23 21:47:55.000000000 -0400
59663 +@@ -512,7 +512,7 @@ struct vxge_hw_uld_cbs {
59664 void (*link_down)(struct __vxge_hw_device *devh);
59665 void (*crit_err)(struct __vxge_hw_device *devh,
59666 enum vxge_hw_event type, u64 ext_data);
59667 @@ -35852,10 +32613,10 @@ diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-config.h linux-2.6.32.48/driver
59668
59669 /*
59670 * struct __vxge_hw_blockpool_entry - Block private data structure
59671 -diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-main.c linux-2.6.32.48/drivers/net/vxge/vxge-main.c
59672 ---- linux-2.6.32.48/drivers/net/vxge/vxge-main.c 2009-12-02 22:51:21.000000000 -0500
59673 -+++ linux-2.6.32.48/drivers/net/vxge/vxge-main.c 2011-11-12 12:46:45.000000000 -0500
59674 -@@ -93,6 +93,8 @@ static inline void VXGE_COMPLETE_VPATH_T
59675 +diff -urNp linux-3.0.8/drivers/net/vxge/vxge-main.c linux-3.0.8/drivers/net/vxge/vxge-main.c
59676 +--- linux-3.0.8/drivers/net/vxge/vxge-main.c 2011-07-21 22:17:23.000000000 -0400
59677 ++++ linux-3.0.8/drivers/net/vxge/vxge-main.c 2011-08-23 21:48:14.000000000 -0400
59678 +@@ -98,6 +98,8 @@ static inline void VXGE_COMPLETE_VPATH_T
59679 struct sk_buff *completed[NR_SKB_COMPLETED];
59680 int more;
59681
59682 @@ -35864,7 +32625,7 @@ diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-main.c linux-2.6.32.48/drivers/
59683 do {
59684 more = 0;
59685 skb_ptr = completed;
59686 -@@ -1779,6 +1781,8 @@ static enum vxge_hw_status vxge_rth_conf
59687 +@@ -1920,6 +1922,8 @@ static enum vxge_hw_status vxge_rth_conf
59688 u8 mtable[256] = {0}; /* CPU to vpath mapping */
59689 int index;
59690
59691 @@ -35873,22 +32634,22 @@ diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-main.c linux-2.6.32.48/drivers/
59692 /*
59693 * Filling
59694 * - itable with bucket numbers
59695 -diff -urNp linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h
59696 ---- linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h 2009-12-02 22:51:21.000000000 -0500
59697 -+++ linux-2.6.32.48/drivers/net/vxge/vxge-traffic.h 2011-11-12 12:46:45.000000000 -0500
59698 -@@ -2123,7 +2123,7 @@ struct vxge_hw_mempool_cbs {
59699 +diff -urNp linux-3.0.8/drivers/net/vxge/vxge-traffic.h linux-3.0.8/drivers/net/vxge/vxge-traffic.h
59700 +--- linux-3.0.8/drivers/net/vxge/vxge-traffic.h 2011-07-21 22:17:23.000000000 -0400
59701 ++++ linux-3.0.8/drivers/net/vxge/vxge-traffic.h 2011-08-23 21:47:55.000000000 -0400
59702 +@@ -2088,7 +2088,7 @@ struct vxge_hw_mempool_cbs {
59703 struct vxge_hw_mempool_dma *dma_object,
59704 u32 index,
59705 u32 is_last);
59706 -};
59707 +} __no_const;
59708
59709 - void
59710 - __vxge_hw_mempool_destroy(
59711 -diff -urNp linux-2.6.32.48/drivers/net/wan/cycx_x25.c linux-2.6.32.48/drivers/net/wan/cycx_x25.c
59712 ---- linux-2.6.32.48/drivers/net/wan/cycx_x25.c 2009-12-02 22:51:21.000000000 -0500
59713 -+++ linux-2.6.32.48/drivers/net/wan/cycx_x25.c 2011-11-12 12:46:45.000000000 -0500
59714 -@@ -1017,6 +1017,8 @@ static void hex_dump(char *msg, unsigned
59715 + #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath) \
59716 + ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next)
59717 +diff -urNp linux-3.0.8/drivers/net/wan/cycx_x25.c linux-3.0.8/drivers/net/wan/cycx_x25.c
59718 +--- linux-3.0.8/drivers/net/wan/cycx_x25.c 2011-07-21 22:17:23.000000000 -0400
59719 ++++ linux-3.0.8/drivers/net/wan/cycx_x25.c 2011-08-23 21:48:14.000000000 -0400
59720 +@@ -1018,6 +1018,8 @@ static void hex_dump(char *msg, unsigned
59721 unsigned char hex[1024],
59722 * phex = hex;
59723
59724 @@ -35897,9 +32658,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wan/cycx_x25.c linux-2.6.32.48/drivers/ne
59725 if (len >= (sizeof(hex) / 2))
59726 len = (sizeof(hex) / 2) - 1;
59727
59728 -diff -urNp linux-2.6.32.48/drivers/net/wan/hdlc_x25.c linux-2.6.32.48/drivers/net/wan/hdlc_x25.c
59729 ---- linux-2.6.32.48/drivers/net/wan/hdlc_x25.c 2009-12-02 22:51:21.000000000 -0500
59730 -+++ linux-2.6.32.48/drivers/net/wan/hdlc_x25.c 2011-11-12 12:46:45.000000000 -0500
59731 +diff -urNp linux-3.0.8/drivers/net/wan/hdlc_x25.c linux-3.0.8/drivers/net/wan/hdlc_x25.c
59732 +--- linux-3.0.8/drivers/net/wan/hdlc_x25.c 2011-07-21 22:17:23.000000000 -0400
59733 ++++ linux-3.0.8/drivers/net/wan/hdlc_x25.c 2011-08-23 21:47:55.000000000 -0400
59734 @@ -136,16 +136,16 @@ static netdev_tx_t x25_xmit(struct sk_bu
59735
59736 static int x25_open(struct net_device *dev)
59737 @@ -35925,10 +32686,10 @@ diff -urNp linux-2.6.32.48/drivers/net/wan/hdlc_x25.c linux-2.6.32.48/drivers/ne
59738 result = lapb_register(dev, &cb);
59739 if (result != LAPB_OK)
59740 return result;
59741 -diff -urNp linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c
59742 ---- linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c 2009-12-02 22:51:21.000000000 -0500
59743 -+++ linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c 2011-11-12 12:46:45.000000000 -0500
59744 -@@ -263,6 +263,8 @@ ssize_t i2400mu_bus_bm_wait_for_ack(stru
59745 +diff -urNp linux-3.0.8/drivers/net/wimax/i2400m/usb-fw.c linux-3.0.8/drivers/net/wimax/i2400m/usb-fw.c
59746 +--- linux-3.0.8/drivers/net/wimax/i2400m/usb-fw.c 2011-07-21 22:17:23.000000000 -0400
59747 ++++ linux-3.0.8/drivers/net/wimax/i2400m/usb-fw.c 2011-08-23 21:48:14.000000000 -0400
59748 +@@ -287,6 +287,8 @@ ssize_t i2400mu_bus_bm_wait_for_ack(stru
59749 int do_autopm = 1;
59750 DECLARE_COMPLETION_ONSTACK(notif_completion);
59751
59752 @@ -35937,9 +32698,9 @@ diff -urNp linux-2.6.32.48/drivers/net/wimax/i2400m/usb-fw.c linux-2.6.32.48/dri
59753 d_fnstart(8, dev, "(i2400m %p ack %p size %zu)\n",
59754 i2400m, ack, ack_size);
59755 BUG_ON(_ack == i2400m->bm_ack_buf);
59756 -diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/net/wireless/airo.c
59757 ---- linux-2.6.32.48/drivers/net/wireless/airo.c 2011-11-12 12:44:29.000000000 -0500
59758 -+++ linux-2.6.32.48/drivers/net/wireless/airo.c 2011-11-12 12:46:45.000000000 -0500
59759 +diff -urNp linux-3.0.8/drivers/net/wireless/airo.c linux-3.0.8/drivers/net/wireless/airo.c
59760 +--- linux-3.0.8/drivers/net/wireless/airo.c 2011-10-24 08:05:21.000000000 -0400
59761 ++++ linux-3.0.8/drivers/net/wireless/airo.c 2011-08-23 21:48:14.000000000 -0400
59762 @@ -3003,6 +3003,8 @@ static void airo_process_scan_results (s
59763 BSSListElement * loop_net;
59764 BSSListElement * tmp_net;
59765 @@ -35949,7 +32710,7 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/n
59766 /* Blow away current list of scan results */
59767 list_for_each_entry_safe (loop_net, tmp_net, &ai->network_list, list) {
59768 list_move_tail (&loop_net->list, &ai->network_free_list);
59769 -@@ -3783,6 +3785,8 @@ static u16 setup_card(struct airo_info *
59770 +@@ -3794,6 +3796,8 @@ static u16 setup_card(struct airo_info *
59771 WepKeyRid wkr;
59772 int rc;
59773
59774 @@ -35958,7 +32719,7 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/n
59775 memset( &mySsid, 0, sizeof( mySsid ) );
59776 kfree (ai->flash);
59777 ai->flash = NULL;
59778 -@@ -4758,6 +4762,8 @@ static int proc_stats_rid_open( struct i
59779 +@@ -4753,6 +4757,8 @@ static int proc_stats_rid_open( struct i
59780 __le32 *vals = stats.vals;
59781 int len;
59782
59783 @@ -35966,8 +32727,8 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/n
59784 +
59785 if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
59786 return -ENOMEM;
59787 - data = (struct proc_data *)file->private_data;
59788 -@@ -5487,6 +5493,8 @@ static int proc_BSSList_open( struct ino
59789 + data = file->private_data;
59790 +@@ -5476,6 +5482,8 @@ static int proc_BSSList_open( struct ino
59791 /* If doLoseSync is not 1, we won't do a Lose Sync */
59792 int doLoseSync = -1;
59793
59794 @@ -35975,8 +32736,8 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/n
59795 +
59796 if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
59797 return -ENOMEM;
59798 - data = (struct proc_data *)file->private_data;
59799 -@@ -7193,6 +7201,8 @@ static int airo_get_aplist(struct net_de
59800 + data = file->private_data;
59801 +@@ -7181,6 +7189,8 @@ static int airo_get_aplist(struct net_de
59802 int i;
59803 int loseSync = capable(CAP_NET_ADMIN) ? 1: -1;
59804
59805 @@ -35985,7 +32746,7 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/n
59806 qual = kmalloc(IW_MAX_AP * sizeof(*qual), GFP_KERNEL);
59807 if (!qual)
59808 return -ENOMEM;
59809 -@@ -7753,6 +7763,8 @@ static void airo_read_wireless_stats(str
59810 +@@ -7741,6 +7751,8 @@ static void airo_read_wireless_stats(str
59811 CapabilityRid cap_rid;
59812 __le32 *vals = stats_rid.vals;
59813
59814 @@ -35994,10 +32755,10 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/airo.c linux-2.6.32.48/drivers/n
59815 /* Get stats out of the card */
59816 clear_bit(JOB_WSTATS, &local->jobs);
59817 if (local->power.event) {
59818 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c
59819 ---- linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c 2009-12-02 22:51:21.000000000 -0500
59820 -+++ linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c 2011-11-12 12:46:45.000000000 -0500
59821 -@@ -205,6 +205,8 @@ static ssize_t read_file_beacon(struct f
59822 +diff -urNp linux-3.0.8/drivers/net/wireless/ath/ath5k/debug.c linux-3.0.8/drivers/net/wireless/ath/ath5k/debug.c
59823 +--- linux-3.0.8/drivers/net/wireless/ath/ath5k/debug.c 2011-07-21 22:17:23.000000000 -0400
59824 ++++ linux-3.0.8/drivers/net/wireless/ath/ath5k/debug.c 2011-08-23 21:48:14.000000000 -0400
59825 +@@ -204,6 +204,8 @@ static ssize_t read_file_beacon(struct f
59826 unsigned int v;
59827 u64 tsf;
59828
59829 @@ -36006,7 +32767,7 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c linux-2.6.32.4
59830 v = ath5k_hw_reg_read(sc->ah, AR5K_BEACON);
59831 len += snprintf(buf+len, sizeof(buf)-len,
59832 "%-24s0x%08x\tintval: %d\tTIM: 0x%x\n",
59833 -@@ -318,6 +320,8 @@ static ssize_t read_file_debug(struct fi
59834 +@@ -323,6 +325,8 @@ static ssize_t read_file_debug(struct fi
59835 unsigned int len = 0;
59836 unsigned int i;
59837
59838 @@ -36015,55 +32776,198 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath5k/debug.c linux-2.6.32.4
59839 len += snprintf(buf+len, sizeof(buf)-len,
59840 "DEBUG LEVEL: 0x%08x\n\n", sc->debug.level);
59841
59842 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c
59843 ---- linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c 2009-12-02 22:51:21.000000000 -0500
59844 -+++ linux-2.6.32.48/drivers/net/wireless/ath/ath9k/debug.c 2011-11-12 12:46:45.000000000 -0500
59845 -@@ -220,6 +220,8 @@ static ssize_t read_file_interrupt(struc
59846 - char buf[512];
59847 +@@ -384,6 +388,8 @@ static ssize_t read_file_antenna(struct
59848 + unsigned int i;
59849 + unsigned int v;
59850 +
59851 ++ pax_track_stack();
59852 ++
59853 + len += snprintf(buf+len, sizeof(buf)-len, "antenna mode\t%d\n",
59854 + sc->ah->ah_ant_mode);
59855 + len += snprintf(buf+len, sizeof(buf)-len, "default antenna\t%d\n",
59856 +@@ -494,6 +500,8 @@ static ssize_t read_file_misc(struct fil
59857 unsigned int len = 0;
59858 + u32 filt = ath5k_hw_get_rx_filter(sc->ah);
59859
59860 + pax_track_stack();
59861 +
59862 - len += snprintf(buf + len, sizeof(buf) - len,
59863 - "%8s: %10u\n", "RX", sc->debug.stats.istats.rxok);
59864 - len += snprintf(buf + len, sizeof(buf) - len,
59865 -@@ -360,6 +362,8 @@ static ssize_t read_file_wiphy(struct fi
59866 + len += snprintf(buf+len, sizeof(buf)-len, "bssid-mask: %pM\n",
59867 + sc->bssidmask);
59868 + len += snprintf(buf+len, sizeof(buf)-len, "filter-flags: 0x%x ",
59869 +@@ -550,6 +558,8 @@ static ssize_t read_file_frameerrors(str
59870 + unsigned int len = 0;
59871 int i;
59872 +
59873 ++ pax_track_stack();
59874 ++
59875 + len += snprintf(buf+len, sizeof(buf)-len,
59876 + "RX\n---------------------\n");
59877 + len += snprintf(buf+len, sizeof(buf)-len, "CRC\t%u\t(%u%%)\n",
59878 +@@ -667,6 +677,8 @@ static ssize_t read_file_ani(struct file
59879 + char buf[700];
59880 + unsigned int len = 0;
59881 +
59882 ++ pax_track_stack();
59883 ++
59884 + len += snprintf(buf+len, sizeof(buf)-len,
59885 + "HW has PHY error counters:\t%s\n",
59886 + sc->ah->ah_capabilities.cap_has_phyerr_counters ?
59887 +@@ -827,6 +839,8 @@ static ssize_t read_file_queue(struct fi
59888 + struct ath5k_buf *bf, *bf0;
59889 + int i, n;
59890 +
59891 ++ pax_track_stack();
59892 ++
59893 + len += snprintf(buf+len, sizeof(buf)-len,
59894 + "available txbuffers: %d\n", sc->txbuf_len);
59895 +
59896 +diff -urNp linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_calib.c linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_calib.c
59897 +--- linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_calib.c 2011-07-21 22:17:23.000000000 -0400
59898 ++++ linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_calib.c 2011-08-23 21:48:14.000000000 -0400
59899 +@@ -757,6 +757,8 @@ static void ar9003_hw_tx_iq_cal_post_pro
59900 + int i, im, j;
59901 + int nmeasurement;
59902 +
59903 ++ pax_track_stack();
59904 ++
59905 + for (i = 0; i < AR9300_MAX_CHAINS; i++) {
59906 + if (ah->txchainmask & (1 << i))
59907 + num_chains++;
59908 +diff -urNp linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_paprd.c linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
59909 +--- linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 2011-07-21 22:17:23.000000000 -0400
59910 ++++ linux-3.0.8/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 2011-08-23 21:48:14.000000000 -0400
59911 +@@ -356,6 +356,8 @@ static bool create_pa_curve(u32 *data_L,
59912 + int theta_low_bin = 0;
59913 + int i;
59914 +
59915 ++ pax_track_stack();
59916 ++
59917 + /* disregard any bin that contains <= 16 samples */
59918 + thresh_accum_cnt = 16;
59919 + scale_factor = 5;
59920 +diff -urNp linux-3.0.8/drivers/net/wireless/ath/ath9k/debug.c linux-3.0.8/drivers/net/wireless/ath/ath9k/debug.c
59921 +--- linux-3.0.8/drivers/net/wireless/ath/ath9k/debug.c 2011-07-21 22:17:23.000000000 -0400
59922 ++++ linux-3.0.8/drivers/net/wireless/ath/ath9k/debug.c 2011-08-23 21:48:14.000000000 -0400
59923 +@@ -337,6 +337,8 @@ static ssize_t read_file_interrupt(struc
59924 + char buf[512];
59925 + unsigned int len = 0;
59926 +
59927 ++ pax_track_stack();
59928 ++
59929 + if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
59930 + len += snprintf(buf + len, sizeof(buf) - len,
59931 + "%8s: %10u\n", "RXLP", sc->debug.stats.istats.rxlp);
59932 +@@ -427,6 +429,8 @@ static ssize_t read_file_wiphy(struct fi
59933 u8 addr[ETH_ALEN];
59934 + u32 tmp;
59935 +
59936 ++ pax_track_stack();
59937 ++
59938 + len += snprintf(buf + len, sizeof(buf) - len,
59939 + "%s (chan=%d center-freq: %d MHz channel-type: %d (%s))\n",
59940 + wiphy_name(sc->hw->wiphy),
59941 +diff -urNp linux-3.0.8/drivers/net/wireless/ath/ath9k/htc_drv_debug.c linux-3.0.8/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
59942 +--- linux-3.0.8/drivers/net/wireless/ath/ath9k/htc_drv_debug.c 2011-07-21 22:17:23.000000000 -0400
59943 ++++ linux-3.0.8/drivers/net/wireless/ath/ath9k/htc_drv_debug.c 2011-08-23 21:48:14.000000000 -0400
59944 +@@ -31,6 +31,8 @@ static ssize_t read_file_tgt_int_stats(s
59945 + unsigned int len = 0;
59946 + int ret = 0;
59947 +
59948 ++ pax_track_stack();
59949 ++
59950 + memset(&cmd_rsp, 0, sizeof(cmd_rsp));
59951 +
59952 + ath9k_htc_ps_wakeup(priv);
59953 +@@ -89,6 +91,8 @@ static ssize_t read_file_tgt_tx_stats(st
59954 + unsigned int len = 0;
59955 + int ret = 0;
59956 +
59957 ++ pax_track_stack();
59958 ++
59959 + memset(&cmd_rsp, 0, sizeof(cmd_rsp));
59960 +
59961 + ath9k_htc_ps_wakeup(priv);
59962 +@@ -159,6 +163,8 @@ static ssize_t read_file_tgt_rx_stats(st
59963 + unsigned int len = 0;
59964 + int ret = 0;
59965 +
59966 ++ pax_track_stack();
59967 ++
59968 + memset(&cmd_rsp, 0, sizeof(cmd_rsp));
59969 +
59970 + ath9k_htc_ps_wakeup(priv);
59971 +@@ -203,6 +209,8 @@ static ssize_t read_file_xmit(struct fil
59972 + char buf[512];
59973 + unsigned int len = 0;
59974
59975 + pax_track_stack();
59976 +
59977 len += snprintf(buf + len, sizeof(buf) - len,
59978 - "primary: %s (%s chan=%d ht=%d)\n",
59979 - wiphy_name(sc->pri_wiphy->hw->wiphy),
59980 -diff -urNp linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c
59981 ---- linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c 2009-12-02 22:51:21.000000000 -0500
59982 -+++ linux-2.6.32.48/drivers/net/wireless/b43/debugfs.c 2011-11-12 12:46:45.000000000 -0500
59983 -@@ -43,7 +43,7 @@ static struct dentry *rootdir;
59984 - struct b43_debugfs_fops {
59985 - ssize_t (*read)(struct b43_wldev *dev, char *buf, size_t bufsize);
59986 - int (*write)(struct b43_wldev *dev, const char *buf, size_t count);
59987 -- struct file_operations fops;
59988 -+ const struct file_operations fops;
59989 - /* Offset of struct b43_dfs_file in struct b43_dfsentry */
59990 - size_t file_struct_offset;
59991 + "%20s : %10u\n", "Buffers queued",
59992 + priv->debug.tx_stats.buf_queued);
59993 +@@ -376,6 +384,8 @@ static ssize_t read_file_slot(struct fil
59994 + char buf[512];
59995 + unsigned int len = 0;
59996 +
59997 ++ pax_track_stack();
59998 ++
59999 + spin_lock_bh(&priv->tx.tx_lock);
60000 +
60001 + len += snprintf(buf + len, sizeof(buf) - len, "TX slot bitmap : ");
60002 +@@ -411,6 +421,8 @@ static ssize_t read_file_queue(struct fi
60003 + char buf[512];
60004 + unsigned int len = 0;
60005 +
60006 ++ pax_track_stack();
60007 ++
60008 + len += snprintf(buf + len, sizeof(buf) - len, "%20s : %10u\n",
60009 + "Mgmt endpoint", skb_queue_len(&priv->tx.mgmt_ep_queue));
60010 +
60011 +diff -urNp linux-3.0.8/drivers/net/wireless/ath/ath9k/hw.h linux-3.0.8/drivers/net/wireless/ath/ath9k/hw.h
60012 +--- linux-3.0.8/drivers/net/wireless/ath/ath9k/hw.h 2011-10-24 08:05:21.000000000 -0400
60013 ++++ linux-3.0.8/drivers/net/wireless/ath/ath9k/hw.h 2011-08-23 21:47:55.000000000 -0400
60014 +@@ -585,7 +585,7 @@ struct ath_hw_private_ops {
60015 +
60016 + /* ANI */
60017 + void (*ani_cache_ini_regs)(struct ath_hw *ah);
60018 +-};
60019 ++} __no_const;
60020 +
60021 + /**
60022 + * struct ath_hw_ops - callbacks used by hardware code and driver code
60023 +@@ -637,7 +637,7 @@ struct ath_hw_ops {
60024 + void (*antdiv_comb_conf_set)(struct ath_hw *ah,
60025 + struct ath_hw_antcomb_conf *antconf);
60026 +
60027 +-};
60028 ++} __no_const;
60029 +
60030 + struct ath_nf_limits {
60031 + s16 max;
60032 +@@ -650,7 +650,7 @@ struct ath_nf_limits {
60033 + #define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
60034 +
60035 + struct ath_hw {
60036 +- struct ath_ops reg_ops;
60037 ++ ath_ops_no_const reg_ops;
60038 +
60039 + struct ieee80211_hw *hw;
60040 + struct ath_common common;
60041 +diff -urNp linux-3.0.8/drivers/net/wireless/ath/ath.h linux-3.0.8/drivers/net/wireless/ath/ath.h
60042 +--- linux-3.0.8/drivers/net/wireless/ath/ath.h 2011-07-21 22:17:23.000000000 -0400
60043 ++++ linux-3.0.8/drivers/net/wireless/ath/ath.h 2011-08-23 21:47:55.000000000 -0400
60044 +@@ -121,6 +121,7 @@ struct ath_ops {
60045 + void (*write_flush) (void *);
60046 + u32 (*rmw)(void *, u32 reg_offset, u32 set, u32 clr);
60047 };
60048 -diff -urNp linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c
60049 ---- linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c 2009-12-02 22:51:21.000000000 -0500
60050 -+++ linux-2.6.32.48/drivers/net/wireless/b43legacy/debugfs.c 2011-11-12 12:46:45.000000000 -0500
60051 -@@ -44,7 +44,7 @@ static struct dentry *rootdir;
60052 - struct b43legacy_debugfs_fops {
60053 - ssize_t (*read)(struct b43legacy_wldev *dev, char *buf, size_t bufsize);
60054 - int (*write)(struct b43legacy_wldev *dev, const char *buf, size_t count);
60055 -- struct file_operations fops;
60056 -+ const struct file_operations fops;
60057 - /* Offset of struct b43legacy_dfs_file in struct b43legacy_dfsentry */
60058 - size_t file_struct_offset;
60059 - /* Take wl->irq_lock before calling read/write? */
60060 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c
60061 ---- linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-12 12:44:29.000000000 -0500
60062 -+++ linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c 2011-11-12 12:46:45.000000000 -0500
60063 -@@ -2014,6 +2014,8 @@ static int ipw2100_set_essid(struct ipw2
60064 ++typedef struct ath_ops __no_const ath_ops_no_const;
60065 +
60066 + struct ath_common;
60067 + struct ath_bus_ops;
60068 +diff -urNp linux-3.0.8/drivers/net/wireless/ipw2x00/ipw2100.c linux-3.0.8/drivers/net/wireless/ipw2x00/ipw2100.c
60069 +--- linux-3.0.8/drivers/net/wireless/ipw2x00/ipw2100.c 2011-07-21 22:17:23.000000000 -0400
60070 ++++ linux-3.0.8/drivers/net/wireless/ipw2x00/ipw2100.c 2011-08-23 21:48:14.000000000 -0400
60071 +@@ -2100,6 +2100,8 @@ static int ipw2100_set_essid(struct ipw2
60072 int err;
60073 DECLARE_SSID_BUF(ssid);
60074
60075 @@ -36072,7 +32976,7 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c linux-2.6.32.4
60076 IPW_DEBUG_HC("SSID: '%s'\n", print_ssid(ssid, essid, ssid_len));
60077
60078 if (ssid_len)
60079 -@@ -5380,6 +5382,8 @@ static int ipw2100_set_key(struct ipw210
60080 +@@ -5449,6 +5451,8 @@ static int ipw2100_set_key(struct ipw210
60081 struct ipw2100_wep_key *wep_key = (void *)cmd.host_command_parameters;
60082 int err;
60083
60084 @@ -36081,10 +32985,10 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/ipw2100.c linux-2.6.32.4
60085 IPW_DEBUG_HC("WEP_KEY_INFO: index = %d, len = %d/%d\n",
60086 idx, keylen, len);
60087
60088 -diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c
60089 ---- linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c 2009-12-02 22:51:21.000000000 -0500
60090 -+++ linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-11-12 12:46:45.000000000 -0500
60091 -@@ -1566,6 +1566,8 @@ static void libipw_process_probe_respons
60092 +diff -urNp linux-3.0.8/drivers/net/wireless/ipw2x00/libipw_rx.c linux-3.0.8/drivers/net/wireless/ipw2x00/libipw_rx.c
60093 +--- linux-3.0.8/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-07-21 22:17:23.000000000 -0400
60094 ++++ linux-3.0.8/drivers/net/wireless/ipw2x00/libipw_rx.c 2011-08-23 21:48:14.000000000 -0400
60095 +@@ -1565,6 +1565,8 @@ static void libipw_process_probe_respons
60096 unsigned long flags;
60097 DECLARE_SSID_BUF(ssid);
60098
60099 @@ -36093,22 +32997,10 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/ipw2x00/libipw_rx.c linux-2.6.32
60100 LIBIPW_DEBUG_SCAN("'%s' (%pM"
60101 "): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\n",
60102 print_ssid(ssid, info_element->data, info_element->len),
60103 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c
60104 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c 2009-12-02 22:51:21.000000000 -0500
60105 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-1000.c 2011-11-12 12:46:45.000000000 -0500
60106 -@@ -137,7 +137,7 @@ static struct iwl_lib_ops iwl1000_lib =
60107 - },
60108 - };
60109 -
60110 --static struct iwl_ops iwl1000_ops = {
60111 -+static const struct iwl_ops iwl1000_ops = {
60112 - .ucode = &iwl5000_ucode,
60113 - .lib = &iwl1000_lib,
60114 - .hcmd = &iwl5000_hcmd,
60115 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c
60116 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-11-12 12:44:29.000000000 -0500
60117 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-11-12 12:46:45.000000000 -0500
60118 -@@ -3927,7 +3927,9 @@ static int iwl3945_pci_probe(struct pci_
60119 +diff -urNp linux-3.0.8/drivers/net/wireless/iwlegacy/iwl3945-base.c linux-3.0.8/drivers/net/wireless/iwlegacy/iwl3945-base.c
60120 +--- linux-3.0.8/drivers/net/wireless/iwlegacy/iwl3945-base.c 2011-10-24 08:05:30.000000000 -0400
60121 ++++ linux-3.0.8/drivers/net/wireless/iwlegacy/iwl3945-base.c 2011-10-16 21:55:27.000000000 -0400
60122 +@@ -3962,7 +3962,9 @@ static int iwl3945_pci_probe(struct pci_
60123 */
60124 if (iwl3945_mod_params.disable_hw_scan) {
60125 IWL_DEBUG_INFO(priv, "Disabling hw_scan\n");
60126 @@ -36118,91 +33010,21 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl3945-base.c linux-2.6
60127 + pax_close_kernel();
60128 }
60129
60130 -
60131 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c
60132 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-11-12 12:44:29.000000000 -0500
60133 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-11-12 12:46:45.000000000 -0500
60134 -@@ -2874,7 +2874,7 @@ static struct iwl_hcmd_utils_ops iwl3945
60135 - .build_addsta_hcmd = iwl3945_build_addsta_hcmd,
60136 - };
60137 -
60138 --static struct iwl_ops iwl3945_ops = {
60139 -+static const struct iwl_ops iwl3945_ops = {
60140 - .ucode = &iwl3945_ucode,
60141 - .lib = &iwl3945_lib,
60142 - .hcmd = &iwl3945_hcmd,
60143 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c
60144 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c 2011-11-12 12:44:29.000000000 -0500
60145 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-4965.c 2011-11-12 12:46:45.000000000 -0500
60146 -@@ -2345,7 +2345,7 @@ static struct iwl_lib_ops iwl4965_lib =
60147 - },
60148 - };
60149 -
60150 --static struct iwl_ops iwl4965_ops = {
60151 -+static const struct iwl_ops iwl4965_ops = {
60152 - .ucode = &iwl4965_ucode,
60153 - .lib = &iwl4965_lib,
60154 - .hcmd = &iwl4965_hcmd,
60155 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c
60156 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c 2011-11-12 12:44:29.000000000 -0500
60157 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-5000.c 2011-11-12 12:46:45.000000000 -0500
60158 -@@ -1633,14 +1633,14 @@ static struct iwl_lib_ops iwl5150_lib =
60159 - },
60160 - };
60161 -
60162 --struct iwl_ops iwl5000_ops = {
60163 -+const struct iwl_ops iwl5000_ops = {
60164 - .ucode = &iwl5000_ucode,
60165 - .lib = &iwl5000_lib,
60166 - .hcmd = &iwl5000_hcmd,
60167 - .utils = &iwl5000_hcmd_utils,
60168 - };
60169 -
60170 --static struct iwl_ops iwl5150_ops = {
60171 -+static const struct iwl_ops iwl5150_ops = {
60172 - .ucode = &iwl5000_ucode,
60173 - .lib = &iwl5150_lib,
60174 - .hcmd = &iwl5000_hcmd,
60175 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c
60176 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c 2009-12-02 22:51:21.000000000 -0500
60177 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-6000.c 2011-11-12 12:46:45.000000000 -0500
60178 -@@ -146,7 +146,7 @@ static struct iwl_hcmd_utils_ops iwl6000
60179 - .calc_rssi = iwl5000_calc_rssi,
60180 - };
60181 -
60182 --static struct iwl_ops iwl6000_ops = {
60183 -+static const struct iwl_ops iwl6000_ops = {
60184 - .ucode = &iwl5000_ucode,
60185 - .lib = &iwl6000_lib,
60186 - .hcmd = &iwl5000_hcmd,
60187 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c
60188 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-11-12 12:44:29.000000000 -0500
60189 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-11-12 12:46:45.000000000 -0500
60190 -@@ -2911,7 +2911,9 @@ static int iwl_pci_probe(struct pci_dev
60191 - if (iwl_debug_level & IWL_DL_INFO)
60192 - dev_printk(KERN_DEBUG, &(pdev->dev),
60193 - "Disabling hw_scan\n");
60194 -- iwl_hw_ops.hw_scan = NULL;
60195 -+ pax_open_kernel();
60196 -+ *(void **)&iwl_hw_ops.hw_scan = NULL;
60197 -+ pax_close_kernel();
60198 - }
60199 -
60200 - hw = iwl_alloc_all(cfg, &iwl_hw_ops);
60201 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
60202 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-12 12:44:29.000000000 -0500
60203 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-11-12 12:46:45.000000000 -0500
60204 -@@ -857,6 +857,8 @@ static void rs_tx_status(void *priv_r, s
60205 - u8 active_index = 0;
60206 - s32 tpt = 0;
60207 + IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
60208 +diff -urNp linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
60209 +--- linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-07-21 22:17:23.000000000 -0400
60210 ++++ linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-08-23 21:48:14.000000000 -0400
60211 +@@ -910,6 +910,8 @@ static void rs_tx_status(void *priv_r, s
60212 + struct iwl_station_priv *sta_priv = (void *)sta->drv_priv;
60213 + struct iwl_rxon_context *ctx = sta_priv->common.ctx;
60214
60215 + pax_track_stack();
60216 +
60217 IWL_DEBUG_RATE_LIMIT(priv, "get frame ack response, update rate scale window\n");
60218
60219 - if (!ieee80211_is_data(hdr->frame_control) ||
60220 -@@ -2722,6 +2724,8 @@ static void rs_fill_link_cmd(struct iwl_
60221 - u8 valid_tx_ant = 0;
60222 + /* Treat uninitialized rate scaling data same as non-existing. */
60223 +@@ -2918,6 +2920,8 @@ static void rs_fill_link_cmd(struct iwl_
60224 + container_of(lq_sta, struct iwl_station_priv, lq_sta);
60225 struct iwl_link_quality_cmd *lq_cmd = &lq_sta->lq;
60226
60227 + pax_track_stack();
60228 @@ -36210,10 +33032,10 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-2.6.3
60229 /* Override starting rate (index 0) if needed for debug purposes */
60230 rs_dbgfs_set_mcs(lq_sta, &new_rate, index);
60231
60232 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c
60233 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2009-12-02 22:51:21.000000000 -0500
60234 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-11-12 12:46:45.000000000 -0500
60235 -@@ -524,6 +524,8 @@ static ssize_t iwl_dbgfs_status_read(str
60236 +diff -urNp linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debugfs.c
60237 +--- linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-07-21 22:17:23.000000000 -0400
60238 ++++ linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debugfs.c 2011-08-23 21:48:14.000000000 -0400
60239 +@@ -548,6 +548,8 @@ static ssize_t iwl_dbgfs_status_read(str
60240 int pos = 0;
60241 const size_t bufsz = sizeof(buf);
60242
60243 @@ -36221,21 +33043,21 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debugfs.c linux-2.6.
60244 +
60245 pos += scnprintf(buf + pos, bufsz - pos, "STATUS_HCMD_ACTIVE:\t %d\n",
60246 test_bit(STATUS_HCMD_ACTIVE, &priv->status));
60247 - pos += scnprintf(buf + pos, bufsz - pos, "STATUS_HCMD_SYNC_ACTIVE: %d\n",
60248 -@@ -658,6 +660,8 @@ static ssize_t iwl_dbgfs_qos_read(struct
60249 + pos += scnprintf(buf + pos, bufsz - pos, "STATUS_INT_ENABLED:\t %d\n",
60250 +@@ -680,6 +682,8 @@ static ssize_t iwl_dbgfs_qos_read(struct
60251 + char buf[256 * NUM_IWL_RXON_CTX];
60252 const size_t bufsz = sizeof(buf);
60253 - ssize_t ret;
60254
60255 + pax_track_stack();
60256 +
60257 - for (i = 0; i < AC_NUM; i++) {
60258 - pos += scnprintf(buf + pos, bufsz - pos,
60259 - "\tcw_min\tcw_max\taifsn\ttxop\n");
60260 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h
60261 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h 2009-12-02 22:51:21.000000000 -0500
60262 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-11-12 12:46:45.000000000 -0500
60263 -@@ -118,8 +118,8 @@ void iwl_dbgfs_unregister(struct iwl_pri
60264 - #endif
60265 + for_each_context(priv, ctx) {
60266 + pos += scnprintf(buf + pos, bufsz - pos, "context %d:\n",
60267 + ctx->ctxid);
60268 +diff -urNp linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debug.h linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debug.h
60269 +--- linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-07-21 22:17:23.000000000 -0400
60270 ++++ linux-3.0.8/drivers/net/wireless/iwlwifi/iwl-debug.h 2011-08-23 21:47:55.000000000 -0400
60271 +@@ -68,8 +68,8 @@ do {
60272 + } while (0)
60273
60274 #else
60275 -#define IWL_DEBUG(__priv, level, fmt, args...)
60276 @@ -36243,24 +33065,12 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-debug.h linux-2.6.32
60277 +#define IWL_DEBUG(__priv, level, fmt, args...) do {} while (0)
60278 +#define IWL_DEBUG_LIMIT(__priv, level, fmt, args...) do {} while (0)
60279 static inline void iwl_print_hex_dump(struct iwl_priv *priv, int level,
60280 - void *p, u32 len)
60281 + const void *p, u32 len)
60282 {}
60283 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h
60284 ---- linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h 2011-11-12 12:44:29.000000000 -0500
60285 -+++ linux-2.6.32.48/drivers/net/wireless/iwlwifi/iwl-dev.h 2011-11-12 12:46:45.000000000 -0500
60286 -@@ -68,7 +68,7 @@ struct iwl_tx_queue;
60287 -
60288 - /* shared structures from iwl-5000.c */
60289 - extern struct iwl_mod_params iwl50_mod_params;
60290 --extern struct iwl_ops iwl5000_ops;
60291 -+extern const struct iwl_ops iwl5000_ops;
60292 - extern struct iwl_ucode_ops iwl5000_ucode;
60293 - extern struct iwl_lib_ops iwl5000_lib;
60294 - extern struct iwl_hcmd_ops iwl5000_hcmd;
60295 -diff -urNp linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c
60296 ---- linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c 2009-12-02 22:51:21.000000000 -0500
60297 -+++ linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-11-12 12:46:45.000000000 -0500
60298 -@@ -299,6 +299,8 @@ static ssize_t iwm_debugfs_fw_err_read(s
60299 +diff -urNp linux-3.0.8/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-3.0.8/drivers/net/wireless/iwmc3200wifi/debugfs.c
60300 +--- linux-3.0.8/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-07-21 22:17:23.000000000 -0400
60301 ++++ linux-3.0.8/drivers/net/wireless/iwmc3200wifi/debugfs.c 2011-08-23 21:48:14.000000000 -0400
60302 +@@ -327,6 +327,8 @@ static ssize_t iwm_debugfs_fw_err_read(s
60303 int buf_len = 512;
60304 size_t len = 0;
60305
60306 @@ -36269,34 +33079,76 @@ diff -urNp linux-2.6.32.48/drivers/net/wireless/iwmc3200wifi/debugfs.c linux-2.6
60307 if (*ppos != 0)
60308 return 0;
60309 if (count < sizeof(buf))
60310 -diff -urNp linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c
60311 ---- linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c 2009-12-02 22:51:21.000000000 -0500
60312 -+++ linux-2.6.32.48/drivers/net/wireless/libertas/debugfs.c 2011-11-12 12:46:45.000000000 -0500
60313 -@@ -708,7 +708,7 @@ out_unlock:
60314 - struct lbs_debugfs_files {
60315 - const char *name;
60316 - int perm;
60317 -- struct file_operations fops;
60318 -+ const struct file_operations fops;
60319 - };
60320 +diff -urNp linux-3.0.8/drivers/net/wireless/mac80211_hwsim.c linux-3.0.8/drivers/net/wireless/mac80211_hwsim.c
60321 +--- linux-3.0.8/drivers/net/wireless/mac80211_hwsim.c 2011-07-21 22:17:23.000000000 -0400
60322 ++++ linux-3.0.8/drivers/net/wireless/mac80211_hwsim.c 2011-08-23 21:47:55.000000000 -0400
60323 +@@ -1260,9 +1260,11 @@ static int __init init_mac80211_hwsim(vo
60324 + return -EINVAL;
60325
60326 - static const struct lbs_debugfs_files debugfs_files[] = {
60327 -diff -urNp linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c
60328 ---- linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c 2011-11-12 12:44:29.000000000 -0500
60329 -+++ linux-2.6.32.48/drivers/net/wireless/rndis_wlan.c 2011-11-12 12:46:45.000000000 -0500
60330 -@@ -1176,7 +1176,7 @@ static int set_rts_threshold(struct usbn
60331 + if (fake_hw_scan) {
60332 +- mac80211_hwsim_ops.hw_scan = mac80211_hwsim_hw_scan;
60333 +- mac80211_hwsim_ops.sw_scan_start = NULL;
60334 +- mac80211_hwsim_ops.sw_scan_complete = NULL;
60335 ++ pax_open_kernel();
60336 ++ *(void **)&mac80211_hwsim_ops.hw_scan = mac80211_hwsim_hw_scan;
60337 ++ *(void **)&mac80211_hwsim_ops.sw_scan_start = NULL;
60338 ++ *(void **)&mac80211_hwsim_ops.sw_scan_complete = NULL;
60339 ++ pax_close_kernel();
60340 + }
60341 +
60342 + spin_lock_init(&hwsim_radio_lock);
60343 +diff -urNp linux-3.0.8/drivers/net/wireless/rndis_wlan.c linux-3.0.8/drivers/net/wireless/rndis_wlan.c
60344 +--- linux-3.0.8/drivers/net/wireless/rndis_wlan.c 2011-07-21 22:17:23.000000000 -0400
60345 ++++ linux-3.0.8/drivers/net/wireless/rndis_wlan.c 2011-08-23 21:47:55.000000000 -0400
60346 +@@ -1277,7 +1277,7 @@ static int set_rts_threshold(struct usbn
60347
60348 - devdbg(usbdev, "set_rts_threshold %i", rts_threshold);
60349 + netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
60350
60351 - if (rts_threshold < 0 || rts_threshold > 2347)
60352 + if (rts_threshold > 2347)
60353 rts_threshold = 2347;
60354
60355 tmp = cpu_to_le32(rts_threshold);
60356 -diff -urNp linux-2.6.32.48/drivers/oprofile/buffer_sync.c linux-2.6.32.48/drivers/oprofile/buffer_sync.c
60357 ---- linux-2.6.32.48/drivers/oprofile/buffer_sync.c 2011-11-12 12:44:29.000000000 -0500
60358 -+++ linux-2.6.32.48/drivers/oprofile/buffer_sync.c 2011-11-12 12:46:45.000000000 -0500
60359 -@@ -341,7 +341,7 @@ static void add_data(struct op_entry *en
60360 +diff -urNp linux-3.0.8/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c linux-3.0.8/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
60361 +--- linux-3.0.8/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c 2011-07-21 22:17:23.000000000 -0400
60362 ++++ linux-3.0.8/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c 2011-08-23 21:48:14.000000000 -0400
60363 +@@ -837,6 +837,8 @@ bool _rtl92c_phy_sw_chnl_step_by_step(st
60364 + u8 rfpath;
60365 + u8 num_total_rfpath = rtlphy->num_total_rfpath;
60366 +
60367 ++ pax_track_stack();
60368 ++
60369 + precommoncmdcnt = 0;
60370 + _rtl92c_phy_set_sw_chnl_cmdarray(precommoncmd, precommoncmdcnt++,
60371 + MAX_PRECMD_CNT,
60372 +diff -urNp linux-3.0.8/drivers/net/wireless/wl1251/wl1251.h linux-3.0.8/drivers/net/wireless/wl1251/wl1251.h
60373 +--- linux-3.0.8/drivers/net/wireless/wl1251/wl1251.h 2011-07-21 22:17:23.000000000 -0400
60374 ++++ linux-3.0.8/drivers/net/wireless/wl1251/wl1251.h 2011-08-23 21:47:55.000000000 -0400
60375 +@@ -266,7 +266,7 @@ struct wl1251_if_operations {
60376 + void (*reset)(struct wl1251 *wl);
60377 + void (*enable_irq)(struct wl1251 *wl);
60378 + void (*disable_irq)(struct wl1251 *wl);
60379 +-};
60380 ++} __no_const;
60381 +
60382 + struct wl1251 {
60383 + struct ieee80211_hw *hw;
60384 +diff -urNp linux-3.0.8/drivers/net/wireless/wl12xx/spi.c linux-3.0.8/drivers/net/wireless/wl12xx/spi.c
60385 +--- linux-3.0.8/drivers/net/wireless/wl12xx/spi.c 2011-07-21 22:17:23.000000000 -0400
60386 ++++ linux-3.0.8/drivers/net/wireless/wl12xx/spi.c 2011-08-23 21:48:14.000000000 -0400
60387 +@@ -280,6 +280,8 @@ static void wl1271_spi_raw_write(struct
60388 + u32 chunk_len;
60389 + int i;
60390 +
60391 ++ pax_track_stack();
60392 ++
60393 + WARN_ON(len > WL1271_AGGR_BUFFER_SIZE);
60394 +
60395 + spi_message_init(&m);
60396 +diff -urNp linux-3.0.8/drivers/oprofile/buffer_sync.c linux-3.0.8/drivers/oprofile/buffer_sync.c
60397 +--- linux-3.0.8/drivers/oprofile/buffer_sync.c 2011-07-21 22:17:23.000000000 -0400
60398 ++++ linux-3.0.8/drivers/oprofile/buffer_sync.c 2011-08-23 21:47:55.000000000 -0400
60399 +@@ -343,7 +343,7 @@ static void add_data(struct op_entry *en
60400 if (cookie == NO_COOKIE)
60401 offset = pc;
60402 if (cookie == INVALID_COOKIE) {
60403 @@ -36305,7 +33157,7 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/buffer_sync.c linux-2.6.32.48/driver
60404 offset = pc;
60405 }
60406 if (cookie != last_cookie) {
60407 -@@ -385,14 +385,14 @@ add_sample(struct mm_struct *mm, struct
60408 +@@ -387,14 +387,14 @@ add_sample(struct mm_struct *mm, struct
60409 /* add userspace sample */
60410
60411 if (!mm) {
60412 @@ -36322,7 +33174,7 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/buffer_sync.c linux-2.6.32.48/driver
60413 return 0;
60414 }
60415
60416 -@@ -561,7 +561,7 @@ void sync_buffer(int cpu)
60417 +@@ -563,7 +563,7 @@ void sync_buffer(int cpu)
60418 /* ignore backtraces if failed to add a sample */
60419 if (state == sb_bt_start) {
60420 state = sb_bt_ignore;
60421 @@ -36331,9 +33183,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/buffer_sync.c linux-2.6.32.48/driver
60422 }
60423 }
60424 release_mm(mm);
60425 -diff -urNp linux-2.6.32.48/drivers/oprofile/event_buffer.c linux-2.6.32.48/drivers/oprofile/event_buffer.c
60426 ---- linux-2.6.32.48/drivers/oprofile/event_buffer.c 2009-12-02 22:51:21.000000000 -0500
60427 -+++ linux-2.6.32.48/drivers/oprofile/event_buffer.c 2011-11-12 12:46:45.000000000 -0500
60428 +diff -urNp linux-3.0.8/drivers/oprofile/event_buffer.c linux-3.0.8/drivers/oprofile/event_buffer.c
60429 +--- linux-3.0.8/drivers/oprofile/event_buffer.c 2011-07-21 22:17:23.000000000 -0400
60430 ++++ linux-3.0.8/drivers/oprofile/event_buffer.c 2011-08-23 21:47:55.000000000 -0400
60431 @@ -53,7 +53,7 @@ void add_event_entry(unsigned long value
60432 }
60433
60434 @@ -36343,9 +33195,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/event_buffer.c linux-2.6.32.48/drive
60435 return;
60436 }
60437
60438 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprof.c linux-2.6.32.48/drivers/oprofile/oprof.c
60439 ---- linux-2.6.32.48/drivers/oprofile/oprof.c 2009-12-02 22:51:21.000000000 -0500
60440 -+++ linux-2.6.32.48/drivers/oprofile/oprof.c 2011-11-12 12:46:45.000000000 -0500
60441 +diff -urNp linux-3.0.8/drivers/oprofile/oprof.c linux-3.0.8/drivers/oprofile/oprof.c
60442 +--- linux-3.0.8/drivers/oprofile/oprof.c 2011-07-21 22:17:23.000000000 -0400
60443 ++++ linux-3.0.8/drivers/oprofile/oprof.c 2011-08-23 21:47:55.000000000 -0400
60444 @@ -110,7 +110,7 @@ static void switch_worker(struct work_st
60445 if (oprofile_ops.switch_events())
60446 return;
60447 @@ -36355,21 +33207,21 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/oprof.c linux-2.6.32.48/drivers/opro
60448 start_switch_worker();
60449 }
60450
60451 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprofilefs.c linux-2.6.32.48/drivers/oprofile/oprofilefs.c
60452 ---- linux-2.6.32.48/drivers/oprofile/oprofilefs.c 2009-12-02 22:51:21.000000000 -0500
60453 -+++ linux-2.6.32.48/drivers/oprofile/oprofilefs.c 2011-11-12 12:46:45.000000000 -0500
60454 -@@ -187,7 +187,7 @@ static const struct file_operations atom
60455 +diff -urNp linux-3.0.8/drivers/oprofile/oprofilefs.c linux-3.0.8/drivers/oprofile/oprofilefs.c
60456 +--- linux-3.0.8/drivers/oprofile/oprofilefs.c 2011-07-21 22:17:23.000000000 -0400
60457 ++++ linux-3.0.8/drivers/oprofile/oprofilefs.c 2011-08-23 21:47:55.000000000 -0400
60458 +@@ -186,7 +186,7 @@ static const struct file_operations atom
60459
60460
60461 int oprofilefs_create_ro_atomic(struct super_block *sb, struct dentry *root,
60462 - char const *name, atomic_t *val)
60463 + char const *name, atomic_unchecked_t *val)
60464 {
60465 - struct dentry *d = __oprofilefs_create_file(sb, root, name,
60466 - &atomic_ro_fops, 0444);
60467 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.c linux-2.6.32.48/drivers/oprofile/oprofile_stats.c
60468 ---- linux-2.6.32.48/drivers/oprofile/oprofile_stats.c 2009-12-02 22:51:21.000000000 -0500
60469 -+++ linux-2.6.32.48/drivers/oprofile/oprofile_stats.c 2011-11-12 12:46:45.000000000 -0500
60470 + return __oprofilefs_create_file(sb, root, name,
60471 + &atomic_ro_fops, 0444, val);
60472 +diff -urNp linux-3.0.8/drivers/oprofile/oprofile_stats.c linux-3.0.8/drivers/oprofile/oprofile_stats.c
60473 +--- linux-3.0.8/drivers/oprofile/oprofile_stats.c 2011-07-21 22:17:23.000000000 -0400
60474 ++++ linux-3.0.8/drivers/oprofile/oprofile_stats.c 2011-08-23 21:47:55.000000000 -0400
60475 @@ -30,11 +30,11 @@ void oprofile_reset_stats(void)
60476 cpu_buf->sample_invalid_eip = 0;
60477 }
60478 @@ -36387,9 +33239,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.c linux-2.6.32.48/dri
60479 }
60480
60481
60482 -diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.h linux-2.6.32.48/drivers/oprofile/oprofile_stats.h
60483 ---- linux-2.6.32.48/drivers/oprofile/oprofile_stats.h 2009-12-02 22:51:21.000000000 -0500
60484 -+++ linux-2.6.32.48/drivers/oprofile/oprofile_stats.h 2011-11-12 12:46:45.000000000 -0500
60485 +diff -urNp linux-3.0.8/drivers/oprofile/oprofile_stats.h linux-3.0.8/drivers/oprofile/oprofile_stats.h
60486 +--- linux-3.0.8/drivers/oprofile/oprofile_stats.h 2011-07-21 22:17:23.000000000 -0400
60487 ++++ linux-3.0.8/drivers/oprofile/oprofile_stats.h 2011-08-23 21:47:55.000000000 -0400
60488 @@ -13,11 +13,11 @@
60489 #include <asm/atomic.h>
60490
60491 @@ -36407,21 +33259,9 @@ diff -urNp linux-2.6.32.48/drivers/oprofile/oprofile_stats.h linux-2.6.32.48/dri
60492 };
60493
60494 extern struct oprofile_stat_struct oprofile_stats;
60495 -diff -urNp linux-2.6.32.48/drivers/parisc/pdc_stable.c linux-2.6.32.48/drivers/parisc/pdc_stable.c
60496 ---- linux-2.6.32.48/drivers/parisc/pdc_stable.c 2009-12-02 22:51:21.000000000 -0500
60497 -+++ linux-2.6.32.48/drivers/parisc/pdc_stable.c 2011-11-12 12:46:45.000000000 -0500
60498 -@@ -481,7 +481,7 @@ pdcspath_attr_store(struct kobject *kobj
60499 - return ret;
60500 - }
60501 -
60502 --static struct sysfs_ops pdcspath_attr_ops = {
60503 -+static const struct sysfs_ops pdcspath_attr_ops = {
60504 - .show = pdcspath_attr_show,
60505 - .store = pdcspath_attr_store,
60506 - };
60507 -diff -urNp linux-2.6.32.48/drivers/parport/procfs.c linux-2.6.32.48/drivers/parport/procfs.c
60508 ---- linux-2.6.32.48/drivers/parport/procfs.c 2009-12-02 22:51:21.000000000 -0500
60509 -+++ linux-2.6.32.48/drivers/parport/procfs.c 2011-11-12 12:46:45.000000000 -0500
60510 +diff -urNp linux-3.0.8/drivers/parport/procfs.c linux-3.0.8/drivers/parport/procfs.c
60511 +--- linux-3.0.8/drivers/parport/procfs.c 2011-07-21 22:17:23.000000000 -0400
60512 ++++ linux-3.0.8/drivers/parport/procfs.c 2011-08-23 21:47:55.000000000 -0400
60513 @@ -64,7 +64,7 @@ static int do_active_device(ctl_table *t
60514
60515 *ppos += len;
60516 @@ -36440,21 +33280,9 @@ diff -urNp linux-2.6.32.48/drivers/parport/procfs.c linux-2.6.32.48/drivers/parp
60517 }
60518 #endif /* IEEE1284.3 support. */
60519
60520 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c
60521 ---- linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c 2011-11-12 12:44:29.000000000 -0500
60522 -+++ linux-2.6.32.48/drivers/pci/hotplug/acpiphp_glue.c 2011-11-12 12:46:45.000000000 -0500
60523 -@@ -111,7 +111,7 @@ static int post_dock_fixups(struct notif
60524 - }
60525 -
60526 -
60527 --static struct acpi_dock_ops acpiphp_dock_ops = {
60528 -+static const struct acpi_dock_ops acpiphp_dock_ops = {
60529 - .handler = handle_hotplug_event_func,
60530 - };
60531 -
60532 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h
60533 ---- linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h 2009-12-02 22:51:21.000000000 -0500
60534 -+++ linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h 2011-11-12 12:46:45.000000000 -0500
60535 +diff -urNp linux-3.0.8/drivers/pci/hotplug/cpci_hotplug.h linux-3.0.8/drivers/pci/hotplug/cpci_hotplug.h
60536 +--- linux-3.0.8/drivers/pci/hotplug/cpci_hotplug.h 2011-07-21 22:17:23.000000000 -0400
60537 ++++ linux-3.0.8/drivers/pci/hotplug/cpci_hotplug.h 2011-08-23 21:47:55.000000000 -0400
60538 @@ -59,7 +59,7 @@ struct cpci_hp_controller_ops {
60539 int (*hardware_test) (struct slot* slot, u32 value);
60540 u8 (*get_power) (struct slot* slot);
60541 @@ -36464,9 +33292,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpci_hotplug.h linux-2.6.32.48/dr
60542
60543 struct cpci_hp_controller {
60544 unsigned int irq;
60545 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c
60546 ---- linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c 2009-12-02 22:51:21.000000000 -0500
60547 -+++ linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c 2011-11-12 12:46:45.000000000 -0500
60548 +diff -urNp linux-3.0.8/drivers/pci/hotplug/cpqphp_nvram.c linux-3.0.8/drivers/pci/hotplug/cpqphp_nvram.c
60549 +--- linux-3.0.8/drivers/pci/hotplug/cpqphp_nvram.c 2011-07-21 22:17:23.000000000 -0400
60550 ++++ linux-3.0.8/drivers/pci/hotplug/cpqphp_nvram.c 2011-08-23 21:47:55.000000000 -0400
60551 @@ -428,9 +428,13 @@ static u32 store_HRT (void __iomem *rom_
60552
60553 void compaq_nvram_init (void __iomem *rom_start)
60554 @@ -36481,93 +33309,9 @@ diff -urNp linux-2.6.32.48/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.32.48/dr
60555 dbg("int15 entry = %p\n", compaq_int15_entry_point);
60556
60557 /* initialize our int15 lock */
60558 -diff -urNp linux-2.6.32.48/drivers/pci/hotplug/fakephp.c linux-2.6.32.48/drivers/pci/hotplug/fakephp.c
60559 ---- linux-2.6.32.48/drivers/pci/hotplug/fakephp.c 2009-12-02 22:51:21.000000000 -0500
60560 -+++ linux-2.6.32.48/drivers/pci/hotplug/fakephp.c 2011-11-12 12:46:45.000000000 -0500
60561 -@@ -73,7 +73,7 @@ static void legacy_release(struct kobjec
60562 - }
60563 -
60564 - static struct kobj_type legacy_ktype = {
60565 -- .sysfs_ops = &(struct sysfs_ops){
60566 -+ .sysfs_ops = &(const struct sysfs_ops){
60567 - .store = legacy_store, .show = legacy_show
60568 - },
60569 - .release = &legacy_release,
60570 -diff -urNp linux-2.6.32.48/drivers/pci/intel-iommu.c linux-2.6.32.48/drivers/pci/intel-iommu.c
60571 ---- linux-2.6.32.48/drivers/pci/intel-iommu.c 2011-11-12 12:44:29.000000000 -0500
60572 -+++ linux-2.6.32.48/drivers/pci/intel-iommu.c 2011-11-12 12:46:45.000000000 -0500
60573 -@@ -2643,7 +2643,7 @@ error:
60574 - return 0;
60575 - }
60576 -
60577 --static dma_addr_t intel_map_page(struct device *dev, struct page *page,
60578 -+dma_addr_t intel_map_page(struct device *dev, struct page *page,
60579 - unsigned long offset, size_t size,
60580 - enum dma_data_direction dir,
60581 - struct dma_attrs *attrs)
60582 -@@ -2719,7 +2719,7 @@ static void add_unmap(struct dmar_domain
60583 - spin_unlock_irqrestore(&async_umap_flush_lock, flags);
60584 - }
60585 -
60586 --static void intel_unmap_page(struct device *dev, dma_addr_t dev_addr,
60587 -+void intel_unmap_page(struct device *dev, dma_addr_t dev_addr,
60588 - size_t size, enum dma_data_direction dir,
60589 - struct dma_attrs *attrs)
60590 - {
60591 -@@ -2768,7 +2768,7 @@ static void intel_unmap_page(struct devi
60592 - }
60593 - }
60594 -
60595 --static void *intel_alloc_coherent(struct device *hwdev, size_t size,
60596 -+void *intel_alloc_coherent(struct device *hwdev, size_t size,
60597 - dma_addr_t *dma_handle, gfp_t flags)
60598 - {
60599 - void *vaddr;
60600 -@@ -2800,7 +2800,7 @@ static void *intel_alloc_coherent(struct
60601 - return NULL;
60602 - }
60603 -
60604 --static void intel_free_coherent(struct device *hwdev, size_t size, void *vaddr,
60605 -+void intel_free_coherent(struct device *hwdev, size_t size, void *vaddr,
60606 - dma_addr_t dma_handle)
60607 - {
60608 - int order;
60609 -@@ -2812,7 +2812,7 @@ static void intel_free_coherent(struct d
60610 - free_pages((unsigned long)vaddr, order);
60611 - }
60612 -
60613 --static void intel_unmap_sg(struct device *hwdev, struct scatterlist *sglist,
60614 -+void intel_unmap_sg(struct device *hwdev, struct scatterlist *sglist,
60615 - int nelems, enum dma_data_direction dir,
60616 - struct dma_attrs *attrs)
60617 - {
60618 -@@ -2872,7 +2872,7 @@ static int intel_nontranslate_map_sg(str
60619 - return nelems;
60620 - }
60621 -
60622 --static int intel_map_sg(struct device *hwdev, struct scatterlist *sglist, int nelems,
60623 -+int intel_map_sg(struct device *hwdev, struct scatterlist *sglist, int nelems,
60624 - enum dma_data_direction dir, struct dma_attrs *attrs)
60625 - {
60626 - int i;
60627 -@@ -2941,12 +2941,12 @@ static int intel_map_sg(struct device *h
60628 - return nelems;
60629 - }
60630 -
60631 --static int intel_mapping_error(struct device *dev, dma_addr_t dma_addr)
60632 -+int intel_mapping_error(struct device *dev, dma_addr_t dma_addr)
60633 - {
60634 - return !dma_addr;
60635 - }
60636 -
60637 --struct dma_map_ops intel_dma_ops = {
60638 -+const struct dma_map_ops intel_dma_ops = {
60639 - .alloc_coherent = intel_alloc_coherent,
60640 - .free_coherent = intel_free_coherent,
60641 - .map_sg = intel_map_sg,
60642 -diff -urNp linux-2.6.32.48/drivers/pci/pcie/aspm.c linux-2.6.32.48/drivers/pci/pcie/aspm.c
60643 ---- linux-2.6.32.48/drivers/pci/pcie/aspm.c 2009-12-02 22:51:21.000000000 -0500
60644 -+++ linux-2.6.32.48/drivers/pci/pcie/aspm.c 2011-11-12 12:46:45.000000000 -0500
60645 +diff -urNp linux-3.0.8/drivers/pci/pcie/aspm.c linux-3.0.8/drivers/pci/pcie/aspm.c
60646 +--- linux-3.0.8/drivers/pci/pcie/aspm.c 2011-07-21 22:17:23.000000000 -0400
60647 ++++ linux-3.0.8/drivers/pci/pcie/aspm.c 2011-08-23 21:47:55.000000000 -0400
60648 @@ -27,9 +27,9 @@
60649 #define MODULE_PARAM_PREFIX "pcie_aspm."
60650
60651 @@ -36581,30 +33325,22 @@ diff -urNp linux-2.6.32.48/drivers/pci/pcie/aspm.c linux-2.6.32.48/drivers/pci/p
60652 #define ASPM_STATE_L0S (ASPM_STATE_L0S_UP | ASPM_STATE_L0S_DW)
60653 #define ASPM_STATE_ALL (ASPM_STATE_L0S | ASPM_STATE_L1)
60654
60655 -diff -urNp linux-2.6.32.48/drivers/pci/probe.c linux-2.6.32.48/drivers/pci/probe.c
60656 ---- linux-2.6.32.48/drivers/pci/probe.c 2009-12-02 22:51:21.000000000 -0500
60657 -+++ linux-2.6.32.48/drivers/pci/probe.c 2011-11-12 12:46:45.000000000 -0500
60658 -@@ -62,14 +62,14 @@ static ssize_t pci_bus_show_cpuaffinity(
60659 - return ret;
60660 - }
60661 -
60662 --static ssize_t inline pci_bus_show_cpumaskaffinity(struct device *dev,
60663 -+static inline ssize_t pci_bus_show_cpumaskaffinity(struct device *dev,
60664 - struct device_attribute *attr,
60665 - char *buf)
60666 - {
60667 - return pci_bus_show_cpuaffinity(dev, 0, attr, buf);
60668 - }
60669 -
60670 --static ssize_t inline pci_bus_show_cpulistaffinity(struct device *dev,
60671 -+static inline ssize_t pci_bus_show_cpulistaffinity(struct device *dev,
60672 - struct device_attribute *attr,
60673 - char *buf)
60674 - {
60675 -diff -urNp linux-2.6.32.48/drivers/pci/proc.c linux-2.6.32.48/drivers/pci/proc.c
60676 ---- linux-2.6.32.48/drivers/pci/proc.c 2011-11-12 12:44:29.000000000 -0500
60677 -+++ linux-2.6.32.48/drivers/pci/proc.c 2011-11-12 12:46:45.000000000 -0500
60678 -@@ -480,7 +480,16 @@ static const struct file_operations proc
60679 +diff -urNp linux-3.0.8/drivers/pci/probe.c linux-3.0.8/drivers/pci/probe.c
60680 +--- linux-3.0.8/drivers/pci/probe.c 2011-07-21 22:17:23.000000000 -0400
60681 ++++ linux-3.0.8/drivers/pci/probe.c 2011-08-23 21:47:55.000000000 -0400
60682 +@@ -129,7 +129,7 @@ int __pci_read_base(struct pci_dev *dev,
60683 + u32 l, sz, mask;
60684 + u16 orig_cmd;
60685 +
60686 +- mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
60687 ++ mask = type ? (u32)PCI_ROM_ADDRESS_MASK : ~0;
60688 +
60689 + if (!dev->mmio_always_on) {
60690 + pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
60691 +diff -urNp linux-3.0.8/drivers/pci/proc.c linux-3.0.8/drivers/pci/proc.c
60692 +--- linux-3.0.8/drivers/pci/proc.c 2011-07-21 22:17:23.000000000 -0400
60693 ++++ linux-3.0.8/drivers/pci/proc.c 2011-08-23 21:48:14.000000000 -0400
60694 +@@ -476,7 +476,16 @@ static const struct file_operations proc
60695 static int __init pci_proc_init(void)
60696 {
60697 struct pci_dev *dev = NULL;
60698 @@ -36621,154 +33357,58 @@ diff -urNp linux-2.6.32.48/drivers/pci/proc.c linux-2.6.32.48/drivers/pci/proc.c
60699 proc_create("devices", 0, proc_bus_pci_dir,
60700 &proc_bus_pci_dev_operations);
60701 proc_initialized = 1;
60702 -diff -urNp linux-2.6.32.48/drivers/pci/slot.c linux-2.6.32.48/drivers/pci/slot.c
60703 ---- linux-2.6.32.48/drivers/pci/slot.c 2009-12-02 22:51:21.000000000 -0500
60704 -+++ linux-2.6.32.48/drivers/pci/slot.c 2011-11-12 12:46:45.000000000 -0500
60705 -@@ -29,7 +29,7 @@ static ssize_t pci_slot_attr_store(struc
60706 - return attribute->store ? attribute->store(slot, buf, len) : -EIO;
60707 - }
60708 -
60709 --static struct sysfs_ops pci_slot_sysfs_ops = {
60710 -+static const struct sysfs_ops pci_slot_sysfs_ops = {
60711 - .show = pci_slot_attr_show,
60712 - .store = pci_slot_attr_store,
60713 - };
60714 -diff -urNp linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c
60715 ---- linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c 2009-12-02 22:51:21.000000000 -0500
60716 -+++ linux-2.6.32.48/drivers/pcmcia/pcmcia_ioctl.c 2011-11-12 12:46:45.000000000 -0500
60717 -@@ -819,7 +819,7 @@ static int ds_ioctl(struct inode * inode
60718 - return -EFAULT;
60719 - }
60720 - }
60721 -- buf = kmalloc(sizeof(ds_ioctl_arg_t), GFP_KERNEL);
60722 -+ buf = kzalloc(sizeof(ds_ioctl_arg_t), GFP_KERNEL);
60723 - if (!buf)
60724 - return -ENOMEM;
60725 -
60726 -diff -urNp linux-2.6.32.48/drivers/platform/x86/acer-wmi.c linux-2.6.32.48/drivers/platform/x86/acer-wmi.c
60727 ---- linux-2.6.32.48/drivers/platform/x86/acer-wmi.c 2011-11-12 12:44:29.000000000 -0500
60728 -+++ linux-2.6.32.48/drivers/platform/x86/acer-wmi.c 2011-11-12 12:46:45.000000000 -0500
60729 -@@ -918,7 +918,7 @@ static int update_bl_status(struct backl
60730 - return 0;
60731 - }
60732 +diff -urNp linux-3.0.8/drivers/pci/xen-pcifront.c linux-3.0.8/drivers/pci/xen-pcifront.c
60733 +--- linux-3.0.8/drivers/pci/xen-pcifront.c 2011-07-21 22:17:23.000000000 -0400
60734 ++++ linux-3.0.8/drivers/pci/xen-pcifront.c 2011-08-23 21:48:14.000000000 -0400
60735 +@@ -187,6 +187,8 @@ static int pcifront_bus_read(struct pci_
60736 + struct pcifront_sd *sd = bus->sysdata;
60737 + struct pcifront_device *pdev = pcifront_get_pdev(sd);
60738
60739 --static struct backlight_ops acer_bl_ops = {
60740 -+static const struct backlight_ops acer_bl_ops = {
60741 - .get_brightness = read_brightness,
60742 - .update_status = update_bl_status,
60743 - };
60744 -diff -urNp linux-2.6.32.48/drivers/platform/x86/asus_acpi.c linux-2.6.32.48/drivers/platform/x86/asus_acpi.c
60745 ---- linux-2.6.32.48/drivers/platform/x86/asus_acpi.c 2011-11-12 12:44:29.000000000 -0500
60746 -+++ linux-2.6.32.48/drivers/platform/x86/asus_acpi.c 2011-11-12 12:46:45.000000000 -0500
60747 -@@ -1396,7 +1396,7 @@ static int asus_hotk_remove(struct acpi_
60748 - return 0;
60749 - }
60750 -
60751 --static struct backlight_ops asus_backlight_data = {
60752 -+static const struct backlight_ops asus_backlight_data = {
60753 - .get_brightness = read_brightness,
60754 - .update_status = set_brightness_status,
60755 - };
60756 -diff -urNp linux-2.6.32.48/drivers/platform/x86/asus-laptop.c linux-2.6.32.48/drivers/platform/x86/asus-laptop.c
60757 ---- linux-2.6.32.48/drivers/platform/x86/asus-laptop.c 2011-11-12 12:44:29.000000000 -0500
60758 -+++ linux-2.6.32.48/drivers/platform/x86/asus-laptop.c 2011-11-12 12:46:45.000000000 -0500
60759 -@@ -250,7 +250,7 @@ static struct backlight_device *asus_bac
60760 - */
60761 - static int read_brightness(struct backlight_device *bd);
60762 - static int update_bl_status(struct backlight_device *bd);
60763 --static struct backlight_ops asusbl_ops = {
60764 -+static const struct backlight_ops asusbl_ops = {
60765 - .get_brightness = read_brightness,
60766 - .update_status = update_bl_status,
60767 - };
60768 -diff -urNp linux-2.6.32.48/drivers/platform/x86/compal-laptop.c linux-2.6.32.48/drivers/platform/x86/compal-laptop.c
60769 ---- linux-2.6.32.48/drivers/platform/x86/compal-laptop.c 2009-12-02 22:51:21.000000000 -0500
60770 -+++ linux-2.6.32.48/drivers/platform/x86/compal-laptop.c 2011-11-12 12:46:45.000000000 -0500
60771 -@@ -163,7 +163,7 @@ static int bl_update_status(struct backl
60772 - return set_lcd_level(b->props.brightness);
60773 - }
60774 -
60775 --static struct backlight_ops compalbl_ops = {
60776 -+static const struct backlight_ops compalbl_ops = {
60777 - .get_brightness = bl_get_brightness,
60778 - .update_status = bl_update_status,
60779 - };
60780 -diff -urNp linux-2.6.32.48/drivers/platform/x86/dell-laptop.c linux-2.6.32.48/drivers/platform/x86/dell-laptop.c
60781 ---- linux-2.6.32.48/drivers/platform/x86/dell-laptop.c 2011-11-12 12:44:29.000000000 -0500
60782 -+++ linux-2.6.32.48/drivers/platform/x86/dell-laptop.c 2011-11-12 12:46:45.000000000 -0500
60783 -@@ -318,7 +318,7 @@ static int dell_get_intensity(struct bac
60784 - return buffer.output[1];
60785 - }
60786 ++ pax_track_stack();
60787 ++
60788 + if (verbose_request)
60789 + dev_info(&pdev->xdev->dev,
60790 + "read dev=%04x:%02x:%02x.%01x - offset %x size %d\n",
60791 +@@ -226,6 +228,8 @@ static int pcifront_bus_write(struct pci
60792 + struct pcifront_sd *sd = bus->sysdata;
60793 + struct pcifront_device *pdev = pcifront_get_pdev(sd);
60794
60795 --static struct backlight_ops dell_ops = {
60796 -+static const struct backlight_ops dell_ops = {
60797 - .get_brightness = dell_get_intensity,
60798 - .update_status = dell_send_intensity,
60799 - };
60800 -diff -urNp linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c
60801 ---- linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c 2011-11-12 12:44:29.000000000 -0500
60802 -+++ linux-2.6.32.48/drivers/platform/x86/eeepc-laptop.c 2011-11-12 12:46:45.000000000 -0500
60803 -@@ -245,7 +245,7 @@ static struct device *eeepc_hwmon_device
60804 - */
60805 - static int read_brightness(struct backlight_device *bd);
60806 - static int update_bl_status(struct backlight_device *bd);
60807 --static struct backlight_ops eeepcbl_ops = {
60808 -+static const struct backlight_ops eeepcbl_ops = {
60809 - .get_brightness = read_brightness,
60810 - .update_status = update_bl_status,
60811 - };
60812 -diff -urNp linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c
60813 ---- linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c 2009-12-02 22:51:21.000000000 -0500
60814 -+++ linux-2.6.32.48/drivers/platform/x86/fujitsu-laptop.c 2011-11-12 12:46:45.000000000 -0500
60815 -@@ -436,7 +436,7 @@ static int bl_update_status(struct backl
60816 - return ret;
60817 - }
60818 ++ pax_track_stack();
60819 ++
60820 + if (verbose_request)
60821 + dev_info(&pdev->xdev->dev,
60822 + "write dev=%04x:%02x:%02x.%01x - "
60823 +@@ -258,6 +262,8 @@ static int pci_frontend_enable_msix(stru
60824 + struct pcifront_device *pdev = pcifront_get_pdev(sd);
60825 + struct msi_desc *entry;
60826
60827 --static struct backlight_ops fujitsubl_ops = {
60828 -+static const struct backlight_ops fujitsubl_ops = {
60829 - .get_brightness = bl_get_brightness,
60830 - .update_status = bl_update_status,
60831 - };
60832 -diff -urNp linux-2.6.32.48/drivers/platform/x86/msi-laptop.c linux-2.6.32.48/drivers/platform/x86/msi-laptop.c
60833 ---- linux-2.6.32.48/drivers/platform/x86/msi-laptop.c 2009-12-02 22:51:21.000000000 -0500
60834 -+++ linux-2.6.32.48/drivers/platform/x86/msi-laptop.c 2011-11-12 12:46:45.000000000 -0500
60835 -@@ -161,7 +161,7 @@ static int bl_update_status(struct backl
60836 - return set_lcd_level(b->props.brightness);
60837 - }
60838 ++ pax_track_stack();
60839 ++
60840 + if (nvec > SH_INFO_MAX_VEC) {
60841 + dev_err(&dev->dev, "too much vector for pci frontend: %x."
60842 + " Increase SH_INFO_MAX_VEC.\n", nvec);
60843 +@@ -309,6 +315,8 @@ static void pci_frontend_disable_msix(st
60844 + struct pcifront_sd *sd = dev->bus->sysdata;
60845 + struct pcifront_device *pdev = pcifront_get_pdev(sd);
60846
60847 --static struct backlight_ops msibl_ops = {
60848 -+static const struct backlight_ops msibl_ops = {
60849 - .get_brightness = bl_get_brightness,
60850 - .update_status = bl_update_status,
60851 - };
60852 -diff -urNp linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c
60853 ---- linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c 2009-12-02 22:51:21.000000000 -0500
60854 -+++ linux-2.6.32.48/drivers/platform/x86/panasonic-laptop.c 2011-11-12 12:46:45.000000000 -0500
60855 -@@ -352,7 +352,7 @@ static int bl_set_status(struct backligh
60856 - return acpi_pcc_write_sset(pcc, SINF_DC_CUR_BRIGHT, bright);
60857 - }
60858 ++ pax_track_stack();
60859 ++
60860 + err = do_pci_op(pdev, &op);
60861
60862 --static struct backlight_ops pcc_backlight_ops = {
60863 -+static const struct backlight_ops pcc_backlight_ops = {
60864 - .get_brightness = bl_get,
60865 - .update_status = bl_set_status,
60866 - };
60867 -diff -urNp linux-2.6.32.48/drivers/platform/x86/sony-laptop.c linux-2.6.32.48/drivers/platform/x86/sony-laptop.c
60868 ---- linux-2.6.32.48/drivers/platform/x86/sony-laptop.c 2009-12-02 22:51:21.000000000 -0500
60869 -+++ linux-2.6.32.48/drivers/platform/x86/sony-laptop.c 2011-11-12 12:46:45.000000000 -0500
60870 -@@ -850,7 +850,7 @@ static int sony_backlight_get_brightness
60871 - }
60872 + /* What should do for error ? */
60873 +@@ -328,6 +336,8 @@ static int pci_frontend_enable_msi(struc
60874 + struct pcifront_sd *sd = dev->bus->sysdata;
60875 + struct pcifront_device *pdev = pcifront_get_pdev(sd);
60876
60877 - static struct backlight_device *sony_backlight_device;
60878 --static struct backlight_ops sony_backlight_ops = {
60879 -+static const struct backlight_ops sony_backlight_ops = {
60880 - .update_status = sony_backlight_update_status,
60881 - .get_brightness = sony_backlight_get_brightness,
60882 - };
60883 -diff -urNp linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c
60884 ---- linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c 2011-11-12 12:44:29.000000000 -0500
60885 -+++ linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c 2011-11-12 12:46:45.000000000 -0500
60886 -@@ -2139,7 +2139,7 @@ static int hotkey_mask_get(void)
60887 ++ pax_track_stack();
60888 ++
60889 + err = do_pci_op(pdev, &op);
60890 + if (likely(!err)) {
60891 + vector[0] = op.value;
60892 +diff -urNp linux-3.0.8/drivers/platform/x86/thinkpad_acpi.c linux-3.0.8/drivers/platform/x86/thinkpad_acpi.c
60893 +--- linux-3.0.8/drivers/platform/x86/thinkpad_acpi.c 2011-07-21 22:17:23.000000000 -0400
60894 ++++ linux-3.0.8/drivers/platform/x86/thinkpad_acpi.c 2011-08-23 21:47:55.000000000 -0400
60895 +@@ -2094,7 +2094,7 @@ static int hotkey_mask_get(void)
60896 return 0;
60897 }
60898
60899 @@ -36777,31 +33417,10 @@ diff -urNp linux-2.6.32.48/drivers/platform/x86/thinkpad_acpi.c linux-2.6.32.48/
60900 {
60901 /* log only what the user can fix... */
60902 const u32 wantedmask = hotkey_driver_mask &
60903 -@@ -6125,7 +6125,7 @@ static void tpacpi_brightness_notify_cha
60904 - BACKLIGHT_UPDATE_HOTKEY);
60905 - }
60906 -
60907 --static struct backlight_ops ibm_backlight_data = {
60908 -+static const struct backlight_ops ibm_backlight_data = {
60909 - .get_brightness = brightness_get,
60910 - .update_status = brightness_update_status,
60911 - };
60912 -diff -urNp linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c
60913 ---- linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c 2009-12-02 22:51:21.000000000 -0500
60914 -+++ linux-2.6.32.48/drivers/platform/x86/toshiba_acpi.c 2011-11-12 12:46:45.000000000 -0500
60915 -@@ -671,7 +671,7 @@ static acpi_status remove_device(void)
60916 - return AE_OK;
60917 - }
60918 -
60919 --static struct backlight_ops toshiba_backlight_data = {
60920 -+static const struct backlight_ops toshiba_backlight_data = {
60921 - .get_brightness = get_lcd,
60922 - .update_status = set_lcd_status,
60923 - };
60924 -diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c
60925 ---- linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c 2009-12-02 22:51:21.000000000 -0500
60926 -+++ linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c 2011-11-12 12:46:45.000000000 -0500
60927 -@@ -60,7 +60,7 @@ do { \
60928 +diff -urNp linux-3.0.8/drivers/pnp/pnpbios/bioscalls.c linux-3.0.8/drivers/pnp/pnpbios/bioscalls.c
60929 +--- linux-3.0.8/drivers/pnp/pnpbios/bioscalls.c 2011-07-21 22:17:23.000000000 -0400
60930 ++++ linux-3.0.8/drivers/pnp/pnpbios/bioscalls.c 2011-08-23 21:47:55.000000000 -0400
60931 +@@ -59,7 +59,7 @@ do { \
60932 set_desc_limit(&gdt[(selname) >> 3], (size) - 1); \
60933 } while(0)
60934
60935 @@ -36810,7 +33429,7 @@ diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drive
60936 (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1);
60937
60938 /*
60939 -@@ -97,7 +97,10 @@ static inline u16 call_pnp_bios(u16 func
60940 +@@ -96,7 +96,10 @@ static inline u16 call_pnp_bios(u16 func
60941
60942 cpu = get_cpu();
60943 save_desc_40 = get_cpu_gdt_table(cpu)[0x40 / 8];
60944 @@ -36821,7 +33440,7 @@ diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drive
60945
60946 /* On some boxes IRQ's during PnP BIOS calls are deadly. */
60947 spin_lock_irqsave(&pnp_bios_lock, flags);
60948 -@@ -135,7 +138,10 @@ static inline u16 call_pnp_bios(u16 func
60949 +@@ -134,7 +137,10 @@ static inline u16 call_pnp_bios(u16 func
60950 :"memory");
60951 spin_unlock_irqrestore(&pnp_bios_lock, flags);
60952
60953 @@ -36832,7 +33451,7 @@ diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drive
60954 put_cpu();
60955
60956 /* If we get here and this is set then the PnP BIOS faulted on us. */
60957 -@@ -469,7 +475,7 @@ int pnp_bios_read_escd(char *data, u32 n
60958 +@@ -468,7 +474,7 @@ int pnp_bios_read_escd(char *data, u32 n
60959 return status;
60960 }
60961
60962 @@ -36841,7 +33460,7 @@ diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drive
60963 {
60964 int i;
60965
60966 -@@ -477,6 +483,8 @@ void pnpbios_calls_init(union pnp_bios_i
60967 +@@ -476,6 +482,8 @@ void pnpbios_calls_init(union pnp_bios_i
60968 pnp_bios_callpoint.offset = header->fields.pm16offset;
60969 pnp_bios_callpoint.segment = PNP_CS16;
60970
60971 @@ -36850,17 +33469,17 @@ diff -urNp linux-2.6.32.48/drivers/pnp/pnpbios/bioscalls.c linux-2.6.32.48/drive
60972 for_each_possible_cpu(i) {
60973 struct desc_struct *gdt = get_cpu_gdt_table(i);
60974 if (!gdt)
60975 -@@ -488,4 +496,6 @@ void pnpbios_calls_init(union pnp_bios_i
60976 +@@ -487,4 +495,6 @@ void pnpbios_calls_init(union pnp_bios_i
60977 set_desc_base(&gdt[GDT_ENTRY_PNPBIOS_DS],
60978 (unsigned long)__va(header->fields.pm16dseg));
60979 }
60980 +
60981 + pax_close_kernel();
60982 }
60983 -diff -urNp linux-2.6.32.48/drivers/pnp/resource.c linux-2.6.32.48/drivers/pnp/resource.c
60984 ---- linux-2.6.32.48/drivers/pnp/resource.c 2009-12-02 22:51:21.000000000 -0500
60985 -+++ linux-2.6.32.48/drivers/pnp/resource.c 2011-11-12 12:46:45.000000000 -0500
60986 -@@ -355,7 +355,7 @@ int pnp_check_irq(struct pnp_dev *dev, s
60987 +diff -urNp linux-3.0.8/drivers/pnp/resource.c linux-3.0.8/drivers/pnp/resource.c
60988 +--- linux-3.0.8/drivers/pnp/resource.c 2011-07-21 22:17:23.000000000 -0400
60989 ++++ linux-3.0.8/drivers/pnp/resource.c 2011-08-23 21:47:55.000000000 -0400
60990 +@@ -360,7 +360,7 @@ int pnp_check_irq(struct pnp_dev *dev, s
60991 return 1;
60992
60993 /* check if the resource is valid */
60994 @@ -36869,7 +33488,7 @@ diff -urNp linux-2.6.32.48/drivers/pnp/resource.c linux-2.6.32.48/drivers/pnp/re
60995 return 0;
60996
60997 /* check if the resource is reserved */
60998 -@@ -419,7 +419,7 @@ int pnp_check_dma(struct pnp_dev *dev, s
60999 +@@ -424,7 +424,7 @@ int pnp_check_dma(struct pnp_dev *dev, s
61000 return 1;
61001
61002 /* check if the resource is valid */
61003 @@ -36878,21 +33497,55 @@ diff -urNp linux-2.6.32.48/drivers/pnp/resource.c linux-2.6.32.48/drivers/pnp/re
61004 return 0;
61005
61006 /* check if the resource is reserved */
61007 -diff -urNp linux-2.6.32.48/drivers/power/bq27x00_battery.c linux-2.6.32.48/drivers/power/bq27x00_battery.c
61008 ---- linux-2.6.32.48/drivers/power/bq27x00_battery.c 2009-12-02 22:51:21.000000000 -0500
61009 -+++ linux-2.6.32.48/drivers/power/bq27x00_battery.c 2011-11-12 12:46:45.000000000 -0500
61010 -@@ -44,7 +44,7 @@ struct bq27x00_device_info;
61011 +diff -urNp linux-3.0.8/drivers/power/bq27x00_battery.c linux-3.0.8/drivers/power/bq27x00_battery.c
61012 +--- linux-3.0.8/drivers/power/bq27x00_battery.c 2011-07-21 22:17:23.000000000 -0400
61013 ++++ linux-3.0.8/drivers/power/bq27x00_battery.c 2011-08-23 21:47:55.000000000 -0400
61014 +@@ -67,7 +67,7 @@
61015 + struct bq27x00_device_info;
61016 struct bq27x00_access_methods {
61017 - int (*read)(u8 reg, int *rt_value, int b_single,
61018 - struct bq27x00_device_info *di);
61019 + int (*read)(struct bq27x00_device_info *di, u8 reg, bool single);
61020 -};
61021 +} __no_const;
61022
61023 - struct bq27x00_device_info {
61024 - struct device *dev;
61025 -diff -urNp linux-2.6.32.48/drivers/rtc/rtc-dev.c linux-2.6.32.48/drivers/rtc/rtc-dev.c
61026 ---- linux-2.6.32.48/drivers/rtc/rtc-dev.c 2009-12-02 22:51:21.000000000 -0500
61027 -+++ linux-2.6.32.48/drivers/rtc/rtc-dev.c 2011-11-12 12:46:45.000000000 -0500
61028 + enum bq27x00_chip { BQ27000, BQ27500 };
61029 +
61030 +diff -urNp linux-3.0.8/drivers/regulator/max8660.c linux-3.0.8/drivers/regulator/max8660.c
61031 +--- linux-3.0.8/drivers/regulator/max8660.c 2011-07-21 22:17:23.000000000 -0400
61032 ++++ linux-3.0.8/drivers/regulator/max8660.c 2011-08-23 21:47:55.000000000 -0400
61033 +@@ -383,8 +383,10 @@ static int __devinit max8660_probe(struc
61034 + max8660->shadow_regs[MAX8660_OVER1] = 5;
61035 + } else {
61036 + /* Otherwise devices can be toggled via software */
61037 +- max8660_dcdc_ops.enable = max8660_dcdc_enable;
61038 +- max8660_dcdc_ops.disable = max8660_dcdc_disable;
61039 ++ pax_open_kernel();
61040 ++ *(void **)&max8660_dcdc_ops.enable = max8660_dcdc_enable;
61041 ++ *(void **)&max8660_dcdc_ops.disable = max8660_dcdc_disable;
61042 ++ pax_close_kernel();
61043 + }
61044 +
61045 + /*
61046 +diff -urNp linux-3.0.8/drivers/regulator/mc13892-regulator.c linux-3.0.8/drivers/regulator/mc13892-regulator.c
61047 +--- linux-3.0.8/drivers/regulator/mc13892-regulator.c 2011-07-21 22:17:23.000000000 -0400
61048 ++++ linux-3.0.8/drivers/regulator/mc13892-regulator.c 2011-08-23 21:47:55.000000000 -0400
61049 +@@ -564,10 +564,12 @@ static int __devinit mc13892_regulator_p
61050 + }
61051 + mc13xxx_unlock(mc13892);
61052 +
61053 +- mc13892_regulators[MC13892_VCAM].desc.ops->set_mode
61054 ++ pax_open_kernel();
61055 ++ *(void **)&mc13892_regulators[MC13892_VCAM].desc.ops->set_mode
61056 + = mc13892_vcam_set_mode;
61057 +- mc13892_regulators[MC13892_VCAM].desc.ops->get_mode
61058 ++ *(void **)&mc13892_regulators[MC13892_VCAM].desc.ops->get_mode
61059 + = mc13892_vcam_get_mode;
61060 ++ pax_close_kernel();
61061 + for (i = 0; i < pdata->num_regulators; i++) {
61062 + init_data = &pdata->regulators[i];
61063 + priv->regulators[i] = regulator_register(
61064 +diff -urNp linux-3.0.8/drivers/rtc/rtc-dev.c linux-3.0.8/drivers/rtc/rtc-dev.c
61065 +--- linux-3.0.8/drivers/rtc/rtc-dev.c 2011-07-21 22:17:23.000000000 -0400
61066 ++++ linux-3.0.8/drivers/rtc/rtc-dev.c 2011-08-23 21:48:14.000000000 -0400
61067 @@ -14,6 +14,7 @@
61068 #include <linux/module.h>
61069 #include <linux/rtc.h>
61070 @@ -36901,7 +33554,7 @@ diff -urNp linux-2.6.32.48/drivers/rtc/rtc-dev.c linux-2.6.32.48/drivers/rtc/rtc
61071 #include "rtc-core.h"
61072
61073 static dev_t rtc_devt;
61074 -@@ -357,6 +358,8 @@ static long rtc_dev_ioctl(struct file *f
61075 +@@ -345,6 +346,8 @@ static long rtc_dev_ioctl(struct file *f
61076 if (copy_from_user(&tm, uarg, sizeof(tm)))
61077 return -EFAULT;
61078
61079 @@ -36910,163 +33563,10 @@ diff -urNp linux-2.6.32.48/drivers/rtc/rtc-dev.c linux-2.6.32.48/drivers/rtc/rtc
61080 return rtc_set_time(rtc, &tm);
61081
61082 case RTC_PIE_ON:
61083 -diff -urNp linux-2.6.32.48/drivers/s390/cio/qdio_perf.c linux-2.6.32.48/drivers/s390/cio/qdio_perf.c
61084 ---- linux-2.6.32.48/drivers/s390/cio/qdio_perf.c 2009-12-02 22:51:21.000000000 -0500
61085 -+++ linux-2.6.32.48/drivers/s390/cio/qdio_perf.c 2011-11-12 12:46:45.000000000 -0500
61086 -@@ -31,51 +31,51 @@ static struct proc_dir_entry *qdio_perf_
61087 - static int qdio_perf_proc_show(struct seq_file *m, void *v)
61088 - {
61089 - seq_printf(m, "Number of qdio interrupts\t\t\t: %li\n",
61090 -- (long)atomic_long_read(&perf_stats.qdio_int));
61091 -+ (long)atomic_long_read_unchecked(&perf_stats.qdio_int));
61092 - seq_printf(m, "Number of PCI interrupts\t\t\t: %li\n",
61093 -- (long)atomic_long_read(&perf_stats.pci_int));
61094 -+ (long)atomic_long_read_unchecked(&perf_stats.pci_int));
61095 - seq_printf(m, "Number of adapter interrupts\t\t\t: %li\n",
61096 -- (long)atomic_long_read(&perf_stats.thin_int));
61097 -+ (long)atomic_long_read_unchecked(&perf_stats.thin_int));
61098 - seq_printf(m, "\n");
61099 - seq_printf(m, "Inbound tasklet runs\t\t\t\t: %li\n",
61100 -- (long)atomic_long_read(&perf_stats.tasklet_inbound));
61101 -+ (long)atomic_long_read_unchecked(&perf_stats.tasklet_inbound));
61102 - seq_printf(m, "Outbound tasklet runs\t\t\t\t: %li\n",
61103 -- (long)atomic_long_read(&perf_stats.tasklet_outbound));
61104 -+ (long)atomic_long_read_unchecked(&perf_stats.tasklet_outbound));
61105 - seq_printf(m, "Adapter interrupt tasklet runs/loops\t\t: %li/%li\n",
61106 -- (long)atomic_long_read(&perf_stats.tasklet_thinint),
61107 -- (long)atomic_long_read(&perf_stats.tasklet_thinint_loop));
61108 -+ (long)atomic_long_read_unchecked(&perf_stats.tasklet_thinint),
61109 -+ (long)atomic_long_read_unchecked(&perf_stats.tasklet_thinint_loop));
61110 - seq_printf(m, "Adapter interrupt inbound tasklet runs/loops\t: %li/%li\n",
61111 -- (long)atomic_long_read(&perf_stats.thinint_inbound),
61112 -- (long)atomic_long_read(&perf_stats.thinint_inbound_loop));
61113 -+ (long)atomic_long_read_unchecked(&perf_stats.thinint_inbound),
61114 -+ (long)atomic_long_read_unchecked(&perf_stats.thinint_inbound_loop));
61115 - seq_printf(m, "\n");
61116 - seq_printf(m, "Number of SIGA In issued\t\t\t: %li\n",
61117 -- (long)atomic_long_read(&perf_stats.siga_in));
61118 -+ (long)atomic_long_read_unchecked(&perf_stats.siga_in));
61119 - seq_printf(m, "Number of SIGA Out issued\t\t\t: %li\n",
61120 -- (long)atomic_long_read(&perf_stats.siga_out));
61121 -+ (long)atomic_long_read_unchecked(&perf_stats.siga_out));
61122 - seq_printf(m, "Number of SIGA Sync issued\t\t\t: %li\n",
61123 -- (long)atomic_long_read(&perf_stats.siga_sync));
61124 -+ (long)atomic_long_read_unchecked(&perf_stats.siga_sync));
61125 - seq_printf(m, "\n");
61126 - seq_printf(m, "Number of inbound transfers\t\t\t: %li\n",
61127 -- (long)atomic_long_read(&perf_stats.inbound_handler));
61128 -+ (long)atomic_long_read_unchecked(&perf_stats.inbound_handler));
61129 - seq_printf(m, "Number of outbound transfers\t\t\t: %li\n",
61130 -- (long)atomic_long_read(&perf_stats.outbound_handler));
61131 -+ (long)atomic_long_read_unchecked(&perf_stats.outbound_handler));
61132 - seq_printf(m, "\n");
61133 - seq_printf(m, "Number of fast requeues (outg. SBAL w/o SIGA)\t: %li\n",
61134 -- (long)atomic_long_read(&perf_stats.fast_requeue));
61135 -+ (long)atomic_long_read_unchecked(&perf_stats.fast_requeue));
61136 - seq_printf(m, "Number of outbound target full condition\t: %li\n",
61137 -- (long)atomic_long_read(&perf_stats.outbound_target_full));
61138 -+ (long)atomic_long_read_unchecked(&perf_stats.outbound_target_full));
61139 - seq_printf(m, "Number of outbound tasklet mod_timer calls\t: %li\n",
61140 -- (long)atomic_long_read(&perf_stats.debug_tl_out_timer));
61141 -+ (long)atomic_long_read_unchecked(&perf_stats.debug_tl_out_timer));
61142 - seq_printf(m, "Number of stop polling calls\t\t\t: %li\n",
61143 -- (long)atomic_long_read(&perf_stats.debug_stop_polling));
61144 -+ (long)atomic_long_read_unchecked(&perf_stats.debug_stop_polling));
61145 - seq_printf(m, "AI inbound tasklet loops after stop polling\t: %li\n",
61146 -- (long)atomic_long_read(&perf_stats.thinint_inbound_loop2));
61147 -+ (long)atomic_long_read_unchecked(&perf_stats.thinint_inbound_loop2));
61148 - seq_printf(m, "QEBSM EQBS total/incomplete\t\t\t: %li/%li\n",
61149 -- (long)atomic_long_read(&perf_stats.debug_eqbs_all),
61150 -- (long)atomic_long_read(&perf_stats.debug_eqbs_incomplete));
61151 -+ (long)atomic_long_read_unchecked(&perf_stats.debug_eqbs_all),
61152 -+ (long)atomic_long_read_unchecked(&perf_stats.debug_eqbs_incomplete));
61153 - seq_printf(m, "QEBSM SQBS total/incomplete\t\t\t: %li/%li\n",
61154 -- (long)atomic_long_read(&perf_stats.debug_sqbs_all),
61155 -- (long)atomic_long_read(&perf_stats.debug_sqbs_incomplete));
61156 -+ (long)atomic_long_read_unchecked(&perf_stats.debug_sqbs_all),
61157 -+ (long)atomic_long_read_unchecked(&perf_stats.debug_sqbs_incomplete));
61158 - seq_printf(m, "\n");
61159 - return 0;
61160 - }
61161 -diff -urNp linux-2.6.32.48/drivers/s390/cio/qdio_perf.h linux-2.6.32.48/drivers/s390/cio/qdio_perf.h
61162 ---- linux-2.6.32.48/drivers/s390/cio/qdio_perf.h 2009-12-02 22:51:21.000000000 -0500
61163 -+++ linux-2.6.32.48/drivers/s390/cio/qdio_perf.h 2011-11-12 12:46:45.000000000 -0500
61164 -@@ -13,46 +13,46 @@
61165 -
61166 - struct qdio_perf_stats {
61167 - /* interrupt handler calls */
61168 -- atomic_long_t qdio_int;
61169 -- atomic_long_t pci_int;
61170 -- atomic_long_t thin_int;
61171 -+ atomic_long_unchecked_t qdio_int;
61172 -+ atomic_long_unchecked_t pci_int;
61173 -+ atomic_long_unchecked_t thin_int;
61174 -
61175 - /* tasklet runs */
61176 -- atomic_long_t tasklet_inbound;
61177 -- atomic_long_t tasklet_outbound;
61178 -- atomic_long_t tasklet_thinint;
61179 -- atomic_long_t tasklet_thinint_loop;
61180 -- atomic_long_t thinint_inbound;
61181 -- atomic_long_t thinint_inbound_loop;
61182 -- atomic_long_t thinint_inbound_loop2;
61183 -+ atomic_long_unchecked_t tasklet_inbound;
61184 -+ atomic_long_unchecked_t tasklet_outbound;
61185 -+ atomic_long_unchecked_t tasklet_thinint;
61186 -+ atomic_long_unchecked_t tasklet_thinint_loop;
61187 -+ atomic_long_unchecked_t thinint_inbound;
61188 -+ atomic_long_unchecked_t thinint_inbound_loop;
61189 -+ atomic_long_unchecked_t thinint_inbound_loop2;
61190 -
61191 - /* signal adapter calls */
61192 -- atomic_long_t siga_out;
61193 -- atomic_long_t siga_in;
61194 -- atomic_long_t siga_sync;
61195 -+ atomic_long_unchecked_t siga_out;
61196 -+ atomic_long_unchecked_t siga_in;
61197 -+ atomic_long_unchecked_t siga_sync;
61198 -
61199 - /* misc */
61200 -- atomic_long_t inbound_handler;
61201 -- atomic_long_t outbound_handler;
61202 -- atomic_long_t fast_requeue;
61203 -- atomic_long_t outbound_target_full;
61204 -+ atomic_long_unchecked_t inbound_handler;
61205 -+ atomic_long_unchecked_t outbound_handler;
61206 -+ atomic_long_unchecked_t fast_requeue;
61207 -+ atomic_long_unchecked_t outbound_target_full;
61208 -
61209 - /* for debugging */
61210 -- atomic_long_t debug_tl_out_timer;
61211 -- atomic_long_t debug_stop_polling;
61212 -- atomic_long_t debug_eqbs_all;
61213 -- atomic_long_t debug_eqbs_incomplete;
61214 -- atomic_long_t debug_sqbs_all;
61215 -- atomic_long_t debug_sqbs_incomplete;
61216 -+ atomic_long_unchecked_t debug_tl_out_timer;
61217 -+ atomic_long_unchecked_t debug_stop_polling;
61218 -+ atomic_long_unchecked_t debug_eqbs_all;
61219 -+ atomic_long_unchecked_t debug_eqbs_incomplete;
61220 -+ atomic_long_unchecked_t debug_sqbs_all;
61221 -+ atomic_long_unchecked_t debug_sqbs_incomplete;
61222 - };
61223 -
61224 - extern struct qdio_perf_stats perf_stats;
61225 - extern int qdio_performance_stats;
61226 -
61227 --static inline void qdio_perf_stat_inc(atomic_long_t *count)
61228 -+static inline void qdio_perf_stat_inc(atomic_long_unchecked_t *count)
61229 - {
61230 - if (qdio_performance_stats)
61231 -- atomic_long_inc(count);
61232 -+ atomic_long_inc_unchecked(count);
61233 - }
61234 -
61235 - int qdio_setup_perf_stats(void);
61236 -diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h
61237 ---- linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h 2009-12-02 22:51:21.000000000 -0500
61238 -+++ linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h 2011-11-12 12:46:45.000000000 -0500
61239 -@@ -471,7 +471,7 @@ struct adapter_ops
61240 +diff -urNp linux-3.0.8/drivers/scsi/aacraid/aacraid.h linux-3.0.8/drivers/scsi/aacraid/aacraid.h
61241 +--- linux-3.0.8/drivers/scsi/aacraid/aacraid.h 2011-07-21 22:17:23.000000000 -0400
61242 ++++ linux-3.0.8/drivers/scsi/aacraid/aacraid.h 2011-08-23 21:47:55.000000000 -0400
61243 +@@ -492,7 +492,7 @@ struct adapter_ops
61244 int (*adapter_scsi)(struct fib * fib, struct scsi_cmnd * cmd);
61245 /* Administrative operations */
61246 int (*adapter_comm)(struct aac_dev * dev, int comm);
61247 @@ -37075,10 +33575,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/aacraid.h linux-2.6.32.48/driver
61248
61249 /*
61250 * Define which interrupt handler needs to be installed
61251 -diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c
61252 ---- linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c 2011-11-12 12:44:29.000000000 -0500
61253 -+++ linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c 2011-11-12 12:46:45.000000000 -0500
61254 -@@ -481,6 +481,7 @@ static int aac_send_raw_srb(struct aac_d
61255 +diff -urNp linux-3.0.8/drivers/scsi/aacraid/commctrl.c linux-3.0.8/drivers/scsi/aacraid/commctrl.c
61256 +--- linux-3.0.8/drivers/scsi/aacraid/commctrl.c 2011-07-21 22:17:23.000000000 -0400
61257 ++++ linux-3.0.8/drivers/scsi/aacraid/commctrl.c 2011-08-23 21:48:14.000000000 -0400
61258 +@@ -482,6 +482,7 @@ static int aac_send_raw_srb(struct aac_d
61259 u32 actual_fibsize64, actual_fibsize = 0;
61260 int i;
61261
61262 @@ -37086,46 +33586,112 @@ diff -urNp linux-2.6.32.48/drivers/scsi/aacraid/commctrl.c linux-2.6.32.48/drive
61263
61264 if (dev->in_reset) {
61265 dprintk((KERN_DEBUG"aacraid: send raw srb -EBUSY\n"));
61266 -diff -urNp linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c
61267 ---- linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c 2009-12-02 22:51:21.000000000 -0500
61268 -+++ linux-2.6.32.48/drivers/scsi/aic94xx/aic94xx_init.c 2011-11-12 12:46:45.000000000 -0500
61269 -@@ -485,7 +485,7 @@ static ssize_t asd_show_update_bios(stru
61270 - flash_error_table[i].reason);
61271 - }
61272 -
61273 --static DEVICE_ATTR(update_bios, S_IRUGO|S_IWUGO,
61274 -+static DEVICE_ATTR(update_bios, S_IRUGO|S_IWUSR,
61275 - asd_show_update_bios, asd_store_update_bios);
61276 -
61277 - static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
61278 -diff -urNp linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h
61279 ---- linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h 2009-12-02 22:51:21.000000000 -0500
61280 -+++ linux-2.6.32.48/drivers/scsi/bfa/bfa_iocfc.h 2011-11-12 12:46:45.000000000 -0500
61281 -@@ -61,7 +61,7 @@ struct bfa_hwif_s {
61282 - void (*hw_isr_mode_set)(struct bfa_s *bfa, bfa_boolean_t msix);
61283 - void (*hw_msix_getvecs)(struct bfa_s *bfa, u32 *vecmap,
61284 - u32 *nvecs, u32 *maxvec);
61285 +diff -urNp linux-3.0.8/drivers/scsi/aacraid/linit.c linux-3.0.8/drivers/scsi/aacraid/linit.c
61286 +--- linux-3.0.8/drivers/scsi/aacraid/linit.c 2011-07-21 22:17:23.000000000 -0400
61287 ++++ linux-3.0.8/drivers/scsi/aacraid/linit.c 2011-10-11 10:44:33.000000000 -0400
61288 +@@ -92,7 +92,7 @@ static DECLARE_PCI_DEVICE_TABLE(aac_pci_
61289 + #elif defined(__devinitconst)
61290 + static const struct pci_device_id aac_pci_tbl[] __devinitconst = {
61291 + #else
61292 +-static const struct pci_device_id aac_pci_tbl[] __devinitdata = {
61293 ++static const struct pci_device_id aac_pci_tbl[] __devinitconst = {
61294 + #endif
61295 + { 0x1028, 0x0001, 0x1028, 0x0001, 0, 0, 0 }, /* PERC 2/Si (Iguana/PERC2Si) */
61296 + { 0x1028, 0x0002, 0x1028, 0x0002, 0, 0, 1 }, /* PERC 3/Di (Opal/PERC3Di) */
61297 +diff -urNp linux-3.0.8/drivers/scsi/aic94xx/aic94xx_init.c linux-3.0.8/drivers/scsi/aic94xx/aic94xx_init.c
61298 +--- linux-3.0.8/drivers/scsi/aic94xx/aic94xx_init.c 2011-07-21 22:17:23.000000000 -0400
61299 ++++ linux-3.0.8/drivers/scsi/aic94xx/aic94xx_init.c 2011-10-11 10:44:33.000000000 -0400
61300 +@@ -1012,7 +1012,7 @@ static struct sas_domain_function_templa
61301 + .lldd_control_phy = asd_control_phy,
61302 + };
61303 +
61304 +-static const struct pci_device_id aic94xx_pci_table[] __devinitdata = {
61305 ++static const struct pci_device_id aic94xx_pci_table[] __devinitconst = {
61306 + {PCI_DEVICE(PCI_VENDOR_ID_ADAPTEC2, 0x410),0, 0, 1},
61307 + {PCI_DEVICE(PCI_VENDOR_ID_ADAPTEC2, 0x412),0, 0, 1},
61308 + {PCI_DEVICE(PCI_VENDOR_ID_ADAPTEC2, 0x416),0, 0, 1},
61309 +diff -urNp linux-3.0.8/drivers/scsi/bfa/bfad.c linux-3.0.8/drivers/scsi/bfa/bfad.c
61310 +--- linux-3.0.8/drivers/scsi/bfa/bfad.c 2011-07-21 22:17:23.000000000 -0400
61311 ++++ linux-3.0.8/drivers/scsi/bfa/bfad.c 2011-08-23 21:48:14.000000000 -0400
61312 +@@ -1032,6 +1032,8 @@ bfad_start_ops(struct bfad_s *bfad) {
61313 + struct bfad_vport_s *vport, *vport_new;
61314 + struct bfa_fcs_driver_info_s driver_info;
61315 +
61316 ++ pax_track_stack();
61317 ++
61318 + /* Fill the driver_info info to fcs*/
61319 + memset(&driver_info, 0, sizeof(driver_info));
61320 + strncpy(driver_info.version, BFAD_DRIVER_VERSION,
61321 +diff -urNp linux-3.0.8/drivers/scsi/bfa/bfa_fcs_lport.c linux-3.0.8/drivers/scsi/bfa/bfa_fcs_lport.c
61322 +--- linux-3.0.8/drivers/scsi/bfa/bfa_fcs_lport.c 2011-07-21 22:17:23.000000000 -0400
61323 ++++ linux-3.0.8/drivers/scsi/bfa/bfa_fcs_lport.c 2011-08-23 21:48:14.000000000 -0400
61324 +@@ -1559,6 +1559,8 @@ bfa_fcs_lport_fdmi_build_rhba_pyld(struc
61325 + u16 len, count;
61326 + u16 templen;
61327 +
61328 ++ pax_track_stack();
61329 ++
61330 + /*
61331 + * get hba attributes
61332 + */
61333 +@@ -1836,6 +1838,8 @@ bfa_fcs_lport_fdmi_build_portattr_block(
61334 + u8 count = 0;
61335 + u16 templen;
61336 +
61337 ++ pax_track_stack();
61338 ++
61339 + /*
61340 + * get port attributes
61341 + */
61342 +diff -urNp linux-3.0.8/drivers/scsi/bfa/bfa_fcs_rport.c linux-3.0.8/drivers/scsi/bfa/bfa_fcs_rport.c
61343 +--- linux-3.0.8/drivers/scsi/bfa/bfa_fcs_rport.c 2011-07-21 22:17:23.000000000 -0400
61344 ++++ linux-3.0.8/drivers/scsi/bfa/bfa_fcs_rport.c 2011-08-23 21:48:14.000000000 -0400
61345 +@@ -1844,6 +1844,8 @@ bfa_fcs_rport_process_rpsc(struct bfa_fc
61346 + struct fc_rpsc_speed_info_s speeds;
61347 + struct bfa_port_attr_s pport_attr;
61348 +
61349 ++ pax_track_stack();
61350 ++
61351 + bfa_trc(port->fcs, rx_fchs->s_id);
61352 + bfa_trc(port->fcs, rx_fchs->d_id);
61353 +
61354 +diff -urNp linux-3.0.8/drivers/scsi/bfa/bfa.h linux-3.0.8/drivers/scsi/bfa/bfa.h
61355 +--- linux-3.0.8/drivers/scsi/bfa/bfa.h 2011-07-21 22:17:23.000000000 -0400
61356 ++++ linux-3.0.8/drivers/scsi/bfa/bfa.h 2011-08-23 21:47:55.000000000 -0400
61357 +@@ -238,7 +238,7 @@ struct bfa_hwif_s {
61358 + u32 *nvecs, u32 *maxvec);
61359 + void (*hw_msix_get_rme_range) (struct bfa_s *bfa, u32 *start,
61360 + u32 *end);
61361 -};
61362 +} __no_const;
61363 typedef void (*bfa_cb_iocfc_t) (void *cbarg, enum bfa_status status);
61364
61365 struct bfa_iocfc_s {
61366 -diff -urNp linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h
61367 ---- linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h 2009-12-02 22:51:21.000000000 -0500
61368 -+++ linux-2.6.32.48/drivers/scsi/bfa/bfa_ioc.h 2011-11-12 12:46:45.000000000 -0500
61369 -@@ -127,7 +127,7 @@ struct bfa_ioc_cbfn_s {
61370 +diff -urNp linux-3.0.8/drivers/scsi/bfa/bfa_ioc.h linux-3.0.8/drivers/scsi/bfa/bfa_ioc.h
61371 +--- linux-3.0.8/drivers/scsi/bfa/bfa_ioc.h 2011-07-21 22:17:23.000000000 -0400
61372 ++++ linux-3.0.8/drivers/scsi/bfa/bfa_ioc.h 2011-08-23 21:47:55.000000000 -0400
61373 +@@ -196,7 +196,7 @@ struct bfa_ioc_cbfn_s {
61374 bfa_ioc_disable_cbfn_t disable_cbfn;
61375 bfa_ioc_hbfail_cbfn_t hbfail_cbfn;
61376 bfa_ioc_reset_cbfn_t reset_cbfn;
61377 -};
61378 +} __no_const;
61379
61380 - /**
61381 + /*
61382 * Heartbeat failure notification queue element.
61383 -diff -urNp linux-2.6.32.48/drivers/scsi/BusLogic.c linux-2.6.32.48/drivers/scsi/BusLogic.c
61384 ---- linux-2.6.32.48/drivers/scsi/BusLogic.c 2009-12-02 22:51:21.000000000 -0500
61385 -+++ linux-2.6.32.48/drivers/scsi/BusLogic.c 2011-11-12 12:46:45.000000000 -0500
61386 -@@ -961,6 +961,8 @@ static int __init BusLogic_InitializeFla
61387 +@@ -268,7 +268,7 @@ struct bfa_ioc_hwif_s {
61388 + void (*ioc_sync_leave) (struct bfa_ioc_s *ioc);
61389 + void (*ioc_sync_ack) (struct bfa_ioc_s *ioc);
61390 + bfa_boolean_t (*ioc_sync_complete) (struct bfa_ioc_s *ioc);
61391 +-};
61392 ++} __no_const;
61393 +
61394 + #define bfa_ioc_pcifn(__ioc) ((__ioc)->pcidev.pci_func)
61395 + #define bfa_ioc_devid(__ioc) ((__ioc)->pcidev.device_id)
61396 +diff -urNp linux-3.0.8/drivers/scsi/BusLogic.c linux-3.0.8/drivers/scsi/BusLogic.c
61397 +--- linux-3.0.8/drivers/scsi/BusLogic.c 2011-07-21 22:17:23.000000000 -0400
61398 ++++ linux-3.0.8/drivers/scsi/BusLogic.c 2011-08-23 21:48:14.000000000 -0400
61399 +@@ -962,6 +962,8 @@ static int __init BusLogic_InitializeFla
61400 static void __init BusLogic_InitializeProbeInfoList(struct BusLogic_HostAdapter
61401 *PrototypeHostAdapter)
61402 {
61403 @@ -37134,10 +33700,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/BusLogic.c linux-2.6.32.48/drivers/scsi/
61404 /*
61405 If a PCI BIOS is present, interrogate it for MultiMaster and FlashPoint
61406 Host Adapters; otherwise, default to the standard ISA MultiMaster probe.
61407 -diff -urNp linux-2.6.32.48/drivers/scsi/dpt_i2o.c linux-2.6.32.48/drivers/scsi/dpt_i2o.c
61408 ---- linux-2.6.32.48/drivers/scsi/dpt_i2o.c 2009-12-02 22:51:21.000000000 -0500
61409 -+++ linux-2.6.32.48/drivers/scsi/dpt_i2o.c 2011-11-12 12:46:45.000000000 -0500
61410 -@@ -1804,6 +1804,8 @@ static int adpt_i2o_passthru(adpt_hba* p
61411 +diff -urNp linux-3.0.8/drivers/scsi/dpt_i2o.c linux-3.0.8/drivers/scsi/dpt_i2o.c
61412 +--- linux-3.0.8/drivers/scsi/dpt_i2o.c 2011-07-21 22:17:23.000000000 -0400
61413 ++++ linux-3.0.8/drivers/scsi/dpt_i2o.c 2011-08-23 21:48:14.000000000 -0400
61414 +@@ -1811,6 +1811,8 @@ static int adpt_i2o_passthru(adpt_hba* p
61415 dma_addr_t addr;
61416 ulong flags = 0;
61417
61418 @@ -37146,7 +33712,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/dpt_i2o.c linux-2.6.32.48/drivers/scsi/d
61419 memset(&msg, 0, MAX_MESSAGE_SIZE*4);
61420 // get user msg size in u32s
61421 if(get_user(size, &user_msg[0])){
61422 -@@ -2297,6 +2299,8 @@ static s32 adpt_scsi_to_i2o(adpt_hba* pH
61423 +@@ -2317,6 +2319,8 @@ static s32 adpt_scsi_to_i2o(adpt_hba* pH
61424 s32 rcode;
61425 dma_addr_t addr;
61426
61427 @@ -37155,9 +33721,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/dpt_i2o.c linux-2.6.32.48/drivers/scsi/d
61428 memset(msg, 0 , sizeof(msg));
61429 len = scsi_bufflen(cmd);
61430 direction = 0x00000000;
61431 -diff -urNp linux-2.6.32.48/drivers/scsi/eata.c linux-2.6.32.48/drivers/scsi/eata.c
61432 ---- linux-2.6.32.48/drivers/scsi/eata.c 2009-12-02 22:51:21.000000000 -0500
61433 -+++ linux-2.6.32.48/drivers/scsi/eata.c 2011-11-12 12:46:45.000000000 -0500
61434 +diff -urNp linux-3.0.8/drivers/scsi/eata.c linux-3.0.8/drivers/scsi/eata.c
61435 +--- linux-3.0.8/drivers/scsi/eata.c 2011-07-21 22:17:23.000000000 -0400
61436 ++++ linux-3.0.8/drivers/scsi/eata.c 2011-08-23 21:48:14.000000000 -0400
61437 @@ -1087,6 +1087,8 @@ static int port_detect(unsigned long por
61438 struct hostdata *ha;
61439 char name[16];
61440 @@ -37167,35 +33733,23 @@ diff -urNp linux-2.6.32.48/drivers/scsi/eata.c linux-2.6.32.48/drivers/scsi/eata
61441 sprintf(name, "%s%d", driver_name, j);
61442
61443 if (!request_region(port_base, REGION_SIZE, driver_name)) {
61444 -diff -urNp linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c
61445 ---- linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c 2009-12-02 22:51:21.000000000 -0500
61446 -+++ linux-2.6.32.48/drivers/scsi/fcoe/libfcoe.c 2011-11-12 12:46:45.000000000 -0500
61447 -@@ -809,6 +809,8 @@ static void fcoe_ctlr_recv_els(struct fc
61448 - size_t rlen;
61449 - size_t dlen;
61450 +diff -urNp linux-3.0.8/drivers/scsi/fcoe/fcoe_ctlr.c linux-3.0.8/drivers/scsi/fcoe/fcoe_ctlr.c
61451 +--- linux-3.0.8/drivers/scsi/fcoe/fcoe_ctlr.c 2011-07-21 22:17:23.000000000 -0400
61452 ++++ linux-3.0.8/drivers/scsi/fcoe/fcoe_ctlr.c 2011-08-23 21:48:14.000000000 -0400
61453 +@@ -2503,6 +2503,8 @@ static int fcoe_ctlr_vn_recv(struct fcoe
61454 + } buf;
61455 + int rc;
61456
61457 + pax_track_stack();
61458 +
61459 fiph = (struct fip_header *)skb->data;
61460 sub = fiph->fip_subcode;
61461 - if (sub != FIP_SC_REQ && sub != FIP_SC_REP)
61462 -diff -urNp linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c
61463 ---- linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c 2009-12-02 22:51:21.000000000 -0500
61464 -+++ linux-2.6.32.48/drivers/scsi/fnic/fnic_main.c 2011-11-12 12:46:45.000000000 -0500
61465 -@@ -669,7 +669,7 @@ static int __devinit fnic_probe(struct p
61466 - /* Start local port initiatialization */
61467 -
61468 - lp->link_up = 0;
61469 -- lp->tt = fnic_transport_template;
61470 -+ memcpy((void *)&lp->tt, &fnic_transport_template, sizeof(fnic_transport_template));
61471 -
61472 - lp->max_retry_count = fnic->config.flogi_retries;
61473 - lp->max_rport_retry_count = fnic->config.plogi_retries;
61474 -diff -urNp linux-2.6.32.48/drivers/scsi/gdth.c linux-2.6.32.48/drivers/scsi/gdth.c
61475 ---- linux-2.6.32.48/drivers/scsi/gdth.c 2011-11-12 12:44:29.000000000 -0500
61476 -+++ linux-2.6.32.48/drivers/scsi/gdth.c 2011-11-12 12:46:45.000000000 -0500
61477 -@@ -4102,6 +4102,8 @@ static int ioc_lockdrv(void __user *arg)
61478 - ulong flags;
61479 +
61480 +diff -urNp linux-3.0.8/drivers/scsi/gdth.c linux-3.0.8/drivers/scsi/gdth.c
61481 +--- linux-3.0.8/drivers/scsi/gdth.c 2011-07-21 22:17:23.000000000 -0400
61482 ++++ linux-3.0.8/drivers/scsi/gdth.c 2011-08-23 21:48:14.000000000 -0400
61483 +@@ -4107,6 +4107,8 @@ static int ioc_lockdrv(void __user *arg)
61484 + unsigned long flags;
61485 gdth_ha_str *ha;
61486
61487 + pax_track_stack();
61488 @@ -37203,7 +33757,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/gdth.c linux-2.6.32.48/drivers/scsi/gdth
61489 if (copy_from_user(&ldrv, arg, sizeof(gdth_ioctl_lockdrv)))
61490 return -EFAULT;
61491 ha = gdth_find_ha(ldrv.ionode);
61492 -@@ -4134,6 +4136,8 @@ static int ioc_resetdrv(void __user *arg
61493 +@@ -4139,6 +4141,8 @@ static int ioc_resetdrv(void __user *arg
61494 gdth_ha_str *ha;
61495 int rval;
61496
61497 @@ -37212,7 +33766,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/gdth.c linux-2.6.32.48/drivers/scsi/gdth
61498 if (copy_from_user(&res, arg, sizeof(gdth_ioctl_reset)) ||
61499 res.number >= MAX_HDRIVES)
61500 return -EFAULT;
61501 -@@ -4169,6 +4173,8 @@ static int ioc_general(void __user *arg,
61502 +@@ -4174,6 +4178,8 @@ static int ioc_general(void __user *arg,
61503 gdth_ha_str *ha;
61504 int rval;
61505
61506 @@ -37221,7 +33775,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/gdth.c linux-2.6.32.48/drivers/scsi/gdth
61507 if (copy_from_user(&gen, arg, sizeof(gdth_ioctl_general)))
61508 return -EFAULT;
61509 ha = gdth_find_ha(gen.ionode);
61510 -@@ -4625,6 +4631,9 @@ static void gdth_flush(gdth_ha_str *ha)
61511 +@@ -4642,6 +4648,9 @@ static void gdth_flush(gdth_ha_str *ha)
61512 int i;
61513 gdth_cmd_str gdtcmd;
61514 char cmnd[MAX_COMMAND_SIZE];
61515 @@ -37231,11 +33785,11 @@ diff -urNp linux-2.6.32.48/drivers/scsi/gdth.c linux-2.6.32.48/drivers/scsi/gdth
61516 memset(cmnd, 0xff, MAX_COMMAND_SIZE);
61517
61518 TRACE2(("gdth_flush() hanum %d\n", ha->hanum));
61519 -diff -urNp linux-2.6.32.48/drivers/scsi/gdth_proc.c linux-2.6.32.48/drivers/scsi/gdth_proc.c
61520 ---- linux-2.6.32.48/drivers/scsi/gdth_proc.c 2009-12-02 22:51:21.000000000 -0500
61521 -+++ linux-2.6.32.48/drivers/scsi/gdth_proc.c 2011-11-12 12:46:45.000000000 -0500
61522 -@@ -46,6 +46,9 @@ static int gdth_set_asc_info(struct Scsi
61523 - ulong64 paddr;
61524 +diff -urNp linux-3.0.8/drivers/scsi/gdth_proc.c linux-3.0.8/drivers/scsi/gdth_proc.c
61525 +--- linux-3.0.8/drivers/scsi/gdth_proc.c 2011-07-21 22:17:23.000000000 -0400
61526 ++++ linux-3.0.8/drivers/scsi/gdth_proc.c 2011-08-23 21:48:14.000000000 -0400
61527 +@@ -47,6 +47,9 @@ static int gdth_set_asc_info(struct Scsi
61528 + u64 paddr;
61529
61530 char cmnd[MAX_COMMAND_SIZE];
61531 +
61532 @@ -37244,51 +33798,168 @@ diff -urNp linux-2.6.32.48/drivers/scsi/gdth_proc.c linux-2.6.32.48/drivers/scsi
61533 memset(cmnd, 0xff, 12);
61534 memset(&gdtcmd, 0, sizeof(gdth_cmd_str));
61535
61536 -@@ -174,6 +177,8 @@ static int gdth_get_info(char *buffer,ch
61537 +@@ -175,6 +178,8 @@ static int gdth_get_info(char *buffer,ch
61538 gdth_hget_str *phg;
61539 char cmnd[MAX_COMMAND_SIZE];
61540
61541 -+ pax_track_stack();
61542 -+
61543 - gdtcmd = kmalloc(sizeof(*gdtcmd), GFP_KERNEL);
61544 - estr = kmalloc(sizeof(*estr), GFP_KERNEL);
61545 - if (!gdtcmd || !estr)
61546 -diff -urNp linux-2.6.32.48/drivers/scsi/hosts.c linux-2.6.32.48/drivers/scsi/hosts.c
61547 ---- linux-2.6.32.48/drivers/scsi/hosts.c 2011-11-12 12:44:29.000000000 -0500
61548 -+++ linux-2.6.32.48/drivers/scsi/hosts.c 2011-11-12 12:46:45.000000000 -0500
61549 -@@ -40,7 +40,7 @@
61550 - #include "scsi_logging.h"
61551 ++ pax_track_stack();
61552 ++
61553 + gdtcmd = kmalloc(sizeof(*gdtcmd), GFP_KERNEL);
61554 + estr = kmalloc(sizeof(*estr), GFP_KERNEL);
61555 + if (!gdtcmd || !estr)
61556 +diff -urNp linux-3.0.8/drivers/scsi/hosts.c linux-3.0.8/drivers/scsi/hosts.c
61557 +--- linux-3.0.8/drivers/scsi/hosts.c 2011-07-21 22:17:23.000000000 -0400
61558 ++++ linux-3.0.8/drivers/scsi/hosts.c 2011-08-23 21:47:55.000000000 -0400
61559 +@@ -42,7 +42,7 @@
61560 + #include "scsi_logging.h"
61561 +
61562 +
61563 +-static atomic_t scsi_host_next_hn; /* host_no for next new host */
61564 ++static atomic_unchecked_t scsi_host_next_hn; /* host_no for next new host */
61565 +
61566 +
61567 + static void scsi_host_cls_release(struct device *dev)
61568 +@@ -354,7 +354,7 @@ struct Scsi_Host *scsi_host_alloc(struct
61569 + * subtract one because we increment first then return, but we need to
61570 + * know what the next host number was before increment
61571 + */
61572 +- shost->host_no = atomic_inc_return(&scsi_host_next_hn) - 1;
61573 ++ shost->host_no = atomic_inc_return_unchecked(&scsi_host_next_hn) - 1;
61574 + shost->dma_channel = 0xff;
61575 +
61576 + /* These three are default values which can be overridden */
61577 +diff -urNp linux-3.0.8/drivers/scsi/hpsa.c linux-3.0.8/drivers/scsi/hpsa.c
61578 +--- linux-3.0.8/drivers/scsi/hpsa.c 2011-10-24 08:05:30.000000000 -0400
61579 ++++ linux-3.0.8/drivers/scsi/hpsa.c 2011-10-16 21:55:27.000000000 -0400
61580 +@@ -498,7 +498,7 @@ static inline u32 next_command(struct ct
61581 + u32 a;
61582 +
61583 + if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
61584 +- return h->access.command_completed(h);
61585 ++ return h->access->command_completed(h);
61586 +
61587 + if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
61588 + a = *(h->reply_pool_head); /* Next cmd in ring buffer */
61589 +@@ -2955,7 +2955,7 @@ static void start_io(struct ctlr_info *h
61590 + while (!list_empty(&h->reqQ)) {
61591 + c = list_entry(h->reqQ.next, struct CommandList, list);
61592 + /* can't do anything if fifo is full */
61593 +- if ((h->access.fifo_full(h))) {
61594 ++ if ((h->access->fifo_full(h))) {
61595 + dev_warn(&h->pdev->dev, "fifo full\n");
61596 + break;
61597 + }
61598 +@@ -2965,7 +2965,7 @@ static void start_io(struct ctlr_info *h
61599 + h->Qdepth--;
61600 +
61601 + /* Tell the controller execute command */
61602 +- h->access.submit_command(h, c);
61603 ++ h->access->submit_command(h, c);
61604 +
61605 + /* Put job onto the completed Q */
61606 + addQ(&h->cmpQ, c);
61607 +@@ -2974,17 +2974,17 @@ static void start_io(struct ctlr_info *h
61608 +
61609 + static inline unsigned long get_next_completion(struct ctlr_info *h)
61610 + {
61611 +- return h->access.command_completed(h);
61612 ++ return h->access->command_completed(h);
61613 + }
61614 +
61615 + static inline bool interrupt_pending(struct ctlr_info *h)
61616 + {
61617 +- return h->access.intr_pending(h);
61618 ++ return h->access->intr_pending(h);
61619 + }
61620 +
61621 + static inline long interrupt_not_for_us(struct ctlr_info *h)
61622 + {
61623 +- return (h->access.intr_pending(h) == 0) ||
61624 ++ return (h->access->intr_pending(h) == 0) ||
61625 + (h->interrupts_enabled == 0);
61626 + }
61627 +
61628 +@@ -3874,7 +3874,7 @@ static int __devinit hpsa_pci_init(struc
61629 + if (prod_index < 0)
61630 + return -ENODEV;
61631 + h->product_name = products[prod_index].product_name;
61632 +- h->access = *(products[prod_index].access);
61633 ++ h->access = products[prod_index].access;
61634
61635 + if (hpsa_board_disabled(h->pdev)) {
61636 + dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
61637 +@@ -4151,7 +4151,7 @@ reinit_after_soft_reset:
61638 + }
61639
61640 --static atomic_t scsi_host_next_hn; /* host_no for next new host */
61641 -+static atomic_unchecked_t scsi_host_next_hn; /* host_no for next new host */
61642 + /* make sure the board interrupts are off */
61643 +- h->access.set_intr_mask(h, HPSA_INTR_OFF);
61644 ++ h->access->set_intr_mask(h, HPSA_INTR_OFF);
61645
61646 + if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx))
61647 + goto clean2;
61648 +@@ -4185,7 +4185,7 @@ reinit_after_soft_reset:
61649 + * fake ones to scoop up any residual completions.
61650 + */
61651 + spin_lock_irqsave(&h->lock, flags);
61652 +- h->access.set_intr_mask(h, HPSA_INTR_OFF);
61653 ++ h->access->set_intr_mask(h, HPSA_INTR_OFF);
61654 + spin_unlock_irqrestore(&h->lock, flags);
61655 + free_irq(h->intr[h->intr_mode], h);
61656 + rc = hpsa_request_irq(h, hpsa_msix_discard_completions,
61657 +@@ -4204,9 +4204,9 @@ reinit_after_soft_reset:
61658 + dev_info(&h->pdev->dev, "Board READY.\n");
61659 + dev_info(&h->pdev->dev,
61660 + "Waiting for stale completions to drain.\n");
61661 +- h->access.set_intr_mask(h, HPSA_INTR_ON);
61662 ++ h->access->set_intr_mask(h, HPSA_INTR_ON);
61663 + msleep(10000);
61664 +- h->access.set_intr_mask(h, HPSA_INTR_OFF);
61665 ++ h->access->set_intr_mask(h, HPSA_INTR_OFF);
61666 +
61667 + rc = controller_reset_failed(h->cfgtable);
61668 + if (rc)
61669 +@@ -4227,7 +4227,7 @@ reinit_after_soft_reset:
61670 + }
61671
61672 - static void scsi_host_cls_release(struct device *dev)
61673 -@@ -344,7 +344,7 @@ struct Scsi_Host *scsi_host_alloc(struct
61674 - * subtract one because we increment first then return, but we need to
61675 - * know what the next host number was before increment
61676 + /* Turn the interrupts on so we can service requests */
61677 +- h->access.set_intr_mask(h, HPSA_INTR_ON);
61678 ++ h->access->set_intr_mask(h, HPSA_INTR_ON);
61679 +
61680 + hpsa_hba_inquiry(h);
61681 + hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */
61682 +@@ -4280,7 +4280,7 @@ static void hpsa_shutdown(struct pci_dev
61683 + * To write all data in the battery backed cache to disks
61684 */
61685 -- shost->host_no = atomic_inc_return(&scsi_host_next_hn) - 1;
61686 -+ shost->host_no = atomic_inc_return_unchecked(&scsi_host_next_hn) - 1;
61687 - shost->dma_channel = 0xff;
61688 + hpsa_flush_cache(h);
61689 +- h->access.set_intr_mask(h, HPSA_INTR_OFF);
61690 ++ h->access->set_intr_mask(h, HPSA_INTR_OFF);
61691 + free_irq(h->intr[h->intr_mode], h);
61692 + #ifdef CONFIG_PCI_MSI
61693 + if (h->msix_vector)
61694 +@@ -4443,7 +4443,7 @@ static __devinit void hpsa_enter_perform
61695 + return;
61696 + }
61697 + /* Change the access methods to the performant access methods */
61698 +- h->access = SA5_performant_access;
61699 ++ h->access = &SA5_performant_access;
61700 + h->transMethod = CFGTBL_Trans_Performant;
61701 + }
61702
61703 - /* These three are default values which can be overridden */
61704 -diff -urNp linux-2.6.32.48/drivers/scsi/ipr.c linux-2.6.32.48/drivers/scsi/ipr.c
61705 ---- linux-2.6.32.48/drivers/scsi/ipr.c 2011-11-12 12:44:29.000000000 -0500
61706 -+++ linux-2.6.32.48/drivers/scsi/ipr.c 2011-11-12 12:46:45.000000000 -0500
61707 -@@ -5286,7 +5286,7 @@ static bool ipr_qc_fill_rtf(struct ata_q
61708 - return true;
61709 - }
61710 -
61711 --static struct ata_port_operations ipr_sata_ops = {
61712 -+static const struct ata_port_operations ipr_sata_ops = {
61713 - .phy_reset = ipr_ata_phy_reset,
61714 - .hardreset = ipr_sata_reset,
61715 - .post_internal_cmd = ipr_ata_post_internal,
61716 -diff -urNp linux-2.6.32.48/drivers/scsi/ips.h linux-2.6.32.48/drivers/scsi/ips.h
61717 ---- linux-2.6.32.48/drivers/scsi/ips.h 2009-12-02 22:51:21.000000000 -0500
61718 -+++ linux-2.6.32.48/drivers/scsi/ips.h 2011-11-12 12:46:45.000000000 -0500
61719 +diff -urNp linux-3.0.8/drivers/scsi/hpsa.h linux-3.0.8/drivers/scsi/hpsa.h
61720 +--- linux-3.0.8/drivers/scsi/hpsa.h 2011-10-24 08:05:21.000000000 -0400
61721 ++++ linux-3.0.8/drivers/scsi/hpsa.h 2011-08-23 21:47:55.000000000 -0400
61722 +@@ -73,7 +73,7 @@ struct ctlr_info {
61723 + unsigned int msix_vector;
61724 + unsigned int msi_vector;
61725 + int intr_mode; /* either PERF_MODE_INT or SIMPLE_MODE_INT */
61726 +- struct access_method access;
61727 ++ struct access_method *access;
61728 +
61729 + /* queue and queue Info */
61730 + struct list_head reqQ;
61731 +diff -urNp linux-3.0.8/drivers/scsi/ips.h linux-3.0.8/drivers/scsi/ips.h
61732 +--- linux-3.0.8/drivers/scsi/ips.h 2011-07-21 22:17:23.000000000 -0400
61733 ++++ linux-3.0.8/drivers/scsi/ips.h 2011-08-23 21:47:55.000000000 -0400
61734 @@ -1027,7 +1027,7 @@ typedef struct {
61735 int (*intr)(struct ips_ha *);
61736 void (*enableint)(struct ips_ha *);
61737 @@ -37298,10 +33969,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/ips.h linux-2.6.32.48/drivers/scsi/ips.h
61738
61739 typedef struct ips_ha {
61740 uint8_t ha_id[IPS_MAX_CHANNELS+1];
61741 -diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c
61742 ---- linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c 2009-12-02 22:51:21.000000000 -0500
61743 -+++ linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c 2011-11-12 12:46:45.000000000 -0500
61744 -@@ -86,12 +86,12 @@ struct fc_exch_mgr {
61745 +diff -urNp linux-3.0.8/drivers/scsi/libfc/fc_exch.c linux-3.0.8/drivers/scsi/libfc/fc_exch.c
61746 +--- linux-3.0.8/drivers/scsi/libfc/fc_exch.c 2011-07-21 22:17:23.000000000 -0400
61747 ++++ linux-3.0.8/drivers/scsi/libfc/fc_exch.c 2011-08-23 21:47:55.000000000 -0400
61748 +@@ -105,12 +105,12 @@ struct fc_exch_mgr {
61749 * all together if not used XXX
61750 */
61751 struct {
61752 @@ -37319,8 +33990,8 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61753 + atomic_unchecked_t non_bls_resp;
61754 } stats;
61755 };
61756 - #define fc_seq_exch(sp) container_of(sp, struct fc_exch, seq)
61757 -@@ -510,7 +510,7 @@ static struct fc_exch *fc_exch_em_alloc(
61758 +
61759 +@@ -700,7 +700,7 @@ static struct fc_exch *fc_exch_em_alloc(
61760 /* allocate memory for exchange */
61761 ep = mempool_alloc(mp->ep_pool, GFP_ATOMIC);
61762 if (!ep) {
61763 @@ -37329,7 +34000,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61764 goto out;
61765 }
61766 memset(ep, 0, sizeof(*ep));
61767 -@@ -557,7 +557,7 @@ out:
61768 +@@ -761,7 +761,7 @@ out:
61769 return ep;
61770 err:
61771 spin_unlock_bh(&pool->lock);
61772 @@ -37338,7 +34009,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61773 mempool_free(ep, mp->ep_pool);
61774 return NULL;
61775 }
61776 -@@ -690,7 +690,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61777 +@@ -906,7 +906,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61778 xid = ntohs(fh->fh_ox_id); /* we originated exch */
61779 ep = fc_exch_find(mp, xid);
61780 if (!ep) {
61781 @@ -37347,7 +34018,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61782 reject = FC_RJT_OX_ID;
61783 goto out;
61784 }
61785 -@@ -720,7 +720,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61786 +@@ -936,7 +936,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61787 ep = fc_exch_find(mp, xid);
61788 if ((f_ctl & FC_FC_FIRST_SEQ) && fc_sof_is_init(fr_sof(fp))) {
61789 if (ep) {
61790 @@ -37356,7 +34027,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61791 reject = FC_RJT_RX_ID;
61792 goto rel;
61793 }
61794 -@@ -731,7 +731,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61795 +@@ -947,7 +947,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61796 }
61797 xid = ep->xid; /* get our XID */
61798 } else if (!ep) {
61799 @@ -37365,7 +34036,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61800 reject = FC_RJT_RX_ID; /* XID not found */
61801 goto out;
61802 }
61803 -@@ -752,7 +752,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61804 +@@ -964,7 +964,7 @@ static enum fc_pf_rjt_reason fc_seq_look
61805 } else {
61806 sp = &ep->seq;
61807 if (sp->id != fh->fh_seq_id) {
61808 @@ -37374,7 +34045,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61809 reject = FC_RJT_SEQ_ID; /* sequence/exch should exist */
61810 goto rel;
61811 }
61812 -@@ -1163,22 +1163,22 @@ static void fc_exch_recv_seq_resp(struct
61813 +@@ -1392,22 +1392,22 @@ static void fc_exch_recv_seq_resp(struct
61814
61815 ep = fc_exch_find(mp, ntohs(fh->fh_ox_id));
61816 if (!ep) {
61817 @@ -37385,7 +34056,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61818 if (ep->esb_stat & ESB_ST_COMPLETE) {
61819 - atomic_inc(&mp->stats.xid_not_found);
61820 + atomic_inc_unchecked(&mp->stats.xid_not_found);
61821 - goto out;
61822 + goto rel;
61823 }
61824 if (ep->rxid == FC_XID_UNKNOWN)
61825 ep->rxid = ntohs(fh->fh_rx_id);
61826 @@ -37401,16 +34072,16 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61827 goto rel;
61828 }
61829 sof = fr_sof(fp);
61830 -@@ -1189,7 +1189,7 @@ static void fc_exch_recv_seq_resp(struct
61831 - } else {
61832 - sp = &ep->seq;
61833 - if (sp->id != fh->fh_seq_id) {
61834 -- atomic_inc(&mp->stats.seq_not_found);
61835 -+ atomic_inc_unchecked(&mp->stats.seq_not_found);
61836 - goto rel;
61837 - }
61838 +@@ -1416,7 +1416,7 @@ static void fc_exch_recv_seq_resp(struct
61839 + sp->ssb_stat |= SSB_ST_RESP;
61840 + sp->id = fh->fh_seq_id;
61841 + } else if (sp->id != fh->fh_seq_id) {
61842 +- atomic_inc(&mp->stats.seq_not_found);
61843 ++ atomic_inc_unchecked(&mp->stats.seq_not_found);
61844 + goto rel;
61845 }
61846 -@@ -1249,9 +1249,9 @@ static void fc_exch_recv_resp(struct fc_
61847 +
61848 +@@ -1480,9 +1480,9 @@ static void fc_exch_recv_resp(struct fc_
61849 sp = fc_seq_lookup_orig(mp, fp); /* doesn't hold sequence */
61850
61851 if (!sp)
61852 @@ -37422,31 +34093,31 @@ diff -urNp linux-2.6.32.48/drivers/scsi/libfc/fc_exch.c linux-2.6.32.48/drivers/
61853
61854 fc_frame_free(fp);
61855 }
61856 -diff -urNp linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c
61857 ---- linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c 2011-11-12 12:44:29.000000000 -0500
61858 -+++ linux-2.6.32.48/drivers/scsi/libsas/sas_ata.c 2011-11-12 12:46:45.000000000 -0500
61859 -@@ -343,7 +343,7 @@ static int sas_ata_scr_read(struct ata_l
61860 - }
61861 - }
61862 -
61863 --static struct ata_port_operations sas_sata_ops = {
61864 -+static const struct ata_port_operations sas_sata_ops = {
61865 - .phy_reset = sas_ata_phy_reset,
61866 +diff -urNp linux-3.0.8/drivers/scsi/libsas/sas_ata.c linux-3.0.8/drivers/scsi/libsas/sas_ata.c
61867 +--- linux-3.0.8/drivers/scsi/libsas/sas_ata.c 2011-07-21 22:17:23.000000000 -0400
61868 ++++ linux-3.0.8/drivers/scsi/libsas/sas_ata.c 2011-08-23 21:47:55.000000000 -0400
61869 +@@ -368,7 +368,7 @@ static struct ata_port_operations sas_sa
61870 + .postreset = ata_std_postreset,
61871 + .error_handler = ata_std_error_handler,
61872 .post_internal_cmd = sas_ata_post_internal,
61873 - .qc_defer = ata_std_qc_defer,
61874 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c
61875 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c 2009-12-02 22:51:21.000000000 -0500
61876 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c 2011-11-12 12:46:45.000000000 -0500
61877 -@@ -124,7 +124,7 @@ struct lpfc_debug {
61878 - int len;
61879 - };
61880 +- .qc_defer = ata_std_qc_defer,
61881 ++ .qc_defer = ata_std_qc_defer,
61882 + .qc_prep = ata_noop_qc_prep,
61883 + .qc_issue = sas_ata_qc_issue,
61884 + .qc_fill_rtf = sas_ata_qc_fill_rtf,
61885 +diff -urNp linux-3.0.8/drivers/scsi/lpfc/lpfc_debugfs.c linux-3.0.8/drivers/scsi/lpfc/lpfc_debugfs.c
61886 +--- linux-3.0.8/drivers/scsi/lpfc/lpfc_debugfs.c 2011-07-21 22:17:23.000000000 -0400
61887 ++++ linux-3.0.8/drivers/scsi/lpfc/lpfc_debugfs.c 2011-08-23 21:48:14.000000000 -0400
61888 +@@ -104,7 +104,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_
61889 +
61890 + #include <linux/debugfs.h>
61891
61892 -static atomic_t lpfc_debugfs_seq_trc_cnt = ATOMIC_INIT(0);
61893 +static atomic_unchecked_t lpfc_debugfs_seq_trc_cnt = ATOMIC_INIT(0);
61894 static unsigned long lpfc_debugfs_start_time = 0L;
61895
61896 - /**
61897 -@@ -158,7 +158,7 @@ lpfc_debugfs_disc_trc_data(struct lpfc_v
61898 + /* iDiag */
61899 +@@ -141,7 +141,7 @@ lpfc_debugfs_disc_trc_data(struct lpfc_v
61900 lpfc_debugfs_enable = 0;
61901
61902 len = 0;
61903 @@ -37455,7 +34126,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
61904 (lpfc_debugfs_max_disc_trc - 1);
61905 for (i = index; i < lpfc_debugfs_max_disc_trc; i++) {
61906 dtp = vport->disc_trc + i;
61907 -@@ -219,7 +219,7 @@ lpfc_debugfs_slow_ring_trc_data(struct l
61908 +@@ -202,7 +202,7 @@ lpfc_debugfs_slow_ring_trc_data(struct l
61909 lpfc_debugfs_enable = 0;
61910
61911 len = 0;
61912 @@ -37464,7 +34135,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
61913 (lpfc_debugfs_max_slow_ring_trc - 1);
61914 for (i = index; i < lpfc_debugfs_max_slow_ring_trc; i++) {
61915 dtp = phba->slow_ring_trc + i;
61916 -@@ -397,6 +397,8 @@ lpfc_debugfs_dumpHBASlim_data(struct lpf
61917 +@@ -380,6 +380,8 @@ lpfc_debugfs_dumpHBASlim_data(struct lpf
61918 uint32_t *ptr;
61919 char buffer[1024];
61920
61921 @@ -37473,7 +34144,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
61922 off = 0;
61923 spin_lock_irq(&phba->hbalock);
61924
61925 -@@ -634,14 +636,14 @@ lpfc_debugfs_disc_trc(struct lpfc_vport
61926 +@@ -617,14 +619,14 @@ lpfc_debugfs_disc_trc(struct lpfc_vport
61927 !vport || !vport->disc_trc)
61928 return;
61929
61930 @@ -37490,7 +34161,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
61931 dtp->jif = jiffies;
61932 #endif
61933 return;
61934 -@@ -672,14 +674,14 @@ lpfc_debugfs_slow_ring_trc(struct lpfc_h
61935 +@@ -655,14 +657,14 @@ lpfc_debugfs_slow_ring_trc(struct lpfc_h
61936 !phba || !phba->slow_ring_trc)
61937 return;
61938
61939 @@ -37507,7 +34178,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
61940 dtp->jif = jiffies;
61941 #endif
61942 return;
61943 -@@ -1364,7 +1366,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
61944 +@@ -2606,7 +2608,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
61945 "slow_ring buffer\n");
61946 goto debug_failed;
61947 }
61948 @@ -37516,7 +34187,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
61949 memset(phba->slow_ring_trc, 0,
61950 (sizeof(struct lpfc_debugfs_trc) *
61951 lpfc_debugfs_max_slow_ring_trc));
61952 -@@ -1410,7 +1412,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
61953 +@@ -2652,7 +2654,7 @@ lpfc_debugfs_initialize(struct lpfc_vpor
61954 "buffer\n");
61955 goto debug_failed;
61956 }
61957 @@ -37525,10 +34196,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_debugfs.c linux-2.6.32.48/driv
61958
61959 snprintf(name, sizeof(name), "discovery_trace");
61960 vport->debug_disc_trc =
61961 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h
61962 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h 2009-12-02 22:51:21.000000000 -0500
61963 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h 2011-11-12 12:46:45.000000000 -0500
61964 -@@ -400,7 +400,7 @@ struct lpfc_vport {
61965 +diff -urNp linux-3.0.8/drivers/scsi/lpfc/lpfc.h linux-3.0.8/drivers/scsi/lpfc/lpfc.h
61966 +--- linux-3.0.8/drivers/scsi/lpfc/lpfc.h 2011-10-24 08:05:30.000000000 -0400
61967 ++++ linux-3.0.8/drivers/scsi/lpfc/lpfc.h 2011-10-16 21:55:27.000000000 -0400
61968 +@@ -425,7 +425,7 @@ struct lpfc_vport {
61969 struct dentry *debug_nodelist;
61970 struct dentry *vport_debugfs_root;
61971 struct lpfc_debugfs_trc *disc_trc;
61972 @@ -37537,7 +34208,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h linux-2.6.32.48/drivers/scsi
61973 #endif
61974 uint8_t stat_data_enabled;
61975 uint8_t stat_data_blocked;
61976 -@@ -725,8 +725,8 @@ struct lpfc_hba {
61977 +@@ -832,8 +832,8 @@ struct lpfc_hba {
61978 struct timer_list fabric_block_timer;
61979 unsigned long bit_flags;
61980 #define FABRIC_COMANDS_BLOCKED 0
61981 @@ -37548,19 +34219,19 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc.h linux-2.6.32.48/drivers/scsi
61982 unsigned long last_rsrc_error_time;
61983 unsigned long last_ramp_down_time;
61984 unsigned long last_ramp_up_time;
61985 -@@ -740,7 +740,7 @@ struct lpfc_hba {
61986 +@@ -847,7 +847,7 @@ struct lpfc_hba {
61987 struct dentry *debug_dumpDif; /* BlockGuard BPL*/
61988 struct dentry *debug_slow_ring_trc;
61989 struct lpfc_debugfs_trc *slow_ring_trc;
61990 - atomic_t slow_ring_trc_cnt;
61991 + atomic_unchecked_t slow_ring_trc_cnt;
61992 - #endif
61993 -
61994 - /* Used for deferred freeing of ELS data buffers */
61995 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c
61996 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c 2011-11-12 12:44:29.000000000 -0500
61997 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c 2011-11-12 12:46:45.000000000 -0500
61998 -@@ -8021,8 +8021,10 @@ lpfc_init(void)
61999 + /* iDiag debugfs sub-directory */
62000 + struct dentry *idiag_root;
62001 + struct dentry *idiag_pci_cfg;
62002 +diff -urNp linux-3.0.8/drivers/scsi/lpfc/lpfc_init.c linux-3.0.8/drivers/scsi/lpfc/lpfc_init.c
62003 +--- linux-3.0.8/drivers/scsi/lpfc/lpfc_init.c 2011-10-24 08:05:30.000000000 -0400
62004 ++++ linux-3.0.8/drivers/scsi/lpfc/lpfc_init.c 2011-10-16 21:55:27.000000000 -0400
62005 +@@ -9971,8 +9971,10 @@ lpfc_init(void)
62006 printk(LPFC_COPYRIGHT "\n");
62007
62008 if (lpfc_enable_npiv) {
62009 @@ -37573,10 +34244,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_init.c linux-2.6.32.48/drivers
62010 }
62011 lpfc_transport_template =
62012 fc_attach_transport(&lpfc_transport_functions);
62013 -diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c
62014 ---- linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c 2009-12-02 22:51:21.000000000 -0500
62015 -+++ linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c 2011-11-12 12:46:45.000000000 -0500
62016 -@@ -259,7 +259,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hb
62017 +diff -urNp linux-3.0.8/drivers/scsi/lpfc/lpfc_scsi.c linux-3.0.8/drivers/scsi/lpfc/lpfc_scsi.c
62018 +--- linux-3.0.8/drivers/scsi/lpfc/lpfc_scsi.c 2011-10-24 08:05:30.000000000 -0400
62019 ++++ linux-3.0.8/drivers/scsi/lpfc/lpfc_scsi.c 2011-10-16 21:55:27.000000000 -0400
62020 +@@ -297,7 +297,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hb
62021 uint32_t evt_posted;
62022
62023 spin_lock_irqsave(&phba->hbalock, flags);
62024 @@ -37585,7 +34256,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers
62025 phba->last_rsrc_error_time = jiffies;
62026
62027 if ((phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL) > jiffies) {
62028 -@@ -300,7 +300,7 @@ lpfc_rampup_queue_depth(struct lpfc_vpor
62029 +@@ -338,7 +338,7 @@ lpfc_rampup_queue_depth(struct lpfc_vpor
62030 unsigned long flags;
62031 struct lpfc_hba *phba = vport->phba;
62032 uint32_t evt_posted;
62033 @@ -37594,9 +34265,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers
62034
62035 if (vport->cfg_lun_queue_depth <= queue_depth)
62036 return;
62037 -@@ -343,8 +343,8 @@ lpfc_ramp_down_queue_handler(struct lpfc
62038 +@@ -382,8 +382,8 @@ lpfc_ramp_down_queue_handler(struct lpfc
62039 + unsigned long num_rsrc_err, num_cmd_success;
62040 int i;
62041 - struct lpfc_rport_data *rdata;
62042
62043 - num_rsrc_err = atomic_read(&phba->num_rsrc_err);
62044 - num_cmd_success = atomic_read(&phba->num_cmd_success);
62045 @@ -37605,7 +34276,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers
62046
62047 vports = lpfc_create_vport_work_array(phba);
62048 if (vports != NULL)
62049 -@@ -378,8 +378,8 @@ lpfc_ramp_down_queue_handler(struct lpfc
62050 +@@ -403,8 +403,8 @@ lpfc_ramp_down_queue_handler(struct lpfc
62051 }
62052 }
62053 lpfc_destroy_vport_work_array(phba, vports);
62054 @@ -37616,7 +34287,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers
62055 }
62056
62057 /**
62058 -@@ -427,8 +427,8 @@ lpfc_ramp_up_queue_handler(struct lpfc_h
62059 +@@ -438,8 +438,8 @@ lpfc_ramp_up_queue_handler(struct lpfc_h
62060 }
62061 }
62062 lpfc_destroy_vport_work_array(phba, vports);
62063 @@ -37627,9 +34298,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.48/drivers
62064 }
62065
62066 /**
62067 -diff -urNp linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c
62068 ---- linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c 2009-12-02 22:51:21.000000000 -0500
62069 -+++ linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c 2011-11-12 12:46:45.000000000 -0500
62070 +diff -urNp linux-3.0.8/drivers/scsi/megaraid/megaraid_mbox.c linux-3.0.8/drivers/scsi/megaraid/megaraid_mbox.c
62071 +--- linux-3.0.8/drivers/scsi/megaraid/megaraid_mbox.c 2011-07-21 22:17:23.000000000 -0400
62072 ++++ linux-3.0.8/drivers/scsi/megaraid/megaraid_mbox.c 2011-08-23 21:48:14.000000000 -0400
62073 @@ -3503,6 +3503,8 @@ megaraid_cmm_register(adapter_t *adapter
62074 int rval;
62075 int i;
62076 @@ -37639,10 +34310,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/megaraid/megaraid_mbox.c linux-2.6.32.48
62077 // Allocate memory for the base list of scb for management module.
62078 adapter->uscb_list = kcalloc(MBOX_MAX_USER_CMDS, sizeof(scb_t), GFP_KERNEL);
62079
62080 -diff -urNp linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c
62081 ---- linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c 2009-12-02 22:51:21.000000000 -0500
62082 -+++ linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c 2011-11-12 12:46:45.000000000 -0500
62083 -@@ -94,6 +94,8 @@ static int _osd_print_system_info(struct
62084 +diff -urNp linux-3.0.8/drivers/scsi/osd/osd_initiator.c linux-3.0.8/drivers/scsi/osd/osd_initiator.c
62085 +--- linux-3.0.8/drivers/scsi/osd/osd_initiator.c 2011-07-21 22:17:23.000000000 -0400
62086 ++++ linux-3.0.8/drivers/scsi/osd/osd_initiator.c 2011-08-23 21:48:14.000000000 -0400
62087 +@@ -97,6 +97,8 @@ static int _osd_get_print_system_info(st
62088 int nelem = ARRAY_SIZE(get_attrs), a = 0;
62089 int ret;
62090
62091 @@ -37651,10 +34322,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/osd/osd_initiator.c linux-2.6.32.48/driv
62092 or = osd_start_request(od, GFP_KERNEL);
62093 if (!or)
62094 return -ENOMEM;
62095 -diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.c linux-2.6.32.48/drivers/scsi/pmcraid.c
62096 ---- linux-2.6.32.48/drivers/scsi/pmcraid.c 2011-11-12 12:44:29.000000000 -0500
62097 -+++ linux-2.6.32.48/drivers/scsi/pmcraid.c 2011-11-12 12:46:45.000000000 -0500
62098 -@@ -189,8 +189,8 @@ static int pmcraid_slave_alloc(struct sc
62099 +diff -urNp linux-3.0.8/drivers/scsi/pmcraid.c linux-3.0.8/drivers/scsi/pmcraid.c
62100 +--- linux-3.0.8/drivers/scsi/pmcraid.c 2011-10-24 08:05:21.000000000 -0400
62101 ++++ linux-3.0.8/drivers/scsi/pmcraid.c 2011-08-23 21:47:56.000000000 -0400
62102 +@@ -201,8 +201,8 @@ static int pmcraid_slave_alloc(struct sc
62103 res->scsi_dev = scsi_dev;
62104 scsi_dev->hostdata = res;
62105 res->change_detected = 0;
62106 @@ -37665,7 +34336,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.c linux-2.6.32.48/drivers/scsi/p
62107 rc = 0;
62108 }
62109 spin_unlock_irqrestore(&pinstance->resource_lock, lock_flags);
62110 -@@ -2396,9 +2396,9 @@ static int pmcraid_error_handler(struct
62111 +@@ -2677,9 +2677,9 @@ static int pmcraid_error_handler(struct
62112
62113 /* If this was a SCSI read/write command keep count of errors */
62114 if (SCSI_CMD_TYPE(scsi_cmd->cmnd[0]) == SCSI_READ_CMD)
62115 @@ -37677,7 +34348,25 @@ diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.c linux-2.6.32.48/drivers/scsi/p
62116
62117 if (!RES_IS_GSCSI(res->cfg_entry) &&
62118 masked_ioasc != PMCRAID_IOASC_HW_DEVICE_BUS_STATUS_ERROR) {
62119 -@@ -4116,7 +4116,7 @@ static void pmcraid_worker_function(stru
62120 +@@ -3535,7 +3535,7 @@ static int pmcraid_queuecommand_lck(
62121 + * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
62122 + * hrrq_id assigned here in queuecommand
62123 + */
62124 +- ioarcb->hrrq_id = atomic_add_return(1, &(pinstance->last_message_id)) %
62125 ++ ioarcb->hrrq_id = atomic_add_return_unchecked(1, &(pinstance->last_message_id)) %
62126 + pinstance->num_hrrq;
62127 + cmd->cmd_done = pmcraid_io_done;
62128 +
62129 +@@ -3860,7 +3860,7 @@ static long pmcraid_ioctl_passthrough(
62130 + * block of scsi_cmd which is re-used (e.g. cancel/abort), which uses
62131 + * hrrq_id assigned here in queuecommand
62132 + */
62133 +- ioarcb->hrrq_id = atomic_add_return(1, &(pinstance->last_message_id)) %
62134 ++ ioarcb->hrrq_id = atomic_add_return_unchecked(1, &(pinstance->last_message_id)) %
62135 + pinstance->num_hrrq;
62136 +
62137 + if (request_size) {
62138 +@@ -4498,7 +4498,7 @@ static void pmcraid_worker_function(stru
62139
62140 pinstance = container_of(workp, struct pmcraid_instance, worker_q);
62141 /* add resources only after host is added into system */
62142 @@ -37685,17 +34374,19 @@ diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.c linux-2.6.32.48/drivers/scsi/p
62143 + if (!atomic_read_unchecked(&pinstance->expose_resources))
62144 return;
62145
62146 - spin_lock_irqsave(&pinstance->resource_lock, lock_flags);
62147 -@@ -4850,7 +4850,7 @@ static int __devinit pmcraid_init_instan
62148 + fw_version = be16_to_cpu(pinstance->inq_data->fw_version);
62149 +@@ -5332,8 +5332,8 @@ static int __devinit pmcraid_init_instan
62150 init_waitqueue_head(&pinstance->reset_wait_q);
62151
62152 atomic_set(&pinstance->outstanding_cmds, 0);
62153 +- atomic_set(&pinstance->last_message_id, 0);
62154 - atomic_set(&pinstance->expose_resources, 0);
62155 ++ atomic_set_unchecked(&pinstance->last_message_id, 0);
62156 + atomic_set_unchecked(&pinstance->expose_resources, 0);
62157
62158 INIT_LIST_HEAD(&pinstance->free_res_q);
62159 INIT_LIST_HEAD(&pinstance->used_res_q);
62160 -@@ -5502,7 +5502,7 @@ static int __devinit pmcraid_probe(
62161 +@@ -6048,7 +6048,7 @@ static int __devinit pmcraid_probe(
62162 /* Schedule worker thread to handle CCN and take care of adding and
62163 * removing devices to OS
62164 */
62165 @@ -37704,45 +34395,54 @@ diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.c linux-2.6.32.48/drivers/scsi/p
62166 schedule_work(&pinstance->worker_q);
62167 return rc;
62168
62169 -diff -urNp linux-2.6.32.48/drivers/scsi/pmcraid.h linux-2.6.32.48/drivers/scsi/pmcraid.h
62170 ---- linux-2.6.32.48/drivers/scsi/pmcraid.h 2009-12-02 22:51:21.000000000 -0500
62171 -+++ linux-2.6.32.48/drivers/scsi/pmcraid.h 2011-11-12 12:46:45.000000000 -0500
62172 -@@ -690,7 +690,7 @@ struct pmcraid_instance {
62173 +diff -urNp linux-3.0.8/drivers/scsi/pmcraid.h linux-3.0.8/drivers/scsi/pmcraid.h
62174 +--- linux-3.0.8/drivers/scsi/pmcraid.h 2011-07-21 22:17:23.000000000 -0400
62175 ++++ linux-3.0.8/drivers/scsi/pmcraid.h 2011-08-23 21:47:56.000000000 -0400
62176 +@@ -749,7 +749,7 @@ struct pmcraid_instance {
62177 + struct pmcraid_isr_param hrrq_vector[PMCRAID_NUM_MSIX_VECTORS];
62178 +
62179 + /* Message id as filled in last fired IOARCB, used to identify HRRQ */
62180 +- atomic_t last_message_id;
62181 ++ atomic_unchecked_t last_message_id;
62182 +
62183 + /* configuration table */
62184 + struct pmcraid_config_table *cfg_table;
62185 +@@ -778,7 +778,7 @@ struct pmcraid_instance {
62186 atomic_t outstanding_cmds;
62187
62188 /* should add/delete resources to mid-layer now ?*/
62189 - atomic_t expose_resources;
62190 + atomic_unchecked_t expose_resources;
62191
62192 - /* Tasklet to handle deferred processing */
62193 - struct tasklet_struct isr_tasklet[PMCRAID_NUM_MSIX_VECTORS];
62194 -@@ -727,8 +727,8 @@ struct pmcraid_resource_entry {
62195 - struct list_head queue; /* link to "to be exposed" resources */
62196 - struct pmcraid_config_table_entry cfg_entry;
62197 +
62198 +
62199 +@@ -814,8 +814,8 @@ struct pmcraid_resource_entry {
62200 + struct pmcraid_config_table_entry_ext cfg_entry_ext;
62201 + };
62202 struct scsi_device *scsi_dev; /* Link scsi_device structure */
62203 - atomic_t read_failures; /* count of failed READ commands */
62204 - atomic_t write_failures; /* count of failed WRITE commands */
62205 -+ atomic_unchecked_t read_failures; /* count of failed READ commands */
62206 ++ atomic_unchecked_t read_failures; /* count of failed READ commands */
62207 + atomic_unchecked_t write_failures; /* count of failed WRITE commands */
62208
62209 /* To indicate add/delete/modify during CCN */
62210 u8 change_detected;
62211 -diff -urNp linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h
62212 ---- linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h 2009-12-02 22:51:21.000000000 -0500
62213 -+++ linux-2.6.32.48/drivers/scsi/qla2xxx/qla_def.h 2011-11-12 12:46:45.000000000 -0500
62214 -@@ -2089,7 +2089,7 @@ struct isp_operations {
62215 -
62216 +diff -urNp linux-3.0.8/drivers/scsi/qla2xxx/qla_def.h linux-3.0.8/drivers/scsi/qla2xxx/qla_def.h
62217 +--- linux-3.0.8/drivers/scsi/qla2xxx/qla_def.h 2011-07-21 22:17:23.000000000 -0400
62218 ++++ linux-3.0.8/drivers/scsi/qla2xxx/qla_def.h 2011-08-23 21:47:56.000000000 -0400
62219 +@@ -2244,7 +2244,7 @@ struct isp_operations {
62220 int (*get_flash_version) (struct scsi_qla_host *, void *);
62221 int (*start_scsi) (srb_t *);
62222 + int (*abort_isp) (struct scsi_qla_host *);
62223 -};
62224 +} __no_const;
62225
62226 /* MSI-X Support *************************************************************/
62227
62228 -diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h
62229 ---- linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h 2009-12-02 22:51:21.000000000 -0500
62230 -+++ linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h 2011-11-12 12:46:45.000000000 -0500
62231 -@@ -240,7 +240,7 @@ struct ddb_entry {
62232 +diff -urNp linux-3.0.8/drivers/scsi/qla4xxx/ql4_def.h linux-3.0.8/drivers/scsi/qla4xxx/ql4_def.h
62233 +--- linux-3.0.8/drivers/scsi/qla4xxx/ql4_def.h 2011-07-21 22:17:23.000000000 -0400
62234 ++++ linux-3.0.8/drivers/scsi/qla4xxx/ql4_def.h 2011-08-23 21:47:56.000000000 -0400
62235 +@@ -256,7 +256,7 @@ struct ddb_entry {
62236 atomic_t retry_relogin_timer; /* Min Time between relogins
62237 * (4000 only) */
62238 atomic_t relogin_timer; /* Max Time to wait for relogin to complete */
62239 @@ -37751,11 +34451,11 @@ diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_def.h linux-2.6.32.48/driver
62240 * retried */
62241
62242 uint16_t port;
62243 -diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c
62244 ---- linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c 2009-12-02 22:51:21.000000000 -0500
62245 -+++ linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c 2011-11-12 12:46:45.000000000 -0500
62246 -@@ -482,7 +482,7 @@ static struct ddb_entry * qla4xxx_alloc_
62247 - atomic_set(&ddb_entry->port_down_timer, ha->port_down_retry_count);
62248 +diff -urNp linux-3.0.8/drivers/scsi/qla4xxx/ql4_init.c linux-3.0.8/drivers/scsi/qla4xxx/ql4_init.c
62249 +--- linux-3.0.8/drivers/scsi/qla4xxx/ql4_init.c 2011-07-21 22:17:23.000000000 -0400
62250 ++++ linux-3.0.8/drivers/scsi/qla4xxx/ql4_init.c 2011-08-23 21:47:56.000000000 -0400
62251 +@@ -680,7 +680,7 @@ static struct ddb_entry * qla4xxx_alloc_
62252 + ddb_entry->fw_ddb_index = fw_ddb_index;
62253 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
62254 atomic_set(&ddb_entry->relogin_timer, 0);
62255 - atomic_set(&ddb_entry->relogin_retry_count, 0);
62256 @@ -37763,25 +34463,25 @@ diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_init.c linux-2.6.32.48/drive
62257 atomic_set(&ddb_entry->state, DDB_STATE_ONLINE);
62258 list_add_tail(&ddb_entry->list, &ha->ddb_list);
62259 ha->fw_ddb_index_map[fw_ddb_index] = ddb_entry;
62260 -@@ -1308,7 +1308,7 @@ int qla4xxx_process_ddb_changed(struct s
62261 +@@ -1433,7 +1433,7 @@ int qla4xxx_process_ddb_changed(struct s
62262 + if ((ddb_entry->fw_ddb_device_state == DDB_DS_SESSION_ACTIVE) &&
62263 + (atomic_read(&ddb_entry->state) != DDB_STATE_ONLINE)) {
62264 atomic_set(&ddb_entry->state, DDB_STATE_ONLINE);
62265 - atomic_set(&ddb_entry->port_down_timer,
62266 - ha->port_down_retry_count);
62267 - atomic_set(&ddb_entry->relogin_retry_count, 0);
62268 + atomic_set_unchecked(&ddb_entry->relogin_retry_count, 0);
62269 atomic_set(&ddb_entry->relogin_timer, 0);
62270 clear_bit(DF_RELOGIN, &ddb_entry->flags);
62271 - clear_bit(DF_NO_RELOGIN, &ddb_entry->flags);
62272 -diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c
62273 ---- linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c 2009-12-02 22:51:21.000000000 -0500
62274 -+++ linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c 2011-11-12 12:46:45.000000000 -0500
62275 -@@ -641,13 +641,13 @@ static void qla4xxx_timer(struct scsi_ql
62276 + iscsi_unblock_session(ddb_entry->sess);
62277 +diff -urNp linux-3.0.8/drivers/scsi/qla4xxx/ql4_os.c linux-3.0.8/drivers/scsi/qla4xxx/ql4_os.c
62278 +--- linux-3.0.8/drivers/scsi/qla4xxx/ql4_os.c 2011-07-21 22:17:23.000000000 -0400
62279 ++++ linux-3.0.8/drivers/scsi/qla4xxx/ql4_os.c 2011-08-23 21:47:56.000000000 -0400
62280 +@@ -811,13 +811,13 @@ static void qla4xxx_timer(struct scsi_ql
62281 ddb_entry->fw_ddb_device_state ==
62282 DDB_DS_SESSION_FAILED) {
62283 /* Reset retry relogin timer */
62284 - atomic_inc(&ddb_entry->relogin_retry_count);
62285 + atomic_inc_unchecked(&ddb_entry->relogin_retry_count);
62286 - DEBUG2(printk("scsi%ld: index[%d] relogin"
62287 + DEBUG2(printk("scsi%ld: ddb [%d] relogin"
62288 " timed out-retrying"
62289 " relogin (%d)\n",
62290 ha->host_no,
62291 @@ -37791,10 +34491,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/qla4xxx/ql4_os.c linux-2.6.32.48/drivers
62292 relogin_retry_count))
62293 );
62294 start_dpc++;
62295 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi.c linux-2.6.32.48/drivers/scsi/scsi.c
62296 ---- linux-2.6.32.48/drivers/scsi/scsi.c 2009-12-02 22:51:21.000000000 -0500
62297 -+++ linux-2.6.32.48/drivers/scsi/scsi.c 2011-11-12 12:46:45.000000000 -0500
62298 -@@ -652,7 +652,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *
62299 +diff -urNp linux-3.0.8/drivers/scsi/scsi.c linux-3.0.8/drivers/scsi/scsi.c
62300 +--- linux-3.0.8/drivers/scsi/scsi.c 2011-07-21 22:17:23.000000000 -0400
62301 ++++ linux-3.0.8/drivers/scsi/scsi.c 2011-08-23 21:47:56.000000000 -0400
62302 +@@ -655,7 +655,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *
62303 unsigned long timeout;
62304 int rtn = 0;
62305
62306 @@ -37803,10 +34503,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi.c linux-2.6.32.48/drivers/scsi/scsi
62307
62308 /* check if the device is still usable */
62309 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
62310 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_debug.c linux-2.6.32.48/drivers/scsi/scsi_debug.c
62311 ---- linux-2.6.32.48/drivers/scsi/scsi_debug.c 2011-11-12 12:44:29.000000000 -0500
62312 -+++ linux-2.6.32.48/drivers/scsi/scsi_debug.c 2011-11-12 12:46:45.000000000 -0500
62313 -@@ -1395,6 +1395,8 @@ static int resp_mode_select(struct scsi_
62314 +diff -urNp linux-3.0.8/drivers/scsi/scsi_debug.c linux-3.0.8/drivers/scsi/scsi_debug.c
62315 +--- linux-3.0.8/drivers/scsi/scsi_debug.c 2011-07-21 22:17:23.000000000 -0400
62316 ++++ linux-3.0.8/drivers/scsi/scsi_debug.c 2011-08-23 21:48:14.000000000 -0400
62317 +@@ -1493,6 +1493,8 @@ static int resp_mode_select(struct scsi_
62318 unsigned char arr[SDEBUG_MAX_MSELECT_SZ];
62319 unsigned char *cmd = (unsigned char *)scp->cmnd;
62320
62321 @@ -37815,7 +34515,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_debug.c linux-2.6.32.48/drivers/scs
62322 if ((errsts = check_readiness(scp, 1, devip)))
62323 return errsts;
62324 memset(arr, 0, sizeof(arr));
62325 -@@ -1492,6 +1494,8 @@ static int resp_log_sense(struct scsi_cm
62326 +@@ -1590,6 +1592,8 @@ static int resp_log_sense(struct scsi_cm
62327 unsigned char arr[SDEBUG_MAX_LSENSE_SZ];
62328 unsigned char *cmd = (unsigned char *)scp->cmnd;
62329
62330 @@ -37824,11 +34524,11 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_debug.c linux-2.6.32.48/drivers/scs
62331 if ((errsts = check_readiness(scp, 1, devip)))
62332 return errsts;
62333 memset(arr, 0, sizeof(arr));
62334 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_lib.c linux-2.6.32.48/drivers/scsi/scsi_lib.c
62335 ---- linux-2.6.32.48/drivers/scsi/scsi_lib.c 2011-11-12 12:44:29.000000000 -0500
62336 -+++ linux-2.6.32.48/drivers/scsi/scsi_lib.c 2011-11-12 12:46:45.000000000 -0500
62337 -@@ -1384,7 +1384,7 @@ static void scsi_kill_request(struct req
62338 -
62339 +diff -urNp linux-3.0.8/drivers/scsi/scsi_lib.c linux-3.0.8/drivers/scsi/scsi_lib.c
62340 +--- linux-3.0.8/drivers/scsi/scsi_lib.c 2011-10-24 08:05:21.000000000 -0400
62341 ++++ linux-3.0.8/drivers/scsi/scsi_lib.c 2011-08-23 21:47:56.000000000 -0400
62342 +@@ -1412,7 +1412,7 @@ static void scsi_kill_request(struct req
62343 + shost = sdev->host;
62344 scsi_init_cmd_errh(cmd);
62345 cmd->result = DID_NO_CONNECT << 16;
62346 - atomic_inc(&cmd->device->iorequest_cnt);
62347 @@ -37836,9 +34536,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_lib.c linux-2.6.32.48/drivers/scsi/
62348
62349 /*
62350 * SCSI request completion path will do scsi_device_unbusy(),
62351 -@@ -1415,9 +1415,9 @@ static void scsi_softirq_done(struct req
62352 - */
62353 - cmd->serial_number = 0;
62354 +@@ -1438,9 +1438,9 @@ static void scsi_softirq_done(struct req
62355 +
62356 + INIT_LIST_HEAD(&cmd->eh_entry);
62357
62358 - atomic_inc(&cmd->device->iodone_cnt);
62359 + atomic_inc_unchecked(&cmd->device->iodone_cnt);
62360 @@ -37848,10 +34548,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_lib.c linux-2.6.32.48/drivers/scsi/
62361
62362 disposition = scsi_decide_disposition(cmd);
62363 if (disposition != SUCCESS &&
62364 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_sysfs.c linux-2.6.32.48/drivers/scsi/scsi_sysfs.c
62365 ---- linux-2.6.32.48/drivers/scsi/scsi_sysfs.c 2011-11-12 12:44:29.000000000 -0500
62366 -+++ linux-2.6.32.48/drivers/scsi/scsi_sysfs.c 2011-11-12 12:46:45.000000000 -0500
62367 -@@ -662,7 +662,7 @@ show_iostat_##field(struct device *dev,
62368 +diff -urNp linux-3.0.8/drivers/scsi/scsi_sysfs.c linux-3.0.8/drivers/scsi/scsi_sysfs.c
62369 +--- linux-3.0.8/drivers/scsi/scsi_sysfs.c 2011-07-21 22:17:23.000000000 -0400
62370 ++++ linux-3.0.8/drivers/scsi/scsi_sysfs.c 2011-08-23 21:47:56.000000000 -0400
62371 +@@ -622,7 +622,7 @@ show_iostat_##field(struct device *dev,
62372 char *buf) \
62373 { \
62374 struct scsi_device *sdev = to_scsi_device(dev); \
62375 @@ -37860,9 +34560,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_sysfs.c linux-2.6.32.48/drivers/scs
62376 return snprintf(buf, 20, "0x%llx\n", count); \
62377 } \
62378 static DEVICE_ATTR(field, S_IRUGO, show_iostat_##field, NULL)
62379 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c
62380 ---- linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c 2009-12-02 22:51:21.000000000 -0500
62381 -+++ linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c 2011-11-12 12:46:45.000000000 -0500
62382 +diff -urNp linux-3.0.8/drivers/scsi/scsi_tgt_lib.c linux-3.0.8/drivers/scsi/scsi_tgt_lib.c
62383 +--- linux-3.0.8/drivers/scsi/scsi_tgt_lib.c 2011-07-21 22:17:23.000000000 -0400
62384 ++++ linux-3.0.8/drivers/scsi/scsi_tgt_lib.c 2011-10-06 04:17:55.000000000 -0400
62385 @@ -362,7 +362,7 @@ static int scsi_map_user_pages(struct sc
62386 int err;
62387
62388 @@ -37872,10 +34572,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_tgt_lib.c linux-2.6.32.48/drivers/s
62389 if (err) {
62390 /*
62391 * TODO: need to fixup sg_tablesize, max_segment_size,
62392 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c
62393 ---- linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c 2011-11-12 12:44:29.000000000 -0500
62394 -+++ linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c 2011-11-12 12:46:45.000000000 -0500
62395 -@@ -480,7 +480,7 @@ MODULE_PARM_DESC(dev_loss_tmo,
62396 +diff -urNp linux-3.0.8/drivers/scsi/scsi_transport_fc.c linux-3.0.8/drivers/scsi/scsi_transport_fc.c
62397 +--- linux-3.0.8/drivers/scsi/scsi_transport_fc.c 2011-07-21 22:17:23.000000000 -0400
62398 ++++ linux-3.0.8/drivers/scsi/scsi_transport_fc.c 2011-08-23 21:47:56.000000000 -0400
62399 +@@ -484,7 +484,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_
62400 * Netlink Infrastructure
62401 */
62402
62403 @@ -37884,7 +34584,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c linux-2.6.32.48/driv
62404
62405 /**
62406 * fc_get_event_number - Obtain the next sequential FC event number
62407 -@@ -493,7 +493,7 @@ static atomic_t fc_event_seq;
62408 +@@ -497,7 +497,7 @@ static atomic_t fc_event_seq;
62409 u32
62410 fc_get_event_number(void)
62411 {
62412 @@ -37893,7 +34593,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c linux-2.6.32.48/driv
62413 }
62414 EXPORT_SYMBOL(fc_get_event_number);
62415
62416 -@@ -641,7 +641,7 @@ static __init int fc_transport_init(void
62417 +@@ -645,7 +645,7 @@ static __init int fc_transport_init(void
62418 {
62419 int error;
62420
62421 @@ -37902,10 +34602,19 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_fc.c linux-2.6.32.48/driv
62422
62423 error = transport_class_register(&fc_host_class);
62424 if (error)
62425 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c
62426 ---- linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c 2011-11-12 12:44:29.000000000 -0500
62427 -+++ linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c 2011-11-12 12:46:45.000000000 -0500
62428 -@@ -81,7 +81,7 @@ struct iscsi_internal {
62429 +@@ -835,7 +835,7 @@ static int fc_str_to_dev_loss(const char
62430 + char *cp;
62431 +
62432 + *val = simple_strtoul(buf, &cp, 0);
62433 +- if ((*cp && (*cp != '\n')) || (*val < 0))
62434 ++ if (*cp && (*cp != '\n'))
62435 + return -EINVAL;
62436 + /*
62437 + * Check for overflow; dev_loss_tmo is u32
62438 +diff -urNp linux-3.0.8/drivers/scsi/scsi_transport_iscsi.c linux-3.0.8/drivers/scsi/scsi_transport_iscsi.c
62439 +--- linux-3.0.8/drivers/scsi/scsi_transport_iscsi.c 2011-07-21 22:17:23.000000000 -0400
62440 ++++ linux-3.0.8/drivers/scsi/scsi_transport_iscsi.c 2011-08-23 21:47:56.000000000 -0400
62441 +@@ -83,7 +83,7 @@ struct iscsi_internal {
62442 struct device_attribute *session_attrs[ISCSI_SESSION_ATTRS + 1];
62443 };
62444
62445 @@ -37914,7 +34623,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c linux-2.6.32.48/d
62446 static struct workqueue_struct *iscsi_eh_timer_workq;
62447
62448 /*
62449 -@@ -728,7 +728,7 @@ int iscsi_add_session(struct iscsi_cls_s
62450 +@@ -761,7 +761,7 @@ int iscsi_add_session(struct iscsi_cls_s
62451 int err;
62452
62453 ihost = shost->shost_data;
62454 @@ -37923,7 +34632,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c linux-2.6.32.48/d
62455
62456 if (id == ISCSI_MAX_TARGET) {
62457 for (id = 0; id < ISCSI_MAX_TARGET; id++) {
62458 -@@ -2060,7 +2060,7 @@ static __init int iscsi_transport_init(v
62459 +@@ -2200,7 +2200,7 @@ static __init int iscsi_transport_init(v
62460 printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
62461 ISCSI_TRANSPORT_VERSION);
62462
62463 @@ -37932,9 +34641,9 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_iscsi.c linux-2.6.32.48/d
62464
62465 err = class_register(&iscsi_transport_class);
62466 if (err)
62467 -diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c
62468 ---- linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c 2009-12-02 22:51:21.000000000 -0500
62469 -+++ linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c 2011-11-12 12:46:45.000000000 -0500
62470 +diff -urNp linux-3.0.8/drivers/scsi/scsi_transport_srp.c linux-3.0.8/drivers/scsi/scsi_transport_srp.c
62471 +--- linux-3.0.8/drivers/scsi/scsi_transport_srp.c 2011-07-21 22:17:23.000000000 -0400
62472 ++++ linux-3.0.8/drivers/scsi/scsi_transport_srp.c 2011-08-23 21:47:56.000000000 -0400
62473 @@ -33,7 +33,7 @@
62474 #include "scsi_transport_srp_internal.h"
62475
62476 @@ -37962,10 +34671,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/scsi_transport_srp.c linux-2.6.32.48/dri
62477 dev_set_name(&rport->dev, "port-%d:%d", shost->host_no, id);
62478
62479 transport_setup_device(&rport->dev);
62480 -diff -urNp linux-2.6.32.48/drivers/scsi/sg.c linux-2.6.32.48/drivers/scsi/sg.c
62481 ---- linux-2.6.32.48/drivers/scsi/sg.c 2009-12-02 22:51:21.000000000 -0500
62482 -+++ linux-2.6.32.48/drivers/scsi/sg.c 2011-11-12 12:46:45.000000000 -0500
62483 -@@ -1064,7 +1064,7 @@ sg_ioctl(struct inode *inode, struct fil
62484 +diff -urNp linux-3.0.8/drivers/scsi/sg.c linux-3.0.8/drivers/scsi/sg.c
62485 +--- linux-3.0.8/drivers/scsi/sg.c 2011-07-21 22:17:23.000000000 -0400
62486 ++++ linux-3.0.8/drivers/scsi/sg.c 2011-10-06 04:17:55.000000000 -0400
62487 +@@ -1075,7 +1075,7 @@ sg_ioctl(struct file *filp, unsigned int
62488 sdp->disk->disk_name,
62489 MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
62490 NULL,
62491 @@ -37974,7 +34683,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/sg.c linux-2.6.32.48/drivers/scsi/sg.c
62492 case BLKTRACESTART:
62493 return blk_trace_startstop(sdp->device->request_queue, 1);
62494 case BLKTRACESTOP:
62495 -@@ -2292,7 +2292,7 @@ struct sg_proc_leaf {
62496 +@@ -2310,7 +2310,7 @@ struct sg_proc_leaf {
62497 const struct file_operations * fops;
62498 };
62499
62500 @@ -37983,7 +34692,7 @@ diff -urNp linux-2.6.32.48/drivers/scsi/sg.c linux-2.6.32.48/drivers/scsi/sg.c
62501 {"allow_dio", &adio_fops},
62502 {"debug", &debug_fops},
62503 {"def_reserved_size", &dressz_fops},
62504 -@@ -2307,7 +2307,7 @@ sg_proc_init(void)
62505 +@@ -2325,7 +2325,7 @@ sg_proc_init(void)
62506 {
62507 int k, mask;
62508 int num_leaves = ARRAY_SIZE(sg_proc_leaf_arr);
62509 @@ -37992,10 +34701,10 @@ diff -urNp linux-2.6.32.48/drivers/scsi/sg.c linux-2.6.32.48/drivers/scsi/sg.c
62510
62511 sg_proc_sgp = proc_mkdir(sg_proc_sg_dirname, NULL);
62512 if (!sg_proc_sgp)
62513 -diff -urNp linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c
62514 ---- linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c 2009-12-02 22:51:21.000000000 -0500
62515 -+++ linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-11-12 12:46:45.000000000 -0500
62516 -@@ -1754,6 +1754,8 @@ static int __devinit sym2_probe(struct p
62517 +diff -urNp linux-3.0.8/drivers/scsi/sym53c8xx_2/sym_glue.c linux-3.0.8/drivers/scsi/sym53c8xx_2/sym_glue.c
62518 +--- linux-3.0.8/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-07-21 22:17:23.000000000 -0400
62519 ++++ linux-3.0.8/drivers/scsi/sym53c8xx_2/sym_glue.c 2011-08-23 21:48:14.000000000 -0400
62520 +@@ -1756,6 +1756,8 @@ static int __devinit sym2_probe(struct p
62521 int do_iounmap = 0;
62522 int do_disable_device = 1;
62523
62524 @@ -38004,298 +34713,159 @@ diff -urNp linux-2.6.32.48/drivers/scsi/sym53c8xx_2/sym_glue.c linux-2.6.32.48/d
62525 memset(&sym_dev, 0, sizeof(sym_dev));
62526 memset(&nvram, 0, sizeof(nvram));
62527 sym_dev.pdev = pdev;
62528 -diff -urNp linux-2.6.32.48/drivers/serial/kgdboc.c linux-2.6.32.48/drivers/serial/kgdboc.c
62529 ---- linux-2.6.32.48/drivers/serial/kgdboc.c 2009-12-02 22:51:21.000000000 -0500
62530 -+++ linux-2.6.32.48/drivers/serial/kgdboc.c 2011-11-12 12:46:45.000000000 -0500
62531 -@@ -18,7 +18,7 @@
62532 -
62533 - #define MAX_CONFIG_LEN 40
62534 -
62535 --static struct kgdb_io kgdboc_io_ops;
62536 -+static const struct kgdb_io kgdboc_io_ops;
62537 +diff -urNp linux-3.0.8/drivers/scsi/vmw_pvscsi.c linux-3.0.8/drivers/scsi/vmw_pvscsi.c
62538 +--- linux-3.0.8/drivers/scsi/vmw_pvscsi.c 2011-07-21 22:17:23.000000000 -0400
62539 ++++ linux-3.0.8/drivers/scsi/vmw_pvscsi.c 2011-08-23 21:48:14.000000000 -0400
62540 +@@ -447,6 +447,8 @@ static void pvscsi_setup_all_rings(const
62541 + dma_addr_t base;
62542 + unsigned i;
62543
62544 - /* -1 = init not run yet, 0 = unconfigured, 1 = configured. */
62545 - static int configured = -1;
62546 -@@ -154,7 +154,7 @@ static void kgdboc_post_exp_handler(void
62547 - module_put(THIS_MODULE);
62548 - }
62549 ++ pax_track_stack();
62550 ++
62551 + cmd.ringsStatePPN = adapter->ringStatePA >> PAGE_SHIFT;
62552 + cmd.reqRingNumPages = adapter->req_pages;
62553 + cmd.cmpRingNumPages = adapter->cmp_pages;
62554 +diff -urNp linux-3.0.8/drivers/spi/dw_spi_pci.c linux-3.0.8/drivers/spi/dw_spi_pci.c
62555 +--- linux-3.0.8/drivers/spi/dw_spi_pci.c 2011-07-21 22:17:23.000000000 -0400
62556 ++++ linux-3.0.8/drivers/spi/dw_spi_pci.c 2011-10-11 10:44:33.000000000 -0400
62557 +@@ -148,7 +148,7 @@ static int spi_resume(struct pci_dev *pd
62558 + #define spi_resume NULL
62559 + #endif
62560
62561 --static struct kgdb_io kgdboc_io_ops = {
62562 -+static const struct kgdb_io kgdboc_io_ops = {
62563 - .name = "kgdboc",
62564 - .read_char = kgdboc_get_char,
62565 - .write_char = kgdboc_put_char,
62566 -diff -urNp linux-2.6.32.48/drivers/spi/spi.c linux-2.6.32.48/drivers/spi/spi.c
62567 ---- linux-2.6.32.48/drivers/spi/spi.c 2009-12-02 22:51:21.000000000 -0500
62568 -+++ linux-2.6.32.48/drivers/spi/spi.c 2011-11-12 12:46:45.000000000 -0500
62569 -@@ -774,7 +774,7 @@ int spi_sync(struct spi_device *spi, str
62570 - EXPORT_SYMBOL_GPL(spi_sync);
62571 +-static const struct pci_device_id pci_ids[] __devinitdata = {
62572 ++static const struct pci_device_id pci_ids[] __devinitconst = {
62573 + /* Intel MID platform SPI controller 0 */
62574 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0800) },
62575 + {},
62576 +diff -urNp linux-3.0.8/drivers/spi/spi.c linux-3.0.8/drivers/spi/spi.c
62577 +--- linux-3.0.8/drivers/spi/spi.c 2011-07-21 22:17:23.000000000 -0400
62578 ++++ linux-3.0.8/drivers/spi/spi.c 2011-08-23 21:47:56.000000000 -0400
62579 +@@ -1023,7 +1023,7 @@ int spi_bus_unlock(struct spi_master *ma
62580 + EXPORT_SYMBOL_GPL(spi_bus_unlock);
62581
62582 /* portable code must never pass more than 32 bytes */
62583 -#define SPI_BUFSIZ max(32,SMP_CACHE_BYTES)
62584 -+#define SPI_BUFSIZ max(32U,SMP_CACHE_BYTES)
62585 ++#define SPI_BUFSIZ max(32UL,SMP_CACHE_BYTES)
62586
62587 static u8 *buf;
62588
62589 -diff -urNp linux-2.6.32.48/drivers/staging/android/binder.c linux-2.6.32.48/drivers/staging/android/binder.c
62590 ---- linux-2.6.32.48/drivers/staging/android/binder.c 2009-12-02 22:51:21.000000000 -0500
62591 -+++ linux-2.6.32.48/drivers/staging/android/binder.c 2011-11-12 12:46:45.000000000 -0500
62592 -@@ -2756,7 +2756,7 @@ static void binder_vma_close(struct vm_a
62593 - binder_defer_work(proc, BINDER_DEFERRED_PUT_FILES);
62594 - }
62595 -
62596 --static struct vm_operations_struct binder_vm_ops = {
62597 -+static const struct vm_operations_struct binder_vm_ops = {
62598 - .open = binder_vma_open,
62599 - .close = binder_vma_close,
62600 - };
62601 -diff -urNp linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c
62602 ---- linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c 2009-12-02 22:51:21.000000000 -0500
62603 -+++ linux-2.6.32.48/drivers/staging/b3dfg/b3dfg.c 2011-11-12 12:46:45.000000000 -0500
62604 -@@ -455,7 +455,7 @@ static int b3dfg_vma_fault(struct vm_are
62605 - return VM_FAULT_NOPAGE;
62606 - }
62607 -
62608 --static struct vm_operations_struct b3dfg_vm_ops = {
62609 -+static const struct vm_operations_struct b3dfg_vm_ops = {
62610 - .fault = b3dfg_vma_fault,
62611 - };
62612 -
62613 -@@ -848,7 +848,7 @@ static int b3dfg_mmap(struct file *filp,
62614 - return r;
62615 - }
62616 -
62617 --static struct file_operations b3dfg_fops = {
62618 -+static const struct file_operations b3dfg_fops = {
62619 - .owner = THIS_MODULE,
62620 - .open = b3dfg_open,
62621 - .release = b3dfg_release,
62622 -diff -urNp linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c
62623 ---- linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c 2011-11-12 12:44:29.000000000 -0500
62624 -+++ linux-2.6.32.48/drivers/staging/comedi/comedi_fops.c 2011-11-12 12:46:45.000000000 -0500
62625 -@@ -1389,7 +1389,7 @@ void comedi_unmap(struct vm_area_struct
62626 - mutex_unlock(&dev->mutex);
62627 - }
62628 -
62629 --static struct vm_operations_struct comedi_vm_ops = {
62630 -+static const struct vm_operations_struct comedi_vm_ops = {
62631 - .close = comedi_unmap,
62632 - };
62633 -
62634 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c
62635 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c 2009-12-02 22:51:21.000000000 -0500
62636 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/adsp_driver.c 2011-11-12 12:46:45.000000000 -0500
62637 -@@ -576,7 +576,7 @@ static struct adsp_device *inode_to_devi
62638 - static dev_t adsp_devno;
62639 - static struct class *adsp_class;
62640 -
62641 --static struct file_operations adsp_fops = {
62642 -+static const struct file_operations adsp_fops = {
62643 - .owner = THIS_MODULE,
62644 - .open = adsp_open,
62645 - .unlocked_ioctl = adsp_ioctl,
62646 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c
62647 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c 2009-12-02 22:51:21.000000000 -0500
62648 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_aac.c 2011-11-12 12:46:45.000000000 -0500
62649 -@@ -1022,7 +1022,7 @@ done:
62650 - return rc;
62651 - }
62652 -
62653 --static struct file_operations audio_aac_fops = {
62654 -+static const struct file_operations audio_aac_fops = {
62655 - .owner = THIS_MODULE,
62656 - .open = audio_open,
62657 - .release = audio_release,
62658 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c
62659 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c 2009-12-02 22:51:21.000000000 -0500
62660 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_amrnb.c 2011-11-12 12:46:45.000000000 -0500
62661 -@@ -833,7 +833,7 @@ done:
62662 - return rc;
62663 - }
62664 -
62665 --static struct file_operations audio_amrnb_fops = {
62666 -+static const struct file_operations audio_amrnb_fops = {
62667 - .owner = THIS_MODULE,
62668 - .open = audamrnb_open,
62669 - .release = audamrnb_release,
62670 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c
62671 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c 2009-12-02 22:51:21.000000000 -0500
62672 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_evrc.c 2011-11-12 12:46:45.000000000 -0500
62673 -@@ -805,7 +805,7 @@ dma_fail:
62674 - return rc;
62675 - }
62676 -
62677 --static struct file_operations audio_evrc_fops = {
62678 -+static const struct file_operations audio_evrc_fops = {
62679 - .owner = THIS_MODULE,
62680 - .open = audevrc_open,
62681 - .release = audevrc_release,
62682 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c
62683 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c 2009-12-02 22:51:21.000000000 -0500
62684 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_in.c 2011-11-12 12:46:45.000000000 -0500
62685 -@@ -913,7 +913,7 @@ static int audpre_open(struct inode *ino
62686 - return 0;
62687 - }
62688 -
62689 --static struct file_operations audio_fops = {
62690 -+static const struct file_operations audio_fops = {
62691 - .owner = THIS_MODULE,
62692 - .open = audio_in_open,
62693 - .release = audio_in_release,
62694 -@@ -922,7 +922,7 @@ static struct file_operations audio_fops
62695 - .unlocked_ioctl = audio_in_ioctl,
62696 - };
62697 -
62698 --static struct file_operations audpre_fops = {
62699 -+static const struct file_operations audpre_fops = {
62700 - .owner = THIS_MODULE,
62701 - .open = audpre_open,
62702 - .unlocked_ioctl = audpre_ioctl,
62703 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c
62704 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c 2009-12-02 22:51:21.000000000 -0500
62705 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_mp3.c 2011-11-12 12:46:45.000000000 -0500
62706 -@@ -941,7 +941,7 @@ done:
62707 - return rc;
62708 - }
62709 -
62710 --static struct file_operations audio_mp3_fops = {
62711 -+static const struct file_operations audio_mp3_fops = {
62712 - .owner = THIS_MODULE,
62713 - .open = audio_open,
62714 - .release = audio_release,
62715 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c
62716 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c 2009-12-02 22:51:21.000000000 -0500
62717 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_out.c 2011-11-12 12:46:45.000000000 -0500
62718 -@@ -810,7 +810,7 @@ static int audpp_open(struct inode *inod
62719 - return 0;
62720 - }
62721 -
62722 --static struct file_operations audio_fops = {
62723 -+static const struct file_operations audio_fops = {
62724 - .owner = THIS_MODULE,
62725 - .open = audio_open,
62726 - .release = audio_release,
62727 -@@ -819,7 +819,7 @@ static struct file_operations audio_fops
62728 - .unlocked_ioctl = audio_ioctl,
62729 - };
62730 -
62731 --static struct file_operations audpp_fops = {
62732 -+static const struct file_operations audpp_fops = {
62733 - .owner = THIS_MODULE,
62734 - .open = audpp_open,
62735 - .unlocked_ioctl = audpp_ioctl,
62736 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c
62737 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c 2009-12-02 22:51:21.000000000 -0500
62738 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/audio_qcelp.c 2011-11-12 12:46:45.000000000 -0500
62739 -@@ -816,7 +816,7 @@ err:
62740 - return rc;
62741 - }
62742 -
62743 --static struct file_operations audio_qcelp_fops = {
62744 -+static const struct file_operations audio_qcelp_fops = {
62745 - .owner = THIS_MODULE,
62746 - .open = audqcelp_open,
62747 - .release = audqcelp_release,
62748 -diff -urNp linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c
62749 ---- linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c 2009-12-02 22:51:21.000000000 -0500
62750 -+++ linux-2.6.32.48/drivers/staging/dream/qdsp5/snd.c 2011-11-12 12:46:45.000000000 -0500
62751 -@@ -242,7 +242,7 @@ err:
62752 - return rc;
62753 - }
62754 -
62755 --static struct file_operations snd_fops = {
62756 -+static const struct file_operations snd_fops = {
62757 - .owner = THIS_MODULE,
62758 - .open = snd_open,
62759 - .release = snd_release,
62760 -diff -urNp linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c
62761 ---- linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c 2009-12-02 22:51:21.000000000 -0500
62762 -+++ linux-2.6.32.48/drivers/staging/dream/smd/smd_qmi.c 2011-11-12 12:46:45.000000000 -0500
62763 -@@ -793,7 +793,7 @@ static int qmi_release(struct inode *ip,
62764 - return 0;
62765 - }
62766 -
62767 --static struct file_operations qmi_fops = {
62768 -+static const struct file_operations qmi_fops = {
62769 - .owner = THIS_MODULE,
62770 - .read = qmi_read,
62771 - .write = qmi_write,
62772 -diff -urNp linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c
62773 ---- linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c 2009-12-02 22:51:21.000000000 -0500
62774 -+++ linux-2.6.32.48/drivers/staging/dream/smd/smd_rpcrouter_device.c 2011-11-12 12:46:45.000000000 -0500
62775 -@@ -214,7 +214,7 @@ static long rpcrouter_ioctl(struct file
62776 - return rc;
62777 - }
62778 -
62779 --static struct file_operations rpcrouter_server_fops = {
62780 -+static const struct file_operations rpcrouter_server_fops = {
62781 - .owner = THIS_MODULE,
62782 - .open = rpcrouter_open,
62783 - .release = rpcrouter_release,
62784 -@@ -224,7 +224,7 @@ static struct file_operations rpcrouter_
62785 - .unlocked_ioctl = rpcrouter_ioctl,
62786 - };
62787 -
62788 --static struct file_operations rpcrouter_router_fops = {
62789 -+static const struct file_operations rpcrouter_router_fops = {
62790 - .owner = THIS_MODULE,
62791 - .open = rpcrouter_open,
62792 - .release = rpcrouter_release,
62793 -diff -urNp linux-2.6.32.48/drivers/staging/dst/dcore.c linux-2.6.32.48/drivers/staging/dst/dcore.c
62794 ---- linux-2.6.32.48/drivers/staging/dst/dcore.c 2009-12-02 22:51:21.000000000 -0500
62795 -+++ linux-2.6.32.48/drivers/staging/dst/dcore.c 2011-11-12 12:46:45.000000000 -0500
62796 -@@ -149,7 +149,7 @@ static int dst_bdev_release(struct gendi
62797 - return 0;
62798 - }
62799 +diff -urNp linux-3.0.8/drivers/staging/ath6kl/os/linux/ar6000_drv.c linux-3.0.8/drivers/staging/ath6kl/os/linux/ar6000_drv.c
62800 +--- linux-3.0.8/drivers/staging/ath6kl/os/linux/ar6000_drv.c 2011-10-24 08:05:21.000000000 -0400
62801 ++++ linux-3.0.8/drivers/staging/ath6kl/os/linux/ar6000_drv.c 2011-08-23 21:48:14.000000000 -0400
62802 +@@ -362,7 +362,7 @@ static struct ar_cookie s_ar_cookie_mem[
62803 + (((ar)->arTargetType == TARGET_TYPE_AR6003) ? AR6003_HOST_INTEREST_ITEM_ADDRESS(item) : 0))
62804 +
62805 +
62806 +-static struct net_device_ops ar6000_netdev_ops = {
62807 ++static net_device_ops_no_const ar6000_netdev_ops = {
62808 + .ndo_init = NULL,
62809 + .ndo_open = ar6000_open,
62810 + .ndo_stop = ar6000_close,
62811 +diff -urNp linux-3.0.8/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h linux-3.0.8/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h
62812 +--- linux-3.0.8/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h 2011-07-21 22:17:23.000000000 -0400
62813 ++++ linux-3.0.8/drivers/staging/ath6kl/os/linux/include/ar6k_pal.h 2011-08-23 21:47:56.000000000 -0400
62814 +@@ -30,7 +30,7 @@ typedef bool (*ar6k_pal_recv_pkt_t)(void
62815 + typedef struct ar6k_pal_config_s
62816 + {
62817 + ar6k_pal_recv_pkt_t fpar6k_pal_recv_pkt;
62818 +-}ar6k_pal_config_t;
62819 ++} __no_const ar6k_pal_config_t;
62820 +
62821 + void register_pal_cb(ar6k_pal_config_t *palConfig_p);
62822 + #endif /* _AR6K_PAL_H_ */
62823 +diff -urNp linux-3.0.8/drivers/staging/brcm80211/brcmfmac/dhd_linux.c linux-3.0.8/drivers/staging/brcm80211/brcmfmac/dhd_linux.c
62824 +--- linux-3.0.8/drivers/staging/brcm80211/brcmfmac/dhd_linux.c 2011-07-21 22:17:23.000000000 -0400
62825 ++++ linux-3.0.8/drivers/staging/brcm80211/brcmfmac/dhd_linux.c 2011-08-23 21:47:56.000000000 -0400
62826 +@@ -853,14 +853,14 @@ static void dhd_op_if(dhd_if_t *ifp)
62827 + free_netdev(ifp->net);
62828 + }
62829 + /* Allocate etherdev, including space for private structure */
62830 +- ifp->net = alloc_etherdev(sizeof(dhd));
62831 ++ ifp->net = alloc_etherdev(sizeof(*dhd));
62832 + if (!ifp->net) {
62833 + DHD_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
62834 + ret = -ENOMEM;
62835 + }
62836 + if (ret == 0) {
62837 + strcpy(ifp->net->name, ifp->name);
62838 +- memcpy(netdev_priv(ifp->net), &dhd, sizeof(dhd));
62839 ++ memcpy(netdev_priv(ifp->net), dhd, sizeof(*dhd));
62840 + err = dhd_net_attach(&dhd->pub, ifp->idx);
62841 + if (err != 0) {
62842 + DHD_ERROR(("%s: dhd_net_attach failed, "
62843 +@@ -1872,7 +1872,7 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bu
62844 + strcpy(nv_path, nvram_path);
62845 +
62846 + /* Allocate etherdev, including space for private structure */
62847 +- net = alloc_etherdev(sizeof(dhd));
62848 ++ net = alloc_etherdev(sizeof(*dhd));
62849 + if (!net) {
62850 + DHD_ERROR(("%s: OOM - alloc_etherdev\n", __func__));
62851 + goto fail;
62852 +@@ -1888,7 +1888,7 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bu
62853 + /*
62854 + * Save the dhd_info into the priv
62855 + */
62856 +- memcpy(netdev_priv(net), &dhd, sizeof(dhd));
62857 ++ memcpy(netdev_priv(net), dhd, sizeof(*dhd));
62858
62859 --static struct block_device_operations dst_blk_ops = {
62860 -+static const struct block_device_operations dst_blk_ops = {
62861 - .open = dst_bdev_open,
62862 - .release = dst_bdev_release,
62863 - .owner = THIS_MODULE,
62864 -@@ -588,7 +588,7 @@ static struct dst_node *dst_alloc_node(s
62865 - n->size = ctl->size;
62866 -
62867 - atomic_set(&n->refcnt, 1);
62868 -- atomic_long_set(&n->gen, 0);
62869 -+ atomic_long_set_unchecked(&n->gen, 0);
62870 - snprintf(n->name, sizeof(n->name), "%s", ctl->name);
62871 -
62872 - err = dst_node_sysfs_init(n);
62873 -diff -urNp linux-2.6.32.48/drivers/staging/dst/trans.c linux-2.6.32.48/drivers/staging/dst/trans.c
62874 ---- linux-2.6.32.48/drivers/staging/dst/trans.c 2009-12-02 22:51:21.000000000 -0500
62875 -+++ linux-2.6.32.48/drivers/staging/dst/trans.c 2011-11-12 12:46:45.000000000 -0500
62876 -@@ -169,7 +169,7 @@ int dst_process_bio(struct dst_node *n,
62877 - t->error = 0;
62878 - t->retries = 0;
62879 - atomic_set(&t->refcnt, 1);
62880 -- t->gen = atomic_long_inc_return(&n->gen);
62881 -+ t->gen = atomic_long_inc_return_unchecked(&n->gen);
62882 -
62883 - t->enc = bio_data_dir(bio);
62884 - dst_bio_to_cmd(bio, &t->cmd, DST_IO, t->gen);
62885 -diff -urNp linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c
62886 ---- linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c 2009-12-02 22:51:21.000000000 -0500
62887 -+++ linux-2.6.32.48/drivers/staging/et131x/et1310_tx.c 2011-11-12 12:46:45.000000000 -0500
62888 -@@ -710,11 +710,11 @@ inline void et131x_free_send_packet(stru
62889 + /* Set network interface name if it was provided as module parameter */
62890 + if (iface_name[0]) {
62891 +@@ -2004,7 +2004,7 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bu
62892 + /*
62893 + * Save the dhd_info into the priv
62894 + */
62895 +- memcpy(netdev_priv(net), &dhd, sizeof(dhd));
62896 ++ memcpy(netdev_priv(net), dhd, sizeof(*dhd));
62897 +
62898 + #if defined(CUSTOMER_HW2) && defined(CONFIG_WIFI_CONTROL_FUNC)
62899 + g_bus = bus;
62900 +diff -urNp linux-3.0.8/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h linux-3.0.8/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h
62901 +--- linux-3.0.8/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h 2011-07-21 22:17:23.000000000 -0400
62902 ++++ linux-3.0.8/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h 2011-08-23 21:47:56.000000000 -0400
62903 +@@ -593,7 +593,7 @@ struct phy_func_ptr {
62904 + initfn_t carrsuppr;
62905 + rxsigpwrfn_t rxsigpwr;
62906 + detachfn_t detach;
62907 +-};
62908 ++} __no_const;
62909 + typedef struct phy_func_ptr phy_func_ptr_t;
62910 +
62911 + struct phy_info {
62912 +diff -urNp linux-3.0.8/drivers/staging/brcm80211/include/bcmsdh.h linux-3.0.8/drivers/staging/brcm80211/include/bcmsdh.h
62913 +--- linux-3.0.8/drivers/staging/brcm80211/include/bcmsdh.h 2011-07-21 22:17:23.000000000 -0400
62914 ++++ linux-3.0.8/drivers/staging/brcm80211/include/bcmsdh.h 2011-08-23 21:47:56.000000000 -0400
62915 +@@ -185,7 +185,7 @@ typedef struct {
62916 + u16 func, uint bustype, void *regsva, void *param);
62917 + /* detach from device */
62918 + void (*detach) (void *ch);
62919 +-} bcmsdh_driver_t;
62920 ++} __no_const bcmsdh_driver_t;
62921 +
62922 + /* platform specific/high level functions */
62923 + extern int bcmsdh_register(bcmsdh_driver_t *driver);
62924 +diff -urNp linux-3.0.8/drivers/staging/et131x/et1310_tx.c linux-3.0.8/drivers/staging/et131x/et1310_tx.c
62925 +--- linux-3.0.8/drivers/staging/et131x/et1310_tx.c 2011-07-21 22:17:23.000000000 -0400
62926 ++++ linux-3.0.8/drivers/staging/et131x/et1310_tx.c 2011-08-23 21:47:56.000000000 -0400
62927 +@@ -635,11 +635,11 @@ inline void et131x_free_send_packet(stru
62928 struct net_device_stats *stats = &etdev->net_stats;
62929
62930 - if (pMpTcb->Flags & fMP_DEST_BROAD)
62931 + if (tcb->flags & fMP_DEST_BROAD)
62932 - atomic_inc(&etdev->Stats.brdcstxmt);
62933 + atomic_inc_unchecked(&etdev->Stats.brdcstxmt);
62934 - else if (pMpTcb->Flags & fMP_DEST_MULTI)
62935 + else if (tcb->flags & fMP_DEST_MULTI)
62936 - atomic_inc(&etdev->Stats.multixmt);
62937 + atomic_inc_unchecked(&etdev->Stats.multixmt);
62938 else
62939 - atomic_inc(&etdev->Stats.unixmt);
62940 + atomic_inc_unchecked(&etdev->Stats.unixmt);
62941
62942 - if (pMpTcb->Packet) {
62943 - stats->tx_bytes += pMpTcb->Packet->len;
62944 -diff -urNp linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h
62945 ---- linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h 2009-12-02 22:51:21.000000000 -0500
62946 -+++ linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h 2011-11-12 12:46:45.000000000 -0500
62947 -@@ -145,11 +145,11 @@ typedef struct _ce_stats_t {
62948 + if (tcb->skb) {
62949 + stats->tx_bytes += tcb->skb->len;
62950 +diff -urNp linux-3.0.8/drivers/staging/et131x/et131x_adapter.h linux-3.0.8/drivers/staging/et131x/et131x_adapter.h
62951 +--- linux-3.0.8/drivers/staging/et131x/et131x_adapter.h 2011-07-21 22:17:23.000000000 -0400
62952 ++++ linux-3.0.8/drivers/staging/et131x/et131x_adapter.h 2011-08-23 21:47:56.000000000 -0400
62953 +@@ -110,11 +110,11 @@ typedef struct _ce_stats_t {
62954 * operations
62955 */
62956 u32 unircv; /* # multicast packets received */
62957 @@ -38310,117 +34880,144 @@ diff -urNp linux-2.6.32.48/drivers/staging/et131x/et131x_adapter.h linux-2.6.32.
62958 u32 norcvbuf; /* # Rx packets discarded */
62959 u32 noxmtbuf; /* # Tx packets discarded */
62960
62961 -diff -urNp linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c
62962 ---- linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c 2009-12-02 22:51:21.000000000 -0500
62963 -+++ linux-2.6.32.48/drivers/staging/go7007/go7007-v4l2.c 2011-11-12 12:46:45.000000000 -0500
62964 -@@ -1700,7 +1700,7 @@ static int go7007_vm_fault(struct vm_are
62965 - return 0;
62966 - }
62967 +diff -urNp linux-3.0.8/drivers/staging/hv/channel.c linux-3.0.8/drivers/staging/hv/channel.c
62968 +--- linux-3.0.8/drivers/staging/hv/channel.c 2011-10-24 08:05:21.000000000 -0400
62969 ++++ linux-3.0.8/drivers/staging/hv/channel.c 2011-08-23 21:47:56.000000000 -0400
62970 +@@ -433,8 +433,8 @@ int vmbus_establish_gpadl(struct vmbus_c
62971 + int ret = 0;
62972 + int t;
62973
62974 --static struct vm_operations_struct go7007_vm_ops = {
62975 -+static const struct vm_operations_struct go7007_vm_ops = {
62976 - .open = go7007_vm_open,
62977 - .close = go7007_vm_close,
62978 - .fault = go7007_vm_fault,
62979 -diff -urNp linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c
62980 ---- linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c 2011-11-12 12:44:29.000000000 -0500
62981 -+++ linux-2.6.32.48/drivers/staging/hv/blkvsc_drv.c 2011-11-12 12:46:45.000000000 -0500
62982 -@@ -153,7 +153,7 @@ static int blkvsc_ringbuffer_size = BLKV
62983 - /* The one and only one */
62984 - static struct blkvsc_driver_context g_blkvsc_drv;
62985 -
62986 --static struct block_device_operations block_ops = {
62987 -+static const struct block_device_operations block_ops = {
62988 - .owner = THIS_MODULE,
62989 - .open = blkvsc_open,
62990 - .release = blkvsc_release,
62991 -diff -urNp linux-2.6.32.48/drivers/staging/hv/Channel.c linux-2.6.32.48/drivers/staging/hv/Channel.c
62992 ---- linux-2.6.32.48/drivers/staging/hv/Channel.c 2011-11-12 12:44:29.000000000 -0500
62993 -+++ linux-2.6.32.48/drivers/staging/hv/Channel.c 2011-11-12 12:46:45.000000000 -0500
62994 -@@ -464,8 +464,8 @@ int VmbusChannelEstablishGpadl(struct vm
62995 -
62996 - DPRINT_ENTER(VMBUS);
62997 -
62998 -- nextGpadlHandle = atomic_read(&gVmbusConnection.NextGpadlHandle);
62999 -- atomic_inc(&gVmbusConnection.NextGpadlHandle);
63000 -+ nextGpadlHandle = atomic_read_unchecked(&gVmbusConnection.NextGpadlHandle);
63001 -+ atomic_inc_unchecked(&gVmbusConnection.NextGpadlHandle);
63002 -
63003 - VmbusChannelCreateGpadlHeader(Kbuffer, Size, &msgInfo, &msgCount);
63004 - ASSERT(msgInfo != NULL);
63005 -diff -urNp linux-2.6.32.48/drivers/staging/hv/Hv.c linux-2.6.32.48/drivers/staging/hv/Hv.c
63006 ---- linux-2.6.32.48/drivers/staging/hv/Hv.c 2011-11-12 12:44:29.000000000 -0500
63007 -+++ linux-2.6.32.48/drivers/staging/hv/Hv.c 2011-11-12 12:46:45.000000000 -0500
63008 -@@ -161,7 +161,7 @@ static u64 HvDoHypercall(u64 Control, vo
63009 - u64 outputAddress = (Output) ? virt_to_phys(Output) : 0;
63010 - u32 outputAddressHi = outputAddress >> 32;
63011 - u32 outputAddressLo = outputAddress & 0xFFFFFFFF;
63012 -- volatile void *hypercallPage = gHvContext.HypercallPage;
63013 -+ volatile void *hypercallPage = ktva_ktla(gHvContext.HypercallPage);
63014 -
63015 - DPRINT_DBG(VMBUS, "Hypercall <control %llx input %p output %p>",
63016 - Control, Input, Output);
63017 -diff -urNp linux-2.6.32.48/drivers/staging/hv/VmbusApi.h linux-2.6.32.48/drivers/staging/hv/VmbusApi.h
63018 ---- linux-2.6.32.48/drivers/staging/hv/VmbusApi.h 2009-12-02 22:51:21.000000000 -0500
63019 -+++ linux-2.6.32.48/drivers/staging/hv/VmbusApi.h 2011-11-12 12:46:45.000000000 -0500
63020 -@@ -109,7 +109,7 @@ struct vmbus_channel_interface {
63021 - u32 *GpadlHandle);
63022 - int (*TeardownGpadl)(struct hv_device *device, u32 GpadlHandle);
63023 - void (*GetInfo)(struct hv_device *dev, struct hv_device_info *devinfo);
63024 --};
63025 -+} __no_const;
63026 +- next_gpadl_handle = atomic_read(&vmbus_connection.next_gpadl_handle);
63027 +- atomic_inc(&vmbus_connection.next_gpadl_handle);
63028 ++ next_gpadl_handle = atomic_read_unchecked(&vmbus_connection.next_gpadl_handle);
63029 ++ atomic_inc_unchecked(&vmbus_connection.next_gpadl_handle);
63030
63031 - /* Base driver object */
63032 - struct hv_driver {
63033 -diff -urNp linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c
63034 ---- linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c 2011-11-12 12:44:29.000000000 -0500
63035 -+++ linux-2.6.32.48/drivers/staging/hv/vmbus_drv.c 2011-11-12 12:46:45.000000000 -0500
63036 -@@ -532,7 +532,7 @@ static int vmbus_child_device_register(s
63037 - to_device_context(root_device_obj);
63038 - struct device_context *child_device_ctx =
63039 - to_device_context(child_device_obj);
63040 -- static atomic_t device_num = ATOMIC_INIT(0);
63041 -+ static atomic_unchecked_t device_num = ATOMIC_INIT(0);
63042 + ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
63043 + if (ret)
63044 +diff -urNp linux-3.0.8/drivers/staging/hv/hv.c linux-3.0.8/drivers/staging/hv/hv.c
63045 +--- linux-3.0.8/drivers/staging/hv/hv.c 2011-07-21 22:17:23.000000000 -0400
63046 ++++ linux-3.0.8/drivers/staging/hv/hv.c 2011-08-23 21:47:56.000000000 -0400
63047 +@@ -132,7 +132,7 @@ static u64 do_hypercall(u64 control, voi
63048 + u64 output_address = (output) ? virt_to_phys(output) : 0;
63049 + u32 output_address_hi = output_address >> 32;
63050 + u32 output_address_lo = output_address & 0xFFFFFFFF;
63051 +- volatile void *hypercall_page = hv_context.hypercall_page;
63052 ++ volatile void *hypercall_page = ktva_ktla(hv_context.hypercall_page);
63053 +
63054 + __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi),
63055 + "=a"(hv_status_lo) : "d" (control_hi),
63056 +diff -urNp linux-3.0.8/drivers/staging/hv/hv_mouse.c linux-3.0.8/drivers/staging/hv/hv_mouse.c
63057 +--- linux-3.0.8/drivers/staging/hv/hv_mouse.c 2011-07-21 22:17:23.000000000 -0400
63058 ++++ linux-3.0.8/drivers/staging/hv/hv_mouse.c 2011-08-23 21:47:56.000000000 -0400
63059 +@@ -879,8 +879,10 @@ static void reportdesc_callback(struct h
63060 + if (hid_dev) {
63061 + DPRINT_INFO(INPUTVSC_DRV, "hid_device created");
63062 +
63063 +- hid_dev->ll_driver->open = mousevsc_hid_open;
63064 +- hid_dev->ll_driver->close = mousevsc_hid_close;
63065 ++ pax_open_kernel();
63066 ++ *(void **)&hid_dev->ll_driver->open = mousevsc_hid_open;
63067 ++ *(void **)&hid_dev->ll_driver->close = mousevsc_hid_close;
63068 ++ pax_close_kernel();
63069 +
63070 + hid_dev->bus = BUS_VIRTUAL;
63071 + hid_dev->vendor = input_device_ctx->device_info.vendor;
63072 +diff -urNp linux-3.0.8/drivers/staging/hv/hyperv_vmbus.h linux-3.0.8/drivers/staging/hv/hyperv_vmbus.h
63073 +--- linux-3.0.8/drivers/staging/hv/hyperv_vmbus.h 2011-07-21 22:17:23.000000000 -0400
63074 ++++ linux-3.0.8/drivers/staging/hv/hyperv_vmbus.h 2011-08-23 21:47:56.000000000 -0400
63075 +@@ -559,7 +559,7 @@ enum vmbus_connect_state {
63076 + struct vmbus_connection {
63077 + enum vmbus_connect_state conn_state;
63078
63079 - DPRINT_ENTER(VMBUS_DRV);
63080 +- atomic_t next_gpadl_handle;
63081 ++ atomic_unchecked_t next_gpadl_handle;
63082 +
63083 + /*
63084 + * Represents channel interrupts. Each bit position represents a
63085 +diff -urNp linux-3.0.8/drivers/staging/hv/rndis_filter.c linux-3.0.8/drivers/staging/hv/rndis_filter.c
63086 +--- linux-3.0.8/drivers/staging/hv/rndis_filter.c 2011-10-24 08:05:21.000000000 -0400
63087 ++++ linux-3.0.8/drivers/staging/hv/rndis_filter.c 2011-08-23 21:47:56.000000000 -0400
63088 +@@ -43,7 +43,7 @@ struct rndis_device {
63089 +
63090 + enum rndis_device_state state;
63091 + u32 link_stat;
63092 +- atomic_t new_req_id;
63093 ++ atomic_unchecked_t new_req_id;
63094 +
63095 + spinlock_t request_lock;
63096 + struct list_head req_list;
63097 +@@ -117,7 +117,7 @@ static struct rndis_request *get_rndis_r
63098 + * template
63099 + */
63100 + set = &rndis_msg->msg.set_req;
63101 +- set->req_id = atomic_inc_return(&dev->new_req_id);
63102 ++ set->req_id = atomic_inc_return_unchecked(&dev->new_req_id);
63103 +
63104 + /* Add to the request list */
63105 + spin_lock_irqsave(&dev->request_lock, flags);
63106 +@@ -637,7 +637,7 @@ static void rndis_filter_halt_device(str
63107 +
63108 + /* Setup the rndis set */
63109 + halt = &request->request_msg.msg.halt_req;
63110 +- halt->req_id = atomic_inc_return(&dev->new_req_id);
63111 ++ halt->req_id = atomic_inc_return_unchecked(&dev->new_req_id);
63112 +
63113 + /* Ignore return since this msg is optional. */
63114 + rndis_filter_send_request(dev, request);
63115 +diff -urNp linux-3.0.8/drivers/staging/hv/vmbus_drv.c linux-3.0.8/drivers/staging/hv/vmbus_drv.c
63116 +--- linux-3.0.8/drivers/staging/hv/vmbus_drv.c 2011-07-21 22:17:23.000000000 -0400
63117 ++++ linux-3.0.8/drivers/staging/hv/vmbus_drv.c 2011-08-23 21:47:56.000000000 -0400
63118 +@@ -668,11 +668,11 @@ int vmbus_child_device_register(struct h
63119 + {
63120 + int ret = 0;
63121
63122 -@@ -541,7 +541,7 @@ static int vmbus_child_device_register(s
63123 +- static atomic_t device_num = ATOMIC_INIT(0);
63124 ++ static atomic_unchecked_t device_num = ATOMIC_INIT(0);
63125
63126 /* Set the device name. Otherwise, device_register() will fail. */
63127 - dev_set_name(&child_device_ctx->device, "vmbus_0_%d",
63128 + dev_set_name(&child_device_obj->device, "vmbus_0_%d",
63129 - atomic_inc_return(&device_num));
63130 + atomic_inc_return_unchecked(&device_num));
63131
63132 /* The new device belongs to this bus */
63133 - child_device_ctx->device.bus = &g_vmbus_drv.bus; /* device->dev.bus; */
63134 -diff -urNp linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h
63135 ---- linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h 2011-11-12 12:44:29.000000000 -0500
63136 -+++ linux-2.6.32.48/drivers/staging/hv/VmbusPrivate.h 2011-11-12 12:46:45.000000000 -0500
63137 -@@ -59,7 +59,7 @@ enum VMBUS_CONNECT_STATE {
63138 - struct VMBUS_CONNECTION {
63139 - enum VMBUS_CONNECT_STATE ConnectState;
63140 -
63141 -- atomic_t NextGpadlHandle;
63142 -+ atomic_unchecked_t NextGpadlHandle;
63143 -
63144 - /*
63145 - * Represents channel interrupts. Each bit position represents a
63146 -diff -urNp linux-2.6.32.48/drivers/staging/iio/ring_generic.h linux-2.6.32.48/drivers/staging/iio/ring_generic.h
63147 ---- linux-2.6.32.48/drivers/staging/iio/ring_generic.h 2009-12-02 22:51:21.000000000 -0500
63148 -+++ linux-2.6.32.48/drivers/staging/iio/ring_generic.h 2011-11-12 12:46:45.000000000 -0500
63149 -@@ -87,7 +87,7 @@ struct iio_ring_access_funcs {
63150 + child_device_obj->device.bus = &hv_bus; /* device->dev.bus; */
63151 +diff -urNp linux-3.0.8/drivers/staging/iio/ring_generic.h linux-3.0.8/drivers/staging/iio/ring_generic.h
63152 +--- linux-3.0.8/drivers/staging/iio/ring_generic.h 2011-07-21 22:17:23.000000000 -0400
63153 ++++ linux-3.0.8/drivers/staging/iio/ring_generic.h 2011-08-23 21:47:56.000000000 -0400
63154 +@@ -62,7 +62,7 @@ struct iio_ring_access_funcs {
63155
63156 int (*is_enabled)(struct iio_ring_buffer *ring);
63157 int (*enable)(struct iio_ring_buffer *ring);
63158 -};
63159 +} __no_const;
63160
63161 - /**
63162 - * struct iio_ring_buffer - general ring buffer structure
63163 -diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet.c linux-2.6.32.48/drivers/staging/octeon/ethernet.c
63164 ---- linux-2.6.32.48/drivers/staging/octeon/ethernet.c 2009-12-02 22:51:21.000000000 -0500
63165 -+++ linux-2.6.32.48/drivers/staging/octeon/ethernet.c 2011-11-12 12:46:45.000000000 -0500
63166 -@@ -294,11 +294,11 @@ static struct net_device_stats *cvm_oct_
63167 + struct iio_ring_setup_ops {
63168 + int (*preenable)(struct iio_dev *);
63169 +diff -urNp linux-3.0.8/drivers/staging/mei/interface.c linux-3.0.8/drivers/staging/mei/interface.c
63170 +--- linux-3.0.8/drivers/staging/mei/interface.c 2011-07-21 22:17:23.000000000 -0400
63171 ++++ linux-3.0.8/drivers/staging/mei/interface.c 2011-11-01 05:23:50.000000000 -0400
63172 +@@ -333,7 +333,7 @@ int mei_send_flow_control(struct mei_dev
63173 + mei_hdr->reserved = 0;
63174 +
63175 + mei_flow_control = (struct hbm_flow_control *) &dev->wr_msg_buf[1];
63176 +- memset(mei_flow_control, 0, sizeof(mei_flow_control));
63177 ++ memset(mei_flow_control, 0, sizeof(*mei_flow_control));
63178 + mei_flow_control->host_addr = cl->host_client_id;
63179 + mei_flow_control->me_addr = cl->me_client_id;
63180 + mei_flow_control->cmd.cmd = MEI_FLOW_CONTROL_CMD;
63181 +@@ -397,7 +397,7 @@ int mei_disconnect(struct mei_device *de
63182 +
63183 + mei_cli_disconnect =
63184 + (struct hbm_client_disconnect_request *) &dev->wr_msg_buf[1];
63185 +- memset(mei_cli_disconnect, 0, sizeof(mei_cli_disconnect));
63186 ++ memset(mei_cli_disconnect, 0, sizeof(*mei_cli_disconnect));
63187 + mei_cli_disconnect->host_addr = cl->host_client_id;
63188 + mei_cli_disconnect->me_addr = cl->me_client_id;
63189 + mei_cli_disconnect->cmd.cmd = CLIENT_DISCONNECT_REQ_CMD;
63190 +diff -urNp linux-3.0.8/drivers/staging/octeon/ethernet.c linux-3.0.8/drivers/staging/octeon/ethernet.c
63191 +--- linux-3.0.8/drivers/staging/octeon/ethernet.c 2011-07-21 22:17:23.000000000 -0400
63192 ++++ linux-3.0.8/drivers/staging/octeon/ethernet.c 2011-08-23 21:47:56.000000000 -0400
63193 +@@ -258,11 +258,11 @@ static struct net_device_stats *cvm_oct_
63194 * since the RX tasklet also increments it.
63195 */
63196 #ifdef CONFIG_64BIT
63197 @@ -38436,10 +35033,10 @@ diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet.c linux-2.6.32.48/dri
63198 #endif
63199 }
63200
63201 -diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c
63202 ---- linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c 2009-12-02 22:51:21.000000000 -0500
63203 -+++ linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c 2011-11-12 12:46:45.000000000 -0500
63204 -@@ -406,11 +406,11 @@ void cvm_oct_tasklet_rx(unsigned long un
63205 +diff -urNp linux-3.0.8/drivers/staging/octeon/ethernet-rx.c linux-3.0.8/drivers/staging/octeon/ethernet-rx.c
63206 +--- linux-3.0.8/drivers/staging/octeon/ethernet-rx.c 2011-07-21 22:17:23.000000000 -0400
63207 ++++ linux-3.0.8/drivers/staging/octeon/ethernet-rx.c 2011-08-23 21:47:56.000000000 -0400
63208 +@@ -417,11 +417,11 @@ static int cvm_oct_napi_poll(struct napi
63209 /* Increment RX stats for virtual ports */
63210 if (work->ipprt >= CVMX_PIP_NUM_INPUT_PORTS) {
63211 #ifdef CONFIG_64BIT
63212 @@ -38455,278 +35052,1043 @@ diff -urNp linux-2.6.32.48/drivers/staging/octeon/ethernet-rx.c linux-2.6.32.48/
63213 #endif
63214 }
63215 netif_receive_skb(skb);
63216 -@@ -424,9 +424,9 @@ void cvm_oct_tasklet_rx(unsigned long un
63217 - dev->name);
63218 - */
63219 +@@ -433,9 +433,9 @@ static int cvm_oct_napi_poll(struct napi
63220 + dev->name);
63221 + */
63222 #ifdef CONFIG_64BIT
63223 - atomic64_add(1, (atomic64_t *)&priv->stats.rx_dropped);
63224 -+ atomic64_add_unchecked(1, (atomic64_t *)&priv->stats.rx_dropped);
63225 ++ atomic64_unchecked_add(1, (atomic64_unchecked_t *)&priv->stats.rx_dropped);
63226 #else
63227 - atomic_add(1, (atomic_t *)&priv->stats.rx_dropped);
63228 -+ atomic_add_unchecked(1, (atomic_t *)&priv->stats.rx_dropped);
63229 ++ atomic_add_unchecked(1, (atomic_unchecked_t *)&priv->stats.rx_dropped);
63230 #endif
63231 dev_kfree_skb_irq(skb);
63232 }
63233 -diff -urNp linux-2.6.32.48/drivers/staging/panel/panel.c linux-2.6.32.48/drivers/staging/panel/panel.c
63234 ---- linux-2.6.32.48/drivers/staging/panel/panel.c 2011-11-12 12:44:29.000000000 -0500
63235 -+++ linux-2.6.32.48/drivers/staging/panel/panel.c 2011-11-12 12:46:45.000000000 -0500
63236 -@@ -1305,7 +1305,7 @@ static int lcd_release(struct inode *ino
63237 +diff -urNp linux-3.0.8/drivers/staging/pohmelfs/inode.c linux-3.0.8/drivers/staging/pohmelfs/inode.c
63238 +--- linux-3.0.8/drivers/staging/pohmelfs/inode.c 2011-07-21 22:17:23.000000000 -0400
63239 ++++ linux-3.0.8/drivers/staging/pohmelfs/inode.c 2011-08-23 21:47:56.000000000 -0400
63240 +@@ -1856,7 +1856,7 @@ static int pohmelfs_fill_super(struct su
63241 + mutex_init(&psb->mcache_lock);
63242 + psb->mcache_root = RB_ROOT;
63243 + psb->mcache_timeout = msecs_to_jiffies(5000);
63244 +- atomic_long_set(&psb->mcache_gen, 0);
63245 ++ atomic_long_set_unchecked(&psb->mcache_gen, 0);
63246 +
63247 + psb->trans_max_pages = 100;
63248 +
63249 +@@ -1871,7 +1871,7 @@ static int pohmelfs_fill_super(struct su
63250 + INIT_LIST_HEAD(&psb->crypto_ready_list);
63251 + INIT_LIST_HEAD(&psb->crypto_active_list);
63252 +
63253 +- atomic_set(&psb->trans_gen, 1);
63254 ++ atomic_set_unchecked(&psb->trans_gen, 1);
63255 + atomic_long_set(&psb->total_inodes, 0);
63256 +
63257 + mutex_init(&psb->state_lock);
63258 +diff -urNp linux-3.0.8/drivers/staging/pohmelfs/mcache.c linux-3.0.8/drivers/staging/pohmelfs/mcache.c
63259 +--- linux-3.0.8/drivers/staging/pohmelfs/mcache.c 2011-07-21 22:17:23.000000000 -0400
63260 ++++ linux-3.0.8/drivers/staging/pohmelfs/mcache.c 2011-08-23 21:47:56.000000000 -0400
63261 +@@ -121,7 +121,7 @@ struct pohmelfs_mcache *pohmelfs_mcache_
63262 + m->data = data;
63263 + m->start = start;
63264 + m->size = size;
63265 +- m->gen = atomic_long_inc_return(&psb->mcache_gen);
63266 ++ m->gen = atomic_long_inc_return_unchecked(&psb->mcache_gen);
63267 +
63268 + mutex_lock(&psb->mcache_lock);
63269 + err = pohmelfs_mcache_insert(psb, m);
63270 +diff -urNp linux-3.0.8/drivers/staging/pohmelfs/netfs.h linux-3.0.8/drivers/staging/pohmelfs/netfs.h
63271 +--- linux-3.0.8/drivers/staging/pohmelfs/netfs.h 2011-07-21 22:17:23.000000000 -0400
63272 ++++ linux-3.0.8/drivers/staging/pohmelfs/netfs.h 2011-08-23 21:47:56.000000000 -0400
63273 +@@ -571,14 +571,14 @@ struct pohmelfs_config;
63274 + struct pohmelfs_sb {
63275 + struct rb_root mcache_root;
63276 + struct mutex mcache_lock;
63277 +- atomic_long_t mcache_gen;
63278 ++ atomic_long_unchecked_t mcache_gen;
63279 + unsigned long mcache_timeout;
63280 +
63281 + unsigned int idx;
63282 +
63283 + unsigned int trans_retries;
63284 +
63285 +- atomic_t trans_gen;
63286 ++ atomic_unchecked_t trans_gen;
63287 +
63288 + unsigned int crypto_attached_size;
63289 + unsigned int crypto_align_size;
63290 +diff -urNp linux-3.0.8/drivers/staging/pohmelfs/trans.c linux-3.0.8/drivers/staging/pohmelfs/trans.c
63291 +--- linux-3.0.8/drivers/staging/pohmelfs/trans.c 2011-07-21 22:17:23.000000000 -0400
63292 ++++ linux-3.0.8/drivers/staging/pohmelfs/trans.c 2011-08-23 21:47:56.000000000 -0400
63293 +@@ -492,7 +492,7 @@ int netfs_trans_finish(struct netfs_tran
63294 + int err;
63295 + struct netfs_cmd *cmd = t->iovec.iov_base;
63296 +
63297 +- t->gen = atomic_inc_return(&psb->trans_gen);
63298 ++ t->gen = atomic_inc_return_unchecked(&psb->trans_gen);
63299 +
63300 + cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) +
63301 + t->attached_size + t->attached_pages * sizeof(struct netfs_cmd);
63302 +diff -urNp linux-3.0.8/drivers/staging/rtl8712/rtl871x_io.h linux-3.0.8/drivers/staging/rtl8712/rtl871x_io.h
63303 +--- linux-3.0.8/drivers/staging/rtl8712/rtl871x_io.h 2011-07-21 22:17:23.000000000 -0400
63304 ++++ linux-3.0.8/drivers/staging/rtl8712/rtl871x_io.h 2011-08-23 21:47:56.000000000 -0400
63305 +@@ -83,7 +83,7 @@ struct _io_ops {
63306 + u8 *pmem);
63307 + u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt,
63308 + u8 *pmem);
63309 +-};
63310 ++} __no_const;
63311 +
63312 + struct io_req {
63313 + struct list_head list;
63314 +diff -urNp linux-3.0.8/drivers/staging/sbe-2t3e3/netdev.c linux-3.0.8/drivers/staging/sbe-2t3e3/netdev.c
63315 +--- linux-3.0.8/drivers/staging/sbe-2t3e3/netdev.c 2011-07-21 22:17:23.000000000 -0400
63316 ++++ linux-3.0.8/drivers/staging/sbe-2t3e3/netdev.c 2011-08-24 18:21:41.000000000 -0400
63317 +@@ -51,7 +51,7 @@ int t3e3_ioctl(struct net_device *dev, s
63318 + t3e3_if_config(sc, cmd_2t3e3, (char *)&param, &resp, &rlen);
63319 +
63320 + if (rlen)
63321 +- if (copy_to_user(data, &resp, rlen))
63322 ++ if (rlen > sizeof resp || copy_to_user(data, &resp, rlen))
63323 + return -EFAULT;
63324 +
63325 return 0;
63326 - }
63327 +diff -urNp linux-3.0.8/drivers/staging/tty/stallion.c linux-3.0.8/drivers/staging/tty/stallion.c
63328 +--- linux-3.0.8/drivers/staging/tty/stallion.c 2011-07-21 22:17:23.000000000 -0400
63329 ++++ linux-3.0.8/drivers/staging/tty/stallion.c 2011-08-23 21:48:14.000000000 -0400
63330 +@@ -2406,6 +2406,8 @@ static int stl_getportstruct(struct stlp
63331 + struct stlport stl_dummyport;
63332 + struct stlport *portp;
63333 +
63334 ++ pax_track_stack();
63335 ++
63336 + if (copy_from_user(&stl_dummyport, arg, sizeof(struct stlport)))
63337 + return -EFAULT;
63338 + portp = stl_getport(stl_dummyport.brdnr, stl_dummyport.panelnr,
63339 +diff -urNp linux-3.0.8/drivers/staging/usbip/usbip_common.h linux-3.0.8/drivers/staging/usbip/usbip_common.h
63340 +--- linux-3.0.8/drivers/staging/usbip/usbip_common.h 2011-07-21 22:17:23.000000000 -0400
63341 ++++ linux-3.0.8/drivers/staging/usbip/usbip_common.h 2011-08-23 21:47:56.000000000 -0400
63342 +@@ -315,7 +315,7 @@ struct usbip_device {
63343 + void (*shutdown)(struct usbip_device *);
63344 + void (*reset)(struct usbip_device *);
63345 + void (*unusable)(struct usbip_device *);
63346 +- } eh_ops;
63347 ++ } __no_const eh_ops;
63348 + };
63349 +
63350 + void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd,
63351 +diff -urNp linux-3.0.8/drivers/staging/usbip/vhci.h linux-3.0.8/drivers/staging/usbip/vhci.h
63352 +--- linux-3.0.8/drivers/staging/usbip/vhci.h 2011-07-21 22:17:23.000000000 -0400
63353 ++++ linux-3.0.8/drivers/staging/usbip/vhci.h 2011-08-23 21:47:56.000000000 -0400
63354 +@@ -94,7 +94,7 @@ struct vhci_hcd {
63355 + unsigned resuming:1;
63356 + unsigned long re_timeout;
63357 +
63358 +- atomic_t seqnum;
63359 ++ atomic_unchecked_t seqnum;
63360 +
63361 + /*
63362 + * NOTE:
63363 +diff -urNp linux-3.0.8/drivers/staging/usbip/vhci_hcd.c linux-3.0.8/drivers/staging/usbip/vhci_hcd.c
63364 +--- linux-3.0.8/drivers/staging/usbip/vhci_hcd.c 2011-10-24 08:05:21.000000000 -0400
63365 ++++ linux-3.0.8/drivers/staging/usbip/vhci_hcd.c 2011-08-23 21:47:56.000000000 -0400
63366 +@@ -511,7 +511,7 @@ static void vhci_tx_urb(struct urb *urb)
63367 + return;
63368 + }
63369 +
63370 +- priv->seqnum = atomic_inc_return(&the_controller->seqnum);
63371 ++ priv->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
63372 + if (priv->seqnum == 0xffff)
63373 + dev_info(&urb->dev->dev, "seqnum max\n");
63374 +
63375 +@@ -765,7 +765,7 @@ static int vhci_urb_dequeue(struct usb_h
63376 + return -ENOMEM;
63377 + }
63378 +
63379 +- unlink->seqnum = atomic_inc_return(&the_controller->seqnum);
63380 ++ unlink->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
63381 + if (unlink->seqnum == 0xffff)
63382 + pr_info("seqnum max\n");
63383 +
63384 +@@ -955,7 +955,7 @@ static int vhci_start(struct usb_hcd *hc
63385 + vdev->rhport = rhport;
63386 + }
63387 +
63388 +- atomic_set(&vhci->seqnum, 0);
63389 ++ atomic_set_unchecked(&vhci->seqnum, 0);
63390 + spin_lock_init(&vhci->lock);
63391 +
63392 + hcd->power_budget = 0; /* no limit */
63393 +diff -urNp linux-3.0.8/drivers/staging/usbip/vhci_rx.c linux-3.0.8/drivers/staging/usbip/vhci_rx.c
63394 +--- linux-3.0.8/drivers/staging/usbip/vhci_rx.c 2011-07-21 22:17:23.000000000 -0400
63395 ++++ linux-3.0.8/drivers/staging/usbip/vhci_rx.c 2011-08-23 21:47:56.000000000 -0400
63396 +@@ -76,7 +76,7 @@ static void vhci_recv_ret_submit(struct
63397 + if (!urb) {
63398 + pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum);
63399 + pr_info("max seqnum %d\n",
63400 +- atomic_read(&the_controller->seqnum));
63401 ++ atomic_read_unchecked(&the_controller->seqnum));
63402 + usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
63403 + return;
63404 + }
63405 +diff -urNp linux-3.0.8/drivers/staging/vt6655/hostap.c linux-3.0.8/drivers/staging/vt6655/hostap.c
63406 +--- linux-3.0.8/drivers/staging/vt6655/hostap.c 2011-07-21 22:17:23.000000000 -0400
63407 ++++ linux-3.0.8/drivers/staging/vt6655/hostap.c 2011-08-23 21:47:56.000000000 -0400
63408 +@@ -79,14 +79,13 @@ static int msglevel
63409 + *
63410 + */
63411 +
63412 ++static net_device_ops_no_const apdev_netdev_ops;
63413 ++
63414 + static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked)
63415 + {
63416 + PSDevice apdev_priv;
63417 + struct net_device *dev = pDevice->dev;
63418 + int ret;
63419 +- const struct net_device_ops apdev_netdev_ops = {
63420 +- .ndo_start_xmit = pDevice->tx_80211,
63421 +- };
63422 +
63423 + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name);
63424 +
63425 +@@ -98,6 +97,8 @@ static int hostap_enable_hostapd(PSDevic
63426 + *apdev_priv = *pDevice;
63427 + memcpy(pDevice->apdev->dev_addr, dev->dev_addr, ETH_ALEN);
63428 +
63429 ++ /* only half broken now */
63430 ++ apdev_netdev_ops.ndo_start_xmit = pDevice->tx_80211;
63431 + pDevice->apdev->netdev_ops = &apdev_netdev_ops;
63432 +
63433 + pDevice->apdev->type = ARPHRD_IEEE80211;
63434 +diff -urNp linux-3.0.8/drivers/staging/vt6656/hostap.c linux-3.0.8/drivers/staging/vt6656/hostap.c
63435 +--- linux-3.0.8/drivers/staging/vt6656/hostap.c 2011-07-21 22:17:23.000000000 -0400
63436 ++++ linux-3.0.8/drivers/staging/vt6656/hostap.c 2011-08-23 21:47:56.000000000 -0400
63437 +@@ -80,14 +80,13 @@ static int msglevel
63438 + *
63439 + */
63440 +
63441 ++static net_device_ops_no_const apdev_netdev_ops;
63442 ++
63443 + static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked)
63444 + {
63445 + PSDevice apdev_priv;
63446 + struct net_device *dev = pDevice->dev;
63447 + int ret;
63448 +- const struct net_device_ops apdev_netdev_ops = {
63449 +- .ndo_start_xmit = pDevice->tx_80211,
63450 +- };
63451 +
63452 + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name);
63453 +
63454 +@@ -99,6 +98,8 @@ static int hostap_enable_hostapd(PSDevic
63455 + *apdev_priv = *pDevice;
63456 + memcpy(pDevice->apdev->dev_addr, dev->dev_addr, ETH_ALEN);
63457 +
63458 ++ /* only half broken now */
63459 ++ apdev_netdev_ops.ndo_start_xmit = pDevice->tx_80211;
63460 + pDevice->apdev->netdev_ops = &apdev_netdev_ops;
63461 +
63462 + pDevice->apdev->type = ARPHRD_IEEE80211;
63463 +diff -urNp linux-3.0.8/drivers/staging/wlan-ng/hfa384x_usb.c linux-3.0.8/drivers/staging/wlan-ng/hfa384x_usb.c
63464 +--- linux-3.0.8/drivers/staging/wlan-ng/hfa384x_usb.c 2011-07-21 22:17:23.000000000 -0400
63465 ++++ linux-3.0.8/drivers/staging/wlan-ng/hfa384x_usb.c 2011-08-23 21:47:56.000000000 -0400
63466 +@@ -204,7 +204,7 @@ static void unlocked_usbctlx_complete(hf
63467 +
63468 + struct usbctlx_completor {
63469 + int (*complete) (struct usbctlx_completor *);
63470 +-};
63471 ++} __no_const;
63472 +
63473 + static int
63474 + hfa384x_usbctlx_complete_sync(hfa384x_t *hw,
63475 +diff -urNp linux-3.0.8/drivers/staging/zcache/tmem.c linux-3.0.8/drivers/staging/zcache/tmem.c
63476 +--- linux-3.0.8/drivers/staging/zcache/tmem.c 2011-07-21 22:17:23.000000000 -0400
63477 ++++ linux-3.0.8/drivers/staging/zcache/tmem.c 2011-08-23 21:47:56.000000000 -0400
63478 +@@ -39,7 +39,7 @@
63479 + * A tmem host implementation must use this function to register callbacks
63480 + * for memory allocation.
63481 + */
63482 +-static struct tmem_hostops tmem_hostops;
63483 ++static tmem_hostops_no_const tmem_hostops;
63484 +
63485 + static void tmem_objnode_tree_init(void);
63486 +
63487 +@@ -53,7 +53,7 @@ void tmem_register_hostops(struct tmem_h
63488 + * A tmem host implementation must use this function to register
63489 + * callbacks for a page-accessible memory (PAM) implementation
63490 + */
63491 +-static struct tmem_pamops tmem_pamops;
63492 ++static tmem_pamops_no_const tmem_pamops;
63493 +
63494 + void tmem_register_pamops(struct tmem_pamops *m)
63495 + {
63496 +diff -urNp linux-3.0.8/drivers/staging/zcache/tmem.h linux-3.0.8/drivers/staging/zcache/tmem.h
63497 +--- linux-3.0.8/drivers/staging/zcache/tmem.h 2011-07-21 22:17:23.000000000 -0400
63498 ++++ linux-3.0.8/drivers/staging/zcache/tmem.h 2011-08-23 21:47:56.000000000 -0400
63499 +@@ -171,6 +171,7 @@ struct tmem_pamops {
63500 + int (*get_data)(struct page *, void *, struct tmem_pool *);
63501 + void (*free)(void *, struct tmem_pool *);
63502 + };
63503 ++typedef struct tmem_pamops __no_const tmem_pamops_no_const;
63504 + extern void tmem_register_pamops(struct tmem_pamops *m);
63505 +
63506 + /* memory allocation methods provided by the host implementation */
63507 +@@ -180,6 +181,7 @@ struct tmem_hostops {
63508 + struct tmem_objnode *(*objnode_alloc)(struct tmem_pool *);
63509 + void (*objnode_free)(struct tmem_objnode *, struct tmem_pool *);
63510 + };
63511 ++typedef struct tmem_hostops __no_const tmem_hostops_no_const;
63512 + extern void tmem_register_hostops(struct tmem_hostops *m);
63513 +
63514 + /* core tmem accessor functions */
63515 +diff -urNp linux-3.0.8/drivers/target/target_core_alua.c linux-3.0.8/drivers/target/target_core_alua.c
63516 +--- linux-3.0.8/drivers/target/target_core_alua.c 2011-07-21 22:17:23.000000000 -0400
63517 ++++ linux-3.0.8/drivers/target/target_core_alua.c 2011-08-23 21:48:14.000000000 -0400
63518 +@@ -675,6 +675,8 @@ static int core_alua_update_tpg_primary_
63519 + char path[ALUA_METADATA_PATH_LEN];
63520 + int len;
63521 +
63522 ++ pax_track_stack();
63523 ++
63524 + memset(path, 0, ALUA_METADATA_PATH_LEN);
63525 +
63526 + len = snprintf(md_buf, tg_pt_gp->tg_pt_gp_md_buf_len,
63527 +@@ -938,6 +940,8 @@ static int core_alua_update_tpg_secondar
63528 + char path[ALUA_METADATA_PATH_LEN], wwn[ALUA_SECONDARY_METADATA_WWN_LEN];
63529 + int len;
63530 +
63531 ++ pax_track_stack();
63532 ++
63533 + memset(path, 0, ALUA_METADATA_PATH_LEN);
63534 + memset(wwn, 0, ALUA_SECONDARY_METADATA_WWN_LEN);
63535 +
63536 +diff -urNp linux-3.0.8/drivers/target/target_core_cdb.c linux-3.0.8/drivers/target/target_core_cdb.c
63537 +--- linux-3.0.8/drivers/target/target_core_cdb.c 2011-07-21 22:17:23.000000000 -0400
63538 ++++ linux-3.0.8/drivers/target/target_core_cdb.c 2011-08-23 21:48:14.000000000 -0400
63539 +@@ -838,6 +838,8 @@ target_emulate_modesense(struct se_cmd *
63540 + int length = 0;
63541 + unsigned char buf[SE_MODE_PAGE_BUF];
63542 +
63543 ++ pax_track_stack();
63544 ++
63545 + memset(buf, 0, SE_MODE_PAGE_BUF);
63546 +
63547 + switch (cdb[2] & 0x3f) {
63548 +diff -urNp linux-3.0.8/drivers/target/target_core_configfs.c linux-3.0.8/drivers/target/target_core_configfs.c
63549 +--- linux-3.0.8/drivers/target/target_core_configfs.c 2011-07-21 22:17:23.000000000 -0400
63550 ++++ linux-3.0.8/drivers/target/target_core_configfs.c 2011-08-23 21:48:14.000000000 -0400
63551 +@@ -1276,6 +1276,8 @@ static ssize_t target_core_dev_pr_show_a
63552 + ssize_t len = 0;
63553 + int reg_count = 0, prf_isid;
63554 +
63555 ++ pax_track_stack();
63556 ++
63557 + if (!(su_dev->se_dev_ptr))
63558 + return -ENODEV;
63559 +
63560 +diff -urNp linux-3.0.8/drivers/target/target_core_pr.c linux-3.0.8/drivers/target/target_core_pr.c
63561 +--- linux-3.0.8/drivers/target/target_core_pr.c 2011-07-21 22:17:23.000000000 -0400
63562 ++++ linux-3.0.8/drivers/target/target_core_pr.c 2011-08-23 21:48:14.000000000 -0400
63563 +@@ -918,6 +918,8 @@ static int __core_scsi3_check_aptpl_regi
63564 + unsigned char t_port[PR_APTPL_MAX_TPORT_LEN];
63565 + u16 tpgt;
63566 +
63567 ++ pax_track_stack();
63568 ++
63569 + memset(i_port, 0, PR_APTPL_MAX_IPORT_LEN);
63570 + memset(t_port, 0, PR_APTPL_MAX_TPORT_LEN);
63571 + /*
63572 +@@ -1861,6 +1863,8 @@ static int __core_scsi3_update_aptpl_buf
63573 + ssize_t len = 0;
63574 + int reg_count = 0;
63575 +
63576 ++ pax_track_stack();
63577 ++
63578 + memset(buf, 0, pr_aptpl_buf_len);
63579 + /*
63580 + * Called to clear metadata once APTPL has been deactivated.
63581 +@@ -1983,6 +1987,8 @@ static int __core_scsi3_write_aptpl_to_f
63582 + char path[512];
63583 + int ret;
63584 +
63585 ++ pax_track_stack();
63586 ++
63587 + memset(iov, 0, sizeof(struct iovec));
63588 + memset(path, 0, 512);
63589 +
63590 +diff -urNp linux-3.0.8/drivers/target/target_core_tmr.c linux-3.0.8/drivers/target/target_core_tmr.c
63591 +--- linux-3.0.8/drivers/target/target_core_tmr.c 2011-07-21 22:17:23.000000000 -0400
63592 ++++ linux-3.0.8/drivers/target/target_core_tmr.c 2011-08-23 21:47:56.000000000 -0400
63593 +@@ -269,7 +269,7 @@ int core_tmr_lun_reset(
63594 + CMD_TFO(cmd)->get_task_tag(cmd), cmd->pr_res_key,
63595 + T_TASK(cmd)->t_task_cdbs,
63596 + atomic_read(&T_TASK(cmd)->t_task_cdbs_left),
63597 +- atomic_read(&T_TASK(cmd)->t_task_cdbs_sent),
63598 ++ atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent),
63599 + atomic_read(&T_TASK(cmd)->t_transport_active),
63600 + atomic_read(&T_TASK(cmd)->t_transport_stop),
63601 + atomic_read(&T_TASK(cmd)->t_transport_sent));
63602 +@@ -311,7 +311,7 @@ int core_tmr_lun_reset(
63603 + DEBUG_LR("LUN_RESET: got t_transport_active = 1 for"
63604 + " task: %p, t_fe_count: %d dev: %p\n", task,
63605 + fe_count, dev);
63606 +- atomic_set(&T_TASK(cmd)->t_transport_aborted, 1);
63607 ++ atomic_set_unchecked(&T_TASK(cmd)->t_transport_aborted, 1);
63608 + spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock,
63609 + flags);
63610 + core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
63611 +@@ -321,7 +321,7 @@ int core_tmr_lun_reset(
63612 + }
63613 + DEBUG_LR("LUN_RESET: Got t_transport_active = 0 for task: %p,"
63614 + " t_fe_count: %d dev: %p\n", task, fe_count, dev);
63615 +- atomic_set(&T_TASK(cmd)->t_transport_aborted, 1);
63616 ++ atomic_set_unchecked(&T_TASK(cmd)->t_transport_aborted, 1);
63617 + spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags);
63618 + core_tmr_handle_tas_abort(tmr_nacl, cmd, tas, fe_count);
63619 +
63620 +diff -urNp linux-3.0.8/drivers/target/target_core_transport.c linux-3.0.8/drivers/target/target_core_transport.c
63621 +--- linux-3.0.8/drivers/target/target_core_transport.c 2011-07-21 22:17:23.000000000 -0400
63622 ++++ linux-3.0.8/drivers/target/target_core_transport.c 2011-08-23 21:47:56.000000000 -0400
63623 +@@ -1681,7 +1681,7 @@ struct se_device *transport_add_device_t
63624 +
63625 + dev->queue_depth = dev_limits->queue_depth;
63626 + atomic_set(&dev->depth_left, dev->queue_depth);
63627 +- atomic_set(&dev->dev_ordered_id, 0);
63628 ++ atomic_set_unchecked(&dev->dev_ordered_id, 0);
63629 +
63630 + se_dev_set_default_attribs(dev, dev_limits);
63631 +
63632 +@@ -1882,7 +1882,7 @@ static int transport_check_alloc_task_at
63633 + * Used to determine when ORDERED commands should go from
63634 + * Dormant to Active status.
63635 + */
63636 +- cmd->se_ordered_id = atomic_inc_return(&SE_DEV(cmd)->dev_ordered_id);
63637 ++ cmd->se_ordered_id = atomic_inc_return_unchecked(&SE_DEV(cmd)->dev_ordered_id);
63638 + smp_mb__after_atomic_inc();
63639 + DEBUG_STA("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
63640 + cmd->se_ordered_id, cmd->sam_task_attr,
63641 +@@ -2169,7 +2169,7 @@ static void transport_generic_request_fa
63642 + " t_transport_active: %d t_transport_stop: %d"
63643 + " t_transport_sent: %d\n", T_TASK(cmd)->t_task_cdbs,
63644 + atomic_read(&T_TASK(cmd)->t_task_cdbs_left),
63645 +- atomic_read(&T_TASK(cmd)->t_task_cdbs_sent),
63646 ++ atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent),
63647 + atomic_read(&T_TASK(cmd)->t_task_cdbs_ex_left),
63648 + atomic_read(&T_TASK(cmd)->t_transport_active),
63649 + atomic_read(&T_TASK(cmd)->t_transport_stop),
63650 +@@ -2673,9 +2673,9 @@ check_depth:
63651 + spin_lock_irqsave(&T_TASK(cmd)->t_state_lock, flags);
63652 + atomic_set(&task->task_active, 1);
63653 + atomic_set(&task->task_sent, 1);
63654 +- atomic_inc(&T_TASK(cmd)->t_task_cdbs_sent);
63655 ++ atomic_inc_unchecked(&T_TASK(cmd)->t_task_cdbs_sent);
63656 +
63657 +- if (atomic_read(&T_TASK(cmd)->t_task_cdbs_sent) ==
63658 ++ if (atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent) ==
63659 + T_TASK(cmd)->t_task_cdbs)
63660 + atomic_set(&cmd->transport_sent, 1);
63661 +
63662 +@@ -5568,7 +5568,7 @@ static void transport_generic_wait_for_t
63663 + atomic_set(&T_TASK(cmd)->transport_lun_stop, 0);
63664 + }
63665 + if (!atomic_read(&T_TASK(cmd)->t_transport_active) ||
63666 +- atomic_read(&T_TASK(cmd)->t_transport_aborted))
63667 ++ atomic_read_unchecked(&T_TASK(cmd)->t_transport_aborted))
63668 + goto remove;
63669 +
63670 + atomic_set(&T_TASK(cmd)->t_transport_stop, 1);
63671 +@@ -5797,7 +5797,7 @@ int transport_check_aborted_status(struc
63672 + {
63673 + int ret = 0;
63674 +
63675 +- if (atomic_read(&T_TASK(cmd)->t_transport_aborted) != 0) {
63676 ++ if (atomic_read_unchecked(&T_TASK(cmd)->t_transport_aborted) != 0) {
63677 + if (!(send_status) ||
63678 + (cmd->se_cmd_flags & SCF_SENT_DELAYED_TAS))
63679 + return 1;
63680 +@@ -5825,7 +5825,7 @@ void transport_send_task_abort(struct se
63681 + */
63682 + if (cmd->data_direction == DMA_TO_DEVICE) {
63683 + if (CMD_TFO(cmd)->write_pending_status(cmd) != 0) {
63684 +- atomic_inc(&T_TASK(cmd)->t_transport_aborted);
63685 ++ atomic_inc_unchecked(&T_TASK(cmd)->t_transport_aborted);
63686 + smp_mb__after_atomic_inc();
63687 + cmd->scsi_status = SAM_STAT_TASK_ABORTED;
63688 + transport_new_cmd_failure(cmd);
63689 +@@ -5949,7 +5949,7 @@ static void transport_processing_shutdow
63690 + CMD_TFO(cmd)->get_task_tag(cmd),
63691 + T_TASK(cmd)->t_task_cdbs,
63692 + atomic_read(&T_TASK(cmd)->t_task_cdbs_left),
63693 +- atomic_read(&T_TASK(cmd)->t_task_cdbs_sent),
63694 ++ atomic_read_unchecked(&T_TASK(cmd)->t_task_cdbs_sent),
63695 + atomic_read(&T_TASK(cmd)->t_transport_active),
63696 + atomic_read(&T_TASK(cmd)->t_transport_stop),
63697 + atomic_read(&T_TASK(cmd)->t_transport_sent));
63698 +diff -urNp linux-3.0.8/drivers/telephony/ixj.c linux-3.0.8/drivers/telephony/ixj.c
63699 +--- linux-3.0.8/drivers/telephony/ixj.c 2011-07-21 22:17:23.000000000 -0400
63700 ++++ linux-3.0.8/drivers/telephony/ixj.c 2011-08-23 21:48:14.000000000 -0400
63701 +@@ -4976,6 +4976,8 @@ static int ixj_daa_cid_read(IXJ *j)
63702 + bool mContinue;
63703 + char *pIn, *pOut;
63704 +
63705 ++ pax_track_stack();
63706 ++
63707 + if (!SCI_Prepare(j))
63708 + return 0;
63709 +
63710 +diff -urNp linux-3.0.8/drivers/tty/hvc/hvcs.c linux-3.0.8/drivers/tty/hvc/hvcs.c
63711 +--- linux-3.0.8/drivers/tty/hvc/hvcs.c 2011-07-21 22:17:23.000000000 -0400
63712 ++++ linux-3.0.8/drivers/tty/hvc/hvcs.c 2011-08-23 21:47:56.000000000 -0400
63713 +@@ -83,6 +83,7 @@
63714 + #include <asm/hvcserver.h>
63715 + #include <asm/uaccess.h>
63716 + #include <asm/vio.h>
63717 ++#include <asm/local.h>
63718 +
63719 + /*
63720 + * 1.3.0 -> 1.3.1 In hvcs_open memset(..,0x00,..) instead of memset(..,0x3F,00).
63721 +@@ -270,7 +271,7 @@ struct hvcs_struct {
63722 + unsigned int index;
63723 +
63724 + struct tty_struct *tty;
63725 +- int open_count;
63726 ++ local_t open_count;
63727 +
63728 + /*
63729 + * Used to tell the driver kernel_thread what operations need to take
63730 +@@ -422,7 +423,7 @@ static ssize_t hvcs_vterm_state_store(st
63731 +
63732 + spin_lock_irqsave(&hvcsd->lock, flags);
63733 +
63734 +- if (hvcsd->open_count > 0) {
63735 ++ if (local_read(&hvcsd->open_count) > 0) {
63736 + spin_unlock_irqrestore(&hvcsd->lock, flags);
63737 + printk(KERN_INFO "HVCS: vterm state unchanged. "
63738 + "The hvcs device node is still in use.\n");
63739 +@@ -1145,7 +1146,7 @@ static int hvcs_open(struct tty_struct *
63740 + if ((retval = hvcs_partner_connect(hvcsd)))
63741 + goto error_release;
63742 +
63743 +- hvcsd->open_count = 1;
63744 ++ local_set(&hvcsd->open_count, 1);
63745 + hvcsd->tty = tty;
63746 + tty->driver_data = hvcsd;
63747 +
63748 +@@ -1179,7 +1180,7 @@ fast_open:
63749 +
63750 + spin_lock_irqsave(&hvcsd->lock, flags);
63751 + kref_get(&hvcsd->kref);
63752 +- hvcsd->open_count++;
63753 ++ local_inc(&hvcsd->open_count);
63754 + hvcsd->todo_mask |= HVCS_SCHED_READ;
63755 + spin_unlock_irqrestore(&hvcsd->lock, flags);
63756 +
63757 +@@ -1223,7 +1224,7 @@ static void hvcs_close(struct tty_struct
63758 + hvcsd = tty->driver_data;
63759 +
63760 + spin_lock_irqsave(&hvcsd->lock, flags);
63761 +- if (--hvcsd->open_count == 0) {
63762 ++ if (local_dec_and_test(&hvcsd->open_count)) {
63763 +
63764 + vio_disable_interrupts(hvcsd->vdev);
63765 +
63766 +@@ -1249,10 +1250,10 @@ static void hvcs_close(struct tty_struct
63767 + free_irq(irq, hvcsd);
63768 + kref_put(&hvcsd->kref, destroy_hvcs_struct);
63769 + return;
63770 +- } else if (hvcsd->open_count < 0) {
63771 ++ } else if (local_read(&hvcsd->open_count) < 0) {
63772 + printk(KERN_ERR "HVCS: vty-server@%X open_count: %d"
63773 + " is missmanaged.\n",
63774 +- hvcsd->vdev->unit_address, hvcsd->open_count);
63775 ++ hvcsd->vdev->unit_address, local_read(&hvcsd->open_count));
63776 + }
63777 +
63778 + spin_unlock_irqrestore(&hvcsd->lock, flags);
63779 +@@ -1268,7 +1269,7 @@ static void hvcs_hangup(struct tty_struc
63780 +
63781 + spin_lock_irqsave(&hvcsd->lock, flags);
63782 + /* Preserve this so that we know how many kref refs to put */
63783 +- temp_open_count = hvcsd->open_count;
63784 ++ temp_open_count = local_read(&hvcsd->open_count);
63785 +
63786 + /*
63787 + * Don't kref put inside the spinlock because the destruction
63788 +@@ -1283,7 +1284,7 @@ static void hvcs_hangup(struct tty_struc
63789 + hvcsd->tty->driver_data = NULL;
63790 + hvcsd->tty = NULL;
63791 +
63792 +- hvcsd->open_count = 0;
63793 ++ local_set(&hvcsd->open_count, 0);
63794 +
63795 + /* This will drop any buffered data on the floor which is OK in a hangup
63796 + * scenario. */
63797 +@@ -1354,7 +1355,7 @@ static int hvcs_write(struct tty_struct
63798 + * the middle of a write operation? This is a crummy place to do this
63799 + * but we want to keep it all in the spinlock.
63800 + */
63801 +- if (hvcsd->open_count <= 0) {
63802 ++ if (local_read(&hvcsd->open_count) <= 0) {
63803 + spin_unlock_irqrestore(&hvcsd->lock, flags);
63804 + return -ENODEV;
63805 + }
63806 +@@ -1428,7 +1429,7 @@ static int hvcs_write_room(struct tty_st
63807 + {
63808 + struct hvcs_struct *hvcsd = tty->driver_data;
63809 +
63810 +- if (!hvcsd || hvcsd->open_count <= 0)
63811 ++ if (!hvcsd || local_read(&hvcsd->open_count) <= 0)
63812 + return 0;
63813 +
63814 + return HVCS_BUFF_LEN - hvcsd->chars_in_buffer;
63815 +diff -urNp linux-3.0.8/drivers/tty/ipwireless/tty.c linux-3.0.8/drivers/tty/ipwireless/tty.c
63816 +--- linux-3.0.8/drivers/tty/ipwireless/tty.c 2011-07-21 22:17:23.000000000 -0400
63817 ++++ linux-3.0.8/drivers/tty/ipwireless/tty.c 2011-08-23 21:47:56.000000000 -0400
63818 +@@ -29,6 +29,7 @@
63819 + #include <linux/tty_driver.h>
63820 + #include <linux/tty_flip.h>
63821 + #include <linux/uaccess.h>
63822 ++#include <asm/local.h>
63823 +
63824 + #include "tty.h"
63825 + #include "network.h"
63826 +@@ -51,7 +52,7 @@ struct ipw_tty {
63827 + int tty_type;
63828 + struct ipw_network *network;
63829 + struct tty_struct *linux_tty;
63830 +- int open_count;
63831 ++ local_t open_count;
63832 + unsigned int control_lines;
63833 + struct mutex ipw_tty_mutex;
63834 + int tx_bytes_queued;
63835 +@@ -127,10 +128,10 @@ static int ipw_open(struct tty_struct *l
63836 + mutex_unlock(&tty->ipw_tty_mutex);
63837 + return -ENODEV;
63838 + }
63839 +- if (tty->open_count == 0)
63840 ++ if (local_read(&tty->open_count) == 0)
63841 + tty->tx_bytes_queued = 0;
63842 +
63843 +- tty->open_count++;
63844 ++ local_inc(&tty->open_count);
63845 +
63846 + tty->linux_tty = linux_tty;
63847 + linux_tty->driver_data = tty;
63848 +@@ -146,9 +147,7 @@ static int ipw_open(struct tty_struct *l
63849 +
63850 + static void do_ipw_close(struct ipw_tty *tty)
63851 + {
63852 +- tty->open_count--;
63853 +-
63854 +- if (tty->open_count == 0) {
63855 ++ if (local_dec_return(&tty->open_count) == 0) {
63856 + struct tty_struct *linux_tty = tty->linux_tty;
63857 +
63858 + if (linux_tty != NULL) {
63859 +@@ -169,7 +168,7 @@ static void ipw_hangup(struct tty_struct
63860 + return;
63861 +
63862 + mutex_lock(&tty->ipw_tty_mutex);
63863 +- if (tty->open_count == 0) {
63864 ++ if (local_read(&tty->open_count) == 0) {
63865 + mutex_unlock(&tty->ipw_tty_mutex);
63866 + return;
63867 + }
63868 +@@ -198,7 +197,7 @@ void ipwireless_tty_received(struct ipw_
63869 + return;
63870 + }
63871 +
63872 +- if (!tty->open_count) {
63873 ++ if (!local_read(&tty->open_count)) {
63874 + mutex_unlock(&tty->ipw_tty_mutex);
63875 + return;
63876 + }
63877 +@@ -240,7 +239,7 @@ static int ipw_write(struct tty_struct *
63878 + return -ENODEV;
63879 +
63880 + mutex_lock(&tty->ipw_tty_mutex);
63881 +- if (!tty->open_count) {
63882 ++ if (!local_read(&tty->open_count)) {
63883 + mutex_unlock(&tty->ipw_tty_mutex);
63884 + return -EINVAL;
63885 + }
63886 +@@ -280,7 +279,7 @@ static int ipw_write_room(struct tty_str
63887 + if (!tty)
63888 + return -ENODEV;
63889
63890 --static struct file_operations lcd_fops = {
63891 -+static const struct file_operations lcd_fops = {
63892 - .write = lcd_write,
63893 - .open = lcd_open,
63894 - .release = lcd_release,
63895 -@@ -1565,7 +1565,7 @@ static int keypad_release(struct inode *
63896 - return 0;
63897 - }
63898 +- if (!tty->open_count)
63899 ++ if (!local_read(&tty->open_count))
63900 + return -EINVAL;
63901
63902 --static struct file_operations keypad_fops = {
63903 -+static const struct file_operations keypad_fops = {
63904 - .read = keypad_read, /* read */
63905 - .open = keypad_open, /* open */
63906 - .release = keypad_release, /* close */
63907 -diff -urNp linux-2.6.32.48/drivers/staging/phison/phison.c linux-2.6.32.48/drivers/staging/phison/phison.c
63908 ---- linux-2.6.32.48/drivers/staging/phison/phison.c 2009-12-02 22:51:21.000000000 -0500
63909 -+++ linux-2.6.32.48/drivers/staging/phison/phison.c 2011-11-12 12:46:45.000000000 -0500
63910 -@@ -43,7 +43,7 @@ static struct scsi_host_template phison_
63911 - ATA_BMDMA_SHT(DRV_NAME),
63912 - };
63913 + room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued;
63914 +@@ -322,7 +321,7 @@ static int ipw_chars_in_buffer(struct tt
63915 + if (!tty)
63916 + return 0;
63917
63918 --static struct ata_port_operations phison_ops = {
63919 -+static const struct ata_port_operations phison_ops = {
63920 - .inherits = &ata_bmdma_port_ops,
63921 - .prereset = phison_pre_reset,
63922 - };
63923 -diff -urNp linux-2.6.32.48/drivers/staging/poch/poch.c linux-2.6.32.48/drivers/staging/poch/poch.c
63924 ---- linux-2.6.32.48/drivers/staging/poch/poch.c 2009-12-02 22:51:21.000000000 -0500
63925 -+++ linux-2.6.32.48/drivers/staging/poch/poch.c 2011-11-12 12:46:45.000000000 -0500
63926 -@@ -1057,7 +1057,7 @@ static int poch_ioctl(struct inode *inod
63927 - return 0;
63928 - }
63929 +- if (!tty->open_count)
63930 ++ if (!local_read(&tty->open_count))
63931 + return 0;
63932
63933 --static struct file_operations poch_fops = {
63934 -+static const struct file_operations poch_fops = {
63935 - .owner = THIS_MODULE,
63936 - .open = poch_open,
63937 - .release = poch_release,
63938 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/inode.c linux-2.6.32.48/drivers/staging/pohmelfs/inode.c
63939 ---- linux-2.6.32.48/drivers/staging/pohmelfs/inode.c 2009-12-02 22:51:21.000000000 -0500
63940 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/inode.c 2011-11-12 12:46:45.000000000 -0500
63941 -@@ -1850,7 +1850,7 @@ static int pohmelfs_fill_super(struct su
63942 - mutex_init(&psb->mcache_lock);
63943 - psb->mcache_root = RB_ROOT;
63944 - psb->mcache_timeout = msecs_to_jiffies(5000);
63945 -- atomic_long_set(&psb->mcache_gen, 0);
63946 -+ atomic_long_set_unchecked(&psb->mcache_gen, 0);
63947 + return tty->tx_bytes_queued;
63948 +@@ -403,7 +402,7 @@ static int ipw_tiocmget(struct tty_struc
63949 + if (!tty)
63950 + return -ENODEV;
63951
63952 - psb->trans_max_pages = 100;
63953 +- if (!tty->open_count)
63954 ++ if (!local_read(&tty->open_count))
63955 + return -EINVAL;
63956
63957 -@@ -1865,7 +1865,7 @@ static int pohmelfs_fill_super(struct su
63958 - INIT_LIST_HEAD(&psb->crypto_ready_list);
63959 - INIT_LIST_HEAD(&psb->crypto_active_list);
63960 + return get_control_lines(tty);
63961 +@@ -419,7 +418,7 @@ ipw_tiocmset(struct tty_struct *linux_tt
63962 + if (!tty)
63963 + return -ENODEV;
63964
63965 -- atomic_set(&psb->trans_gen, 1);
63966 -+ atomic_set_unchecked(&psb->trans_gen, 1);
63967 - atomic_long_set(&psb->total_inodes, 0);
63968 +- if (!tty->open_count)
63969 ++ if (!local_read(&tty->open_count))
63970 + return -EINVAL;
63971
63972 - mutex_init(&psb->state_lock);
63973 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c
63974 ---- linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c 2009-12-02 22:51:21.000000000 -0500
63975 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/mcache.c 2011-11-12 12:46:45.000000000 -0500
63976 -@@ -121,7 +121,7 @@ struct pohmelfs_mcache *pohmelfs_mcache_
63977 - m->data = data;
63978 - m->start = start;
63979 - m->size = size;
63980 -- m->gen = atomic_long_inc_return(&psb->mcache_gen);
63981 -+ m->gen = atomic_long_inc_return_unchecked(&psb->mcache_gen);
63982 + return set_control_lines(tty, set, clear);
63983 +@@ -433,7 +432,7 @@ static int ipw_ioctl(struct tty_struct *
63984 + if (!tty)
63985 + return -ENODEV;
63986
63987 - mutex_lock(&psb->mcache_lock);
63988 - err = pohmelfs_mcache_insert(psb, m);
63989 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h
63990 ---- linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h 2009-12-02 22:51:21.000000000 -0500
63991 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/netfs.h 2011-11-12 12:46:45.000000000 -0500
63992 -@@ -570,14 +570,14 @@ struct pohmelfs_config;
63993 - struct pohmelfs_sb {
63994 - struct rb_root mcache_root;
63995 - struct mutex mcache_lock;
63996 -- atomic_long_t mcache_gen;
63997 -+ atomic_long_unchecked_t mcache_gen;
63998 - unsigned long mcache_timeout;
63999 +- if (!tty->open_count)
64000 ++ if (!local_read(&tty->open_count))
64001 + return -EINVAL;
64002
64003 - unsigned int idx;
64004 + /* FIXME: Exactly how is the tty object locked here .. */
64005 +@@ -582,7 +581,7 @@ void ipwireless_tty_free(struct ipw_tty
64006 + against a parallel ioctl etc */
64007 + mutex_lock(&ttyj->ipw_tty_mutex);
64008 + }
64009 +- while (ttyj->open_count)
64010 ++ while (local_read(&ttyj->open_count))
64011 + do_ipw_close(ttyj);
64012 + ipwireless_disassociate_network_ttys(network,
64013 + ttyj->channel_idx);
64014 +diff -urNp linux-3.0.8/drivers/tty/n_gsm.c linux-3.0.8/drivers/tty/n_gsm.c
64015 +--- linux-3.0.8/drivers/tty/n_gsm.c 2011-10-24 08:05:21.000000000 -0400
64016 ++++ linux-3.0.8/drivers/tty/n_gsm.c 2011-08-23 21:47:56.000000000 -0400
64017 +@@ -1589,7 +1589,7 @@ static struct gsm_dlci *gsm_dlci_alloc(s
64018 + return NULL;
64019 + spin_lock_init(&dlci->lock);
64020 + dlci->fifo = &dlci->_fifo;
64021 +- if (kfifo_alloc(&dlci->_fifo, 4096, GFP_KERNEL) < 0) {
64022 ++ if (kfifo_alloc(&dlci->_fifo, 4096, GFP_KERNEL)) {
64023 + kfree(dlci);
64024 + return NULL;
64025 + }
64026 +diff -urNp linux-3.0.8/drivers/tty/n_tty.c linux-3.0.8/drivers/tty/n_tty.c
64027 +--- linux-3.0.8/drivers/tty/n_tty.c 2011-07-21 22:17:23.000000000 -0400
64028 ++++ linux-3.0.8/drivers/tty/n_tty.c 2011-08-23 21:47:56.000000000 -0400
64029 +@@ -2123,6 +2123,7 @@ void n_tty_inherit_ops(struct tty_ldisc_
64030 + {
64031 + *ops = tty_ldisc_N_TTY;
64032 + ops->owner = NULL;
64033 +- ops->refcount = ops->flags = 0;
64034 ++ atomic_set(&ops->refcount, 0);
64035 ++ ops->flags = 0;
64036 + }
64037 + EXPORT_SYMBOL_GPL(n_tty_inherit_ops);
64038 +diff -urNp linux-3.0.8/drivers/tty/pty.c linux-3.0.8/drivers/tty/pty.c
64039 +--- linux-3.0.8/drivers/tty/pty.c 2011-10-24 08:05:30.000000000 -0400
64040 ++++ linux-3.0.8/drivers/tty/pty.c 2011-10-16 21:55:28.000000000 -0400
64041 +@@ -767,8 +767,10 @@ static void __init unix98_pty_init(void)
64042 + register_sysctl_table(pty_root_table);
64043
64044 - unsigned int trans_retries;
64045 + /* Now create the /dev/ptmx special device */
64046 ++ pax_open_kernel();
64047 + tty_default_fops(&ptmx_fops);
64048 +- ptmx_fops.open = ptmx_open;
64049 ++ *(void **)&ptmx_fops.open = ptmx_open;
64050 ++ pax_close_kernel();
64051
64052 -- atomic_t trans_gen;
64053 -+ atomic_unchecked_t trans_gen;
64054 + cdev_init(&ptmx_cdev, &ptmx_fops);
64055 + if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
64056 +diff -urNp linux-3.0.8/drivers/tty/rocket.c linux-3.0.8/drivers/tty/rocket.c
64057 +--- linux-3.0.8/drivers/tty/rocket.c 2011-07-21 22:17:23.000000000 -0400
64058 ++++ linux-3.0.8/drivers/tty/rocket.c 2011-08-23 21:48:14.000000000 -0400
64059 +@@ -1277,6 +1277,8 @@ static int get_ports(struct r_port *info
64060 + struct rocket_ports tmp;
64061 + int board;
64062
64063 - unsigned int crypto_attached_size;
64064 - unsigned int crypto_align_size;
64065 -diff -urNp linux-2.6.32.48/drivers/staging/pohmelfs/trans.c linux-2.6.32.48/drivers/staging/pohmelfs/trans.c
64066 ---- linux-2.6.32.48/drivers/staging/pohmelfs/trans.c 2009-12-02 22:51:21.000000000 -0500
64067 -+++ linux-2.6.32.48/drivers/staging/pohmelfs/trans.c 2011-11-12 12:46:45.000000000 -0500
64068 -@@ -492,7 +492,7 @@ int netfs_trans_finish(struct netfs_tran
64069 ++ pax_track_stack();
64070 ++
64071 + if (!retports)
64072 + return -EFAULT;
64073 + memset(&tmp, 0, sizeof (tmp));
64074 +diff -urNp linux-3.0.8/drivers/tty/serial/kgdboc.c linux-3.0.8/drivers/tty/serial/kgdboc.c
64075 +--- linux-3.0.8/drivers/tty/serial/kgdboc.c 2011-07-21 22:17:23.000000000 -0400
64076 ++++ linux-3.0.8/drivers/tty/serial/kgdboc.c 2011-08-23 21:47:56.000000000 -0400
64077 +@@ -23,8 +23,9 @@
64078 + #define MAX_CONFIG_LEN 40
64079 +
64080 + static struct kgdb_io kgdboc_io_ops;
64081 ++static struct kgdb_io kgdboc_io_ops_console;
64082 +
64083 +-/* -1 = init not run yet, 0 = unconfigured, 1 = configured. */
64084 ++/* -1 = init not run yet, 0 = unconfigured, 1/2 = configured. */
64085 + static int configured = -1;
64086 +
64087 + static char config[MAX_CONFIG_LEN];
64088 +@@ -147,6 +148,8 @@ static void cleanup_kgdboc(void)
64089 + kgdboc_unregister_kbd();
64090 + if (configured == 1)
64091 + kgdb_unregister_io_module(&kgdboc_io_ops);
64092 ++ else if (configured == 2)
64093 ++ kgdb_unregister_io_module(&kgdboc_io_ops_console);
64094 + }
64095 +
64096 + static int configure_kgdboc(void)
64097 +@@ -156,13 +159,13 @@ static int configure_kgdboc(void)
64098 int err;
64099 - struct netfs_cmd *cmd = t->iovec.iov_base;
64100 + char *cptr = config;
64101 + struct console *cons;
64102 ++ int is_console = 0;
64103 +
64104 + err = kgdboc_option_setup(config);
64105 + if (err || !strlen(config) || isspace(config[0]))
64106 + goto noconfig;
64107 +
64108 + err = -ENODEV;
64109 +- kgdboc_io_ops.is_console = 0;
64110 + kgdb_tty_driver = NULL;
64111 +
64112 + kgdboc_use_kms = 0;
64113 +@@ -183,7 +186,7 @@ static int configure_kgdboc(void)
64114 + int idx;
64115 + if (cons->device && cons->device(cons, &idx) == p &&
64116 + idx == tty_line) {
64117 +- kgdboc_io_ops.is_console = 1;
64118 ++ is_console = 1;
64119 + break;
64120 + }
64121 + cons = cons->next;
64122 +@@ -193,12 +196,16 @@ static int configure_kgdboc(void)
64123 + kgdb_tty_line = tty_line;
64124 +
64125 + do_register:
64126 +- err = kgdb_register_io_module(&kgdboc_io_ops);
64127 ++ if (is_console) {
64128 ++ err = kgdb_register_io_module(&kgdboc_io_ops_console);
64129 ++ configured = 2;
64130 ++ } else {
64131 ++ err = kgdb_register_io_module(&kgdboc_io_ops);
64132 ++ configured = 1;
64133 ++ }
64134 + if (err)
64135 + goto noconfig;
64136
64137 -- t->gen = atomic_inc_return(&psb->trans_gen);
64138 -+ t->gen = atomic_inc_return_unchecked(&psb->trans_gen);
64139 +- configured = 1;
64140 +-
64141 + return 0;
64142
64143 - cmd->size = t->iovec.iov_len - sizeof(struct netfs_cmd) +
64144 - t->attached_size + t->attached_pages * sizeof(struct netfs_cmd);
64145 -diff -urNp linux-2.6.32.48/drivers/staging/sep/sep_driver.c linux-2.6.32.48/drivers/staging/sep/sep_driver.c
64146 ---- linux-2.6.32.48/drivers/staging/sep/sep_driver.c 2009-12-02 22:51:21.000000000 -0500
64147 -+++ linux-2.6.32.48/drivers/staging/sep/sep_driver.c 2011-11-12 12:46:45.000000000 -0500
64148 -@@ -2603,7 +2603,7 @@ static struct pci_driver sep_pci_driver
64149 - static dev_t sep_devno;
64150 -
64151 - /* the files operations structure of the driver */
64152 --static struct file_operations sep_file_operations = {
64153 -+static const struct file_operations sep_file_operations = {
64154 - .owner = THIS_MODULE,
64155 - .ioctl = sep_ioctl,
64156 - .poll = sep_poll,
64157 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/usbip_common.h linux-2.6.32.48/drivers/staging/usbip/usbip_common.h
64158 ---- linux-2.6.32.48/drivers/staging/usbip/usbip_common.h 2011-11-12 12:44:29.000000000 -0500
64159 -+++ linux-2.6.32.48/drivers/staging/usbip/usbip_common.h 2011-11-12 12:46:45.000000000 -0500
64160 -@@ -374,7 +374,7 @@ struct usbip_device {
64161 - void (*shutdown)(struct usbip_device *);
64162 - void (*reset)(struct usbip_device *);
64163 - void (*unusable)(struct usbip_device *);
64164 -- } eh_ops;
64165 -+ } __no_const eh_ops;
64166 - };
64167 + noconfig:
64168 +@@ -212,7 +219,7 @@ noconfig:
64169 + static int __init init_kgdboc(void)
64170 + {
64171 + /* Already configured? */
64172 +- if (configured == 1)
64173 ++ if (configured >= 1)
64174 + return 0;
64175
64176 + return configure_kgdboc();
64177 +@@ -261,7 +268,7 @@ static int param_set_kgdboc_var(const ch
64178 + if (config[len - 1] == '\n')
64179 + config[len - 1] = '\0';
64180
64181 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci.h linux-2.6.32.48/drivers/staging/usbip/vhci.h
64182 ---- linux-2.6.32.48/drivers/staging/usbip/vhci.h 2011-11-12 12:44:29.000000000 -0500
64183 -+++ linux-2.6.32.48/drivers/staging/usbip/vhci.h 2011-11-12 12:46:45.000000000 -0500
64184 -@@ -92,7 +92,7 @@ struct vhci_hcd {
64185 - unsigned resuming:1;
64186 - unsigned long re_timeout;
64187 +- if (configured == 1)
64188 ++ if (configured >= 1)
64189 + cleanup_kgdboc();
64190
64191 -- atomic_t seqnum;
64192 -+ atomic_unchecked_t seqnum;
64193 + /* Go and configure with the new params. */
64194 +@@ -301,6 +308,15 @@ static struct kgdb_io kgdboc_io_ops = {
64195 + .post_exception = kgdboc_post_exp_handler,
64196 + };
64197
64198 - /*
64199 - * NOTE:
64200 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c
64201 ---- linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c 2011-11-12 12:44:29.000000000 -0500
64202 -+++ linux-2.6.32.48/drivers/staging/usbip/vhci_hcd.c 2011-11-12 12:46:45.000000000 -0500
64203 -@@ -534,7 +534,7 @@ static void vhci_tx_urb(struct urb *urb)
64204 - return;
64205 - }
64206 ++static struct kgdb_io kgdboc_io_ops_console = {
64207 ++ .name = "kgdboc",
64208 ++ .read_char = kgdboc_get_char,
64209 ++ .write_char = kgdboc_put_char,
64210 ++ .pre_exception = kgdboc_pre_exp_handler,
64211 ++ .post_exception = kgdboc_post_exp_handler,
64212 ++ .is_console = 1
64213 ++};
64214 ++
64215 + #ifdef CONFIG_KGDB_SERIAL_CONSOLE
64216 + /* This is only available if kgdboc is a built in for early debugging */
64217 + static int __init kgdboc_early_init(char *opt)
64218 +diff -urNp linux-3.0.8/drivers/tty/serial/mfd.c linux-3.0.8/drivers/tty/serial/mfd.c
64219 +--- linux-3.0.8/drivers/tty/serial/mfd.c 2011-07-21 22:17:23.000000000 -0400
64220 ++++ linux-3.0.8/drivers/tty/serial/mfd.c 2011-10-11 10:44:33.000000000 -0400
64221 +@@ -1423,7 +1423,7 @@ static void serial_hsu_remove(struct pci
64222 + }
64223 +
64224 + /* First 3 are UART ports, and the 4th is the DMA */
64225 +-static const struct pci_device_id pci_ids[] __devinitdata = {
64226 ++static const struct pci_device_id pci_ids[] __devinitconst = {
64227 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081B) },
64228 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081C) },
64229 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x081D) },
64230 +diff -urNp linux-3.0.8/drivers/tty/serial/mrst_max3110.c linux-3.0.8/drivers/tty/serial/mrst_max3110.c
64231 +--- linux-3.0.8/drivers/tty/serial/mrst_max3110.c 2011-10-24 08:05:30.000000000 -0400
64232 ++++ linux-3.0.8/drivers/tty/serial/mrst_max3110.c 2011-10-16 21:55:28.000000000 -0400
64233 +@@ -393,6 +393,8 @@ static void max3110_con_receive(struct u
64234 + int loop = 1, num, total = 0;
64235 + u8 recv_buf[512], *pbuf;
64236
64237 -- priv->seqnum = atomic_inc_return(&the_controller->seqnum);
64238 -+ priv->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
64239 - if (priv->seqnum == 0xffff)
64240 - usbip_uinfo("seqnum max\n");
64241 ++ pax_track_stack();
64242 ++
64243 + pbuf = recv_buf;
64244 + do {
64245 + num = max3110_read_multi(max, pbuf);
64246 +diff -urNp linux-3.0.8/drivers/tty/tty_io.c linux-3.0.8/drivers/tty/tty_io.c
64247 +--- linux-3.0.8/drivers/tty/tty_io.c 2011-10-24 08:05:30.000000000 -0400
64248 ++++ linux-3.0.8/drivers/tty/tty_io.c 2011-10-16 21:55:28.000000000 -0400
64249 +@@ -3214,7 +3214,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
64250
64251 -@@ -793,7 +793,7 @@ static int vhci_urb_dequeue(struct usb_h
64252 - return -ENOMEM;
64253 - }
64254 + void tty_default_fops(struct file_operations *fops)
64255 + {
64256 +- *fops = tty_fops;
64257 ++ memcpy((void *)fops, &tty_fops, sizeof(tty_fops));
64258 + }
64259
64260 -- unlink->seqnum = atomic_inc_return(&the_controller->seqnum);
64261 -+ unlink->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
64262 - if (unlink->seqnum == 0xffff)
64263 - usbip_uinfo("seqnum max\n");
64264 + /*
64265 +diff -urNp linux-3.0.8/drivers/tty/tty_ldisc.c linux-3.0.8/drivers/tty/tty_ldisc.c
64266 +--- linux-3.0.8/drivers/tty/tty_ldisc.c 2011-07-21 22:17:23.000000000 -0400
64267 ++++ linux-3.0.8/drivers/tty/tty_ldisc.c 2011-08-23 21:47:56.000000000 -0400
64268 +@@ -74,7 +74,7 @@ static void put_ldisc(struct tty_ldisc *
64269 + if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
64270 + struct tty_ldisc_ops *ldo = ld->ops;
64271
64272 -@@ -988,7 +988,7 @@ static int vhci_start(struct usb_hcd *hc
64273 - vdev->rhport = rhport;
64274 - }
64275 +- ldo->refcount--;
64276 ++ atomic_dec(&ldo->refcount);
64277 + module_put(ldo->owner);
64278 + spin_unlock_irqrestore(&tty_ldisc_lock, flags);
64279
64280 -- atomic_set(&vhci->seqnum, 0);
64281 -+ atomic_set_unchecked(&vhci->seqnum, 0);
64282 - spin_lock_init(&vhci->lock);
64283 +@@ -109,7 +109,7 @@ int tty_register_ldisc(int disc, struct
64284 + spin_lock_irqsave(&tty_ldisc_lock, flags);
64285 + tty_ldiscs[disc] = new_ldisc;
64286 + new_ldisc->num = disc;
64287 +- new_ldisc->refcount = 0;
64288 ++ atomic_set(&new_ldisc->refcount, 0);
64289 + spin_unlock_irqrestore(&tty_ldisc_lock, flags);
64290
64291 + return ret;
64292 +@@ -137,7 +137,7 @@ int tty_unregister_ldisc(int disc)
64293 + return -EINVAL;
64294
64295 -diff -urNp linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c
64296 ---- linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c 2011-11-12 12:44:29.000000000 -0500
64297 -+++ linux-2.6.32.48/drivers/staging/usbip/vhci_rx.c 2011-11-12 12:46:45.000000000 -0500
64298 -@@ -78,7 +78,7 @@ static void vhci_recv_ret_submit(struct
64299 - usbip_uerr("cannot find a urb of seqnum %u\n",
64300 - pdu->base.seqnum);
64301 - usbip_uinfo("max seqnum %d\n",
64302 -- atomic_read(&the_controller->seqnum));
64303 -+ atomic_read_unchecked(&the_controller->seqnum));
64304 - usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
64305 - return;
64306 + spin_lock_irqsave(&tty_ldisc_lock, flags);
64307 +- if (tty_ldiscs[disc]->refcount)
64308 ++ if (atomic_read(&tty_ldiscs[disc]->refcount))
64309 + ret = -EBUSY;
64310 + else
64311 + tty_ldiscs[disc] = NULL;
64312 +@@ -158,7 +158,7 @@ static struct tty_ldisc_ops *get_ldops(i
64313 + if (ldops) {
64314 + ret = ERR_PTR(-EAGAIN);
64315 + if (try_module_get(ldops->owner)) {
64316 +- ldops->refcount++;
64317 ++ atomic_inc(&ldops->refcount);
64318 + ret = ldops;
64319 + }
64320 }
64321 -diff -urNp linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c
64322 ---- linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c 2009-12-02 22:51:21.000000000 -0500
64323 -+++ linux-2.6.32.48/drivers/staging/vme/devices/vme_user.c 2011-11-12 12:46:45.000000000 -0500
64324 -@@ -136,7 +136,7 @@ static int vme_user_ioctl(struct inode *
64325 - static int __init vme_user_probe(struct device *, int, int);
64326 - static int __exit vme_user_remove(struct device *, int, int);
64327 -
64328 --static struct file_operations vme_user_fops = {
64329 -+static const struct file_operations vme_user_fops = {
64330 - .open = vme_user_open,
64331 - .release = vme_user_release,
64332 - .read = vme_user_read,
64333 -diff -urNp linux-2.6.32.48/drivers/staging/vt6655/hostap.c linux-2.6.32.48/drivers/staging/vt6655/hostap.c
64334 ---- linux-2.6.32.48/drivers/staging/vt6655/hostap.c 2009-12-02 22:51:21.000000000 -0500
64335 -+++ linux-2.6.32.48/drivers/staging/vt6655/hostap.c 2011-11-12 12:46:45.000000000 -0500
64336 -@@ -84,7 +84,7 @@ static int hostap_enable_hostapd(PSDevic
64337 - PSDevice apdev_priv;
64338 - struct net_device *dev = pDevice->dev;
64339 - int ret;
64340 -- const struct net_device_ops apdev_netdev_ops = {
64341 -+ net_device_ops_no_const apdev_netdev_ops = {
64342 - .ndo_start_xmit = pDevice->tx_80211,
64343 - };
64344 +@@ -171,7 +171,7 @@ static void put_ldops(struct tty_ldisc_o
64345 + unsigned long flags;
64346
64347 -diff -urNp linux-2.6.32.48/drivers/staging/vt6656/hostap.c linux-2.6.32.48/drivers/staging/vt6656/hostap.c
64348 ---- linux-2.6.32.48/drivers/staging/vt6656/hostap.c 2009-12-02 22:51:21.000000000 -0500
64349 -+++ linux-2.6.32.48/drivers/staging/vt6656/hostap.c 2011-11-12 12:46:45.000000000 -0500
64350 -@@ -86,7 +86,7 @@ static int hostap_enable_hostapd(PSDevic
64351 - PSDevice apdev_priv;
64352 - struct net_device *dev = pDevice->dev;
64353 - int ret;
64354 -- const struct net_device_ops apdev_netdev_ops = {
64355 -+ net_device_ops_no_const apdev_netdev_ops = {
64356 - .ndo_start_xmit = pDevice->tx_80211,
64357 - };
64358 + spin_lock_irqsave(&tty_ldisc_lock, flags);
64359 +- ldops->refcount--;
64360 ++ atomic_dec(&ldops->refcount);
64361 + module_put(ldops->owner);
64362 + spin_unlock_irqrestore(&tty_ldisc_lock, flags);
64363 + }
64364 +diff -urNp linux-3.0.8/drivers/tty/vt/keyboard.c linux-3.0.8/drivers/tty/vt/keyboard.c
64365 +--- linux-3.0.8/drivers/tty/vt/keyboard.c 2011-07-21 22:17:23.000000000 -0400
64366 ++++ linux-3.0.8/drivers/tty/vt/keyboard.c 2011-08-23 21:48:14.000000000 -0400
64367 +@@ -656,6 +656,16 @@ static void k_spec(struct vc_data *vc, u
64368 + kbd->kbdmode == VC_OFF) &&
64369 + value != KVAL(K_SAK))
64370 + return; /* SAK is allowed even in raw mode */
64371 ++
64372 ++#if defined(CONFIG_GRKERNSEC_PROC) || defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
64373 ++ {
64374 ++ void *func = fn_handler[value];
64375 ++ if (func == fn_show_state || func == fn_show_ptregs ||
64376 ++ func == fn_show_mem)
64377 ++ return;
64378 ++ }
64379 ++#endif
64380 ++
64381 + fn_handler[value](vc);
64382 + }
64383
64384 -diff -urNp linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c
64385 ---- linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c 2009-12-02 22:51:21.000000000 -0500
64386 -+++ linux-2.6.32.48/drivers/staging/wlan-ng/hfa384x_usb.c 2011-11-12 12:46:45.000000000 -0500
64387 -@@ -205,7 +205,7 @@ static void unlocked_usbctlx_complete(hf
64388 +diff -urNp linux-3.0.8/drivers/tty/vt/vt.c linux-3.0.8/drivers/tty/vt/vt.c
64389 +--- linux-3.0.8/drivers/tty/vt/vt.c 2011-07-21 22:17:23.000000000 -0400
64390 ++++ linux-3.0.8/drivers/tty/vt/vt.c 2011-08-23 21:47:56.000000000 -0400
64391 +@@ -259,7 +259,7 @@ EXPORT_SYMBOL_GPL(unregister_vt_notifier
64392
64393 - struct usbctlx_completor {
64394 - int (*complete) (struct usbctlx_completor *);
64395 --};
64396 -+} __no_const;
64397 - typedef struct usbctlx_completor usbctlx_completor_t;
64398 + static void notify_write(struct vc_data *vc, unsigned int unicode)
64399 + {
64400 +- struct vt_notifier_param param = { .vc = vc, unicode = unicode };
64401 ++ struct vt_notifier_param param = { .vc = vc, .c = unicode };
64402 + atomic_notifier_call_chain(&vt_notifier_list, VT_WRITE, &param);
64403 + }
64404
64405 - static int
64406 -diff -urNp linux-2.6.32.48/drivers/telephony/ixj.c linux-2.6.32.48/drivers/telephony/ixj.c
64407 ---- linux-2.6.32.48/drivers/telephony/ixj.c 2009-12-02 22:51:21.000000000 -0500
64408 -+++ linux-2.6.32.48/drivers/telephony/ixj.c 2011-11-12 12:46:45.000000000 -0500
64409 -@@ -4976,6 +4976,8 @@ static int ixj_daa_cid_read(IXJ *j)
64410 - bool mContinue;
64411 - char *pIn, *pOut;
64412 +diff -urNp linux-3.0.8/drivers/tty/vt/vt_ioctl.c linux-3.0.8/drivers/tty/vt/vt_ioctl.c
64413 +--- linux-3.0.8/drivers/tty/vt/vt_ioctl.c 2011-07-21 22:17:23.000000000 -0400
64414 ++++ linux-3.0.8/drivers/tty/vt/vt_ioctl.c 2011-08-23 21:48:14.000000000 -0400
64415 +@@ -207,9 +207,6 @@ do_kdsk_ioctl(int cmd, struct kbentry __
64416 + if (copy_from_user(&tmp, user_kbe, sizeof(struct kbentry)))
64417 + return -EFAULT;
64418
64419 -+ pax_track_stack();
64420 +- if (!capable(CAP_SYS_TTY_CONFIG))
64421 +- perm = 0;
64422 +-
64423 + switch (cmd) {
64424 + case KDGKBENT:
64425 + key_map = key_maps[s];
64426 +@@ -221,6 +218,9 @@ do_kdsk_ioctl(int cmd, struct kbentry __
64427 + val = (i ? K_HOLE : K_NOSUCHMAP);
64428 + return put_user(val, &user_kbe->kb_value);
64429 + case KDSKBENT:
64430 ++ if (!capable(CAP_SYS_TTY_CONFIG))
64431 ++ perm = 0;
64432 +
64433 - if (!SCI_Prepare(j))
64434 - return 0;
64435 + if (!perm)
64436 + return -EPERM;
64437 + if (!i && v == K_NOSUCHMAP) {
64438 +@@ -322,9 +322,6 @@ do_kdgkb_ioctl(int cmd, struct kbsentry
64439 + int i, j, k;
64440 + int ret;
64441
64442 -diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64443 ---- linux-2.6.32.48/drivers/uio/uio.c 2009-12-02 22:51:21.000000000 -0500
64444 -+++ linux-2.6.32.48/drivers/uio/uio.c 2011-11-12 12:46:45.000000000 -0500
64445 -@@ -23,6 +23,7 @@
64446 - #include <linux/string.h>
64447 +- if (!capable(CAP_SYS_TTY_CONFIG))
64448 +- perm = 0;
64449 +-
64450 + kbs = kmalloc(sizeof(*kbs), GFP_KERNEL);
64451 + if (!kbs) {
64452 + ret = -ENOMEM;
64453 +@@ -358,6 +355,9 @@ do_kdgkb_ioctl(int cmd, struct kbsentry
64454 + kfree(kbs);
64455 + return ((p && *p) ? -EOVERFLOW : 0);
64456 + case KDSKBSENT:
64457 ++ if (!capable(CAP_SYS_TTY_CONFIG))
64458 ++ perm = 0;
64459 ++
64460 + if (!perm) {
64461 + ret = -EPERM;
64462 + goto reterr;
64463 +diff -urNp linux-3.0.8/drivers/uio/uio.c linux-3.0.8/drivers/uio/uio.c
64464 +--- linux-3.0.8/drivers/uio/uio.c 2011-07-21 22:17:23.000000000 -0400
64465 ++++ linux-3.0.8/drivers/uio/uio.c 2011-08-23 21:47:56.000000000 -0400
64466 +@@ -25,6 +25,7 @@
64467 #include <linux/kobject.h>
64468 + #include <linux/cdev.h>
64469 #include <linux/uio_driver.h>
64470 +#include <asm/local.h>
64471
64472 - #define UIO_MAX_DEVICES 255
64473 + #define UIO_MAX_DEVICES (1U << MINORBITS)
64474
64475 -@@ -30,10 +31,10 @@ struct uio_device {
64476 +@@ -32,10 +33,10 @@ struct uio_device {
64477 struct module *owner;
64478 struct device *dev;
64479 int minor;
64480 @@ -38739,34 +36101,16 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64481 struct uio_info *info;
64482 struct kobject *map_dir;
64483 struct kobject *portio_dir;
64484 -@@ -129,7 +130,7 @@ static ssize_t map_type_show(struct kobj
64485 - return entry->show(mem, buf);
64486 - }
64487 -
64488 --static struct sysfs_ops map_sysfs_ops = {
64489 -+static const struct sysfs_ops map_sysfs_ops = {
64490 - .show = map_type_show,
64491 - };
64492 -
64493 -@@ -217,7 +218,7 @@ static ssize_t portio_type_show(struct k
64494 - return entry->show(port, buf);
64495 - }
64496 -
64497 --static struct sysfs_ops portio_sysfs_ops = {
64498 -+static const struct sysfs_ops portio_sysfs_ops = {
64499 - .show = portio_type_show,
64500 - };
64501 -
64502 -@@ -255,7 +256,7 @@ static ssize_t show_event(struct device
64503 +@@ -242,7 +243,7 @@ static ssize_t show_event(struct device
64504 + struct device_attribute *attr, char *buf)
64505 + {
64506 struct uio_device *idev = dev_get_drvdata(dev);
64507 - if (idev)
64508 - return sprintf(buf, "%u\n",
64509 -- (unsigned int)atomic_read(&idev->event));
64510 -+ (unsigned int)atomic_read_unchecked(&idev->event));
64511 - else
64512 - return -ENODEV;
64513 +- return sprintf(buf, "%u\n", (unsigned int)atomic_read(&idev->event));
64514 ++ return sprintf(buf, "%u\n", (unsigned int)atomic_read_unchecked(&idev->event));
64515 }
64516 -@@ -424,7 +425,7 @@ void uio_event_notify(struct uio_info *i
64517 +
64518 + static struct device_attribute uio_class_attributes[] = {
64519 +@@ -408,7 +409,7 @@ void uio_event_notify(struct uio_info *i
64520 {
64521 struct uio_device *idev = info->uio_dev;
64522
64523 @@ -38775,7 +36119,7 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64524 wake_up_interruptible(&idev->wait);
64525 kill_fasync(&idev->async_queue, SIGIO, POLL_IN);
64526 }
64527 -@@ -477,7 +478,7 @@ static int uio_open(struct inode *inode,
64528 +@@ -461,7 +462,7 @@ static int uio_open(struct inode *inode,
64529 }
64530
64531 listener->dev = idev;
64532 @@ -38784,7 +36128,7 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64533 filep->private_data = listener;
64534
64535 if (idev->info->open) {
64536 -@@ -528,7 +529,7 @@ static unsigned int uio_poll(struct file
64537 +@@ -512,7 +513,7 @@ static unsigned int uio_poll(struct file
64538 return -EIO;
64539
64540 poll_wait(filep, &idev->wait, wait);
64541 @@ -38793,7 +36137,7 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64542 return POLLIN | POLLRDNORM;
64543 return 0;
64544 }
64545 -@@ -553,7 +554,7 @@ static ssize_t uio_read(struct file *fil
64546 +@@ -537,7 +538,7 @@ static ssize_t uio_read(struct file *fil
64547 do {
64548 set_current_state(TASK_INTERRUPTIBLE);
64549
64550 @@ -38802,7 +36146,7 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64551 if (event_count != listener->event_count) {
64552 if (copy_to_user(buf, &event_count, count))
64553 retval = -EFAULT;
64554 -@@ -624,13 +625,13 @@ static int uio_find_mem_index(struct vm_
64555 +@@ -606,13 +607,13 @@ static int uio_find_mem_index(struct vm_
64556 static void uio_vma_open(struct vm_area_struct *vma)
64557 {
64558 struct uio_device *idev = vma->vm_private_data;
64559 @@ -38818,7 +36162,7 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64560 }
64561
64562 static int uio_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
64563 -@@ -840,7 +841,7 @@ int __uio_register_device(struct module
64564 +@@ -823,7 +824,7 @@ int __uio_register_device(struct module
64565 idev->owner = owner;
64566 idev->info = info;
64567 init_waitqueue_head(&idev->wait);
64568 @@ -38827,10 +36171,22 @@ diff -urNp linux-2.6.32.48/drivers/uio/uio.c linux-2.6.32.48/drivers/uio/uio.c
64569
64570 ret = uio_get_minor(idev);
64571 if (ret)
64572 -diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/atm/usbatm.c
64573 ---- linux-2.6.32.48/drivers/usb/atm/usbatm.c 2009-12-02 22:51:21.000000000 -0500
64574 -+++ linux-2.6.32.48/drivers/usb/atm/usbatm.c 2011-11-12 12:46:45.000000000 -0500
64575 -@@ -333,7 +333,7 @@ static void usbatm_extract_one_cell(stru
64576 +diff -urNp linux-3.0.8/drivers/usb/atm/cxacru.c linux-3.0.8/drivers/usb/atm/cxacru.c
64577 +--- linux-3.0.8/drivers/usb/atm/cxacru.c 2011-07-21 22:17:23.000000000 -0400
64578 ++++ linux-3.0.8/drivers/usb/atm/cxacru.c 2011-08-23 21:47:56.000000000 -0400
64579 +@@ -473,7 +473,7 @@ static ssize_t cxacru_sysfs_store_adsl_c
64580 + ret = sscanf(buf + pos, "%x=%x%n", &index, &value, &tmp);
64581 + if (ret < 2)
64582 + return -EINVAL;
64583 +- if (index < 0 || index > 0x7f)
64584 ++ if (index > 0x7f)
64585 + return -EINVAL;
64586 + pos += tmp;
64587 +
64588 +diff -urNp linux-3.0.8/drivers/usb/atm/usbatm.c linux-3.0.8/drivers/usb/atm/usbatm.c
64589 +--- linux-3.0.8/drivers/usb/atm/usbatm.c 2011-07-21 22:17:23.000000000 -0400
64590 ++++ linux-3.0.8/drivers/usb/atm/usbatm.c 2011-08-23 21:47:56.000000000 -0400
64591 +@@ -332,7 +332,7 @@ static void usbatm_extract_one_cell(stru
64592 if (printk_ratelimit())
64593 atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n",
64594 __func__, vpi, vci);
64595 @@ -38839,7 +36195,7 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
64596 return;
64597 }
64598
64599 -@@ -361,7 +361,7 @@ static void usbatm_extract_one_cell(stru
64600 +@@ -360,7 +360,7 @@ static void usbatm_extract_one_cell(stru
64601 if (length > ATM_MAX_AAL5_PDU) {
64602 atm_rldbg(instance, "%s: bogus length %u (vcc: 0x%p)!\n",
64603 __func__, length, vcc);
64604 @@ -38848,7 +36204,7 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
64605 goto out;
64606 }
64607
64608 -@@ -370,14 +370,14 @@ static void usbatm_extract_one_cell(stru
64609 +@@ -369,14 +369,14 @@ static void usbatm_extract_one_cell(stru
64610 if (sarb->len < pdu_length) {
64611 atm_rldbg(instance, "%s: bogus pdu_length %u (sarb->len: %u, vcc: 0x%p)!\n",
64612 __func__, pdu_length, sarb->len, vcc);
64613 @@ -38865,7 +36221,7 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
64614 goto out;
64615 }
64616
64617 -@@ -387,7 +387,7 @@ static void usbatm_extract_one_cell(stru
64618 +@@ -386,7 +386,7 @@ static void usbatm_extract_one_cell(stru
64619 if (printk_ratelimit())
64620 atm_err(instance, "%s: no memory for skb (length: %u)!\n",
64621 __func__, length);
64622 @@ -38874,7 +36230,7 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
64623 goto out;
64624 }
64625
64626 -@@ -412,7 +412,7 @@ static void usbatm_extract_one_cell(stru
64627 +@@ -411,7 +411,7 @@ static void usbatm_extract_one_cell(stru
64628
64629 vcc->push(vcc, skb);
64630
64631 @@ -38883,7 +36239,7 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
64632 out:
64633 skb_trim(sarb, 0);
64634 }
64635 -@@ -616,7 +616,7 @@ static void usbatm_tx_process(unsigned l
64636 +@@ -614,7 +614,7 @@ static void usbatm_tx_process(unsigned l
64637 struct atm_vcc *vcc = UDSL_SKB(skb)->atm.vcc;
64638
64639 usbatm_pop(vcc, skb);
64640 @@ -38892,7 +36248,7 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
64641
64642 skb = skb_dequeue(&instance->sndqueue);
64643 }
64644 -@@ -775,11 +775,11 @@ static int usbatm_atm_proc_read(struct a
64645 +@@ -773,11 +773,11 @@ static int usbatm_atm_proc_read(struct a
64646 if (!left--)
64647 return sprintf(page,
64648 "AAL5: tx %d ( %d err ), rx %d ( %d err, %d drop )\n",
64649 @@ -38909,73 +36265,40 @@ diff -urNp linux-2.6.32.48/drivers/usb/atm/usbatm.c linux-2.6.32.48/drivers/usb/
64650
64651 if (!left--) {
64652 if (instance->disconnected)
64653 -diff -urNp linux-2.6.32.48/drivers/usb/class/cdc-wdm.c linux-2.6.32.48/drivers/usb/class/cdc-wdm.c
64654 ---- linux-2.6.32.48/drivers/usb/class/cdc-wdm.c 2009-12-02 22:51:21.000000000 -0500
64655 -+++ linux-2.6.32.48/drivers/usb/class/cdc-wdm.c 2011-11-12 12:46:45.000000000 -0500
64656 -@@ -314,7 +314,7 @@ static ssize_t wdm_write
64657 - if (r < 0)
64658 - goto outnp;
64659 -
64660 -- if (!file->f_flags && O_NONBLOCK)
64661 -+ if (!(file->f_flags & O_NONBLOCK))
64662 - r = wait_event_interruptible(desc->wait, !test_bit(WDM_IN_USE,
64663 - &desc->flags));
64664 - else
64665 -diff -urNp linux-2.6.32.48/drivers/usb/core/hcd.c linux-2.6.32.48/drivers/usb/core/hcd.c
64666 ---- linux-2.6.32.48/drivers/usb/core/hcd.c 2011-11-12 12:44:29.000000000 -0500
64667 -+++ linux-2.6.32.48/drivers/usb/core/hcd.c 2011-11-12 12:46:45.000000000 -0500
64668 -@@ -2216,7 +2216,7 @@ EXPORT_SYMBOL_GPL(usb_hcd_platform_shutd
64669 -
64670 - #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
64671 -
64672 --struct usb_mon_operations *mon_ops;
64673 -+const struct usb_mon_operations *mon_ops;
64674 -
64675 - /*
64676 - * The registration is unlocked.
64677 -@@ -2226,7 +2226,7 @@ struct usb_mon_operations *mon_ops;
64678 - * symbols from usbcore, usbcore gets referenced and cannot be unloaded first.
64679 +diff -urNp linux-3.0.8/drivers/usb/core/devices.c linux-3.0.8/drivers/usb/core/devices.c
64680 +--- linux-3.0.8/drivers/usb/core/devices.c 2011-07-21 22:17:23.000000000 -0400
64681 ++++ linux-3.0.8/drivers/usb/core/devices.c 2011-08-23 21:47:56.000000000 -0400
64682 +@@ -126,7 +126,7 @@ static const char format_endpt[] =
64683 + * time it gets called.
64684 */
64685 -
64686 --int usb_mon_register (struct usb_mon_operations *ops)
64687 -+int usb_mon_register (const struct usb_mon_operations *ops)
64688 - {
64689 -
64690 - if (mon_ops)
64691 -diff -urNp linux-2.6.32.48/drivers/usb/core/hcd.h linux-2.6.32.48/drivers/usb/core/hcd.h
64692 ---- linux-2.6.32.48/drivers/usb/core/hcd.h 2011-11-12 12:44:29.000000000 -0500
64693 -+++ linux-2.6.32.48/drivers/usb/core/hcd.h 2011-11-12 12:46:45.000000000 -0500
64694 -@@ -486,13 +486,13 @@ static inline void usbfs_cleanup(void) {
64695 - #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
64696 -
64697 - struct usb_mon_operations {
64698 -- void (*urb_submit)(struct usb_bus *bus, struct urb *urb);
64699 -- void (*urb_submit_error)(struct usb_bus *bus, struct urb *urb, int err);
64700 -- void (*urb_complete)(struct usb_bus *bus, struct urb *urb, int status);
64701 -+ void (* const urb_submit)(struct usb_bus *bus, struct urb *urb);
64702 -+ void (* const urb_submit_error)(struct usb_bus *bus, struct urb *urb, int err);
64703 -+ void (* const urb_complete)(struct usb_bus *bus, struct urb *urb, int status);
64704 - /* void (*urb_unlink)(struct usb_bus *bus, struct urb *urb); */
64705 - };
64706 -
64707 --extern struct usb_mon_operations *mon_ops;
64708 -+extern const struct usb_mon_operations *mon_ops;
64709 + static struct device_connect_event {
64710 +- atomic_t count;
64711 ++ atomic_unchecked_t count;
64712 + wait_queue_head_t wait;
64713 + } device_event = {
64714 + .count = ATOMIC_INIT(1),
64715 +@@ -164,7 +164,7 @@ static const struct class_info clas_info
64716
64717 - static inline void usbmon_urb_submit(struct usb_bus *bus, struct urb *urb)
64718 + void usbfs_conn_disc_event(void)
64719 {
64720 -@@ -514,7 +514,7 @@ static inline void usbmon_urb_complete(s
64721 - (*mon_ops->urb_complete)(bus, urb, status);
64722 +- atomic_add(2, &device_event.count);
64723 ++ atomic_add_unchecked(2, &device_event.count);
64724 + wake_up(&device_event.wait);
64725 }
64726
64727 --int usb_mon_register(struct usb_mon_operations *ops);
64728 -+int usb_mon_register(const struct usb_mon_operations *ops);
64729 - void usb_mon_deregister(void);
64730 +@@ -648,7 +648,7 @@ static unsigned int usb_device_poll(stru
64731
64732 - #else
64733 -diff -urNp linux-2.6.32.48/drivers/usb/core/message.c linux-2.6.32.48/drivers/usb/core/message.c
64734 ---- linux-2.6.32.48/drivers/usb/core/message.c 2011-11-12 12:44:29.000000000 -0500
64735 -+++ linux-2.6.32.48/drivers/usb/core/message.c 2011-11-12 12:46:45.000000000 -0500
64736 -@@ -914,8 +914,8 @@ char *usb_cache_string(struct usb_device
64737 + poll_wait(file, &device_event.wait, wait);
64738 +
64739 +- event_count = atomic_read(&device_event.count);
64740 ++ event_count = atomic_read_unchecked(&device_event.count);
64741 + if (file->f_version != event_count) {
64742 + file->f_version = event_count;
64743 + return POLLIN | POLLRDNORM;
64744 +diff -urNp linux-3.0.8/drivers/usb/core/message.c linux-3.0.8/drivers/usb/core/message.c
64745 +--- linux-3.0.8/drivers/usb/core/message.c 2011-07-21 22:17:23.000000000 -0400
64746 ++++ linux-3.0.8/drivers/usb/core/message.c 2011-08-23 21:47:56.000000000 -0400
64747 +@@ -869,8 +869,8 @@ char *usb_cache_string(struct usb_device
64748 buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO);
64749 if (buf) {
64750 len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE);
64751 @@ -38986,33 +36309,61 @@ diff -urNp linux-2.6.32.48/drivers/usb/core/message.c linux-2.6.32.48/drivers/us
64752 if (!smallbuf)
64753 return buf;
64754 memcpy(smallbuf, buf, len);
64755 -diff -urNp linux-2.6.32.48/drivers/usb/misc/appledisplay.c linux-2.6.32.48/drivers/usb/misc/appledisplay.c
64756 ---- linux-2.6.32.48/drivers/usb/misc/appledisplay.c 2011-11-12 12:44:29.000000000 -0500
64757 -+++ linux-2.6.32.48/drivers/usb/misc/appledisplay.c 2011-11-12 12:46:45.000000000 -0500
64758 -@@ -178,7 +178,7 @@ static int appledisplay_bl_get_brightnes
64759 - return pdata->msgdata[1];
64760 +diff -urNp linux-3.0.8/drivers/usb/early/ehci-dbgp.c linux-3.0.8/drivers/usb/early/ehci-dbgp.c
64761 +--- linux-3.0.8/drivers/usb/early/ehci-dbgp.c 2011-07-21 22:17:23.000000000 -0400
64762 ++++ linux-3.0.8/drivers/usb/early/ehci-dbgp.c 2011-08-23 21:47:56.000000000 -0400
64763 +@@ -97,7 +97,8 @@ static inline u32 dbgp_len_update(u32 x,
64764 +
64765 + #ifdef CONFIG_KGDB
64766 + static struct kgdb_io kgdbdbgp_io_ops;
64767 +-#define dbgp_kgdb_mode (dbg_io_ops == &kgdbdbgp_io_ops)
64768 ++static struct kgdb_io kgdbdbgp_io_ops_console;
64769 ++#define dbgp_kgdb_mode (dbg_io_ops == &kgdbdbgp_io_ops || dbg_io_ops == &kgdbdbgp_io_ops_console)
64770 + #else
64771 + #define dbgp_kgdb_mode (0)
64772 + #endif
64773 +@@ -1035,6 +1036,13 @@ static struct kgdb_io kgdbdbgp_io_ops =
64774 + .write_char = kgdbdbgp_write_char,
64775 + };
64776 +
64777 ++static struct kgdb_io kgdbdbgp_io_ops_console = {
64778 ++ .name = "kgdbdbgp",
64779 ++ .read_char = kgdbdbgp_read_char,
64780 ++ .write_char = kgdbdbgp_write_char,
64781 ++ .is_console = 1
64782 ++};
64783 ++
64784 + static int kgdbdbgp_wait_time;
64785 +
64786 + static int __init kgdbdbgp_parse_config(char *str)
64787 +@@ -1050,8 +1058,10 @@ static int __init kgdbdbgp_parse_config(
64788 + ptr++;
64789 + kgdbdbgp_wait_time = simple_strtoul(ptr, &ptr, 10);
64790 + }
64791 +- kgdb_register_io_module(&kgdbdbgp_io_ops);
64792 +- kgdbdbgp_io_ops.is_console = early_dbgp_console.index != -1;
64793 ++ if (early_dbgp_console.index != -1)
64794 ++ kgdb_register_io_module(&kgdbdbgp_io_ops_console);
64795 ++ else
64796 ++ kgdb_register_io_module(&kgdbdbgp_io_ops);
64797 +
64798 + return 0;
64799 }
64800 +diff -urNp linux-3.0.8/drivers/usb/host/xhci-mem.c linux-3.0.8/drivers/usb/host/xhci-mem.c
64801 +--- linux-3.0.8/drivers/usb/host/xhci-mem.c 2011-07-21 22:17:23.000000000 -0400
64802 ++++ linux-3.0.8/drivers/usb/host/xhci-mem.c 2011-08-23 21:48:14.000000000 -0400
64803 +@@ -1685,6 +1685,8 @@ static int xhci_check_trb_in_td_math(str
64804 + unsigned int num_tests;
64805 + int i, ret;
64806
64807 --static struct backlight_ops appledisplay_bl_data = {
64808 -+static const struct backlight_ops appledisplay_bl_data = {
64809 - .get_brightness = appledisplay_bl_get_brightness,
64810 - .update_status = appledisplay_bl_update_status,
64811 - };
64812 -diff -urNp linux-2.6.32.48/drivers/usb/mon/mon_main.c linux-2.6.32.48/drivers/usb/mon/mon_main.c
64813 ---- linux-2.6.32.48/drivers/usb/mon/mon_main.c 2009-12-02 22:51:21.000000000 -0500
64814 -+++ linux-2.6.32.48/drivers/usb/mon/mon_main.c 2011-11-12 12:46:45.000000000 -0500
64815 -@@ -238,7 +238,7 @@ static struct notifier_block mon_nb = {
64816 - /*
64817 - * Ops
64818 - */
64819 --static struct usb_mon_operations mon_ops_0 = {
64820 -+static const struct usb_mon_operations mon_ops_0 = {
64821 - .urb_submit = mon_submit,
64822 - .urb_submit_error = mon_submit_error,
64823 - .urb_complete = mon_complete,
64824 -diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h
64825 ---- linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h 2009-12-02 22:51:21.000000000 -0500
64826 -+++ linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h 2011-11-12 12:46:45.000000000 -0500
64827 ++ pax_track_stack();
64828 ++
64829 + num_tests = ARRAY_SIZE(simple_test_vector);
64830 + for (i = 0; i < num_tests; i++) {
64831 + ret = xhci_test_trb_in_td(xhci,
64832 +diff -urNp linux-3.0.8/drivers/usb/wusbcore/wa-hc.h linux-3.0.8/drivers/usb/wusbcore/wa-hc.h
64833 +--- linux-3.0.8/drivers/usb/wusbcore/wa-hc.h 2011-07-21 22:17:23.000000000 -0400
64834 ++++ linux-3.0.8/drivers/usb/wusbcore/wa-hc.h 2011-08-23 21:47:56.000000000 -0400
64835 @@ -192,7 +192,7 @@ struct wahc {
64836 struct list_head xfer_delayed_list;
64837 spinlock_t xfer_list_lock;
64838 @@ -39031,10 +36382,10 @@ diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-hc.h linux-2.6.32.48/drivers/
64839 }
64840
64841 /**
64842 -diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c
64843 ---- linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c 2009-12-02 22:51:21.000000000 -0500
64844 -+++ linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c 2011-11-12 12:46:45.000000000 -0500
64845 -@@ -293,7 +293,7 @@ out:
64846 +diff -urNp linux-3.0.8/drivers/usb/wusbcore/wa-xfer.c linux-3.0.8/drivers/usb/wusbcore/wa-xfer.c
64847 +--- linux-3.0.8/drivers/usb/wusbcore/wa-xfer.c 2011-07-21 22:17:23.000000000 -0400
64848 ++++ linux-3.0.8/drivers/usb/wusbcore/wa-xfer.c 2011-08-23 21:47:56.000000000 -0400
64849 +@@ -294,7 +294,7 @@ out:
64850 */
64851 static void wa_xfer_id_init(struct wa_xfer *xfer)
64852 {
64853 @@ -39043,323 +36394,34 @@ diff -urNp linux-2.6.32.48/drivers/usb/wusbcore/wa-xfer.c linux-2.6.32.48/driver
64854 }
64855
64856 /*
64857 -diff -urNp linux-2.6.32.48/drivers/uwb/wlp/messages.c linux-2.6.32.48/drivers/uwb/wlp/messages.c
64858 ---- linux-2.6.32.48/drivers/uwb/wlp/messages.c 2009-12-02 22:51:21.000000000 -0500
64859 -+++ linux-2.6.32.48/drivers/uwb/wlp/messages.c 2011-11-12 12:46:45.000000000 -0500
64860 -@@ -903,7 +903,7 @@ int wlp_parse_f0(struct wlp *wlp, struct
64861 - size_t len = skb->len;
64862 - size_t used;
64863 - ssize_t result;
64864 -- struct wlp_nonce enonce, rnonce;
64865 -+ struct wlp_nonce enonce = {{0}}, rnonce = {{0}};
64866 - enum wlp_assc_error assc_err;
64867 - char enonce_buf[WLP_WSS_NONCE_STRSIZE];
64868 - char rnonce_buf[WLP_WSS_NONCE_STRSIZE];
64869 -diff -urNp linux-2.6.32.48/drivers/uwb/wlp/sysfs.c linux-2.6.32.48/drivers/uwb/wlp/sysfs.c
64870 ---- linux-2.6.32.48/drivers/uwb/wlp/sysfs.c 2009-12-02 22:51:21.000000000 -0500
64871 -+++ linux-2.6.32.48/drivers/uwb/wlp/sysfs.c 2011-11-12 12:46:45.000000000 -0500
64872 -@@ -615,8 +615,7 @@ ssize_t wlp_wss_attr_store(struct kobjec
64873 - return ret;
64874 - }
64875 -
64876 --static
64877 --struct sysfs_ops wss_sysfs_ops = {
64878 -+static const struct sysfs_ops wss_sysfs_ops = {
64879 - .show = wlp_wss_attr_show,
64880 - .store = wlp_wss_attr_store,
64881 - };
64882 -diff -urNp linux-2.6.32.48/drivers/video/atmel_lcdfb.c linux-2.6.32.48/drivers/video/atmel_lcdfb.c
64883 ---- linux-2.6.32.48/drivers/video/atmel_lcdfb.c 2009-12-02 22:51:21.000000000 -0500
64884 -+++ linux-2.6.32.48/drivers/video/atmel_lcdfb.c 2011-11-12 12:46:45.000000000 -0500
64885 -@@ -110,7 +110,7 @@ static int atmel_bl_get_brightness(struc
64886 - return lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_VAL);
64887 - }
64888 -
64889 --static struct backlight_ops atmel_lcdc_bl_ops = {
64890 -+static const struct backlight_ops atmel_lcdc_bl_ops = {
64891 - .update_status = atmel_bl_update_status,
64892 - .get_brightness = atmel_bl_get_brightness,
64893 - };
64894 -diff -urNp linux-2.6.32.48/drivers/video/aty/aty128fb.c linux-2.6.32.48/drivers/video/aty/aty128fb.c
64895 ---- linux-2.6.32.48/drivers/video/aty/aty128fb.c 2009-12-02 22:51:21.000000000 -0500
64896 -+++ linux-2.6.32.48/drivers/video/aty/aty128fb.c 2011-11-12 12:46:45.000000000 -0500
64897 -@@ -1787,7 +1787,7 @@ static int aty128_bl_get_brightness(stru
64898 - return bd->props.brightness;
64899 - }
64900 -
64901 --static struct backlight_ops aty128_bl_data = {
64902 -+static const struct backlight_ops aty128_bl_data = {
64903 - .get_brightness = aty128_bl_get_brightness,
64904 - .update_status = aty128_bl_update_status,
64905 - };
64906 -diff -urNp linux-2.6.32.48/drivers/video/aty/atyfb_base.c linux-2.6.32.48/drivers/video/aty/atyfb_base.c
64907 ---- linux-2.6.32.48/drivers/video/aty/atyfb_base.c 2009-12-02 22:51:21.000000000 -0500
64908 -+++ linux-2.6.32.48/drivers/video/aty/atyfb_base.c 2011-11-12 12:46:45.000000000 -0500
64909 -@@ -2225,7 +2225,7 @@ static int aty_bl_get_brightness(struct
64910 - return bd->props.brightness;
64911 - }
64912 -
64913 --static struct backlight_ops aty_bl_data = {
64914 -+static const struct backlight_ops aty_bl_data = {
64915 - .get_brightness = aty_bl_get_brightness,
64916 - .update_status = aty_bl_update_status,
64917 - };
64918 -diff -urNp linux-2.6.32.48/drivers/video/aty/radeon_backlight.c linux-2.6.32.48/drivers/video/aty/radeon_backlight.c
64919 ---- linux-2.6.32.48/drivers/video/aty/radeon_backlight.c 2009-12-02 22:51:21.000000000 -0500
64920 -+++ linux-2.6.32.48/drivers/video/aty/radeon_backlight.c 2011-11-12 12:46:45.000000000 -0500
64921 -@@ -127,7 +127,7 @@ static int radeon_bl_get_brightness(stru
64922 - return bd->props.brightness;
64923 - }
64924 -
64925 --static struct backlight_ops radeon_bl_data = {
64926 -+static const struct backlight_ops radeon_bl_data = {
64927 - .get_brightness = radeon_bl_get_brightness,
64928 - .update_status = radeon_bl_update_status,
64929 - };
64930 -diff -urNp linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c
64931 ---- linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c 2009-12-02 22:51:21.000000000 -0500
64932 -+++ linux-2.6.32.48/drivers/video/backlight/adp5520_bl.c 2011-11-12 12:46:45.000000000 -0500
64933 -@@ -84,7 +84,7 @@ static int adp5520_bl_get_brightness(str
64934 - return error ? data->current_brightness : reg_val;
64935 - }
64936 -
64937 --static struct backlight_ops adp5520_bl_ops = {
64938 -+static const struct backlight_ops adp5520_bl_ops = {
64939 - .update_status = adp5520_bl_update_status,
64940 - .get_brightness = adp5520_bl_get_brightness,
64941 - };
64942 -diff -urNp linux-2.6.32.48/drivers/video/backlight/adx_bl.c linux-2.6.32.48/drivers/video/backlight/adx_bl.c
64943 ---- linux-2.6.32.48/drivers/video/backlight/adx_bl.c 2009-12-02 22:51:21.000000000 -0500
64944 -+++ linux-2.6.32.48/drivers/video/backlight/adx_bl.c 2011-11-12 12:46:45.000000000 -0500
64945 -@@ -61,7 +61,7 @@ static int adx_backlight_check_fb(struct
64946 - return 1;
64947 - }
64948 -
64949 --static struct backlight_ops adx_backlight_ops = {
64950 -+static const struct backlight_ops adx_backlight_ops = {
64951 - .options = 0,
64952 - .update_status = adx_backlight_update_status,
64953 - .get_brightness = adx_backlight_get_brightness,
64954 -diff -urNp linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c
64955 ---- linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c 2009-12-02 22:51:21.000000000 -0500
64956 -+++ linux-2.6.32.48/drivers/video/backlight/atmel-pwm-bl.c 2011-11-12 12:46:45.000000000 -0500
64957 -@@ -113,7 +113,7 @@ static int atmel_pwm_bl_init_pwm(struct
64958 - return pwm_channel_enable(&pwmbl->pwmc);
64959 - }
64960 -
64961 --static struct backlight_ops atmel_pwm_bl_ops = {
64962 -+static const struct backlight_ops atmel_pwm_bl_ops = {
64963 - .get_brightness = atmel_pwm_bl_get_intensity,
64964 - .update_status = atmel_pwm_bl_set_intensity,
64965 - };
64966 -diff -urNp linux-2.6.32.48/drivers/video/backlight/backlight.c linux-2.6.32.48/drivers/video/backlight/backlight.c
64967 ---- linux-2.6.32.48/drivers/video/backlight/backlight.c 2011-11-12 12:44:30.000000000 -0500
64968 -+++ linux-2.6.32.48/drivers/video/backlight/backlight.c 2011-11-12 12:46:45.000000000 -0500
64969 -@@ -269,7 +269,7 @@ EXPORT_SYMBOL(backlight_force_update);
64970 - * ERR_PTR() or a pointer to the newly allocated device.
64971 - */
64972 - struct backlight_device *backlight_device_register(const char *name,
64973 -- struct device *parent, void *devdata, struct backlight_ops *ops)
64974 -+ struct device *parent, void *devdata, const struct backlight_ops *ops)
64975 - {
64976 - struct backlight_device *new_bd;
64977 - int rc;
64978 -diff -urNp linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c
64979 ---- linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c 2009-12-02 22:51:21.000000000 -0500
64980 -+++ linux-2.6.32.48/drivers/video/backlight/corgi_lcd.c 2011-11-12 12:46:45.000000000 -0500
64981 -@@ -451,7 +451,7 @@ void corgi_lcd_limit_intensity(int limit
64982 - }
64983 - EXPORT_SYMBOL(corgi_lcd_limit_intensity);
64984 -
64985 --static struct backlight_ops corgi_bl_ops = {
64986 -+static const struct backlight_ops corgi_bl_ops = {
64987 - .get_brightness = corgi_bl_get_intensity,
64988 - .update_status = corgi_bl_update_status,
64989 - };
64990 -diff -urNp linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c
64991 ---- linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c 2009-12-02 22:51:21.000000000 -0500
64992 -+++ linux-2.6.32.48/drivers/video/backlight/cr_bllcd.c 2011-11-12 12:46:45.000000000 -0500
64993 -@@ -108,7 +108,7 @@ static int cr_backlight_get_intensity(st
64994 - return intensity;
64995 - }
64996 -
64997 --static struct backlight_ops cr_backlight_ops = {
64998 -+static const struct backlight_ops cr_backlight_ops = {
64999 - .get_brightness = cr_backlight_get_intensity,
65000 - .update_status = cr_backlight_set_intensity,
65001 - };
65002 -diff -urNp linux-2.6.32.48/drivers/video/backlight/da903x_bl.c linux-2.6.32.48/drivers/video/backlight/da903x_bl.c
65003 ---- linux-2.6.32.48/drivers/video/backlight/da903x_bl.c 2009-12-02 22:51:21.000000000 -0500
65004 -+++ linux-2.6.32.48/drivers/video/backlight/da903x_bl.c 2011-11-12 12:46:45.000000000 -0500
65005 -@@ -94,7 +94,7 @@ static int da903x_backlight_get_brightne
65006 - return data->current_brightness;
65007 - }
65008 -
65009 --static struct backlight_ops da903x_backlight_ops = {
65010 -+static const struct backlight_ops da903x_backlight_ops = {
65011 - .update_status = da903x_backlight_update_status,
65012 - .get_brightness = da903x_backlight_get_brightness,
65013 - };
65014 -diff -urNp linux-2.6.32.48/drivers/video/backlight/generic_bl.c linux-2.6.32.48/drivers/video/backlight/generic_bl.c
65015 ---- linux-2.6.32.48/drivers/video/backlight/generic_bl.c 2009-12-02 22:51:21.000000000 -0500
65016 -+++ linux-2.6.32.48/drivers/video/backlight/generic_bl.c 2011-11-12 12:46:45.000000000 -0500
65017 -@@ -70,7 +70,7 @@ void corgibl_limit_intensity(int limit)
65018 - }
65019 - EXPORT_SYMBOL(corgibl_limit_intensity);
65020 -
65021 --static struct backlight_ops genericbl_ops = {
65022 -+static const struct backlight_ops genericbl_ops = {
65023 - .options = BL_CORE_SUSPENDRESUME,
65024 - .get_brightness = genericbl_get_intensity,
65025 - .update_status = genericbl_send_intensity,
65026 -diff -urNp linux-2.6.32.48/drivers/video/backlight/hp680_bl.c linux-2.6.32.48/drivers/video/backlight/hp680_bl.c
65027 ---- linux-2.6.32.48/drivers/video/backlight/hp680_bl.c 2009-12-02 22:51:21.000000000 -0500
65028 -+++ linux-2.6.32.48/drivers/video/backlight/hp680_bl.c 2011-11-12 12:46:45.000000000 -0500
65029 -@@ -98,7 +98,7 @@ static int hp680bl_get_intensity(struct
65030 - return current_intensity;
65031 - }
65032 -
65033 --static struct backlight_ops hp680bl_ops = {
65034 -+static const struct backlight_ops hp680bl_ops = {
65035 - .get_brightness = hp680bl_get_intensity,
65036 - .update_status = hp680bl_set_intensity,
65037 - };
65038 -diff -urNp linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c
65039 ---- linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c 2009-12-02 22:51:21.000000000 -0500
65040 -+++ linux-2.6.32.48/drivers/video/backlight/jornada720_bl.c 2011-11-12 12:46:45.000000000 -0500
65041 -@@ -93,7 +93,7 @@ out:
65042 - return ret;
65043 - }
65044 -
65045 --static struct backlight_ops jornada_bl_ops = {
65046 -+static const struct backlight_ops jornada_bl_ops = {
65047 - .get_brightness = jornada_bl_get_brightness,
65048 - .update_status = jornada_bl_update_status,
65049 - .options = BL_CORE_SUSPENDRESUME,
65050 -diff -urNp linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c
65051 ---- linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c 2009-12-02 22:51:21.000000000 -0500
65052 -+++ linux-2.6.32.48/drivers/video/backlight/kb3886_bl.c 2011-11-12 12:46:45.000000000 -0500
65053 -@@ -134,7 +134,7 @@ static int kb3886bl_get_intensity(struct
65054 - return kb3886bl_intensity;
65055 - }
65056 -
65057 --static struct backlight_ops kb3886bl_ops = {
65058 -+static const struct backlight_ops kb3886bl_ops = {
65059 - .get_brightness = kb3886bl_get_intensity,
65060 - .update_status = kb3886bl_send_intensity,
65061 - };
65062 -diff -urNp linux-2.6.32.48/drivers/video/backlight/locomolcd.c linux-2.6.32.48/drivers/video/backlight/locomolcd.c
65063 ---- linux-2.6.32.48/drivers/video/backlight/locomolcd.c 2009-12-02 22:51:21.000000000 -0500
65064 -+++ linux-2.6.32.48/drivers/video/backlight/locomolcd.c 2011-11-12 12:46:45.000000000 -0500
65065 -@@ -141,7 +141,7 @@ static int locomolcd_get_intensity(struc
65066 - return current_intensity;
65067 - }
65068 -
65069 --static struct backlight_ops locomobl_data = {
65070 -+static const struct backlight_ops locomobl_data = {
65071 - .get_brightness = locomolcd_get_intensity,
65072 - .update_status = locomolcd_set_intensity,
65073 - };
65074 -diff -urNp linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c
65075 ---- linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c 2011-11-12 12:44:30.000000000 -0500
65076 -+++ linux-2.6.32.48/drivers/video/backlight/mbp_nvidia_bl.c 2011-11-12 12:46:45.000000000 -0500
65077 -@@ -33,7 +33,7 @@ struct dmi_match_data {
65078 - unsigned long iostart;
65079 - unsigned long iolen;
65080 - /* Backlight operations structure. */
65081 -- struct backlight_ops backlight_ops;
65082 -+ const struct backlight_ops backlight_ops;
65083 - };
65084 -
65085 - /* Module parameters. */
65086 -diff -urNp linux-2.6.32.48/drivers/video/backlight/omap1_bl.c linux-2.6.32.48/drivers/video/backlight/omap1_bl.c
65087 ---- linux-2.6.32.48/drivers/video/backlight/omap1_bl.c 2009-12-02 22:51:21.000000000 -0500
65088 -+++ linux-2.6.32.48/drivers/video/backlight/omap1_bl.c 2011-11-12 12:46:45.000000000 -0500
65089 -@@ -125,7 +125,7 @@ static int omapbl_get_intensity(struct b
65090 - return bl->current_intensity;
65091 - }
65092 -
65093 --static struct backlight_ops omapbl_ops = {
65094 -+static const struct backlight_ops omapbl_ops = {
65095 - .get_brightness = omapbl_get_intensity,
65096 - .update_status = omapbl_update_status,
65097 - };
65098 -diff -urNp linux-2.6.32.48/drivers/video/backlight/progear_bl.c linux-2.6.32.48/drivers/video/backlight/progear_bl.c
65099 ---- linux-2.6.32.48/drivers/video/backlight/progear_bl.c 2009-12-02 22:51:21.000000000 -0500
65100 -+++ linux-2.6.32.48/drivers/video/backlight/progear_bl.c 2011-11-12 12:46:45.000000000 -0500
65101 -@@ -54,7 +54,7 @@ static int progearbl_get_intensity(struc
65102 - return intensity - HW_LEVEL_MIN;
65103 - }
65104 -
65105 --static struct backlight_ops progearbl_ops = {
65106 -+static const struct backlight_ops progearbl_ops = {
65107 - .get_brightness = progearbl_get_intensity,
65108 - .update_status = progearbl_set_intensity,
65109 - };
65110 -diff -urNp linux-2.6.32.48/drivers/video/backlight/pwm_bl.c linux-2.6.32.48/drivers/video/backlight/pwm_bl.c
65111 ---- linux-2.6.32.48/drivers/video/backlight/pwm_bl.c 2009-12-02 22:51:21.000000000 -0500
65112 -+++ linux-2.6.32.48/drivers/video/backlight/pwm_bl.c 2011-11-12 12:46:45.000000000 -0500
65113 -@@ -56,7 +56,7 @@ static int pwm_backlight_get_brightness(
65114 - return bl->props.brightness;
65115 - }
65116 -
65117 --static struct backlight_ops pwm_backlight_ops = {
65118 -+static const struct backlight_ops pwm_backlight_ops = {
65119 - .update_status = pwm_backlight_update_status,
65120 - .get_brightness = pwm_backlight_get_brightness,
65121 - };
65122 -diff -urNp linux-2.6.32.48/drivers/video/backlight/tosa_bl.c linux-2.6.32.48/drivers/video/backlight/tosa_bl.c
65123 ---- linux-2.6.32.48/drivers/video/backlight/tosa_bl.c 2009-12-02 22:51:21.000000000 -0500
65124 -+++ linux-2.6.32.48/drivers/video/backlight/tosa_bl.c 2011-11-12 12:46:45.000000000 -0500
65125 -@@ -72,7 +72,7 @@ static int tosa_bl_get_brightness(struct
65126 - return props->brightness;
65127 - }
65128 -
65129 --static struct backlight_ops bl_ops = {
65130 -+static const struct backlight_ops bl_ops = {
65131 - .get_brightness = tosa_bl_get_brightness,
65132 - .update_status = tosa_bl_update_status,
65133 - };
65134 -diff -urNp linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c
65135 ---- linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c 2009-12-02 22:51:21.000000000 -0500
65136 -+++ linux-2.6.32.48/drivers/video/backlight/wm831x_bl.c 2011-11-12 12:46:45.000000000 -0500
65137 -@@ -112,7 +112,7 @@ static int wm831x_backlight_get_brightne
65138 - return data->current_brightness;
65139 - }
65140 -
65141 --static struct backlight_ops wm831x_backlight_ops = {
65142 -+static const struct backlight_ops wm831x_backlight_ops = {
65143 - .options = BL_CORE_SUSPENDRESUME,
65144 - .update_status = wm831x_backlight_update_status,
65145 - .get_brightness = wm831x_backlight_get_brightness,
65146 -diff -urNp linux-2.6.32.48/drivers/video/bf54x-lq043fb.c linux-2.6.32.48/drivers/video/bf54x-lq043fb.c
65147 ---- linux-2.6.32.48/drivers/video/bf54x-lq043fb.c 2009-12-02 22:51:21.000000000 -0500
65148 -+++ linux-2.6.32.48/drivers/video/bf54x-lq043fb.c 2011-11-12 12:46:45.000000000 -0500
65149 -@@ -463,7 +463,7 @@ static int bl_get_brightness(struct back
65150 - return 0;
65151 - }
65152 -
65153 --static struct backlight_ops bfin_lq043fb_bl_ops = {
65154 -+static const struct backlight_ops bfin_lq043fb_bl_ops = {
65155 - .get_brightness = bl_get_brightness,
65156 - };
65157 -
65158 -diff -urNp linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c
65159 ---- linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c 2011-11-12 12:44:30.000000000 -0500
65160 -+++ linux-2.6.32.48/drivers/video/bfin-t350mcqb-fb.c 2011-11-12 12:46:45.000000000 -0500
65161 -@@ -381,7 +381,7 @@ static int bl_get_brightness(struct back
65162 - return 0;
65163 - }
65164 -
65165 --static struct backlight_ops bfin_lq043fb_bl_ops = {
65166 -+static const struct backlight_ops bfin_lq043fb_bl_ops = {
65167 - .get_brightness = bl_get_brightness,
65168 +diff -urNp linux-3.0.8/drivers/vhost/vhost.c linux-3.0.8/drivers/vhost/vhost.c
65169 +--- linux-3.0.8/drivers/vhost/vhost.c 2011-07-21 22:17:23.000000000 -0400
65170 ++++ linux-3.0.8/drivers/vhost/vhost.c 2011-08-23 21:47:56.000000000 -0400
65171 +@@ -589,7 +589,7 @@ static int init_used(struct vhost_virtqu
65172 + return get_user(vq->last_used_idx, &used->idx);
65173 + }
65174 +
65175 +-static long vhost_set_vring(struct vhost_dev *d, int ioctl, void __user *argp)
65176 ++static long vhost_set_vring(struct vhost_dev *d, unsigned int ioctl, void __user *argp)
65177 + {
65178 + struct file *eventfp, *filep = NULL,
65179 + *pollstart = NULL, *pollstop = NULL;
65180 +diff -urNp linux-3.0.8/drivers/video/aty/aty128fb.c linux-3.0.8/drivers/video/aty/aty128fb.c
65181 +--- linux-3.0.8/drivers/video/aty/aty128fb.c 2011-07-21 22:17:23.000000000 -0400
65182 ++++ linux-3.0.8/drivers/video/aty/aty128fb.c 2011-10-11 10:44:33.000000000 -0400
65183 +@@ -148,7 +148,7 @@ enum {
65184 };
65185
65186 -diff -urNp linux-2.6.32.48/drivers/video/fbcmap.c linux-2.6.32.48/drivers/video/fbcmap.c
65187 ---- linux-2.6.32.48/drivers/video/fbcmap.c 2009-12-02 22:51:21.000000000 -0500
65188 -+++ linux-2.6.32.48/drivers/video/fbcmap.c 2011-11-12 12:46:45.000000000 -0500
65189 -@@ -266,8 +266,7 @@ int fb_set_user_cmap(struct fb_cmap_user
65190 + /* Must match above enum */
65191 +-static const char *r128_family[] __devinitdata = {
65192 ++static const char *r128_family[] __devinitconst = {
65193 + "AGP",
65194 + "PCI",
65195 + "PRO AGP",
65196 +diff -urNp linux-3.0.8/drivers/video/fbcmap.c linux-3.0.8/drivers/video/fbcmap.c
65197 +--- linux-3.0.8/drivers/video/fbcmap.c 2011-07-21 22:17:23.000000000 -0400
65198 ++++ linux-3.0.8/drivers/video/fbcmap.c 2011-08-23 21:47:56.000000000 -0400
65199 +@@ -285,8 +285,7 @@ int fb_set_user_cmap(struct fb_cmap_user
65200 rc = -ENODEV;
65201 goto out;
65202 }
65203 @@ -39369,10 +36431,10 @@ diff -urNp linux-2.6.32.48/drivers/video/fbcmap.c linux-2.6.32.48/drivers/video/
65204 rc = -EINVAL;
65205 goto out1;
65206 }
65207 -diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/fbmem.c
65208 ---- linux-2.6.32.48/drivers/video/fbmem.c 2009-12-02 22:51:21.000000000 -0500
65209 -+++ linux-2.6.32.48/drivers/video/fbmem.c 2011-11-12 12:46:45.000000000 -0500
65210 -@@ -403,7 +403,7 @@ static void fb_do_show_logo(struct fb_in
65211 +diff -urNp linux-3.0.8/drivers/video/fbmem.c linux-3.0.8/drivers/video/fbmem.c
65212 +--- linux-3.0.8/drivers/video/fbmem.c 2011-07-21 22:17:23.000000000 -0400
65213 ++++ linux-3.0.8/drivers/video/fbmem.c 2011-08-23 21:48:14.000000000 -0400
65214 +@@ -428,7 +428,7 @@ static void fb_do_show_logo(struct fb_in
65215 image->dx += image->width + 8;
65216 }
65217 } else if (rotate == FB_ROTATE_UD) {
65218 @@ -39381,7 +36443,7 @@ diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/f
65219 info->fbops->fb_imageblit(info, image);
65220 image->dx -= image->width + 8;
65221 }
65222 -@@ -415,7 +415,7 @@ static void fb_do_show_logo(struct fb_in
65223 +@@ -440,7 +440,7 @@ static void fb_do_show_logo(struct fb_in
65224 image->dy += image->height + 8;
65225 }
65226 } else if (rotate == FB_ROTATE_CCW) {
65227 @@ -39390,7 +36452,7 @@ diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/f
65228 info->fbops->fb_imageblit(info, image);
65229 image->dy -= image->height + 8;
65230 }
65231 -@@ -915,6 +915,8 @@ fb_set_var(struct fb_info *info, struct
65232 +@@ -939,6 +939,8 @@ fb_set_var(struct fb_info *info, struct
65233 int flags = info->flags;
65234 int ret = 0;
65235
65236 @@ -39399,7 +36461,7 @@ diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/f
65237 if (var->activate & FB_ACTIVATE_INV_MODE) {
65238 struct fb_videomode mode1, mode2;
65239
65240 -@@ -1040,6 +1042,8 @@ static long do_fb_ioctl(struct fb_info *
65241 +@@ -1064,6 +1066,8 @@ static long do_fb_ioctl(struct fb_info *
65242 void __user *argp = (void __user *)arg;
65243 long ret = 0;
65244
65245 @@ -39408,7 +36470,7 @@ diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/f
65246 switch (cmd) {
65247 case FBIOGET_VSCREENINFO:
65248 if (!lock_fb_info(info))
65249 -@@ -1119,7 +1123,7 @@ static long do_fb_ioctl(struct fb_info *
65250 +@@ -1143,7 +1147,7 @@ static long do_fb_ioctl(struct fb_info *
65251 return -EFAULT;
65252 if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
65253 return -EINVAL;
65254 @@ -39417,9 +36479,42 @@ diff -urNp linux-2.6.32.48/drivers/video/fbmem.c linux-2.6.32.48/drivers/video/f
65255 return -EINVAL;
65256 if (!registered_fb[con2fb.framebuffer])
65257 request_module("fb%d", con2fb.framebuffer);
65258 -diff -urNp linux-2.6.32.48/drivers/video/i810/i810_accel.c linux-2.6.32.48/drivers/video/i810/i810_accel.c
65259 ---- linux-2.6.32.48/drivers/video/i810/i810_accel.c 2009-12-02 22:51:21.000000000 -0500
65260 -+++ linux-2.6.32.48/drivers/video/i810/i810_accel.c 2011-11-12 12:46:45.000000000 -0500
65261 +diff -urNp linux-3.0.8/drivers/video/geode/gx1fb_core.c linux-3.0.8/drivers/video/geode/gx1fb_core.c
65262 +--- linux-3.0.8/drivers/video/geode/gx1fb_core.c 2011-07-21 22:17:23.000000000 -0400
65263 ++++ linux-3.0.8/drivers/video/geode/gx1fb_core.c 2011-10-11 10:44:33.000000000 -0400
65264 +@@ -29,7 +29,7 @@ static int crt_option = 1;
65265 + static char panel_option[32] = "";
65266 +
65267 + /* Modes relevant to the GX1 (taken from modedb.c) */
65268 +-static const struct fb_videomode __devinitdata gx1_modedb[] = {
65269 ++static const struct fb_videomode __devinitconst gx1_modedb[] = {
65270 + /* 640x480-60 VESA */
65271 + { NULL, 60, 640, 480, 39682, 48, 16, 33, 10, 96, 2,
65272 + 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
65273 +diff -urNp linux-3.0.8/drivers/video/gxt4500.c linux-3.0.8/drivers/video/gxt4500.c
65274 +--- linux-3.0.8/drivers/video/gxt4500.c 2011-07-21 22:17:23.000000000 -0400
65275 ++++ linux-3.0.8/drivers/video/gxt4500.c 2011-10-11 10:44:33.000000000 -0400
65276 +@@ -156,7 +156,7 @@ struct gxt4500_par {
65277 + static char *mode_option;
65278 +
65279 + /* default mode: 1280x1024 @ 60 Hz, 8 bpp */
65280 +-static const struct fb_videomode defaultmode __devinitdata = {
65281 ++static const struct fb_videomode defaultmode __devinitconst = {
65282 + .refresh = 60,
65283 + .xres = 1280,
65284 + .yres = 1024,
65285 +@@ -581,7 +581,7 @@ static int gxt4500_blank(int blank, stru
65286 + return 0;
65287 + }
65288 +
65289 +-static const struct fb_fix_screeninfo gxt4500_fix __devinitdata = {
65290 ++static const struct fb_fix_screeninfo gxt4500_fix __devinitconst = {
65291 + .id = "IBM GXT4500P",
65292 + .type = FB_TYPE_PACKED_PIXELS,
65293 + .visual = FB_VISUAL_PSEUDOCOLOR,
65294 +diff -urNp linux-3.0.8/drivers/video/i810/i810_accel.c linux-3.0.8/drivers/video/i810/i810_accel.c
65295 +--- linux-3.0.8/drivers/video/i810/i810_accel.c 2011-07-21 22:17:23.000000000 -0400
65296 ++++ linux-3.0.8/drivers/video/i810/i810_accel.c 2011-08-23 21:47:56.000000000 -0400
65297 @@ -73,6 +73,7 @@ static inline int wait_for_space(struct
65298 }
65299 }
65300 @@ -39428,9 +36523,33 @@ diff -urNp linux-2.6.32.48/drivers/video/i810/i810_accel.c linux-2.6.32.48/drive
65301 i810_report_error(mmio);
65302 par->dev_flags |= LOCKUP;
65303 info->pixmap.scan_align = 1;
65304 -diff -urNp linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm
65305 ---- linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm 2009-12-02 22:51:21.000000000 -0500
65306 -+++ linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm 2011-11-12 12:46:45.000000000 -0500
65307 +diff -urNp linux-3.0.8/drivers/video/i810/i810_main.c linux-3.0.8/drivers/video/i810/i810_main.c
65308 +--- linux-3.0.8/drivers/video/i810/i810_main.c 2011-07-21 22:17:23.000000000 -0400
65309 ++++ linux-3.0.8/drivers/video/i810/i810_main.c 2011-10-11 10:44:33.000000000 -0400
65310 +@@ -97,7 +97,7 @@ static int i810fb_blank (int blank_
65311 + static void i810fb_release_resource (struct fb_info *info, struct i810fb_par *par);
65312 +
65313 + /* PCI */
65314 +-static const char *i810_pci_list[] __devinitdata = {
65315 ++static const char *i810_pci_list[] __devinitconst = {
65316 + "Intel(R) 810 Framebuffer Device" ,
65317 + "Intel(R) 810-DC100 Framebuffer Device" ,
65318 + "Intel(R) 810E Framebuffer Device" ,
65319 +diff -urNp linux-3.0.8/drivers/video/jz4740_fb.c linux-3.0.8/drivers/video/jz4740_fb.c
65320 +--- linux-3.0.8/drivers/video/jz4740_fb.c 2011-07-21 22:17:23.000000000 -0400
65321 ++++ linux-3.0.8/drivers/video/jz4740_fb.c 2011-10-11 10:44:33.000000000 -0400
65322 +@@ -136,7 +136,7 @@ struct jzfb {
65323 + uint32_t pseudo_palette[16];
65324 + };
65325 +
65326 +-static const struct fb_fix_screeninfo jzfb_fix __devinitdata = {
65327 ++static const struct fb_fix_screeninfo jzfb_fix __devinitconst = {
65328 + .id = "JZ4740 FB",
65329 + .type = FB_TYPE_PACKED_PIXELS,
65330 + .visual = FB_VISUAL_TRUECOLOR,
65331 +diff -urNp linux-3.0.8/drivers/video/logo/logo_linux_clut224.ppm linux-3.0.8/drivers/video/logo/logo_linux_clut224.ppm
65332 +--- linux-3.0.8/drivers/video/logo/logo_linux_clut224.ppm 2011-07-21 22:17:23.000000000 -0400
65333 ++++ linux-3.0.8/drivers/video/logo/logo_linux_clut224.ppm 2011-08-29 23:49:40.000000000 -0400
65334 @@ -1,1604 +1,1123 @@
65335 P3
65336 -# Standard 224-color Linux logo
65337 @@ -42156,42 +39275,104 @@ diff -urNp linux-2.6.32.48/drivers/video/logo/logo_linux_clut224.ppm linux-2.6.3
65338 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
65339 +4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
65340 +4 4 4 4 4 4
65341 -diff -urNp linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c
65342 ---- linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c 2009-12-02 22:51:21.000000000 -0500
65343 -+++ linux-2.6.32.48/drivers/video/nvidia/nv_backlight.c 2011-11-12 12:46:45.000000000 -0500
65344 -@@ -87,7 +87,7 @@ static int nvidia_bl_get_brightness(stru
65345 - return bd->props.brightness;
65346 - }
65347 +diff -urNp linux-3.0.8/drivers/video/udlfb.c linux-3.0.8/drivers/video/udlfb.c
65348 +--- linux-3.0.8/drivers/video/udlfb.c 2011-07-21 22:17:23.000000000 -0400
65349 ++++ linux-3.0.8/drivers/video/udlfb.c 2011-08-23 21:47:56.000000000 -0400
65350 +@@ -586,11 +586,11 @@ int dlfb_handle_damage(struct dlfb_data
65351 + dlfb_urb_completion(urb);
65352
65353 --static struct backlight_ops nvidia_bl_ops = {
65354 -+static const struct backlight_ops nvidia_bl_ops = {
65355 - .get_brightness = nvidia_bl_get_brightness,
65356 - .update_status = nvidia_bl_update_status,
65357 - };
65358 -diff -urNp linux-2.6.32.48/drivers/video/riva/fbdev.c linux-2.6.32.48/drivers/video/riva/fbdev.c
65359 ---- linux-2.6.32.48/drivers/video/riva/fbdev.c 2009-12-02 22:51:21.000000000 -0500
65360 -+++ linux-2.6.32.48/drivers/video/riva/fbdev.c 2011-11-12 12:46:45.000000000 -0500
65361 -@@ -331,7 +331,7 @@ static int riva_bl_get_brightness(struct
65362 - return bd->props.brightness;
65363 - }
65364 + error:
65365 +- atomic_add(bytes_sent, &dev->bytes_sent);
65366 +- atomic_add(bytes_identical, &dev->bytes_identical);
65367 +- atomic_add(width*height*2, &dev->bytes_rendered);
65368 ++ atomic_add_unchecked(bytes_sent, &dev->bytes_sent);
65369 ++ atomic_add_unchecked(bytes_identical, &dev->bytes_identical);
65370 ++ atomic_add_unchecked(width*height*2, &dev->bytes_rendered);
65371 + end_cycles = get_cycles();
65372 +- atomic_add(((unsigned int) ((end_cycles - start_cycles)
65373 ++ atomic_add_unchecked(((unsigned int) ((end_cycles - start_cycles)
65374 + >> 10)), /* Kcycles */
65375 + &dev->cpu_kcycles_used);
65376 +
65377 +@@ -711,11 +711,11 @@ static void dlfb_dpy_deferred_io(struct
65378 + dlfb_urb_completion(urb);
65379
65380 --static struct backlight_ops riva_bl_ops = {
65381 -+static const struct backlight_ops riva_bl_ops = {
65382 - .get_brightness = riva_bl_get_brightness,
65383 - .update_status = riva_bl_update_status,
65384 - };
65385 -diff -urNp linux-2.6.32.48/drivers/video/uvesafb.c linux-2.6.32.48/drivers/video/uvesafb.c
65386 ---- linux-2.6.32.48/drivers/video/uvesafb.c 2009-12-02 22:51:21.000000000 -0500
65387 -+++ linux-2.6.32.48/drivers/video/uvesafb.c 2011-11-12 12:46:45.000000000 -0500
65388 -@@ -18,6 +18,7 @@
65389 - #include <linux/fb.h>
65390 + error:
65391 +- atomic_add(bytes_sent, &dev->bytes_sent);
65392 +- atomic_add(bytes_identical, &dev->bytes_identical);
65393 +- atomic_add(bytes_rendered, &dev->bytes_rendered);
65394 ++ atomic_add_unchecked(bytes_sent, &dev->bytes_sent);
65395 ++ atomic_add_unchecked(bytes_identical, &dev->bytes_identical);
65396 ++ atomic_add_unchecked(bytes_rendered, &dev->bytes_rendered);
65397 + end_cycles = get_cycles();
65398 +- atomic_add(((unsigned int) ((end_cycles - start_cycles)
65399 ++ atomic_add_unchecked(((unsigned int) ((end_cycles - start_cycles)
65400 + >> 10)), /* Kcycles */
65401 + &dev->cpu_kcycles_used);
65402 + }
65403 +@@ -1307,7 +1307,7 @@ static ssize_t metrics_bytes_rendered_sh
65404 + struct fb_info *fb_info = dev_get_drvdata(fbdev);
65405 + struct dlfb_data *dev = fb_info->par;
65406 + return snprintf(buf, PAGE_SIZE, "%u\n",
65407 +- atomic_read(&dev->bytes_rendered));
65408 ++ atomic_read_unchecked(&dev->bytes_rendered));
65409 + }
65410 +
65411 + static ssize_t metrics_bytes_identical_show(struct device *fbdev,
65412 +@@ -1315,7 +1315,7 @@ static ssize_t metrics_bytes_identical_s
65413 + struct fb_info *fb_info = dev_get_drvdata(fbdev);
65414 + struct dlfb_data *dev = fb_info->par;
65415 + return snprintf(buf, PAGE_SIZE, "%u\n",
65416 +- atomic_read(&dev->bytes_identical));
65417 ++ atomic_read_unchecked(&dev->bytes_identical));
65418 + }
65419 +
65420 + static ssize_t metrics_bytes_sent_show(struct device *fbdev,
65421 +@@ -1323,7 +1323,7 @@ static ssize_t metrics_bytes_sent_show(s
65422 + struct fb_info *fb_info = dev_get_drvdata(fbdev);
65423 + struct dlfb_data *dev = fb_info->par;
65424 + return snprintf(buf, PAGE_SIZE, "%u\n",
65425 +- atomic_read(&dev->bytes_sent));
65426 ++ atomic_read_unchecked(&dev->bytes_sent));
65427 + }
65428 +
65429 + static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
65430 +@@ -1331,7 +1331,7 @@ static ssize_t metrics_cpu_kcycles_used_
65431 + struct fb_info *fb_info = dev_get_drvdata(fbdev);
65432 + struct dlfb_data *dev = fb_info->par;
65433 + return snprintf(buf, PAGE_SIZE, "%u\n",
65434 +- atomic_read(&dev->cpu_kcycles_used));
65435 ++ atomic_read_unchecked(&dev->cpu_kcycles_used));
65436 + }
65437 +
65438 + static ssize_t edid_show(
65439 +@@ -1388,10 +1388,10 @@ static ssize_t metrics_reset_store(struc
65440 + struct fb_info *fb_info = dev_get_drvdata(fbdev);
65441 + struct dlfb_data *dev = fb_info->par;
65442 +
65443 +- atomic_set(&dev->bytes_rendered, 0);
65444 +- atomic_set(&dev->bytes_identical, 0);
65445 +- atomic_set(&dev->bytes_sent, 0);
65446 +- atomic_set(&dev->cpu_kcycles_used, 0);
65447 ++ atomic_set_unchecked(&dev->bytes_rendered, 0);
65448 ++ atomic_set_unchecked(&dev->bytes_identical, 0);
65449 ++ atomic_set_unchecked(&dev->bytes_sent, 0);
65450 ++ atomic_set_unchecked(&dev->cpu_kcycles_used, 0);
65451 +
65452 + return count;
65453 + }
65454 +diff -urNp linux-3.0.8/drivers/video/uvesafb.c linux-3.0.8/drivers/video/uvesafb.c
65455 +--- linux-3.0.8/drivers/video/uvesafb.c 2011-07-21 22:17:23.000000000 -0400
65456 ++++ linux-3.0.8/drivers/video/uvesafb.c 2011-08-23 21:47:56.000000000 -0400
65457 +@@ -19,6 +19,7 @@
65458 #include <linux/io.h>
65459 #include <linux/mutex.h>
65460 + #include <linux/slab.h>
65461 +#include <linux/moduleloader.h>
65462 #include <video/edid.h>
65463 #include <video/uvesafb.h>
65464 #ifdef CONFIG_X86
65465 -@@ -120,7 +121,7 @@ static int uvesafb_helper_start(void)
65466 +@@ -121,7 +122,7 @@ static int uvesafb_helper_start(void)
65467 NULL,
65468 };
65469
65470 @@ -42200,7 +39381,7 @@ diff -urNp linux-2.6.32.48/drivers/video/uvesafb.c linux-2.6.32.48/drivers/video
65471 }
65472
65473 /*
65474 -@@ -568,10 +569,32 @@ static int __devinit uvesafb_vbe_getpmi(
65475 +@@ -569,10 +570,32 @@ static int __devinit uvesafb_vbe_getpmi(
65476 if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
65477 par->pmi_setpal = par->ypan = 0;
65478 } else {
65479 @@ -42233,7 +39414,7 @@ diff -urNp linux-2.6.32.48/drivers/video/uvesafb.c linux-2.6.32.48/drivers/video
65480 printk(KERN_INFO "uvesafb: protected mode interface info at "
65481 "%04x:%04x\n",
65482 (u16)task->t.regs.es, (u16)task->t.regs.edi);
65483 -@@ -1799,6 +1822,11 @@ out:
65484 +@@ -1821,6 +1844,11 @@ out:
65485 if (par->vbe_modes)
65486 kfree(par->vbe_modes);
65487
65488 @@ -42245,7 +39426,7 @@ diff -urNp linux-2.6.32.48/drivers/video/uvesafb.c linux-2.6.32.48/drivers/video
65489 framebuffer_release(info);
65490 return err;
65491 }
65492 -@@ -1825,6 +1853,12 @@ static int uvesafb_remove(struct platfor
65493 +@@ -1847,6 +1875,12 @@ static int uvesafb_remove(struct platfor
65494 kfree(par->vbe_state_orig);
65495 if (par->vbe_state_saved)
65496 kfree(par->vbe_state_saved);
65497 @@ -42258,9 +39439,9 @@ diff -urNp linux-2.6.32.48/drivers/video/uvesafb.c linux-2.6.32.48/drivers/video
65498 }
65499
65500 framebuffer_release(info);
65501 -diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/vesafb.c
65502 ---- linux-2.6.32.48/drivers/video/vesafb.c 2009-12-02 22:51:21.000000000 -0500
65503 -+++ linux-2.6.32.48/drivers/video/vesafb.c 2011-11-12 12:46:45.000000000 -0500
65504 +diff -urNp linux-3.0.8/drivers/video/vesafb.c linux-3.0.8/drivers/video/vesafb.c
65505 +--- linux-3.0.8/drivers/video/vesafb.c 2011-07-21 22:17:23.000000000 -0400
65506 ++++ linux-3.0.8/drivers/video/vesafb.c 2011-08-23 21:47:56.000000000 -0400
65507 @@ -9,6 +9,7 @@
65508 */
65509
65510 @@ -42269,7 +39450,7 @@ diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/
65511 #include <linux/kernel.h>
65512 #include <linux/errno.h>
65513 #include <linux/string.h>
65514 -@@ -53,8 +54,8 @@ static int vram_remap __initdata; /*
65515 +@@ -52,8 +53,8 @@ static int vram_remap __initdata; /*
65516 static int vram_total __initdata; /* Set total amount of memory */
65517 static int pmi_setpal __read_mostly = 1; /* pmi for palette changes ??? */
65518 static int ypan __read_mostly; /* 0..nothing, 1..ypan, 2..ywrap */
65519 @@ -42299,7 +39480,7 @@ diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/
65520 if (!request_mem_region(vesafb_fix.smem_start, size_total, "vesafb")) {
65521 printk(KERN_WARNING
65522 "vesafb: cannot reserve video memory at 0x%lx\n",
65523 -@@ -315,9 +313,21 @@ static int __init vesafb_probe(struct pl
65524 +@@ -307,9 +305,21 @@ static int __init vesafb_probe(struct pl
65525 printk(KERN_INFO "vesafb: mode is %dx%dx%d, linelength=%d, pages=%d\n",
65526 vesafb_defined.xres, vesafb_defined.yres, vesafb_defined.bits_per_pixel, vesafb_fix.line_length, screen_info.pages);
65527
65528 @@ -42323,7 +39504,7 @@ diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/
65529 }
65530
65531 if (screen_info.vesapm_seg < 0xc000)
65532 -@@ -325,9 +335,25 @@ static int __init vesafb_probe(struct pl
65533 +@@ -317,9 +327,25 @@ static int __init vesafb_probe(struct pl
65534
65535 if (ypan || pmi_setpal) {
65536 unsigned short *pmi_base;
65537 @@ -42351,7 +39532,7 @@ diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/
65538 printk(KERN_INFO "vesafb: pmi: set display start = %p, set palette = %p\n",pmi_start,pmi_pal);
65539 if (pmi_base[3]) {
65540 printk(KERN_INFO "vesafb: pmi: ports = ");
65541 -@@ -469,6 +495,11 @@ static int __init vesafb_probe(struct pl
65542 +@@ -488,6 +514,11 @@ static int __init vesafb_probe(struct pl
65543 info->node, info->fix.id);
65544 return 0;
65545 err:
65546 @@ -42363,23 +39544,35 @@ diff -urNp linux-2.6.32.48/drivers/video/vesafb.c linux-2.6.32.48/drivers/video/
65547 if (info->screen_base)
65548 iounmap(info->screen_base);
65549 framebuffer_release(info);
65550 -diff -urNp linux-2.6.32.48/drivers/xen/sys-hypervisor.c linux-2.6.32.48/drivers/xen/sys-hypervisor.c
65551 ---- linux-2.6.32.48/drivers/xen/sys-hypervisor.c 2009-12-02 22:51:21.000000000 -0500
65552 -+++ linux-2.6.32.48/drivers/xen/sys-hypervisor.c 2011-11-12 12:46:45.000000000 -0500
65553 -@@ -425,7 +425,7 @@ static ssize_t hyp_sysfs_store(struct ko
65554 - return 0;
65555 - }
65556 +diff -urNp linux-3.0.8/drivers/video/via/via_clock.h linux-3.0.8/drivers/video/via/via_clock.h
65557 +--- linux-3.0.8/drivers/video/via/via_clock.h 2011-07-21 22:17:23.000000000 -0400
65558 ++++ linux-3.0.8/drivers/video/via/via_clock.h 2011-08-23 21:47:56.000000000 -0400
65559 +@@ -56,7 +56,7 @@ struct via_clock {
65560
65561 --static struct sysfs_ops hyp_sysfs_ops = {
65562 -+static const struct sysfs_ops hyp_sysfs_ops = {
65563 - .show = hyp_sysfs_show,
65564 - .store = hyp_sysfs_store,
65565 - };
65566 -diff -urNp linux-2.6.32.48/fs/9p/vfs_inode.c linux-2.6.32.48/fs/9p/vfs_inode.c
65567 ---- linux-2.6.32.48/fs/9p/vfs_inode.c 2009-12-02 22:51:21.000000000 -0500
65568 -+++ linux-2.6.32.48/fs/9p/vfs_inode.c 2011-11-12 12:46:45.000000000 -0500
65569 -@@ -1079,7 +1079,7 @@ static void *v9fs_vfs_follow_link(struct
65570 - static void
65571 + void (*set_engine_pll_state)(u8 state);
65572 + void (*set_engine_pll)(struct via_pll_config config);
65573 +-};
65574 ++} __no_const;
65575 +
65576 +
65577 + static inline u32 get_pll_internal_frequency(u32 ref_freq,
65578 +diff -urNp linux-3.0.8/drivers/virtio/virtio_balloon.c linux-3.0.8/drivers/virtio/virtio_balloon.c
65579 +--- linux-3.0.8/drivers/virtio/virtio_balloon.c 2011-07-21 22:17:23.000000000 -0400
65580 ++++ linux-3.0.8/drivers/virtio/virtio_balloon.c 2011-08-23 21:48:14.000000000 -0400
65581 +@@ -174,6 +174,8 @@ static void update_balloon_stats(struct
65582 + struct sysinfo i;
65583 + int idx = 0;
65584 +
65585 ++ pax_track_stack();
65586 ++
65587 + all_vm_events(events);
65588 + si_meminfo(&i);
65589 +
65590 +diff -urNp linux-3.0.8/fs/9p/vfs_inode.c linux-3.0.8/fs/9p/vfs_inode.c
65591 +--- linux-3.0.8/fs/9p/vfs_inode.c 2011-10-24 08:05:30.000000000 -0400
65592 ++++ linux-3.0.8/fs/9p/vfs_inode.c 2011-10-16 21:55:28.000000000 -0400
65593 +@@ -1264,7 +1264,7 @@ static void *v9fs_vfs_follow_link(struct
65594 + void
65595 v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
65596 {
65597 - char *s = nd_get_link(nd);
65598 @@ -42387,10 +39580,10 @@ diff -urNp linux-2.6.32.48/fs/9p/vfs_inode.c linux-2.6.32.48/fs/9p/vfs_inode.c
65599
65600 P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name,
65601 IS_ERR(s) ? "<error>" : s);
65602 -diff -urNp linux-2.6.32.48/fs/aio.c linux-2.6.32.48/fs/aio.c
65603 ---- linux-2.6.32.48/fs/aio.c 2011-11-12 12:44:30.000000000 -0500
65604 -+++ linux-2.6.32.48/fs/aio.c 2011-11-12 12:46:45.000000000 -0500
65605 -@@ -115,7 +115,7 @@ static int aio_setup_ring(struct kioctx
65606 +diff -urNp linux-3.0.8/fs/aio.c linux-3.0.8/fs/aio.c
65607 +--- linux-3.0.8/fs/aio.c 2011-07-21 22:17:23.000000000 -0400
65608 ++++ linux-3.0.8/fs/aio.c 2011-08-23 21:48:14.000000000 -0400
65609 +@@ -119,7 +119,7 @@ static int aio_setup_ring(struct kioctx
65610 size += sizeof(struct io_event) * nr_events;
65611 nr_pages = (size + PAGE_SIZE-1) >> PAGE_SHIFT;
65612
65613 @@ -42399,7 +39592,7 @@ diff -urNp linux-2.6.32.48/fs/aio.c linux-2.6.32.48/fs/aio.c
65614 return -EINVAL;
65615
65616 nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring)) / sizeof(struct io_event);
65617 -@@ -1089,6 +1089,8 @@ static int read_events(struct kioctx *ct
65618 +@@ -1088,6 +1088,8 @@ static int read_events(struct kioctx *ct
65619 struct aio_timeout to;
65620 int retry = 0;
65621
65622 @@ -42408,16 +39601,26 @@ diff -urNp linux-2.6.32.48/fs/aio.c linux-2.6.32.48/fs/aio.c
65623 /* needed to zero any padding within an entry (there shouldn't be
65624 * any, but C is fun!
65625 */
65626 -@@ -1382,13 +1384,18 @@ static ssize_t aio_fsync(struct kiocb *i
65627 - static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb)
65628 +@@ -1381,22 +1383,27 @@ static ssize_t aio_fsync(struct kiocb *i
65629 + static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat)
65630 {
65631 ssize_t ret;
65632 + struct iovec iovstack;
65633
65634 - ret = rw_copy_check_uvector(type, (struct iovec __user *)kiocb->ki_buf,
65635 - kiocb->ki_nbytes, 1,
65636 -- &kiocb->ki_inline_vec, &kiocb->ki_iovec);
65637 -+ &iovstack, &kiocb->ki_iovec);
65638 + #ifdef CONFIG_COMPAT
65639 + if (compat)
65640 + ret = compat_rw_copy_check_uvector(type,
65641 + (struct compat_iovec __user *)kiocb->ki_buf,
65642 +- kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec,
65643 ++ kiocb->ki_nbytes, 1, &iovstack,
65644 + &kiocb->ki_iovec);
65645 + else
65646 + #endif
65647 + ret = rw_copy_check_uvector(type,
65648 + (struct iovec __user *)kiocb->ki_buf,
65649 +- kiocb->ki_nbytes, 1, &kiocb->ki_inline_vec,
65650 ++ kiocb->ki_nbytes, 1, &iovstack,
65651 + &kiocb->ki_iovec);
65652 if (ret < 0)
65653 goto out;
65654
65655 @@ -42428,45 +39631,20 @@ diff -urNp linux-2.6.32.48/fs/aio.c linux-2.6.32.48/fs/aio.c
65656 kiocb->ki_nr_segs = kiocb->ki_nbytes;
65657 kiocb->ki_cur_seg = 0;
65658 /* ki_nbytes/left now reflect bytes instead of segs */
65659 -diff -urNp linux-2.6.32.48/fs/attr.c linux-2.6.32.48/fs/attr.c
65660 ---- linux-2.6.32.48/fs/attr.c 2009-12-02 22:51:21.000000000 -0500
65661 -+++ linux-2.6.32.48/fs/attr.c 2011-11-12 12:46:45.000000000 -0500
65662 -@@ -83,6 +83,7 @@ int inode_newsize_ok(const struct inode
65663 +diff -urNp linux-3.0.8/fs/attr.c linux-3.0.8/fs/attr.c
65664 +--- linux-3.0.8/fs/attr.c 2011-07-21 22:17:23.000000000 -0400
65665 ++++ linux-3.0.8/fs/attr.c 2011-08-23 21:48:14.000000000 -0400
65666 +@@ -98,6 +98,7 @@ int inode_newsize_ok(const struct inode
65667 unsigned long limit;
65668
65669 - limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
65670 + limit = rlimit(RLIMIT_FSIZE);
65671 + gr_learn_resource(current, RLIMIT_FSIZE, (unsigned long)offset, 1);
65672 if (limit != RLIM_INFINITY && offset > limit)
65673 goto out_sig;
65674 if (offset > inode->i_sb->s_maxbytes)
65675 -diff -urNp linux-2.6.32.48/fs/autofs/root.c linux-2.6.32.48/fs/autofs/root.c
65676 ---- linux-2.6.32.48/fs/autofs/root.c 2009-12-02 22:51:21.000000000 -0500
65677 -+++ linux-2.6.32.48/fs/autofs/root.c 2011-11-12 12:46:45.000000000 -0500
65678 -@@ -299,7 +299,8 @@ static int autofs_root_symlink(struct in
65679 - set_bit(n,sbi->symlink_bitmap);
65680 - sl = &sbi->symlink[n];
65681 - sl->len = strlen(symname);
65682 -- sl->data = kmalloc(slsize = sl->len+1, GFP_KERNEL);
65683 -+ slsize = sl->len+1;
65684 -+ sl->data = kmalloc(slsize, GFP_KERNEL);
65685 - if (!sl->data) {
65686 - clear_bit(n,sbi->symlink_bitmap);
65687 - unlock_kernel();
65688 -diff -urNp linux-2.6.32.48/fs/autofs4/symlink.c linux-2.6.32.48/fs/autofs4/symlink.c
65689 ---- linux-2.6.32.48/fs/autofs4/symlink.c 2009-12-02 22:51:21.000000000 -0500
65690 -+++ linux-2.6.32.48/fs/autofs4/symlink.c 2011-11-12 12:46:45.000000000 -0500
65691 -@@ -15,7 +15,7 @@
65692 - static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd)
65693 - {
65694 - struct autofs_info *ino = autofs4_dentry_ino(dentry);
65695 -- nd_set_link(nd, (char *)ino->u.symlink);
65696 -+ nd_set_link(nd, ino->u.symlink);
65697 - return NULL;
65698 - }
65699 -
65700 -diff -urNp linux-2.6.32.48/fs/autofs4/waitq.c linux-2.6.32.48/fs/autofs4/waitq.c
65701 ---- linux-2.6.32.48/fs/autofs4/waitq.c 2009-12-02 22:51:21.000000000 -0500
65702 -+++ linux-2.6.32.48/fs/autofs4/waitq.c 2011-11-12 12:46:45.000000000 -0500
65703 +diff -urNp linux-3.0.8/fs/autofs4/waitq.c linux-3.0.8/fs/autofs4/waitq.c
65704 +--- linux-3.0.8/fs/autofs4/waitq.c 2011-07-21 22:17:23.000000000 -0400
65705 ++++ linux-3.0.8/fs/autofs4/waitq.c 2011-10-06 04:17:55.000000000 -0400
65706 @@ -60,7 +60,7 @@ static int autofs4_write(struct file *fi
65707 {
65708 unsigned long sigpipe, flags;
65709 @@ -42476,10 +39654,10 @@ diff -urNp linux-2.6.32.48/fs/autofs4/waitq.c linux-2.6.32.48/fs/autofs4/waitq.c
65710 ssize_t wr = 0;
65711
65712 /** WARNING: this is not safe for writing more than PIPE_BUF bytes! **/
65713 -diff -urNp linux-2.6.32.48/fs/befs/linuxvfs.c linux-2.6.32.48/fs/befs/linuxvfs.c
65714 ---- linux-2.6.32.48/fs/befs/linuxvfs.c 2011-11-12 12:44:30.000000000 -0500
65715 -+++ linux-2.6.32.48/fs/befs/linuxvfs.c 2011-11-12 12:46:45.000000000 -0500
65716 -@@ -498,7 +498,7 @@ static void befs_put_link(struct dentry
65717 +diff -urNp linux-3.0.8/fs/befs/linuxvfs.c linux-3.0.8/fs/befs/linuxvfs.c
65718 +--- linux-3.0.8/fs/befs/linuxvfs.c 2011-10-24 08:05:23.000000000 -0400
65719 ++++ linux-3.0.8/fs/befs/linuxvfs.c 2011-08-29 23:26:27.000000000 -0400
65720 +@@ -503,7 +503,7 @@ static void befs_put_link(struct dentry
65721 {
65722 befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
65723 if (befs_ino->i_flags & BEFS_LONG_SYMLINK) {
65724 @@ -42488,9 +39666,9 @@ diff -urNp linux-2.6.32.48/fs/befs/linuxvfs.c linux-2.6.32.48/fs/befs/linuxvfs.c
65725 if (!IS_ERR(link))
65726 kfree(link);
65727 }
65728 -diff -urNp linux-2.6.32.48/fs/binfmt_aout.c linux-2.6.32.48/fs/binfmt_aout.c
65729 ---- linux-2.6.32.48/fs/binfmt_aout.c 2011-11-12 12:44:30.000000000 -0500
65730 -+++ linux-2.6.32.48/fs/binfmt_aout.c 2011-11-12 12:46:45.000000000 -0500
65731 +diff -urNp linux-3.0.8/fs/binfmt_aout.c linux-3.0.8/fs/binfmt_aout.c
65732 +--- linux-3.0.8/fs/binfmt_aout.c 2011-07-21 22:17:23.000000000 -0400
65733 ++++ linux-3.0.8/fs/binfmt_aout.c 2011-08-23 21:48:14.000000000 -0400
65734 @@ -16,6 +16,7 @@
65735 #include <linux/string.h>
65736 #include <linux/fs.h>
65737 @@ -42499,41 +39677,30 @@ diff -urNp linux-2.6.32.48/fs/binfmt_aout.c linux-2.6.32.48/fs/binfmt_aout.c
65738 #include <linux/stat.h>
65739 #include <linux/fcntl.h>
65740 #include <linux/ptrace.h>
65741 -@@ -102,6 +103,8 @@ static int aout_core_dump(long signr, st
65742 +@@ -86,6 +87,8 @@ static int aout_core_dump(struct coredum
65743 #endif
65744 - # define START_STACK(u) (u.start_stack)
65745 + # define START_STACK(u) ((void __user *)u.start_stack)
65746
65747 + memset(&dump, 0, sizeof(dump));
65748 +
65749 fs = get_fs();
65750 set_fs(KERNEL_DS);
65751 has_dumped = 1;
65752 -@@ -113,10 +116,12 @@ static int aout_core_dump(long signr, st
65753 +@@ -97,10 +100,12 @@ static int aout_core_dump(struct coredum
65754
65755 /* If the size of the dump file exceeds the rlimit, then see what would happen
65756 if we wrote the stack, but not the data area. */
65757 + gr_learn_resource(current, RLIMIT_CORE, (dump.u_dsize + dump.u_ssize+1) * PAGE_SIZE, 1);
65758 - if ((dump.u_dsize + dump.u_ssize+1) * PAGE_SIZE > limit)
65759 + if ((dump.u_dsize + dump.u_ssize+1) * PAGE_SIZE > cprm->limit)
65760 dump.u_dsize = 0;
65761
65762 /* Make sure we have enough room to write the stack and data areas. */
65763 + gr_learn_resource(current, RLIMIT_CORE, (dump.u_ssize + 1) * PAGE_SIZE, 1);
65764 - if ((dump.u_ssize + 1) * PAGE_SIZE > limit)
65765 + if ((dump.u_ssize + 1) * PAGE_SIZE > cprm->limit)
65766 dump.u_ssize = 0;
65767
65768 -@@ -146,9 +151,7 @@ static int aout_core_dump(long signr, st
65769 - dump_size = dump.u_ssize << PAGE_SHIFT;
65770 - DUMP_WRITE(dump_start,dump_size);
65771 - }
65772 --/* Finally dump the task struct. Not be used by gdb, but could be useful */
65773 -- set_fs(KERNEL_DS);
65774 -- DUMP_WRITE(current,sizeof(*current));
65775 -+/* Finally, let's not dump the task struct. Not be used by gdb, but could be useful to an attacker */
65776 - end_coredump:
65777 - set_fs(fs);
65778 - return has_dumped;
65779 -@@ -249,6 +252,8 @@ static int load_aout_binary(struct linux
65780 - rlim = current->signal->rlim[RLIMIT_DATA].rlim_cur;
65781 +@@ -234,6 +239,8 @@ static int load_aout_binary(struct linux
65782 + rlim = rlimit(RLIMIT_DATA);
65783 if (rlim >= RLIM_INFINITY)
65784 rlim = ~0;
65785 +
65786 @@ -42541,7 +39708,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_aout.c linux-2.6.32.48/fs/binfmt_aout.c
65787 if (ex.a_data + ex.a_bss > rlim)
65788 return -ENOMEM;
65789
65790 -@@ -277,6 +282,27 @@ static int load_aout_binary(struct linux
65791 +@@ -262,6 +269,27 @@ static int load_aout_binary(struct linux
65792 install_exec_creds(bprm);
65793 current->flags &= ~PF_FORKNOEXEC;
65794
65795 @@ -42569,7 +39736,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_aout.c linux-2.6.32.48/fs/binfmt_aout.c
65796 if (N_MAGIC(ex) == OMAGIC) {
65797 unsigned long text_addr, map_size;
65798 loff_t pos;
65799 -@@ -349,7 +375,7 @@ static int load_aout_binary(struct linux
65800 +@@ -334,7 +362,7 @@ static int load_aout_binary(struct linux
65801
65802 down_write(&current->mm->mmap_sem);
65803 error = do_mmap(bprm->file, N_DATADDR(ex), ex.a_data,
65804 @@ -42578,10 +39745,10 @@ diff -urNp linux-2.6.32.48/fs/binfmt_aout.c linux-2.6.32.48/fs/binfmt_aout.c
65805 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
65806 fd_offset + ex.a_text);
65807 up_write(&current->mm->mmap_sem);
65808 -diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65809 ---- linux-2.6.32.48/fs/binfmt_elf.c 2011-11-12 12:44:30.000000000 -0500
65810 -+++ linux-2.6.32.48/fs/binfmt_elf.c 2011-11-12 12:46:45.000000000 -0500
65811 -@@ -50,6 +50,10 @@ static int elf_core_dump(long signr, str
65812 +diff -urNp linux-3.0.8/fs/binfmt_elf.c linux-3.0.8/fs/binfmt_elf.c
65813 +--- linux-3.0.8/fs/binfmt_elf.c 2011-07-21 22:17:23.000000000 -0400
65814 ++++ linux-3.0.8/fs/binfmt_elf.c 2011-08-23 21:48:14.000000000 -0400
65815 +@@ -51,6 +51,10 @@ static int elf_core_dump(struct coredump
65816 #define elf_core_dump NULL
65817 #endif
65818
65819 @@ -42592,18 +39759,18 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65820 #if ELF_EXEC_PAGESIZE > PAGE_SIZE
65821 #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE
65822 #else
65823 -@@ -69,6 +73,11 @@ static struct linux_binfmt elf_format =
65824 - .load_binary = load_elf_binary,
65825 - .load_shlib = load_elf_library,
65826 - .core_dump = elf_core_dump,
65827 +@@ -70,6 +74,11 @@ static struct linux_binfmt elf_format =
65828 + .load_binary = load_elf_binary,
65829 + .load_shlib = load_elf_library,
65830 + .core_dump = elf_core_dump,
65831 +
65832 +#ifdef CONFIG_PAX_MPROTECT
65833 + .handle_mprotect= elf_handle_mprotect,
65834 +#endif
65835 +
65836 - .min_coredump = ELF_EXEC_PAGESIZE,
65837 - .hasvdso = 1
65838 + .min_coredump = ELF_EXEC_PAGESIZE,
65839 };
65840 +
65841 @@ -77,6 +86,8 @@ static struct linux_binfmt elf_format =
65842
65843 static int set_brk(unsigned long start, unsigned long end)
65844 @@ -42667,7 +39834,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65845 return -EFAULT;
65846 return 0;
65847 }
65848 -@@ -385,10 +405,10 @@ static unsigned long load_elf_interp(str
65849 +@@ -381,10 +401,10 @@ static unsigned long load_elf_interp(str
65850 {
65851 struct elf_phdr *elf_phdata;
65852 struct elf_phdr *eppnt;
65853 @@ -42680,7 +39847,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65854 unsigned long total_size;
65855 int retval, i, size;
65856
65857 -@@ -434,6 +454,11 @@ static unsigned long load_elf_interp(str
65858 +@@ -430,6 +450,11 @@ static unsigned long load_elf_interp(str
65859 goto out_close;
65860 }
65861
65862 @@ -42692,7 +39859,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65863 eppnt = elf_phdata;
65864 for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) {
65865 if (eppnt->p_type == PT_LOAD) {
65866 -@@ -477,8 +502,8 @@ static unsigned long load_elf_interp(str
65867 +@@ -473,8 +498,8 @@ static unsigned long load_elf_interp(str
65868 k = load_addr + eppnt->p_vaddr;
65869 if (BAD_ADDR(k) ||
65870 eppnt->p_filesz > eppnt->p_memsz ||
65871 @@ -42703,7 +39870,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65872 error = -ENOMEM;
65873 goto out_close;
65874 }
65875 -@@ -532,6 +557,194 @@ out:
65876 +@@ -528,6 +553,193 @@ out:
65877 return error;
65878 }
65879
65880 @@ -42724,7 +39891,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65881 +
65882 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_PAX_SEGMEXEC)
65883 + if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) == (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
65884 -+ if (nx_enabled)
65885 ++ if ((__supported_pte_mask & _PAGE_NX))
65886 + pax_flags &= ~MF_PAX_SEGMEXEC;
65887 + else
65888 + pax_flags &= ~MF_PAX_PAGEEXEC;
65889 @@ -42767,7 +39934,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65890 +
65891 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_PAX_SEGMEXEC)
65892 + if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) == (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
65893 -+ if (nx_enabled)
65894 ++ if ((__supported_pte_mask & _PAGE_NX))
65895 + pax_flags &= ~MF_PAX_SEGMEXEC;
65896 + else
65897 + pax_flags &= ~MF_PAX_PAGEEXEC;
65898 @@ -42810,7 +39977,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65899 +
65900 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_PAX_SEGMEXEC)
65901 + if ((pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) == (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
65902 -+ if (nx_enabled)
65903 ++ if ((__supported_pte_mask & _PAGE_NX))
65904 + pax_flags &= ~MF_PAX_SEGMEXEC;
65905 + else
65906 + pax_flags &= ~MF_PAX_PAGEEXEC;
65907 @@ -42880,13 +40047,12 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65908 +#ifdef CONFIG_PAX_SOFTMODE
65909 + if (pax_softmode)
65910 + pax_flags = pax_parse_softmode(&phdr);
65911 -+ else
65912 ++ else
65913 +#endif
65914 + pax_flags = pax_parse_hardmode(&phdr);
65915 + }
65916 +#endif
65917 +
65918 -+
65919 + if (0 > pax_check_flags(&pax_flags))
65920 + return -EINVAL;
65921 +
65922 @@ -42898,7 +40064,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65923 /*
65924 * These are the functions used to load ELF style executables and shared
65925 * libraries. There is no binary dependent code anywhere else.
65926 -@@ -548,6 +761,11 @@ static unsigned long randomize_stack_top
65927 +@@ -544,6 +756,11 @@ static unsigned long randomize_stack_top
65928 {
65929 unsigned int random_variable = 0;
65930
65931 @@ -42910,7 +40076,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65932 if ((current->flags & PF_RANDOMIZE) &&
65933 !(current->personality & ADDR_NO_RANDOMIZE)) {
65934 random_variable = get_random_int() & STACK_RND_MASK;
65935 -@@ -566,7 +784,7 @@ static int load_elf_binary(struct linux_
65936 +@@ -562,7 +779,7 @@ static int load_elf_binary(struct linux_
65937 unsigned long load_addr = 0, load_bias = 0;
65938 int load_addr_set = 0;
65939 char * elf_interpreter = NULL;
65940 @@ -42919,9 +40085,9 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65941 struct elf_phdr *elf_ppnt, *elf_phdata;
65942 unsigned long elf_bss, elf_brk;
65943 int retval, i;
65944 -@@ -576,11 +794,11 @@ static int load_elf_binary(struct linux_
65945 +@@ -572,11 +789,11 @@ static int load_elf_binary(struct linux_
65946 unsigned long start_code, end_code, start_data, end_data;
65947 - unsigned long reloc_func_desc = 0;
65948 + unsigned long reloc_func_desc __maybe_unused = 0;
65949 int executable_stack = EXSTACK_DEFAULT;
65950 - unsigned long def_flags = 0;
65951 struct {
65952 @@ -42932,7 +40098,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65953
65954 loc = kmalloc(sizeof(*loc), GFP_KERNEL);
65955 if (!loc) {
65956 -@@ -718,11 +936,80 @@ static int load_elf_binary(struct linux_
65957 +@@ -714,11 +931,81 @@ static int load_elf_binary(struct linux_
65958
65959 /* OK, This is the point of no return */
65960 current->flags &= ~PF_FORKNOEXEC;
65961 @@ -42972,7 +40138,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65962 +#endif
65963 +
65964 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
65965 -+ if ((current->mm->pax_flags & MF_PAX_PAGEEXEC) && !nx_enabled) {
65966 ++ if ((current->mm->pax_flags & MF_PAX_PAGEEXEC) && !(__supported_pte_mask & _PAGE_NX)) {
65967 + current->mm->context.user_cs_limit = PAGE_SIZE;
65968 + current->mm->def_flags |= VM_PAGEEXEC;
65969 + }
65970 @@ -42983,6 +40149,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65971 + current->mm->context.user_cs_base = SEGMEXEC_TASK_SIZE;
65972 + current->mm->context.user_cs_limit = TASK_SIZE-SEGMEXEC_TASK_SIZE;
65973 + pax_task_size = SEGMEXEC_TASK_SIZE;
65974 ++ current->mm->def_flags |= VM_NOHUGEPAGE;
65975 + }
65976 +#endif
65977 +
65978 @@ -43014,7 +40181,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65979 if (elf_read_implies_exec(loc->elf_ex, executable_stack))
65980 current->personality |= READ_IMPLIES_EXEC;
65981
65982 -@@ -804,6 +1091,20 @@ static int load_elf_binary(struct linux_
65983 +@@ -800,6 +1087,20 @@ static int load_elf_binary(struct linux_
65984 #else
65985 load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
65986 #endif
65987 @@ -43035,7 +40202,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65988 }
65989
65990 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
65991 -@@ -836,9 +1137,9 @@ static int load_elf_binary(struct linux_
65992 +@@ -832,9 +1133,9 @@ static int load_elf_binary(struct linux_
65993 * allowed task size. Note that p_filesz must always be
65994 * <= p_memsz so it is only necessary to check p_memsz.
65995 */
65996 @@ -43048,7 +40215,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
65997 /* set_brk can never work. Avoid overflows. */
65998 send_sig(SIGKILL, current, 0);
65999 retval = -EINVAL;
66000 -@@ -866,6 +1167,11 @@ static int load_elf_binary(struct linux_
66001 +@@ -862,6 +1163,11 @@ static int load_elf_binary(struct linux_
66002 start_data += load_bias;
66003 end_data += load_bias;
66004
66005 @@ -43060,7 +40227,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
66006 /* Calling set_brk effectively mmaps the pages that we need
66007 * for the bss and break sections. We must do this before
66008 * mapping in the interpreter, to make sure it doesn't wind
66009 -@@ -877,9 +1183,11 @@ static int load_elf_binary(struct linux_
66010 +@@ -873,9 +1179,11 @@ static int load_elf_binary(struct linux_
66011 goto out_free_dentry;
66012 }
66013 if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
66014 @@ -43075,19 +40242,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
66015 }
66016
66017 if (elf_interpreter) {
66018 -@@ -1112,8 +1420,10 @@ static int dump_seek(struct file *file,
66019 - unsigned long n = off;
66020 - if (n > PAGE_SIZE)
66021 - n = PAGE_SIZE;
66022 -- if (!dump_write(file, buf, n))
66023 -+ if (!dump_write(file, buf, n)) {
66024 -+ free_page((unsigned long)buf);
66025 - return 0;
66026 -+ }
66027 - off -= n;
66028 - }
66029 - free_page((unsigned long)buf);
66030 -@@ -1125,7 +1435,7 @@ static int dump_seek(struct file *file,
66031 +@@ -1090,7 +1398,7 @@ out:
66032 * Decide what to dump of a segment, part, all or none.
66033 */
66034 static unsigned long vma_dump_size(struct vm_area_struct *vma,
66035 @@ -43096,7 +40251,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
66036 {
66037 #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type))
66038
66039 -@@ -1159,7 +1469,7 @@ static unsigned long vma_dump_size(struc
66040 +@@ -1124,7 +1432,7 @@ static unsigned long vma_dump_size(struc
66041 if (vma->vm_file == NULL)
66042 return 0;
66043
66044 @@ -43105,20 +40260,7 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
66045 goto whole;
66046
66047 /*
66048 -@@ -1255,8 +1565,11 @@ static int writenote(struct memelfnote *
66049 - #undef DUMP_WRITE
66050 -
66051 - #define DUMP_WRITE(addr, nr) \
66052 -+ do { \
66053 -+ gr_learn_resource(current, RLIMIT_CORE, size + (nr), 1); \
66054 - if ((size += (nr)) > limit || !dump_write(file, (addr), (nr))) \
66055 -- goto end_coredump;
66056 -+ goto end_coredump; \
66057 -+ } while (0);
66058 -
66059 - static void fill_elf_header(struct elfhdr *elf, int segs,
66060 - u16 machine, u32 flags, u8 osabi)
66061 -@@ -1385,9 +1698,9 @@ static void fill_auxv_note(struct memelf
66062 +@@ -1346,9 +1654,9 @@ static void fill_auxv_note(struct memelf
66063 {
66064 elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
66065 int i = 0;
66066 @@ -43130,35 +40272,90 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
66067 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
66068 }
66069
66070 -@@ -1973,7 +2286,7 @@ static int elf_core_dump(long signr, str
66071 +@@ -1854,14 +2162,14 @@ static void fill_extnum_info(struct elfh
66072 + }
66073 +
66074 + static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma,
66075 +- unsigned long mm_flags)
66076 ++ struct coredump_params *cprm)
66077 + {
66078 + struct vm_area_struct *vma;
66079 + size_t size = 0;
66080 +
66081 + for (vma = first_vma(current, gate_vma); vma != NULL;
66082 + vma = next_vma(vma, gate_vma))
66083 +- size += vma_dump_size(vma, mm_flags);
66084 ++ size += vma_dump_size(vma, cprm->mm_flags, cprm->signr);
66085 + return size;
66086 + }
66087 +
66088 +@@ -1955,7 +2263,7 @@ static int elf_core_dump(struct coredump
66089 +
66090 + dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
66091 +
66092 +- offset += elf_core_vma_data_size(gate_vma, cprm->mm_flags);
66093 ++ offset += elf_core_vma_data_size(gate_vma, cprm);
66094 + offset += elf_core_extra_data_size();
66095 + e_shoff = offset;
66096 +
66097 +@@ -1969,10 +2277,12 @@ static int elf_core_dump(struct coredump
66098 + offset = dataoff;
66099 +
66100 + size += sizeof(*elf);
66101 ++ gr_learn_resource(current, RLIMIT_CORE, size, 1);
66102 + if (size > cprm->limit || !dump_write(cprm->file, elf, sizeof(*elf)))
66103 + goto end_coredump;
66104 +
66105 + size += sizeof(*phdr4note);
66106 ++ gr_learn_resource(current, RLIMIT_CORE, size, 1);
66107 + if (size > cprm->limit
66108 + || !dump_write(cprm->file, phdr4note, sizeof(*phdr4note)))
66109 + goto end_coredump;
66110 +@@ -1986,7 +2296,7 @@ static int elf_core_dump(struct coredump
66111 phdr.p_offset = offset;
66112 phdr.p_vaddr = vma->vm_start;
66113 phdr.p_paddr = 0;
66114 -- phdr.p_filesz = vma_dump_size(vma, mm_flags);
66115 -+ phdr.p_filesz = vma_dump_size(vma, mm_flags, signr);
66116 +- phdr.p_filesz = vma_dump_size(vma, cprm->mm_flags);
66117 ++ phdr.p_filesz = vma_dump_size(vma, cprm->mm_flags, cprm->signr);
66118 phdr.p_memsz = vma->vm_end - vma->vm_start;
66119 offset += phdr.p_filesz;
66120 phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
66121 -@@ -2006,7 +2319,7 @@ static int elf_core_dump(long signr, str
66122 +@@ -1997,6 +2307,7 @@ static int elf_core_dump(struct coredump
66123 + phdr.p_align = ELF_EXEC_PAGESIZE;
66124 +
66125 + size += sizeof(phdr);
66126 ++ gr_learn_resource(current, RLIMIT_CORE, size, 1);
66127 + if (size > cprm->limit
66128 + || !dump_write(cprm->file, &phdr, sizeof(phdr)))
66129 + goto end_coredump;
66130 +@@ -2021,7 +2332,7 @@ static int elf_core_dump(struct coredump
66131 unsigned long addr;
66132 unsigned long end;
66133
66134 -- end = vma->vm_start + vma_dump_size(vma, mm_flags);
66135 -+ end = vma->vm_start + vma_dump_size(vma, mm_flags, signr);
66136 +- end = vma->vm_start + vma_dump_size(vma, cprm->mm_flags);
66137 ++ end = vma->vm_start + vma_dump_size(vma, cprm->mm_flags, cprm->signr);
66138
66139 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
66140 struct page *page;
66141 -@@ -2015,6 +2328,7 @@ static int elf_core_dump(long signr, str
66142 +@@ -2030,6 +2341,7 @@ static int elf_core_dump(struct coredump
66143 page = get_dump_page(addr);
66144 if (page) {
66145 void *kaddr = kmap(page);
66146 + gr_learn_resource(current, RLIMIT_CORE, size + PAGE_SIZE, 1);
66147 - stop = ((size += PAGE_SIZE) > limit) ||
66148 - !dump_write(file, kaddr, PAGE_SIZE);
66149 - kunmap(page);
66150 -@@ -2042,6 +2356,97 @@ out:
66151 + stop = ((size += PAGE_SIZE) > cprm->limit) ||
66152 + !dump_write(cprm->file, kaddr,
66153 + PAGE_SIZE);
66154 +@@ -2047,6 +2359,7 @@ static int elf_core_dump(struct coredump
66155 +
66156 + if (e_phnum == PN_XNUM) {
66157 + size += sizeof(*shdr4extnum);
66158 ++ gr_learn_resource(current, RLIMIT_CORE, size, 1);
66159 + if (size > cprm->limit
66160 + || !dump_write(cprm->file, shdr4extnum,
66161 + sizeof(*shdr4extnum)))
66162 +@@ -2067,6 +2380,97 @@ out:
66163
66164 - #endif /* USE_ELF_CORE_DUMP */
66165 + #endif /* CONFIG_ELF_CORE */
66166
66167 +#ifdef CONFIG_PAX_MPROTECT
66168 +/* PaX: non-PIC ELF libraries need relocations on their executable segments
66169 @@ -43254,10 +40451,10 @@ diff -urNp linux-2.6.32.48/fs/binfmt_elf.c linux-2.6.32.48/fs/binfmt_elf.c
66170 static int __init init_elf_binfmt(void)
66171 {
66172 return register_binfmt(&elf_format);
66173 -diff -urNp linux-2.6.32.48/fs/binfmt_flat.c linux-2.6.32.48/fs/binfmt_flat.c
66174 ---- linux-2.6.32.48/fs/binfmt_flat.c 2011-11-12 12:44:30.000000000 -0500
66175 -+++ linux-2.6.32.48/fs/binfmt_flat.c 2011-11-12 12:46:45.000000000 -0500
66176 -@@ -564,7 +564,9 @@ static int load_flat_file(struct linux_b
66177 +diff -urNp linux-3.0.8/fs/binfmt_flat.c linux-3.0.8/fs/binfmt_flat.c
66178 +--- linux-3.0.8/fs/binfmt_flat.c 2011-07-21 22:17:23.000000000 -0400
66179 ++++ linux-3.0.8/fs/binfmt_flat.c 2011-08-23 21:47:56.000000000 -0400
66180 +@@ -567,7 +567,9 @@ static int load_flat_file(struct linux_b
66181 realdatastart = (unsigned long) -ENOMEM;
66182 printk("Unable to allocate RAM for process data, errno %d\n",
66183 (int)-realdatastart);
66184 @@ -43267,18 +40464,18 @@ diff -urNp linux-2.6.32.48/fs/binfmt_flat.c linux-2.6.32.48/fs/binfmt_flat.c
66185 ret = realdatastart;
66186 goto err;
66187 }
66188 -@@ -588,8 +590,10 @@ static int load_flat_file(struct linux_b
66189 +@@ -591,8 +593,10 @@ static int load_flat_file(struct linux_b
66190 }
66191 if (IS_ERR_VALUE(result)) {
66192 printk("Unable to read data+bss, errno %d\n", (int)-result);
66193 + down_write(&current->mm->mmap_sem);
66194 do_munmap(current->mm, textpos, text_len);
66195 - do_munmap(current->mm, realdatastart, data_len + extra);
66196 + do_munmap(current->mm, realdatastart, len);
66197 + up_write(&current->mm->mmap_sem);
66198 ret = result;
66199 goto err;
66200 }
66201 -@@ -658,8 +662,10 @@ static int load_flat_file(struct linux_b
66202 +@@ -661,8 +665,10 @@ static int load_flat_file(struct linux_b
66203 }
66204 if (IS_ERR_VALUE(result)) {
66205 printk("Unable to read code+data+bss, errno %d\n",(int)-result);
66206 @@ -43289,19 +40486,10 @@ diff -urNp linux-2.6.32.48/fs/binfmt_flat.c linux-2.6.32.48/fs/binfmt_flat.c
66207 ret = result;
66208 goto err;
66209 }
66210 -diff -urNp linux-2.6.32.48/fs/bio.c linux-2.6.32.48/fs/bio.c
66211 ---- linux-2.6.32.48/fs/bio.c 2011-11-12 12:44:30.000000000 -0500
66212 -+++ linux-2.6.32.48/fs/bio.c 2011-11-12 12:46:45.000000000 -0500
66213 -@@ -78,7 +78,7 @@ static struct kmem_cache *bio_find_or_cr
66214 -
66215 - i = 0;
66216 - while (i < bio_slab_nr) {
66217 -- struct bio_slab *bslab = &bio_slabs[i];
66218 -+ bslab = &bio_slabs[i];
66219 -
66220 - if (!bslab->slab && entry == -1)
66221 - entry = i;
66222 -@@ -1236,7 +1236,7 @@ static void bio_copy_kern_endio(struct b
66223 +diff -urNp linux-3.0.8/fs/bio.c linux-3.0.8/fs/bio.c
66224 +--- linux-3.0.8/fs/bio.c 2011-07-21 22:17:23.000000000 -0400
66225 ++++ linux-3.0.8/fs/bio.c 2011-10-06 04:17:55.000000000 -0400
66226 +@@ -1233,7 +1233,7 @@ static void bio_copy_kern_endio(struct b
66227 const int read = bio_data_dir(bio) == READ;
66228 struct bio_map_data *bmd = bio->bi_private;
66229 int i;
66230 @@ -43310,22 +40498,22 @@ diff -urNp linux-2.6.32.48/fs/bio.c linux-2.6.32.48/fs/bio.c
66231
66232 __bio_for_each_segment(bvec, bio, i, 0) {
66233 char *addr = page_address(bvec->bv_page);
66234 -diff -urNp linux-2.6.32.48/fs/block_dev.c linux-2.6.32.48/fs/block_dev.c
66235 ---- linux-2.6.32.48/fs/block_dev.c 2011-11-12 12:44:30.000000000 -0500
66236 -+++ linux-2.6.32.48/fs/block_dev.c 2011-11-12 12:46:45.000000000 -0500
66237 -@@ -664,7 +664,7 @@ int bd_claim(struct block_device *bdev,
66238 +diff -urNp linux-3.0.8/fs/block_dev.c linux-3.0.8/fs/block_dev.c
66239 +--- linux-3.0.8/fs/block_dev.c 2011-10-24 08:05:30.000000000 -0400
66240 ++++ linux-3.0.8/fs/block_dev.c 2011-10-16 21:55:28.000000000 -0400
66241 +@@ -671,7 +671,7 @@ static bool bd_may_claim(struct block_de
66242 else if (bdev->bd_contains == bdev)
66243 - res = 0; /* is a whole device which isn't held */
66244 -
66245 -- else if (bdev->bd_contains->bd_holder == bd_claim)
66246 -+ else if (bdev->bd_contains->bd_holder == (void *)bd_claim)
66247 - res = 0; /* is a partition of a device that is being partitioned */
66248 - else if (bdev->bd_contains->bd_holder != NULL)
66249 - res = -EBUSY; /* is a partition of a held device */
66250 -diff -urNp linux-2.6.32.48/fs/btrfs/ctree.c linux-2.6.32.48/fs/btrfs/ctree.c
66251 ---- linux-2.6.32.48/fs/btrfs/ctree.c 2011-11-12 12:44:30.000000000 -0500
66252 -+++ linux-2.6.32.48/fs/btrfs/ctree.c 2011-11-12 12:46:45.000000000 -0500
66253 -@@ -461,9 +461,12 @@ static noinline int __btrfs_cow_block(st
66254 + return true; /* is a whole device which isn't held */
66255 +
66256 +- else if (whole->bd_holder == bd_may_claim)
66257 ++ else if (whole->bd_holder == (void *)bd_may_claim)
66258 + return true; /* is a partition of a device that is being partitioned */
66259 + else if (whole->bd_holder != NULL)
66260 + return false; /* is a partition of a held device */
66261 +diff -urNp linux-3.0.8/fs/btrfs/ctree.c linux-3.0.8/fs/btrfs/ctree.c
66262 +--- linux-3.0.8/fs/btrfs/ctree.c 2011-07-21 22:17:23.000000000 -0400
66263 ++++ linux-3.0.8/fs/btrfs/ctree.c 2011-08-23 21:47:56.000000000 -0400
66264 +@@ -454,9 +454,12 @@ static noinline int __btrfs_cow_block(st
66265 free_extent_buffer(buf);
66266 add_root_to_dirty_list(root);
66267 } else {
66268 @@ -43341,163 +40529,10 @@ diff -urNp linux-2.6.32.48/fs/btrfs/ctree.c linux-2.6.32.48/fs/btrfs/ctree.c
66269 parent_start = 0;
66270
66271 WARN_ON(trans->transid != btrfs_header_generation(parent));
66272 -@@ -3645,7 +3648,6 @@ setup_items_for_insert(struct btrfs_tran
66273 -
66274 - ret = 0;
66275 - if (slot == 0) {
66276 -- struct btrfs_disk_key disk_key;
66277 - btrfs_cpu_key_to_disk(&disk_key, cpu_key);
66278 - ret = fixup_low_keys(trans, root, path, &disk_key, 1);
66279 - }
66280 -diff -urNp linux-2.6.32.48/fs/btrfs/disk-io.c linux-2.6.32.48/fs/btrfs/disk-io.c
66281 ---- linux-2.6.32.48/fs/btrfs/disk-io.c 2011-11-12 12:44:30.000000000 -0500
66282 -+++ linux-2.6.32.48/fs/btrfs/disk-io.c 2011-11-12 12:46:45.000000000 -0500
66283 -@@ -39,7 +39,7 @@
66284 - #include "tree-log.h"
66285 - #include "free-space-cache.h"
66286 -
66287 --static struct extent_io_ops btree_extent_io_ops;
66288 -+static const struct extent_io_ops btree_extent_io_ops;
66289 - static void end_workqueue_fn(struct btrfs_work *work);
66290 - static void free_fs_root(struct btrfs_root *root);
66291 -
66292 -@@ -2607,7 +2607,7 @@ out:
66293 - return 0;
66294 - }
66295 -
66296 --static struct extent_io_ops btree_extent_io_ops = {
66297 -+static const struct extent_io_ops btree_extent_io_ops = {
66298 - .write_cache_pages_lock_hook = btree_lock_page_hook,
66299 - .readpage_end_io_hook = btree_readpage_end_io_hook,
66300 - .submit_bio_hook = btree_submit_bio_hook,
66301 -diff -urNp linux-2.6.32.48/fs/btrfs/extent_io.h linux-2.6.32.48/fs/btrfs/extent_io.h
66302 ---- linux-2.6.32.48/fs/btrfs/extent_io.h 2009-12-02 22:51:21.000000000 -0500
66303 -+++ linux-2.6.32.48/fs/btrfs/extent_io.h 2011-11-12 12:46:45.000000000 -0500
66304 -@@ -49,36 +49,36 @@ typedef int (extent_submit_bio_hook_t)(s
66305 - struct bio *bio, int mirror_num,
66306 - unsigned long bio_flags);
66307 - struct extent_io_ops {
66308 -- int (*fill_delalloc)(struct inode *inode, struct page *locked_page,
66309 -+ int (* const fill_delalloc)(struct inode *inode, struct page *locked_page,
66310 - u64 start, u64 end, int *page_started,
66311 - unsigned long *nr_written);
66312 -- int (*writepage_start_hook)(struct page *page, u64 start, u64 end);
66313 -- int (*writepage_io_hook)(struct page *page, u64 start, u64 end);
66314 -+ int (* const writepage_start_hook)(struct page *page, u64 start, u64 end);
66315 -+ int (* const writepage_io_hook)(struct page *page, u64 start, u64 end);
66316 - extent_submit_bio_hook_t *submit_bio_hook;
66317 -- int (*merge_bio_hook)(struct page *page, unsigned long offset,
66318 -+ int (* const merge_bio_hook)(struct page *page, unsigned long offset,
66319 - size_t size, struct bio *bio,
66320 - unsigned long bio_flags);
66321 -- int (*readpage_io_hook)(struct page *page, u64 start, u64 end);
66322 -- int (*readpage_io_failed_hook)(struct bio *bio, struct page *page,
66323 -+ int (* const readpage_io_hook)(struct page *page, u64 start, u64 end);
66324 -+ int (* const readpage_io_failed_hook)(struct bio *bio, struct page *page,
66325 - u64 start, u64 end,
66326 - struct extent_state *state);
66327 -- int (*writepage_io_failed_hook)(struct bio *bio, struct page *page,
66328 -+ int (* const writepage_io_failed_hook)(struct bio *bio, struct page *page,
66329 - u64 start, u64 end,
66330 - struct extent_state *state);
66331 -- int (*readpage_end_io_hook)(struct page *page, u64 start, u64 end,
66332 -+ int (* const readpage_end_io_hook)(struct page *page, u64 start, u64 end,
66333 - struct extent_state *state);
66334 -- int (*writepage_end_io_hook)(struct page *page, u64 start, u64 end,
66335 -+ int (* const writepage_end_io_hook)(struct page *page, u64 start, u64 end,
66336 - struct extent_state *state, int uptodate);
66337 -- int (*set_bit_hook)(struct inode *inode, u64 start, u64 end,
66338 -+ int (* const set_bit_hook)(struct inode *inode, u64 start, u64 end,
66339 - unsigned long old, unsigned long bits);
66340 -- int (*clear_bit_hook)(struct inode *inode, struct extent_state *state,
66341 -+ int (* const clear_bit_hook)(struct inode *inode, struct extent_state *state,
66342 - unsigned long bits);
66343 -- int (*merge_extent_hook)(struct inode *inode,
66344 -+ int (* const merge_extent_hook)(struct inode *inode,
66345 - struct extent_state *new,
66346 - struct extent_state *other);
66347 -- int (*split_extent_hook)(struct inode *inode,
66348 -+ int (* const split_extent_hook)(struct inode *inode,
66349 - struct extent_state *orig, u64 split);
66350 -- int (*write_cache_pages_lock_hook)(struct page *page);
66351 -+ int (* const write_cache_pages_lock_hook)(struct page *page);
66352 - };
66353 -
66354 - struct extent_io_tree {
66355 -@@ -88,7 +88,7 @@ struct extent_io_tree {
66356 - u64 dirty_bytes;
66357 - spinlock_t lock;
66358 - spinlock_t buffer_lock;
66359 -- struct extent_io_ops *ops;
66360 -+ const struct extent_io_ops *ops;
66361 - };
66362 -
66363 - struct extent_state {
66364 -diff -urNp linux-2.6.32.48/fs/btrfs/extent-tree.c linux-2.6.32.48/fs/btrfs/extent-tree.c
66365 ---- linux-2.6.32.48/fs/btrfs/extent-tree.c 2011-11-12 12:44:30.000000000 -0500
66366 -+++ linux-2.6.32.48/fs/btrfs/extent-tree.c 2011-11-12 12:46:45.000000000 -0500
66367 -@@ -7141,6 +7141,10 @@ static noinline int relocate_one_extent(
66368 - u64 group_start = group->key.objectid;
66369 - new_extents = kmalloc(sizeof(*new_extents),
66370 - GFP_NOFS);
66371 -+ if (!new_extents) {
66372 -+ ret = -ENOMEM;
66373 -+ goto out;
66374 -+ }
66375 - nr_extents = 1;
66376 - ret = get_new_locations(reloc_inode,
66377 - extent_key,
66378 -diff -urNp linux-2.6.32.48/fs/btrfs/free-space-cache.c linux-2.6.32.48/fs/btrfs/free-space-cache.c
66379 ---- linux-2.6.32.48/fs/btrfs/free-space-cache.c 2009-12-02 22:51:21.000000000 -0500
66380 -+++ linux-2.6.32.48/fs/btrfs/free-space-cache.c 2011-11-12 12:46:45.000000000 -0500
66381 -@@ -1074,8 +1074,6 @@ u64 btrfs_alloc_from_cluster(struct btrf
66382 -
66383 - while(1) {
66384 - if (entry->bytes < bytes || entry->offset < min_start) {
66385 -- struct rb_node *node;
66386 --
66387 - node = rb_next(&entry->offset_index);
66388 - if (!node)
66389 - break;
66390 -@@ -1226,7 +1224,7 @@ again:
66391 - */
66392 - while (entry->bitmap || found_bitmap ||
66393 - (!entry->bitmap && entry->bytes < min_bytes)) {
66394 -- struct rb_node *node = rb_next(&entry->offset_index);
66395 -+ node = rb_next(&entry->offset_index);
66396 -
66397 - if (entry->bitmap && entry->bytes > bytes + empty_size) {
66398 - ret = btrfs_bitmap_cluster(block_group, entry, cluster,
66399 -diff -urNp linux-2.6.32.48/fs/btrfs/inode.c linux-2.6.32.48/fs/btrfs/inode.c
66400 ---- linux-2.6.32.48/fs/btrfs/inode.c 2011-11-12 12:44:30.000000000 -0500
66401 -+++ linux-2.6.32.48/fs/btrfs/inode.c 2011-11-12 12:46:45.000000000 -0500
66402 -@@ -63,7 +63,7 @@ static const struct inode_operations btr
66403 - static const struct address_space_operations btrfs_aops;
66404 - static const struct address_space_operations btrfs_symlink_aops;
66405 - static const struct file_operations btrfs_dir_file_operations;
66406 --static struct extent_io_ops btrfs_extent_io_ops;
66407 -+static const struct extent_io_ops btrfs_extent_io_ops;
66408 -
66409 - static struct kmem_cache *btrfs_inode_cachep;
66410 - struct kmem_cache *btrfs_trans_handle_cachep;
66411 -@@ -925,6 +925,7 @@ static int cow_file_range_async(struct i
66412 - 1, 0, NULL, GFP_NOFS);
66413 - while (start < end) {
66414 - async_cow = kmalloc(sizeof(*async_cow), GFP_NOFS);
66415 -+ BUG_ON(!async_cow);
66416 - async_cow->inode = inode;
66417 - async_cow->root = root;
66418 - async_cow->locked_page = locked_page;
66419 -@@ -4591,6 +4592,8 @@ static noinline int uncompress_inline(st
66420 - inline_size = btrfs_file_extent_inline_item_len(leaf,
66421 - btrfs_item_nr(leaf, path->slots[0]));
66422 - tmp = kmalloc(inline_size, GFP_NOFS);
66423 -+ if (!tmp)
66424 -+ return -ENOMEM;
66425 - ptr = btrfs_file_extent_inline_start(item);
66426 -
66427 - read_extent_buffer(leaf, tmp, ptr, inline_size);
66428 -@@ -5410,7 +5413,7 @@ fail:
66429 +diff -urNp linux-3.0.8/fs/btrfs/inode.c linux-3.0.8/fs/btrfs/inode.c
66430 +--- linux-3.0.8/fs/btrfs/inode.c 2011-10-24 08:05:30.000000000 -0400
66431 ++++ linux-3.0.8/fs/btrfs/inode.c 2011-10-16 21:55:28.000000000 -0400
66432 +@@ -6896,7 +6896,7 @@ fail:
66433 return -ENOMEM;
66434 }
66435
66436 @@ -43506,7 +40541,7 @@ diff -urNp linux-2.6.32.48/fs/btrfs/inode.c linux-2.6.32.48/fs/btrfs/inode.c
66437 struct dentry *dentry, struct kstat *stat)
66438 {
66439 struct inode *inode = dentry->d_inode;
66440 -@@ -5422,6 +5425,14 @@ static int btrfs_getattr(struct vfsmount
66441 +@@ -6908,6 +6908,14 @@ static int btrfs_getattr(struct vfsmount
66442 return 0;
66443 }
66444
66445 @@ -43518,22 +40553,46 @@ diff -urNp linux-2.6.32.48/fs/btrfs/inode.c linux-2.6.32.48/fs/btrfs/inode.c
66446 +}
66447 +EXPORT_SYMBOL(get_btrfs_dev_from_inode);
66448 +
66449 - static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
66450 - struct inode *new_dir, struct dentry *new_dentry)
66451 - {
66452 -@@ -5972,7 +5983,7 @@ static const struct file_operations btrf
66453 - .fsync = btrfs_sync_file,
66454 - };
66455 + /*
66456 + * If a file is moved, it will inherit the cow and compression flags of the new
66457 + * directory.
66458 +diff -urNp linux-3.0.8/fs/btrfs/ioctl.c linux-3.0.8/fs/btrfs/ioctl.c
66459 +--- linux-3.0.8/fs/btrfs/ioctl.c 2011-07-21 22:17:23.000000000 -0400
66460 ++++ linux-3.0.8/fs/btrfs/ioctl.c 2011-10-06 04:17:55.000000000 -0400
66461 +@@ -2676,9 +2676,12 @@ long btrfs_ioctl_space_info(struct btrfs
66462 + for (i = 0; i < num_types; i++) {
66463 + struct btrfs_space_info *tmp;
66464 +
66465 ++ /* Don't copy in more than we allocated */
66466 + if (!slot_count)
66467 + break;
66468 +
66469 ++ slot_count--;
66470 ++
66471 + info = NULL;
66472 + rcu_read_lock();
66473 + list_for_each_entry_rcu(tmp, &root->fs_info->space_info,
66474 +@@ -2700,15 +2703,12 @@ long btrfs_ioctl_space_info(struct btrfs
66475 + memcpy(dest, &space, sizeof(space));
66476 + dest++;
66477 + space_args.total_spaces++;
66478 +- slot_count--;
66479 + }
66480 +- if (!slot_count)
66481 +- break;
66482 + }
66483 + up_read(&info->groups_sem);
66484 + }
66485 +
66486 +- user_dest = (struct btrfs_ioctl_space_info *)
66487 ++ user_dest = (struct btrfs_ioctl_space_info __user *)
66488 + (arg + sizeof(struct btrfs_ioctl_space_args));
66489
66490 --static struct extent_io_ops btrfs_extent_io_ops = {
66491 -+static const struct extent_io_ops btrfs_extent_io_ops = {
66492 - .fill_delalloc = run_delalloc_range,
66493 - .submit_bio_hook = btrfs_submit_bio_hook,
66494 - .merge_bio_hook = btrfs_merge_bio_hook,
66495 -diff -urNp linux-2.6.32.48/fs/btrfs/relocation.c linux-2.6.32.48/fs/btrfs/relocation.c
66496 ---- linux-2.6.32.48/fs/btrfs/relocation.c 2011-11-12 12:44:30.000000000 -0500
66497 -+++ linux-2.6.32.48/fs/btrfs/relocation.c 2011-11-12 12:46:45.000000000 -0500
66498 -@@ -884,7 +884,7 @@ static int __update_reloc_root(struct bt
66499 + if (copy_to_user(user_dest, dest_orig, alloc_size))
66500 +diff -urNp linux-3.0.8/fs/btrfs/relocation.c linux-3.0.8/fs/btrfs/relocation.c
66501 +--- linux-3.0.8/fs/btrfs/relocation.c 2011-07-21 22:17:23.000000000 -0400
66502 ++++ linux-3.0.8/fs/btrfs/relocation.c 2011-08-23 21:47:56.000000000 -0400
66503 +@@ -1242,7 +1242,7 @@ static int __update_reloc_root(struct bt
66504 }
66505 spin_unlock(&rc->reloc_root_tree.lock);
66506
66507 @@ -43542,38 +40601,9 @@ diff -urNp linux-2.6.32.48/fs/btrfs/relocation.c linux-2.6.32.48/fs/btrfs/reloca
66508
66509 if (!del) {
66510 spin_lock(&rc->reloc_root_tree.lock);
66511 -diff -urNp linux-2.6.32.48/fs/btrfs/sysfs.c linux-2.6.32.48/fs/btrfs/sysfs.c
66512 ---- linux-2.6.32.48/fs/btrfs/sysfs.c 2009-12-02 22:51:21.000000000 -0500
66513 -+++ linux-2.6.32.48/fs/btrfs/sysfs.c 2011-11-12 12:46:45.000000000 -0500
66514 -@@ -164,12 +164,12 @@ static void btrfs_root_release(struct ko
66515 - complete(&root->kobj_unregister);
66516 - }
66517 -
66518 --static struct sysfs_ops btrfs_super_attr_ops = {
66519 -+static const struct sysfs_ops btrfs_super_attr_ops = {
66520 - .show = btrfs_super_attr_show,
66521 - .store = btrfs_super_attr_store,
66522 - };
66523 -
66524 --static struct sysfs_ops btrfs_root_attr_ops = {
66525 -+static const struct sysfs_ops btrfs_root_attr_ops = {
66526 - .show = btrfs_root_attr_show,
66527 - .store = btrfs_root_attr_store,
66528 - };
66529 -diff -urNp linux-2.6.32.48/fs/buffer.c linux-2.6.32.48/fs/buffer.c
66530 ---- linux-2.6.32.48/fs/buffer.c 2009-12-02 22:51:21.000000000 -0500
66531 -+++ linux-2.6.32.48/fs/buffer.c 2011-11-12 12:46:45.000000000 -0500
66532 -@@ -25,6 +25,7 @@
66533 - #include <linux/percpu.h>
66534 - #include <linux/slab.h>
66535 - #include <linux/capability.h>
66536 -+#include <linux/security.h>
66537 - #include <linux/blkdev.h>
66538 - #include <linux/file.h>
66539 - #include <linux/quotaops.h>
66540 -diff -urNp linux-2.6.32.48/fs/cachefiles/bind.c linux-2.6.32.48/fs/cachefiles/bind.c
66541 ---- linux-2.6.32.48/fs/cachefiles/bind.c 2009-12-02 22:51:21.000000000 -0500
66542 -+++ linux-2.6.32.48/fs/cachefiles/bind.c 2011-11-12 12:46:45.000000000 -0500
66543 +diff -urNp linux-3.0.8/fs/cachefiles/bind.c linux-3.0.8/fs/cachefiles/bind.c
66544 +--- linux-3.0.8/fs/cachefiles/bind.c 2011-07-21 22:17:23.000000000 -0400
66545 ++++ linux-3.0.8/fs/cachefiles/bind.c 2011-08-23 21:47:56.000000000 -0400
66546 @@ -39,13 +39,11 @@ int cachefiles_daemon_bind(struct cachef
66547 args);
66548
66549 @@ -43590,10 +40620,19 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/bind.c linux-2.6.32.48/fs/cachefiles/bi
66550 cache->bcull_percent < cache->brun_percent &&
66551 cache->brun_percent < 100);
66552
66553 -diff -urNp linux-2.6.32.48/fs/cachefiles/daemon.c linux-2.6.32.48/fs/cachefiles/daemon.c
66554 ---- linux-2.6.32.48/fs/cachefiles/daemon.c 2009-12-02 22:51:21.000000000 -0500
66555 -+++ linux-2.6.32.48/fs/cachefiles/daemon.c 2011-11-12 12:46:45.000000000 -0500
66556 -@@ -220,7 +220,7 @@ static ssize_t cachefiles_daemon_write(s
66557 +diff -urNp linux-3.0.8/fs/cachefiles/daemon.c linux-3.0.8/fs/cachefiles/daemon.c
66558 +--- linux-3.0.8/fs/cachefiles/daemon.c 2011-07-21 22:17:23.000000000 -0400
66559 ++++ linux-3.0.8/fs/cachefiles/daemon.c 2011-08-23 21:47:56.000000000 -0400
66560 +@@ -196,7 +196,7 @@ static ssize_t cachefiles_daemon_read(st
66561 + if (n > buflen)
66562 + return -EMSGSIZE;
66563 +
66564 +- if (copy_to_user(_buffer, buffer, n) != 0)
66565 ++ if (n > sizeof(buffer) || copy_to_user(_buffer, buffer, n) != 0)
66566 + return -EFAULT;
66567 +
66568 + return n;
66569 +@@ -222,7 +222,7 @@ static ssize_t cachefiles_daemon_write(s
66570 if (test_bit(CACHEFILES_DEAD, &cache->flags))
66571 return -EIO;
66572
66573 @@ -43602,7 +40641,7 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/daemon.c linux-2.6.32.48/fs/cachefiles/
66574 return -EOPNOTSUPP;
66575
66576 /* drag the command string into the kernel so we can parse it */
66577 -@@ -385,7 +385,7 @@ static int cachefiles_daemon_fstop(struc
66578 +@@ -386,7 +386,7 @@ static int cachefiles_daemon_fstop(struc
66579 if (args[0] != '%' || args[1] != '\0')
66580 return -EINVAL;
66581
66582 @@ -43611,7 +40650,7 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/daemon.c linux-2.6.32.48/fs/cachefiles/
66583 return cachefiles_daemon_range_error(cache, args);
66584
66585 cache->fstop_percent = fstop;
66586 -@@ -457,7 +457,7 @@ static int cachefiles_daemon_bstop(struc
66587 +@@ -458,7 +458,7 @@ static int cachefiles_daemon_bstop(struc
66588 if (args[0] != '%' || args[1] != '\0')
66589 return -EINVAL;
66590
66591 @@ -43620,10 +40659,10 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/daemon.c linux-2.6.32.48/fs/cachefiles/
66592 return cachefiles_daemon_range_error(cache, args);
66593
66594 cache->bstop_percent = bstop;
66595 -diff -urNp linux-2.6.32.48/fs/cachefiles/internal.h linux-2.6.32.48/fs/cachefiles/internal.h
66596 ---- linux-2.6.32.48/fs/cachefiles/internal.h 2009-12-02 22:51:21.000000000 -0500
66597 -+++ linux-2.6.32.48/fs/cachefiles/internal.h 2011-11-12 12:46:45.000000000 -0500
66598 -@@ -56,7 +56,7 @@ struct cachefiles_cache {
66599 +diff -urNp linux-3.0.8/fs/cachefiles/internal.h linux-3.0.8/fs/cachefiles/internal.h
66600 +--- linux-3.0.8/fs/cachefiles/internal.h 2011-07-21 22:17:23.000000000 -0400
66601 ++++ linux-3.0.8/fs/cachefiles/internal.h 2011-08-23 21:47:56.000000000 -0400
66602 +@@ -57,7 +57,7 @@ struct cachefiles_cache {
66603 wait_queue_head_t daemon_pollwq; /* poll waitqueue for daemon */
66604 struct rb_root active_nodes; /* active nodes (can't be culled) */
66605 rwlock_t active_lock; /* lock for active_nodes */
66606 @@ -43632,7 +40671,7 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/internal.h linux-2.6.32.48/fs/cachefile
66607 unsigned frun_percent; /* when to stop culling (% files) */
66608 unsigned fcull_percent; /* when to start culling (% files) */
66609 unsigned fstop_percent; /* when to stop allocating (% files) */
66610 -@@ -168,19 +168,19 @@ extern int cachefiles_check_in_use(struc
66611 +@@ -169,19 +169,19 @@ extern int cachefiles_check_in_use(struc
66612 * proc.c
66613 */
66614 #ifdef CONFIG_CACHEFILES_HISTOGRAM
66615 @@ -43657,10 +40696,10 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/internal.h linux-2.6.32.48/fs/cachefile
66616 }
66617
66618 #else
66619 -diff -urNp linux-2.6.32.48/fs/cachefiles/namei.c linux-2.6.32.48/fs/cachefiles/namei.c
66620 ---- linux-2.6.32.48/fs/cachefiles/namei.c 2009-12-02 22:51:21.000000000 -0500
66621 -+++ linux-2.6.32.48/fs/cachefiles/namei.c 2011-11-12 12:46:45.000000000 -0500
66622 -@@ -250,7 +250,7 @@ try_again:
66623 +diff -urNp linux-3.0.8/fs/cachefiles/namei.c linux-3.0.8/fs/cachefiles/namei.c
66624 +--- linux-3.0.8/fs/cachefiles/namei.c 2011-07-21 22:17:23.000000000 -0400
66625 ++++ linux-3.0.8/fs/cachefiles/namei.c 2011-08-23 21:47:56.000000000 -0400
66626 +@@ -318,7 +318,7 @@ try_again:
66627 /* first step is to make up a grave dentry in the graveyard */
66628 sprintf(nbuffer, "%08x%08x",
66629 (uint32_t) get_seconds(),
66630 @@ -43669,9 +40708,9 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/namei.c linux-2.6.32.48/fs/cachefiles/n
66631
66632 /* do the multiway lock magic */
66633 trap = lock_rename(cache->graveyard, dir);
66634 -diff -urNp linux-2.6.32.48/fs/cachefiles/proc.c linux-2.6.32.48/fs/cachefiles/proc.c
66635 ---- linux-2.6.32.48/fs/cachefiles/proc.c 2009-12-02 22:51:21.000000000 -0500
66636 -+++ linux-2.6.32.48/fs/cachefiles/proc.c 2011-11-12 12:46:45.000000000 -0500
66637 +diff -urNp linux-3.0.8/fs/cachefiles/proc.c linux-3.0.8/fs/cachefiles/proc.c
66638 +--- linux-3.0.8/fs/cachefiles/proc.c 2011-07-21 22:17:23.000000000 -0400
66639 ++++ linux-3.0.8/fs/cachefiles/proc.c 2011-08-23 21:47:56.000000000 -0400
66640 @@ -14,9 +14,9 @@
66641 #include <linux/seq_file.h>
66642 #include "internal.h"
66643 @@ -43698,10 +40737,10 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/proc.c linux-2.6.32.48/fs/cachefiles/pr
66644 if (x == 0 && y == 0 && z == 0)
66645 return 0;
66646
66647 -diff -urNp linux-2.6.32.48/fs/cachefiles/rdwr.c linux-2.6.32.48/fs/cachefiles/rdwr.c
66648 ---- linux-2.6.32.48/fs/cachefiles/rdwr.c 2009-12-02 22:51:21.000000000 -0500
66649 -+++ linux-2.6.32.48/fs/cachefiles/rdwr.c 2011-11-12 12:46:45.000000000 -0500
66650 -@@ -946,7 +946,7 @@ int cachefiles_write_page(struct fscache
66651 +diff -urNp linux-3.0.8/fs/cachefiles/rdwr.c linux-3.0.8/fs/cachefiles/rdwr.c
66652 +--- linux-3.0.8/fs/cachefiles/rdwr.c 2011-07-21 22:17:23.000000000 -0400
66653 ++++ linux-3.0.8/fs/cachefiles/rdwr.c 2011-10-06 04:17:55.000000000 -0400
66654 +@@ -945,7 +945,7 @@ int cachefiles_write_page(struct fscache
66655 old_fs = get_fs();
66656 set_fs(KERNEL_DS);
66657 ret = file->f_op->write(
66658 @@ -43710,12 +40749,35 @@ diff -urNp linux-2.6.32.48/fs/cachefiles/rdwr.c linux-2.6.32.48/fs/cachefiles/rd
66659 set_fs(old_fs);
66660 kunmap(page);
66661 if (ret != len)
66662 -diff -urNp linux-2.6.32.48/fs/cifs/cifs_debug.c linux-2.6.32.48/fs/cifs/cifs_debug.c
66663 ---- linux-2.6.32.48/fs/cifs/cifs_debug.c 2009-12-02 22:51:21.000000000 -0500
66664 -+++ linux-2.6.32.48/fs/cifs/cifs_debug.c 2011-11-12 12:46:45.000000000 -0500
66665 -@@ -256,25 +256,25 @@ static ssize_t cifs_stats_proc_write(str
66666 +diff -urNp linux-3.0.8/fs/ceph/dir.c linux-3.0.8/fs/ceph/dir.c
66667 +--- linux-3.0.8/fs/ceph/dir.c 2011-07-21 22:17:23.000000000 -0400
66668 ++++ linux-3.0.8/fs/ceph/dir.c 2011-08-23 21:47:56.000000000 -0400
66669 +@@ -226,7 +226,7 @@ static int ceph_readdir(struct file *fil
66670 + struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
66671 + struct ceph_mds_client *mdsc = fsc->mdsc;
66672 + unsigned frag = fpos_frag(filp->f_pos);
66673 +- int off = fpos_off(filp->f_pos);
66674 ++ unsigned int off = fpos_off(filp->f_pos);
66675 + int err;
66676 + u32 ftype;
66677 + struct ceph_mds_reply_info_parsed *rinfo;
66678 +diff -urNp linux-3.0.8/fs/cifs/cifs_debug.c linux-3.0.8/fs/cifs/cifs_debug.c
66679 +--- linux-3.0.8/fs/cifs/cifs_debug.c 2011-07-21 22:17:23.000000000 -0400
66680 ++++ linux-3.0.8/fs/cifs/cifs_debug.c 2011-08-25 17:18:05.000000000 -0400
66681 +@@ -265,8 +265,8 @@ static ssize_t cifs_stats_proc_write(str
66682 +
66683 + if (c == '1' || c == 'y' || c == 'Y' || c == '0') {
66684 + #ifdef CONFIG_CIFS_STATS2
66685 +- atomic_set(&totBufAllocCount, 0);
66686 +- atomic_set(&totSmBufAllocCount, 0);
66687 ++ atomic_set_unchecked(&totBufAllocCount, 0);
66688 ++ atomic_set_unchecked(&totSmBufAllocCount, 0);
66689 + #endif /* CONFIG_CIFS_STATS2 */
66690 + spin_lock(&cifs_tcp_ses_lock);
66691 + list_for_each(tmp1, &cifs_tcp_ses_list) {
66692 +@@ -279,25 +279,25 @@ static ssize_t cifs_stats_proc_write(str
66693 tcon = list_entry(tmp3,
66694 - struct cifsTconInfo,
66695 + struct cifs_tcon,
66696 tcon_list);
66697 - atomic_set(&tcon->num_smbs_sent, 0);
66698 - atomic_set(&tcon->num_writes, 0);
66699 @@ -43758,7 +40820,18 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifs_debug.c linux-2.6.32.48/fs/cifs/cifs_deb
66700 }
66701 }
66702 }
66703 -@@ -334,41 +334,41 @@ static int cifs_stats_proc_show(struct s
66704 +@@ -327,8 +327,8 @@ static int cifs_stats_proc_show(struct s
66705 + smBufAllocCount.counter, cifs_min_small);
66706 + #ifdef CONFIG_CIFS_STATS2
66707 + seq_printf(m, "Total Large %d Small %d Allocations\n",
66708 +- atomic_read(&totBufAllocCount),
66709 +- atomic_read(&totSmBufAllocCount));
66710 ++ atomic_read_unchecked(&totBufAllocCount),
66711 ++ atomic_read_unchecked(&totSmBufAllocCount));
66712 + #endif /* CONFIG_CIFS_STATS2 */
66713 +
66714 + seq_printf(m, "Operations (MIDs): %d\n", atomic_read(&midCount));
66715 +@@ -357,41 +357,41 @@ static int cifs_stats_proc_show(struct s
66716 if (tcon->need_reconnect)
66717 seq_puts(m, "\tDISCONNECTED ");
66718 seq_printf(m, "\nSMBs: %d Oplock Breaks: %d",
66719 @@ -43820,10 +40893,10 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifs_debug.c linux-2.6.32.48/fs/cifs/cifs_deb
66720 }
66721 }
66722 }
66723 -diff -urNp linux-2.6.32.48/fs/cifs/cifsfs.c linux-2.6.32.48/fs/cifs/cifsfs.c
66724 ---- linux-2.6.32.48/fs/cifs/cifsfs.c 2011-11-12 12:44:30.000000000 -0500
66725 -+++ linux-2.6.32.48/fs/cifs/cifsfs.c 2011-11-12 12:46:45.000000000 -0500
66726 -@@ -869,7 +869,7 @@ cifs_init_request_bufs(void)
66727 +diff -urNp linux-3.0.8/fs/cifs/cifsfs.c linux-3.0.8/fs/cifs/cifsfs.c
66728 +--- linux-3.0.8/fs/cifs/cifsfs.c 2011-10-25 09:10:33.000000000 -0400
66729 ++++ linux-3.0.8/fs/cifs/cifsfs.c 2011-10-25 09:10:41.000000000 -0400
66730 +@@ -996,7 +996,7 @@ cifs_init_request_bufs(void)
66731 cifs_req_cachep = kmem_cache_create("cifs_request",
66732 CIFSMaxBufSize +
66733 MAX_CIFS_HDR_SIZE, 0,
66734 @@ -43832,7 +40905,7 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifsfs.c linux-2.6.32.48/fs/cifs/cifsfs.c
66735 if (cifs_req_cachep == NULL)
66736 return -ENOMEM;
66737
66738 -@@ -896,7 +896,7 @@ cifs_init_request_bufs(void)
66739 +@@ -1023,7 +1023,7 @@ cifs_init_request_bufs(void)
66740 efficient to alloc 1 per page off the slab compared to 17K (5page)
66741 alloc of large cifs buffers even when page debugging is on */
66742 cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
66743 @@ -43841,7 +40914,7 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifsfs.c linux-2.6.32.48/fs/cifs/cifsfs.c
66744 NULL);
66745 if (cifs_sm_req_cachep == NULL) {
66746 mempool_destroy(cifs_req_poolp);
66747 -@@ -991,8 +991,8 @@ init_cifs(void)
66748 +@@ -1108,8 +1108,8 @@ init_cifs(void)
66749 atomic_set(&bufAllocCount, 0);
66750 atomic_set(&smBufAllocCount, 0);
66751 #ifdef CONFIG_CIFS_STATS2
66752 @@ -43852,10 +40925,10 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifsfs.c linux-2.6.32.48/fs/cifs/cifsfs.c
66753 #endif /* CONFIG_CIFS_STATS2 */
66754
66755 atomic_set(&midCount, 0);
66756 -diff -urNp linux-2.6.32.48/fs/cifs/cifsglob.h linux-2.6.32.48/fs/cifs/cifsglob.h
66757 ---- linux-2.6.32.48/fs/cifs/cifsglob.h 2011-11-12 12:44:30.000000000 -0500
66758 -+++ linux-2.6.32.48/fs/cifs/cifsglob.h 2011-11-12 12:46:45.000000000 -0500
66759 -@@ -252,28 +252,28 @@ struct cifsTconInfo {
66760 +diff -urNp linux-3.0.8/fs/cifs/cifsglob.h linux-3.0.8/fs/cifs/cifsglob.h
66761 +--- linux-3.0.8/fs/cifs/cifsglob.h 2011-07-21 22:17:23.000000000 -0400
66762 ++++ linux-3.0.8/fs/cifs/cifsglob.h 2011-08-25 17:18:05.000000000 -0400
66763 +@@ -381,28 +381,28 @@ struct cifs_tcon {
66764 __u16 Flags; /* optional support bits */
66765 enum statusEnum tidStatus;
66766 #ifdef CONFIG_CIFS_STATS
66767 @@ -43906,16 +40979,16 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifsglob.h linux-2.6.32.48/fs/cifs/cifsglob.h
66768 #ifdef CONFIG_CIFS_STATS2
66769 unsigned long long time_writes;
66770 unsigned long long time_reads;
66771 -@@ -414,7 +414,7 @@ static inline char CIFS_DIR_SEP(const st
66772 +@@ -613,7 +613,7 @@ convert_delimiter(char *path, char delim
66773 }
66774
66775 #ifdef CONFIG_CIFS_STATS
66776 -#define cifs_stats_inc atomic_inc
66777 +#define cifs_stats_inc atomic_inc_unchecked
66778
66779 - static inline void cifs_stats_bytes_written(struct cifsTconInfo *tcon,
66780 + static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
66781 unsigned int bytes)
66782 -@@ -701,8 +701,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnect
66783 +@@ -911,8 +911,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnect
66784 /* Various Debug counters */
66785 GLOBAL_EXTERN atomic_t bufAllocCount; /* current number allocated */
66786 #ifdef CONFIG_CIFS_STATS2
66787 @@ -43926,10 +40999,10 @@ diff -urNp linux-2.6.32.48/fs/cifs/cifsglob.h linux-2.6.32.48/fs/cifs/cifsglob.h
66788 #endif
66789 GLOBAL_EXTERN atomic_t smBufAllocCount;
66790 GLOBAL_EXTERN atomic_t midCount;
66791 -diff -urNp linux-2.6.32.48/fs/cifs/link.c linux-2.6.32.48/fs/cifs/link.c
66792 ---- linux-2.6.32.48/fs/cifs/link.c 2009-12-02 22:51:21.000000000 -0500
66793 -+++ linux-2.6.32.48/fs/cifs/link.c 2011-11-12 12:46:47.000000000 -0500
66794 -@@ -215,7 +215,7 @@ cifs_symlink(struct inode *inode, struct
66795 +diff -urNp linux-3.0.8/fs/cifs/link.c linux-3.0.8/fs/cifs/link.c
66796 +--- linux-3.0.8/fs/cifs/link.c 2011-07-21 22:17:23.000000000 -0400
66797 ++++ linux-3.0.8/fs/cifs/link.c 2011-08-23 21:47:56.000000000 -0400
66798 +@@ -587,7 +587,7 @@ symlink_exit:
66799
66800 void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie)
66801 {
66802 @@ -43938,10 +41011,10 @@ diff -urNp linux-2.6.32.48/fs/cifs/link.c linux-2.6.32.48/fs/cifs/link.c
66803 if (!IS_ERR(p))
66804 kfree(p);
66805 }
66806 -diff -urNp linux-2.6.32.48/fs/cifs/misc.c linux-2.6.32.48/fs/cifs/misc.c
66807 ---- linux-2.6.32.48/fs/cifs/misc.c 2009-12-02 22:51:21.000000000 -0500
66808 -+++ linux-2.6.32.48/fs/cifs/misc.c 2011-11-12 12:46:47.000000000 -0500
66809 -@@ -155,7 +155,7 @@ cifs_buf_get(void)
66810 +diff -urNp linux-3.0.8/fs/cifs/misc.c linux-3.0.8/fs/cifs/misc.c
66811 +--- linux-3.0.8/fs/cifs/misc.c 2011-07-21 22:17:23.000000000 -0400
66812 ++++ linux-3.0.8/fs/cifs/misc.c 2011-08-25 17:18:05.000000000 -0400
66813 +@@ -156,7 +156,7 @@ cifs_buf_get(void)
66814 memset(ret_buf, 0, sizeof(struct smb_hdr) + 3);
66815 atomic_inc(&bufAllocCount);
66816 #ifdef CONFIG_CIFS_STATS2
66817 @@ -43950,7 +41023,7 @@ diff -urNp linux-2.6.32.48/fs/cifs/misc.c linux-2.6.32.48/fs/cifs/misc.c
66818 #endif /* CONFIG_CIFS_STATS2 */
66819 }
66820
66821 -@@ -190,7 +190,7 @@ cifs_small_buf_get(void)
66822 +@@ -191,7 +191,7 @@ cifs_small_buf_get(void)
66823 /* memset(ret_buf, 0, sizeof(struct smb_hdr) + 27);*/
66824 atomic_inc(&smBufAllocCount);
66825 #ifdef CONFIG_CIFS_STATS2
66826 @@ -43959,32 +41032,34 @@ diff -urNp linux-2.6.32.48/fs/cifs/misc.c linux-2.6.32.48/fs/cifs/misc.c
66827 #endif /* CONFIG_CIFS_STATS2 */
66828
66829 }
66830 -diff -urNp linux-2.6.32.48/fs/coda/cache.c linux-2.6.32.48/fs/coda/cache.c
66831 ---- linux-2.6.32.48/fs/coda/cache.c 2009-12-02 22:51:21.000000000 -0500
66832 -+++ linux-2.6.32.48/fs/coda/cache.c 2011-11-12 12:46:47.000000000 -0500
66833 -@@ -24,14 +24,14 @@
66834 - #include <linux/coda_fs_i.h>
66835 - #include <linux/coda_cache.h>
66836 +diff -urNp linux-3.0.8/fs/coda/cache.c linux-3.0.8/fs/coda/cache.c
66837 +--- linux-3.0.8/fs/coda/cache.c 2011-07-21 22:17:23.000000000 -0400
66838 ++++ linux-3.0.8/fs/coda/cache.c 2011-08-23 21:47:56.000000000 -0400
66839 +@@ -24,7 +24,7 @@
66840 + #include "coda_linux.h"
66841 + #include "coda_cache.h"
66842
66843 -static atomic_t permission_epoch = ATOMIC_INIT(0);
66844 +static atomic_unchecked_t permission_epoch = ATOMIC_INIT(0);
66845
66846 /* replace or extend an acl cache hit */
66847 void coda_cache_enter(struct inode *inode, int mask)
66848 - {
66849 +@@ -32,7 +32,7 @@ void coda_cache_enter(struct inode *inod
66850 struct coda_inode_info *cii = ITOC(inode);
66851
66852 + spin_lock(&cii->c_lock);
66853 - cii->c_cached_epoch = atomic_read(&permission_epoch);
66854 + cii->c_cached_epoch = atomic_read_unchecked(&permission_epoch);
66855 if (cii->c_uid != current_fsuid()) {
66856 cii->c_uid = current_fsuid();
66857 cii->c_cached_perm = mask;
66858 -@@ -43,13 +43,13 @@ void coda_cache_enter(struct inode *inod
66859 - void coda_cache_clear_inode(struct inode *inode)
66860 +@@ -46,14 +46,14 @@ void coda_cache_clear_inode(struct inode
66861 {
66862 struct coda_inode_info *cii = ITOC(inode);
66863 + spin_lock(&cii->c_lock);
66864 - cii->c_cached_epoch = atomic_read(&permission_epoch) - 1;
66865 + cii->c_cached_epoch = atomic_read_unchecked(&permission_epoch) - 1;
66866 + spin_unlock(&cii->c_lock);
66867 }
66868
66869 /* remove all acl caches */
66870 @@ -43995,35 +41070,36 @@ diff -urNp linux-2.6.32.48/fs/coda/cache.c linux-2.6.32.48/fs/coda/cache.c
66871 }
66872
66873
66874 -@@ -61,7 +61,7 @@ int coda_cache_check(struct inode *inode
66875 -
66876 - hit = (mask & cii->c_cached_perm) == mask &&
66877 - cii->c_uid == current_fsuid() &&
66878 -- cii->c_cached_epoch == atomic_read(&permission_epoch);
66879 -+ cii->c_cached_epoch == atomic_read_unchecked(&permission_epoch);
66880 -
66881 - return hit;
66882 - }
66883 -diff -urNp linux-2.6.32.48/fs/compat_binfmt_elf.c linux-2.6.32.48/fs/compat_binfmt_elf.c
66884 ---- linux-2.6.32.48/fs/compat_binfmt_elf.c 2009-12-02 22:51:21.000000000 -0500
66885 -+++ linux-2.6.32.48/fs/compat_binfmt_elf.c 2011-11-12 12:46:47.000000000 -0500
66886 -@@ -29,10 +29,12 @@
66887 - #undef elfhdr
66888 +@@ -66,7 +66,7 @@ int coda_cache_check(struct inode *inode
66889 + spin_lock(&cii->c_lock);
66890 + hit = (mask & cii->c_cached_perm) == mask &&
66891 + cii->c_uid == current_fsuid() &&
66892 +- cii->c_cached_epoch == atomic_read(&permission_epoch);
66893 ++ cii->c_cached_epoch == atomic_read_unchecked(&permission_epoch);
66894 + spin_unlock(&cii->c_lock);
66895 +
66896 + return hit;
66897 +diff -urNp linux-3.0.8/fs/compat_binfmt_elf.c linux-3.0.8/fs/compat_binfmt_elf.c
66898 +--- linux-3.0.8/fs/compat_binfmt_elf.c 2011-07-21 22:17:23.000000000 -0400
66899 ++++ linux-3.0.8/fs/compat_binfmt_elf.c 2011-08-23 21:47:56.000000000 -0400
66900 +@@ -30,11 +30,13 @@
66901 #undef elf_phdr
66902 + #undef elf_shdr
66903 #undef elf_note
66904 +#undef elf_dyn
66905 #undef elf_addr_t
66906 #define elfhdr elf32_hdr
66907 #define elf_phdr elf32_phdr
66908 + #define elf_shdr elf32_shdr
66909 #define elf_note elf32_note
66910 +#define elf_dyn Elf32_Dyn
66911 #define elf_addr_t Elf32_Addr
66912
66913 /*
66914 -diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66915 ---- linux-2.6.32.48/fs/compat.c 2011-11-12 12:44:30.000000000 -0500
66916 -+++ linux-2.6.32.48/fs/compat.c 2011-11-12 12:46:47.000000000 -0500
66917 -@@ -133,8 +133,8 @@ asmlinkage long compat_sys_utimes(char _
66918 +diff -urNp linux-3.0.8/fs/compat.c linux-3.0.8/fs/compat.c
66919 +--- linux-3.0.8/fs/compat.c 2011-07-21 22:17:23.000000000 -0400
66920 ++++ linux-3.0.8/fs/compat.c 2011-10-06 04:17:55.000000000 -0400
66921 +@@ -133,8 +133,8 @@ asmlinkage long compat_sys_utimes(const
66922 static int cp_compat_stat(struct kstat *stat, struct compat_stat __user *ubuf)
66923 {
66924 compat_ino_t ino = stat->ino;
66925 @@ -44034,7 +41110,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66926 int err;
66927
66928 SET_UID(uid, stat->uid);
66929 -@@ -533,7 +533,7 @@ compat_sys_io_setup(unsigned nr_reqs, u3
66930 +@@ -508,7 +508,7 @@ compat_sys_io_setup(unsigned nr_reqs, u3
66931
66932 set_fs(KERNEL_DS);
66933 /* The __user pointer cast is valid because of the set_fs() */
66934 @@ -44043,7 +41119,16 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66935 set_fs(oldfs);
66936 /* truncating is ok because it's a user address */
66937 if (!ret)
66938 -@@ -830,6 +830,7 @@ struct compat_old_linux_dirent {
66939 +@@ -566,7 +566,7 @@ ssize_t compat_rw_copy_check_uvector(int
66940 + goto out;
66941 +
66942 + ret = -EINVAL;
66943 +- if (nr_segs > UIO_MAXIOV || nr_segs < 0)
66944 ++ if (nr_segs > UIO_MAXIOV)
66945 + goto out;
66946 + if (nr_segs > fast_segs) {
66947 + ret = -ENOMEM;
66948 +@@ -848,6 +848,7 @@ struct compat_old_linux_dirent {
66949
66950 struct compat_readdir_callback {
66951 struct compat_old_linux_dirent __user *dirent;
66952 @@ -44051,7 +41136,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66953 int result;
66954 };
66955
66956 -@@ -847,6 +848,10 @@ static int compat_fillonedir(void *__buf
66957 +@@ -865,6 +866,10 @@ static int compat_fillonedir(void *__buf
66958 buf->result = -EOVERFLOW;
66959 return -EOVERFLOW;
66960 }
66961 @@ -44062,7 +41147,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66962 buf->result++;
66963 dirent = buf->dirent;
66964 if (!access_ok(VERIFY_WRITE, dirent,
66965 -@@ -879,6 +884,7 @@ asmlinkage long compat_sys_old_readdir(u
66966 +@@ -897,6 +902,7 @@ asmlinkage long compat_sys_old_readdir(u
66967
66968 buf.result = 0;
66969 buf.dirent = dirent;
66970 @@ -44070,7 +41155,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66971
66972 error = vfs_readdir(file, compat_fillonedir, &buf);
66973 if (buf.result)
66974 -@@ -899,6 +905,7 @@ struct compat_linux_dirent {
66975 +@@ -917,6 +923,7 @@ struct compat_linux_dirent {
66976 struct compat_getdents_callback {
66977 struct compat_linux_dirent __user *current_dir;
66978 struct compat_linux_dirent __user *previous;
66979 @@ -44078,7 +41163,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66980 int count;
66981 int error;
66982 };
66983 -@@ -919,6 +926,10 @@ static int compat_filldir(void *__buf, c
66984 +@@ -938,6 +945,10 @@ static int compat_filldir(void *__buf, c
66985 buf->error = -EOVERFLOW;
66986 return -EOVERFLOW;
66987 }
66988 @@ -44089,7 +41174,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66989 dirent = buf->previous;
66990 if (dirent) {
66991 if (__put_user(offset, &dirent->d_off))
66992 -@@ -966,6 +977,7 @@ asmlinkage long compat_sys_getdents(unsi
66993 +@@ -985,6 +996,7 @@ asmlinkage long compat_sys_getdents(unsi
66994 buf.previous = NULL;
66995 buf.count = count;
66996 buf.error = 0;
66997 @@ -44097,7 +41182,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
66998
66999 error = vfs_readdir(file, compat_filldir, &buf);
67000 if (error >= 0)
67001 -@@ -987,6 +999,7 @@ out:
67002 +@@ -1006,6 +1018,7 @@ out:
67003 struct compat_getdents_callback64 {
67004 struct linux_dirent64 __user *current_dir;
67005 struct linux_dirent64 __user *previous;
67006 @@ -44105,7 +41190,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
67007 int count;
67008 int error;
67009 };
67010 -@@ -1003,6 +1016,10 @@ static int compat_filldir64(void * __buf
67011 +@@ -1022,6 +1035,10 @@ static int compat_filldir64(void * __buf
67012 buf->error = -EINVAL; /* only used if we fail.. */
67013 if (reclen > buf->count)
67014 return -EINVAL;
67015 @@ -44116,7 +41201,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
67016 dirent = buf->previous;
67017
67018 if (dirent) {
67019 -@@ -1054,13 +1071,14 @@ asmlinkage long compat_sys_getdents64(un
67020 +@@ -1073,13 +1090,14 @@ asmlinkage long compat_sys_getdents64(un
67021 buf.previous = NULL;
67022 buf.count = count;
67023 buf.error = 0;
67024 @@ -44132,125 +41217,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
67025 if (__put_user_unaligned(d_off, &lastdirent->d_off))
67026 error = -EFAULT;
67027 else
67028 -@@ -1098,7 +1116,7 @@ static ssize_t compat_do_readv_writev(in
67029 - * verify all the pointers
67030 - */
67031 - ret = -EINVAL;
67032 -- if ((nr_segs > UIO_MAXIOV) || (nr_segs <= 0))
67033 -+ if (nr_segs > UIO_MAXIOV)
67034 - goto out;
67035 - if (!file->f_op)
67036 - goto out;
67037 -@@ -1463,11 +1481,35 @@ int compat_do_execve(char * filename,
67038 - compat_uptr_t __user *envp,
67039 - struct pt_regs * regs)
67040 - {
67041 -+#ifdef CONFIG_GRKERNSEC
67042 -+ struct file *old_exec_file;
67043 -+ struct acl_subject_label *old_acl;
67044 -+ struct rlimit old_rlim[RLIM_NLIMITS];
67045 -+#endif
67046 - struct linux_binprm *bprm;
67047 - struct file *file;
67048 - struct files_struct *displaced;
67049 - bool clear_in_exec;
67050 - int retval;
67051 -+ const struct cred *cred = current_cred();
67052 -+
67053 -+ /*
67054 -+ * We move the actual failure in case of RLIMIT_NPROC excess from
67055 -+ * set*uid() to execve() because too many poorly written programs
67056 -+ * don't check setuid() return code. Here we additionally recheck
67057 -+ * whether NPROC limit is still exceeded.
67058 -+ */
67059 -+ gr_learn_resource(current, RLIMIT_NPROC, atomic_read(&current->cred->user->processes), 1);
67060 -+
67061 -+ if ((current->flags & PF_NPROC_EXCEEDED) &&
67062 -+ atomic_read(&cred->user->processes) > current->signal->rlim[RLIMIT_NPROC].rlim_cur) {
67063 -+ retval = -EAGAIN;
67064 -+ goto out_ret;
67065 -+ }
67066 -+
67067 -+ /* We're below the limit (still or again), so we don't want to make
67068 -+ * further execve() calls fail. */
67069 -+ current->flags &= ~PF_NPROC_EXCEEDED;
67070 -
67071 - retval = unshare_files(&displaced);
67072 - if (retval)
67073 -@@ -1499,6 +1541,15 @@ int compat_do_execve(char * filename,
67074 - bprm->filename = filename;
67075 - bprm->interp = filename;
67076 -
67077 -+ if (gr_process_user_ban()) {
67078 -+ retval = -EPERM;
67079 -+ goto out_file;
67080 -+ }
67081 -+
67082 -+ retval = -EACCES;
67083 -+ if (!gr_acl_handle_execve(file->f_dentry, file->f_vfsmnt))
67084 -+ goto out_file;
67085 -+
67086 - retval = bprm_mm_init(bprm);
67087 - if (retval)
67088 - goto out_file;
67089 -@@ -1528,9 +1579,40 @@ int compat_do_execve(char * filename,
67090 - if (retval < 0)
67091 - goto out;
67092 -
67093 -+ if (!gr_tpe_allow(file)) {
67094 -+ retval = -EACCES;
67095 -+ goto out;
67096 -+ }
67097 -+
67098 -+ if (gr_check_crash_exec(file)) {
67099 -+ retval = -EACCES;
67100 -+ goto out;
67101 -+ }
67102 -+
67103 -+ gr_log_chroot_exec(file->f_dentry, file->f_vfsmnt);
67104 -+
67105 -+ gr_handle_exec_args_compat(bprm, argv);
67106 -+
67107 -+#ifdef CONFIG_GRKERNSEC
67108 -+ old_acl = current->acl;
67109 -+ memcpy(old_rlim, current->signal->rlim, sizeof(old_rlim));
67110 -+ old_exec_file = current->exec_file;
67111 -+ get_file(file);
67112 -+ current->exec_file = file;
67113 -+#endif
67114 -+
67115 -+ retval = gr_set_proc_label(file->f_dentry, file->f_vfsmnt,
67116 -+ bprm->unsafe & LSM_UNSAFE_SHARE);
67117 -+ if (retval < 0)
67118 -+ goto out_fail;
67119 -+
67120 - retval = search_binary_handler(bprm, regs);
67121 - if (retval < 0)
67122 -- goto out;
67123 -+ goto out_fail;
67124 -+#ifdef CONFIG_GRKERNSEC
67125 -+ if (old_exec_file)
67126 -+ fput(old_exec_file);
67127 -+#endif
67128 -
67129 - /* execve succeeded */
67130 - current->fs->in_exec = 0;
67131 -@@ -1541,6 +1623,14 @@ int compat_do_execve(char * filename,
67132 - put_files_struct(displaced);
67133 - return retval;
67134 -
67135 -+out_fail:
67136 -+#ifdef CONFIG_GRKERNSEC
67137 -+ current->acl = old_acl;
67138 -+ memcpy(current->signal->rlim, old_rlim, sizeof(old_rlim));
67139 -+ fput(current->exec_file);
67140 -+ current->exec_file = old_exec_file;
67141 -+#endif
67142 -+
67143 - out:
67144 - if (bprm->mm) {
67145 - acct_arg_size(bprm, 0);
67146 -@@ -1711,6 +1801,8 @@ int compat_core_sys_select(int n, compat
67147 +@@ -1446,6 +1464,8 @@ int compat_core_sys_select(int n, compat
67148 struct fdtable *fdt;
67149 long stack_fds[SELECT_STACK_ALLOC/sizeof(long)];
67150
67151 @@ -44259,7 +41226,7 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
67152 if (n < 0)
67153 goto out_nofds;
67154
67155 -@@ -2151,7 +2243,7 @@ asmlinkage long compat_sys_nfsservctl(in
67156 +@@ -1904,7 +1924,7 @@ asmlinkage long compat_sys_nfsservctl(in
67157 oldfs = get_fs();
67158 set_fs(KERNEL_DS);
67159 /* The __user pointer casts are valid because of the set_fs() */
67160 @@ -44268,11 +41235,11 @@ diff -urNp linux-2.6.32.48/fs/compat.c linux-2.6.32.48/fs/compat.c
67161 set_fs(oldfs);
67162
67163 if (err)
67164 -diff -urNp linux-2.6.32.48/fs/compat_ioctl.c linux-2.6.32.48/fs/compat_ioctl.c
67165 ---- linux-2.6.32.48/fs/compat_ioctl.c 2009-12-02 22:51:21.000000000 -0500
67166 -+++ linux-2.6.32.48/fs/compat_ioctl.c 2011-11-12 12:46:47.000000000 -0500
67167 -@@ -234,6 +234,8 @@ static int do_video_set_spu_palette(unsi
67168 - up = (struct compat_video_spu_palette __user *) arg;
67169 +diff -urNp linux-3.0.8/fs/compat_ioctl.c linux-3.0.8/fs/compat_ioctl.c
67170 +--- linux-3.0.8/fs/compat_ioctl.c 2011-07-21 22:17:23.000000000 -0400
67171 ++++ linux-3.0.8/fs/compat_ioctl.c 2011-10-06 04:17:55.000000000 -0400
67172 +@@ -208,6 +208,8 @@ static int do_video_set_spu_palette(unsi
67173 +
67174 err = get_user(palp, &up->palette);
67175 err |= get_user(length, &up->length);
67176 + if (err)
67177 @@ -44280,7 +41247,7 @@ diff -urNp linux-2.6.32.48/fs/compat_ioctl.c linux-2.6.32.48/fs/compat_ioctl.c
67178
67179 up_native = compat_alloc_user_space(sizeof(struct video_spu_palette));
67180 err = put_user(compat_ptr(palp), &up_native->palette);
67181 -@@ -1513,7 +1515,7 @@ static int serial_struct_ioctl(unsigned
67182 +@@ -619,7 +621,7 @@ static int serial_struct_ioctl(unsigned
67183 return -EFAULT;
67184 if (__get_user(udata, &ss32->iomem_base))
67185 return -EFAULT;
67186 @@ -44289,7 +41256,7 @@ diff -urNp linux-2.6.32.48/fs/compat_ioctl.c linux-2.6.32.48/fs/compat_ioctl.c
67187 if (__get_user(ss.iomem_reg_shift, &ss32->iomem_reg_shift) ||
67188 __get_user(ss.port_high, &ss32->port_high))
67189 return -EFAULT;
67190 -@@ -1809,7 +1811,7 @@ static int compat_ioctl_preallocate(stru
67191 +@@ -794,7 +796,7 @@ static int compat_ioctl_preallocate(stru
67192 copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) ||
67193 copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) ||
67194 copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) ||
67195 @@ -44298,10 +41265,21 @@ diff -urNp linux-2.6.32.48/fs/compat_ioctl.c linux-2.6.32.48/fs/compat_ioctl.c
67196 return -EFAULT;
67197
67198 return ioctl_preallocate(file, p);
67199 -diff -urNp linux-2.6.32.48/fs/configfs/dir.c linux-2.6.32.48/fs/configfs/dir.c
67200 ---- linux-2.6.32.48/fs/configfs/dir.c 2009-12-02 22:51:21.000000000 -0500
67201 -+++ linux-2.6.32.48/fs/configfs/dir.c 2011-11-12 12:46:47.000000000 -0500
67202 -@@ -1572,7 +1572,8 @@ static int configfs_readdir(struct file
67203 +@@ -1638,8 +1640,8 @@ asmlinkage long compat_sys_ioctl(unsigne
67204 + static int __init init_sys32_ioctl_cmp(const void *p, const void *q)
67205 + {
67206 + unsigned int a, b;
67207 +- a = *(unsigned int *)p;
67208 +- b = *(unsigned int *)q;
67209 ++ a = *(const unsigned int *)p;
67210 ++ b = *(const unsigned int *)q;
67211 + if (a > b)
67212 + return 1;
67213 + if (a < b)
67214 +diff -urNp linux-3.0.8/fs/configfs/dir.c linux-3.0.8/fs/configfs/dir.c
67215 +--- linux-3.0.8/fs/configfs/dir.c 2011-07-21 22:17:23.000000000 -0400
67216 ++++ linux-3.0.8/fs/configfs/dir.c 2011-08-23 21:47:56.000000000 -0400
67217 +@@ -1575,7 +1575,8 @@ static int configfs_readdir(struct file
67218 }
67219 for (p=q->next; p!= &parent_sd->s_children; p=p->next) {
67220 struct configfs_dirent *next;
67221 @@ -44309,9 +41287,9 @@ diff -urNp linux-2.6.32.48/fs/configfs/dir.c linux-2.6.32.48/fs/configfs/dir.c
67222 + const unsigned char * name;
67223 + char d_name[sizeof(next->s_dentry->d_iname)];
67224 int len;
67225 + struct inode *inode = NULL;
67226
67227 - next = list_entry(p, struct configfs_dirent,
67228 -@@ -1581,7 +1582,12 @@ static int configfs_readdir(struct file
67229 +@@ -1585,7 +1586,12 @@ static int configfs_readdir(struct file
67230 continue;
67231
67232 name = configfs_get_name(next);
67233 @@ -44322,22 +41300,13 @@ diff -urNp linux-2.6.32.48/fs/configfs/dir.c linux-2.6.32.48/fs/configfs/dir.c
67234 + name = d_name;
67235 + } else
67236 + len = strlen(name);
67237 - if (next->s_dentry)
67238 - ino = next->s_dentry->d_inode->i_ino;
67239 - else
67240 -diff -urNp linux-2.6.32.48/fs/dcache.c linux-2.6.32.48/fs/dcache.c
67241 ---- linux-2.6.32.48/fs/dcache.c 2011-11-12 12:44:30.000000000 -0500
67242 -+++ linux-2.6.32.48/fs/dcache.c 2011-11-12 12:46:47.000000000 -0500
67243 -@@ -45,8 +45,6 @@ EXPORT_SYMBOL(dcache_lock);
67244
67245 - static struct kmem_cache *dentry_cache __read_mostly;
67246 -
67247 --#define DNAME_INLINE_LEN (sizeof(struct dentry)-offsetof(struct dentry,d_iname))
67248 --
67249 - /*
67250 - * This is the single most critical data structure when it comes
67251 - * to the dcache: the hashtable for lookups. Somebody should try
67252 -@@ -2319,7 +2317,7 @@ void __init vfs_caches_init(unsigned lon
67253 + /*
67254 + * We'll have a dentry and an inode for
67255 +diff -urNp linux-3.0.8/fs/dcache.c linux-3.0.8/fs/dcache.c
67256 +--- linux-3.0.8/fs/dcache.c 2011-07-21 22:17:23.000000000 -0400
67257 ++++ linux-3.0.8/fs/dcache.c 2011-08-23 21:47:56.000000000 -0400
67258 +@@ -3089,7 +3089,7 @@ void __init vfs_caches_init(unsigned lon
67259 mempages -= reserve;
67260
67261 names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
67262 @@ -44346,22 +41315,10 @@ diff -urNp linux-2.6.32.48/fs/dcache.c linux-2.6.32.48/fs/dcache.c
67263
67264 dcache_init();
67265 inode_init();
67266 -diff -urNp linux-2.6.32.48/fs/dlm/lockspace.c linux-2.6.32.48/fs/dlm/lockspace.c
67267 ---- linux-2.6.32.48/fs/dlm/lockspace.c 2011-11-12 12:44:30.000000000 -0500
67268 -+++ linux-2.6.32.48/fs/dlm/lockspace.c 2011-11-12 12:46:47.000000000 -0500
67269 -@@ -148,7 +148,7 @@ static void lockspace_kobj_release(struc
67270 - kfree(ls);
67271 - }
67272 -
67273 --static struct sysfs_ops dlm_attr_ops = {
67274 -+static const struct sysfs_ops dlm_attr_ops = {
67275 - .show = dlm_attr_show,
67276 - .store = dlm_attr_store,
67277 - };
67278 -diff -urNp linux-2.6.32.48/fs/ecryptfs/inode.c linux-2.6.32.48/fs/ecryptfs/inode.c
67279 ---- linux-2.6.32.48/fs/ecryptfs/inode.c 2011-11-12 12:44:30.000000000 -0500
67280 -+++ linux-2.6.32.48/fs/ecryptfs/inode.c 2011-11-12 12:46:47.000000000 -0500
67281 -@@ -660,7 +660,7 @@ static int ecryptfs_readlink_lower(struc
67282 +diff -urNp linux-3.0.8/fs/ecryptfs/inode.c linux-3.0.8/fs/ecryptfs/inode.c
67283 +--- linux-3.0.8/fs/ecryptfs/inode.c 2011-10-24 08:05:21.000000000 -0400
67284 ++++ linux-3.0.8/fs/ecryptfs/inode.c 2011-10-06 04:17:55.000000000 -0400
67285 +@@ -704,7 +704,7 @@ static int ecryptfs_readlink_lower(struc
67286 old_fs = get_fs();
67287 set_fs(get_ds());
67288 rc = lower_dentry->d_inode->i_op->readlink(lower_dentry,
67289 @@ -44370,22 +41327,64 @@ diff -urNp linux-2.6.32.48/fs/ecryptfs/inode.c linux-2.6.32.48/fs/ecryptfs/inode
67290 lower_bufsiz);
67291 set_fs(old_fs);
67292 if (rc < 0)
67293 -@@ -706,7 +706,7 @@ static void *ecryptfs_follow_link(struct
67294 +@@ -750,7 +750,7 @@ static void *ecryptfs_follow_link(struct
67295 }
67296 old_fs = get_fs();
67297 set_fs(get_ds());
67298 - rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len);
67299 -+ rc = dentry->d_inode->i_op->readlink(dentry, (__force char __user *)buf, len);
67300 ++ rc = dentry->d_inode->i_op->readlink(dentry, (char __force_user *)buf, len);
67301 set_fs(old_fs);
67302 - if (rc < 0)
67303 - goto out_free;
67304 -diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67305 ---- linux-2.6.32.48/fs/exec.c 2011-11-12 12:44:30.000000000 -0500
67306 -+++ linux-2.6.32.48/fs/exec.c 2011-11-12 12:46:47.000000000 -0500
67307 -@@ -56,12 +56,24 @@
67308 - #include <linux/fsnotify.h>
67309 - #include <linux/fs_struct.h>
67310 + if (rc < 0) {
67311 + kfree(buf);
67312 +@@ -765,7 +765,7 @@ out:
67313 + static void
67314 + ecryptfs_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr)
67315 + {
67316 +- char *buf = nd_get_link(nd);
67317 ++ const char *buf = nd_get_link(nd);
67318 + if (!IS_ERR(buf)) {
67319 + /* Free the char* */
67320 + kfree(buf);
67321 +diff -urNp linux-3.0.8/fs/ecryptfs/miscdev.c linux-3.0.8/fs/ecryptfs/miscdev.c
67322 +--- linux-3.0.8/fs/ecryptfs/miscdev.c 2011-07-21 22:17:23.000000000 -0400
67323 ++++ linux-3.0.8/fs/ecryptfs/miscdev.c 2011-08-23 21:47:56.000000000 -0400
67324 +@@ -328,7 +328,7 @@ check_list:
67325 + goto out_unlock_msg_ctx;
67326 + i = 5;
67327 + if (msg_ctx->msg) {
67328 +- if (copy_to_user(&buf[i], packet_length, packet_length_size))
67329 ++ if (packet_length_size > sizeof(packet_length) || copy_to_user(&buf[i], packet_length, packet_length_size))
67330 + goto out_unlock_msg_ctx;
67331 + i += packet_length_size;
67332 + if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
67333 +diff -urNp linux-3.0.8/fs/ecryptfs/read_write.c linux-3.0.8/fs/ecryptfs/read_write.c
67334 +--- linux-3.0.8/fs/ecryptfs/read_write.c 2011-10-24 08:05:21.000000000 -0400
67335 ++++ linux-3.0.8/fs/ecryptfs/read_write.c 2011-10-06 04:17:55.000000000 -0400
67336 +@@ -48,7 +48,7 @@ int ecryptfs_write_lower(struct inode *e
67337 + return -EIO;
67338 + fs_save = get_fs();
67339 + set_fs(get_ds());
67340 +- rc = vfs_write(lower_file, data, size, &offset);
67341 ++ rc = vfs_write(lower_file, (const char __force_user *)data, size, &offset);
67342 + set_fs(fs_save);
67343 + mark_inode_dirty_sync(ecryptfs_inode);
67344 + return rc;
67345 +@@ -235,7 +235,7 @@ int ecryptfs_read_lower(char *data, loff
67346 + return -EIO;
67347 + fs_save = get_fs();
67348 + set_fs(get_ds());
67349 +- rc = vfs_read(lower_file, data, size, &offset);
67350 ++ rc = vfs_read(lower_file, (char __force_user *)data, size, &offset);
67351 + set_fs(fs_save);
67352 + return rc;
67353 + }
67354 +diff -urNp linux-3.0.8/fs/exec.c linux-3.0.8/fs/exec.c
67355 +--- linux-3.0.8/fs/exec.c 2011-10-24 08:05:32.000000000 -0400
67356 ++++ linux-3.0.8/fs/exec.c 2011-10-17 23:17:19.000000000 -0400
67357 +@@ -55,12 +55,24 @@
67358 #include <linux/pipe_fs_i.h>
67359 + #include <linux/oom.h>
67360 + #include <linux/compat.h>
67361 +#include <linux/random.h>
67362 +#include <linux/seq_file.h>
67363 +
67364 @@ -44407,16 +41406,25 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67365 int core_uses_pid;
67366 char core_pattern[CORENAME_MAX_SIZE] = "core";
67367 unsigned int core_pipe_limit;
67368 -@@ -115,7 +127,7 @@ SYSCALL_DEFINE1(uselib, const char __use
67369 - goto out;
67370 -
67371 - file = do_filp_open(AT_FDCWD, tmp,
67372 -- O_LARGEFILE | O_RDONLY | FMODE_EXEC, 0,
67373 -+ O_LARGEFILE | O_RDONLY | FMODE_EXEC | FMODE_GREXEC, 0,
67374 - MAY_READ | MAY_EXEC | MAY_OPEN);
67375 - putname(tmp);
67376 - error = PTR_ERR(file);
67377 -@@ -178,18 +190,10 @@ struct page *get_arg_page(struct linux_b
67378 +@@ -70,7 +82,7 @@ struct core_name {
67379 + char *corename;
67380 + int used, size;
67381 + };
67382 +-static atomic_t call_count = ATOMIC_INIT(1);
67383 ++static atomic_unchecked_t call_count = ATOMIC_INIT(1);
67384 +
67385 + /* The maximal length of core_pattern is also specified in sysctl.c */
67386 +
67387 +@@ -116,7 +128,7 @@ SYSCALL_DEFINE1(uselib, const char __use
67388 + char *tmp = getname(library);
67389 + int error = PTR_ERR(tmp);
67390 + static const struct open_flags uselib_flags = {
67391 +- .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC,
67392 ++ .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC | FMODE_GREXEC,
67393 + .acc_mode = MAY_READ | MAY_EXEC | MAY_OPEN,
67394 + .intent = LOOKUP_OPEN
67395 + };
67396 +@@ -195,18 +207,10 @@ static struct page *get_arg_page(struct
67397 int write)
67398 {
67399 struct page *page;
67400 @@ -44424,7 +41432,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67401
67402 -#ifdef CONFIG_STACK_GROWSUP
67403 - if (write) {
67404 -- ret = expand_stack_downwards(bprm->vma, pos);
67405 +- ret = expand_downwards(bprm->vma, pos);
67406 - if (ret < 0)
67407 - return NULL;
67408 - }
67409 @@ -44432,25 +41440,25 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67410 - ret = get_user_pages(current, bprm->mm, pos,
67411 - 1, write, 1, &page, NULL);
67412 - if (ret <= 0)
67413 -+ if (0 > expand_stack_downwards(bprm->vma, pos))
67414 ++ if (0 > expand_downwards(bprm->vma, pos))
67415 + return NULL;
67416 + if (0 >= get_user_pages(current, bprm->mm, pos, 1, write, 1, &page, NULL))
67417 return NULL;
67418
67419 if (write) {
67420 -@@ -263,6 +267,11 @@ static int __bprm_mm_init(struct linux_b
67421 +@@ -281,6 +285,11 @@ static int __bprm_mm_init(struct linux_b
67422 vma->vm_end = STACK_TOP_MAX;
67423 vma->vm_start = vma->vm_end - PAGE_SIZE;
67424 - vma->vm_flags = VM_STACK_FLAGS;
67425 + vma->vm_flags = VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
67426 +
67427 +#ifdef CONFIG_PAX_SEGMEXEC
67428 + vma->vm_flags &= ~(VM_EXEC | VM_MAYEXEC);
67429 +#endif
67430 +
67431 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
67432 + INIT_LIST_HEAD(&vma->anon_vma_chain);
67433
67434 - err = security_file_mmap(NULL, 0, 0, 0, vma->vm_start, 1);
67435 -@@ -276,6 +285,12 @@ static int __bprm_mm_init(struct linux_b
67436 +@@ -295,6 +304,12 @@ static int __bprm_mm_init(struct linux_b
67437 mm->stack_vm = mm->total_vm = 1;
67438 up_write(&mm->mmap_sem);
67439 bprm->p = vma->vm_end - sizeof(void *);
67440 @@ -44463,18 +41471,74 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67441 return 0;
67442 err:
67443 up_write(&mm->mmap_sem);
67444 -@@ -510,7 +525,7 @@ int copy_strings_kernel(int argc,char **
67445 +@@ -403,19 +418,7 @@ err:
67446 + return err;
67447 + }
67448 +
67449 +-struct user_arg_ptr {
67450 +-#ifdef CONFIG_COMPAT
67451 +- bool is_compat;
67452 +-#endif
67453 +- union {
67454 +- const char __user *const __user *native;
67455 +-#ifdef CONFIG_COMPAT
67456 +- compat_uptr_t __user *compat;
67457 +-#endif
67458 +- } ptr;
67459 +-};
67460 +-
67461 +-static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
67462 ++const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
67463 + {
67464 + const char __user *native;
67465 +
67466 +@@ -424,14 +427,14 @@ static const char __user *get_user_arg_p
67467 + compat_uptr_t compat;
67468 +
67469 + if (get_user(compat, argv.ptr.compat + nr))
67470 +- return ERR_PTR(-EFAULT);
67471 ++ return (const char __force_user *)ERR_PTR(-EFAULT);
67472 +
67473 + return compat_ptr(compat);
67474 + }
67475 + #endif
67476 +
67477 + if (get_user(native, argv.ptr.native + nr))
67478 +- return ERR_PTR(-EFAULT);
67479 ++ return (const char __force_user *)ERR_PTR(-EFAULT);
67480 +
67481 + return native;
67482 + }
67483 +@@ -450,7 +453,7 @@ static int count(struct user_arg_ptr arg
67484 + if (!p)
67485 + break;
67486 +
67487 +- if (IS_ERR(p))
67488 ++ if (IS_ERR((const char __force_kernel *)p))
67489 + return -EFAULT;
67490 +
67491 + if (i++ >= max)
67492 +@@ -484,7 +487,7 @@ static int copy_strings(int argc, struct
67493 +
67494 + ret = -EFAULT;
67495 + str = get_user_arg_ptr(argv, argc);
67496 +- if (IS_ERR(str))
67497 ++ if (IS_ERR((const char __force_kernel *)str))
67498 + goto out;
67499 +
67500 + len = strnlen_user(str, MAX_ARG_STRLEN);
67501 +@@ -566,7 +569,7 @@ int copy_strings_kernel(int argc, const
67502 int r;
67503 mm_segment_t oldfs = get_fs();
67504 + struct user_arg_ptr argv = {
67505 +- .ptr.native = (const char __user *const __user *)__argv,
67506 ++ .ptr.native = (const char __force_user *const __force_user *)__argv,
67507 + };
67508 +
67509 set_fs(KERNEL_DS);
67510 -- r = copy_strings(argc, (char __user * __user *)argv, bprm);
67511 -+ r = copy_strings(argc, (__force char __user * __user *)argv, bprm);
67512 - set_fs(oldfs);
67513 - return r;
67514 - }
67515 -@@ -540,7 +555,8 @@ static int shift_arg_pages(struct vm_are
67516 +@@ -601,7 +604,8 @@ static int shift_arg_pages(struct vm_are
67517 unsigned long new_end = old_end - shift;
67518 - struct mmu_gather *tlb;
67519 + struct mmu_gather tlb;
67520
67521 - BUG_ON(new_start > new_end);
67522 + if (new_start >= new_end || new_start < mmap_min_addr)
67523 @@ -44482,7 +41546,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67524
67525 /*
67526 * ensure there are no vmas between where we want to go
67527 -@@ -549,6 +565,10 @@ static int shift_arg_pages(struct vm_are
67528 +@@ -610,6 +614,10 @@ static int shift_arg_pages(struct vm_are
67529 if (vma != find_vma(mm, new_start))
67530 return -EFAULT;
67531
67532 @@ -44493,7 +41557,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67533 /*
67534 * cover the whole range: [new_start, old_end)
67535 */
67536 -@@ -630,10 +650,6 @@ int setup_arg_pages(struct linux_binprm
67537 +@@ -690,10 +698,6 @@ int setup_arg_pages(struct linux_binprm
67538 stack_top = arch_align_stack(stack_top);
67539 stack_top = PAGE_ALIGN(stack_top);
67540
67541 @@ -44504,7 +41568,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67542 stack_shift = vma->vm_end - stack_top;
67543
67544 bprm->p -= stack_shift;
67545 -@@ -645,6 +661,14 @@ int setup_arg_pages(struct linux_binprm
67546 +@@ -705,8 +709,28 @@ int setup_arg_pages(struct linux_binprm
67547 bprm->exec -= stack_shift;
67548
67549 down_write(&mm->mmap_sem);
67550 @@ -44518,11 +41582,6 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67551 +
67552 vm_flags = VM_STACK_FLAGS;
67553
67554 - /*
67555 -@@ -658,19 +682,24 @@ int setup_arg_pages(struct linux_binprm
67556 - vm_flags &= ~VM_EXEC;
67557 - vm_flags |= mm->def_flags;
67558 -
67559 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
67560 + if (mm->pax_flags & (MF_PAX_PAGEEXEC | MF_PAX_SEGMEXEC)) {
67561 + vm_flags &= ~VM_EXEC;
67562 @@ -44535,9 +41594,10 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67563 + }
67564 +#endif
67565 +
67566 - ret = mprotect_fixup(vma, &prev, vma->vm_start, vma->vm_end,
67567 - vm_flags);
67568 - if (ret)
67569 + /*
67570 + * Adjust stack execute permissions; explicitly enable for
67571 + * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
67572 +@@ -725,13 +749,6 @@ int setup_arg_pages(struct linux_binprm
67573 goto out_unlock;
67574 BUG_ON(prev != vma);
67575
67576 @@ -44548,19 +41608,19 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67577 - goto out_unlock;
67578 - }
67579 -
67580 - stack_expand = EXTRA_STACK_VM_PAGES * PAGE_SIZE;
67581 - stack_size = vma->vm_end - vma->vm_start;
67582 - /*
67583 -@@ -707,7 +736,7 @@ struct file *open_exec(const char *name)
67584 - int err;
67585 + /* mprotect_fixup is overkill to remove the temporary stack flags */
67586 + vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
67587
67588 - file = do_filp_open(AT_FDCWD, name,
67589 -- O_LARGEFILE | O_RDONLY | FMODE_EXEC, 0,
67590 -+ O_LARGEFILE | O_RDONLY | FMODE_EXEC | FMODE_GREXEC, 0,
67591 - MAY_EXEC | MAY_OPEN);
67592 - if (IS_ERR(file))
67593 - goto out;
67594 -@@ -744,7 +773,7 @@ int kernel_read(struct file *file, loff_
67595 +@@ -771,7 +788,7 @@ struct file *open_exec(const char *name)
67596 + struct file *file;
67597 + int err;
67598 + static const struct open_flags open_exec_flags = {
67599 +- .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC,
67600 ++ .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC | FMODE_GREXEC,
67601 + .acc_mode = MAY_EXEC | MAY_OPEN,
67602 + .intent = LOOKUP_OPEN
67603 + };
67604 +@@ -812,7 +829,7 @@ int kernel_read(struct file *file, loff_
67605 old_fs = get_fs();
67606 set_fs(get_ds());
67607 /* The cast to a user pointer is valid due to the set_fs() */
67608 @@ -44569,7 +41629,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67609 set_fs(old_fs);
67610 return result;
67611 }
67612 -@@ -1152,7 +1181,7 @@ int check_unsafe_exec(struct linux_binpr
67613 +@@ -1236,7 +1253,7 @@ int check_unsafe_exec(struct linux_binpr
67614 }
67615 rcu_read_unlock();
67616
67617 @@ -44578,9 +41638,9 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67618 bprm->unsafe |= LSM_UNSAFE_SHARE;
67619 } else {
67620 res = -EAGAIN;
67621 -@@ -1347,11 +1376,35 @@ int do_execve(char * filename,
67622 - char __user *__user *envp,
67623 - struct pt_regs * regs)
67624 +@@ -1430,11 +1447,35 @@ static int do_execve_common(const char *
67625 + struct user_arg_ptr envp,
67626 + struct pt_regs *regs)
67627 {
67628 +#ifdef CONFIG_GRKERNSEC
67629 + struct file *old_exec_file;
67630 @@ -44594,16 +41654,16 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67631 int retval;
67632 + const struct cred *cred = current_cred();
67633 +
67634 ++ gr_learn_resource(current, RLIMIT_NPROC, atomic_read(&current->cred->user->processes), 1);
67635 ++
67636 + /*
67637 + * We move the actual failure in case of RLIMIT_NPROC excess from
67638 + * set*uid() to execve() because too many poorly written programs
67639 + * don't check setuid() return code. Here we additionally recheck
67640 + * whether NPROC limit is still exceeded.
67641 + */
67642 -+ gr_learn_resource(current, RLIMIT_NPROC, atomic_read(&current->cred->user->processes), 1);
67643 -+
67644 + if ((current->flags & PF_NPROC_EXCEEDED) &&
67645 -+ atomic_read(&cred->user->processes) > current->signal->rlim[RLIMIT_NPROC].rlim_cur) {
67646 ++ atomic_read(&cred->user->processes) > rlimit(RLIMIT_NPROC)) {
67647 + retval = -EAGAIN;
67648 + goto out_ret;
67649 + }
67650 @@ -44614,7 +41674,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67651
67652 retval = unshare_files(&displaced);
67653 if (retval)
67654 -@@ -1383,6 +1436,16 @@ int do_execve(char * filename,
67655 +@@ -1466,6 +1507,16 @@ static int do_execve_common(const char *
67656 bprm->filename = filename;
67657 bprm->interp = filename;
67658
67659 @@ -44631,7 +41691,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67660 retval = bprm_mm_init(bprm);
67661 if (retval)
67662 goto out_file;
67663 -@@ -1412,10 +1475,41 @@ int do_execve(char * filename,
67664 +@@ -1495,9 +1546,40 @@ static int do_execve_common(const char *
67665 if (retval < 0)
67666 goto out;
67667
67668 @@ -44647,7 +41707,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67669 +
67670 + gr_log_chroot_exec(file->f_dentry, file->f_vfsmnt);
67671 +
67672 -+ gr_handle_exec_args(bprm, (const char __user *const __user *)argv);
67673 ++ gr_handle_exec_args(bprm, argv);
67674 +
67675 +#ifdef CONFIG_GRKERNSEC
67676 + old_acl = current->acl;
67677 @@ -44658,11 +41718,10 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67678 +#endif
67679 +
67680 + retval = gr_set_proc_label(file->f_dentry, file->f_vfsmnt,
67681 -+ bprm->unsafe & LSM_UNSAFE_SHARE);
67682 ++ bprm->unsafe & LSM_UNSAFE_SHARE);
67683 + if (retval < 0)
67684 + goto out_fail;
67685 +
67686 - current->flags &= ~PF_KTHREAD;
67687 retval = search_binary_handler(bprm,regs);
67688 if (retval < 0)
67689 - goto out;
67690 @@ -44674,7 +41733,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67691
67692 /* execve succeeded */
67693 current->fs->in_exec = 0;
67694 -@@ -1426,6 +1520,14 @@ int do_execve(char * filename,
67695 +@@ -1508,6 +1590,14 @@ static int do_execve_common(const char *
67696 put_files_struct(displaced);
67697 return retval;
67698
67699 @@ -44689,7 +41748,25 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67700 out:
67701 if (bprm->mm) {
67702 acct_arg_size(bprm, 0);
67703 -@@ -1591,6 +1693,220 @@ out:
67704 +@@ -1581,7 +1671,7 @@ static int expand_corename(struct core_n
67705 + {
67706 + char *old_corename = cn->corename;
67707 +
67708 +- cn->size = CORENAME_MAX_SIZE * atomic_inc_return(&call_count);
67709 ++ cn->size = CORENAME_MAX_SIZE * atomic_inc_return_unchecked(&call_count);
67710 + cn->corename = krealloc(old_corename, cn->size, GFP_KERNEL);
67711 +
67712 + if (!cn->corename) {
67713 +@@ -1669,7 +1759,7 @@ static int format_corename(struct core_n
67714 + int pid_in_pattern = 0;
67715 + int err = 0;
67716 +
67717 +- cn->size = CORENAME_MAX_SIZE * atomic_read(&call_count);
67718 ++ cn->size = CORENAME_MAX_SIZE * atomic_read_unchecked(&call_count);
67719 + cn->corename = kmalloc(cn->size, GFP_KERNEL);
67720 + cn->used = 0;
67721 +
67722 +@@ -1760,6 +1850,219 @@ out:
67723 return ispipe;
67724 }
67725
67726 @@ -44828,7 +41905,7 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67727 + current->comm, task_pid_nr(current), current_uid(), current_euid());
67728 + print_symbol(KERN_ERR "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs));
67729 + show_regs(regs);
67730 -+ force_sig_specific(SIGKILL, current);
67731 ++ force_sig_info(SIGKILL, SEND_SIG_FORCED, current);
67732 +}
67733 +#endif
67734 +
67735 @@ -44889,7 +41966,6 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67736 + else
67737 + printk(KERN_ERR "PAX: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
67738 + to ? "leak" : "overwrite", to ? "from" : "to", ptr, type ? : "unknown", len);
67739 -+
67740 + dump_stack();
67741 + gr_handle_kernel_exploit();
67742 + do_group_exit(SIGKILL);
67743 @@ -44907,10 +41983,10 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67744 +EXPORT_SYMBOL(pax_track_stack);
67745 +#endif
67746 +
67747 - static int zap_process(struct task_struct *start)
67748 + static int zap_process(struct task_struct *start, int exit_code)
67749 {
67750 struct task_struct *t;
67751 -@@ -1793,17 +2109,17 @@ static void wait_for_dump_helpers(struct
67752 +@@ -1971,17 +2274,17 @@ static void wait_for_dump_helpers(struct
67753 pipe = file->f_path.dentry->d_inode->i_pipe;
67754
67755 pipe_lock(pipe);
67756 @@ -44933,51 +42009,64 @@ diff -urNp linux-2.6.32.48/fs/exec.c linux-2.6.32.48/fs/exec.c
67757 pipe_unlock(pipe);
67758
67759 }
67760 -@@ -1826,10 +2142,13 @@ void do_coredump(long signr, int exit_co
67761 - char **helper_argv = NULL;
67762 - int helper_argc = 0;
67763 - int dump_count = 0;
67764 +@@ -2042,7 +2345,7 @@ void do_coredump(long signr, int exit_co
67765 + int retval = 0;
67766 + int flag = 0;
67767 + int ispipe;
67768 - static atomic_t core_dump_count = ATOMIC_INIT(0);
67769 + static atomic_unchecked_t core_dump_count = ATOMIC_INIT(0);
67770 + struct coredump_params cprm = {
67771 + .signr = signr,
67772 + .regs = regs,
67773 +@@ -2057,6 +2360,9 @@ void do_coredump(long signr, int exit_co
67774
67775 audit_core_dumps(signr);
67776
67777 + if (signr == SIGSEGV || signr == SIGBUS || signr == SIGKILL || signr == SIGILL)
67778 -+ gr_handle_brute_attach(current, mm->flags);
67779 ++ gr_handle_brute_attach(current, cprm.mm_flags);
67780 +
67781 binfmt = mm->binfmt;
67782 if (!binfmt || !binfmt->core_dump)
67783 goto fail;
67784 -@@ -1874,6 +2193,8 @@ void do_coredump(long signr, int exit_co
67785 - */
67786 - clear_thread_flag(TIF_SIGPENDING);
67787 +@@ -2097,6 +2403,8 @@ void do_coredump(long signr, int exit_co
67788 + goto fail_corename;
67789 + }
67790
67791 + gr_learn_resource(current, RLIMIT_CORE, binfmt->min_coredump, 1);
67792 +
67793 - /*
67794 - * lock_kernel() because format_corename() is controlled by sysctl, which
67795 - * uses lock_kernel()
67796 -@@ -1908,7 +2229,7 @@ void do_coredump(long signr, int exit_co
67797 - goto fail_unlock;
67798 + if (ispipe) {
67799 + int dump_count;
67800 + char **helper_argv;
67801 +@@ -2124,7 +2432,7 @@ void do_coredump(long signr, int exit_co
67802 }
67803 + cprm.limit = RLIM_INFINITY;
67804
67805 - dump_count = atomic_inc_return(&core_dump_count);
67806 + dump_count = atomic_inc_return_unchecked(&core_dump_count);
67807 if (core_pipe_limit && (core_pipe_limit < dump_count)) {
67808 printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
67809 task_tgid_vnr(current), current->comm);
67810 -@@ -1972,7 +2293,7 @@ close_fail:
67811 - filp_close(file, NULL);
67812 +@@ -2194,7 +2502,7 @@ close_fail:
67813 + filp_close(cprm.file, NULL);
67814 fail_dropcount:
67815 - if (dump_count)
67816 + if (ispipe)
67817 - atomic_dec(&core_dump_count);
67818 + atomic_dec_unchecked(&core_dump_count);
67819 fail_unlock:
67820 - if (helper_argv)
67821 - argv_free(helper_argv);
67822 -diff -urNp linux-2.6.32.48/fs/ext2/balloc.c linux-2.6.32.48/fs/ext2/balloc.c
67823 ---- linux-2.6.32.48/fs/ext2/balloc.c 2009-12-02 22:51:21.000000000 -0500
67824 -+++ linux-2.6.32.48/fs/ext2/balloc.c 2011-11-12 12:46:47.000000000 -0500
67825 + kfree(cn.corename);
67826 + fail_corename:
67827 +@@ -2213,7 +2521,7 @@ fail:
67828 + */
67829 + int dump_write(struct file *file, const void *addr, int nr)
67830 + {
67831 +- return access_ok(VERIFY_READ, addr, nr) && file->f_op->write(file, addr, nr, &file->f_pos) == nr;
67832 ++ return access_ok(VERIFY_READ, addr, nr) && file->f_op->write(file, (const char __force_user *)addr, nr, &file->f_pos) == nr;
67833 + }
67834 + EXPORT_SYMBOL(dump_write);
67835 +
67836 +diff -urNp linux-3.0.8/fs/ext2/balloc.c linux-3.0.8/fs/ext2/balloc.c
67837 +--- linux-3.0.8/fs/ext2/balloc.c 2011-07-21 22:17:23.000000000 -0400
67838 ++++ linux-3.0.8/fs/ext2/balloc.c 2011-08-23 21:48:14.000000000 -0400
67839 @@ -1192,7 +1192,7 @@ static int ext2_has_free_blocks(struct e
67840
67841 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
67842 @@ -44987,10 +42076,10 @@ diff -urNp linux-2.6.32.48/fs/ext2/balloc.c linux-2.6.32.48/fs/ext2/balloc.c
67843 sbi->s_resuid != current_fsuid() &&
67844 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
67845 return 0;
67846 -diff -urNp linux-2.6.32.48/fs/ext3/balloc.c linux-2.6.32.48/fs/ext3/balloc.c
67847 ---- linux-2.6.32.48/fs/ext3/balloc.c 2009-12-02 22:51:21.000000000 -0500
67848 -+++ linux-2.6.32.48/fs/ext3/balloc.c 2011-11-12 12:46:47.000000000 -0500
67849 -@@ -1421,7 +1421,7 @@ static int ext3_has_free_blocks(struct e
67850 +diff -urNp linux-3.0.8/fs/ext3/balloc.c linux-3.0.8/fs/ext3/balloc.c
67851 +--- linux-3.0.8/fs/ext3/balloc.c 2011-07-21 22:17:23.000000000 -0400
67852 ++++ linux-3.0.8/fs/ext3/balloc.c 2011-08-23 21:48:14.000000000 -0400
67853 +@@ -1441,7 +1441,7 @@ static int ext3_has_free_blocks(struct e
67854
67855 free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
67856 root_blocks = le32_to_cpu(sbi->s_es->s_r_blocks_count);
67857 @@ -44999,25 +42088,48 @@ diff -urNp linux-2.6.32.48/fs/ext3/balloc.c linux-2.6.32.48/fs/ext3/balloc.c
67858 sbi->s_resuid != current_fsuid() &&
67859 (sbi->s_resgid == 0 || !in_group_p (sbi->s_resgid))) {
67860 return 0;
67861 -diff -urNp linux-2.6.32.48/fs/ext4/balloc.c linux-2.6.32.48/fs/ext4/balloc.c
67862 ---- linux-2.6.32.48/fs/ext4/balloc.c 2011-11-12 12:44:30.000000000 -0500
67863 -+++ linux-2.6.32.48/fs/ext4/balloc.c 2011-11-12 12:46:47.000000000 -0500
67864 -@@ -570,7 +570,7 @@ int ext4_has_free_blocks(struct ext4_sb_
67865 +diff -urNp linux-3.0.8/fs/ext3/ioctl.c linux-3.0.8/fs/ext3/ioctl.c
67866 +--- linux-3.0.8/fs/ext3/ioctl.c 2011-07-21 22:17:23.000000000 -0400
67867 ++++ linux-3.0.8/fs/ext3/ioctl.c 2011-10-06 04:17:55.000000000 -0400
67868 +@@ -285,7 +285,7 @@ group_add_out:
67869 + if (!capable(CAP_SYS_ADMIN))
67870 + return -EPERM;
67871 +
67872 +- if (copy_from_user(&range, (struct fstrim_range *)arg,
67873 ++ if (copy_from_user(&range, (struct fstrim_range __user *)arg,
67874 + sizeof(range)))
67875 + return -EFAULT;
67876 +
67877 +@@ -293,7 +293,7 @@ group_add_out:
67878 + if (ret < 0)
67879 + return ret;
67880 +
67881 +- if (copy_to_user((struct fstrim_range *)arg, &range,
67882 ++ if (copy_to_user((struct fstrim_range __user *)arg, &range,
67883 + sizeof(range)))
67884 + return -EFAULT;
67885 +
67886 +diff -urNp linux-3.0.8/fs/ext4/balloc.c linux-3.0.8/fs/ext4/balloc.c
67887 +--- linux-3.0.8/fs/ext4/balloc.c 2011-07-21 22:17:23.000000000 -0400
67888 ++++ linux-3.0.8/fs/ext4/balloc.c 2011-08-23 21:48:14.000000000 -0400
67889 +@@ -394,8 +394,8 @@ static int ext4_has_free_blocks(struct e
67890 /* Hm, nope. Are (enough) root reserved blocks available? */
67891 if (sbi->s_resuid == current_fsuid() ||
67892 ((sbi->s_resgid != 0) && in_group_p(sbi->s_resgid)) ||
67893 -- capable(CAP_SYS_RESOURCE)) {
67894 -+ capable_nolog(CAP_SYS_RESOURCE)) {
67895 +- capable(CAP_SYS_RESOURCE) ||
67896 +- (flags & EXT4_MB_USE_ROOT_BLOCKS)) {
67897 ++ (flags & EXT4_MB_USE_ROOT_BLOCKS) ||
67898 ++ capable_nolog(CAP_SYS_RESOURCE)) {
67899 +
67900 if (free_blocks >= (nblocks + dirty_blocks))
67901 return 1;
67902 - }
67903 -diff -urNp linux-2.6.32.48/fs/ext4/ext4.h linux-2.6.32.48/fs/ext4/ext4.h
67904 ---- linux-2.6.32.48/fs/ext4/ext4.h 2011-11-12 12:44:30.000000000 -0500
67905 -+++ linux-2.6.32.48/fs/ext4/ext4.h 2011-11-12 12:46:47.000000000 -0500
67906 -@@ -1077,19 +1077,19 @@ struct ext4_sb_info {
67907 +diff -urNp linux-3.0.8/fs/ext4/ext4.h linux-3.0.8/fs/ext4/ext4.h
67908 +--- linux-3.0.8/fs/ext4/ext4.h 2011-10-24 08:05:21.000000000 -0400
67909 ++++ linux-3.0.8/fs/ext4/ext4.h 2011-08-23 21:47:56.000000000 -0400
67910 +@@ -1177,19 +1177,19 @@ struct ext4_sb_info {
67911 + unsigned long s_mb_last_start;
67912
67913 /* stats for buddy allocator */
67914 - spinlock_t s_mb_pa_lock;
67915 - atomic_t s_bal_reqs; /* number of reqs with len > 1 */
67916 - atomic_t s_bal_success; /* we found long enough chunks */
67917 - atomic_t s_bal_allocated; /* in blocks */
67918 @@ -45044,24 +42156,45 @@ diff -urNp linux-2.6.32.48/fs/ext4/ext4.h linux-2.6.32.48/fs/ext4/ext4.h
67919 atomic_t s_lock_busy;
67920
67921 /* locality groups */
67922 -diff -urNp linux-2.6.32.48/fs/ext4/file.c linux-2.6.32.48/fs/ext4/file.c
67923 ---- linux-2.6.32.48/fs/ext4/file.c 2011-11-12 12:44:30.000000000 -0500
67924 -+++ linux-2.6.32.48/fs/ext4/file.c 2011-11-12 12:46:47.000000000 -0500
67925 -@@ -122,8 +122,8 @@ static int ext4_file_open(struct inode *
67926 +diff -urNp linux-3.0.8/fs/ext4/file.c linux-3.0.8/fs/ext4/file.c
67927 +--- linux-3.0.8/fs/ext4/file.c 2011-07-21 22:17:23.000000000 -0400
67928 ++++ linux-3.0.8/fs/ext4/file.c 2011-10-17 02:30:30.000000000 -0400
67929 +@@ -181,8 +181,8 @@ static int ext4_file_open(struct inode *
67930 + path.dentry = mnt->mnt_root;
67931 cp = d_path(&path, buf, sizeof(buf));
67932 - path_put(&path);
67933 if (!IS_ERR(cp)) {
67934 - memcpy(sbi->s_es->s_last_mounted, cp,
67935 - sizeof(sbi->s_es->s_last_mounted));
67936 + strlcpy(sbi->s_es->s_last_mounted, cp,
67937 + sizeof(sbi->s_es->s_last_mounted));
67938 - sb->s_dirt = 1;
67939 + ext4_mark_super_dirty(sb);
67940 }
67941 }
67942 -diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
67943 ---- linux-2.6.32.48/fs/ext4/mballoc.c 2011-11-12 12:44:30.000000000 -0500
67944 -+++ linux-2.6.32.48/fs/ext4/mballoc.c 2011-11-12 12:46:47.000000000 -0500
67945 -@@ -1755,7 +1755,7 @@ void ext4_mb_simple_scan_group(struct ex
67946 +diff -urNp linux-3.0.8/fs/ext4/ioctl.c linux-3.0.8/fs/ext4/ioctl.c
67947 +--- linux-3.0.8/fs/ext4/ioctl.c 2011-07-21 22:17:23.000000000 -0400
67948 ++++ linux-3.0.8/fs/ext4/ioctl.c 2011-10-06 04:17:55.000000000 -0400
67949 +@@ -344,7 +344,7 @@ mext_out:
67950 + if (!blk_queue_discard(q))
67951 + return -EOPNOTSUPP;
67952 +
67953 +- if (copy_from_user(&range, (struct fstrim_range *)arg,
67954 ++ if (copy_from_user(&range, (struct fstrim_range __user *)arg,
67955 + sizeof(range)))
67956 + return -EFAULT;
67957 +
67958 +@@ -354,7 +354,7 @@ mext_out:
67959 + if (ret < 0)
67960 + return ret;
67961 +
67962 +- if (copy_to_user((struct fstrim_range *)arg, &range,
67963 ++ if (copy_to_user((struct fstrim_range __user *)arg, &range,
67964 + sizeof(range)))
67965 + return -EFAULT;
67966 +
67967 +diff -urNp linux-3.0.8/fs/ext4/mballoc.c linux-3.0.8/fs/ext4/mballoc.c
67968 +--- linux-3.0.8/fs/ext4/mballoc.c 2011-10-24 08:05:21.000000000 -0400
67969 ++++ linux-3.0.8/fs/ext4/mballoc.c 2011-08-23 21:48:14.000000000 -0400
67970 +@@ -1793,7 +1793,7 @@ void ext4_mb_simple_scan_group(struct ex
67971 BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
67972
67973 if (EXT4_SB(sb)->s_mb_stats)
67974 @@ -45070,7 +42203,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
67975
67976 break;
67977 }
67978 -@@ -2131,7 +2131,7 @@ repeat:
67979 +@@ -2087,7 +2087,7 @@ repeat:
67980 ac->ac_status = AC_STATUS_CONTINUE;
67981 ac->ac_flags |= EXT4_MB_HINT_FIRST;
67982 cr = 3;
67983 @@ -45079,7 +42212,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
67984 goto repeat;
67985 }
67986 }
67987 -@@ -2174,6 +2174,8 @@ static int ext4_mb_seq_groups_show(struc
67988 +@@ -2130,6 +2130,8 @@ static int ext4_mb_seq_groups_show(struc
67989 ext4_grpblk_t counters[16];
67990 } sg;
67991
67992 @@ -45088,7 +42221,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
67993 group--;
67994 if (group == 0)
67995 seq_printf(seq, "#%-5s: %-5s %-5s %-5s "
67996 -@@ -2534,25 +2536,25 @@ int ext4_mb_release(struct super_block *
67997 +@@ -2553,25 +2555,25 @@ int ext4_mb_release(struct super_block *
67998 if (sbi->s_mb_stats) {
67999 printk(KERN_INFO
68000 "EXT4-fs: mballoc: %u blocks %u reqs (%u success)\n",
68001 @@ -45124,7 +42257,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
68002 }
68003
68004 free_percpu(sbi->s_locality_groups);
68005 -@@ -3034,16 +3036,16 @@ static void ext4_mb_collect_stats(struct
68006 +@@ -3041,16 +3043,16 @@ static void ext4_mb_collect_stats(struct
68007 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
68008
68009 if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
68010 @@ -45132,7 +42265,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
68011 - atomic_add(ac->ac_b_ex.fe_len, &sbi->s_bal_allocated);
68012 + atomic_inc_unchecked(&sbi->s_bal_reqs);
68013 + atomic_add_unchecked(ac->ac_b_ex.fe_len, &sbi->s_bal_allocated);
68014 - if (ac->ac_o_ex.fe_len >= ac->ac_g_ex.fe_len)
68015 + if (ac->ac_b_ex.fe_len >= ac->ac_o_ex.fe_len)
68016 - atomic_inc(&sbi->s_bal_success);
68017 - atomic_add(ac->ac_found, &sbi->s_bal_ex_scanned);
68018 + atomic_inc_unchecked(&sbi->s_bal_success);
68019 @@ -45147,7 +42280,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
68020 }
68021
68022 if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
68023 -@@ -3443,7 +3445,7 @@ ext4_mb_new_inode_pa(struct ext4_allocat
68024 +@@ -3448,7 +3450,7 @@ ext4_mb_new_inode_pa(struct ext4_allocat
68025 trace_ext4_mb_new_inode_pa(ac, pa);
68026
68027 ext4_mb_use_inode_pa(ac, pa);
68028 @@ -45156,7 +42289,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
68029
68030 ei = EXT4_I(ac->ac_inode);
68031 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
68032 -@@ -3503,7 +3505,7 @@ ext4_mb_new_group_pa(struct ext4_allocat
68033 +@@ -3508,7 +3510,7 @@ ext4_mb_new_group_pa(struct ext4_allocat
68034 trace_ext4_mb_new_group_pa(ac, pa);
68035
68036 ext4_mb_use_group_pa(ac, pa);
68037 @@ -45165,7 +42298,7 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
68038
68039 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
68040 lg = ac->ac_lg;
68041 -@@ -3607,7 +3609,7 @@ ext4_mb_release_inode_pa(struct ext4_bud
68042 +@@ -3595,7 +3597,7 @@ ext4_mb_release_inode_pa(struct ext4_bud
68043 * from the bitmap and continue.
68044 */
68045 }
68046 @@ -45174,31 +42307,19 @@ diff -urNp linux-2.6.32.48/fs/ext4/mballoc.c linux-2.6.32.48/fs/ext4/mballoc.c
68047
68048 return err;
68049 }
68050 -@@ -3626,7 +3628,7 @@ ext4_mb_release_group_pa(struct ext4_bud
68051 +@@ -3613,7 +3615,7 @@ ext4_mb_release_group_pa(struct ext4_bud
68052 ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
68053 BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
68054 mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
68055 - atomic_add(pa->pa_len, &EXT4_SB(sb)->s_mb_discarded);
68056 + atomic_add_unchecked(pa->pa_len, &EXT4_SB(sb)->s_mb_discarded);
68057 + trace_ext4_mballoc_discard(sb, NULL, group, bit, pa->pa_len);
68058
68059 - if (ac) {
68060 - ac->ac_sb = sb;
68061 -diff -urNp linux-2.6.32.48/fs/ext4/super.c linux-2.6.32.48/fs/ext4/super.c
68062 ---- linux-2.6.32.48/fs/ext4/super.c 2011-11-12 12:44:30.000000000 -0500
68063 -+++ linux-2.6.32.48/fs/ext4/super.c 2011-11-12 12:46:47.000000000 -0500
68064 -@@ -2287,7 +2287,7 @@ static void ext4_sb_release(struct kobje
68065 - }
68066 -
68067 -
68068 --static struct sysfs_ops ext4_attr_ops = {
68069 -+static const struct sysfs_ops ext4_attr_ops = {
68070 - .show = ext4_attr_show,
68071 - .store = ext4_attr_store,
68072 - };
68073 -diff -urNp linux-2.6.32.48/fs/fcntl.c linux-2.6.32.48/fs/fcntl.c
68074 ---- linux-2.6.32.48/fs/fcntl.c 2011-11-12 12:44:30.000000000 -0500
68075 -+++ linux-2.6.32.48/fs/fcntl.c 2011-11-12 12:46:47.000000000 -0500
68076 -@@ -223,6 +223,11 @@ int __f_setown(struct file *filp, struct
68077 + return 0;
68078 +diff -urNp linux-3.0.8/fs/fcntl.c linux-3.0.8/fs/fcntl.c
68079 +--- linux-3.0.8/fs/fcntl.c 2011-07-21 22:17:23.000000000 -0400
68080 ++++ linux-3.0.8/fs/fcntl.c 2011-10-06 04:17:55.000000000 -0400
68081 +@@ -224,6 +224,11 @@ int __f_setown(struct file *filp, struct
68082 if (err)
68083 return err;
68084
68085 @@ -45210,7 +42331,7 @@ diff -urNp linux-2.6.32.48/fs/fcntl.c linux-2.6.32.48/fs/fcntl.c
68086 f_modown(filp, pid, type, force);
68087 return 0;
68088 }
68089 -@@ -265,7 +270,7 @@ pid_t f_getown(struct file *filp)
68090 +@@ -266,7 +271,7 @@ pid_t f_getown(struct file *filp)
68091
68092 static int f_setown_ex(struct file *filp, unsigned long arg)
68093 {
68094 @@ -45219,7 +42340,7 @@ diff -urNp linux-2.6.32.48/fs/fcntl.c linux-2.6.32.48/fs/fcntl.c
68095 struct f_owner_ex owner;
68096 struct pid *pid;
68097 int type;
68098 -@@ -305,7 +310,7 @@ static int f_setown_ex(struct file *filp
68099 +@@ -306,7 +311,7 @@ static int f_setown_ex(struct file *filp
68100
68101 static int f_getown_ex(struct file *filp, unsigned long arg)
68102 {
68103 @@ -45228,18 +42349,35 @@ diff -urNp linux-2.6.32.48/fs/fcntl.c linux-2.6.32.48/fs/fcntl.c
68104 struct f_owner_ex owner;
68105 int ret = 0;
68106
68107 -@@ -344,6 +349,7 @@ static long do_fcntl(int fd, unsigned in
68108 +@@ -348,6 +353,7 @@ static long do_fcntl(int fd, unsigned in
68109 switch (cmd) {
68110 case F_DUPFD:
68111 case F_DUPFD_CLOEXEC:
68112 + gr_learn_resource(current, RLIMIT_NOFILE, arg, 0);
68113 - if (arg >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
68114 + if (arg >= rlimit(RLIMIT_NOFILE))
68115 break;
68116 err = alloc_fd(arg, cmd == F_DUPFD_CLOEXEC ? O_CLOEXEC : 0);
68117 -diff -urNp linux-2.6.32.48/fs/fifo.c linux-2.6.32.48/fs/fifo.c
68118 ---- linux-2.6.32.48/fs/fifo.c 2009-12-02 22:51:21.000000000 -0500
68119 -+++ linux-2.6.32.48/fs/fifo.c 2011-11-12 12:46:47.000000000 -0500
68120 -@@ -59,10 +59,10 @@ static int fifo_open(struct inode *inode
68121 +@@ -835,14 +841,14 @@ static int __init fcntl_init(void)
68122 + * Exceptions: O_NONBLOCK is a two bit define on parisc; O_NDELAY
68123 + * is defined as O_NONBLOCK on some platforms and not on others.
68124 + */
68125 +- BUILD_BUG_ON(19 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32(
68126 ++ BUILD_BUG_ON(20 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32(
68127 + O_RDONLY | O_WRONLY | O_RDWR |
68128 + O_CREAT | O_EXCL | O_NOCTTY |
68129 + O_TRUNC | O_APPEND | /* O_NONBLOCK | */
68130 + __O_SYNC | O_DSYNC | FASYNC |
68131 + O_DIRECT | O_LARGEFILE | O_DIRECTORY |
68132 + O_NOFOLLOW | O_NOATIME | O_CLOEXEC |
68133 +- __FMODE_EXEC | O_PATH
68134 ++ __FMODE_EXEC | O_PATH | FMODE_GREXEC
68135 + ));
68136 +
68137 + fasync_cache = kmem_cache_create("fasync_cache",
68138 +diff -urNp linux-3.0.8/fs/fifo.c linux-3.0.8/fs/fifo.c
68139 +--- linux-3.0.8/fs/fifo.c 2011-07-21 22:17:23.000000000 -0400
68140 ++++ linux-3.0.8/fs/fifo.c 2011-08-23 21:47:56.000000000 -0400
68141 +@@ -58,10 +58,10 @@ static int fifo_open(struct inode *inode
68142 */
68143 filp->f_op = &read_pipefifo_fops;
68144 pipe->r_counter++;
68145 @@ -45252,7 +42390,7 @@ diff -urNp linux-2.6.32.48/fs/fifo.c linux-2.6.32.48/fs/fifo.c
68146 if ((filp->f_flags & O_NONBLOCK)) {
68147 /* suppress POLLHUP until we have
68148 * seen a writer */
68149 -@@ -83,15 +83,15 @@ static int fifo_open(struct inode *inode
68150 +@@ -81,15 +81,15 @@ static int fifo_open(struct inode *inode
68151 * errno=ENXIO when there is no process reading the FIFO.
68152 */
68153 ret = -ENXIO;
68154 @@ -45271,7 +42409,7 @@ diff -urNp linux-2.6.32.48/fs/fifo.c linux-2.6.32.48/fs/fifo.c
68155 wait_for_partner(inode, &pipe->r_counter);
68156 if (signal_pending(current))
68157 goto err_wr;
68158 -@@ -107,11 +107,11 @@ static int fifo_open(struct inode *inode
68159 +@@ -105,11 +105,11 @@ static int fifo_open(struct inode *inode
68160 */
68161 filp->f_op = &rdwr_pipefifo_fops;
68162
68163 @@ -45286,7 +42424,7 @@ diff -urNp linux-2.6.32.48/fs/fifo.c linux-2.6.32.48/fs/fifo.c
68164 wake_up_partner(inode);
68165 break;
68166
68167 -@@ -125,19 +125,19 @@ static int fifo_open(struct inode *inode
68168 +@@ -123,19 +123,19 @@ static int fifo_open(struct inode *inode
68169 return 0;
68170
68171 err_rd:
68172 @@ -45309,10 +42447,10 @@ diff -urNp linux-2.6.32.48/fs/fifo.c linux-2.6.32.48/fs/fifo.c
68173 free_pipe_info(inode);
68174
68175 err_nocleanup:
68176 -diff -urNp linux-2.6.32.48/fs/file.c linux-2.6.32.48/fs/file.c
68177 ---- linux-2.6.32.48/fs/file.c 2009-12-02 22:51:21.000000000 -0500
68178 -+++ linux-2.6.32.48/fs/file.c 2011-11-12 12:46:47.000000000 -0500
68179 -@@ -14,6 +14,7 @@
68180 +diff -urNp linux-3.0.8/fs/file.c linux-3.0.8/fs/file.c
68181 +--- linux-3.0.8/fs/file.c 2011-07-21 22:17:23.000000000 -0400
68182 ++++ linux-3.0.8/fs/file.c 2011-08-23 21:48:14.000000000 -0400
68183 +@@ -15,6 +15,7 @@
68184 #include <linux/slab.h>
68185 #include <linux/vmalloc.h>
68186 #include <linux/file.h>
68187 @@ -45320,23 +42458,22 @@ diff -urNp linux-2.6.32.48/fs/file.c linux-2.6.32.48/fs/file.c
68188 #include <linux/fdtable.h>
68189 #include <linux/bitops.h>
68190 #include <linux/interrupt.h>
68191 -@@ -257,6 +258,8 @@ int expand_files(struct files_struct *fi
68192 +@@ -254,6 +255,7 @@ int expand_files(struct files_struct *fi
68193 * N.B. For clone tasks sharing a files structure, this test
68194 * will limit the total number of files that can be opened.
68195 */
68196 -+
68197 + gr_learn_resource(current, RLIMIT_NOFILE, nr, 0);
68198 - if (nr >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
68199 + if (nr >= rlimit(RLIMIT_NOFILE))
68200 return -EMFILE;
68201
68202 -diff -urNp linux-2.6.32.48/fs/filesystems.c linux-2.6.32.48/fs/filesystems.c
68203 ---- linux-2.6.32.48/fs/filesystems.c 2009-12-02 22:51:21.000000000 -0500
68204 -+++ linux-2.6.32.48/fs/filesystems.c 2011-11-12 12:46:47.000000000 -0500
68205 -@@ -272,7 +272,12 @@ struct file_system_type *get_fs_type(con
68206 +diff -urNp linux-3.0.8/fs/filesystems.c linux-3.0.8/fs/filesystems.c
68207 +--- linux-3.0.8/fs/filesystems.c 2011-07-21 22:17:23.000000000 -0400
68208 ++++ linux-3.0.8/fs/filesystems.c 2011-08-23 21:48:14.000000000 -0400
68209 +@@ -274,7 +274,12 @@ struct file_system_type *get_fs_type(con
68210 int len = dot ? dot - name : strlen(name);
68211
68212 fs = __get_fs_type(name, len);
68213 -+
68214 ++
68215 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
68216 + if (!fs && (___request_module(true, "grsec_modharden_fs", "%.*s", len, name) == 0))
68217 +#else
68218 @@ -45345,9 +42482,9 @@ diff -urNp linux-2.6.32.48/fs/filesystems.c linux-2.6.32.48/fs/filesystems.c
68219 fs = __get_fs_type(name, len);
68220
68221 if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) {
68222 -diff -urNp linux-2.6.32.48/fs/fscache/cookie.c linux-2.6.32.48/fs/fscache/cookie.c
68223 ---- linux-2.6.32.48/fs/fscache/cookie.c 2009-12-02 22:51:21.000000000 -0500
68224 -+++ linux-2.6.32.48/fs/fscache/cookie.c 2011-11-12 12:46:47.000000000 -0500
68225 +diff -urNp linux-3.0.8/fs/fscache/cookie.c linux-3.0.8/fs/fscache/cookie.c
68226 +--- linux-3.0.8/fs/fscache/cookie.c 2011-07-21 22:17:23.000000000 -0400
68227 ++++ linux-3.0.8/fs/fscache/cookie.c 2011-08-23 21:47:56.000000000 -0400
68228 @@ -68,11 +68,11 @@ struct fscache_cookie *__fscache_acquire
68229 parent ? (char *) parent->def->name : "<no-parent>",
68230 def->name, netfs_data);
68231 @@ -45466,10 +42603,10 @@ diff -urNp linux-2.6.32.48/fs/fscache/cookie.c linux-2.6.32.48/fs/fscache/cookie
68232 wait_on_bit(&cookie->flags, FSCACHE_COOKIE_CREATING,
68233 fscache_wait_bit, TASK_UNINTERRUPTIBLE);
68234 }
68235 -diff -urNp linux-2.6.32.48/fs/fscache/internal.h linux-2.6.32.48/fs/fscache/internal.h
68236 ---- linux-2.6.32.48/fs/fscache/internal.h 2009-12-02 22:51:21.000000000 -0500
68237 -+++ linux-2.6.32.48/fs/fscache/internal.h 2011-11-12 12:46:47.000000000 -0500
68238 -@@ -136,94 +136,94 @@ extern void fscache_proc_cleanup(void);
68239 +diff -urNp linux-3.0.8/fs/fscache/internal.h linux-3.0.8/fs/fscache/internal.h
68240 +--- linux-3.0.8/fs/fscache/internal.h 2011-07-21 22:17:23.000000000 -0400
68241 ++++ linux-3.0.8/fs/fscache/internal.h 2011-08-23 21:47:56.000000000 -0400
68242 +@@ -144,94 +144,94 @@ extern void fscache_proc_cleanup(void);
68243 extern atomic_t fscache_n_ops_processed[FSCACHE_MAX_THREADS];
68244 extern atomic_t fscache_n_objs_processed[FSCACHE_MAX_THREADS];
68245
68246 @@ -45652,7 +42789,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/internal.h linux-2.6.32.48/fs/fscache/inte
68247
68248 extern atomic_t fscache_n_cop_alloc_object;
68249 extern atomic_t fscache_n_cop_lookup_object;
68250 -@@ -247,6 +247,11 @@ static inline void fscache_stat(atomic_t
68251 +@@ -255,6 +255,11 @@ static inline void fscache_stat(atomic_t
68252 atomic_inc(stat);
68253 }
68254
68255 @@ -45664,7 +42801,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/internal.h linux-2.6.32.48/fs/fscache/inte
68256 static inline void fscache_stat_d(atomic_t *stat)
68257 {
68258 atomic_dec(stat);
68259 -@@ -259,6 +264,7 @@ extern const struct file_operations fsca
68260 +@@ -267,6 +272,7 @@ extern const struct file_operations fsca
68261
68262 #define __fscache_stat(stat) (NULL)
68263 #define fscache_stat(stat) do {} while (0)
68264 @@ -45672,10 +42809,10 @@ diff -urNp linux-2.6.32.48/fs/fscache/internal.h linux-2.6.32.48/fs/fscache/inte
68265 #define fscache_stat_d(stat) do {} while (0)
68266 #endif
68267
68268 -diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object.c
68269 ---- linux-2.6.32.48/fs/fscache/object.c 2009-12-02 22:51:21.000000000 -0500
68270 -+++ linux-2.6.32.48/fs/fscache/object.c 2011-11-12 12:46:47.000000000 -0500
68271 -@@ -144,7 +144,7 @@ static void fscache_object_state_machine
68272 +diff -urNp linux-3.0.8/fs/fscache/object.c linux-3.0.8/fs/fscache/object.c
68273 +--- linux-3.0.8/fs/fscache/object.c 2011-07-21 22:17:23.000000000 -0400
68274 ++++ linux-3.0.8/fs/fscache/object.c 2011-08-23 21:47:56.000000000 -0400
68275 +@@ -128,7 +128,7 @@ static void fscache_object_state_machine
68276 /* update the object metadata on disk */
68277 case FSCACHE_OBJECT_UPDATING:
68278 clear_bit(FSCACHE_OBJECT_EV_UPDATE, &object->events);
68279 @@ -45684,7 +42821,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68280 fscache_stat(&fscache_n_cop_update_object);
68281 object->cache->ops->update_object(object);
68282 fscache_stat_d(&fscache_n_cop_update_object);
68283 -@@ -233,7 +233,7 @@ static void fscache_object_state_machine
68284 +@@ -217,7 +217,7 @@ static void fscache_object_state_machine
68285 spin_lock(&object->lock);
68286 object->state = FSCACHE_OBJECT_DEAD;
68287 spin_unlock(&object->lock);
68288 @@ -45693,7 +42830,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68289 goto terminal_transit;
68290
68291 /* handle the parent cache of this object being withdrawn from
68292 -@@ -248,7 +248,7 @@ static void fscache_object_state_machine
68293 +@@ -232,7 +232,7 @@ static void fscache_object_state_machine
68294 spin_lock(&object->lock);
68295 object->state = FSCACHE_OBJECT_DEAD;
68296 spin_unlock(&object->lock);
68297 @@ -45702,7 +42839,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68298 goto terminal_transit;
68299
68300 /* complain about the object being woken up once it is
68301 -@@ -492,7 +492,7 @@ static void fscache_lookup_object(struct
68302 +@@ -461,7 +461,7 @@ static void fscache_lookup_object(struct
68303 parent->cookie->def->name, cookie->def->name,
68304 object->cache->tag->name);
68305
68306 @@ -45711,7 +42848,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68307 fscache_stat(&fscache_n_cop_lookup_object);
68308 ret = object->cache->ops->lookup_object(object);
68309 fscache_stat_d(&fscache_n_cop_lookup_object);
68310 -@@ -503,7 +503,7 @@ static void fscache_lookup_object(struct
68311 +@@ -472,7 +472,7 @@ static void fscache_lookup_object(struct
68312 if (ret == -ETIMEDOUT) {
68313 /* probably stuck behind another object, so move this one to
68314 * the back of the queue */
68315 @@ -45720,7 +42857,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68316 set_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
68317 }
68318
68319 -@@ -526,7 +526,7 @@ void fscache_object_lookup_negative(stru
68320 +@@ -495,7 +495,7 @@ void fscache_object_lookup_negative(stru
68321
68322 spin_lock(&object->lock);
68323 if (object->state == FSCACHE_OBJECT_LOOKING_UP) {
68324 @@ -45729,7 +42866,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68325
68326 /* transit here to allow write requests to begin stacking up
68327 * and read requests to begin returning ENODATA */
68328 -@@ -572,7 +572,7 @@ void fscache_obtained_object(struct fsca
68329 +@@ -541,7 +541,7 @@ void fscache_obtained_object(struct fsca
68330 * result, in which case there may be data available */
68331 spin_lock(&object->lock);
68332 if (object->state == FSCACHE_OBJECT_LOOKING_UP) {
68333 @@ -45738,7 +42875,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68334
68335 clear_bit(FSCACHE_COOKIE_NO_DATA_YET, &cookie->flags);
68336
68337 -@@ -586,7 +586,7 @@ void fscache_obtained_object(struct fsca
68338 +@@ -555,7 +555,7 @@ void fscache_obtained_object(struct fsca
68339 set_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
68340 } else {
68341 ASSERTCMP(object->state, ==, FSCACHE_OBJECT_CREATING);
68342 @@ -45747,7 +42884,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68343
68344 object->state = FSCACHE_OBJECT_AVAILABLE;
68345 spin_unlock(&object->lock);
68346 -@@ -633,7 +633,7 @@ static void fscache_object_available(str
68347 +@@ -602,7 +602,7 @@ static void fscache_object_available(str
68348 fscache_enqueue_dependents(object);
68349
68350 fscache_hist(fscache_obj_instantiate_histogram, object->lookup_jif);
68351 @@ -45786,11 +42923,11 @@ diff -urNp linux-2.6.32.48/fs/fscache/object.c linux-2.6.32.48/fs/fscache/object
68352 break;
68353
68354 default:
68355 -diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/operation.c
68356 ---- linux-2.6.32.48/fs/fscache/operation.c 2009-12-02 22:51:21.000000000 -0500
68357 -+++ linux-2.6.32.48/fs/fscache/operation.c 2011-11-12 12:46:47.000000000 -0500
68358 -@@ -16,7 +16,7 @@
68359 - #include <linux/seq_file.h>
68360 +diff -urNp linux-3.0.8/fs/fscache/operation.c linux-3.0.8/fs/fscache/operation.c
68361 +--- linux-3.0.8/fs/fscache/operation.c 2011-07-21 22:17:23.000000000 -0400
68362 ++++ linux-3.0.8/fs/fscache/operation.c 2011-08-23 21:47:56.000000000 -0400
68363 +@@ -17,7 +17,7 @@
68364 + #include <linux/slab.h>
68365 #include "internal.h"
68366
68367 -atomic_t fscache_op_debug_id;
68368 @@ -45798,16 +42935,16 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68369 EXPORT_SYMBOL(fscache_op_debug_id);
68370
68371 /**
68372 -@@ -39,7 +39,7 @@ void fscache_enqueue_operation(struct fs
68373 +@@ -38,7 +38,7 @@ void fscache_enqueue_operation(struct fs
68374 ASSERTCMP(op->object->state, >=, FSCACHE_OBJECT_AVAILABLE);
68375 ASSERTCMP(atomic_read(&op->usage), >, 0);
68376
68377 - fscache_stat(&fscache_n_op_enqueue);
68378 + fscache_stat_unchecked(&fscache_n_op_enqueue);
68379 switch (op->flags & FSCACHE_OP_TYPE) {
68380 - case FSCACHE_OP_FAST:
68381 - _debug("queue fast");
68382 -@@ -76,7 +76,7 @@ static void fscache_run_op(struct fscach
68383 + case FSCACHE_OP_ASYNC:
68384 + _debug("queue async");
68385 +@@ -69,7 +69,7 @@ static void fscache_run_op(struct fscach
68386 wake_up_bit(&op->flags, FSCACHE_OP_WAITING);
68387 if (op->processor)
68388 fscache_enqueue_operation(op);
68389 @@ -45816,8 +42953,8 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68390 }
68391
68392 /*
68393 -@@ -107,11 +107,11 @@ int fscache_submit_exclusive_op(struct f
68394 - if (object->n_ops > 0) {
68395 +@@ -98,11 +98,11 @@ int fscache_submit_exclusive_op(struct f
68396 + if (object->n_ops > 1) {
68397 atomic_inc(&op->usage);
68398 list_add_tail(&op->pend_link, &object->pending_ops);
68399 - fscache_stat(&fscache_n_op_pend);
68400 @@ -45830,7 +42967,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68401 fscache_start_operations(object);
68402 } else {
68403 ASSERTCMP(object->n_in_progress, ==, 0);
68404 -@@ -127,7 +127,7 @@ int fscache_submit_exclusive_op(struct f
68405 +@@ -118,7 +118,7 @@ int fscache_submit_exclusive_op(struct f
68406 object->n_exclusive++; /* reads and writes must wait */
68407 atomic_inc(&op->usage);
68408 list_add_tail(&op->pend_link, &object->pending_ops);
68409 @@ -45839,7 +42976,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68410 ret = 0;
68411 } else {
68412 /* not allowed to submit ops in any other state */
68413 -@@ -214,11 +214,11 @@ int fscache_submit_op(struct fscache_obj
68414 +@@ -203,11 +203,11 @@ int fscache_submit_op(struct fscache_obj
68415 if (object->n_exclusive > 0) {
68416 atomic_inc(&op->usage);
68417 list_add_tail(&op->pend_link, &object->pending_ops);
68418 @@ -45853,7 +42990,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68419 fscache_start_operations(object);
68420 } else {
68421 ASSERTCMP(object->n_exclusive, ==, 0);
68422 -@@ -230,12 +230,12 @@ int fscache_submit_op(struct fscache_obj
68423 +@@ -219,12 +219,12 @@ int fscache_submit_op(struct fscache_obj
68424 object->n_ops++;
68425 atomic_inc(&op->usage);
68426 list_add_tail(&op->pend_link, &object->pending_ops);
68427 @@ -45868,7 +43005,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68428 ret = -ENOBUFS;
68429 } else if (!test_bit(FSCACHE_IOERROR, &object->cache->flags)) {
68430 fscache_report_unexpected_submission(object, op, ostate);
68431 -@@ -305,7 +305,7 @@ int fscache_cancel_op(struct fscache_ope
68432 +@@ -294,7 +294,7 @@ int fscache_cancel_op(struct fscache_ope
68433
68434 ret = -EBUSY;
68435 if (!list_empty(&op->pend_link)) {
68436 @@ -45877,7 +43014,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68437 list_del_init(&op->pend_link);
68438 object->n_ops--;
68439 if (test_bit(FSCACHE_OP_EXCLUSIVE, &op->flags))
68440 -@@ -344,7 +344,7 @@ void fscache_put_operation(struct fscach
68441 +@@ -331,7 +331,7 @@ void fscache_put_operation(struct fscach
68442 if (test_and_set_bit(FSCACHE_OP_DEAD, &op->flags))
68443 BUG();
68444
68445 @@ -45886,7 +43023,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68446
68447 if (op->release) {
68448 op->release(op);
68449 -@@ -361,7 +361,7 @@ void fscache_put_operation(struct fscach
68450 +@@ -348,7 +348,7 @@ void fscache_put_operation(struct fscach
68451 * lock, and defer it otherwise */
68452 if (!spin_trylock(&object->lock)) {
68453 _debug("defer put");
68454 @@ -45895,7 +43032,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68455
68456 cache = object->cache;
68457 spin_lock(&cache->op_gc_list_lock);
68458 -@@ -423,7 +423,7 @@ void fscache_operation_gc(struct work_st
68459 +@@ -410,7 +410,7 @@ void fscache_operation_gc(struct work_st
68460
68461 _debug("GC DEFERRED REL OBJ%x OP%x",
68462 object->debug_id, op->debug_id);
68463 @@ -45904,10 +43041,10 @@ diff -urNp linux-2.6.32.48/fs/fscache/operation.c linux-2.6.32.48/fs/fscache/ope
68464
68465 ASSERTCMP(atomic_read(&op->usage), ==, 0);
68466
68467 -diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68468 ---- linux-2.6.32.48/fs/fscache/page.c 2009-12-02 22:51:21.000000000 -0500
68469 -+++ linux-2.6.32.48/fs/fscache/page.c 2011-11-12 12:46:47.000000000 -0500
68470 -@@ -59,7 +59,7 @@ bool __fscache_maybe_release_page(struct
68471 +diff -urNp linux-3.0.8/fs/fscache/page.c linux-3.0.8/fs/fscache/page.c
68472 +--- linux-3.0.8/fs/fscache/page.c 2011-07-21 22:17:23.000000000 -0400
68473 ++++ linux-3.0.8/fs/fscache/page.c 2011-08-23 21:47:56.000000000 -0400
68474 +@@ -60,7 +60,7 @@ bool __fscache_maybe_release_page(struct
68475 val = radix_tree_lookup(&cookie->stores, page->index);
68476 if (!val) {
68477 rcu_read_unlock();
68478 @@ -45916,7 +43053,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68479 __fscache_uncache_page(cookie, page);
68480 return true;
68481 }
68482 -@@ -89,11 +89,11 @@ bool __fscache_maybe_release_page(struct
68483 +@@ -90,11 +90,11 @@ bool __fscache_maybe_release_page(struct
68484 spin_unlock(&cookie->stores_lock);
68485
68486 if (xpage) {
68487 @@ -45931,16 +43068,16 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68488 }
68489
68490 wake_up_bit(&cookie->flags, 0);
68491 -@@ -106,7 +106,7 @@ page_busy:
68492 +@@ -107,7 +107,7 @@ page_busy:
68493 /* we might want to wait here, but that could deadlock the allocator as
68494 - * the slow-work threads writing to the cache may all end up sleeping
68495 + * the work threads writing to the cache may all end up sleeping
68496 * on memory allocation */
68497 - fscache_stat(&fscache_n_store_vmscan_busy);
68498 + fscache_stat_unchecked(&fscache_n_store_vmscan_busy);
68499 return false;
68500 }
68501 EXPORT_SYMBOL(__fscache_maybe_release_page);
68502 -@@ -130,7 +130,7 @@ static void fscache_end_page_write(struc
68503 +@@ -131,7 +131,7 @@ static void fscache_end_page_write(struc
68504 FSCACHE_COOKIE_STORING_TAG);
68505 if (!radix_tree_tag_get(&cookie->stores, page->index,
68506 FSCACHE_COOKIE_PENDING_TAG)) {
68507 @@ -45949,7 +43086,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68508 xpage = radix_tree_delete(&cookie->stores, page->index);
68509 }
68510 spin_unlock(&cookie->stores_lock);
68511 -@@ -151,7 +151,7 @@ static void fscache_attr_changed_op(stru
68512 +@@ -152,7 +152,7 @@ static void fscache_attr_changed_op(stru
68513
68514 _enter("{OBJ%x OP%x}", object->debug_id, op->debug_id);
68515
68516 @@ -45957,8 +43094,8 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68517 + fscache_stat_unchecked(&fscache_n_attr_changed_calls);
68518
68519 if (fscache_object_is_active(object)) {
68520 - fscache_set_op_state(op, "CallFS");
68521 -@@ -178,11 +178,11 @@ int __fscache_attr_changed(struct fscach
68522 + fscache_stat(&fscache_n_cop_attr_changed);
68523 +@@ -177,11 +177,11 @@ int __fscache_attr_changed(struct fscach
68524
68525 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
68526
68527 @@ -45972,7 +43109,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68528 _leave(" = -ENOMEM");
68529 return -ENOMEM;
68530 }
68531 -@@ -202,7 +202,7 @@ int __fscache_attr_changed(struct fscach
68532 +@@ -199,7 +199,7 @@ int __fscache_attr_changed(struct fscach
68533 if (fscache_submit_exclusive_op(object, op) < 0)
68534 goto nobufs;
68535 spin_unlock(&cookie->lock);
68536 @@ -45981,7 +43118,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68537 fscache_put_operation(op);
68538 _leave(" = 0");
68539 return 0;
68540 -@@ -210,7 +210,7 @@ int __fscache_attr_changed(struct fscach
68541 +@@ -207,7 +207,7 @@ int __fscache_attr_changed(struct fscach
68542 nobufs:
68543 spin_unlock(&cookie->lock);
68544 kfree(op);
68545 @@ -45990,7 +43127,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68546 _leave(" = %d", -ENOBUFS);
68547 return -ENOBUFS;
68548 }
68549 -@@ -264,7 +264,7 @@ static struct fscache_retrieval *fscache
68550 +@@ -243,7 +243,7 @@ static struct fscache_retrieval *fscache
68551 /* allocate a retrieval operation and attempt to submit it */
68552 op = kzalloc(sizeof(*op), GFP_NOIO);
68553 if (!op) {
68554 @@ -45999,7 +43136,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68555 return NULL;
68556 }
68557
68558 -@@ -294,13 +294,13 @@ static int fscache_wait_for_deferred_loo
68559 +@@ -271,13 +271,13 @@ static int fscache_wait_for_deferred_loo
68560 return 0;
68561 }
68562
68563 @@ -46015,7 +43152,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68564 _leave(" = -ERESTARTSYS");
68565 return -ERESTARTSYS;
68566 }
68567 -@@ -318,8 +318,8 @@ static int fscache_wait_for_deferred_loo
68568 +@@ -295,8 +295,8 @@ static int fscache_wait_for_deferred_loo
68569 */
68570 static int fscache_wait_for_retrieval_activation(struct fscache_object *object,
68571 struct fscache_retrieval *op,
68572 @@ -46026,7 +43163,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68573 {
68574 int ret;
68575
68576 -@@ -327,7 +327,7 @@ static int fscache_wait_for_retrieval_ac
68577 +@@ -304,7 +304,7 @@ static int fscache_wait_for_retrieval_ac
68578 goto check_if_dead;
68579
68580 _debug(">>> WT");
68581 @@ -46035,7 +43172,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68582 if (wait_on_bit(&op->op.flags, FSCACHE_OP_WAITING,
68583 fscache_wait_bit_interruptible,
68584 TASK_INTERRUPTIBLE) < 0) {
68585 -@@ -344,7 +344,7 @@ static int fscache_wait_for_retrieval_ac
68586 +@@ -321,7 +321,7 @@ static int fscache_wait_for_retrieval_ac
68587
68588 check_if_dead:
68589 if (unlikely(fscache_object_is_dead(object))) {
68590 @@ -46044,7 +43181,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68591 return -ENOBUFS;
68592 }
68593 return 0;
68594 -@@ -371,7 +371,7 @@ int __fscache_read_or_alloc_page(struct
68595 +@@ -348,7 +348,7 @@ int __fscache_read_or_alloc_page(struct
68596
68597 _enter("%p,%p,,,", cookie, page);
68598
68599 @@ -46053,7 +43190,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68600
68601 if (hlist_empty(&cookie->backing_objects))
68602 goto nobufs;
68603 -@@ -405,7 +405,7 @@ int __fscache_read_or_alloc_page(struct
68604 +@@ -381,7 +381,7 @@ int __fscache_read_or_alloc_page(struct
68605 goto nobufs_unlock;
68606 spin_unlock(&cookie->lock);
68607
68608 @@ -46062,7 +43199,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68609
68610 /* pin the netfs read context in case we need to do the actual netfs
68611 * read because we've encountered a cache read failure */
68612 -@@ -435,15 +435,15 @@ int __fscache_read_or_alloc_page(struct
68613 +@@ -411,15 +411,15 @@ int __fscache_read_or_alloc_page(struct
68614
68615 error:
68616 if (ret == -ENOMEM)
68617 @@ -46083,7 +43220,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68618
68619 fscache_put_retrieval(op);
68620 _leave(" = %d", ret);
68621 -@@ -453,7 +453,7 @@ nobufs_unlock:
68622 +@@ -429,7 +429,7 @@ nobufs_unlock:
68623 spin_unlock(&cookie->lock);
68624 kfree(op);
68625 nobufs:
68626 @@ -46092,7 +43229,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68627 _leave(" = -ENOBUFS");
68628 return -ENOBUFS;
68629 }
68630 -@@ -491,7 +491,7 @@ int __fscache_read_or_alloc_pages(struct
68631 +@@ -467,7 +467,7 @@ int __fscache_read_or_alloc_pages(struct
68632
68633 _enter("%p,,%d,,,", cookie, *nr_pages);
68634
68635 @@ -46101,7 +43238,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68636
68637 if (hlist_empty(&cookie->backing_objects))
68638 goto nobufs;
68639 -@@ -522,7 +522,7 @@ int __fscache_read_or_alloc_pages(struct
68640 +@@ -497,7 +497,7 @@ int __fscache_read_or_alloc_pages(struct
68641 goto nobufs_unlock;
68642 spin_unlock(&cookie->lock);
68643
68644 @@ -46110,7 +43247,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68645
68646 /* pin the netfs read context in case we need to do the actual netfs
68647 * read because we've encountered a cache read failure */
68648 -@@ -552,15 +552,15 @@ int __fscache_read_or_alloc_pages(struct
68649 +@@ -527,15 +527,15 @@ int __fscache_read_or_alloc_pages(struct
68650
68651 error:
68652 if (ret == -ENOMEM)
68653 @@ -46131,7 +43268,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68654
68655 fscache_put_retrieval(op);
68656 _leave(" = %d", ret);
68657 -@@ -570,7 +570,7 @@ nobufs_unlock:
68658 +@@ -545,7 +545,7 @@ nobufs_unlock:
68659 spin_unlock(&cookie->lock);
68660 kfree(op);
68661 nobufs:
68662 @@ -46140,7 +43277,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68663 _leave(" = -ENOBUFS");
68664 return -ENOBUFS;
68665 }
68666 -@@ -594,7 +594,7 @@ int __fscache_alloc_page(struct fscache_
68667 +@@ -569,7 +569,7 @@ int __fscache_alloc_page(struct fscache_
68668
68669 _enter("%p,%p,,,", cookie, page);
68670
68671 @@ -46149,7 +43286,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68672
68673 if (hlist_empty(&cookie->backing_objects))
68674 goto nobufs;
68675 -@@ -621,7 +621,7 @@ int __fscache_alloc_page(struct fscache_
68676 +@@ -595,7 +595,7 @@ int __fscache_alloc_page(struct fscache_
68677 goto nobufs_unlock;
68678 spin_unlock(&cookie->lock);
68679
68680 @@ -46158,7 +43295,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68681
68682 ret = fscache_wait_for_retrieval_activation(
68683 object, op,
68684 -@@ -637,11 +637,11 @@ int __fscache_alloc_page(struct fscache_
68685 +@@ -611,11 +611,11 @@ int __fscache_alloc_page(struct fscache_
68686
68687 error:
68688 if (ret == -ERESTARTSYS)
68689 @@ -46173,7 +43310,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68690
68691 fscache_put_retrieval(op);
68692 _leave(" = %d", ret);
68693 -@@ -651,7 +651,7 @@ nobufs_unlock:
68694 +@@ -625,7 +625,7 @@ nobufs_unlock:
68695 spin_unlock(&cookie->lock);
68696 kfree(op);
68697 nobufs:
68698 @@ -46182,7 +43319,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68699 _leave(" = -ENOBUFS");
68700 return -ENOBUFS;
68701 }
68702 -@@ -694,7 +694,7 @@ static void fscache_write_op(struct fsca
68703 +@@ -666,7 +666,7 @@ static void fscache_write_op(struct fsca
68704
68705 spin_lock(&cookie->stores_lock);
68706
68707 @@ -46191,7 +43328,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68708
68709 /* find a page to store */
68710 page = NULL;
68711 -@@ -705,7 +705,7 @@ static void fscache_write_op(struct fsca
68712 +@@ -677,7 +677,7 @@ static void fscache_write_op(struct fsca
68713 page = results[0];
68714 _debug("gang %d [%lx]", n, page->index);
68715 if (page->index > op->store_limit) {
68716 @@ -46200,16 +43337,16 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68717 goto superseded;
68718 }
68719
68720 -@@ -721,7 +721,7 @@ static void fscache_write_op(struct fsca
68721 +@@ -689,7 +689,7 @@ static void fscache_write_op(struct fsca
68722 + spin_unlock(&cookie->stores_lock);
68723 + spin_unlock(&object->lock);
68724
68725 - if (page) {
68726 - fscache_set_op_state(&op->op, "Store");
68727 -- fscache_stat(&fscache_n_store_pages);
68728 -+ fscache_stat_unchecked(&fscache_n_store_pages);
68729 - fscache_stat(&fscache_n_cop_write_page);
68730 - ret = object->cache->ops->write_page(op, page);
68731 - fscache_stat_d(&fscache_n_cop_write_page);
68732 -@@ -792,7 +792,7 @@ int __fscache_write_page(struct fscache_
68733 +- fscache_stat(&fscache_n_store_pages);
68734 ++ fscache_stat_unchecked(&fscache_n_store_pages);
68735 + fscache_stat(&fscache_n_cop_write_page);
68736 + ret = object->cache->ops->write_page(op, page);
68737 + fscache_stat_d(&fscache_n_cop_write_page);
68738 +@@ -757,7 +757,7 @@ int __fscache_write_page(struct fscache_
68739 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
68740 ASSERT(PageFsCache(page));
68741
68742 @@ -46218,7 +43355,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68743
68744 op = kzalloc(sizeof(*op), GFP_NOIO);
68745 if (!op)
68746 -@@ -844,7 +844,7 @@ int __fscache_write_page(struct fscache_
68747 +@@ -808,7 +808,7 @@ int __fscache_write_page(struct fscache_
68748 spin_unlock(&cookie->stores_lock);
68749 spin_unlock(&object->lock);
68750
68751 @@ -46227,7 +43364,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68752 op->store_limit = object->store_limit;
68753
68754 if (fscache_submit_op(object, &op->op) < 0)
68755 -@@ -852,8 +852,8 @@ int __fscache_write_page(struct fscache_
68756 +@@ -816,8 +816,8 @@ int __fscache_write_page(struct fscache_
68757
68758 spin_unlock(&cookie->lock);
68759 radix_tree_preload_end();
68760 @@ -46236,9 +43373,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68761 + fscache_stat_unchecked(&fscache_n_store_ops);
68762 + fscache_stat_unchecked(&fscache_n_stores_ok);
68763
68764 - /* the slow work queue now carries its own ref on the object */
68765 + /* the work queue now carries its own ref on the object */
68766 fscache_put_operation(&op->op);
68767 -@@ -861,14 +861,14 @@ int __fscache_write_page(struct fscache_
68768 +@@ -825,14 +825,14 @@ int __fscache_write_page(struct fscache_
68769 return 0;
68770
68771 already_queued:
68772 @@ -46255,7 +43392,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68773 _leave(" = 0");
68774 return 0;
68775
68776 -@@ -886,14 +886,14 @@ nobufs:
68777 +@@ -851,14 +851,14 @@ nobufs:
68778 spin_unlock(&cookie->lock);
68779 radix_tree_preload_end();
68780 kfree(op);
68781 @@ -46272,7 +43409,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68782 _leave(" = -ENOMEM");
68783 return -ENOMEM;
68784 }
68785 -@@ -911,7 +911,7 @@ void __fscache_uncache_page(struct fscac
68786 +@@ -876,7 +876,7 @@ void __fscache_uncache_page(struct fscac
68787 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
68788 ASSERTCMP(page, !=, NULL);
68789
68790 @@ -46281,7 +43418,7 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68791
68792 /* cache withdrawal may beat us to it */
68793 if (!PageFsCache(page))
68794 -@@ -964,7 +964,7 @@ void fscache_mark_pages_cached(struct fs
68795 +@@ -929,7 +929,7 @@ void fscache_mark_pages_cached(struct fs
68796 unsigned long loop;
68797
68798 #ifdef CONFIG_FSCACHE_STATS
68799 @@ -46290,9 +43427,9 @@ diff -urNp linux-2.6.32.48/fs/fscache/page.c linux-2.6.32.48/fs/fscache/page.c
68800 #endif
68801
68802 for (loop = 0; loop < pagevec->nr; loop++) {
68803 -diff -urNp linux-2.6.32.48/fs/fscache/stats.c linux-2.6.32.48/fs/fscache/stats.c
68804 ---- linux-2.6.32.48/fs/fscache/stats.c 2009-12-02 22:51:21.000000000 -0500
68805 -+++ linux-2.6.32.48/fs/fscache/stats.c 2011-11-12 12:46:47.000000000 -0500
68806 +diff -urNp linux-3.0.8/fs/fscache/stats.c linux-3.0.8/fs/fscache/stats.c
68807 +--- linux-3.0.8/fs/fscache/stats.c 2011-07-21 22:17:23.000000000 -0400
68808 ++++ linux-3.0.8/fs/fscache/stats.c 2011-08-23 21:47:56.000000000 -0400
68809 @@ -18,95 +18,95 @@
68810 /*
68811 * operation counters
68812 @@ -46533,13 +43670,13 @@ diff -urNp linux-2.6.32.48/fs/fscache/stats.c linux-2.6.32.48/fs/fscache/stats.c
68813 - atomic_read(&fscache_n_object_lookups),
68814 - atomic_read(&fscache_n_object_lookups_negative),
68815 - atomic_read(&fscache_n_object_lookups_positive),
68816 -- atomic_read(&fscache_n_object_lookups_timed_out),
68817 -- atomic_read(&fscache_n_object_created));
68818 +- atomic_read(&fscache_n_object_created),
68819 +- atomic_read(&fscache_n_object_lookups_timed_out));
68820 + atomic_read_unchecked(&fscache_n_object_lookups),
68821 + atomic_read_unchecked(&fscache_n_object_lookups_negative),
68822 + atomic_read_unchecked(&fscache_n_object_lookups_positive),
68823 -+ atomic_read_unchecked(&fscache_n_object_lookups_timed_out),
68824 -+ atomic_read_unchecked(&fscache_n_object_created));
68825 ++ atomic_read_unchecked(&fscache_n_object_created),
68826 ++ atomic_read_unchecked(&fscache_n_object_lookups_timed_out));
68827
68828 seq_printf(m, "Updates: n=%u nul=%u run=%u\n",
68829 - atomic_read(&fscache_n_updates),
68830 @@ -46668,92 +43805,102 @@ diff -urNp linux-2.6.32.48/fs/fscache/stats.c linux-2.6.32.48/fs/fscache/stats.c
68831
68832 seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
68833 atomic_read(&fscache_n_cop_alloc_object),
68834 -diff -urNp linux-2.6.32.48/fs/fs_struct.c linux-2.6.32.48/fs/fs_struct.c
68835 ---- linux-2.6.32.48/fs/fs_struct.c 2009-12-02 22:51:21.000000000 -0500
68836 -+++ linux-2.6.32.48/fs/fs_struct.c 2011-11-12 12:46:47.000000000 -0500
68837 +diff -urNp linux-3.0.8/fs/fs_struct.c linux-3.0.8/fs/fs_struct.c
68838 +--- linux-3.0.8/fs/fs_struct.c 2011-07-21 22:17:23.000000000 -0400
68839 ++++ linux-3.0.8/fs/fs_struct.c 2011-08-23 21:48:14.000000000 -0400
68840 @@ -4,6 +4,7 @@
68841 #include <linux/path.h>
68842 #include <linux/slab.h>
68843 #include <linux/fs_struct.h>
68844 +#include <linux/grsecurity.h>
68845 + #include "internal.h"
68846
68847 - /*
68848 - * Replace the fs->{rootmnt,root} with {mnt,dentry}. Put the old values.
68849 -@@ -17,6 +18,7 @@ void set_fs_root(struct fs_struct *fs, s
68850 + static inline void path_get_longterm(struct path *path)
68851 +@@ -31,6 +32,7 @@ void set_fs_root(struct fs_struct *fs, s
68852 old_root = fs->root;
68853 fs->root = *path;
68854 - path_get(path);
68855 + path_get_longterm(path);
68856 + gr_set_chroot_entries(current, path);
68857 - write_unlock(&fs->lock);
68858 + write_seqcount_end(&fs->seq);
68859 + spin_unlock(&fs->lock);
68860 if (old_root.dentry)
68861 - path_put(&old_root);
68862 -@@ -56,6 +58,7 @@ void chroot_fs_refs(struct path *old_roo
68863 +@@ -74,6 +76,7 @@ void chroot_fs_refs(struct path *old_roo
68864 && fs->root.mnt == old_root->mnt) {
68865 - path_get(new_root);
68866 + path_get_longterm(new_root);
68867 fs->root = *new_root;
68868 + gr_set_chroot_entries(p, new_root);
68869 count++;
68870 }
68871 if (fs->pwd.dentry == old_root->dentry
68872 -@@ -89,7 +92,8 @@ void exit_fs(struct task_struct *tsk)
68873 - task_lock(tsk);
68874 - write_lock(&fs->lock);
68875 +@@ -109,7 +112,8 @@ void exit_fs(struct task_struct *tsk)
68876 + spin_lock(&fs->lock);
68877 + write_seqcount_begin(&fs->seq);
68878 tsk->fs = NULL;
68879 - kill = !--fs->users;
68880 + gr_clear_chroot_entries(tsk);
68881 + kill = !atomic_dec_return(&fs->users);
68882 - write_unlock(&fs->lock);
68883 + write_seqcount_end(&fs->seq);
68884 + spin_unlock(&fs->lock);
68885 task_unlock(tsk);
68886 - if (kill)
68887 -@@ -102,7 +106,7 @@ struct fs_struct *copy_fs_struct(struct
68888 +@@ -123,7 +127,7 @@ struct fs_struct *copy_fs_struct(struct
68889 struct fs_struct *fs = kmem_cache_alloc(fs_cachep, GFP_KERNEL);
68890 /* We don't need to lock fs - think why ;-) */
68891 if (fs) {
68892 - fs->users = 1;
68893 + atomic_set(&fs->users, 1);
68894 fs->in_exec = 0;
68895 - rwlock_init(&fs->lock);
68896 - fs->umask = old->umask;
68897 -@@ -127,8 +131,9 @@ int unshare_fs_struct(void)
68898 + spin_lock_init(&fs->lock);
68899 + seqcount_init(&fs->seq);
68900 +@@ -132,6 +136,9 @@ struct fs_struct *copy_fs_struct(struct
68901 + spin_lock(&old->lock);
68902 + fs->root = old->root;
68903 + path_get_longterm(&fs->root);
68904 ++ /* instead of calling gr_set_chroot_entries here,
68905 ++ we call it from every caller of this function
68906 ++ */
68907 + fs->pwd = old->pwd;
68908 + path_get_longterm(&fs->pwd);
68909 + spin_unlock(&old->lock);
68910 +@@ -150,8 +157,9 @@ int unshare_fs_struct(void)
68911
68912 task_lock(current);
68913 - write_lock(&fs->lock);
68914 + spin_lock(&fs->lock);
68915 - kill = !--fs->users;
68916 + kill = !atomic_dec_return(&fs->users);
68917 current->fs = new_fs;
68918 + gr_set_chroot_entries(current, &new_fs->root);
68919 - write_unlock(&fs->lock);
68920 + spin_unlock(&fs->lock);
68921 task_unlock(current);
68922
68923 -@@ -147,7 +152,7 @@ EXPORT_SYMBOL(current_umask);
68924 +@@ -170,7 +178,7 @@ EXPORT_SYMBOL(current_umask);
68925
68926 /* to be mentioned only in INIT_TASK */
68927 struct fs_struct init_fs = {
68928 - .users = 1,
68929 + .users = ATOMIC_INIT(1),
68930 - .lock = __RW_LOCK_UNLOCKED(init_fs.lock),
68931 + .lock = __SPIN_LOCK_UNLOCKED(init_fs.lock),
68932 + .seq = SEQCNT_ZERO,
68933 .umask = 0022,
68934 - };
68935 -@@ -162,12 +167,13 @@ void daemonize_fs_struct(void)
68936 +@@ -186,12 +194,13 @@ void daemonize_fs_struct(void)
68937 task_lock(current);
68938
68939 - write_lock(&init_fs.lock);
68940 + spin_lock(&init_fs.lock);
68941 - init_fs.users++;
68942 + atomic_inc(&init_fs.users);
68943 - write_unlock(&init_fs.lock);
68944 + spin_unlock(&init_fs.lock);
68945
68946 - write_lock(&fs->lock);
68947 + spin_lock(&fs->lock);
68948 current->fs = &init_fs;
68949 - kill = !--fs->users;
68950 + gr_set_chroot_entries(current, &current->fs->root);
68951 + kill = !atomic_dec_return(&fs->users);
68952 - write_unlock(&fs->lock);
68953 + spin_unlock(&fs->lock);
68954
68955 task_unlock(current);
68956 -diff -urNp linux-2.6.32.48/fs/fuse/cuse.c linux-2.6.32.48/fs/fuse/cuse.c
68957 ---- linux-2.6.32.48/fs/fuse/cuse.c 2009-12-02 22:51:21.000000000 -0500
68958 -+++ linux-2.6.32.48/fs/fuse/cuse.c 2011-11-12 12:46:47.000000000 -0500
68959 -@@ -576,10 +576,12 @@ static int __init cuse_init(void)
68960 +diff -urNp linux-3.0.8/fs/fuse/cuse.c linux-3.0.8/fs/fuse/cuse.c
68961 +--- linux-3.0.8/fs/fuse/cuse.c 2011-07-21 22:17:23.000000000 -0400
68962 ++++ linux-3.0.8/fs/fuse/cuse.c 2011-08-23 21:47:56.000000000 -0400
68963 +@@ -586,10 +586,12 @@ static int __init cuse_init(void)
68964 INIT_LIST_HEAD(&cuse_conntbl[i]);
68965
68966 /* inherit and extend fuse_dev_operations */
68967 @@ -46770,56 +43917,22 @@ diff -urNp linux-2.6.32.48/fs/fuse/cuse.c linux-2.6.32.48/fs/fuse/cuse.c
68968
68969 cuse_class = class_create(THIS_MODULE, "cuse");
68970 if (IS_ERR(cuse_class))
68971 -diff -urNp linux-2.6.32.48/fs/fuse/dev.c linux-2.6.32.48/fs/fuse/dev.c
68972 ---- linux-2.6.32.48/fs/fuse/dev.c 2011-11-12 12:44:30.000000000 -0500
68973 -+++ linux-2.6.32.48/fs/fuse/dev.c 2011-11-12 12:46:47.000000000 -0500
68974 -@@ -885,7 +885,7 @@ static int fuse_notify_inval_entry(struc
68975 - {
68976 - struct fuse_notify_inval_entry_out outarg;
68977 - int err = -EINVAL;
68978 -- char buf[FUSE_NAME_MAX+1];
68979 -+ char *buf = NULL;
68980 - struct qstr name;
68981 -
68982 - if (size < sizeof(outarg))
68983 -@@ -899,6 +899,11 @@ static int fuse_notify_inval_entry(struc
68984 - if (outarg.namelen > FUSE_NAME_MAX)
68985 - goto err;
68986 -
68987 -+ err = -ENOMEM;
68988 -+ buf = kmalloc(FUSE_NAME_MAX+1, GFP_KERNEL);
68989 -+ if (!buf)
68990 -+ goto err;
68991 -+
68992 - err = -EINVAL;
68993 - if (size != sizeof(outarg) + outarg.namelen + 1)
68994 - goto err;
68995 -@@ -914,17 +919,15 @@ static int fuse_notify_inval_entry(struc
68996 -
68997 - down_read(&fc->killsb);
68998 - err = -ENOENT;
68999 -- if (!fc->sb)
69000 -- goto err_unlock;
69001 --
69002 -- err = fuse_reverse_inval_entry(fc->sb, outarg.parent, &name);
69003 --
69004 --err_unlock:
69005 -+ if (fc->sb)
69006 -+ err = fuse_reverse_inval_entry(fc->sb, outarg.parent, &name);
69007 - up_read(&fc->killsb);
69008 -+ kfree(buf);
69009 - return err;
69010 -
69011 - err:
69012 - fuse_copy_finish(cs);
69013 -+ kfree(buf);
69014 - return err;
69015 - }
69016 +diff -urNp linux-3.0.8/fs/fuse/dev.c linux-3.0.8/fs/fuse/dev.c
69017 +--- linux-3.0.8/fs/fuse/dev.c 2011-10-25 09:10:33.000000000 -0400
69018 ++++ linux-3.0.8/fs/fuse/dev.c 2011-10-25 09:10:41.000000000 -0400
69019 +@@ -1242,7 +1242,7 @@ static ssize_t fuse_dev_splice_read(stru
69020 + ret = 0;
69021 + pipe_lock(pipe);
69022
69023 -diff -urNp linux-2.6.32.48/fs/fuse/dir.c linux-2.6.32.48/fs/fuse/dir.c
69024 ---- linux-2.6.32.48/fs/fuse/dir.c 2009-12-02 22:51:21.000000000 -0500
69025 -+++ linux-2.6.32.48/fs/fuse/dir.c 2011-11-12 12:46:47.000000000 -0500
69026 -@@ -1127,7 +1127,7 @@ static char *read_link(struct dentry *de
69027 +- if (!pipe->readers) {
69028 ++ if (!atomic_read(&pipe->readers)) {
69029 + send_sig(SIGPIPE, current, 0);
69030 + if (!ret)
69031 + ret = -EPIPE;
69032 +diff -urNp linux-3.0.8/fs/fuse/dir.c linux-3.0.8/fs/fuse/dir.c
69033 +--- linux-3.0.8/fs/fuse/dir.c 2011-07-21 22:17:23.000000000 -0400
69034 ++++ linux-3.0.8/fs/fuse/dir.c 2011-08-23 21:47:56.000000000 -0400
69035 +@@ -1148,7 +1148,7 @@ static char *read_link(struct dentry *de
69036 return link;
69037 }
69038
69039 @@ -46828,43 +43941,22 @@ diff -urNp linux-2.6.32.48/fs/fuse/dir.c linux-2.6.32.48/fs/fuse/dir.c
69040 {
69041 if (!IS_ERR(link))
69042 free_page((unsigned long) link);
69043 -diff -urNp linux-2.6.32.48/fs/gfs2/ops_inode.c linux-2.6.32.48/fs/gfs2/ops_inode.c
69044 ---- linux-2.6.32.48/fs/gfs2/ops_inode.c 2009-12-02 22:51:21.000000000 -0500
69045 -+++ linux-2.6.32.48/fs/gfs2/ops_inode.c 2011-11-12 12:46:47.000000000 -0500
69046 -@@ -752,6 +752,8 @@ static int gfs2_rename(struct inode *odi
69047 - unsigned int x;
69048 - int error;
69049 -
69050 -+ pax_track_stack();
69051 -+
69052 - if (ndentry->d_inode) {
69053 - nip = GFS2_I(ndentry->d_inode);
69054 - if (ip == nip)
69055 -diff -urNp linux-2.6.32.48/fs/gfs2/sys.c linux-2.6.32.48/fs/gfs2/sys.c
69056 ---- linux-2.6.32.48/fs/gfs2/sys.c 2009-12-02 22:51:21.000000000 -0500
69057 -+++ linux-2.6.32.48/fs/gfs2/sys.c 2011-11-12 12:46:47.000000000 -0500
69058 -@@ -49,7 +49,7 @@ static ssize_t gfs2_attr_store(struct ko
69059 - return a->store ? a->store(sdp, buf, len) : len;
69060 - }
69061 +diff -urNp linux-3.0.8/fs/gfs2/inode.c linux-3.0.8/fs/gfs2/inode.c
69062 +--- linux-3.0.8/fs/gfs2/inode.c 2011-07-21 22:17:23.000000000 -0400
69063 ++++ linux-3.0.8/fs/gfs2/inode.c 2011-08-23 21:47:56.000000000 -0400
69064 +@@ -1525,7 +1525,7 @@ out:
69065
69066 --static struct sysfs_ops gfs2_attr_ops = {
69067 -+static const struct sysfs_ops gfs2_attr_ops = {
69068 - .show = gfs2_attr_show,
69069 - .store = gfs2_attr_store,
69070 - };
69071 -@@ -584,7 +584,7 @@ static int gfs2_uevent(struct kset *kset
69072 - return 0;
69073 + static void gfs2_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
69074 + {
69075 +- char *s = nd_get_link(nd);
69076 ++ const char *s = nd_get_link(nd);
69077 + if (!IS_ERR(s))
69078 + kfree(s);
69079 }
69080 -
69081 --static struct kset_uevent_ops gfs2_uevent_ops = {
69082 -+static const struct kset_uevent_ops gfs2_uevent_ops = {
69083 - .uevent = gfs2_uevent,
69084 - };
69085 -
69086 -diff -urNp linux-2.6.32.48/fs/hfsplus/catalog.c linux-2.6.32.48/fs/hfsplus/catalog.c
69087 ---- linux-2.6.32.48/fs/hfsplus/catalog.c 2009-12-02 22:51:21.000000000 -0500
69088 -+++ linux-2.6.32.48/fs/hfsplus/catalog.c 2011-11-12 12:46:47.000000000 -0500
69089 -@@ -157,6 +157,8 @@ int hfsplus_find_cat(struct super_block
69090 +diff -urNp linux-3.0.8/fs/hfsplus/catalog.c linux-3.0.8/fs/hfsplus/catalog.c
69091 +--- linux-3.0.8/fs/hfsplus/catalog.c 2011-07-21 22:17:23.000000000 -0400
69092 ++++ linux-3.0.8/fs/hfsplus/catalog.c 2011-08-23 21:48:14.000000000 -0400
69093 +@@ -179,6 +179,8 @@ int hfsplus_find_cat(struct super_block
69094 int err;
69095 u16 type;
69096
69097 @@ -46873,28 +43965,28 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/catalog.c linux-2.6.32.48/fs/hfsplus/catal
69098 hfsplus_cat_build_key(sb, fd->search_key, cnid, NULL);
69099 err = hfs_brec_read(fd, &tmp, sizeof(hfsplus_cat_entry));
69100 if (err)
69101 -@@ -186,6 +188,8 @@ int hfsplus_create_cat(u32 cnid, struct
69102 +@@ -210,6 +212,8 @@ int hfsplus_create_cat(u32 cnid, struct
69103 int entry_size;
69104 int err;
69105
69106 + pax_track_stack();
69107 +
69108 - dprint(DBG_CAT_MOD, "create_cat: %s,%u(%d)\n", str->name, cnid, inode->i_nlink);
69109 - sb = dir->i_sb;
69110 - hfs_find_init(HFSPLUS_SB(sb).cat_tree, &fd);
69111 -@@ -318,6 +322,8 @@ int hfsplus_rename_cat(u32 cnid,
69112 + dprint(DBG_CAT_MOD, "create_cat: %s,%u(%d)\n",
69113 + str->name, cnid, inode->i_nlink);
69114 + hfs_find_init(HFSPLUS_SB(sb)->cat_tree, &fd);
69115 +@@ -349,6 +353,8 @@ int hfsplus_rename_cat(u32 cnid,
69116 int entry_size, type;
69117 int err = 0;
69118
69119 + pax_track_stack();
69120 +
69121 - dprint(DBG_CAT_MOD, "rename_cat: %u - %lu,%s - %lu,%s\n", cnid, src_dir->i_ino, src_name->name,
69122 + dprint(DBG_CAT_MOD, "rename_cat: %u - %lu,%s - %lu,%s\n",
69123 + cnid, src_dir->i_ino, src_name->name,
69124 dst_dir->i_ino, dst_name->name);
69125 - sb = src_dir->i_sb;
69126 -diff -urNp linux-2.6.32.48/fs/hfsplus/dir.c linux-2.6.32.48/fs/hfsplus/dir.c
69127 ---- linux-2.6.32.48/fs/hfsplus/dir.c 2009-12-02 22:51:21.000000000 -0500
69128 -+++ linux-2.6.32.48/fs/hfsplus/dir.c 2011-11-12 12:46:47.000000000 -0500
69129 -@@ -121,6 +121,8 @@ static int hfsplus_readdir(struct file *
69130 +diff -urNp linux-3.0.8/fs/hfsplus/dir.c linux-3.0.8/fs/hfsplus/dir.c
69131 +--- linux-3.0.8/fs/hfsplus/dir.c 2011-07-21 22:17:23.000000000 -0400
69132 ++++ linux-3.0.8/fs/hfsplus/dir.c 2011-08-23 21:48:14.000000000 -0400
69133 +@@ -129,6 +129,8 @@ static int hfsplus_readdir(struct file *
69134 struct hfsplus_readdir_data *rd;
69135 u16 type;
69136
69137 @@ -46903,10 +43995,10 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/dir.c linux-2.6.32.48/fs/hfsplus/dir.c
69138 if (filp->f_pos >= inode->i_size)
69139 return 0;
69140
69141 -diff -urNp linux-2.6.32.48/fs/hfsplus/inode.c linux-2.6.32.48/fs/hfsplus/inode.c
69142 ---- linux-2.6.32.48/fs/hfsplus/inode.c 2009-12-02 22:51:21.000000000 -0500
69143 -+++ linux-2.6.32.48/fs/hfsplus/inode.c 2011-11-12 12:46:47.000000000 -0500
69144 -@@ -399,6 +399,8 @@ int hfsplus_cat_read_inode(struct inode
69145 +diff -urNp linux-3.0.8/fs/hfsplus/inode.c linux-3.0.8/fs/hfsplus/inode.c
69146 +--- linux-3.0.8/fs/hfsplus/inode.c 2011-07-21 22:17:23.000000000 -0400
69147 ++++ linux-3.0.8/fs/hfsplus/inode.c 2011-08-23 21:48:14.000000000 -0400
69148 +@@ -489,6 +489,8 @@ int hfsplus_cat_read_inode(struct inode
69149 int res = 0;
69150 u16 type;
69151
69152 @@ -46914,20 +44006,20 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/inode.c linux-2.6.32.48/fs/hfsplus/inode.c
69153 +
69154 type = hfs_bnode_read_u16(fd->bnode, fd->entryoffset);
69155
69156 - HFSPLUS_I(inode).dev = 0;
69157 -@@ -461,6 +463,8 @@ int hfsplus_cat_write_inode(struct inode
69158 + HFSPLUS_I(inode)->linkid = 0;
69159 +@@ -552,6 +554,8 @@ int hfsplus_cat_write_inode(struct inode
69160 struct hfs_find_data fd;
69161 hfsplus_cat_entry entry;
69162
69163 + pax_track_stack();
69164 +
69165 if (HFSPLUS_IS_RSRC(inode))
69166 - main_inode = HFSPLUS_I(inode).rsrc_inode;
69167 + main_inode = HFSPLUS_I(inode)->rsrc_inode;
69168
69169 -diff -urNp linux-2.6.32.48/fs/hfsplus/ioctl.c linux-2.6.32.48/fs/hfsplus/ioctl.c
69170 ---- linux-2.6.32.48/fs/hfsplus/ioctl.c 2009-12-02 22:51:21.000000000 -0500
69171 -+++ linux-2.6.32.48/fs/hfsplus/ioctl.c 2011-11-12 12:46:47.000000000 -0500
69172 -@@ -101,6 +101,8 @@ int hfsplus_setxattr(struct dentry *dent
69173 +diff -urNp linux-3.0.8/fs/hfsplus/ioctl.c linux-3.0.8/fs/hfsplus/ioctl.c
69174 +--- linux-3.0.8/fs/hfsplus/ioctl.c 2011-07-21 22:17:23.000000000 -0400
69175 ++++ linux-3.0.8/fs/hfsplus/ioctl.c 2011-08-23 21:48:14.000000000 -0400
69176 +@@ -122,6 +122,8 @@ int hfsplus_setxattr(struct dentry *dent
69177 struct hfsplus_cat_file *file;
69178 int res;
69179
69180 @@ -46936,7 +44028,7 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/ioctl.c linux-2.6.32.48/fs/hfsplus/ioctl.c
69181 if (!S_ISREG(inode->i_mode) || HFSPLUS_IS_RSRC(inode))
69182 return -EOPNOTSUPP;
69183
69184 -@@ -143,6 +145,8 @@ ssize_t hfsplus_getxattr(struct dentry *
69185 +@@ -166,6 +168,8 @@ ssize_t hfsplus_getxattr(struct dentry *
69186 struct hfsplus_cat_file *file;
69187 ssize_t res = 0;
69188
69189 @@ -46945,22 +44037,22 @@ diff -urNp linux-2.6.32.48/fs/hfsplus/ioctl.c linux-2.6.32.48/fs/hfsplus/ioctl.c
69190 if (!S_ISREG(inode->i_mode) || HFSPLUS_IS_RSRC(inode))
69191 return -EOPNOTSUPP;
69192
69193 -diff -urNp linux-2.6.32.48/fs/hfsplus/super.c linux-2.6.32.48/fs/hfsplus/super.c
69194 ---- linux-2.6.32.48/fs/hfsplus/super.c 2009-12-02 22:51:21.000000000 -0500
69195 -+++ linux-2.6.32.48/fs/hfsplus/super.c 2011-11-12 12:46:47.000000000 -0500
69196 -@@ -312,6 +312,8 @@ static int hfsplus_fill_super(struct sup
69197 +diff -urNp linux-3.0.8/fs/hfsplus/super.c linux-3.0.8/fs/hfsplus/super.c
69198 +--- linux-3.0.8/fs/hfsplus/super.c 2011-10-25 09:10:33.000000000 -0400
69199 ++++ linux-3.0.8/fs/hfsplus/super.c 2011-10-25 09:10:41.000000000 -0400
69200 +@@ -340,6 +340,8 @@ static int hfsplus_fill_super(struct sup
69201 struct nls_table *nls = NULL;
69202 - int err = -EINVAL;
69203 + int err;
69204
69205 + pax_track_stack();
69206 +
69207 + err = -EINVAL;
69208 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
69209 if (!sbi)
69210 - return -ENOMEM;
69211 -diff -urNp linux-2.6.32.48/fs/hugetlbfs/inode.c linux-2.6.32.48/fs/hugetlbfs/inode.c
69212 ---- linux-2.6.32.48/fs/hugetlbfs/inode.c 2009-12-02 22:51:21.000000000 -0500
69213 -+++ linux-2.6.32.48/fs/hugetlbfs/inode.c 2011-11-12 12:46:47.000000000 -0500
69214 -@@ -909,7 +909,7 @@ static struct file_system_type hugetlbfs
69215 +diff -urNp linux-3.0.8/fs/hugetlbfs/inode.c linux-3.0.8/fs/hugetlbfs/inode.c
69216 +--- linux-3.0.8/fs/hugetlbfs/inode.c 2011-07-21 22:17:23.000000000 -0400
69217 ++++ linux-3.0.8/fs/hugetlbfs/inode.c 2011-08-23 21:48:14.000000000 -0400
69218 +@@ -914,7 +914,7 @@ static struct file_system_type hugetlbfs
69219 .kill_sb = kill_litter_super,
69220 };
69221
69222 @@ -46969,40 +44061,24 @@ diff -urNp linux-2.6.32.48/fs/hugetlbfs/inode.c linux-2.6.32.48/fs/hugetlbfs/ino
69223
69224 static int can_do_hugetlb_shm(void)
69225 {
69226 -diff -urNp linux-2.6.32.48/fs/ioctl.c linux-2.6.32.48/fs/ioctl.c
69227 ---- linux-2.6.32.48/fs/ioctl.c 2009-12-02 22:51:21.000000000 -0500
69228 -+++ linux-2.6.32.48/fs/ioctl.c 2011-11-12 12:46:47.000000000 -0500
69229 -@@ -97,7 +97,7 @@ int fiemap_fill_next_extent(struct fiema
69230 - u64 phys, u64 len, u32 flags)
69231 - {
69232 - struct fiemap_extent extent;
69233 -- struct fiemap_extent *dest = fieinfo->fi_extents_start;
69234 -+ struct fiemap_extent __user *dest = fieinfo->fi_extents_start;
69235 -
69236 - /* only count the extents */
69237 - if (fieinfo->fi_extents_max == 0) {
69238 -@@ -207,7 +207,7 @@ static int ioctl_fiemap(struct file *fil
69239 -
69240 - fieinfo.fi_flags = fiemap.fm_flags;
69241 - fieinfo.fi_extents_max = fiemap.fm_extent_count;
69242 -- fieinfo.fi_extents_start = (struct fiemap_extent *)(arg + sizeof(fiemap));
69243 -+ fieinfo.fi_extents_start = (struct fiemap_extent __user *)(arg + sizeof(fiemap));
69244 -
69245 - if (fiemap.fm_extent_count != 0 &&
69246 - !access_ok(VERIFY_WRITE, fieinfo.fi_extents_start,
69247 -@@ -220,7 +220,7 @@ static int ioctl_fiemap(struct file *fil
69248 - error = inode->i_op->fiemap(inode, &fieinfo, fiemap.fm_start, len);
69249 - fiemap.fm_flags = fieinfo.fi_flags;
69250 - fiemap.fm_mapped_extents = fieinfo.fi_extents_mapped;
69251 -- if (copy_to_user((char *)arg, &fiemap, sizeof(fiemap)))
69252 -+ if (copy_to_user((__force char __user *)arg, &fiemap, sizeof(fiemap)))
69253 - error = -EFAULT;
69254 +diff -urNp linux-3.0.8/fs/inode.c linux-3.0.8/fs/inode.c
69255 +--- linux-3.0.8/fs/inode.c 2011-07-21 22:17:23.000000000 -0400
69256 ++++ linux-3.0.8/fs/inode.c 2011-08-23 21:47:56.000000000 -0400
69257 +@@ -829,8 +829,8 @@ unsigned int get_next_ino(void)
69258
69259 - return error;
69260 -diff -urNp linux-2.6.32.48/fs/jbd/checkpoint.c linux-2.6.32.48/fs/jbd/checkpoint.c
69261 ---- linux-2.6.32.48/fs/jbd/checkpoint.c 2009-12-02 22:51:21.000000000 -0500
69262 -+++ linux-2.6.32.48/fs/jbd/checkpoint.c 2011-11-12 12:46:47.000000000 -0500
69263 -@@ -348,6 +348,8 @@ int log_do_checkpoint(journal_t *journal
69264 + #ifdef CONFIG_SMP
69265 + if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
69266 +- static atomic_t shared_last_ino;
69267 +- int next = atomic_add_return(LAST_INO_BATCH, &shared_last_ino);
69268 ++ static atomic_unchecked_t shared_last_ino;
69269 ++ int next = atomic_add_return_unchecked(LAST_INO_BATCH, &shared_last_ino);
69270 +
69271 + res = next - LAST_INO_BATCH;
69272 + }
69273 +diff -urNp linux-3.0.8/fs/jbd/checkpoint.c linux-3.0.8/fs/jbd/checkpoint.c
69274 +--- linux-3.0.8/fs/jbd/checkpoint.c 2011-07-21 22:17:23.000000000 -0400
69275 ++++ linux-3.0.8/fs/jbd/checkpoint.c 2011-08-23 21:48:14.000000000 -0400
69276 +@@ -350,6 +350,8 @@ int log_do_checkpoint(journal_t *journal
69277 tid_t this_tid;
69278 int result;
69279
69280 @@ -47011,9 +44087,9 @@ diff -urNp linux-2.6.32.48/fs/jbd/checkpoint.c linux-2.6.32.48/fs/jbd/checkpoint
69281 jbd_debug(1, "Start checkpoint\n");
69282
69283 /*
69284 -diff -urNp linux-2.6.32.48/fs/jffs2/compr_rtime.c linux-2.6.32.48/fs/jffs2/compr_rtime.c
69285 ---- linux-2.6.32.48/fs/jffs2/compr_rtime.c 2009-12-02 22:51:21.000000000 -0500
69286 -+++ linux-2.6.32.48/fs/jffs2/compr_rtime.c 2011-11-12 12:46:47.000000000 -0500
69287 +diff -urNp linux-3.0.8/fs/jffs2/compr_rtime.c linux-3.0.8/fs/jffs2/compr_rtime.c
69288 +--- linux-3.0.8/fs/jffs2/compr_rtime.c 2011-07-21 22:17:23.000000000 -0400
69289 ++++ linux-3.0.8/fs/jffs2/compr_rtime.c 2011-08-23 21:48:14.000000000 -0400
69290 @@ -37,6 +37,8 @@ static int jffs2_rtime_compress(unsigned
69291 int outpos = 0;
69292 int pos=0;
69293 @@ -47023,7 +44099,7 @@ diff -urNp linux-2.6.32.48/fs/jffs2/compr_rtime.c linux-2.6.32.48/fs/jffs2/compr
69294 memset(positions,0,sizeof(positions));
69295
69296 while (pos < (*sourcelen) && outpos <= (*dstlen)-2) {
69297 -@@ -79,6 +81,8 @@ static int jffs2_rtime_decompress(unsign
69298 +@@ -78,6 +80,8 @@ static int jffs2_rtime_decompress(unsign
69299 int outpos = 0;
69300 int pos=0;
69301
69302 @@ -47032,9 +44108,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/compr_rtime.c linux-2.6.32.48/fs/jffs2/compr
69303 memset(positions,0,sizeof(positions));
69304
69305 while (outpos<destlen) {
69306 -diff -urNp linux-2.6.32.48/fs/jffs2/compr_rubin.c linux-2.6.32.48/fs/jffs2/compr_rubin.c
69307 ---- linux-2.6.32.48/fs/jffs2/compr_rubin.c 2009-12-02 22:51:21.000000000 -0500
69308 -+++ linux-2.6.32.48/fs/jffs2/compr_rubin.c 2011-11-12 12:46:47.000000000 -0500
69309 +diff -urNp linux-3.0.8/fs/jffs2/compr_rubin.c linux-3.0.8/fs/jffs2/compr_rubin.c
69310 +--- linux-3.0.8/fs/jffs2/compr_rubin.c 2011-07-21 22:17:23.000000000 -0400
69311 ++++ linux-3.0.8/fs/jffs2/compr_rubin.c 2011-08-23 21:48:14.000000000 -0400
69312 @@ -314,6 +314,8 @@ static int jffs2_dynrubin_compress(unsig
69313 int ret;
69314 uint32_t mysrclen, mydstlen;
69315 @@ -47044,10 +44120,10 @@ diff -urNp linux-2.6.32.48/fs/jffs2/compr_rubin.c linux-2.6.32.48/fs/jffs2/compr
69316 mysrclen = *sourcelen;
69317 mydstlen = *dstlen - 8;
69318
69319 -diff -urNp linux-2.6.32.48/fs/jffs2/erase.c linux-2.6.32.48/fs/jffs2/erase.c
69320 ---- linux-2.6.32.48/fs/jffs2/erase.c 2009-12-02 22:51:21.000000000 -0500
69321 -+++ linux-2.6.32.48/fs/jffs2/erase.c 2011-11-12 12:46:47.000000000 -0500
69322 -@@ -434,7 +434,8 @@ static void jffs2_mark_erased_block(stru
69323 +diff -urNp linux-3.0.8/fs/jffs2/erase.c linux-3.0.8/fs/jffs2/erase.c
69324 +--- linux-3.0.8/fs/jffs2/erase.c 2011-07-21 22:17:23.000000000 -0400
69325 ++++ linux-3.0.8/fs/jffs2/erase.c 2011-08-23 21:47:56.000000000 -0400
69326 +@@ -439,7 +439,8 @@ static void jffs2_mark_erased_block(stru
69327 struct jffs2_unknown_node marker = {
69328 .magic = cpu_to_je16(JFFS2_MAGIC_BITMASK),
69329 .nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER),
69330 @@ -47057,9 +44133,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/erase.c linux-2.6.32.48/fs/jffs2/erase.c
69331 };
69332
69333 jffs2_prealloc_raw_node_refs(c, jeb, 1);
69334 -diff -urNp linux-2.6.32.48/fs/jffs2/wbuf.c linux-2.6.32.48/fs/jffs2/wbuf.c
69335 ---- linux-2.6.32.48/fs/jffs2/wbuf.c 2009-12-02 22:51:21.000000000 -0500
69336 -+++ linux-2.6.32.48/fs/jffs2/wbuf.c 2011-11-12 12:46:47.000000000 -0500
69337 +diff -urNp linux-3.0.8/fs/jffs2/wbuf.c linux-3.0.8/fs/jffs2/wbuf.c
69338 +--- linux-3.0.8/fs/jffs2/wbuf.c 2011-07-21 22:17:23.000000000 -0400
69339 ++++ linux-3.0.8/fs/jffs2/wbuf.c 2011-08-23 21:47:56.000000000 -0400
69340 @@ -1012,7 +1012,8 @@ static const struct jffs2_unknown_node o
69341 {
69342 .magic = constant_cpu_to_je16(JFFS2_MAGIC_BITMASK),
69343 @@ -47070,9 +44146,9 @@ diff -urNp linux-2.6.32.48/fs/jffs2/wbuf.c linux-2.6.32.48/fs/jffs2/wbuf.c
69344 };
69345
69346 /*
69347 -diff -urNp linux-2.6.32.48/fs/jffs2/xattr.c linux-2.6.32.48/fs/jffs2/xattr.c
69348 ---- linux-2.6.32.48/fs/jffs2/xattr.c 2009-12-02 22:51:21.000000000 -0500
69349 -+++ linux-2.6.32.48/fs/jffs2/xattr.c 2011-11-12 12:46:47.000000000 -0500
69350 +diff -urNp linux-3.0.8/fs/jffs2/xattr.c linux-3.0.8/fs/jffs2/xattr.c
69351 +--- linux-3.0.8/fs/jffs2/xattr.c 2011-07-21 22:17:23.000000000 -0400
69352 ++++ linux-3.0.8/fs/jffs2/xattr.c 2011-08-23 21:48:14.000000000 -0400
69353 @@ -773,6 +773,8 @@ void jffs2_build_xattr_subsystem(struct
69354
69355 BUG_ON(!(c->flags & JFFS2_SB_FLAG_BUILDING));
69356 @@ -47082,10 +44158,10 @@ diff -urNp linux-2.6.32.48/fs/jffs2/xattr.c linux-2.6.32.48/fs/jffs2/xattr.c
69357 /* Phase.1 : Merge same xref */
69358 for (i=0; i < XREF_TMPHASH_SIZE; i++)
69359 xref_tmphash[i] = NULL;
69360 -diff -urNp linux-2.6.32.48/fs/jfs/super.c linux-2.6.32.48/fs/jfs/super.c
69361 ---- linux-2.6.32.48/fs/jfs/super.c 2009-12-02 22:51:21.000000000 -0500
69362 -+++ linux-2.6.32.48/fs/jfs/super.c 2011-11-12 12:46:47.000000000 -0500
69363 -@@ -793,7 +793,7 @@ static int __init init_jfs_fs(void)
69364 +diff -urNp linux-3.0.8/fs/jfs/super.c linux-3.0.8/fs/jfs/super.c
69365 +--- linux-3.0.8/fs/jfs/super.c 2011-07-21 22:17:23.000000000 -0400
69366 ++++ linux-3.0.8/fs/jfs/super.c 2011-08-23 21:47:56.000000000 -0400
69367 +@@ -803,7 +803,7 @@ static int __init init_jfs_fs(void)
69368
69369 jfs_inode_cachep =
69370 kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
69371 @@ -47094,9 +44170,9 @@ diff -urNp linux-2.6.32.48/fs/jfs/super.c linux-2.6.32.48/fs/jfs/super.c
69372 init_once);
69373 if (jfs_inode_cachep == NULL)
69374 return -ENOMEM;
69375 -diff -urNp linux-2.6.32.48/fs/Kconfig.binfmt linux-2.6.32.48/fs/Kconfig.binfmt
69376 ---- linux-2.6.32.48/fs/Kconfig.binfmt 2009-12-02 22:51:21.000000000 -0500
69377 -+++ linux-2.6.32.48/fs/Kconfig.binfmt 2011-11-12 12:46:47.000000000 -0500
69378 +diff -urNp linux-3.0.8/fs/Kconfig.binfmt linux-3.0.8/fs/Kconfig.binfmt
69379 +--- linux-3.0.8/fs/Kconfig.binfmt 2011-07-21 22:17:23.000000000 -0400
69380 ++++ linux-3.0.8/fs/Kconfig.binfmt 2011-08-23 21:47:56.000000000 -0400
69381 @@ -86,7 +86,7 @@ config HAVE_AOUT
69382
69383 config BINFMT_AOUT
69384 @@ -47106,10 +44182,10 @@ diff -urNp linux-2.6.32.48/fs/Kconfig.binfmt linux-2.6.32.48/fs/Kconfig.binfmt
69385 ---help---
69386 A.out (Assembler.OUTput) is a set of formats for libraries and
69387 executables used in the earliest versions of UNIX. Linux used
69388 -diff -urNp linux-2.6.32.48/fs/libfs.c linux-2.6.32.48/fs/libfs.c
69389 ---- linux-2.6.32.48/fs/libfs.c 2011-11-12 12:44:30.000000000 -0500
69390 -+++ linux-2.6.32.48/fs/libfs.c 2011-11-12 12:46:47.000000000 -0500
69391 -@@ -157,12 +157,20 @@ int dcache_readdir(struct file * filp, v
69392 +diff -urNp linux-3.0.8/fs/libfs.c linux-3.0.8/fs/libfs.c
69393 +--- linux-3.0.8/fs/libfs.c 2011-07-21 22:17:23.000000000 -0400
69394 ++++ linux-3.0.8/fs/libfs.c 2011-08-23 21:47:56.000000000 -0400
69395 +@@ -163,6 +163,9 @@ int dcache_readdir(struct file * filp, v
69396
69397 for (p=q->next; p != &dentry->d_subdirs; p=p->next) {
69398 struct dentry *next;
69399 @@ -47117,10 +44193,12 @@ diff -urNp linux-2.6.32.48/fs/libfs.c linux-2.6.32.48/fs/libfs.c
69400 + const unsigned char *name;
69401 +
69402 next = list_entry(p, struct dentry, d_u.d_child);
69403 - if (d_unhashed(next) || !next->d_inode)
69404 - continue;
69405 + spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
69406 + if (!simple_positive(next)) {
69407 +@@ -172,7 +175,12 @@ int dcache_readdir(struct file * filp, v
69408
69409 - spin_unlock(&dcache_lock);
69410 + spin_unlock(&next->d_lock);
69411 + spin_unlock(&dentry->d_lock);
69412 - if (filldir(dirent, next->d_name.name,
69413 + name = next->d_name.name;
69414 + if (name == next->d_iname) {
69415 @@ -47131,9 +44209,9 @@ diff -urNp linux-2.6.32.48/fs/libfs.c linux-2.6.32.48/fs/libfs.c
69416 next->d_name.len, filp->f_pos,
69417 next->d_inode->i_ino,
69418 dt_type(next->d_inode)) < 0)
69419 -diff -urNp linux-2.6.32.48/fs/lockd/clntproc.c linux-2.6.32.48/fs/lockd/clntproc.c
69420 ---- linux-2.6.32.48/fs/lockd/clntproc.c 2011-11-12 12:44:30.000000000 -0500
69421 -+++ linux-2.6.32.48/fs/lockd/clntproc.c 2011-11-12 12:46:47.000000000 -0500
69422 +diff -urNp linux-3.0.8/fs/lockd/clntproc.c linux-3.0.8/fs/lockd/clntproc.c
69423 +--- linux-3.0.8/fs/lockd/clntproc.c 2011-07-21 22:17:23.000000000 -0400
69424 ++++ linux-3.0.8/fs/lockd/clntproc.c 2011-08-23 21:48:14.000000000 -0400
69425 @@ -36,11 +36,11 @@ static const struct rpc_call_ops nlmclnt
69426 /*
69427 * Cookie counter for NLM requests
69428 @@ -47148,7 +44226,7 @@ diff -urNp linux-2.6.32.48/fs/lockd/clntproc.c linux-2.6.32.48/fs/lockd/clntproc
69429
69430 memcpy(c->data, &cookie, 4);
69431 c->len=4;
69432 -@@ -621,6 +621,8 @@ nlmclnt_reclaim(struct nlm_host *host, s
69433 +@@ -620,6 +620,8 @@ nlmclnt_reclaim(struct nlm_host *host, s
69434 struct nlm_rqst reqst, *req;
69435 int status;
69436
69437 @@ -47157,71 +44235,10 @@ diff -urNp linux-2.6.32.48/fs/lockd/clntproc.c linux-2.6.32.48/fs/lockd/clntproc
69438 req = &reqst;
69439 memset(req, 0, sizeof(*req));
69440 locks_init_lock(&req->a_args.lock.fl);
69441 -diff -urNp linux-2.6.32.48/fs/lockd/svc.c linux-2.6.32.48/fs/lockd/svc.c
69442 ---- linux-2.6.32.48/fs/lockd/svc.c 2009-12-02 22:51:21.000000000 -0500
69443 -+++ linux-2.6.32.48/fs/lockd/svc.c 2011-11-12 12:46:47.000000000 -0500
69444 -@@ -43,7 +43,7 @@
69445 -
69446 - static struct svc_program nlmsvc_program;
69447 -
69448 --struct nlmsvc_binding * nlmsvc_ops;
69449 -+const struct nlmsvc_binding * nlmsvc_ops;
69450 - EXPORT_SYMBOL_GPL(nlmsvc_ops);
69451 -
69452 - static DEFINE_MUTEX(nlmsvc_mutex);
69453 -diff -urNp linux-2.6.32.48/fs/locks.c linux-2.6.32.48/fs/locks.c
69454 ---- linux-2.6.32.48/fs/locks.c 2009-12-02 22:51:21.000000000 -0500
69455 -+++ linux-2.6.32.48/fs/locks.c 2011-11-12 12:46:47.000000000 -0500
69456 -@@ -145,10 +145,28 @@ static LIST_HEAD(blocked_list);
69457 -
69458 - static struct kmem_cache *filelock_cache __read_mostly;
69459 -
69460 -+static void locks_init_lock_always(struct file_lock *fl)
69461 -+{
69462 -+ fl->fl_next = NULL;
69463 -+ fl->fl_fasync = NULL;
69464 -+ fl->fl_owner = NULL;
69465 -+ fl->fl_pid = 0;
69466 -+ fl->fl_nspid = NULL;
69467 -+ fl->fl_file = NULL;
69468 -+ fl->fl_flags = 0;
69469 -+ fl->fl_type = 0;
69470 -+ fl->fl_start = fl->fl_end = 0;
69471 -+}
69472 -+
69473 - /* Allocate an empty lock structure. */
69474 - static struct file_lock *locks_alloc_lock(void)
69475 - {
69476 -- return kmem_cache_alloc(filelock_cache, GFP_KERNEL);
69477 -+ struct file_lock *fl = kmem_cache_alloc(filelock_cache, GFP_KERNEL);
69478 -+
69479 -+ if (fl)
69480 -+ locks_init_lock_always(fl);
69481 -+
69482 -+ return fl;
69483 - }
69484 -
69485 - void locks_release_private(struct file_lock *fl)
69486 -@@ -183,17 +201,9 @@ void locks_init_lock(struct file_lock *f
69487 - INIT_LIST_HEAD(&fl->fl_link);
69488 - INIT_LIST_HEAD(&fl->fl_block);
69489 - init_waitqueue_head(&fl->fl_wait);
69490 -- fl->fl_next = NULL;
69491 -- fl->fl_fasync = NULL;
69492 -- fl->fl_owner = NULL;
69493 -- fl->fl_pid = 0;
69494 -- fl->fl_nspid = NULL;
69495 -- fl->fl_file = NULL;
69496 -- fl->fl_flags = 0;
69497 -- fl->fl_type = 0;
69498 -- fl->fl_start = fl->fl_end = 0;
69499 - fl->fl_ops = NULL;
69500 - fl->fl_lmops = NULL;
69501 -+ locks_init_lock_always(fl);
69502 - }
69503 -
69504 - EXPORT_SYMBOL(locks_init_lock);
69505 -@@ -2007,16 +2017,16 @@ void locks_remove_flock(struct file *fil
69506 +diff -urNp linux-3.0.8/fs/locks.c linux-3.0.8/fs/locks.c
69507 +--- linux-3.0.8/fs/locks.c 2011-07-21 22:17:23.000000000 -0400
69508 ++++ linux-3.0.8/fs/locks.c 2011-08-23 21:47:56.000000000 -0400
69509 +@@ -2043,16 +2043,16 @@ void locks_remove_flock(struct file *fil
69510 return;
69511
69512 if (filp->f_op && filp->f_op->flock) {
69513 @@ -47241,231 +44258,290 @@ diff -urNp linux-2.6.32.48/fs/locks.c linux-2.6.32.48/fs/locks.c
69514 + flock.fl_ops->fl_release_private(&flock);
69515 }
69516
69517 - lock_kernel();
69518 -diff -urNp linux-2.6.32.48/fs/mbcache.c linux-2.6.32.48/fs/mbcache.c
69519 ---- linux-2.6.32.48/fs/mbcache.c 2009-12-02 22:51:21.000000000 -0500
69520 -+++ linux-2.6.32.48/fs/mbcache.c 2011-11-12 12:46:47.000000000 -0500
69521 -@@ -266,9 +266,9 @@ mb_cache_create(const char *name, struct
69522 - if (!cache)
69523 - goto fail;
69524 - cache->c_name = name;
69525 -- cache->c_op.free = NULL;
69526 -+ *(void **)&cache->c_op.free = NULL;
69527 - if (cache_op)
69528 -- cache->c_op.free = cache_op->free;
69529 -+ *(void **)&cache->c_op.free = cache_op->free;
69530 - atomic_set(&cache->c_entry_count, 0);
69531 - cache->c_bucket_bits = bucket_bits;
69532 - #ifdef MB_CACHE_INDEXES_COUNT
69533 -diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
69534 ---- linux-2.6.32.48/fs/namei.c 2011-11-12 12:44:30.000000000 -0500
69535 -+++ linux-2.6.32.48/fs/namei.c 2011-11-12 12:46:47.000000000 -0500
69536 -@@ -224,14 +224,6 @@ int generic_permission(struct inode *ino
69537 + lock_flocks();
69538 +diff -urNp linux-3.0.8/fs/logfs/super.c linux-3.0.8/fs/logfs/super.c
69539 +--- linux-3.0.8/fs/logfs/super.c 2011-07-21 22:17:23.000000000 -0400
69540 ++++ linux-3.0.8/fs/logfs/super.c 2011-08-23 21:48:14.000000000 -0400
69541 +@@ -266,6 +266,8 @@ static int logfs_recover_sb(struct super
69542 + struct logfs_disk_super _ds1, *ds1 = &_ds1;
69543 + int err, valid0, valid1;
69544 +
69545 ++ pax_track_stack();
69546 ++
69547 + /* read first superblock */
69548 + err = wbuf_read(sb, super->s_sb_ofs[0], sizeof(*ds0), ds0);
69549 + if (err)
69550 +diff -urNp linux-3.0.8/fs/namei.c linux-3.0.8/fs/namei.c
69551 +--- linux-3.0.8/fs/namei.c 2011-10-24 08:05:30.000000000 -0400
69552 ++++ linux-3.0.8/fs/namei.c 2011-10-19 10:09:26.000000000 -0400
69553 +@@ -237,21 +237,23 @@ int generic_permission(struct inode *ino
69554 return ret;
69555
69556 /*
69557 - * Read/write DACs are always overridable.
69558 -- * Executable DACs are overridable if at least one exec bit is set.
69559 -- */
69560 -- if (!(mask & MAY_EXEC) || execute_ok(inode))
69561 -- if (capable(CAP_DAC_OVERRIDE))
69562 -- return 0;
69563 --
69564 -- /*
69565 - * Searching includes executable on directories, else just read.
69566 +- * Executable DACs are overridable for all directories and
69567 +- * for non-directories that have least one exec bit set.
69568 ++ * Searching includes executable on directories, else just read.
69569 */
69570 - mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
69571 -@@ -239,6 +231,14 @@ int generic_permission(struct inode *ino
69572 - if (capable(CAP_DAC_READ_SEARCH))
69573 +- if (!(mask & MAY_EXEC) || execute_ok(inode))
69574 +- if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
69575 ++ mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
69576 ++ if (mask == MAY_READ || (S_ISDIR(inode->i_mode) && !(mask & MAY_WRITE))) {
69577 ++ if (ns_capable(inode_userns(inode), CAP_DAC_READ_SEARCH))
69578 return 0;
69579 ++ }
69580
69581 -+ /*
69582 + /*
69583 +- * Searching includes executable on directories, else just read.
69584 + * Read/write DACs are always overridable.
69585 -+ * Executable DACs are overridable if at least one exec bit is set.
69586 -+ */
69587 -+ if (!(mask & MAY_EXEC) || execute_ok(inode))
69588 -+ if (capable(CAP_DAC_OVERRIDE))
69589 -+ return 0;
69590 -+
69591 ++ * Executable DACs are overridable for all directories and
69592 ++ * for non-directories that have least one exec bit set.
69593 + */
69594 +- mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
69595 +- if (mask == MAY_READ || (S_ISDIR(inode->i_mode) && !(mask & MAY_WRITE)))
69596 +- if (ns_capable(inode_userns(inode), CAP_DAC_READ_SEARCH))
69597 ++ if (!(mask & MAY_EXEC) || execute_ok(inode)) {
69598 ++ if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
69599 + return 0;
69600 ++ }
69601 +
69602 return -EACCES;
69603 }
69604 +@@ -593,9 +595,12 @@ static inline int exec_permission(struct
69605 + if (ret == -ECHILD)
69606 + return ret;
69607
69608 -@@ -458,7 +458,8 @@ static int exec_permission_lite(struct i
69609 - if (!ret)
69610 - goto ok;
69611 -
69612 -- if (capable(CAP_DAC_OVERRIDE) || capable(CAP_DAC_READ_SEARCH))
69613 -+ if (capable_nolog(CAP_DAC_OVERRIDE) || capable(CAP_DAC_READ_SEARCH) ||
69614 -+ capable(CAP_DAC_OVERRIDE))
69615 +- if (ns_capable(ns, CAP_DAC_OVERRIDE) ||
69616 +- ns_capable(ns, CAP_DAC_READ_SEARCH))
69617 ++ if (ns_capable_nolog(ns, CAP_DAC_OVERRIDE))
69618 goto ok;
69619 ++ else {
69620 ++ if (ns_capable(ns, CAP_DAC_READ_SEARCH) || ns_capable(ns, CAP_DAC_OVERRIDE))
69621 ++ goto ok;
69622 ++ }
69623
69624 return ret;
69625 -@@ -638,7 +639,7 @@ static __always_inline int __do_follow_l
69626 - cookie = dentry->d_inode->i_op->follow_link(dentry, nd);
69627 - error = PTR_ERR(cookie);
69628 - if (!IS_ERR(cookie)) {
69629 + ok:
69630 +@@ -703,11 +708,19 @@ follow_link(struct path *link, struct na
69631 + return error;
69632 + }
69633 +
69634 ++ if (gr_handle_follow_link(dentry->d_parent->d_inode,
69635 ++ dentry->d_inode, dentry, nd->path.mnt)) {
69636 ++ error = -EACCES;
69637 ++ *p = ERR_PTR(error); /* no ->put_link(), please */
69638 ++ path_put(&nd->path);
69639 ++ return error;
69640 ++ }
69641 ++
69642 + nd->last_type = LAST_BIND;
69643 + *p = dentry->d_inode->i_op->follow_link(dentry, nd);
69644 + error = PTR_ERR(*p);
69645 + if (!IS_ERR(*p)) {
69646 - char *s = nd_get_link(nd);
69647 + const char *s = nd_get_link(nd);
69648 error = 0;
69649 if (s)
69650 error = __vfs_follow_link(nd, s);
69651 -@@ -669,6 +670,13 @@ static inline int do_follow_link(struct
69652 - err = security_inode_follow_link(path->dentry, nd);
69653 - if (err)
69654 - goto loop;
69655 -+
69656 -+ if (gr_handle_follow_link(path->dentry->d_parent->d_inode,
69657 -+ path->dentry->d_inode, path->dentry, nd->path.mnt)) {
69658 -+ err = -EACCES;
69659 -+ goto loop;
69660 -+ }
69661 -+
69662 - current->link_count++;
69663 - current->total_link_count++;
69664 - nd->depth++;
69665 -@@ -1016,11 +1024,19 @@ return_reval:
69666 - break;
69667 - }
69668 - return_base:
69669 -+ if (!(nd->flags & (LOOKUP_CONTINUE | LOOKUP_PARENT)) &&
69670 -+ !gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt)) {
69671 +@@ -1598,6 +1611,12 @@ static int path_lookupat(int dfd, const
69672 + if (!err)
69673 + err = complete_walk(nd);
69674 +
69675 ++ if (!(nd->flags & LOOKUP_PARENT) && !gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt)) {
69676 ++ if (!err)
69677 + path_put(&nd->path);
69678 -+ return -ENOENT;
69679 -+ }
69680 - return 0;
69681 - out_dput:
69682 - path_put_conditional(&next, nd);
69683 - break;
69684 - }
69685 -+ if (!gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt))
69686 + err = -ENOENT;
69687 -+
69688 - path_put(&nd->path);
69689 - return_err:
69690 - return err;
69691 -@@ -1091,13 +1107,20 @@ static int do_path_lookup(int dfd, const
69692 - int retval = path_init(dfd, name, flags, nd);
69693 - if (!retval)
69694 - retval = path_walk(name, nd);
69695 -- if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry &&
69696 -- nd->path.dentry->d_inode))
69697 -- audit_inode(name, nd->path.dentry);
69698 -+
69699 -+ if (likely(!retval)) {
69700 -+ if (nd->path.dentry && nd->path.dentry->d_inode) {
69701 -+ if (*name != '/' && !gr_chroot_fchdir(nd->path.dentry, nd->path.mnt))
69702 -+ retval = -ENOENT;
69703 -+ if (!audit_dummy_context())
69704 -+ audit_inode(name, nd->path.dentry);
69705 -+ }
69706 + }
69707 - if (nd->root.mnt) {
69708 - path_put(&nd->root);
69709 - nd->root.mnt = NULL;
69710 - }
69711 +
69712 - return retval;
69713 - }
69714 + if (!err && nd->flags & LOOKUP_DIRECTORY) {
69715 + if (!nd->inode->i_op->lookup) {
69716 + path_put(&nd->path);
69717 +@@ -1625,6 +1644,9 @@ static int do_path_lookup(int dfd, const
69718 + retval = path_lookupat(dfd, name, flags | LOOKUP_REVAL, nd);
69719
69720 -@@ -1576,6 +1599,20 @@ int may_open(struct path *path, int acc_
69721 - if (error)
69722 - goto err_out;
69723 + if (likely(!retval)) {
69724 ++ if (*name != '/' && nd->path.dentry && nd->inode && !gr_chroot_fchdir(nd->path.dentry, nd->path.mnt))
69725 ++ return -ENOENT;
69726 ++
69727 + if (unlikely(!audit_dummy_context())) {
69728 + if (nd->path.dentry && nd->inode)
69729 + audit_inode(name, nd->path.dentry);
69730 +@@ -1935,6 +1957,30 @@ int vfs_create(struct inode *dir, struct
69731 + return error;
69732 + }
69733
69734 ++/*
69735 ++ * Note that while the flag value (low two bits) for sys_open means:
69736 ++ * 00 - read-only
69737 ++ * 01 - write-only
69738 ++ * 10 - read-write
69739 ++ * 11 - special
69740 ++ * it is changed into
69741 ++ * 00 - no permissions needed
69742 ++ * 01 - read-permission
69743 ++ * 10 - write-permission
69744 ++ * 11 - read-write
69745 ++ * for the internal routines (ie open_namei()/follow_link() etc)
69746 ++ * This is more logical, and also allows the 00 "no perm needed"
69747 ++ * to be used for symlinks (where the permissions are checked
69748 ++ * later).
69749 ++ *
69750 ++*/
69751 ++static inline int open_to_namei_flags(int flag)
69752 ++{
69753 ++ if ((flag+1) & O_ACCMODE)
69754 ++ flag++;
69755 ++ return flag;
69756 ++}
69757 ++
69758 + static int may_open(struct path *path, int acc_mode, int flag)
69759 + {
69760 + struct dentry *dentry = path->dentry;
69761 +@@ -1987,7 +2033,27 @@ static int may_open(struct path *path, i
69762 + /*
69763 + * Ensure there are no outstanding leases on the file.
69764 + */
69765 +- return break_lease(inode, flag);
69766 ++ error = break_lease(inode, flag);
69767 ++
69768 ++ if (error)
69769 ++ return error;
69770 +
69771 + if (gr_handle_rofs_blockwrite(dentry, path->mnt, acc_mode)) {
69772 + error = -EPERM;
69773 -+ goto err_out;
69774 ++ goto exit;
69775 + }
69776 ++
69777 + if (gr_handle_rawio(inode)) {
69778 + error = -EPERM;
69779 -+ goto err_out;
69780 -+ }
69781 -+ if (!gr_acl_handle_open(dentry, path->mnt, flag)) {
69782 -+ error = -EACCES;
69783 -+ goto err_out;
69784 ++ goto exit;
69785 + }
69786 +
69787 - if (flag & O_TRUNC) {
69788 - error = get_write_access(inode);
69789 - if (error)
69790 -@@ -1621,12 +1658,19 @@ static int __open_namei_create(struct na
69791 - int error;
69792 - struct dentry *dir = nd->path.dentry;
69793 -
69794 -+ if (!gr_acl_handle_creat(path->dentry, dir, nd->path.mnt, flag, mode)) {
69795 ++ if (!gr_acl_handle_open(dentry, path->mnt, open_to_namei_flags(flag))) {
69796 + error = -EACCES;
69797 -+ goto out_unlock;
69798 ++ goto exit;
69799 + }
69800 -+
69801 - if (!IS_POSIXACL(dir->d_inode))
69802 - mode &= ~current_umask();
69803 - error = security_path_mknod(&nd->path, path->dentry, mode, 0);
69804 - if (error)
69805 - goto out_unlock;
69806 - error = vfs_create(dir->d_inode, path->dentry, mode, nd);
69807 -+ if (!error)
69808 -+ gr_handle_create(path->dentry, nd->path.mnt);
69809 - out_unlock:
69810 - mutex_unlock(&dir->d_inode->i_mutex);
69811 - dput(nd->path.dentry);
69812 -@@ -1709,6 +1753,22 @@ struct file *do_filp_open(int dfd, const
69813 - &nd, flag);
69814 ++exit:
69815 ++ return error;
69816 + }
69817 +
69818 + static int handle_truncate(struct file *filp)
69819 +@@ -2013,30 +2079,6 @@ static int handle_truncate(struct file *
69820 + }
69821 +
69822 + /*
69823 +- * Note that while the flag value (low two bits) for sys_open means:
69824 +- * 00 - read-only
69825 +- * 01 - write-only
69826 +- * 10 - read-write
69827 +- * 11 - special
69828 +- * it is changed into
69829 +- * 00 - no permissions needed
69830 +- * 01 - read-permission
69831 +- * 10 - write-permission
69832 +- * 11 - read-write
69833 +- * for the internal routines (ie open_namei()/follow_link() etc)
69834 +- * This is more logical, and also allows the 00 "no perm needed"
69835 +- * to be used for symlinks (where the permissions are checked
69836 +- * later).
69837 +- *
69838 +-*/
69839 +-static inline int open_to_namei_flags(int flag)
69840 +-{
69841 +- if ((flag+1) & O_ACCMODE)
69842 +- flag++;
69843 +- return flag;
69844 +-}
69845 +-
69846 +-/*
69847 + * Handle the last step of open()
69848 + */
69849 + static struct file *do_last(struct nameidata *nd, struct path *path,
69850 +@@ -2045,6 +2087,7 @@ static struct file *do_last(struct namei
69851 + struct dentry *dir = nd->path.dentry;
69852 + struct dentry *dentry;
69853 + int open_flag = op->open_flag;
69854 ++ int flag = open_to_namei_flags(open_flag);
69855 + int will_truncate = open_flag & O_TRUNC;
69856 + int want_write = 0;
69857 + int acc_mode = op->acc_mode;
69858 +@@ -2065,6 +2108,10 @@ static struct file *do_last(struct namei
69859 + error = complete_walk(nd);
69860 if (error)
69861 return ERR_PTR(error);
69862 -+
69863 -+ if (gr_handle_rofs_blockwrite(nd.path.dentry, nd.path.mnt, acc_mode)) {
69864 -+ error = -EPERM;
69865 ++ if (!gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt)) {
69866 ++ error = -ENOENT;
69867 + goto exit;
69868 + }
69869 -+
69870 -+ if (gr_handle_rawio(nd.path.dentry->d_inode)) {
69871 -+ error = -EPERM;
69872 + audit_inode(pathname, nd->path.dentry);
69873 + if (open_flag & O_CREAT) {
69874 + error = -EISDIR;
69875 +@@ -2075,6 +2122,10 @@ static struct file *do_last(struct namei
69876 + error = complete_walk(nd);
69877 + if (error)
69878 + return ERR_PTR(error);
69879 ++ if (!gr_acl_handle_hidden_file(dir, nd->path.mnt)) {
69880 ++ error = -ENOENT;
69881 ++ goto exit;
69882 ++ }
69883 + audit_inode(pathname, dir);
69884 + goto ok;
69885 + }
69886 +@@ -2097,6 +2148,11 @@ static struct file *do_last(struct namei
69887 + if (error)
69888 + return ERR_PTR(-ECHILD);
69889 +
69890 ++ if (!gr_acl_handle_hidden_file(nd->path.dentry, nd->path.mnt)) {
69891 ++ error = -ENOENT;
69892 + goto exit;
69893 + }
69894 +
69895 -+ if (!gr_acl_handle_open(nd.path.dentry, nd.path.mnt, flag)) {
69896 + error = -ENOTDIR;
69897 + if (nd->flags & LOOKUP_DIRECTORY) {
69898 + if (!nd->inode->i_op->lookup)
69899 +@@ -2132,6 +2188,12 @@ static struct file *do_last(struct namei
69900 + /* Negative dentry, just create the file */
69901 + if (!dentry->d_inode) {
69902 + int mode = op->mode;
69903 ++
69904 ++ if (!gr_acl_handle_creat(path->dentry, nd->path.dentry, path->mnt, flag, mode)) {
69905 + error = -EACCES;
69906 -+ goto exit;
69907 ++ goto exit_mutex_unlock;
69908 + }
69909 +
69910 - goto ok;
69911 - }
69912 -
69913 -@@ -1795,6 +1855,19 @@ do_last:
69914 + if (!IS_POSIXACL(dir->d_inode))
69915 + mode &= ~current_umask();
69916 + /*
69917 +@@ -2155,6 +2217,8 @@ static struct file *do_last(struct namei
69918 + error = vfs_create(dir->d_inode, dentry, mode, nd);
69919 + if (error)
69920 + goto exit_mutex_unlock;
69921 ++ else
69922 ++ gr_handle_create(path->dentry, path->mnt);
69923 + mutex_unlock(&dir->d_inode->i_mutex);
69924 + dput(nd->path.dentry);
69925 + nd->path.dentry = dentry;
69926 +@@ -2164,6 +2228,19 @@ static struct file *do_last(struct namei
69927 /*
69928 * It already exists.
69929 */
69930 +
69931 -+ if (!gr_acl_handle_hidden_file(path.dentry, path.mnt)) {
69932 ++ if (!gr_acl_handle_hidden_file(dentry, nd->path.mnt)) {
69933 + error = -ENOENT;
69934 + goto exit_mutex_unlock;
69935 + }
69936 +
69937 -+ /* only check if O_CREAT is specified, all other checks need
69938 -+ to go into may_open */
69939 -+ if (gr_handle_fifo(path.dentry, path.mnt, dir, flag, acc_mode)) {
69940 ++ /* only check if O_CREAT is specified, all other checks need to go
69941 ++ into may_open */
69942 ++ if (gr_handle_fifo(path->dentry, path->mnt, dir, flag, acc_mode)) {
69943 + error = -EACCES;
69944 + goto exit_mutex_unlock;
69945 + }
69946 +
69947 mutex_unlock(&dir->d_inode->i_mutex);
69948 - audit_inode(pathname, path.dentry);
69949 + audit_inode(pathname, path->dentry);
69950
69951 -@@ -1887,6 +1960,13 @@ do_link:
69952 - error = security_inode_follow_link(path.dentry, &nd);
69953 - if (error)
69954 - goto exit_dput;
69955 -+
69956 -+ if (gr_handle_follow_link(path.dentry->d_parent->d_inode, path.dentry->d_inode,
69957 -+ path.dentry, nd.path.mnt)) {
69958 -+ error = -EACCES;
69959 -+ goto exit_dput;
69960 -+ }
69961 -+
69962 - error = __do_follow_link(&path, &nd);
69963 - if (error) {
69964 - /* Does someone understand code flow here? Or it is only
69965 -@@ -1984,6 +2064,10 @@ struct dentry *lookup_create(struct name
69966 +@@ -2373,6 +2450,10 @@ struct dentry *lookup_create(struct name
69967 }
69968 return dentry;
69969 eexist:
69970 @@ -47476,7 +44552,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
69971 dput(dentry);
69972 dentry = ERR_PTR(-EEXIST);
69973 fail:
69974 -@@ -2061,6 +2145,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
69975 +@@ -2450,6 +2531,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
69976 error = may_mknod(mode);
69977 if (error)
69978 goto out_dput;
69979 @@ -47494,7 +44570,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
69980 error = mnt_want_write(nd.path.mnt);
69981 if (error)
69982 goto out_dput;
69983 -@@ -2081,6 +2176,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
69984 +@@ -2470,6 +2562,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
69985 }
69986 out_drop_write:
69987 mnt_drop_write(nd.path.mnt);
69988 @@ -47504,7 +44580,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
69989 out_dput:
69990 dput(dentry);
69991 out_unlock:
69992 -@@ -2134,6 +2232,11 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
69993 +@@ -2522,6 +2617,11 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
69994 if (IS_ERR(dentry))
69995 goto out_unlock;
69996
69997 @@ -47516,7 +44592,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
69998 if (!IS_POSIXACL(nd.path.dentry->d_inode))
69999 mode &= ~current_umask();
70000 error = mnt_want_write(nd.path.mnt);
70001 -@@ -2145,6 +2248,10 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
70002 +@@ -2533,6 +2633,10 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
70003 error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode);
70004 out_drop_write:
70005 mnt_drop_write(nd.path.mnt);
70006 @@ -47527,7 +44603,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70007 out_dput:
70008 dput(dentry);
70009 out_unlock:
70010 -@@ -2226,6 +2333,8 @@ static long do_rmdir(int dfd, const char
70011 +@@ -2615,6 +2719,8 @@ static long do_rmdir(int dfd, const char
70012 char * name;
70013 struct dentry *dentry;
70014 struct nameidata nd;
70015 @@ -47536,27 +44612,25 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70016
70017 error = user_path_parent(dfd, pathname, &nd, &name);
70018 if (error)
70019 -@@ -2250,6 +2359,19 @@ static long do_rmdir(int dfd, const char
70020 - error = PTR_ERR(dentry);
70021 - if (IS_ERR(dentry))
70022 - goto exit2;
70023 +@@ -2643,6 +2749,17 @@ static long do_rmdir(int dfd, const char
70024 + error = -ENOENT;
70025 + goto exit3;
70026 + }
70027 +
70028 -+ if (dentry->d_inode != NULL) {
70029 -+ if (dentry->d_inode->i_nlink <= 1) {
70030 -+ saved_ino = dentry->d_inode->i_ino;
70031 -+ saved_dev = gr_get_dev_from_dentry(dentry);
70032 -+ }
70033 ++ if (dentry->d_inode->i_nlink <= 1) {
70034 ++ saved_ino = dentry->d_inode->i_ino;
70035 ++ saved_dev = gr_get_dev_from_dentry(dentry);
70036 ++ }
70037 +
70038 -+ if (!gr_acl_handle_rmdir(dentry, nd.path.mnt)) {
70039 -+ error = -EACCES;
70040 -+ goto exit3;
70041 -+ }
70042 ++ if (!gr_acl_handle_rmdir(dentry, nd.path.mnt)) {
70043 ++ error = -EACCES;
70044 ++ goto exit3;
70045 + }
70046 +
70047 error = mnt_want_write(nd.path.mnt);
70048 if (error)
70049 goto exit3;
70050 -@@ -2257,6 +2379,8 @@ static long do_rmdir(int dfd, const char
70051 +@@ -2650,6 +2767,8 @@ static long do_rmdir(int dfd, const char
70052 if (error)
70053 goto exit4;
70054 error = vfs_rmdir(nd.path.dentry->d_inode, dentry);
70055 @@ -47565,7 +44639,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70056 exit4:
70057 mnt_drop_write(nd.path.mnt);
70058 exit3:
70059 -@@ -2318,6 +2442,8 @@ static long do_unlinkat(int dfd, const c
70060 +@@ -2712,6 +2831,8 @@ static long do_unlinkat(int dfd, const c
70061 struct dentry *dentry;
70062 struct nameidata nd;
70063 struct inode *inode = NULL;
70064 @@ -47574,28 +44648,24 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70065
70066 error = user_path_parent(dfd, pathname, &nd, &name);
70067 if (error)
70068 -@@ -2337,8 +2463,19 @@ static long do_unlinkat(int dfd, const c
70069 - if (nd.last.name[nd.last.len])
70070 +@@ -2734,6 +2855,16 @@ static long do_unlinkat(int dfd, const c
70071 + if (!inode)
70072 goto slashes;
70073 - inode = dentry->d_inode;
70074 -- if (inode)
70075 -+ if (inode) {
70076 -+ if (inode->i_nlink <= 1) {
70077 -+ saved_ino = inode->i_ino;
70078 -+ saved_dev = gr_get_dev_from_dentry(dentry);
70079 -+ }
70080 -+
70081 - atomic_inc(&inode->i_count);
70082 + ihold(inode);
70083 +
70084 -+ if (!gr_acl_handle_unlink(dentry, nd.path.mnt)) {
70085 -+ error = -EACCES;
70086 -+ goto exit2;
70087 -+ }
70088 ++ if (inode->i_nlink <= 1) {
70089 ++ saved_ino = inode->i_ino;
70090 ++ saved_dev = gr_get_dev_from_dentry(dentry);
70091 + }
70092 ++ if (!gr_acl_handle_unlink(dentry, nd.path.mnt)) {
70093 ++ error = -EACCES;
70094 ++ goto exit2;
70095 ++ }
70096 ++
70097 error = mnt_want_write(nd.path.mnt);
70098 if (error)
70099 goto exit2;
70100 -@@ -2346,6 +2483,8 @@ static long do_unlinkat(int dfd, const c
70101 +@@ -2741,6 +2872,8 @@ static long do_unlinkat(int dfd, const c
70102 if (error)
70103 goto exit3;
70104 error = vfs_unlink(nd.path.dentry->d_inode, dentry);
70105 @@ -47604,7 +44674,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70106 exit3:
70107 mnt_drop_write(nd.path.mnt);
70108 exit2:
70109 -@@ -2424,6 +2563,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
70110 +@@ -2818,6 +2951,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
70111 if (IS_ERR(dentry))
70112 goto out_unlock;
70113
70114 @@ -47616,7 +44686,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70115 error = mnt_want_write(nd.path.mnt);
70116 if (error)
70117 goto out_dput;
70118 -@@ -2431,6 +2575,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
70119 +@@ -2825,6 +2963,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
70120 if (error)
70121 goto out_drop_write;
70122 error = vfs_symlink(nd.path.dentry->d_inode, dentry, from);
70123 @@ -47625,7 +44695,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70124 out_drop_write:
70125 mnt_drop_write(nd.path.mnt);
70126 out_dput:
70127 -@@ -2524,6 +2670,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
70128 +@@ -2933,6 +3073,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
70129 error = PTR_ERR(new_dentry);
70130 if (IS_ERR(new_dentry))
70131 goto out_unlock;
70132 @@ -47646,7 +44716,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70133 error = mnt_want_write(nd.path.mnt);
70134 if (error)
70135 goto out_dput;
70136 -@@ -2531,6 +2691,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
70137 +@@ -2940,6 +3094,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
70138 if (error)
70139 goto out_drop_write;
70140 error = vfs_link(old_path.dentry, nd.path.dentry->d_inode, new_dentry);
70141 @@ -47655,7 +44725,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70142 out_drop_write:
70143 mnt_drop_write(nd.path.mnt);
70144 out_dput:
70145 -@@ -2708,6 +2870,8 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
70146 +@@ -3117,6 +3273,8 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
70147 char *to;
70148 int error;
70149
70150 @@ -47664,7 +44734,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70151 error = user_path_parent(olddfd, oldname, &oldnd, &from);
70152 if (error)
70153 goto exit;
70154 -@@ -2764,6 +2928,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
70155 +@@ -3173,6 +3331,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
70156 if (new_dentry == trap)
70157 goto exit5;
70158
70159 @@ -47677,7 +44747,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70160 error = mnt_want_write(oldnd.path.mnt);
70161 if (error)
70162 goto exit5;
70163 -@@ -2773,6 +2943,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
70164 +@@ -3182,6 +3346,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
70165 goto exit6;
70166 error = vfs_rename(old_dir->d_inode, old_dentry,
70167 new_dir->d_inode, new_dentry);
70168 @@ -47687,7 +44757,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70169 exit6:
70170 mnt_drop_write(oldnd.path.mnt);
70171 exit5:
70172 -@@ -2798,6 +2971,8 @@ SYSCALL_DEFINE2(rename, const char __use
70173 +@@ -3207,6 +3374,8 @@ SYSCALL_DEFINE2(rename, const char __use
70174
70175 int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link)
70176 {
70177 @@ -47696,7 +44766,7 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70178 int len;
70179
70180 len = PTR_ERR(link);
70181 -@@ -2807,7 +2982,14 @@ int vfs_readlink(struct dentry *dentry,
70182 +@@ -3216,7 +3385,14 @@ int vfs_readlink(struct dentry *dentry,
70183 len = strlen(link);
70184 if (len > (unsigned) buflen)
70185 len = buflen;
70186 @@ -47712,10 +44782,10 @@ diff -urNp linux-2.6.32.48/fs/namei.c linux-2.6.32.48/fs/namei.c
70187 len = -EFAULT;
70188 out:
70189 return len;
70190 -diff -urNp linux-2.6.32.48/fs/namespace.c linux-2.6.32.48/fs/namespace.c
70191 ---- linux-2.6.32.48/fs/namespace.c 2011-11-12 12:44:30.000000000 -0500
70192 -+++ linux-2.6.32.48/fs/namespace.c 2011-11-12 12:46:47.000000000 -0500
70193 -@@ -1083,6 +1083,9 @@ static int do_umount(struct vfsmount *mn
70194 +diff -urNp linux-3.0.8/fs/namespace.c linux-3.0.8/fs/namespace.c
70195 +--- linux-3.0.8/fs/namespace.c 2011-07-21 22:17:23.000000000 -0400
70196 ++++ linux-3.0.8/fs/namespace.c 2011-08-23 21:48:14.000000000 -0400
70197 +@@ -1328,6 +1328,9 @@ static int do_umount(struct vfsmount *mn
70198 if (!(sb->s_flags & MS_RDONLY))
70199 retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
70200 up_write(&sb->s_umount);
70201 @@ -47725,8 +44795,8 @@ diff -urNp linux-2.6.32.48/fs/namespace.c linux-2.6.32.48/fs/namespace.c
70202 return retval;
70203 }
70204
70205 -@@ -1104,6 +1107,9 @@ static int do_umount(struct vfsmount *mn
70206 - security_sb_umount_busy(mnt);
70207 +@@ -1347,6 +1350,9 @@ static int do_umount(struct vfsmount *mn
70208 + br_write_unlock(vfsmount_lock);
70209 up_write(&namespace_sem);
70210 release_mounts(&umount_list);
70211 +
70212 @@ -47735,9 +44805,9 @@ diff -urNp linux-2.6.32.48/fs/namespace.c linux-2.6.32.48/fs/namespace.c
70213 return retval;
70214 }
70215
70216 -@@ -1962,6 +1968,16 @@ long do_mount(char *dev_name, char *dir_
70217 - if (retval)
70218 - goto dput_out;
70219 +@@ -2338,6 +2344,16 @@ long do_mount(char *dev_name, char *dir_
70220 + MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
70221 + MS_STRICTATIME);
70222
70223 + if (gr_handle_rofs_mount(path.dentry, path.mnt, mnt_flags)) {
70224 + retval = -EPERM;
70225 @@ -47752,7 +44822,7 @@ diff -urNp linux-2.6.32.48/fs/namespace.c linux-2.6.32.48/fs/namespace.c
70226 if (flags & MS_REMOUNT)
70227 retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
70228 data_page);
70229 -@@ -1976,6 +1992,9 @@ long do_mount(char *dev_name, char *dir_
70230 +@@ -2352,6 +2368,9 @@ long do_mount(char *dev_name, char *dir_
70231 dev_name, data_page);
70232 dput_out:
70233 path_put(&path);
70234 @@ -47762,55 +44832,49 @@ diff -urNp linux-2.6.32.48/fs/namespace.c linux-2.6.32.48/fs/namespace.c
70235 return retval;
70236 }
70237
70238 -@@ -2182,6 +2201,12 @@ SYSCALL_DEFINE2(pivot_root, const char _
70239 - goto out1;
70240 - }
70241 +@@ -2575,6 +2594,11 @@ SYSCALL_DEFINE2(pivot_root, const char _
70242 + if (error)
70243 + goto out2;
70244
70245 + if (gr_handle_chroot_pivot()) {
70246 + error = -EPERM;
70247 -+ path_put(&old);
70248 -+ goto out1;
70249 ++ goto out2;
70250 + }
70251 +
70252 - read_lock(&current->fs->lock);
70253 - root = current->fs->root;
70254 - path_get(&current->fs->root);
70255 -diff -urNp linux-2.6.32.48/fs/ncpfs/dir.c linux-2.6.32.48/fs/ncpfs/dir.c
70256 ---- linux-2.6.32.48/fs/ncpfs/dir.c 2009-12-02 22:51:21.000000000 -0500
70257 -+++ linux-2.6.32.48/fs/ncpfs/dir.c 2011-11-12 12:46:47.000000000 -0500
70258 -@@ -275,6 +275,8 @@ __ncp_lookup_validate(struct dentry *den
70259 + get_fs_root(current->fs, &root);
70260 + error = lock_mount(&old);
70261 + if (error)
70262 +diff -urNp linux-3.0.8/fs/ncpfs/dir.c linux-3.0.8/fs/ncpfs/dir.c
70263 +--- linux-3.0.8/fs/ncpfs/dir.c 2011-07-21 22:17:23.000000000 -0400
70264 ++++ linux-3.0.8/fs/ncpfs/dir.c 2011-08-23 21:48:14.000000000 -0400
70265 +@@ -299,6 +299,8 @@ ncp_lookup_validate(struct dentry *dentr
70266 int res, val = 0, len;
70267 __u8 __name[NCP_MAXPATHLEN + 1];
70268
70269 + pax_track_stack();
70270 +
70271 - parent = dget_parent(dentry);
70272 - dir = parent->d_inode;
70273 + if (dentry == dentry->d_sb->s_root)
70274 + return 1;
70275
70276 -@@ -799,6 +801,8 @@ static struct dentry *ncp_lookup(struct
70277 +@@ -844,6 +846,8 @@ static struct dentry *ncp_lookup(struct
70278 int error, res, len;
70279 __u8 __name[NCP_MAXPATHLEN + 1];
70280
70281 + pax_track_stack();
70282 +
70283 - lock_kernel();
70284 error = -EIO;
70285 if (!ncp_conn_valid(server))
70286 -@@ -883,10 +887,12 @@ int ncp_create_new(struct inode *dir, st
70287 - int error, result, len;
70288 - int opmode;
70289 - __u8 __name[NCP_MAXPATHLEN + 1];
70290 --
70291 -+
70292 + goto finished;
70293 +@@ -931,6 +935,8 @@ int ncp_create_new(struct inode *dir, st
70294 PPRINTK("ncp_create_new: creating %s/%s, mode=%x\n",
70295 dentry->d_parent->d_name.name, dentry->d_name.name, mode);
70296
70297 + pax_track_stack();
70298 +
70299 - error = -EIO;
70300 - lock_kernel();
70301 - if (!ncp_conn_valid(server))
70302 -@@ -952,6 +958,8 @@ static int ncp_mkdir(struct inode *dir,
70303 + ncp_age_dentry(server, dentry);
70304 + len = sizeof(__name);
70305 + error = ncp_io2vol(server, __name, &len, dentry->d_name.name,
70306 +@@ -992,6 +998,8 @@ static int ncp_mkdir(struct inode *dir,
70307 int error, len;
70308 __u8 __name[NCP_MAXPATHLEN + 1];
70309
70310 @@ -47819,16 +44883,7 @@ diff -urNp linux-2.6.32.48/fs/ncpfs/dir.c linux-2.6.32.48/fs/ncpfs/dir.c
70311 DPRINTK("ncp_mkdir: making %s/%s\n",
70312 dentry->d_parent->d_name.name, dentry->d_name.name);
70313
70314 -@@ -960,6 +968,8 @@ static int ncp_mkdir(struct inode *dir,
70315 - if (!ncp_conn_valid(server))
70316 - goto out;
70317 -
70318 -+ pax_track_stack();
70319 -+
70320 - ncp_age_dentry(server, dentry);
70321 - len = sizeof(__name);
70322 - error = ncp_io2vol(server, __name, &len, dentry->d_name.name,
70323 -@@ -1114,6 +1124,8 @@ static int ncp_rename(struct inode *old_
70324 +@@ -1140,6 +1148,8 @@ static int ncp_rename(struct inode *old_
70325 int old_len, new_len;
70326 __u8 __old_name[NCP_MAXPATHLEN + 1], __new_name[NCP_MAXPATHLEN + 1];
70327
70328 @@ -47837,22 +44892,22 @@ diff -urNp linux-2.6.32.48/fs/ncpfs/dir.c linux-2.6.32.48/fs/ncpfs/dir.c
70329 DPRINTK("ncp_rename: %s/%s to %s/%s\n",
70330 old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
70331 new_dentry->d_parent->d_name.name, new_dentry->d_name.name);
70332 -diff -urNp linux-2.6.32.48/fs/ncpfs/inode.c linux-2.6.32.48/fs/ncpfs/inode.c
70333 ---- linux-2.6.32.48/fs/ncpfs/inode.c 2009-12-02 22:51:21.000000000 -0500
70334 -+++ linux-2.6.32.48/fs/ncpfs/inode.c 2011-11-12 12:46:47.000000000 -0500
70335 -@@ -445,6 +445,8 @@ static int ncp_fill_super(struct super_b
70336 +diff -urNp linux-3.0.8/fs/ncpfs/inode.c linux-3.0.8/fs/ncpfs/inode.c
70337 +--- linux-3.0.8/fs/ncpfs/inode.c 2011-07-21 22:17:23.000000000 -0400
70338 ++++ linux-3.0.8/fs/ncpfs/inode.c 2011-08-23 21:48:14.000000000 -0400
70339 +@@ -461,6 +461,8 @@ static int ncp_fill_super(struct super_b
70340 #endif
70341 struct ncp_entry_info finfo;
70342
70343 + pax_track_stack();
70344 +
70345 - data.wdog_pid = NULL;
70346 + memset(&data, 0, sizeof(data));
70347 server = kzalloc(sizeof(struct ncp_server), GFP_KERNEL);
70348 if (!server)
70349 -diff -urNp linux-2.6.32.48/fs/nfs/inode.c linux-2.6.32.48/fs/nfs/inode.c
70350 ---- linux-2.6.32.48/fs/nfs/inode.c 2011-11-12 12:44:30.000000000 -0500
70351 -+++ linux-2.6.32.48/fs/nfs/inode.c 2011-11-12 12:46:47.000000000 -0500
70352 -@@ -156,7 +156,7 @@ static void nfs_zap_caches_locked(struct
70353 +diff -urNp linux-3.0.8/fs/nfs/inode.c linux-3.0.8/fs/nfs/inode.c
70354 +--- linux-3.0.8/fs/nfs/inode.c 2011-07-21 22:17:23.000000000 -0400
70355 ++++ linux-3.0.8/fs/nfs/inode.c 2011-08-23 21:47:56.000000000 -0400
70356 +@@ -150,7 +150,7 @@ static void nfs_zap_caches_locked(struct
70357 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
70358 nfsi->attrtimeo_timestamp = jiffies;
70359
70360 @@ -47861,7 +44916,7 @@ diff -urNp linux-2.6.32.48/fs/nfs/inode.c linux-2.6.32.48/fs/nfs/inode.c
70361 if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))
70362 nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE;
70363 else
70364 -@@ -973,16 +973,16 @@ static int nfs_size_need_update(const st
70365 +@@ -1000,16 +1000,16 @@ static int nfs_size_need_update(const st
70366 return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
70367 }
70368
70369 @@ -47881,23 +44936,11 @@ diff -urNp linux-2.6.32.48/fs/nfs/inode.c linux-2.6.32.48/fs/nfs/inode.c
70370 }
70371
70372 void nfs_fattr_init(struct nfs_fattr *fattr)
70373 -diff -urNp linux-2.6.32.48/fs/nfsd/lockd.c linux-2.6.32.48/fs/nfsd/lockd.c
70374 ---- linux-2.6.32.48/fs/nfsd/lockd.c 2011-11-12 12:44:30.000000000 -0500
70375 -+++ linux-2.6.32.48/fs/nfsd/lockd.c 2011-11-12 12:46:47.000000000 -0500
70376 -@@ -66,7 +66,7 @@ nlm_fclose(struct file *filp)
70377 - fput(filp);
70378 - }
70379 -
70380 --static struct nlmsvc_binding nfsd_nlm_ops = {
70381 -+static const struct nlmsvc_binding nfsd_nlm_ops = {
70382 - .fopen = nlm_fopen, /* open file for locking */
70383 - .fclose = nlm_fclose, /* close file */
70384 - };
70385 -diff -urNp linux-2.6.32.48/fs/nfsd/nfs4state.c linux-2.6.32.48/fs/nfsd/nfs4state.c
70386 ---- linux-2.6.32.48/fs/nfsd/nfs4state.c 2011-11-12 12:44:30.000000000 -0500
70387 -+++ linux-2.6.32.48/fs/nfsd/nfs4state.c 2011-11-12 12:46:47.000000000 -0500
70388 -@@ -3459,6 +3459,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struc
70389 - unsigned int cmd;
70390 +diff -urNp linux-3.0.8/fs/nfsd/nfs4state.c linux-3.0.8/fs/nfsd/nfs4state.c
70391 +--- linux-3.0.8/fs/nfsd/nfs4state.c 2011-10-24 08:05:21.000000000 -0400
70392 ++++ linux-3.0.8/fs/nfsd/nfs4state.c 2011-08-23 21:48:14.000000000 -0400
70393 +@@ -3794,6 +3794,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struc
70394 + unsigned int strhashval;
70395 int err;
70396
70397 + pax_track_stack();
70398 @@ -47905,22 +44948,22 @@ diff -urNp linux-2.6.32.48/fs/nfsd/nfs4state.c linux-2.6.32.48/fs/nfsd/nfs4state
70399 dprintk("NFSD: nfsd4_lock: start=%Ld length=%Ld\n",
70400 (long long) lock->lk_offset,
70401 (long long) lock->lk_length);
70402 -diff -urNp linux-2.6.32.48/fs/nfsd/nfs4xdr.c linux-2.6.32.48/fs/nfsd/nfs4xdr.c
70403 ---- linux-2.6.32.48/fs/nfsd/nfs4xdr.c 2011-11-12 12:44:30.000000000 -0500
70404 -+++ linux-2.6.32.48/fs/nfsd/nfs4xdr.c 2011-11-12 12:46:47.000000000 -0500
70405 -@@ -1751,6 +1751,8 @@ nfsd4_encode_fattr(struct svc_fh *fhp, s
70406 - struct nfsd4_compoundres *resp = rqstp->rq_resp;
70407 - u32 minorversion = resp->cstate.minorversion;
70408 +diff -urNp linux-3.0.8/fs/nfsd/nfs4xdr.c linux-3.0.8/fs/nfsd/nfs4xdr.c
70409 +--- linux-3.0.8/fs/nfsd/nfs4xdr.c 2011-07-21 22:17:23.000000000 -0400
70410 ++++ linux-3.0.8/fs/nfsd/nfs4xdr.c 2011-08-23 21:48:14.000000000 -0400
70411 +@@ -1788,6 +1788,8 @@ nfsd4_encode_fattr(struct svc_fh *fhp, s
70412 + .dentry = dentry,
70413 + };
70414
70415 + pax_track_stack();
70416 +
70417 BUG_ON(bmval1 & NFSD_WRITEONLY_ATTRS_WORD1);
70418 BUG_ON(bmval0 & ~nfsd_suppattrs0(minorversion));
70419 BUG_ON(bmval1 & ~nfsd_suppattrs1(minorversion));
70420 -diff -urNp linux-2.6.32.48/fs/nfsd/vfs.c linux-2.6.32.48/fs/nfsd/vfs.c
70421 ---- linux-2.6.32.48/fs/nfsd/vfs.c 2011-11-12 12:44:30.000000000 -0500
70422 -+++ linux-2.6.32.48/fs/nfsd/vfs.c 2011-11-12 12:46:47.000000000 -0500
70423 -@@ -937,7 +937,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, st
70424 +diff -urNp linux-3.0.8/fs/nfsd/vfs.c linux-3.0.8/fs/nfsd/vfs.c
70425 +--- linux-3.0.8/fs/nfsd/vfs.c 2011-07-21 22:17:23.000000000 -0400
70426 ++++ linux-3.0.8/fs/nfsd/vfs.c 2011-10-06 04:17:55.000000000 -0400
70427 +@@ -896,7 +896,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, st
70428 } else {
70429 oldfs = get_fs();
70430 set_fs(KERNEL_DS);
70431 @@ -47929,7 +44972,7 @@ diff -urNp linux-2.6.32.48/fs/nfsd/vfs.c linux-2.6.32.48/fs/nfsd/vfs.c
70432 set_fs(oldfs);
70433 }
70434
70435 -@@ -1060,7 +1060,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, s
70436 +@@ -1000,7 +1000,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, s
70437
70438 /* Write the data. */
70439 oldfs = get_fs(); set_fs(KERNEL_DS);
70440 @@ -47938,7 +44981,7 @@ diff -urNp linux-2.6.32.48/fs/nfsd/vfs.c linux-2.6.32.48/fs/nfsd/vfs.c
70441 set_fs(oldfs);
70442 if (host_err < 0)
70443 goto out_nfserr;
70444 -@@ -1542,7 +1542,7 @@ nfsd_readlink(struct svc_rqst *rqstp, st
70445 +@@ -1535,7 +1535,7 @@ nfsd_readlink(struct svc_rqst *rqstp, st
70446 */
70447
70448 oldfs = get_fs(); set_fs(KERNEL_DS);
70449 @@ -47947,37 +44990,26 @@ diff -urNp linux-2.6.32.48/fs/nfsd/vfs.c linux-2.6.32.48/fs/nfsd/vfs.c
70450 set_fs(oldfs);
70451
70452 if (host_err < 0)
70453 -diff -urNp linux-2.6.32.48/fs/nilfs2/ioctl.c linux-2.6.32.48/fs/nilfs2/ioctl.c
70454 ---- linux-2.6.32.48/fs/nilfs2/ioctl.c 2009-12-02 22:51:21.000000000 -0500
70455 -+++ linux-2.6.32.48/fs/nilfs2/ioctl.c 2011-11-12 12:46:47.000000000 -0500
70456 -@@ -480,7 +480,7 @@ static int nilfs_ioctl_clean_segments(st
70457 - unsigned int cmd, void __user *argp)
70458 - {
70459 - struct nilfs_argv argv[5];
70460 -- const static size_t argsz[5] = {
70461 -+ static const size_t argsz[5] = {
70462 - sizeof(struct nilfs_vdesc),
70463 - sizeof(struct nilfs_period),
70464 - sizeof(__u64),
70465 -diff -urNp linux-2.6.32.48/fs/notify/dnotify/dnotify.c linux-2.6.32.48/fs/notify/dnotify/dnotify.c
70466 ---- linux-2.6.32.48/fs/notify/dnotify/dnotify.c 2009-12-02 22:51:21.000000000 -0500
70467 -+++ linux-2.6.32.48/fs/notify/dnotify/dnotify.c 2011-11-12 12:46:47.000000000 -0500
70468 -@@ -173,7 +173,7 @@ static void dnotify_free_mark(struct fsn
70469 - kmem_cache_free(dnotify_mark_entry_cache, dnentry);
70470 - }
70471 -
70472 --static struct fsnotify_ops dnotify_fsnotify_ops = {
70473 -+static const struct fsnotify_ops dnotify_fsnotify_ops = {
70474 - .handle_event = dnotify_handle_event,
70475 - .should_send_event = dnotify_should_send_event,
70476 - .free_group_priv = NULL,
70477 -diff -urNp linux-2.6.32.48/fs/notify/notification.c linux-2.6.32.48/fs/notify/notification.c
70478 ---- linux-2.6.32.48/fs/notify/notification.c 2009-12-02 22:51:21.000000000 -0500
70479 -+++ linux-2.6.32.48/fs/notify/notification.c 2011-11-12 12:46:47.000000000 -0500
70480 +diff -urNp linux-3.0.8/fs/notify/fanotify/fanotify_user.c linux-3.0.8/fs/notify/fanotify/fanotify_user.c
70481 +--- linux-3.0.8/fs/notify/fanotify/fanotify_user.c 2011-07-21 22:17:23.000000000 -0400
70482 ++++ linux-3.0.8/fs/notify/fanotify/fanotify_user.c 2011-08-23 21:48:14.000000000 -0400
70483 +@@ -276,7 +276,8 @@ static ssize_t copy_event_to_user(struct
70484 + goto out_close_fd;
70485 +
70486 + ret = -EFAULT;
70487 +- if (copy_to_user(buf, &fanotify_event_metadata,
70488 ++ if (fanotify_event_metadata.event_len > sizeof fanotify_event_metadata ||
70489 ++ copy_to_user(buf, &fanotify_event_metadata,
70490 + fanotify_event_metadata.event_len))
70491 + goto out_kill_access_response;
70492 +
70493 +diff -urNp linux-3.0.8/fs/notify/notification.c linux-3.0.8/fs/notify/notification.c
70494 +--- linux-3.0.8/fs/notify/notification.c 2011-07-21 22:17:23.000000000 -0400
70495 ++++ linux-3.0.8/fs/notify/notification.c 2011-08-23 21:47:56.000000000 -0400
70496 @@ -57,7 +57,7 @@ static struct kmem_cache *fsnotify_event
70497 * get set to 0 so it will never get 'freed'
70498 */
70499 - static struct fsnotify_event q_overflow_event;
70500 + static struct fsnotify_event *q_overflow_event;
70501 -static atomic_t fsnotify_sync_cookie = ATOMIC_INIT(0);
70502 +static atomic_unchecked_t fsnotify_sync_cookie = ATOMIC_INIT(0);
70503
70504 @@ -47992,10 +45024,10 @@ diff -urNp linux-2.6.32.48/fs/notify/notification.c linux-2.6.32.48/fs/notify/no
70505 }
70506 EXPORT_SYMBOL_GPL(fsnotify_get_cookie);
70507
70508 -diff -urNp linux-2.6.32.48/fs/ntfs/dir.c linux-2.6.32.48/fs/ntfs/dir.c
70509 ---- linux-2.6.32.48/fs/ntfs/dir.c 2009-12-02 22:51:21.000000000 -0500
70510 -+++ linux-2.6.32.48/fs/ntfs/dir.c 2011-11-12 12:46:47.000000000 -0500
70511 -@@ -1328,7 +1328,7 @@ find_next_index_buffer:
70512 +diff -urNp linux-3.0.8/fs/ntfs/dir.c linux-3.0.8/fs/ntfs/dir.c
70513 +--- linux-3.0.8/fs/ntfs/dir.c 2011-07-21 22:17:23.000000000 -0400
70514 ++++ linux-3.0.8/fs/ntfs/dir.c 2011-08-23 21:47:56.000000000 -0400
70515 +@@ -1329,7 +1329,7 @@ find_next_index_buffer:
70516 ia = (INDEX_ALLOCATION*)(kaddr + (ia_pos & ~PAGE_CACHE_MASK &
70517 ~(s64)(ndir->itype.index.block_size - 1)));
70518 /* Bounds checks. */
70519 @@ -48004,10 +45036,10 @@ diff -urNp linux-2.6.32.48/fs/ntfs/dir.c linux-2.6.32.48/fs/ntfs/dir.c
70520 ntfs_error(sb, "Out of bounds check failed. Corrupt directory "
70521 "inode 0x%lx or driver bug.", vdir->i_ino);
70522 goto err_out;
70523 -diff -urNp linux-2.6.32.48/fs/ntfs/file.c linux-2.6.32.48/fs/ntfs/file.c
70524 ---- linux-2.6.32.48/fs/ntfs/file.c 2009-12-02 22:51:21.000000000 -0500
70525 -+++ linux-2.6.32.48/fs/ntfs/file.c 2011-11-12 12:46:47.000000000 -0500
70526 -@@ -2243,6 +2243,6 @@ const struct inode_operations ntfs_file_
70527 +diff -urNp linux-3.0.8/fs/ntfs/file.c linux-3.0.8/fs/ntfs/file.c
70528 +--- linux-3.0.8/fs/ntfs/file.c 2011-07-21 22:17:23.000000000 -0400
70529 ++++ linux-3.0.8/fs/ntfs/file.c 2011-08-23 21:47:56.000000000 -0400
70530 +@@ -2222,6 +2222,6 @@ const struct inode_operations ntfs_file_
70531 #endif /* NTFS_RW */
70532 };
70533
70534 @@ -48016,34 +45048,22 @@ diff -urNp linux-2.6.32.48/fs/ntfs/file.c linux-2.6.32.48/fs/ntfs/file.c
70535
70536 -const struct inode_operations ntfs_empty_inode_ops = {};
70537 +const struct inode_operations ntfs_empty_inode_ops __read_only;
70538 -diff -urNp linux-2.6.32.48/fs/ocfs2/cluster/masklog.c linux-2.6.32.48/fs/ocfs2/cluster/masklog.c
70539 ---- linux-2.6.32.48/fs/ocfs2/cluster/masklog.c 2009-12-02 22:51:21.000000000 -0500
70540 -+++ linux-2.6.32.48/fs/ocfs2/cluster/masklog.c 2011-11-12 12:46:47.000000000 -0500
70541 -@@ -135,7 +135,7 @@ static ssize_t mlog_store(struct kobject
70542 - return mlog_mask_store(mlog_attr->mask, buf, count);
70543 - }
70544 -
70545 --static struct sysfs_ops mlog_attr_ops = {
70546 -+static const struct sysfs_ops mlog_attr_ops = {
70547 - .show = mlog_show,
70548 - .store = mlog_store,
70549 - };
70550 -diff -urNp linux-2.6.32.48/fs/ocfs2/localalloc.c linux-2.6.32.48/fs/ocfs2/localalloc.c
70551 ---- linux-2.6.32.48/fs/ocfs2/localalloc.c 2009-12-02 22:51:21.000000000 -0500
70552 -+++ linux-2.6.32.48/fs/ocfs2/localalloc.c 2011-11-12 12:46:47.000000000 -0500
70553 -@@ -1188,7 +1188,7 @@ static int ocfs2_local_alloc_slide_windo
70554 +diff -urNp linux-3.0.8/fs/ocfs2/localalloc.c linux-3.0.8/fs/ocfs2/localalloc.c
70555 +--- linux-3.0.8/fs/ocfs2/localalloc.c 2011-07-21 22:17:23.000000000 -0400
70556 ++++ linux-3.0.8/fs/ocfs2/localalloc.c 2011-08-23 21:47:56.000000000 -0400
70557 +@@ -1283,7 +1283,7 @@ static int ocfs2_local_alloc_slide_windo
70558 goto bail;
70559 }
70560
70561 - atomic_inc(&osb->alloc_stats.moves);
70562 + atomic_inc_unchecked(&osb->alloc_stats.moves);
70563
70564 - status = 0;
70565 bail:
70566 -diff -urNp linux-2.6.32.48/fs/ocfs2/namei.c linux-2.6.32.48/fs/ocfs2/namei.c
70567 ---- linux-2.6.32.48/fs/ocfs2/namei.c 2009-12-02 22:51:21.000000000 -0500
70568 -+++ linux-2.6.32.48/fs/ocfs2/namei.c 2011-11-12 12:46:47.000000000 -0500
70569 -@@ -1043,6 +1043,8 @@ static int ocfs2_rename(struct inode *ol
70570 + if (handle)
70571 +diff -urNp linux-3.0.8/fs/ocfs2/namei.c linux-3.0.8/fs/ocfs2/namei.c
70572 +--- linux-3.0.8/fs/ocfs2/namei.c 2011-07-21 22:17:23.000000000 -0400
70573 ++++ linux-3.0.8/fs/ocfs2/namei.c 2011-08-23 21:48:14.000000000 -0400
70574 +@@ -1063,6 +1063,8 @@ static int ocfs2_rename(struct inode *ol
70575 struct ocfs2_dir_lookup_result orphan_insert = { NULL, };
70576 struct ocfs2_dir_lookup_result target_insert = { NULL, };
70577
70578 @@ -48052,10 +45072,10 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/namei.c linux-2.6.32.48/fs/ocfs2/namei.c
70579 /* At some point it might be nice to break this function up a
70580 * bit. */
70581
70582 -diff -urNp linux-2.6.32.48/fs/ocfs2/ocfs2.h linux-2.6.32.48/fs/ocfs2/ocfs2.h
70583 ---- linux-2.6.32.48/fs/ocfs2/ocfs2.h 2009-12-02 22:51:21.000000000 -0500
70584 -+++ linux-2.6.32.48/fs/ocfs2/ocfs2.h 2011-11-12 12:46:47.000000000 -0500
70585 -@@ -217,11 +217,11 @@ enum ocfs2_vol_state
70586 +diff -urNp linux-3.0.8/fs/ocfs2/ocfs2.h linux-3.0.8/fs/ocfs2/ocfs2.h
70587 +--- linux-3.0.8/fs/ocfs2/ocfs2.h 2011-07-21 22:17:23.000000000 -0400
70588 ++++ linux-3.0.8/fs/ocfs2/ocfs2.h 2011-08-23 21:47:56.000000000 -0400
70589 +@@ -235,11 +235,11 @@ enum ocfs2_vol_state
70590
70591 struct ocfs2_alloc_stats
70592 {
70593 @@ -48072,10 +45092,10 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/ocfs2.h linux-2.6.32.48/fs/ocfs2/ocfs2.h
70594 };
70595
70596 enum ocfs2_local_alloc_state
70597 -diff -urNp linux-2.6.32.48/fs/ocfs2/suballoc.c linux-2.6.32.48/fs/ocfs2/suballoc.c
70598 ---- linux-2.6.32.48/fs/ocfs2/suballoc.c 2011-11-12 12:44:30.000000000 -0500
70599 -+++ linux-2.6.32.48/fs/ocfs2/suballoc.c 2011-11-12 12:46:47.000000000 -0500
70600 -@@ -623,7 +623,7 @@ static int ocfs2_reserve_suballoc_bits(s
70601 +diff -urNp linux-3.0.8/fs/ocfs2/suballoc.c linux-3.0.8/fs/ocfs2/suballoc.c
70602 +--- linux-3.0.8/fs/ocfs2/suballoc.c 2011-07-21 22:17:23.000000000 -0400
70603 ++++ linux-3.0.8/fs/ocfs2/suballoc.c 2011-08-23 21:47:56.000000000 -0400
70604 +@@ -872,7 +872,7 @@ static int ocfs2_reserve_suballoc_bits(s
70605 mlog_errno(status);
70606 goto bail;
70607 }
70608 @@ -48084,25 +45104,34 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/suballoc.c linux-2.6.32.48/fs/ocfs2/suballoc
70609
70610 /* You should never ask for this much metadata */
70611 BUG_ON(bits_wanted >
70612 -@@ -1654,7 +1654,7 @@ int ocfs2_claim_metadata(struct ocfs2_su
70613 +@@ -2008,7 +2008,7 @@ int ocfs2_claim_metadata(handle_t *handl
70614 mlog_errno(status);
70615 goto bail;
70616 }
70617 -- atomic_inc(&osb->alloc_stats.bg_allocs);
70618 -+ atomic_inc_unchecked(&osb->alloc_stats.bg_allocs);
70619 +- atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
70620 ++ atomic_inc_unchecked(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
70621 +
70622 + *suballoc_loc = res.sr_bg_blkno;
70623 + *suballoc_bit_start = res.sr_bit_offset;
70624 +@@ -2172,7 +2172,7 @@ int ocfs2_claim_new_inode_at_loc(handle_
70625 + trace_ocfs2_claim_new_inode_at_loc((unsigned long long)di_blkno,
70626 + res->sr_bits);
70627 +
70628 +- atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
70629 ++ atomic_inc_unchecked(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
70630 +
70631 + BUG_ON(res->sr_bits != 1);
70632
70633 - *blkno_start = bg_blkno + (u64) *suballoc_bit_start;
70634 - ac->ac_bits_given += (*num_bits);
70635 -@@ -1728,7 +1728,7 @@ int ocfs2_claim_new_inode(struct ocfs2_s
70636 +@@ -2214,7 +2214,7 @@ int ocfs2_claim_new_inode(handle_t *hand
70637 mlog_errno(status);
70638 goto bail;
70639 }
70640 -- atomic_inc(&osb->alloc_stats.bg_allocs);
70641 -+ atomic_inc_unchecked(&osb->alloc_stats.bg_allocs);
70642 +- atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
70643 ++ atomic_inc_unchecked(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs);
70644
70645 - BUG_ON(num_bits != 1);
70646 + BUG_ON(res.sr_bits != 1);
70647
70648 -@@ -1830,7 +1830,7 @@ int __ocfs2_claim_clusters(struct ocfs2_
70649 +@@ -2318,7 +2318,7 @@ int __ocfs2_claim_clusters(handle_t *han
70650 cluster_start,
70651 num_clusters);
70652 if (!status)
70653 @@ -48111,19 +45140,19 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/suballoc.c linux-2.6.32.48/fs/ocfs2/suballoc
70654 } else {
70655 if (min_clusters > (osb->bitmap_cpg - 1)) {
70656 /* The only paths asking for contiguousness
70657 -@@ -1858,7 +1858,7 @@ int __ocfs2_claim_clusters(struct ocfs2_
70658 +@@ -2344,7 +2344,7 @@ int __ocfs2_claim_clusters(handle_t *han
70659 ocfs2_desc_bitmap_to_cluster_off(ac->ac_inode,
70660 - bg_blkno,
70661 - bg_bit_off);
70662 + res.sr_bg_blkno,
70663 + res.sr_bit_offset);
70664 - atomic_inc(&osb->alloc_stats.bitmap_data);
70665 + atomic_inc_unchecked(&osb->alloc_stats.bitmap_data);
70666 + *num_clusters = res.sr_bits;
70667 }
70668 }
70669 - if (status < 0) {
70670 -diff -urNp linux-2.6.32.48/fs/ocfs2/super.c linux-2.6.32.48/fs/ocfs2/super.c
70671 ---- linux-2.6.32.48/fs/ocfs2/super.c 2011-11-12 12:44:30.000000000 -0500
70672 -+++ linux-2.6.32.48/fs/ocfs2/super.c 2011-11-12 12:46:47.000000000 -0500
70673 -@@ -284,11 +284,11 @@ static int ocfs2_osb_dump(struct ocfs2_s
70674 +diff -urNp linux-3.0.8/fs/ocfs2/super.c linux-3.0.8/fs/ocfs2/super.c
70675 +--- linux-3.0.8/fs/ocfs2/super.c 2011-07-21 22:17:23.000000000 -0400
70676 ++++ linux-3.0.8/fs/ocfs2/super.c 2011-08-23 21:47:56.000000000 -0400
70677 +@@ -300,11 +300,11 @@ static int ocfs2_osb_dump(struct ocfs2_s
70678 "%10s => GlobalAllocs: %d LocalAllocs: %d "
70679 "SubAllocs: %d LAWinMoves: %d SAExtends: %d\n",
70680 "Stats",
70681 @@ -48140,9 +45169,9 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/super.c linux-2.6.32.48/fs/ocfs2/super.c
70682
70683 out += snprintf(buf + out, len - out,
70684 "%10s => State: %u Descriptor: %llu Size: %u bits "
70685 -@@ -2002,11 +2002,11 @@ static int ocfs2_initialize_super(struct
70686 +@@ -2112,11 +2112,11 @@ static int ocfs2_initialize_super(struct
70687 spin_lock_init(&osb->osb_xattr_lock);
70688 - ocfs2_init_inode_steal_slot(osb);
70689 + ocfs2_init_steal_slots(osb);
70690
70691 - atomic_set(&osb->alloc_stats.moves, 0);
70692 - atomic_set(&osb->alloc_stats.local_data, 0);
70693 @@ -48157,21 +45186,33 @@ diff -urNp linux-2.6.32.48/fs/ocfs2/super.c linux-2.6.32.48/fs/ocfs2/super.c
70694
70695 /* Copy the blockcheck stats from the superblock probe */
70696 osb->osb_ecc_stats = *stats;
70697 -diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
70698 ---- linux-2.6.32.48/fs/open.c 2009-12-02 22:51:21.000000000 -0500
70699 -+++ linux-2.6.32.48/fs/open.c 2011-11-12 12:46:47.000000000 -0500
70700 -@@ -275,6 +275,10 @@ static long do_sys_truncate(const char _
70701 +diff -urNp linux-3.0.8/fs/ocfs2/symlink.c linux-3.0.8/fs/ocfs2/symlink.c
70702 +--- linux-3.0.8/fs/ocfs2/symlink.c 2011-07-21 22:17:23.000000000 -0400
70703 ++++ linux-3.0.8/fs/ocfs2/symlink.c 2011-08-23 21:47:56.000000000 -0400
70704 +@@ -142,7 +142,7 @@ bail:
70705 +
70706 + static void ocfs2_fast_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
70707 + {
70708 +- char *link = nd_get_link(nd);
70709 ++ const char *link = nd_get_link(nd);
70710 + if (!IS_ERR(link))
70711 + kfree(link);
70712 + }
70713 +diff -urNp linux-3.0.8/fs/open.c linux-3.0.8/fs/open.c
70714 +--- linux-3.0.8/fs/open.c 2011-07-21 22:17:23.000000000 -0400
70715 ++++ linux-3.0.8/fs/open.c 2011-09-14 09:16:46.000000000 -0400
70716 +@@ -112,6 +112,10 @@ static long do_sys_truncate(const char _
70717 error = locks_verify_truncate(inode, NULL, length);
70718 if (!error)
70719 - error = security_path_truncate(&path, length, 0);
70720 + error = security_path_truncate(&path);
70721 +
70722 + if (!error && !gr_acl_handle_truncate(path.dentry, path.mnt))
70723 + error = -EACCES;
70724 +
70725 - if (!error) {
70726 - vfs_dq_init(inode);
70727 + if (!error)
70728 error = do_truncate(path.dentry, length, 0, NULL);
70729 -@@ -511,6 +515,9 @@ SYSCALL_DEFINE3(faccessat, int, dfd, con
70730 +
70731 +@@ -358,6 +362,9 @@ SYSCALL_DEFINE3(faccessat, int, dfd, con
70732 if (__mnt_is_readonly(path.mnt))
70733 res = -EROFS;
70734
70735 @@ -48181,7 +45222,7 @@ diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
70736 out_path_release:
70737 path_put(&path);
70738 out:
70739 -@@ -537,6 +544,8 @@ SYSCALL_DEFINE1(chdir, const char __user
70740 +@@ -384,6 +391,8 @@ SYSCALL_DEFINE1(chdir, const char __user
70741 if (error)
70742 goto dput_and_out;
70743
70744 @@ -48190,10 +45231,10 @@ diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
70745 set_fs_pwd(current->fs, &path);
70746
70747 dput_and_out:
70748 -@@ -563,6 +572,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd
70749 +@@ -410,6 +419,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd
70750 goto out_putf;
70751
70752 - error = inode_permission(inode, MAY_EXEC | MAY_ACCESS);
70753 + error = inode_permission(inode, MAY_EXEC | MAY_CHDIR);
70754 +
70755 + if (!error && !gr_chroot_fchdir(file->f_path.dentry, file->f_path.mnt))
70756 + error = -EPERM;
70757 @@ -48204,8 +45245,8 @@ diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
70758 if (!error)
70759 set_fs_pwd(current->fs, &file->f_path);
70760 out_putf:
70761 -@@ -588,7 +604,13 @@ SYSCALL_DEFINE1(chroot, const char __use
70762 - if (!capable(CAP_SYS_CHROOT))
70763 +@@ -438,7 +454,13 @@ SYSCALL_DEFINE1(chroot, const char __use
70764 + if (error)
70765 goto dput_and_out;
70766
70767 + if (gr_handle_chroot_chroot(path.dentry, path.mnt))
70768 @@ -48218,35 +45259,33 @@ diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
70769 error = 0;
70770 dput_and_out:
70771 path_put(&path);
70772 -@@ -616,12 +638,27 @@ SYSCALL_DEFINE2(fchmod, unsigned int, fd
70773 +@@ -466,12 +488,25 @@ SYSCALL_DEFINE2(fchmod, unsigned int, fd
70774 err = mnt_want_write_file(file);
70775 if (err)
70776 goto out_putf;
70777 +
70778 mutex_lock(&inode->i_mutex);
70779 +
70780 -+ if (!gr_acl_handle_fchmod(dentry, file->f_path.mnt, mode)) {
70781 ++ if (!gr_acl_handle_fchmod(dentry, file->f_vfsmnt, mode)) {
70782 + err = -EACCES;
70783 + goto out_unlock;
70784 + }
70785 +
70786 + err = security_path_chmod(dentry, file->f_vfsmnt, mode);
70787 + if (err)
70788 + goto out_unlock;
70789 if (mode == (mode_t) -1)
70790 mode = inode->i_mode;
70791 +
70792 -+ if (gr_handle_chroot_chmod(dentry, file->f_path.mnt, mode)) {
70793 -+ err = -EPERM;
70794 ++ if (gr_handle_chroot_chmod(dentry, file->f_vfsmnt, mode)) {
70795 ++ err = -EACCES;
70796 + goto out_unlock;
70797 + }
70798 +
70799 newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
70800 newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
70801 err = notify_change(dentry, &newattrs);
70802 -+
70803 -+out_unlock:
70804 - mutex_unlock(&inode->i_mutex);
70805 - mnt_drop_write(file->f_path.mnt);
70806 - out_putf:
70807 -@@ -645,12 +682,27 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
70808 +@@ -499,12 +534,25 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
70809 error = mnt_want_write(path.mnt);
70810 if (error)
70811 goto dput_and_out;
70812 @@ -48258,6 +45297,9 @@ diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
70813 + goto out_unlock;
70814 + }
70815 +
70816 + error = security_path_chmod(path.dentry, path.mnt, mode);
70817 + if (error)
70818 + goto out_unlock;
70819 if (mode == (mode_t) -1)
70820 mode = inode->i_mode;
70821 +
70822 @@ -48269,79 +45311,31 @@ diff -urNp linux-2.6.32.48/fs/open.c linux-2.6.32.48/fs/open.c
70823 newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
70824 newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
70825 error = notify_change(path.dentry, &newattrs);
70826 -+
70827 -+out_unlock:
70828 - mutex_unlock(&inode->i_mutex);
70829 - mnt_drop_write(path.mnt);
70830 - dput_and_out:
70831 -@@ -664,12 +716,15 @@ SYSCALL_DEFINE2(chmod, const char __user
70832 - return sys_fchmodat(AT_FDCWD, filename, mode);
70833 - }
70834 -
70835 --static int chown_common(struct dentry * dentry, uid_t user, gid_t group)
70836 -+static int chown_common(struct dentry * dentry, uid_t user, gid_t group, struct vfsmount *mnt)
70837 - {
70838 - struct inode *inode = dentry->d_inode;
70839 +@@ -528,6 +576,9 @@ static int chown_common(struct path *pat
70840 int error;
70841 struct iattr newattrs;
70842
70843 -+ if (!gr_acl_handle_chown(dentry, mnt))
70844 ++ if (!gr_acl_handle_chown(path->dentry, path->mnt))
70845 + return -EACCES;
70846 +
70847 newattrs.ia_valid = ATTR_CTIME;
70848 if (user != (uid_t) -1) {
70849 newattrs.ia_valid |= ATTR_UID;
70850 -@@ -700,7 +755,7 @@ SYSCALL_DEFINE3(chown, const char __user
70851 - error = mnt_want_write(path.mnt);
70852 - if (error)
70853 - goto out_release;
70854 -- error = chown_common(path.dentry, user, group);
70855 -+ error = chown_common(path.dentry, user, group, path.mnt);
70856 - mnt_drop_write(path.mnt);
70857 - out_release:
70858 - path_put(&path);
70859 -@@ -725,7 +780,7 @@ SYSCALL_DEFINE5(fchownat, int, dfd, cons
70860 - error = mnt_want_write(path.mnt);
70861 - if (error)
70862 - goto out_release;
70863 -- error = chown_common(path.dentry, user, group);
70864 -+ error = chown_common(path.dentry, user, group, path.mnt);
70865 - mnt_drop_write(path.mnt);
70866 - out_release:
70867 - path_put(&path);
70868 -@@ -744,7 +799,7 @@ SYSCALL_DEFINE3(lchown, const char __use
70869 - error = mnt_want_write(path.mnt);
70870 - if (error)
70871 - goto out_release;
70872 -- error = chown_common(path.dentry, user, group);
70873 -+ error = chown_common(path.dentry, user, group, path.mnt);
70874 - mnt_drop_write(path.mnt);
70875 - out_release:
70876 - path_put(&path);
70877 -@@ -767,7 +822,7 @@ SYSCALL_DEFINE3(fchown, unsigned int, fd
70878 - goto out_fput;
70879 - dentry = file->f_path.dentry;
70880 - audit_inode(NULL, dentry);
70881 -- error = chown_common(dentry, user, group);
70882 -+ error = chown_common(dentry, user, group, file->f_path.mnt);
70883 - mnt_drop_write(file->f_path.mnt);
70884 - out_fput:
70885 - fput(file);
70886 -@@ -1036,7 +1091,10 @@ long do_sys_open(int dfd, const char __u
70887 +@@ -998,7 +1049,10 @@ long do_sys_open(int dfd, const char __u
70888 if (!IS_ERR(tmp)) {
70889 fd = get_unused_fd_flags(flags);
70890 if (fd >= 0) {
70891 -- struct file *f = do_filp_open(dfd, tmp, flags, mode, 0);
70892 +- struct file *f = do_filp_open(dfd, tmp, &op, lookup);
70893 + struct file *f;
70894 + /* don't allow to be set by userland */
70895 + flags &= ~FMODE_GREXEC;
70896 -+ f = do_filp_open(dfd, tmp, flags, mode, 0);
70897 ++ f = do_filp_open(dfd, tmp, &op, lookup);
70898 if (IS_ERR(f)) {
70899 put_unused_fd(fd);
70900 fd = PTR_ERR(f);
70901 -diff -urNp linux-2.6.32.48/fs/partitions/ldm.c linux-2.6.32.48/fs/partitions/ldm.c
70902 ---- linux-2.6.32.48/fs/partitions/ldm.c 2011-11-12 12:44:30.000000000 -0500
70903 -+++ linux-2.6.32.48/fs/partitions/ldm.c 2011-11-12 12:46:47.000000000 -0500
70904 +diff -urNp linux-3.0.8/fs/partitions/ldm.c linux-3.0.8/fs/partitions/ldm.c
70905 +--- linux-3.0.8/fs/partitions/ldm.c 2011-07-21 22:17:23.000000000 -0400
70906 ++++ linux-3.0.8/fs/partitions/ldm.c 2011-08-23 21:48:14.000000000 -0400
70907 @@ -1311,6 +1311,7 @@ static bool ldm_frag_add (const u8 *data
70908 ldm_error ("A VBLK claims to have %d parts.", num);
70909 return false;
70910 @@ -48359,26 +45353,10 @@ diff -urNp linux-2.6.32.48/fs/partitions/ldm.c linux-2.6.32.48/fs/partitions/ldm
70911 if (!f) {
70912 ldm_crit ("Out of memory.");
70913 return false;
70914 -diff -urNp linux-2.6.32.48/fs/partitions/mac.c linux-2.6.32.48/fs/partitions/mac.c
70915 ---- linux-2.6.32.48/fs/partitions/mac.c 2011-11-12 12:44:30.000000000 -0500
70916 -+++ linux-2.6.32.48/fs/partitions/mac.c 2011-11-12 12:46:47.000000000 -0500
70917 -@@ -59,11 +59,11 @@ int mac_partition(struct parsed_partitio
70918 - return 0; /* not a MacOS disk */
70919 - }
70920 - blocks_in_map = be32_to_cpu(part->map_count);
70921 -+ printk(" [mac]");
70922 - if (blocks_in_map < 0 || blocks_in_map >= DISK_MAX_PARTS) {
70923 - put_dev_sector(sect);
70924 - return 0;
70925 - }
70926 -- printk(" [mac]");
70927 - for (slot = 1; slot <= blocks_in_map; ++slot) {
70928 - int pos = slot * secsize;
70929 - put_dev_sector(sect);
70930 -diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70931 ---- linux-2.6.32.48/fs/pipe.c 2011-11-12 12:44:30.000000000 -0500
70932 -+++ linux-2.6.32.48/fs/pipe.c 2011-11-12 12:46:47.000000000 -0500
70933 -@@ -401,9 +401,9 @@ redo:
70934 +diff -urNp linux-3.0.8/fs/pipe.c linux-3.0.8/fs/pipe.c
70935 +--- linux-3.0.8/fs/pipe.c 2011-07-21 22:17:23.000000000 -0400
70936 ++++ linux-3.0.8/fs/pipe.c 2011-08-23 21:48:14.000000000 -0400
70937 +@@ -420,9 +420,9 @@ redo:
70938 }
70939 if (bufs) /* More to do? */
70940 continue;
70941 @@ -48390,7 +45368,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70942 /* syscall merging: Usually we must not sleep
70943 * if O_NONBLOCK is set, or if we got some data.
70944 * But if a writer sleeps in kernel space, then
70945 -@@ -462,7 +462,7 @@ pipe_write(struct kiocb *iocb, const str
70946 +@@ -481,7 +481,7 @@ pipe_write(struct kiocb *iocb, const str
70947 mutex_lock(&inode->i_mutex);
70948 pipe = inode->i_pipe;
70949
70950 @@ -48399,7 +45377,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70951 send_sig(SIGPIPE, current, 0);
70952 ret = -EPIPE;
70953 goto out;
70954 -@@ -511,7 +511,7 @@ redo1:
70955 +@@ -530,7 +530,7 @@ redo1:
70956 for (;;) {
70957 int bufs;
70958
70959 @@ -48408,7 +45386,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70960 send_sig(SIGPIPE, current, 0);
70961 if (!ret)
70962 ret = -EPIPE;
70963 -@@ -597,9 +597,9 @@ redo2:
70964 +@@ -616,9 +616,9 @@ redo2:
70965 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
70966 do_wakeup = 0;
70967 }
70968 @@ -48420,7 +45398,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70969 }
70970 out:
70971 mutex_unlock(&inode->i_mutex);
70972 -@@ -666,7 +666,7 @@ pipe_poll(struct file *filp, poll_table
70973 +@@ -685,7 +685,7 @@ pipe_poll(struct file *filp, poll_table
70974 mask = 0;
70975 if (filp->f_mode & FMODE_READ) {
70976 mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0;
70977 @@ -48429,7 +45407,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70978 mask |= POLLHUP;
70979 }
70980
70981 -@@ -676,7 +676,7 @@ pipe_poll(struct file *filp, poll_table
70982 +@@ -695,7 +695,7 @@ pipe_poll(struct file *filp, poll_table
70983 * Most Unices do not set POLLERR for FIFOs but on Linux they
70984 * behave exactly like pipes for poll().
70985 */
70986 @@ -48438,7 +45416,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70987 mask |= POLLERR;
70988 }
70989
70990 -@@ -690,10 +690,10 @@ pipe_release(struct inode *inode, int de
70991 +@@ -709,10 +709,10 @@ pipe_release(struct inode *inode, int de
70992
70993 mutex_lock(&inode->i_mutex);
70994 pipe = inode->i_pipe;
70995 @@ -48451,8 +45429,8 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
70996 + if (!atomic_read(&pipe->readers) && !atomic_read(&pipe->writers)) {
70997 free_pipe_info(inode);
70998 } else {
70999 - wake_up_interruptible_sync(&pipe->wait);
71000 -@@ -783,7 +783,7 @@ pipe_read_open(struct inode *inode, stru
71001 + wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP);
71002 +@@ -802,7 +802,7 @@ pipe_read_open(struct inode *inode, stru
71003
71004 if (inode->i_pipe) {
71005 ret = 0;
71006 @@ -48461,7 +45439,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
71007 }
71008
71009 mutex_unlock(&inode->i_mutex);
71010 -@@ -800,7 +800,7 @@ pipe_write_open(struct inode *inode, str
71011 +@@ -819,7 +819,7 @@ pipe_write_open(struct inode *inode, str
71012
71013 if (inode->i_pipe) {
71014 ret = 0;
71015 @@ -48470,7 +45448,7 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
71016 }
71017
71018 mutex_unlock(&inode->i_mutex);
71019 -@@ -818,9 +818,9 @@ pipe_rdwr_open(struct inode *inode, stru
71020 +@@ -837,9 +837,9 @@ pipe_rdwr_open(struct inode *inode, stru
71021 if (inode->i_pipe) {
71022 ret = 0;
71023 if (filp->f_mode & FMODE_READ)
71024 @@ -48482,16 +45460,16 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
71025 }
71026
71027 mutex_unlock(&inode->i_mutex);
71028 -@@ -905,7 +905,7 @@ void free_pipe_info(struct inode *inode)
71029 +@@ -931,7 +931,7 @@ void free_pipe_info(struct inode *inode)
71030 inode->i_pipe = NULL;
71031 }
71032
71033 -static struct vfsmount *pipe_mnt __read_mostly;
71034 +struct vfsmount *pipe_mnt __read_mostly;
71035 - static int pipefs_delete_dentry(struct dentry *dentry)
71036 - {
71037 - /*
71038 -@@ -945,7 +945,8 @@ static struct inode * get_pipe_inode(voi
71039 +
71040 + /*
71041 + * pipefs_dname() is called from d_path().
71042 +@@ -961,7 +961,8 @@ static struct inode * get_pipe_inode(voi
71043 goto fail_iput;
71044 inode->i_pipe = pipe;
71045
71046 @@ -48501,9 +45479,9 @@ diff -urNp linux-2.6.32.48/fs/pipe.c linux-2.6.32.48/fs/pipe.c
71047 inode->i_fop = &rdwr_pipefifo_fops;
71048
71049 /*
71050 -diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71051 ---- linux-2.6.32.48/fs/proc/array.c 2011-11-12 12:44:30.000000000 -0500
71052 -+++ linux-2.6.32.48/fs/proc/array.c 2011-11-12 12:46:47.000000000 -0500
71053 +diff -urNp linux-3.0.8/fs/proc/array.c linux-3.0.8/fs/proc/array.c
71054 +--- linux-3.0.8/fs/proc/array.c 2011-07-21 22:17:23.000000000 -0400
71055 ++++ linux-3.0.8/fs/proc/array.c 2011-08-23 21:48:14.000000000 -0400
71056 @@ -60,6 +60,7 @@
71057 #include <linux/tty.h>
71058 #include <linux/string.h>
71059 @@ -48512,8 +45490,8 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71060 #include <linux/proc_fs.h>
71061 #include <linux/ioport.h>
71062 #include <linux/uaccess.h>
71063 -@@ -321,6 +322,21 @@ static inline void task_context_switch_c
71064 - p->nivcsw);
71065 +@@ -337,6 +338,21 @@ static void task_cpus_allowed(struct seq
71066 + seq_putc(m, '\n');
71067 }
71068
71069 +#if defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
71070 @@ -48534,8 +45512,8 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71071 int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
71072 struct pid *pid, struct task_struct *task)
71073 {
71074 -@@ -337,9 +353,24 @@ int proc_pid_status(struct seq_file *m,
71075 - task_cap(m, task);
71076 +@@ -354,9 +370,24 @@ int proc_pid_status(struct seq_file *m,
71077 + task_cpus_allowed(m, task);
71078 cpuset_task_status_allowed(m, task);
71079 task_context_switch_counts(m, task);
71080 +
71081 @@ -48559,7 +45537,7 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71082 static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
71083 struct pid *pid, struct task_struct *task, int whole)
71084 {
71085 -@@ -358,9 +389,11 @@ static int do_task_stat(struct seq_file
71086 +@@ -375,9 +406,11 @@ static int do_task_stat(struct seq_file
71087 cputime_t cutime, cstime, utime, stime;
71088 cputime_t cgtime, gtime;
71089 unsigned long rsslim = 0;
71090 @@ -48572,8 +45550,8 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71091 state = *get_task_state(task);
71092 vsize = eip = esp = 0;
71093 permitted = ptrace_may_access(task, PTRACE_MODE_READ);
71094 -@@ -433,6 +466,19 @@ static int do_task_stat(struct seq_file
71095 - gtime = task_gtime(task);
71096 +@@ -449,6 +482,19 @@ static int do_task_stat(struct seq_file
71097 + gtime = task->gtime;
71098 }
71099
71100 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
71101 @@ -48592,7 +45570,7 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71102 /* scale priority and nice values from timeslices to -20..20 */
71103 /* to make it look like a "normal" Unix priority/nice value */
71104 priority = task_prio(task);
71105 -@@ -473,9 +519,15 @@ static int do_task_stat(struct seq_file
71106 +@@ -489,9 +535,15 @@ static int do_task_stat(struct seq_file
71107 vsize,
71108 mm ? get_mm_rss(mm) : 0,
71109 rsslim,
71110 @@ -48608,7 +45586,7 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71111 esp,
71112 eip,
71113 /* The signal information here is obsolete.
71114 -@@ -528,3 +580,18 @@ int proc_pid_statm(struct seq_file *m, s
71115 +@@ -544,3 +596,18 @@ int proc_pid_statm(struct seq_file *m, s
71116
71117 return 0;
71118 }
71119 @@ -48627,10 +45605,10 @@ diff -urNp linux-2.6.32.48/fs/proc/array.c linux-2.6.32.48/fs/proc/array.c
71120 + return sprintf(buffer, "%pI4\n", &curr_ip);
71121 +}
71122 +#endif
71123 -diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71124 ---- linux-2.6.32.48/fs/proc/base.c 2011-11-12 12:44:30.000000000 -0500
71125 -+++ linux-2.6.32.48/fs/proc/base.c 2011-11-12 12:59:33.000000000 -0500
71126 -@@ -102,6 +102,22 @@ struct pid_entry {
71127 +diff -urNp linux-3.0.8/fs/proc/base.c linux-3.0.8/fs/proc/base.c
71128 +--- linux-3.0.8/fs/proc/base.c 2011-10-24 08:05:21.000000000 -0400
71129 ++++ linux-3.0.8/fs/proc/base.c 2011-10-19 03:59:32.000000000 -0400
71130 +@@ -107,6 +107,22 @@ struct pid_entry {
71131 union proc_op op;
71132 };
71133
71134 @@ -48653,17 +45631,17 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71135 #define NOD(NAME, MODE, IOP, FOP, OP) { \
71136 .name = (NAME), \
71137 .len = sizeof(NAME) - 1, \
71138 -@@ -213,6 +229,9 @@ static int check_mem_permission(struct t
71139 +@@ -209,6 +225,9 @@ static struct mm_struct *__check_mem_per
71140 if (task == current)
71141 - return 0;
71142 + return mm;
71143
71144 + if (gr_handle_proc_ptrace(task) || gr_acl_handle_procpidmem(task))
71145 -+ return -EPERM;
71146 ++ return ERR_PTR(-EPERM);
71147 +
71148 /*
71149 * If current is actively ptrace'ing, and would also be
71150 * permitted to freshly attach with ptrace now, permit it.
71151 -@@ -260,6 +279,9 @@ static int proc_pid_cmdline(struct task_
71152 +@@ -282,6 +301,9 @@ static int proc_pid_cmdline(struct task_
71153 if (!mm->arg_end)
71154 goto out_mm; /* Shh! No looking before we're done */
71155
71156 @@ -48673,7 +45651,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71157 len = mm->arg_end - mm->arg_start;
71158
71159 if (len > PAGE_SIZE)
71160 -@@ -287,12 +309,28 @@ out:
71161 +@@ -309,12 +331,28 @@ out:
71162 return res;
71163 }
71164
71165 @@ -48685,9 +45663,9 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71166 +
71167 static int proc_pid_auxv(struct task_struct *task, char *buffer)
71168 {
71169 - int res = 0;
71170 - struct mm_struct *mm = get_task_mm(task);
71171 - if (mm) {
71172 + struct mm_struct *mm = mm_for_maps(task);
71173 + int res = PTR_ERR(mm);
71174 + if (mm && !IS_ERR(mm)) {
71175 unsigned int nwords = 0;
71176 +
71177 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
71178 @@ -48702,7 +45680,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71179 do {
71180 nwords += 2;
71181 } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */
71182 -@@ -306,7 +344,7 @@ static int proc_pid_auxv(struct task_str
71183 +@@ -328,7 +366,7 @@ static int proc_pid_auxv(struct task_str
71184 }
71185
71186
71187 @@ -48711,8 +45689,8 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71188 /*
71189 * Provides a wchan file via kallsyms in a proper one-value-per-file format.
71190 * Returns the resolved symbol. If that fails, simply return the address.
71191 -@@ -345,7 +383,7 @@ static void unlock_trace(struct task_str
71192 - mutex_unlock(&task->cred_guard_mutex);
71193 +@@ -367,7 +405,7 @@ static void unlock_trace(struct task_str
71194 + mutex_unlock(&task->signal->cred_guard_mutex);
71195 }
71196
71197 -#ifdef CONFIG_STACKTRACE
71198 @@ -48720,7 +45698,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71199
71200 #define MAX_STACK_TRACE_DEPTH 64
71201
71202 -@@ -545,7 +583,7 @@ static int proc_pid_limits(struct task_s
71203 +@@ -558,7 +596,7 @@ static int proc_pid_limits(struct task_s
71204 return count;
71205 }
71206
71207 @@ -48729,7 +45707,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71208 static int proc_pid_syscall(struct task_struct *task, char *buffer)
71209 {
71210 long nr;
71211 -@@ -574,7 +612,7 @@ static int proc_pid_syscall(struct task_
71212 +@@ -587,7 +625,7 @@ static int proc_pid_syscall(struct task_
71213 /************************************************************************/
71214
71215 /* permission checks */
71216 @@ -48738,7 +45716,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71217 {
71218 struct task_struct *task;
71219 int allowed = 0;
71220 -@@ -584,7 +622,10 @@ static int proc_fd_access_allowed(struct
71221 +@@ -597,7 +635,10 @@ static int proc_fd_access_allowed(struct
71222 */
71223 task = get_proc_task(inode);
71224 if (task) {
71225 @@ -48750,17 +45728,17 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71226 put_task_struct(task);
71227 }
71228 return allowed;
71229 -@@ -963,6 +1004,9 @@ static ssize_t environ_read(struct file
71230 +@@ -978,6 +1019,9 @@ static ssize_t environ_read(struct file
71231 if (!task)
71232 goto out_no_task;
71233
71234 + if (gr_acl_handle_procpidmem(task))
71235 + goto out;
71236 +
71237 - if (!ptrace_may_access(task, PTRACE_MODE_READ))
71238 - goto out;
71239 -
71240 -@@ -1377,7 +1421,7 @@ static void *proc_pid_follow_link(struct
71241 + ret = -ENOMEM;
71242 + page = (char *)__get_free_page(GFP_TEMPORARY);
71243 + if (!page)
71244 +@@ -1614,7 +1658,7 @@ static void *proc_pid_follow_link(struct
71245 path_put(&nd->path);
71246
71247 /* Are we allowed to snoop on the tasks file descriptors? */
71248 @@ -48769,7 +45747,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71249 goto out;
71250
71251 error = PROC_I(inode)->op.proc_get_link(inode, &nd->path);
71252 -@@ -1417,8 +1461,18 @@ static int proc_pid_readlink(struct dent
71253 +@@ -1653,8 +1697,18 @@ static int proc_pid_readlink(struct dent
71254 struct path path;
71255
71256 /* Are we allowed to snoop on the tasks file descriptors? */
71257 @@ -48790,7 +45768,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71258
71259 error = PROC_I(inode)->op.proc_get_link(inode, &path);
71260 if (error)
71261 -@@ -1483,7 +1537,11 @@ static struct inode *proc_pid_make_inode
71262 +@@ -1719,7 +1773,11 @@ struct inode *proc_pid_make_inode(struct
71263 rcu_read_lock();
71264 cred = __task_cred(task);
71265 inode->i_uid = cred->euid;
71266 @@ -48802,7 +45780,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71267 rcu_read_unlock();
71268 }
71269 security_task_to_inode(task, inode);
71270 -@@ -1501,6 +1559,9 @@ static int pid_getattr(struct vfsmount *
71271 +@@ -1737,6 +1795,9 @@ int pid_getattr(struct vfsmount *mnt, st
71272 struct inode *inode = dentry->d_inode;
71273 struct task_struct *task;
71274 const struct cred *cred;
71275 @@ -48812,7 +45790,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71276
71277 generic_fillattr(inode, stat);
71278
71279 -@@ -1508,13 +1569,41 @@ static int pid_getattr(struct vfsmount *
71280 +@@ -1744,13 +1805,41 @@ int pid_getattr(struct vfsmount *mnt, st
71281 stat->uid = 0;
71282 stat->gid = 0;
71283 task = pid_task(proc_pid(inode), PIDTYPE_PID);
71284 @@ -48845,17 +45823,17 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71285 +#else
71286 stat->gid = cred->egid;
71287 +#endif
71288 - }
71289 ++ }
71290 +#if defined(CONFIG_GRKERNSEC_PROC_USER) || defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
71291 + } else {
71292 + rcu_read_unlock();
71293 + return -ENOENT;
71294 -+ }
71295 + }
71296 +#endif
71297 }
71298 rcu_read_unlock();
71299 return 0;
71300 -@@ -1545,11 +1634,20 @@ static int pid_revalidate(struct dentry
71301 +@@ -1787,11 +1876,20 @@ int pid_revalidate(struct dentry *dentry
71302
71303 if (task) {
71304 if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
71305 @@ -48876,7 +45854,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71306 rcu_read_unlock();
71307 } else {
71308 inode->i_uid = 0;
71309 -@@ -1670,7 +1768,8 @@ static int proc_fd_info(struct inode *in
71310 +@@ -1909,7 +2007,8 @@ static int proc_fd_info(struct inode *in
71311 int fd = proc_fd(inode);
71312
71313 if (task) {
71314 @@ -48886,13 +45864,12 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71315 put_task_struct(task);
71316 }
71317 if (files) {
71318 -@@ -1922,12 +2021,22 @@ static const struct file_operations proc
71319 - static int proc_fd_permission(struct inode *inode, int mask)
71320 +@@ -2169,11 +2268,21 @@ static const struct file_operations proc
71321 + */
71322 + static int proc_fd_permission(struct inode *inode, int mask, unsigned int flags)
71323 {
71324 - int rv;
71325 + struct task_struct *task;
71326 -
71327 - rv = generic_permission(inode, mask, NULL);
71328 + int rv = generic_permission(inode, mask, flags, NULL);
71329 - if (rv == 0)
71330 - return 0;
71331 +
71332 @@ -48911,7 +45888,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71333 return rv;
71334 }
71335
71336 -@@ -2036,6 +2145,9 @@ static struct dentry *proc_pident_lookup
71337 +@@ -2283,6 +2392,9 @@ static struct dentry *proc_pident_lookup
71338 if (!task)
71339 goto out_no_task;
71340
71341 @@ -48921,7 +45898,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71342 /*
71343 * Yes, it does not scale. And it should not. Don't add
71344 * new entries into /proc/<tgid>/ without very good reasons.
71345 -@@ -2080,6 +2192,9 @@ static int proc_pident_readdir(struct fi
71346 +@@ -2327,6 +2439,9 @@ static int proc_pident_readdir(struct fi
71347 if (!task)
71348 goto out_no_task;
71349
71350 @@ -48931,7 +45908,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71351 ret = 0;
71352 i = filp->f_pos;
71353 switch (i) {
71354 -@@ -2347,7 +2462,7 @@ static void *proc_self_follow_link(struc
71355 +@@ -2597,7 +2712,7 @@ static void *proc_self_follow_link(struc
71356 static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd,
71357 void *cookie)
71358 {
71359 @@ -48940,16 +45917,24 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71360 if (!IS_ERR(s))
71361 __putname(s);
71362 }
71363 -@@ -2553,7 +2668,7 @@ static const struct pid_entry tgid_base_
71364 - #ifdef CONFIG_SCHED_DEBUG
71365 - REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
71366 +@@ -2656,6 +2771,7 @@ static struct dentry *proc_base_instanti
71367 + if (p->fop)
71368 + inode->i_fop = p->fop;
71369 + ei->op = p->op;
71370 ++
71371 + d_add(dentry, inode);
71372 + error = NULL;
71373 + out:
71374 +@@ -2795,7 +2911,7 @@ static const struct pid_entry tgid_base_
71375 + REG("autogroup", S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations),
71376 #endif
71377 + REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
71378 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
71379 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
71380 INF("syscall", S_IRUGO, proc_pid_syscall),
71381 #endif
71382 INF("cmdline", S_IRUGO, proc_pid_cmdline),
71383 -@@ -2578,10 +2693,10 @@ static const struct pid_entry tgid_base_
71384 +@@ -2820,10 +2936,10 @@ static const struct pid_entry tgid_base_
71385 #ifdef CONFIG_SECURITY
71386 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
71387 #endif
71388 @@ -48962,9 +45947,9 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71389 ONE("stack", S_IRUGO, proc_pid_stack),
71390 #endif
71391 #ifdef CONFIG_SCHEDSTATS
71392 -@@ -2611,6 +2726,9 @@ static const struct pid_entry tgid_base_
71393 - #ifdef CONFIG_TASK_IO_ACCOUNTING
71394 - INF("io", S_IRUSR, proc_tgid_io_accounting),
71395 +@@ -2857,6 +2973,9 @@ static const struct pid_entry tgid_base_
71396 + #ifdef CONFIG_HARDWALL
71397 + INF("hardwall", S_IRUGO, proc_pid_hardwall),
71398 #endif
71399 +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR
71400 + INF("ipaddr", S_IRUSR, proc_pid_ipaddr),
71401 @@ -48972,7 +45957,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71402 };
71403
71404 static int proc_tgid_base_readdir(struct file * filp,
71405 -@@ -2735,7 +2853,14 @@ static struct dentry *proc_pid_instantia
71406 +@@ -2982,7 +3101,14 @@ static struct dentry *proc_pid_instantia
71407 if (!inode)
71408 goto out;
71409
71410 @@ -48987,7 +45972,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71411 inode->i_op = &proc_tgid_base_inode_operations;
71412 inode->i_fop = &proc_tgid_base_operations;
71413 inode->i_flags|=S_IMMUTABLE;
71414 -@@ -2777,7 +2902,14 @@ struct dentry *proc_pid_lookup(struct in
71415 +@@ -3024,7 +3150,14 @@ struct dentry *proc_pid_lookup(struct in
71416 if (!task)
71417 goto out;
71418
71419 @@ -49002,7 +45987,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71420 put_task_struct(task);
71421 out:
71422 return result;
71423 -@@ -2842,6 +2974,11 @@ int proc_pid_readdir(struct file * filp,
71424 +@@ -3089,6 +3222,11 @@ int proc_pid_readdir(struct file * filp,
71425 {
71426 unsigned int nr;
71427 struct task_struct *reaper;
71428 @@ -49014,7 +45999,7 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71429 struct tgid_iter iter;
71430 struct pid_namespace *ns;
71431
71432 -@@ -2865,8 +3002,27 @@ int proc_pid_readdir(struct file * filp,
71433 +@@ -3112,8 +3250,27 @@ int proc_pid_readdir(struct file * filp,
71434 for (iter = next_tgid(ns, iter);
71435 iter.task;
71436 iter.tgid += 1, iter = next_tgid(ns, iter)) {
71437 @@ -49043,16 +46028,16 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71438 put_task_struct(iter.task);
71439 goto out;
71440 }
71441 -@@ -2892,7 +3048,7 @@ static const struct pid_entry tid_base_s
71442 - #ifdef CONFIG_SCHED_DEBUG
71443 +@@ -3141,7 +3298,7 @@ static const struct pid_entry tid_base_s
71444 REG("sched", S_IRUGO|S_IWUSR, proc_pid_sched_operations),
71445 #endif
71446 + REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
71447 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
71448 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
71449 INF("syscall", S_IRUGO, proc_pid_syscall),
71450 #endif
71451 INF("cmdline", S_IRUGO, proc_pid_cmdline),
71452 -@@ -2916,10 +3072,10 @@ static const struct pid_entry tid_base_s
71453 +@@ -3165,10 +3322,10 @@ static const struct pid_entry tid_base_s
71454 #ifdef CONFIG_SECURITY
71455 DIR("attr", S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
71456 #endif
71457 @@ -49065,9 +46050,9 @@ diff -urNp linux-2.6.32.48/fs/proc/base.c linux-2.6.32.48/fs/proc/base.c
71458 ONE("stack", S_IRUGO, proc_pid_stack),
71459 #endif
71460 #ifdef CONFIG_SCHEDSTATS
71461 -diff -urNp linux-2.6.32.48/fs/proc/cmdline.c linux-2.6.32.48/fs/proc/cmdline.c
71462 ---- linux-2.6.32.48/fs/proc/cmdline.c 2009-12-02 22:51:21.000000000 -0500
71463 -+++ linux-2.6.32.48/fs/proc/cmdline.c 2011-11-12 12:46:47.000000000 -0500
71464 +diff -urNp linux-3.0.8/fs/proc/cmdline.c linux-3.0.8/fs/proc/cmdline.c
71465 +--- linux-3.0.8/fs/proc/cmdline.c 2011-07-21 22:17:23.000000000 -0400
71466 ++++ linux-3.0.8/fs/proc/cmdline.c 2011-08-23 21:48:14.000000000 -0400
71467 @@ -23,7 +23,11 @@ static const struct file_operations cmdl
71468
71469 static int __init proc_cmdline_init(void)
71470 @@ -49080,9 +46065,9 @@ diff -urNp linux-2.6.32.48/fs/proc/cmdline.c linux-2.6.32.48/fs/proc/cmdline.c
71471 return 0;
71472 }
71473 module_init(proc_cmdline_init);
71474 -diff -urNp linux-2.6.32.48/fs/proc/devices.c linux-2.6.32.48/fs/proc/devices.c
71475 ---- linux-2.6.32.48/fs/proc/devices.c 2009-12-02 22:51:21.000000000 -0500
71476 -+++ linux-2.6.32.48/fs/proc/devices.c 2011-11-12 12:46:47.000000000 -0500
71477 +diff -urNp linux-3.0.8/fs/proc/devices.c linux-3.0.8/fs/proc/devices.c
71478 +--- linux-3.0.8/fs/proc/devices.c 2011-07-21 22:17:23.000000000 -0400
71479 ++++ linux-3.0.8/fs/proc/devices.c 2011-08-23 21:48:14.000000000 -0400
71480 @@ -64,7 +64,11 @@ static const struct file_operations proc
71481
71482 static int __init proc_devices_init(void)
71483 @@ -49095,13 +46080,13 @@ diff -urNp linux-2.6.32.48/fs/proc/devices.c linux-2.6.32.48/fs/proc/devices.c
71484 return 0;
71485 }
71486 module_init(proc_devices_init);
71487 -diff -urNp linux-2.6.32.48/fs/proc/inode.c linux-2.6.32.48/fs/proc/inode.c
71488 ---- linux-2.6.32.48/fs/proc/inode.c 2009-12-02 22:51:21.000000000 -0500
71489 -+++ linux-2.6.32.48/fs/proc/inode.c 2011-11-12 12:46:47.000000000 -0500
71490 -@@ -18,12 +18,19 @@
71491 +diff -urNp linux-3.0.8/fs/proc/inode.c linux-3.0.8/fs/proc/inode.c
71492 +--- linux-3.0.8/fs/proc/inode.c 2011-07-21 22:17:23.000000000 -0400
71493 ++++ linux-3.0.8/fs/proc/inode.c 2011-10-19 03:59:32.000000000 -0400
71494 +@@ -18,12 +18,18 @@
71495 #include <linux/module.h>
71496 - #include <linux/smp_lock.h>
71497 #include <linux/sysctl.h>
71498 + #include <linux/slab.h>
71499 +#include <linux/grsecurity.h>
71500
71501 #include <asm/system.h>
71502 @@ -49114,14 +46099,13 @@ diff -urNp linux-2.6.32.48/fs/proc/inode.c linux-2.6.32.48/fs/proc/inode.c
71503 +extern const struct inode_operations proc_sys_dir_operations;
71504 +#endif
71505 +
71506 -+
71507 - struct proc_dir_entry *de_get(struct proc_dir_entry *de)
71508 + static void proc_evict_inode(struct inode *inode)
71509 {
71510 - atomic_inc(&de->count);
71511 -@@ -62,6 +69,13 @@ static void proc_delete_inode(struct ino
71512 - de_put(de);
71513 - if (PROC_I(inode)->sysctl)
71514 - sysctl_head_put(PROC_I(inode)->sysctl);
71515 + struct proc_dir_entry *de;
71516 +@@ -49,6 +55,13 @@ static void proc_evict_inode(struct inod
71517 + ns_ops = PROC_I(inode)->ns_ops;
71518 + if (ns_ops && ns_ops->put)
71519 + ns_ops->put(PROC_I(inode)->ns);
71520 +
71521 +#ifdef CONFIG_PROC_SYSCTL
71522 + if (inode->i_op == &proc_sys_inode_operations ||
71523 @@ -49129,10 +46113,10 @@ diff -urNp linux-2.6.32.48/fs/proc/inode.c linux-2.6.32.48/fs/proc/inode.c
71524 + gr_handle_delete(inode->i_ino, inode->i_sb->s_dev);
71525 +#endif
71526 +
71527 - clear_inode(inode);
71528 }
71529
71530 -@@ -457,7 +471,11 @@ struct inode *proc_get_inode(struct supe
71531 + static struct kmem_cache * proc_inode_cachep;
71532 +@@ -440,7 +453,11 @@ struct inode *proc_get_inode(struct supe
71533 if (de->mode) {
71534 inode->i_mode = de->mode;
71535 inode->i_uid = de->uid;
71536 @@ -49144,9 +46128,9 @@ diff -urNp linux-2.6.32.48/fs/proc/inode.c linux-2.6.32.48/fs/proc/inode.c
71537 }
71538 if (de->size)
71539 inode->i_size = de->size;
71540 -diff -urNp linux-2.6.32.48/fs/proc/internal.h linux-2.6.32.48/fs/proc/internal.h
71541 ---- linux-2.6.32.48/fs/proc/internal.h 2009-12-02 22:51:21.000000000 -0500
71542 -+++ linux-2.6.32.48/fs/proc/internal.h 2011-11-12 12:46:47.000000000 -0500
71543 +diff -urNp linux-3.0.8/fs/proc/internal.h linux-3.0.8/fs/proc/internal.h
71544 +--- linux-3.0.8/fs/proc/internal.h 2011-07-21 22:17:23.000000000 -0400
71545 ++++ linux-3.0.8/fs/proc/internal.h 2011-08-23 21:48:14.000000000 -0400
71546 @@ -51,6 +51,9 @@ extern int proc_pid_status(struct seq_fi
71547 struct pid *pid, struct task_struct *task);
71548 extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
71549 @@ -49157,9 +46141,9 @@ diff -urNp linux-2.6.32.48/fs/proc/internal.h linux-2.6.32.48/fs/proc/internal.h
71550 extern loff_t mem_lseek(struct file *file, loff_t offset, int orig);
71551
71552 extern const struct file_operations proc_maps_operations;
71553 -diff -urNp linux-2.6.32.48/fs/proc/Kconfig linux-2.6.32.48/fs/proc/Kconfig
71554 ---- linux-2.6.32.48/fs/proc/Kconfig 2009-12-02 22:51:21.000000000 -0500
71555 -+++ linux-2.6.32.48/fs/proc/Kconfig 2011-11-12 12:46:47.000000000 -0500
71556 +diff -urNp linux-3.0.8/fs/proc/Kconfig linux-3.0.8/fs/proc/Kconfig
71557 +--- linux-3.0.8/fs/proc/Kconfig 2011-07-21 22:17:23.000000000 -0400
71558 ++++ linux-3.0.8/fs/proc/Kconfig 2011-08-23 21:48:14.000000000 -0400
71559 @@ -30,12 +30,12 @@ config PROC_FS
71560
71561 config PROC_KCORE
71562 @@ -49168,10 +46152,10 @@ diff -urNp linux-2.6.32.48/fs/proc/Kconfig linux-2.6.32.48/fs/proc/Kconfig
71563 + depends on PROC_FS && MMU && !GRKERNSEC_PROC_ADD
71564
71565 config PROC_VMCORE
71566 - bool "/proc/vmcore support (EXPERIMENTAL)"
71567 -- depends on PROC_FS && CRASH_DUMP
71568 + bool "/proc/vmcore support"
71569 +- depends on PROC_FS && CRASH_DUMP
71570 - default y
71571 -+ depends on PROC_FS && CRASH_DUMP && !GRKERNSEC
71572 ++ depends on PROC_FS && CRASH_DUMP && !GRKERNSEC
71573 + default n
71574 help
71575 Exports the dump image of crashed kernel in ELF format.
71576 @@ -49184,13 +46168,13 @@ diff -urNp linux-2.6.32.48/fs/proc/Kconfig linux-2.6.32.48/fs/proc/Kconfig
71577 - depends on PROC_FS && MMU
71578 + default n
71579 + depends on PROC_FS && MMU && !GRKERNSEC
71580 - bool "Enable /proc page monitoring" if EMBEDDED
71581 + bool "Enable /proc page monitoring" if EXPERT
71582 help
71583 Various /proc files exist to monitor process memory utilization:
71584 -diff -urNp linux-2.6.32.48/fs/proc/kcore.c linux-2.6.32.48/fs/proc/kcore.c
71585 ---- linux-2.6.32.48/fs/proc/kcore.c 2011-11-12 12:44:30.000000000 -0500
71586 -+++ linux-2.6.32.48/fs/proc/kcore.c 2011-11-12 12:46:47.000000000 -0500
71587 -@@ -320,6 +320,8 @@ static void elf_kcore_store_hdr(char *bu
71588 +diff -urNp linux-3.0.8/fs/proc/kcore.c linux-3.0.8/fs/proc/kcore.c
71589 +--- linux-3.0.8/fs/proc/kcore.c 2011-07-21 22:17:23.000000000 -0400
71590 ++++ linux-3.0.8/fs/proc/kcore.c 2011-08-23 21:48:14.000000000 -0400
71591 +@@ -321,6 +321,8 @@ static void elf_kcore_store_hdr(char *bu
71592 off_t offset = 0;
71593 struct kcore_list *m;
71594
71595 @@ -49199,7 +46183,7 @@ diff -urNp linux-2.6.32.48/fs/proc/kcore.c linux-2.6.32.48/fs/proc/kcore.c
71596 /* setup ELF header */
71597 elf = (struct elfhdr *) bufp;
71598 bufp += sizeof(struct elfhdr);
71599 -@@ -477,9 +479,10 @@ read_kcore(struct file *file, char __use
71600 +@@ -478,9 +480,10 @@ read_kcore(struct file *file, char __use
71601 * the addresses in the elf_phdr on our list.
71602 */
71603 start = kc_offset_to_vaddr(*fpos - elf_buflen);
71604 @@ -49212,7 +46196,7 @@ diff -urNp linux-2.6.32.48/fs/proc/kcore.c linux-2.6.32.48/fs/proc/kcore.c
71605 while (buflen) {
71606 struct kcore_list *m;
71607
71608 -@@ -508,20 +511,23 @@ read_kcore(struct file *file, char __use
71609 +@@ -509,20 +512,23 @@ read_kcore(struct file *file, char __use
71610 kfree(elf_buf);
71611 } else {
71612 if (kern_addr_valid(start)) {
71613 @@ -49247,7 +46231,7 @@ diff -urNp linux-2.6.32.48/fs/proc/kcore.c linux-2.6.32.48/fs/proc/kcore.c
71614 } else {
71615 if (clear_user(buffer, tsz))
71616 return -EFAULT;
71617 -@@ -541,6 +547,9 @@ read_kcore(struct file *file, char __use
71618 +@@ -542,6 +548,9 @@ read_kcore(struct file *file, char __use
71619
71620 static int open_kcore(struct inode *inode, struct file *filp)
71621 {
71622 @@ -49257,9 +46241,9 @@ diff -urNp linux-2.6.32.48/fs/proc/kcore.c linux-2.6.32.48/fs/proc/kcore.c
71623 if (!capable(CAP_SYS_RAWIO))
71624 return -EPERM;
71625 if (kcore_need_update)
71626 -diff -urNp linux-2.6.32.48/fs/proc/meminfo.c linux-2.6.32.48/fs/proc/meminfo.c
71627 ---- linux-2.6.32.48/fs/proc/meminfo.c 2009-12-02 22:51:21.000000000 -0500
71628 -+++ linux-2.6.32.48/fs/proc/meminfo.c 2011-11-12 12:46:47.000000000 -0500
71629 +diff -urNp linux-3.0.8/fs/proc/meminfo.c linux-3.0.8/fs/proc/meminfo.c
71630 +--- linux-3.0.8/fs/proc/meminfo.c 2011-07-21 22:17:23.000000000 -0400
71631 ++++ linux-3.0.8/fs/proc/meminfo.c 2011-08-23 21:48:14.000000000 -0400
71632 @@ -29,6 +29,8 @@ static int meminfo_proc_show(struct seq_
71633 unsigned long pages[NR_LRU_LISTS];
71634 int lru;
71635 @@ -49269,19 +46253,19 @@ diff -urNp linux-2.6.32.48/fs/proc/meminfo.c linux-2.6.32.48/fs/proc/meminfo.c
71636 /*
71637 * display in kilobytes.
71638 */
71639 -@@ -149,7 +151,7 @@ static int meminfo_proc_show(struct seq_
71640 +@@ -157,7 +159,7 @@ static int meminfo_proc_show(struct seq_
71641 vmi.used >> 10,
71642 vmi.largest_chunk >> 10
71643 #ifdef CONFIG_MEMORY_FAILURE
71644 - ,atomic_long_read(&mce_bad_pages) << (PAGE_SHIFT - 10)
71645 + ,atomic_long_read_unchecked(&mce_bad_pages) << (PAGE_SHIFT - 10)
71646 #endif
71647 - );
71648 -
71649 -diff -urNp linux-2.6.32.48/fs/proc/nommu.c linux-2.6.32.48/fs/proc/nommu.c
71650 ---- linux-2.6.32.48/fs/proc/nommu.c 2009-12-02 22:51:21.000000000 -0500
71651 -+++ linux-2.6.32.48/fs/proc/nommu.c 2011-11-12 12:46:47.000000000 -0500
71652 -@@ -67,7 +67,7 @@ static int nommu_region_show(struct seq_
71653 + #ifdef CONFIG_TRANSPARENT_HUGEPAGE
71654 + ,K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
71655 +diff -urNp linux-3.0.8/fs/proc/nommu.c linux-3.0.8/fs/proc/nommu.c
71656 +--- linux-3.0.8/fs/proc/nommu.c 2011-07-21 22:17:23.000000000 -0400
71657 ++++ linux-3.0.8/fs/proc/nommu.c 2011-08-23 21:47:56.000000000 -0400
71658 +@@ -66,7 +66,7 @@ static int nommu_region_show(struct seq_
71659 if (len < 1)
71660 len = 1;
71661 seq_printf(m, "%*c", len, ' ');
71662 @@ -49290,10 +46274,10 @@ diff -urNp linux-2.6.32.48/fs/proc/nommu.c linux-2.6.32.48/fs/proc/nommu.c
71663 }
71664
71665 seq_putc(m, '\n');
71666 -diff -urNp linux-2.6.32.48/fs/proc/proc_net.c linux-2.6.32.48/fs/proc/proc_net.c
71667 ---- linux-2.6.32.48/fs/proc/proc_net.c 2009-12-02 22:51:21.000000000 -0500
71668 -+++ linux-2.6.32.48/fs/proc/proc_net.c 2011-11-12 12:46:47.000000000 -0500
71669 -@@ -104,6 +104,17 @@ static struct net *get_proc_task_net(str
71670 +diff -urNp linux-3.0.8/fs/proc/proc_net.c linux-3.0.8/fs/proc/proc_net.c
71671 +--- linux-3.0.8/fs/proc/proc_net.c 2011-07-21 22:17:23.000000000 -0400
71672 ++++ linux-3.0.8/fs/proc/proc_net.c 2011-08-23 21:48:14.000000000 -0400
71673 +@@ -105,6 +105,17 @@ static struct net *get_proc_task_net(str
71674 struct task_struct *task;
71675 struct nsproxy *ns;
71676 struct net *net = NULL;
71677 @@ -49311,11 +46295,11 @@ diff -urNp linux-2.6.32.48/fs/proc/proc_net.c linux-2.6.32.48/fs/proc/proc_net.c
71678
71679 rcu_read_lock();
71680 task = pid_task(proc_pid(dir), PIDTYPE_PID);
71681 -diff -urNp linux-2.6.32.48/fs/proc/proc_sysctl.c linux-2.6.32.48/fs/proc/proc_sysctl.c
71682 ---- linux-2.6.32.48/fs/proc/proc_sysctl.c 2009-12-02 22:51:21.000000000 -0500
71683 -+++ linux-2.6.32.48/fs/proc/proc_sysctl.c 2011-11-12 12:46:47.000000000 -0500
71684 -@@ -7,11 +7,13 @@
71685 - #include <linux/security.h>
71686 +diff -urNp linux-3.0.8/fs/proc/proc_sysctl.c linux-3.0.8/fs/proc/proc_sysctl.c
71687 +--- linux-3.0.8/fs/proc/proc_sysctl.c 2011-07-21 22:17:23.000000000 -0400
71688 ++++ linux-3.0.8/fs/proc/proc_sysctl.c 2011-10-19 03:59:32.000000000 -0400
71689 +@@ -8,11 +8,13 @@
71690 + #include <linux/namei.h>
71691 #include "internal.h"
71692
71693 +extern __u32 gr_handle_sysctl(const struct ctl_table *table, const int op);
71694 @@ -49330,37 +46314,32 @@ diff -urNp linux-2.6.32.48/fs/proc/proc_sysctl.c linux-2.6.32.48/fs/proc/proc_sy
71695
71696 static struct inode *proc_sys_make_inode(struct super_block *sb,
71697 struct ctl_table_header *head, struct ctl_table *table)
71698 -@@ -109,6 +111,9 @@ static struct dentry *proc_sys_lookup(st
71699 - if (!p)
71700 - goto out;
71701 -
71702 -+ if (gr_handle_sysctl(p, MAY_EXEC))
71703 -+ goto out;
71704 -+
71705 - err = ERR_PTR(-ENOMEM);
71706 - inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p);
71707 - if (h)
71708 -@@ -119,6 +124,9 @@ static struct dentry *proc_sys_lookup(st
71709 +@@ -121,8 +123,14 @@ static struct dentry *proc_sys_lookup(st
71710
71711 err = NULL;
71712 - dentry->d_op = &proc_sys_dentry_operations;
71713 + d_set_d_op(dentry, &proc_sys_dentry_operations);
71714 +
71715 + gr_handle_proc_create(dentry, inode);
71716 +
71717 d_add(dentry, inode);
71718
71719 ++ if (gr_handle_sysctl(p, MAY_EXEC))
71720 ++ err = ERR_PTR(-ENOENT);
71721 ++
71722 out:
71723 -@@ -200,6 +208,9 @@ static int proc_sys_fill_cache(struct fi
71724 + sysctl_head_finish(head);
71725 + return err;
71726 +@@ -202,6 +210,9 @@ static int proc_sys_fill_cache(struct fi
71727 return -ENOMEM;
71728 } else {
71729 - child->d_op = &proc_sys_dentry_operations;
71730 + d_set_d_op(child, &proc_sys_dentry_operations);
71731 +
71732 + gr_handle_proc_create(child, inode);
71733 +
71734 d_add(child, inode);
71735 }
71736 } else {
71737 -@@ -228,6 +239,9 @@ static int scan(struct ctl_table_header
71738 +@@ -230,6 +241,9 @@ static int scan(struct ctl_table_header
71739 if (*pos < file->f_pos)
71740 continue;
71741
71742 @@ -49370,7 +46349,7 @@ diff -urNp linux-2.6.32.48/fs/proc/proc_sysctl.c linux-2.6.32.48/fs/proc/proc_sy
71743 res = proc_sys_fill_cache(file, dirent, filldir, head, table);
71744 if (res)
71745 return res;
71746 -@@ -344,6 +358,9 @@ static int proc_sys_getattr(struct vfsmo
71747 +@@ -355,6 +369,9 @@ static int proc_sys_getattr(struct vfsmo
71748 if (IS_ERR(head))
71749 return PTR_ERR(head);
71750
71751 @@ -49380,7 +46359,7 @@ diff -urNp linux-2.6.32.48/fs/proc/proc_sysctl.c linux-2.6.32.48/fs/proc/proc_sy
71752 generic_fillattr(inode, stat);
71753 if (table)
71754 stat->mode = (stat->mode & S_IFMT) | table->mode;
71755 -@@ -362,13 +379,13 @@ static const struct file_operations proc
71756 +@@ -374,13 +391,13 @@ static const struct file_operations proc
71757 .llseek = generic_file_llseek,
71758 };
71759
71760 @@ -49396,10 +46375,10 @@ diff -urNp linux-2.6.32.48/fs/proc/proc_sysctl.c linux-2.6.32.48/fs/proc/proc_sy
71761 .lookup = proc_sys_lookup,
71762 .permission = proc_sys_permission,
71763 .setattr = proc_sys_setattr,
71764 -diff -urNp linux-2.6.32.48/fs/proc/root.c linux-2.6.32.48/fs/proc/root.c
71765 ---- linux-2.6.32.48/fs/proc/root.c 2009-12-02 22:51:21.000000000 -0500
71766 -+++ linux-2.6.32.48/fs/proc/root.c 2011-11-12 12:46:47.000000000 -0500
71767 -@@ -134,7 +134,15 @@ void __init proc_root_init(void)
71768 +diff -urNp linux-3.0.8/fs/proc/root.c linux-3.0.8/fs/proc/root.c
71769 +--- linux-3.0.8/fs/proc/root.c 2011-07-21 22:17:23.000000000 -0400
71770 ++++ linux-3.0.8/fs/proc/root.c 2011-08-23 21:48:14.000000000 -0400
71771 +@@ -123,7 +123,15 @@ void __init proc_root_init(void)
71772 #ifdef CONFIG_PROC_DEVICETREE
71773 proc_device_tree_init();
71774 #endif
71775 @@ -49415,16 +46394,16 @@ diff -urNp linux-2.6.32.48/fs/proc/root.c linux-2.6.32.48/fs/proc/root.c
71776 proc_sys_init();
71777 }
71778
71779 -diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71780 ---- linux-2.6.32.48/fs/proc/task_mmu.c 2011-11-12 12:44:30.000000000 -0500
71781 -+++ linux-2.6.32.48/fs/proc/task_mmu.c 2011-11-12 12:46:47.000000000 -0500
71782 -@@ -46,15 +46,26 @@ void task_mem(struct seq_file *m, struct
71783 - "VmStk:\t%8lu kB\n"
71784 +diff -urNp linux-3.0.8/fs/proc/task_mmu.c linux-3.0.8/fs/proc/task_mmu.c
71785 +--- linux-3.0.8/fs/proc/task_mmu.c 2011-10-24 08:05:30.000000000 -0400
71786 ++++ linux-3.0.8/fs/proc/task_mmu.c 2011-10-16 21:55:28.000000000 -0400
71787 +@@ -51,8 +51,13 @@ void task_mem(struct seq_file *m, struct
71788 "VmExe:\t%8lu kB\n"
71789 "VmLib:\t%8lu kB\n"
71790 -- "VmPTE:\t%8lu kB\n",
71791 + "VmPTE:\t%8lu kB\n"
71792 +- "VmSwap:\t%8lu kB\n",
71793 - hiwater_vm << (PAGE_SHIFT-10),
71794 -+ "VmPTE:\t%8lu kB\n"
71795 ++ "VmSwap:\t%8lu kB\n"
71796 +
71797 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
71798 + "CsBase:\t%8lx\nCsLim:\t%8lx\n"
71799 @@ -49434,11 +46413,12 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71800 (total_vm - mm->reserved_vm) << (PAGE_SHIFT-10),
71801 mm->locked_vm << (PAGE_SHIFT-10),
71802 hiwater_rss << (PAGE_SHIFT-10),
71803 - total_rss << (PAGE_SHIFT-10),
71804 +@@ -60,7 +65,13 @@ void task_mem(struct seq_file *m, struct
71805 data << (PAGE_SHIFT-10),
71806 mm->stack_vm << (PAGE_SHIFT-10), text, lib,
71807 -- (PTRS_PER_PTE*sizeof(pte_t)*mm->nr_ptes) >> 10);
71808 -+ (PTRS_PER_PTE*sizeof(pte_t)*mm->nr_ptes) >> 10
71809 + (PTRS_PER_PTE*sizeof(pte_t)*mm->nr_ptes) >> 10,
71810 +- swap << (PAGE_SHIFT-10));
71811 ++ swap << (PAGE_SHIFT-10)
71812 +
71813 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
71814 + , mm->context.user_cs_base, mm->context.user_cs_limit
71815 @@ -49448,17 +46428,7 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71816 }
71817
71818 unsigned long task_vsize(struct mm_struct *mm)
71819 -@@ -175,7 +186,8 @@ static void m_stop(struct seq_file *m, v
71820 - struct proc_maps_private *priv = m->private;
71821 - struct vm_area_struct *vma = v;
71822 -
71823 -- vma_stop(priv, vma);
71824 -+ if (!IS_ERR(vma))
71825 -+ vma_stop(priv, vma);
71826 - if (priv->task)
71827 - put_task_struct(priv->task);
71828 - }
71829 -@@ -199,6 +211,12 @@ static int do_maps_open(struct inode *in
71830 +@@ -207,6 +218,12 @@ static int do_maps_open(struct inode *in
71831 return ret;
71832 }
71833
71834 @@ -49471,34 +46441,26 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71835 static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
71836 {
71837 struct mm_struct *mm = vma->vm_mm;
71838 -@@ -206,7 +224,6 @@ static void show_map_vma(struct seq_file
71839 - int flags = vma->vm_flags;
71840 - unsigned long ino = 0;
71841 - unsigned long long pgoff = 0;
71842 -- unsigned long start;
71843 - dev_t dev = 0;
71844 - int len;
71845 -
71846 -@@ -217,20 +234,23 @@ static void show_map_vma(struct seq_file
71847 +@@ -225,13 +242,13 @@ static void show_map_vma(struct seq_file
71848 pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
71849 }
71850
71851 - /* We don't show the stack guard page in /proc/maps */
71852 -- start = vma->vm_start;
71853 -- if (vma->vm_flags & VM_GROWSDOWN)
71854 -- if (!vma_stack_continue(vma->vm_prev, vma->vm_start))
71855 -- start += PAGE_SIZE;
71856 --
71857 - seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
71858 -- start,
71859 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
71860 -+ PAX_RAND_FLAGS(mm) ? 0UL : vma->vm_start,
71861 -+ PAX_RAND_FLAGS(mm) ? 0UL : vma->vm_end,
71862 ++ start = PAX_RAND_FLAGS(mm) ? 0UL : vma->vm_start;
71863 ++ end = PAX_RAND_FLAGS(mm) ? 0UL : vma->vm_end;
71864 +#else
71865 -+ vma->vm_start,
71866 - vma->vm_end,
71867 + start = vma->vm_start;
71868 +- if (stack_guard_page_start(vma, start))
71869 +- start += PAGE_SIZE;
71870 + end = vma->vm_end;
71871 +- if (stack_guard_page_end(vma, end))
71872 +- end -= PAGE_SIZE;
71873 +#endif
71874 - flags & VM_READ ? 'r' : '-',
71875 +
71876 + seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
71877 + start,
71878 +@@ -240,7 +257,11 @@ static void show_map_vma(struct seq_file
71879 flags & VM_WRITE ? 'w' : '-',
71880 flags & VM_EXEC ? 'x' : '-',
71881 flags & VM_MAYSHARE ? 's' : 'p',
71882 @@ -49510,7 +46472,7 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71883 MAJOR(dev), MINOR(dev), ino, &len);
71884
71885 /*
71886 -@@ -239,7 +259,7 @@ static void show_map_vma(struct seq_file
71887 +@@ -249,7 +270,7 @@ static void show_map_vma(struct seq_file
71888 */
71889 if (file) {
71890 pad_len_spaces(m, len);
71891 @@ -49519,7 +46481,7 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71892 } else {
71893 const char *name = arch_vma_name(vma);
71894 if (!name) {
71895 -@@ -247,8 +267,9 @@ static void show_map_vma(struct seq_file
71896 +@@ -257,8 +278,9 @@ static void show_map_vma(struct seq_file
71897 if (vma->vm_start <= mm->brk &&
71898 vma->vm_end >= mm->start_brk) {
71899 name = "[heap]";
71900 @@ -49531,30 +46493,32 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71901 name = "[stack]";
71902 }
71903 } else {
71904 -@@ -391,9 +412,16 @@ static int show_smap(struct seq_file *m,
71905 +@@ -433,11 +455,16 @@ static int show_smap(struct seq_file *m,
71906 };
71907
71908 memset(&mss, 0, sizeof mss);
71909 - mss.vma = vma;
71910 +- /* mmap_sem is held in m_start */
71911 - if (vma->vm_mm && !is_vm_hugetlb_page(vma))
71912 - walk_page_range(vma->vm_start, vma->vm_end, &smaps_walk);
71913 -+
71914 +-
71915 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
71916 + if (!PAX_RAND_FLAGS(vma->vm_mm)) {
71917 +#endif
71918 + mss.vma = vma;
71919 ++ /* mmap_sem is held in m_start */
71920 + if (vma->vm_mm && !is_vm_hugetlb_page(vma))
71921 + walk_page_range(vma->vm_start, vma->vm_end, &smaps_walk);
71922 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
71923 + }
71924 +#endif
71925 -
71926 show_map_vma(m, vma);
71927
71928 -@@ -409,7 +437,11 @@ static int show_smap(struct seq_file *m,
71929 - "Swap: %8lu kB\n"
71930 + seq_printf(m,
71931 +@@ -455,7 +482,11 @@ static int show_smap(struct seq_file *m,
71932 "KernelPageSize: %8lu kB\n"
71933 - "MMUPageSize: %8lu kB\n",
71934 + "MMUPageSize: %8lu kB\n"
71935 + "Locked: %8lu kB\n",
71936 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
71937 + PAX_RAND_FLAGS(vma->vm_mm) ? 0UL : (vma->vm_end - vma->vm_start) >> 10,
71938 +#else
71939 @@ -49563,10 +46527,19 @@ diff -urNp linux-2.6.32.48/fs/proc/task_mmu.c linux-2.6.32.48/fs/proc/task_mmu.c
71940 mss.resident >> 10,
71941 (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
71942 mss.shared_clean >> 10,
71943 -diff -urNp linux-2.6.32.48/fs/proc/task_nommu.c linux-2.6.32.48/fs/proc/task_nommu.c
71944 ---- linux-2.6.32.48/fs/proc/task_nommu.c 2009-12-02 22:51:21.000000000 -0500
71945 -+++ linux-2.6.32.48/fs/proc/task_nommu.c 2011-11-12 12:46:47.000000000 -0500
71946 -@@ -50,7 +50,7 @@ void task_mem(struct seq_file *m, struct
71947 +@@ -1031,7 +1062,7 @@ static int show_numa_map(struct seq_file
71948 +
71949 + if (file) {
71950 + seq_printf(m, " file=");
71951 +- seq_path(m, &file->f_path, "\n\t= ");
71952 ++ seq_path(m, &file->f_path, "\n\t\\= ");
71953 + } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
71954 + seq_printf(m, " heap");
71955 + } else if (vma->vm_start <= mm->start_stack &&
71956 +diff -urNp linux-3.0.8/fs/proc/task_nommu.c linux-3.0.8/fs/proc/task_nommu.c
71957 +--- linux-3.0.8/fs/proc/task_nommu.c 2011-07-21 22:17:23.000000000 -0400
71958 ++++ linux-3.0.8/fs/proc/task_nommu.c 2011-08-23 21:47:56.000000000 -0400
71959 +@@ -51,7 +51,7 @@ void task_mem(struct seq_file *m, struct
71960 else
71961 bytes += kobjsize(mm);
71962
71963 @@ -49575,19 +46548,40 @@ diff -urNp linux-2.6.32.48/fs/proc/task_nommu.c linux-2.6.32.48/fs/proc/task_nom
71964 sbytes += kobjsize(current->fs);
71965 else
71966 bytes += kobjsize(current->fs);
71967 -@@ -154,7 +154,7 @@ static int nommu_vma_show(struct seq_fil
71968 - if (len < 1)
71969 - len = 1;
71970 - seq_printf(m, "%*c", len, ' ');
71971 +@@ -166,7 +166,7 @@ static int nommu_vma_show(struct seq_fil
71972 +
71973 + if (file) {
71974 + pad_len_spaces(m, len);
71975 - seq_path(m, &file->f_path, "");
71976 + seq_path(m, &file->f_path, "\n\\");
71977 + } else if (mm) {
71978 + if (vma->vm_start <= mm->start_stack &&
71979 + vma->vm_end >= mm->start_stack) {
71980 +diff -urNp linux-3.0.8/fs/quota/netlink.c linux-3.0.8/fs/quota/netlink.c
71981 +--- linux-3.0.8/fs/quota/netlink.c 2011-07-21 22:17:23.000000000 -0400
71982 ++++ linux-3.0.8/fs/quota/netlink.c 2011-08-23 21:47:56.000000000 -0400
71983 +@@ -33,7 +33,7 @@ static struct genl_family quota_genl_fam
71984 + void quota_send_warning(short type, unsigned int id, dev_t dev,
71985 + const char warntype)
71986 + {
71987 +- static atomic_t seq;
71988 ++ static atomic_unchecked_t seq;
71989 + struct sk_buff *skb;
71990 + void *msg_head;
71991 + int ret;
71992 +@@ -49,7 +49,7 @@ void quota_send_warning(short type, unsi
71993 + "VFS: Not enough memory to send quota warning.\n");
71994 + return;
71995 }
71996 -
71997 - seq_putc(m, '\n');
71998 -diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
71999 ---- linux-2.6.32.48/fs/readdir.c 2009-12-02 22:51:21.000000000 -0500
72000 -+++ linux-2.6.32.48/fs/readdir.c 2011-11-12 12:46:47.000000000 -0500
72001 -@@ -16,6 +16,7 @@
72002 +- msg_head = genlmsg_put(skb, 0, atomic_add_return(1, &seq),
72003 ++ msg_head = genlmsg_put(skb, 0, atomic_add_return_unchecked(1, &seq),
72004 + &quota_genl_family, 0, QUOTA_NL_C_WARNING);
72005 + if (!msg_head) {
72006 + printk(KERN_ERR
72007 +diff -urNp linux-3.0.8/fs/readdir.c linux-3.0.8/fs/readdir.c
72008 +--- linux-3.0.8/fs/readdir.c 2011-07-21 22:17:23.000000000 -0400
72009 ++++ linux-3.0.8/fs/readdir.c 2011-10-06 04:17:55.000000000 -0400
72010 +@@ -17,6 +17,7 @@
72011 #include <linux/security.h>
72012 #include <linux/syscalls.h>
72013 #include <linux/unistd.h>
72014 @@ -49630,7 +46624,7 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
72015 int count;
72016 int error;
72017 };
72018 -@@ -162,6 +170,10 @@ static int filldir(void * __buf, const c
72019 +@@ -163,6 +171,10 @@ static int filldir(void * __buf, const c
72020 buf->error = -EOVERFLOW;
72021 return -EOVERFLOW;
72022 }
72023 @@ -49641,7 +46635,7 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
72024 dirent = buf->previous;
72025 if (dirent) {
72026 if (__put_user(offset, &dirent->d_off))
72027 -@@ -209,6 +221,7 @@ SYSCALL_DEFINE3(getdents, unsigned int,
72028 +@@ -210,6 +222,7 @@ SYSCALL_DEFINE3(getdents, unsigned int,
72029 buf.previous = NULL;
72030 buf.count = count;
72031 buf.error = 0;
72032 @@ -49649,7 +46643,7 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
72033
72034 error = vfs_readdir(file, filldir, &buf);
72035 if (error >= 0)
72036 -@@ -228,6 +241,7 @@ out:
72037 +@@ -229,6 +242,7 @@ out:
72038 struct getdents_callback64 {
72039 struct linux_dirent64 __user * current_dir;
72040 struct linux_dirent64 __user * previous;
72041 @@ -49657,7 +46651,7 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
72042 int count;
72043 int error;
72044 };
72045 -@@ -242,6 +256,10 @@ static int filldir64(void * __buf, const
72046 +@@ -244,6 +258,10 @@ static int filldir64(void * __buf, const
72047 buf->error = -EINVAL; /* only used if we fail.. */
72048 if (reclen > buf->count)
72049 return -EINVAL;
72050 @@ -49668,7 +46662,7 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
72051 dirent = buf->previous;
72052 if (dirent) {
72053 if (__put_user(offset, &dirent->d_off))
72054 -@@ -289,6 +307,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int
72055 +@@ -291,6 +309,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int
72056
72057 buf.current_dir = dirent;
72058 buf.previous = NULL;
72059 @@ -49676,7 +46670,7 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
72060 buf.count = count;
72061 buf.error = 0;
72062
72063 -@@ -297,7 +316,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int
72064 +@@ -299,7 +318,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int
72065 error = buf.error;
72066 lastdirent = buf.previous;
72067 if (lastdirent) {
72068 @@ -49685,9 +46679,9 @@ diff -urNp linux-2.6.32.48/fs/readdir.c linux-2.6.32.48/fs/readdir.c
72069 if (__put_user(d_off, &lastdirent->d_off))
72070 error = -EFAULT;
72071 else
72072 -diff -urNp linux-2.6.32.48/fs/reiserfs/dir.c linux-2.6.32.48/fs/reiserfs/dir.c
72073 ---- linux-2.6.32.48/fs/reiserfs/dir.c 2011-11-12 12:44:30.000000000 -0500
72074 -+++ linux-2.6.32.48/fs/reiserfs/dir.c 2011-11-12 12:46:47.000000000 -0500
72075 +diff -urNp linux-3.0.8/fs/reiserfs/dir.c linux-3.0.8/fs/reiserfs/dir.c
72076 +--- linux-3.0.8/fs/reiserfs/dir.c 2011-07-21 22:17:23.000000000 -0400
72077 ++++ linux-3.0.8/fs/reiserfs/dir.c 2011-08-23 21:48:14.000000000 -0400
72078 @@ -66,6 +66,8 @@ int reiserfs_readdir_dentry(struct dentr
72079 struct reiserfs_dir_entry de;
72080 int ret = 0;
72081 @@ -49697,10 +46691,10 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/dir.c linux-2.6.32.48/fs/reiserfs/dir.c
72082 reiserfs_write_lock(inode->i_sb);
72083
72084 reiserfs_check_lock_depth(inode->i_sb, "readdir");
72085 -diff -urNp linux-2.6.32.48/fs/reiserfs/do_balan.c linux-2.6.32.48/fs/reiserfs/do_balan.c
72086 ---- linux-2.6.32.48/fs/reiserfs/do_balan.c 2009-12-02 22:51:21.000000000 -0500
72087 -+++ linux-2.6.32.48/fs/reiserfs/do_balan.c 2011-11-12 12:46:47.000000000 -0500
72088 -@@ -2058,7 +2058,7 @@ void do_balance(struct tree_balance *tb,
72089 +diff -urNp linux-3.0.8/fs/reiserfs/do_balan.c linux-3.0.8/fs/reiserfs/do_balan.c
72090 +--- linux-3.0.8/fs/reiserfs/do_balan.c 2011-07-21 22:17:23.000000000 -0400
72091 ++++ linux-3.0.8/fs/reiserfs/do_balan.c 2011-08-23 21:47:56.000000000 -0400
72092 +@@ -2051,7 +2051,7 @@ void do_balance(struct tree_balance *tb,
72093 return;
72094 }
72095
72096 @@ -49709,67 +46703,10 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/do_balan.c linux-2.6.32.48/fs/reiserfs/do
72097 do_balance_starts(tb);
72098
72099 /* balance leaf returns 0 except if combining L R and S into
72100 -diff -urNp linux-2.6.32.48/fs/reiserfs/item_ops.c linux-2.6.32.48/fs/reiserfs/item_ops.c
72101 ---- linux-2.6.32.48/fs/reiserfs/item_ops.c 2009-12-02 22:51:21.000000000 -0500
72102 -+++ linux-2.6.32.48/fs/reiserfs/item_ops.c 2011-11-12 12:46:47.000000000 -0500
72103 -@@ -102,7 +102,7 @@ static void sd_print_vi(struct virtual_i
72104 - vi->vi_index, vi->vi_type, vi->vi_ih);
72105 - }
72106 -
72107 --static struct item_operations stat_data_ops = {
72108 -+static const struct item_operations stat_data_ops = {
72109 - .bytes_number = sd_bytes_number,
72110 - .decrement_key = sd_decrement_key,
72111 - .is_left_mergeable = sd_is_left_mergeable,
72112 -@@ -196,7 +196,7 @@ static void direct_print_vi(struct virtu
72113 - vi->vi_index, vi->vi_type, vi->vi_ih);
72114 - }
72115 -
72116 --static struct item_operations direct_ops = {
72117 -+static const struct item_operations direct_ops = {
72118 - .bytes_number = direct_bytes_number,
72119 - .decrement_key = direct_decrement_key,
72120 - .is_left_mergeable = direct_is_left_mergeable,
72121 -@@ -341,7 +341,7 @@ static void indirect_print_vi(struct vir
72122 - vi->vi_index, vi->vi_type, vi->vi_ih);
72123 - }
72124 -
72125 --static struct item_operations indirect_ops = {
72126 -+static const struct item_operations indirect_ops = {
72127 - .bytes_number = indirect_bytes_number,
72128 - .decrement_key = indirect_decrement_key,
72129 - .is_left_mergeable = indirect_is_left_mergeable,
72130 -@@ -628,7 +628,7 @@ static void direntry_print_vi(struct vir
72131 - printk("\n");
72132 - }
72133 -
72134 --static struct item_operations direntry_ops = {
72135 -+static const struct item_operations direntry_ops = {
72136 - .bytes_number = direntry_bytes_number,
72137 - .decrement_key = direntry_decrement_key,
72138 - .is_left_mergeable = direntry_is_left_mergeable,
72139 -@@ -724,7 +724,7 @@ static void errcatch_print_vi(struct vir
72140 - "Invalid item type observed, run fsck ASAP");
72141 - }
72142 -
72143 --static struct item_operations errcatch_ops = {
72144 -+static const struct item_operations errcatch_ops = {
72145 - errcatch_bytes_number,
72146 - errcatch_decrement_key,
72147 - errcatch_is_left_mergeable,
72148 -@@ -746,7 +746,7 @@ static struct item_operations errcatch_o
72149 - #error Item types must use disk-format assigned values.
72150 - #endif
72151 -
72152 --struct item_operations *item_ops[TYPE_ANY + 1] = {
72153 -+const struct item_operations * const item_ops[TYPE_ANY + 1] = {
72154 - &stat_data_ops,
72155 - &indirect_ops,
72156 - &direct_ops,
72157 -diff -urNp linux-2.6.32.48/fs/reiserfs/journal.c linux-2.6.32.48/fs/reiserfs/journal.c
72158 ---- linux-2.6.32.48/fs/reiserfs/journal.c 2011-11-12 12:44:30.000000000 -0500
72159 -+++ linux-2.6.32.48/fs/reiserfs/journal.c 2011-11-12 12:46:47.000000000 -0500
72160 -@@ -2329,6 +2329,8 @@ static struct buffer_head *reiserfs_brea
72161 +diff -urNp linux-3.0.8/fs/reiserfs/journal.c linux-3.0.8/fs/reiserfs/journal.c
72162 +--- linux-3.0.8/fs/reiserfs/journal.c 2011-07-21 22:17:23.000000000 -0400
72163 ++++ linux-3.0.8/fs/reiserfs/journal.c 2011-08-23 21:48:14.000000000 -0400
72164 +@@ -2299,6 +2299,8 @@ static struct buffer_head *reiserfs_brea
72165 struct buffer_head *bh;
72166 int i, j;
72167
72168 @@ -49778,10 +46715,10 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/journal.c linux-2.6.32.48/fs/reiserfs/jou
72169 bh = __getblk(dev, block, bufsize);
72170 if (buffer_uptodate(bh))
72171 return (bh);
72172 -diff -urNp linux-2.6.32.48/fs/reiserfs/namei.c linux-2.6.32.48/fs/reiserfs/namei.c
72173 ---- linux-2.6.32.48/fs/reiserfs/namei.c 2009-12-02 22:51:21.000000000 -0500
72174 -+++ linux-2.6.32.48/fs/reiserfs/namei.c 2011-11-12 12:46:47.000000000 -0500
72175 -@@ -1214,6 +1214,8 @@ static int reiserfs_rename(struct inode
72176 +diff -urNp linux-3.0.8/fs/reiserfs/namei.c linux-3.0.8/fs/reiserfs/namei.c
72177 +--- linux-3.0.8/fs/reiserfs/namei.c 2011-07-21 22:17:23.000000000 -0400
72178 ++++ linux-3.0.8/fs/reiserfs/namei.c 2011-08-23 21:48:14.000000000 -0400
72179 +@@ -1225,6 +1225,8 @@ static int reiserfs_rename(struct inode
72180 unsigned long savelink = 1;
72181 struct timespec ctime;
72182
72183 @@ -49790,10 +46727,10 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/namei.c linux-2.6.32.48/fs/reiserfs/namei
72184 /* three balancings: (1) old name removal, (2) new name insertion
72185 and (3) maybe "save" link insertion
72186 stat data updates: (1) old directory,
72187 -diff -urNp linux-2.6.32.48/fs/reiserfs/procfs.c linux-2.6.32.48/fs/reiserfs/procfs.c
72188 ---- linux-2.6.32.48/fs/reiserfs/procfs.c 2009-12-02 22:51:21.000000000 -0500
72189 -+++ linux-2.6.32.48/fs/reiserfs/procfs.c 2011-11-12 12:46:47.000000000 -0500
72190 -@@ -123,7 +123,7 @@ static int show_super(struct seq_file *m
72191 +diff -urNp linux-3.0.8/fs/reiserfs/procfs.c linux-3.0.8/fs/reiserfs/procfs.c
72192 +--- linux-3.0.8/fs/reiserfs/procfs.c 2011-07-21 22:17:23.000000000 -0400
72193 ++++ linux-3.0.8/fs/reiserfs/procfs.c 2011-08-23 21:48:14.000000000 -0400
72194 +@@ -113,7 +113,7 @@ static int show_super(struct seq_file *m
72195 "SMALL_TAILS " : "NO_TAILS ",
72196 replay_only(sb) ? "REPLAY_ONLY " : "",
72197 convert_reiserfs(sb) ? "CONV " : "",
72198 @@ -49802,7 +46739,7 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/procfs.c linux-2.6.32.48/fs/reiserfs/proc
72199 SF(s_disk_reads), SF(s_disk_writes), SF(s_fix_nodes),
72200 SF(s_do_balance), SF(s_unneeded_left_neighbor),
72201 SF(s_good_search_by_key_reada), SF(s_bmaps),
72202 -@@ -309,6 +309,8 @@ static int show_journal(struct seq_file
72203 +@@ -299,6 +299,8 @@ static int show_journal(struct seq_file
72204 struct journal_params *jp = &rs->s_v1.s_journal;
72205 char b[BDEVNAME_SIZE];
72206
72207 @@ -49811,10 +46748,10 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/procfs.c linux-2.6.32.48/fs/reiserfs/proc
72208 seq_printf(m, /* on-disk fields */
72209 "jp_journal_1st_block: \t%i\n"
72210 "jp_journal_dev: \t%s[%x]\n"
72211 -diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree.c
72212 ---- linux-2.6.32.48/fs/reiserfs/stree.c 2009-12-02 22:51:21.000000000 -0500
72213 -+++ linux-2.6.32.48/fs/reiserfs/stree.c 2011-11-12 12:46:47.000000000 -0500
72214 -@@ -1159,6 +1159,8 @@ int reiserfs_delete_item(struct reiserfs
72215 +diff -urNp linux-3.0.8/fs/reiserfs/stree.c linux-3.0.8/fs/reiserfs/stree.c
72216 +--- linux-3.0.8/fs/reiserfs/stree.c 2011-07-21 22:17:23.000000000 -0400
72217 ++++ linux-3.0.8/fs/reiserfs/stree.c 2011-08-23 21:48:14.000000000 -0400
72218 +@@ -1196,6 +1196,8 @@ int reiserfs_delete_item(struct reiserfs
72219 int iter = 0;
72220 #endif
72221
72222 @@ -49823,7 +46760,7 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree
72223 BUG_ON(!th->t_trans_id);
72224
72225 init_tb_struct(th, &s_del_balance, sb, path,
72226 -@@ -1296,6 +1298,8 @@ void reiserfs_delete_solid_item(struct r
72227 +@@ -1333,6 +1335,8 @@ void reiserfs_delete_solid_item(struct r
72228 int retval;
72229 int quota_cut_bytes = 0;
72230
72231 @@ -49832,7 +46769,7 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree
72232 BUG_ON(!th->t_trans_id);
72233
72234 le_key2cpu_key(&cpu_key, key);
72235 -@@ -1525,6 +1529,8 @@ int reiserfs_cut_from_item(struct reiser
72236 +@@ -1562,6 +1566,8 @@ int reiserfs_cut_from_item(struct reiser
72237 int quota_cut_bytes;
72238 loff_t tail_pos = 0;
72239
72240 @@ -49841,7 +46778,7 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree
72241 BUG_ON(!th->t_trans_id);
72242
72243 init_tb_struct(th, &s_cut_balance, inode->i_sb, path,
72244 -@@ -1920,6 +1926,8 @@ int reiserfs_paste_into_item(struct reis
72245 +@@ -1957,6 +1963,8 @@ int reiserfs_paste_into_item(struct reis
72246 int retval;
72247 int fs_gen;
72248
72249 @@ -49850,7 +46787,7 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree
72250 BUG_ON(!th->t_trans_id);
72251
72252 fs_gen = get_generation(inode->i_sb);
72253 -@@ -2007,6 +2015,8 @@ int reiserfs_insert_item(struct reiserfs
72254 +@@ -2045,6 +2053,8 @@ int reiserfs_insert_item(struct reiserfs
72255 int fs_gen = 0;
72256 int quota_bytes = 0;
72257
72258 @@ -49859,10 +46796,10 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/stree.c linux-2.6.32.48/fs/reiserfs/stree
72259 BUG_ON(!th->t_trans_id);
72260
72261 if (inode) { /* Do we count quotas for item? */
72262 -diff -urNp linux-2.6.32.48/fs/reiserfs/super.c linux-2.6.32.48/fs/reiserfs/super.c
72263 ---- linux-2.6.32.48/fs/reiserfs/super.c 2009-12-02 22:51:21.000000000 -0500
72264 -+++ linux-2.6.32.48/fs/reiserfs/super.c 2011-11-12 12:46:47.000000000 -0500
72265 -@@ -912,6 +912,8 @@ static int reiserfs_parse_options(struct
72266 +diff -urNp linux-3.0.8/fs/reiserfs/super.c linux-3.0.8/fs/reiserfs/super.c
72267 +--- linux-3.0.8/fs/reiserfs/super.c 2011-07-21 22:17:23.000000000 -0400
72268 ++++ linux-3.0.8/fs/reiserfs/super.c 2011-08-23 21:48:14.000000000 -0400
72269 +@@ -927,6 +927,8 @@ static int reiserfs_parse_options(struct
72270 {.option_name = NULL}
72271 };
72272
72273 @@ -49871,9 +46808,9 @@ diff -urNp linux-2.6.32.48/fs/reiserfs/super.c linux-2.6.32.48/fs/reiserfs/super
72274 *blocks = 0;
72275 if (!options || !*options)
72276 /* use default configuration: create tails, journaling on, no
72277 -diff -urNp linux-2.6.32.48/fs/select.c linux-2.6.32.48/fs/select.c
72278 ---- linux-2.6.32.48/fs/select.c 2009-12-02 22:51:21.000000000 -0500
72279 -+++ linux-2.6.32.48/fs/select.c 2011-11-12 12:46:47.000000000 -0500
72280 +diff -urNp linux-3.0.8/fs/select.c linux-3.0.8/fs/select.c
72281 +--- linux-3.0.8/fs/select.c 2011-07-21 22:17:23.000000000 -0400
72282 ++++ linux-3.0.8/fs/select.c 2011-08-23 21:48:14.000000000 -0400
72283 @@ -20,6 +20,7 @@
72284 #include <linux/module.h>
72285 #include <linux/slab.h>
72286 @@ -49882,7 +46819,7 @@ diff -urNp linux-2.6.32.48/fs/select.c linux-2.6.32.48/fs/select.c
72287 #include <linux/personality.h> /* for STICKY_TIMEOUTS */
72288 #include <linux/file.h>
72289 #include <linux/fdtable.h>
72290 -@@ -401,6 +402,8 @@ int do_select(int n, fd_set_bits *fds, s
72291 +@@ -403,6 +404,8 @@ int do_select(int n, fd_set_bits *fds, s
72292 int retval, i, timed_out = 0;
72293 unsigned long slack = 0;
72294
72295 @@ -49891,7 +46828,7 @@ diff -urNp linux-2.6.32.48/fs/select.c linux-2.6.32.48/fs/select.c
72296 rcu_read_lock();
72297 retval = max_select_fd(n, fds);
72298 rcu_read_unlock();
72299 -@@ -529,6 +532,8 @@ int core_sys_select(int n, fd_set __user
72300 +@@ -528,6 +531,8 @@ int core_sys_select(int n, fd_set __user
72301 /* Allocate small arguments on the stack to save memory and be faster */
72302 long stack_fds[SELECT_STACK_ALLOC/sizeof(long)];
72303
72304 @@ -49900,19 +46837,19 @@ diff -urNp linux-2.6.32.48/fs/select.c linux-2.6.32.48/fs/select.c
72305 ret = -EINVAL;
72306 if (n < 0)
72307 goto out_nofds;
72308 -@@ -821,6 +826,9 @@ int do_sys_poll(struct pollfd __user *uf
72309 +@@ -837,6 +842,9 @@ int do_sys_poll(struct pollfd __user *uf
72310 struct poll_list *walk = head;
72311 unsigned long todo = nfds;
72312
72313 + pax_track_stack();
72314 +
72315 + gr_learn_resource(current, RLIMIT_NOFILE, nfds, 1);
72316 - if (nfds > current->signal->rlim[RLIMIT_NOFILE].rlim_cur)
72317 + if (nfds > rlimit(RLIMIT_NOFILE))
72318 return -EINVAL;
72319
72320 -diff -urNp linux-2.6.32.48/fs/seq_file.c linux-2.6.32.48/fs/seq_file.c
72321 ---- linux-2.6.32.48/fs/seq_file.c 2009-12-02 22:51:21.000000000 -0500
72322 -+++ linux-2.6.32.48/fs/seq_file.c 2011-11-12 12:46:47.000000000 -0500
72323 +diff -urNp linux-3.0.8/fs/seq_file.c linux-3.0.8/fs/seq_file.c
72324 +--- linux-3.0.8/fs/seq_file.c 2011-07-21 22:17:23.000000000 -0400
72325 ++++ linux-3.0.8/fs/seq_file.c 2011-08-23 21:47:56.000000000 -0400
72326 @@ -76,7 +76,8 @@ static int traverse(struct seq_file *m,
72327 return 0;
72328 }
72329 @@ -49953,7 +46890,7 @@ diff -urNp linux-2.6.32.48/fs/seq_file.c linux-2.6.32.48/fs/seq_file.c
72330 if (!m->buf)
72331 goto Enomem;
72332 m->count = 0;
72333 -@@ -551,7 +555,7 @@ static void single_stop(struct seq_file
72334 +@@ -549,7 +553,7 @@ static void single_stop(struct seq_file
72335 int single_open(struct file *file, int (*show)(struct seq_file *, void *),
72336 void *data)
72337 {
72338 @@ -49962,58 +46899,10 @@ diff -urNp linux-2.6.32.48/fs/seq_file.c linux-2.6.32.48/fs/seq_file.c
72339 int res = -ENOMEM;
72340
72341 if (op) {
72342 -diff -urNp linux-2.6.32.48/fs/smbfs/proc.c linux-2.6.32.48/fs/smbfs/proc.c
72343 ---- linux-2.6.32.48/fs/smbfs/proc.c 2009-12-02 22:51:21.000000000 -0500
72344 -+++ linux-2.6.32.48/fs/smbfs/proc.c 2011-11-12 12:46:47.000000000 -0500
72345 -@@ -266,9 +266,9 @@ int smb_setcodepage(struct smb_sb_info *
72346 -
72347 - out:
72348 - if (server->local_nls != NULL && server->remote_nls != NULL)
72349 -- server->ops->convert = convert_cp;
72350 -+ *(void **)&server->ops->convert = convert_cp;
72351 - else
72352 -- server->ops->convert = convert_memcpy;
72353 -+ *(void **)&server->ops->convert = convert_memcpy;
72354 -
72355 - smb_unlock_server(server);
72356 - return n;
72357 -@@ -933,9 +933,9 @@ smb_newconn(struct smb_sb_info *server,
72358 -
72359 - /* FIXME: the win9x code wants to modify these ... (seek/trunc bug) */
72360 - if (server->mnt->flags & SMB_MOUNT_OLDATTR) {
72361 -- server->ops->getattr = smb_proc_getattr_core;
72362 -+ *(void **)&server->ops->getattr = smb_proc_getattr_core;
72363 - } else if (server->mnt->flags & SMB_MOUNT_DIRATTR) {
72364 -- server->ops->getattr = smb_proc_getattr_ff;
72365 -+ *(void **)&server->ops->getattr = smb_proc_getattr_ff;
72366 - }
72367 -
72368 - /* Decode server capabilities */
72369 -@@ -3439,7 +3439,7 @@ out:
72370 - static void
72371 - install_ops(struct smb_ops *dst, struct smb_ops *src)
72372 - {
72373 -- memcpy(dst, src, sizeof(void *) * SMB_OPS_NUM_STATIC);
72374 -+ memcpy((void *)dst, src, sizeof(void *) * SMB_OPS_NUM_STATIC);
72375 - }
72376 -
72377 - /* < LANMAN2 */
72378 -diff -urNp linux-2.6.32.48/fs/smbfs/symlink.c linux-2.6.32.48/fs/smbfs/symlink.c
72379 ---- linux-2.6.32.48/fs/smbfs/symlink.c 2009-12-02 22:51:21.000000000 -0500
72380 -+++ linux-2.6.32.48/fs/smbfs/symlink.c 2011-11-12 12:46:47.000000000 -0500
72381 -@@ -55,7 +55,7 @@ static void *smb_follow_link(struct dent
72382 -
72383 - static void smb_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
72384 - {
72385 -- char *s = nd_get_link(nd);
72386 -+ const char *s = nd_get_link(nd);
72387 - if (!IS_ERR(s))
72388 - __putname(s);
72389 - }
72390 -diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72391 ---- linux-2.6.32.48/fs/splice.c 2011-11-12 12:44:30.000000000 -0500
72392 -+++ linux-2.6.32.48/fs/splice.c 2011-11-12 12:46:47.000000000 -0500
72393 -@@ -185,7 +185,7 @@ ssize_t splice_to_pipe(struct pipe_inode
72394 +diff -urNp linux-3.0.8/fs/splice.c linux-3.0.8/fs/splice.c
72395 +--- linux-3.0.8/fs/splice.c 2011-07-21 22:17:23.000000000 -0400
72396 ++++ linux-3.0.8/fs/splice.c 2011-10-06 04:17:55.000000000 -0400
72397 +@@ -194,7 +194,7 @@ ssize_t splice_to_pipe(struct pipe_inode
72398 pipe_lock(pipe);
72399
72400 for (;;) {
72401 @@ -50022,7 +46911,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72402 send_sig(SIGPIPE, current, 0);
72403 if (!ret)
72404 ret = -EPIPE;
72405 -@@ -239,9 +239,9 @@ ssize_t splice_to_pipe(struct pipe_inode
72406 +@@ -248,9 +248,9 @@ ssize_t splice_to_pipe(struct pipe_inode
72407 do_wakeup = 0;
72408 }
72409
72410 @@ -50034,16 +46923,16 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72411 }
72412
72413 pipe_unlock(pipe);
72414 -@@ -285,6 +285,8 @@ __generic_file_splice_read(struct file *
72415 +@@ -320,6 +320,8 @@ __generic_file_splice_read(struct file *
72416 .spd_release = spd_release_page,
72417 };
72418
72419 + pax_track_stack();
72420 +
72421 - index = *ppos >> PAGE_CACHE_SHIFT;
72422 - loff = *ppos & ~PAGE_CACHE_MASK;
72423 - req_pages = (len + loff + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
72424 -@@ -521,7 +523,7 @@ static ssize_t kernel_readv(struct file
72425 + if (splice_grow_spd(pipe, &spd))
72426 + return -ENOMEM;
72427 +
72428 +@@ -560,7 +562,7 @@ static ssize_t kernel_readv(struct file
72429 old_fs = get_fs();
72430 set_fs(get_ds());
72431 /* The cast to a user pointer is valid due to the set_fs() */
72432 @@ -50052,7 +46941,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72433 set_fs(old_fs);
72434
72435 return res;
72436 -@@ -536,7 +538,7 @@ static ssize_t kernel_write(struct file
72437 +@@ -575,7 +577,7 @@ static ssize_t kernel_write(struct file
72438 old_fs = get_fs();
72439 set_fs(get_ds());
72440 /* The cast to a user pointer is valid due to the set_fs() */
72441 @@ -50061,25 +46950,25 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72442 set_fs(old_fs);
72443
72444 return res;
72445 -@@ -565,6 +567,8 @@ ssize_t default_file_splice_read(struct
72446 +@@ -603,6 +605,8 @@ ssize_t default_file_splice_read(struct
72447 .spd_release = spd_release_page,
72448 };
72449
72450 + pax_track_stack();
72451 +
72452 - index = *ppos >> PAGE_CACHE_SHIFT;
72453 - offset = *ppos & ~PAGE_CACHE_MASK;
72454 - nr_pages = (len + offset + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
72455 -@@ -578,7 +582,7 @@ ssize_t default_file_splice_read(struct
72456 + if (splice_grow_spd(pipe, &spd))
72457 + return -ENOMEM;
72458 +
72459 +@@ -626,7 +630,7 @@ ssize_t default_file_splice_read(struct
72460 goto err;
72461
72462 this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset);
72463 - vec[i].iov_base = (void __user *) page_address(page);
72464 -+ vec[i].iov_base = (__force void __user *) page_address(page);
72465 ++ vec[i].iov_base = (void __force_user *) page_address(page);
72466 vec[i].iov_len = this_len;
72467 - pages[i] = page;
72468 + spd.pages[i] = page;
72469 spd.nr_pages++;
72470 -@@ -800,10 +804,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed);
72471 +@@ -846,10 +850,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed);
72472 int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
72473 {
72474 while (!pipe->nrbufs) {
72475 @@ -50092,7 +46981,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72476 return 0;
72477
72478 if (sd->flags & SPLICE_F_NONBLOCK)
72479 -@@ -1140,7 +1144,7 @@ ssize_t splice_direct_to_actor(struct fi
72480 +@@ -1182,7 +1186,7 @@ ssize_t splice_direct_to_actor(struct fi
72481 * out of the pipe right after the splice_to_pipe(). So set
72482 * PIPE_READERS appropriately.
72483 */
72484 @@ -50101,16 +46990,16 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72485
72486 current->splice_pipe = pipe;
72487 }
72488 -@@ -1593,6 +1597,8 @@ static long vmsplice_to_pipe(struct file
72489 - .spd_release = spd_release_page,
72490 +@@ -1619,6 +1623,8 @@ static long vmsplice_to_pipe(struct file
72491 };
72492 + long ret;
72493
72494 + pax_track_stack();
72495 +
72496 - pipe = pipe_info(file->f_path.dentry->d_inode);
72497 + pipe = get_pipe_info(file);
72498 if (!pipe)
72499 return -EBADF;
72500 -@@ -1701,9 +1707,9 @@ static int ipipe_prep(struct pipe_inode_
72501 +@@ -1734,9 +1740,9 @@ static int ipipe_prep(struct pipe_inode_
72502 ret = -ERESTARTSYS;
72503 break;
72504 }
72505 @@ -50122,16 +47011,16 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72506 if (flags & SPLICE_F_NONBLOCK) {
72507 ret = -EAGAIN;
72508 break;
72509 -@@ -1735,7 +1741,7 @@ static int opipe_prep(struct pipe_inode_
72510 +@@ -1768,7 +1774,7 @@ static int opipe_prep(struct pipe_inode_
72511 pipe_lock(pipe);
72512
72513 - while (pipe->nrbufs >= PIPE_BUFFERS) {
72514 + while (pipe->nrbufs >= pipe->buffers) {
72515 - if (!pipe->readers) {
72516 + if (!atomic_read(&pipe->readers)) {
72517 send_sig(SIGPIPE, current, 0);
72518 ret = -EPIPE;
72519 break;
72520 -@@ -1748,9 +1754,9 @@ static int opipe_prep(struct pipe_inode_
72521 +@@ -1781,9 +1787,9 @@ static int opipe_prep(struct pipe_inode_
72522 ret = -ERESTARTSYS;
72523 break;
72524 }
72525 @@ -50143,7 +47032,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72526 }
72527
72528 pipe_unlock(pipe);
72529 -@@ -1786,14 +1792,14 @@ retry:
72530 +@@ -1819,14 +1825,14 @@ retry:
72531 pipe_double_lock(ipipe, opipe);
72532
72533 do {
72534 @@ -50160,7 +47049,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72535 break;
72536
72537 /*
72538 -@@ -1893,7 +1899,7 @@ static int link_pipe(struct pipe_inode_i
72539 +@@ -1923,7 +1929,7 @@ static int link_pipe(struct pipe_inode_i
72540 pipe_double_lock(ipipe, opipe);
72541
72542 do {
72543 @@ -50169,7 +47058,7 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72544 send_sig(SIGPIPE, current, 0);
72545 if (!ret)
72546 ret = -EPIPE;
72547 -@@ -1938,7 +1944,7 @@ static int link_pipe(struct pipe_inode_i
72548 +@@ -1968,7 +1974,7 @@ static int link_pipe(struct pipe_inode_i
72549 * return EAGAIN if we have the potential of some data in the
72550 * future, otherwise just return 0
72551 */
72552 @@ -50178,10 +47067,10 @@ diff -urNp linux-2.6.32.48/fs/splice.c linux-2.6.32.48/fs/splice.c
72553 ret = -EAGAIN;
72554
72555 pipe_unlock(ipipe);
72556 -diff -urNp linux-2.6.32.48/fs/sysfs/file.c linux-2.6.32.48/fs/sysfs/file.c
72557 ---- linux-2.6.32.48/fs/sysfs/file.c 2011-11-12 12:44:30.000000000 -0500
72558 -+++ linux-2.6.32.48/fs/sysfs/file.c 2011-11-12 12:46:47.000000000 -0500
72559 -@@ -44,7 +44,7 @@ static DEFINE_SPINLOCK(sysfs_open_dirent
72560 +diff -urNp linux-3.0.8/fs/sysfs/file.c linux-3.0.8/fs/sysfs/file.c
72561 +--- linux-3.0.8/fs/sysfs/file.c 2011-07-21 22:17:23.000000000 -0400
72562 ++++ linux-3.0.8/fs/sysfs/file.c 2011-08-23 21:47:56.000000000 -0400
72563 +@@ -37,7 +37,7 @@ static DEFINE_SPINLOCK(sysfs_open_dirent
72564
72565 struct sysfs_open_dirent {
72566 atomic_t refcnt;
72567 @@ -50190,43 +47079,16 @@ diff -urNp linux-2.6.32.48/fs/sysfs/file.c linux-2.6.32.48/fs/sysfs/file.c
72568 wait_queue_head_t poll;
72569 struct list_head buffers; /* goes through sysfs_buffer.list */
72570 };
72571 -@@ -53,7 +53,7 @@ struct sysfs_buffer {
72572 - size_t count;
72573 - loff_t pos;
72574 - char * page;
72575 -- struct sysfs_ops * ops;
72576 -+ const struct sysfs_ops * ops;
72577 - struct mutex mutex;
72578 - int needs_read_fill;
72579 - int event;
72580 -@@ -75,7 +75,7 @@ static int fill_read_buffer(struct dentr
72581 - {
72582 - struct sysfs_dirent *attr_sd = dentry->d_fsdata;
72583 - struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
72584 -- struct sysfs_ops * ops = buffer->ops;
72585 -+ const struct sysfs_ops * ops = buffer->ops;
72586 - int ret = 0;
72587 - ssize_t count;
72588 -
72589 -@@ -88,7 +88,7 @@ static int fill_read_buffer(struct dentr
72590 - if (!sysfs_get_active_two(attr_sd))
72591 +@@ -81,7 +81,7 @@ static int fill_read_buffer(struct dentr
72592 + if (!sysfs_get_active(attr_sd))
72593 return -ENODEV;
72594
72595 - buffer->event = atomic_read(&attr_sd->s_attr.open->event);
72596 + buffer->event = atomic_read_unchecked(&attr_sd->s_attr.open->event);
72597 count = ops->show(kobj, attr_sd->s_attr.attr, buffer->page);
72598
72599 - sysfs_put_active_two(attr_sd);
72600 -@@ -199,7 +199,7 @@ flush_write_buffer(struct dentry * dentr
72601 - {
72602 - struct sysfs_dirent *attr_sd = dentry->d_fsdata;
72603 - struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
72604 -- struct sysfs_ops * ops = buffer->ops;
72605 -+ const struct sysfs_ops * ops = buffer->ops;
72606 - int rc;
72607 -
72608 - /* need attr_sd for attr and ops, its parent for kobj */
72609 -@@ -294,7 +294,7 @@ static int sysfs_get_open_dirent(struct
72610 + sysfs_put_active(attr_sd);
72611 +@@ -287,7 +287,7 @@ static int sysfs_get_open_dirent(struct
72612 return -ENOMEM;
72613
72614 atomic_set(&new_od->refcnt, 0);
72615 @@ -50235,25 +47097,16 @@ diff -urNp linux-2.6.32.48/fs/sysfs/file.c linux-2.6.32.48/fs/sysfs/file.c
72616 init_waitqueue_head(&new_od->poll);
72617 INIT_LIST_HEAD(&new_od->buffers);
72618 goto retry;
72619 -@@ -335,7 +335,7 @@ static int sysfs_open_file(struct inode
72620 - struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
72621 - struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
72622 - struct sysfs_buffer *buffer;
72623 -- struct sysfs_ops *ops;
72624 -+ const struct sysfs_ops *ops;
72625 - int error = -EACCES;
72626 - char *p;
72627 -
72628 -@@ -444,7 +444,7 @@ static unsigned int sysfs_poll(struct fi
72629 +@@ -432,7 +432,7 @@ static unsigned int sysfs_poll(struct fi
72630
72631 - sysfs_put_active_two(attr_sd);
72632 + sysfs_put_active(attr_sd);
72633
72634 - if (buffer->event != atomic_read(&od->event))
72635 + if (buffer->event != atomic_read_unchecked(&od->event))
72636 goto trigger;
72637
72638 return DEFAULT_POLLMASK;
72639 -@@ -463,7 +463,7 @@ void sysfs_notify_dirent(struct sysfs_di
72640 +@@ -451,7 +451,7 @@ void sysfs_notify_dirent(struct sysfs_di
72641
72642 od = sd->s_attr.open;
72643 if (od) {
72644 @@ -50262,13 +47115,13 @@ diff -urNp linux-2.6.32.48/fs/sysfs/file.c linux-2.6.32.48/fs/sysfs/file.c
72645 wake_up_interruptible(&od->poll);
72646 }
72647
72648 -diff -urNp linux-2.6.32.48/fs/sysfs/mount.c linux-2.6.32.48/fs/sysfs/mount.c
72649 ---- linux-2.6.32.48/fs/sysfs/mount.c 2009-12-02 22:51:21.000000000 -0500
72650 -+++ linux-2.6.32.48/fs/sysfs/mount.c 2011-11-12 12:46:47.000000000 -0500
72651 +diff -urNp linux-3.0.8/fs/sysfs/mount.c linux-3.0.8/fs/sysfs/mount.c
72652 +--- linux-3.0.8/fs/sysfs/mount.c 2011-07-21 22:17:23.000000000 -0400
72653 ++++ linux-3.0.8/fs/sysfs/mount.c 2011-08-23 21:48:14.000000000 -0400
72654 @@ -36,7 +36,11 @@ struct sysfs_dirent sysfs_root = {
72655 .s_name = "",
72656 .s_count = ATOMIC_INIT(1),
72657 - .s_flags = SYSFS_DIR,
72658 + .s_flags = SYSFS_DIR | (KOBJ_NS_TYPE_NONE << SYSFS_NS_TYPE_SHIFT),
72659 +#ifdef CONFIG_GRKERNSEC_SYSFS_RESTRICT
72660 + .s_mode = S_IFDIR | S_IRWXU,
72661 +#else
72662 @@ -50277,10 +47130,10 @@ diff -urNp linux-2.6.32.48/fs/sysfs/mount.c linux-2.6.32.48/fs/sysfs/mount.c
72663 .s_ino = 1,
72664 };
72665
72666 -diff -urNp linux-2.6.32.48/fs/sysfs/symlink.c linux-2.6.32.48/fs/sysfs/symlink.c
72667 ---- linux-2.6.32.48/fs/sysfs/symlink.c 2009-12-02 22:51:21.000000000 -0500
72668 -+++ linux-2.6.32.48/fs/sysfs/symlink.c 2011-11-12 12:46:47.000000000 -0500
72669 -@@ -204,7 +204,7 @@ static void *sysfs_follow_link(struct de
72670 +diff -urNp linux-3.0.8/fs/sysfs/symlink.c linux-3.0.8/fs/sysfs/symlink.c
72671 +--- linux-3.0.8/fs/sysfs/symlink.c 2011-07-21 22:17:23.000000000 -0400
72672 ++++ linux-3.0.8/fs/sysfs/symlink.c 2011-08-23 21:47:56.000000000 -0400
72673 +@@ -286,7 +286,7 @@ static void *sysfs_follow_link(struct de
72674
72675 static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
72676 {
72677 @@ -50289,35 +47142,10 @@ diff -urNp linux-2.6.32.48/fs/sysfs/symlink.c linux-2.6.32.48/fs/sysfs/symlink.c
72678 if (!IS_ERR(page))
72679 free_page((unsigned long)page);
72680 }
72681 -diff -urNp linux-2.6.32.48/fs/udf/balloc.c linux-2.6.32.48/fs/udf/balloc.c
72682 ---- linux-2.6.32.48/fs/udf/balloc.c 2009-12-02 22:51:21.000000000 -0500
72683 -+++ linux-2.6.32.48/fs/udf/balloc.c 2011-11-12 12:46:47.000000000 -0500
72684 -@@ -172,9 +172,7 @@ static void udf_bitmap_free_blocks(struc
72685 -
72686 - mutex_lock(&sbi->s_alloc_mutex);
72687 - partmap = &sbi->s_partmaps[bloc->partitionReferenceNum];
72688 -- if (bloc->logicalBlockNum < 0 ||
72689 -- (bloc->logicalBlockNum + count) >
72690 -- partmap->s_partition_len) {
72691 -+ if ((bloc->logicalBlockNum + count) > partmap->s_partition_len) {
72692 - udf_debug("%d < %d || %d + %d > %d\n",
72693 - bloc->logicalBlockNum, 0, bloc->logicalBlockNum,
72694 - count, partmap->s_partition_len);
72695 -@@ -436,9 +434,7 @@ static void udf_table_free_blocks(struct
72696 -
72697 - mutex_lock(&sbi->s_alloc_mutex);
72698 - partmap = &sbi->s_partmaps[bloc->partitionReferenceNum];
72699 -- if (bloc->logicalBlockNum < 0 ||
72700 -- (bloc->logicalBlockNum + count) >
72701 -- partmap->s_partition_len) {
72702 -+ if ((bloc->logicalBlockNum + count) > partmap->s_partition_len) {
72703 - udf_debug("%d < %d || %d + %d > %d\n",
72704 - bloc.logicalBlockNum, 0, bloc.logicalBlockNum, count,
72705 - partmap->s_partition_len);
72706 -diff -urNp linux-2.6.32.48/fs/udf/inode.c linux-2.6.32.48/fs/udf/inode.c
72707 ---- linux-2.6.32.48/fs/udf/inode.c 2009-12-02 22:51:21.000000000 -0500
72708 -+++ linux-2.6.32.48/fs/udf/inode.c 2011-11-12 12:46:47.000000000 -0500
72709 -@@ -484,6 +484,8 @@ static struct buffer_head *inode_getblk(
72710 +diff -urNp linux-3.0.8/fs/udf/inode.c linux-3.0.8/fs/udf/inode.c
72711 +--- linux-3.0.8/fs/udf/inode.c 2011-07-21 22:17:23.000000000 -0400
72712 ++++ linux-3.0.8/fs/udf/inode.c 2011-08-23 21:48:14.000000000 -0400
72713 +@@ -560,6 +560,8 @@ static struct buffer_head *inode_getblk(
72714 int goal = 0, pgoal = iinfo->i_location.logicalBlockNum;
72715 int lastblock = 0;
72716
72717 @@ -50326,9 +47154,9 @@ diff -urNp linux-2.6.32.48/fs/udf/inode.c linux-2.6.32.48/fs/udf/inode.c
72718 prev_epos.offset = udf_file_entry_alloc_offset(inode);
72719 prev_epos.block = iinfo->i_location;
72720 prev_epos.bh = NULL;
72721 -diff -urNp linux-2.6.32.48/fs/udf/misc.c linux-2.6.32.48/fs/udf/misc.c
72722 ---- linux-2.6.32.48/fs/udf/misc.c 2009-12-02 22:51:21.000000000 -0500
72723 -+++ linux-2.6.32.48/fs/udf/misc.c 2011-11-12 12:46:47.000000000 -0500
72724 +diff -urNp linux-3.0.8/fs/udf/misc.c linux-3.0.8/fs/udf/misc.c
72725 +--- linux-3.0.8/fs/udf/misc.c 2011-07-21 22:17:23.000000000 -0400
72726 ++++ linux-3.0.8/fs/udf/misc.c 2011-08-23 21:47:56.000000000 -0400
72727 @@ -286,7 +286,7 @@ void udf_new_tag(char *data, uint16_t id
72728
72729 u8 udf_tag_checksum(const struct tag *t)
72730 @@ -50338,9 +47166,9 @@ diff -urNp linux-2.6.32.48/fs/udf/misc.c linux-2.6.32.48/fs/udf/misc.c
72731 u8 checksum = 0;
72732 int i;
72733 for (i = 0; i < sizeof(struct tag); ++i)
72734 -diff -urNp linux-2.6.32.48/fs/utimes.c linux-2.6.32.48/fs/utimes.c
72735 ---- linux-2.6.32.48/fs/utimes.c 2009-12-02 22:51:21.000000000 -0500
72736 -+++ linux-2.6.32.48/fs/utimes.c 2011-11-12 12:46:47.000000000 -0500
72737 +diff -urNp linux-3.0.8/fs/utimes.c linux-3.0.8/fs/utimes.c
72738 +--- linux-3.0.8/fs/utimes.c 2011-07-21 22:17:23.000000000 -0400
72739 ++++ linux-3.0.8/fs/utimes.c 2011-08-23 21:48:14.000000000 -0400
72740 @@ -1,6 +1,7 @@
72741 #include <linux/compiler.h>
72742 #include <linux/file.h>
72743 @@ -50362,9 +47190,9 @@ diff -urNp linux-2.6.32.48/fs/utimes.c linux-2.6.32.48/fs/utimes.c
72744 mutex_lock(&inode->i_mutex);
72745 error = notify_change(path->dentry, &newattrs);
72746 mutex_unlock(&inode->i_mutex);
72747 -diff -urNp linux-2.6.32.48/fs/xattr_acl.c linux-2.6.32.48/fs/xattr_acl.c
72748 ---- linux-2.6.32.48/fs/xattr_acl.c 2009-12-02 22:51:21.000000000 -0500
72749 -+++ linux-2.6.32.48/fs/xattr_acl.c 2011-11-12 12:46:47.000000000 -0500
72750 +diff -urNp linux-3.0.8/fs/xattr_acl.c linux-3.0.8/fs/xattr_acl.c
72751 +--- linux-3.0.8/fs/xattr_acl.c 2011-07-21 22:17:23.000000000 -0400
72752 ++++ linux-3.0.8/fs/xattr_acl.c 2011-08-23 21:47:56.000000000 -0400
72753 @@ -17,8 +17,8 @@
72754 struct posix_acl *
72755 posix_acl_from_xattr(const void *value, size_t size)
72756 @@ -50376,10 +47204,10 @@ diff -urNp linux-2.6.32.48/fs/xattr_acl.c linux-2.6.32.48/fs/xattr_acl.c
72757 int count;
72758 struct posix_acl *acl;
72759 struct posix_acl_entry *acl_e;
72760 -diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
72761 ---- linux-2.6.32.48/fs/xattr.c 2009-12-02 22:51:21.000000000 -0500
72762 -+++ linux-2.6.32.48/fs/xattr.c 2011-11-12 12:46:47.000000000 -0500
72763 -@@ -247,7 +247,7 @@ EXPORT_SYMBOL_GPL(vfs_removexattr);
72764 +diff -urNp linux-3.0.8/fs/xattr.c linux-3.0.8/fs/xattr.c
72765 +--- linux-3.0.8/fs/xattr.c 2011-07-21 22:17:23.000000000 -0400
72766 ++++ linux-3.0.8/fs/xattr.c 2011-08-23 21:48:14.000000000 -0400
72767 +@@ -254,7 +254,7 @@ EXPORT_SYMBOL_GPL(vfs_removexattr);
72768 * Extended attribute SET operations
72769 */
72770 static long
72771 @@ -50388,7 +47216,7 @@ diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
72772 size_t size, int flags)
72773 {
72774 int error;
72775 -@@ -271,7 +271,13 @@ setxattr(struct dentry *d, const char __
72776 +@@ -278,7 +278,13 @@ setxattr(struct dentry *d, const char __
72777 return PTR_ERR(kvalue);
72778 }
72779
72780 @@ -50403,7 +47231,7 @@ diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
72781 kfree(kvalue);
72782 return error;
72783 }
72784 -@@ -288,7 +294,7 @@ SYSCALL_DEFINE5(setxattr, const char __u
72785 +@@ -295,7 +301,7 @@ SYSCALL_DEFINE5(setxattr, const char __u
72786 return error;
72787 error = mnt_want_write(path.mnt);
72788 if (!error) {
72789 @@ -50412,7 +47240,7 @@ diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
72790 mnt_drop_write(path.mnt);
72791 }
72792 path_put(&path);
72793 -@@ -307,7 +313,7 @@ SYSCALL_DEFINE5(lsetxattr, const char __
72794 +@@ -314,7 +320,7 @@ SYSCALL_DEFINE5(lsetxattr, const char __
72795 return error;
72796 error = mnt_want_write(path.mnt);
72797 if (!error) {
72798 @@ -50421,7 +47249,7 @@ diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
72799 mnt_drop_write(path.mnt);
72800 }
72801 path_put(&path);
72802 -@@ -318,17 +324,15 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, cons
72803 +@@ -325,17 +331,15 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, cons
72804 const void __user *,value, size_t, size, int, flags)
72805 {
72806 struct file *f;
72807 @@ -50441,10 +47269,10 @@ diff -urNp linux-2.6.32.48/fs/xattr.c linux-2.6.32.48/fs/xattr.c
72808 mnt_drop_write(f->f_path.mnt);
72809 }
72810 fput(f);
72811 -diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c
72812 ---- linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-11-12 12:44:30.000000000 -0500
72813 -+++ linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-11-12 12:46:47.000000000 -0500
72814 -@@ -75,6 +75,7 @@ xfs_compat_ioc_fsgeometry_v1(
72815 +diff -urNp linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl32.c linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl32.c
72816 +--- linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-07-21 22:17:23.000000000 -0400
72817 ++++ linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl32.c 2011-08-23 21:48:14.000000000 -0400
72818 +@@ -73,6 +73,7 @@ xfs_compat_ioc_fsgeometry_v1(
72819 xfs_fsop_geom_t fsgeo;
72820 int error;
72821
72822 @@ -50452,10 +47280,10 @@ diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl32.c linux-2.6.32.48/fs/xfs
72823 error = xfs_fs_geometry(mp, &fsgeo, 3);
72824 if (error)
72825 return -error;
72826 -diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c
72827 ---- linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c 2011-11-12 12:44:30.000000000 -0500
72828 -+++ linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c 2011-11-12 12:46:47.000000000 -0500
72829 -@@ -134,7 +134,7 @@ xfs_find_handle(
72830 +diff -urNp linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl.c linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl.c
72831 +--- linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl.c 2011-07-21 22:17:23.000000000 -0400
72832 ++++ linux-3.0.8/fs/xfs/linux-2.6/xfs_ioctl.c 2011-08-23 21:47:56.000000000 -0400
72833 +@@ -128,7 +128,7 @@ xfs_find_handle(
72834 }
72835
72836 error = -EFAULT;
72837 @@ -50464,28 +47292,10 @@ diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.32.48/fs/xfs/l
72838 copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32)))
72839 goto out_put;
72840
72841 -@@ -423,7 +423,7 @@ xfs_attrlist_by_handle(
72842 - if (IS_ERR(dentry))
72843 - return PTR_ERR(dentry);
72844 -
72845 -- kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL);
72846 -+ kbuf = kzalloc(al_hreq.buflen, GFP_KERNEL);
72847 - if (!kbuf)
72848 - goto out_dput;
72849 -
72850 -@@ -697,7 +697,7 @@ xfs_ioc_fsgeometry_v1(
72851 - xfs_mount_t *mp,
72852 - void __user *arg)
72853 - {
72854 -- xfs_fsop_geom_t fsgeo;
72855 -+ xfs_fsop_geom_t fsgeo;
72856 - int error;
72857 -
72858 - error = xfs_fs_geometry(mp, &fsgeo, 3);
72859 -diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c
72860 ---- linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c 2011-11-12 12:44:30.000000000 -0500
72861 -+++ linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c 2011-11-12 12:46:47.000000000 -0500
72862 -@@ -468,7 +468,7 @@ xfs_vn_put_link(
72863 +diff -urNp linux-3.0.8/fs/xfs/linux-2.6/xfs_iops.c linux-3.0.8/fs/xfs/linux-2.6/xfs_iops.c
72864 +--- linux-3.0.8/fs/xfs/linux-2.6/xfs_iops.c 2011-07-21 22:17:23.000000000 -0400
72865 ++++ linux-3.0.8/fs/xfs/linux-2.6/xfs_iops.c 2011-08-23 21:47:56.000000000 -0400
72866 +@@ -437,7 +437,7 @@ xfs_vn_put_link(
72867 struct nameidata *nd,
72868 void *p)
72869 {
72870 @@ -50494,10 +47304,10 @@ diff -urNp linux-2.6.32.48/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.32.48/fs/xfs/li
72871
72872 if (!IS_ERR(s))
72873 kfree(s);
72874 -diff -urNp linux-2.6.32.48/fs/xfs/xfs_bmap.c linux-2.6.32.48/fs/xfs/xfs_bmap.c
72875 ---- linux-2.6.32.48/fs/xfs/xfs_bmap.c 2009-12-02 22:51:21.000000000 -0500
72876 -+++ linux-2.6.32.48/fs/xfs/xfs_bmap.c 2011-11-12 12:46:47.000000000 -0500
72877 -@@ -360,7 +360,7 @@ xfs_bmap_validate_ret(
72878 +diff -urNp linux-3.0.8/fs/xfs/xfs_bmap.c linux-3.0.8/fs/xfs/xfs_bmap.c
72879 +--- linux-3.0.8/fs/xfs/xfs_bmap.c 2011-07-21 22:17:23.000000000 -0400
72880 ++++ linux-3.0.8/fs/xfs/xfs_bmap.c 2011-08-23 21:47:56.000000000 -0400
72881 +@@ -253,7 +253,7 @@ xfs_bmap_validate_ret(
72882 int nmap,
72883 int ret_nmap);
72884 #else
72885 @@ -50505,15 +47315,15 @@ diff -urNp linux-2.6.32.48/fs/xfs/xfs_bmap.c linux-2.6.32.48/fs/xfs/xfs_bmap.c
72886 +#define xfs_bmap_validate_ret(bno,len,flags,mval,onmap,nmap) do {} while (0)
72887 #endif /* DEBUG */
72888
72889 - #if defined(XFS_RW_TRACE)
72890 -diff -urNp linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c
72891 ---- linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c 2009-12-02 22:51:21.000000000 -0500
72892 -+++ linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c 2011-11-12 12:46:47.000000000 -0500
72893 -@@ -779,7 +779,15 @@ xfs_dir2_sf_getdents(
72894 + STATIC int
72895 +diff -urNp linux-3.0.8/fs/xfs/xfs_dir2_sf.c linux-3.0.8/fs/xfs/xfs_dir2_sf.c
72896 +--- linux-3.0.8/fs/xfs/xfs_dir2_sf.c 2011-07-21 22:17:23.000000000 -0400
72897 ++++ linux-3.0.8/fs/xfs/xfs_dir2_sf.c 2011-08-23 21:47:56.000000000 -0400
72898 +@@ -780,7 +780,15 @@ xfs_dir2_sf_getdents(
72899 }
72900
72901 ino = xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep));
72902 -- if (filldir(dirent, sfep->name, sfep->namelen,
72903 +- if (filldir(dirent, (char *)sfep->name, sfep->namelen,
72904 + if (dp->i_df.if_u1.if_data == dp->i_df.if_u2.if_inline_data) {
72905 + char name[sfep->namelen];
72906 + memcpy(name, sfep->name, sfep->namelen);
72907 @@ -50522,13 +47332,13 @@ diff -urNp linux-2.6.32.48/fs/xfs/xfs_dir2_sf.c linux-2.6.32.48/fs/xfs/xfs_dir2_
72908 + *offset = off & 0x7fffffff;
72909 + return 0;
72910 + }
72911 -+ } else if (filldir(dirent, sfep->name, sfep->namelen,
72912 ++ } else if (filldir(dirent, (char *)sfep->name, sfep->namelen,
72913 off & 0x7fffffff, ino, DT_UNKNOWN)) {
72914 *offset = off & 0x7fffffff;
72915 return 0;
72916 -diff -urNp linux-2.6.32.48/grsecurity/gracl_alloc.c linux-2.6.32.48/grsecurity/gracl_alloc.c
72917 ---- linux-2.6.32.48/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500
72918 -+++ linux-2.6.32.48/grsecurity/gracl_alloc.c 2011-11-12 12:46:47.000000000 -0500
72919 +diff -urNp linux-3.0.8/grsecurity/gracl_alloc.c linux-3.0.8/grsecurity/gracl_alloc.c
72920 +--- linux-3.0.8/grsecurity/gracl_alloc.c 1969-12-31 19:00:00.000000000 -0500
72921 ++++ linux-3.0.8/grsecurity/gracl_alloc.c 2011-08-23 21:48:14.000000000 -0400
72922 @@ -0,0 +1,105 @@
72923 +#include <linux/kernel.h>
72924 +#include <linux/mm.h>
72925 @@ -50635,10 +47445,10 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_alloc.c linux-2.6.32.48/grsecurity/g
72926 + else
72927 + return 1;
72928 +}
72929 -diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
72930 ---- linux-2.6.32.48/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
72931 -+++ linux-2.6.32.48/grsecurity/gracl.c 2011-11-12 12:46:47.000000000 -0500
72932 -@@ -0,0 +1,4140 @@
72933 +diff -urNp linux-3.0.8/grsecurity/gracl.c linux-3.0.8/grsecurity/gracl.c
72934 +--- linux-3.0.8/grsecurity/gracl.c 1969-12-31 19:00:00.000000000 -0500
72935 ++++ linux-3.0.8/grsecurity/gracl.c 2011-10-17 06:42:59.000000000 -0400
72936 +@@ -0,0 +1,4154 @@
72937 +#include <linux/kernel.h>
72938 +#include <linux/module.h>
72939 +#include <linux/sched.h>
72940 @@ -50649,7 +47459,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
72941 +#include <linux/mount.h>
72942 +#include <linux/tty.h>
72943 +#include <linux/proc_fs.h>
72944 -+#include <linux/smp_lock.h>
72945 ++#include <linux/lglock.h>
72946 +#include <linux/slab.h>
72947 +#include <linux/vmalloc.h>
72948 +#include <linux/types.h>
72949 @@ -50676,8 +47486,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
72950 + can share references in the kernel as well
72951 +*/
72952 +
72953 -+static struct dentry *real_root;
72954 -+static struct vfsmount *real_root_mnt;
72955 ++static struct path real_root;
72956 +
72957 +static struct acl_subj_map_db subj_map_set;
72958 +
72959 @@ -50717,6 +47526,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
72960 +#ifdef CONFIG_NET
72961 +extern struct vfsmount *sock_mnt;
72962 +#endif
72963 ++
72964 +extern struct vfsmount *pipe_mnt;
72965 +extern struct vfsmount *shm_mnt;
72966 +#ifdef CONFIG_HUGETLBFS
72967 @@ -50731,6 +47541,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
72968 +extern void gr_remove_uid(uid_t uid);
72969 +extern int gr_find_uid(uid_t uid);
72970 +
72971 ++DECLARE_BRLOCK(vfsmount_lock);
72972 ++
72973 +__inline__ int
72974 +gr_acl_is_enabled(void)
72975 +{
72976 @@ -50822,74 +47634,74 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
72977 + return 0;
72978 +}
72979 +
72980 -+/* this must be called with vfsmount_lock and dcache_lock held */
72981 -+
72982 -+static char * __our_d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
72983 -+ struct dentry *root, struct vfsmount *rootmnt,
72984 -+ char *buffer, int buflen)
72985 ++static int prepend_name(char **buffer, int *buflen, struct qstr *name)
72986 +{
72987 -+ char * end = buffer+buflen;
72988 -+ char * retval;
72989 -+ int namelen;
72990 -+
72991 -+ *--end = '\0';
72992 -+ buflen--;
72993 ++ return prepend(buffer, buflen, name->name, name->len);
72994 ++}
72995 +
72996 -+ if (buflen < 1)
72997 -+ goto Elong;
72998 -+ /* Get '/' right */
72999 -+ retval = end-1;
73000 -+ *retval = '/';
73001 ++static int prepend_path(const struct path *path, struct path *root,
73002 ++ char **buffer, int *buflen)
73003 ++{
73004 ++ struct dentry *dentry = path->dentry;
73005 ++ struct vfsmount *vfsmnt = path->mnt;
73006 ++ bool slash = false;
73007 ++ int error = 0;
73008 +
73009 -+ for (;;) {
73010 ++ while (dentry != root->dentry || vfsmnt != root->mnt) {
73011 + struct dentry * parent;
73012 +
73013 -+ if (dentry == root && vfsmnt == rootmnt)
73014 -+ break;
73015 + if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) {
73016 + /* Global root? */
73017 -+ if (vfsmnt->mnt_parent == vfsmnt)
73018 -+ goto global_root;
73019 ++ if (vfsmnt->mnt_parent == vfsmnt) {
73020 ++ goto out;
73021 ++ }
73022 + dentry = vfsmnt->mnt_mountpoint;
73023 + vfsmnt = vfsmnt->mnt_parent;
73024 + continue;
73025 + }
73026 + parent = dentry->d_parent;
73027 + prefetch(parent);
73028 -+ namelen = dentry->d_name.len;
73029 -+ buflen -= namelen + 1;
73030 -+ if (buflen < 0)
73031 -+ goto Elong;
73032 -+ end -= namelen;
73033 -+ memcpy(end, dentry->d_name.name, namelen);
73034 -+ *--end = '/';
73035 -+ retval = end;
73036 ++ spin_lock(&dentry->d_lock);
73037 ++ error = prepend_name(buffer, buflen, &dentry->d_name);
73038 ++ spin_unlock(&dentry->d_lock);
73039 ++ if (!error)
73040 ++ error = prepend(buffer, buflen, "/", 1);
73041 ++ if (error)
73042 ++ break;
73043 ++
73044 ++ slash = true;
73045 + dentry = parent;
73046 + }
73047 +
73048 +out:
73049 -+ return retval;
73050 ++ if (!error && !slash)
73051 ++ error = prepend(buffer, buflen, "/", 1);
73052 ++
73053 ++ return error;
73054 ++}
73055 ++
73056 ++/* this must be called with vfsmount_lock and rename_lock held */
73057 ++
73058 ++static char *__our_d_path(const struct path *path, struct path *root,
73059 ++ char *buf, int buflen)
73060 ++{
73061 ++ char *res = buf + buflen;
73062 ++ int error;
73063 ++
73064 ++ prepend(&res, &buflen, "\0", 1);
73065 ++ error = prepend_path(path, root, &res, &buflen);
73066 ++ if (error)
73067 ++ return ERR_PTR(error);
73068 +
73069 -+global_root:
73070 -+ namelen = dentry->d_name.len;
73071 -+ buflen -= namelen;
73072 -+ if (buflen < 0)
73073 -+ goto Elong;
73074 -+ retval -= namelen-1; /* hit the slash */
73075 -+ memcpy(retval, dentry->d_name.name, namelen);
73076 -+ goto out;
73077 -+Elong:
73078 -+ retval = ERR_PTR(-ENAMETOOLONG);
73079 -+ goto out;
73080 ++ return res;
73081 +}
73082 +
73083 +static char *
73084 -+gen_full_path(struct dentry *dentry, struct vfsmount *vfsmnt,
73085 -+ struct dentry *root, struct vfsmount *rootmnt, char *buf, int buflen)
73086 ++gen_full_path(struct path *path, struct path *root, char *buf, int buflen)
73087 +{
73088 + char *retval;
73089 +
73090 -+ retval = __our_d_path(dentry, vfsmnt, root, rootmnt, buf, buflen);
73091 ++ retval = __our_d_path(path, root, buf, buflen);
73092 + if (unlikely(IS_ERR(retval)))
73093 + retval = strcpy(buf, "<path too long>");
73094 + else if (unlikely(retval[1] == '/' && retval[2] == '\0'))
73095 @@ -50902,11 +47714,15 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73096 +__d_real_path(const struct dentry *dentry, const struct vfsmount *vfsmnt,
73097 + char *buf, int buflen)
73098 +{
73099 ++ struct path path;
73100 + char *res;
73101 +
73102 -+ /* we can use real_root, real_root_mnt, because this is only called
73103 ++ path.dentry = (struct dentry *)dentry;
73104 ++ path.mnt = (struct vfsmount *)vfsmnt;
73105 ++
73106 ++ /* we can use real_root.dentry, real_root.mnt, because this is only called
73107 + by the RBAC system */
73108 -+ res = gen_full_path((struct dentry *)dentry, (struct vfsmount *)vfsmnt, real_root, real_root_mnt, buf, buflen);
73109 ++ res = gen_full_path(&path, &real_root, buf, buflen);
73110 +
73111 + return res;
73112 +}
73113 @@ -50916,24 +47732,23 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73114 + char *buf, int buflen)
73115 +{
73116 + char *res;
73117 -+ struct dentry *root;
73118 -+ struct vfsmount *rootmnt;
73119 ++ struct path path;
73120 ++ struct path root;
73121 + struct task_struct *reaper = &init_task;
73122 +
73123 -+ /* we can't use real_root, real_root_mnt, because they belong only to the RBAC system */
73124 -+ read_lock(&reaper->fs->lock);
73125 -+ root = dget(reaper->fs->root.dentry);
73126 -+ rootmnt = mntget(reaper->fs->root.mnt);
73127 -+ read_unlock(&reaper->fs->lock);
73128 ++ path.dentry = (struct dentry *)dentry;
73129 ++ path.mnt = (struct vfsmount *)vfsmnt;
73130 ++
73131 ++ /* we can't use real_root.dentry, real_root.mnt, because they belong only to the RBAC system */
73132 ++ get_fs_root(reaper->fs, &root);
73133 +
73134 -+ spin_lock(&dcache_lock);
73135 -+ spin_lock(&vfsmount_lock);
73136 -+ res = gen_full_path((struct dentry *)dentry, (struct vfsmount *)vfsmnt, root, rootmnt, buf, buflen);
73137 -+ spin_unlock(&vfsmount_lock);
73138 -+ spin_unlock(&dcache_lock);
73139 ++ write_seqlock(&rename_lock);
73140 ++ br_read_lock(vfsmount_lock);
73141 ++ res = gen_full_path(&path, &root, buf, buflen);
73142 ++ br_read_unlock(vfsmount_lock);
73143 ++ write_sequnlock(&rename_lock);
73144 +
73145 -+ dput(root);
73146 -+ mntput(rootmnt);
73147 ++ path_put(&root);
73148 + return res;
73149 +}
73150 +
73151 @@ -50941,12 +47756,12 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73152 +gr_to_filename_rbac(const struct dentry *dentry, const struct vfsmount *mnt)
73153 +{
73154 + char *ret;
73155 -+ spin_lock(&dcache_lock);
73156 -+ spin_lock(&vfsmount_lock);
73157 ++ write_seqlock(&rename_lock);
73158 ++ br_read_lock(vfsmount_lock);
73159 + ret = __d_real_path(dentry, mnt, per_cpu_ptr(gr_shared_page[0],smp_processor_id()),
73160 + PAGE_SIZE);
73161 -+ spin_unlock(&vfsmount_lock);
73162 -+ spin_unlock(&dcache_lock);
73163 ++ br_read_unlock(vfsmount_lock);
73164 ++ write_sequnlock(&rename_lock);
73165 + return ret;
73166 +}
73167 +
73168 @@ -50957,8 +47772,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73169 + char *buf;
73170 + int buflen;
73171 +
73172 -+ spin_lock(&dcache_lock);
73173 -+ spin_lock(&vfsmount_lock);
73174 ++ write_seqlock(&rename_lock);
73175 ++ br_read_lock(vfsmount_lock);
73176 + buf = per_cpu_ptr(gr_shared_page[0], smp_processor_id());
73177 + ret = __d_real_path(dentry, mnt, buf, PAGE_SIZE - 6);
73178 + buflen = (int)(ret - buf);
73179 @@ -50966,8 +47781,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73180 + prepend(&ret, &buflen, "/proc", 5);
73181 + else
73182 + ret = strcpy(buf, "<path too long>");
73183 -+ spin_unlock(&vfsmount_lock);
73184 -+ spin_unlock(&dcache_lock);
73185 ++ br_read_unlock(vfsmount_lock);
73186 ++ write_sequnlock(&rename_lock);
73187 + return ret;
73188 +}
73189 +
73190 @@ -51478,13 +48293,10 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73191 + return 1;
73192 +
73193 + /* grab reference for the real root dentry and vfsmount */
73194 -+ read_lock(&reaper->fs->lock);
73195 -+ real_root = dget(reaper->fs->root.dentry);
73196 -+ real_root_mnt = mntget(reaper->fs->root.mnt);
73197 -+ read_unlock(&reaper->fs->lock);
73198 ++ get_fs_root(reaper->fs, &real_root);
73199 +
73200 +#ifdef CONFIG_GRKERNSEC_RBAC_DEBUG
73201 -+ printk(KERN_ALERT "Obtained real root device=%d, inode=%lu\n", __get_dev(real_root), real_root->d_inode->i_ino);
73202 ++ printk(KERN_ALERT "Obtained real root device=%d, inode=%lu\n", __get_dev(real_root.dentry), real_root.dentry->d_inode->i_ino);
73203 +#endif
73204 +
73205 + fakefs_obj_rw = acl_alloc(sizeof(struct acl_object_label));
73206 @@ -51568,12 +48380,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73207 + read_unlock(&tasklist_lock);
73208 +
73209 + /* release the reference to the real root dentry and vfsmount */
73210 -+ if (real_root)
73211 -+ dput(real_root);
73212 -+ real_root = NULL;
73213 -+ if (real_root_mnt)
73214 -+ mntput(real_root_mnt);
73215 -+ real_root_mnt = NULL;
73216 ++ path_put(&real_root);
73217 +
73218 + /* free all object hash tables */
73219 +
73220 @@ -52465,10 +49272,12 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73221 +
73222 +static __inline__ struct acl_object_label *
73223 +full_lookup(const struct dentry *orig_dentry, const struct vfsmount *orig_mnt,
73224 -+ const struct dentry *curr_dentry,
73225 ++ struct dentry *curr_dentry,
73226 + const struct acl_subject_label *subj, char **path, const int checkglob)
73227 +{
73228 + int newglob = checkglob;
73229 ++ ino_t inode;
73230 ++ dev_t device;
73231 +
73232 + /* if we aren't checking a subdirectory of the original path yet, don't do glob checking
73233 + as we don't want a / * rule to match instead of the / object
73234 @@ -52478,9 +49287,12 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73235 + if (orig_dentry == curr_dentry && newglob != GR_CREATE_GLOB)
73236 + newglob = GR_NO_GLOB;
73237 +
73238 -+ return __full_lookup(orig_dentry, orig_mnt,
73239 -+ curr_dentry->d_inode->i_ino,
73240 -+ __get_dev(curr_dentry), subj, path, newglob);
73241 ++ spin_lock(&curr_dentry->d_lock);
73242 ++ inode = curr_dentry->d_inode->i_ino;
73243 ++ device = __get_dev(curr_dentry);
73244 ++ spin_unlock(&curr_dentry->d_lock);
73245 ++
73246 ++ return __full_lookup(orig_dentry, orig_mnt, inode, device, subj, path, newglob);
73247 +}
73248 +
73249 +static struct acl_object_label *
73250 @@ -52490,11 +49302,12 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73251 + struct dentry *dentry = (struct dentry *) l_dentry;
73252 + struct vfsmount *mnt = (struct vfsmount *) l_mnt;
73253 + struct acl_object_label *retval;
73254 ++ struct dentry *parent;
73255 +
73256 -+ spin_lock(&dcache_lock);
73257 -+ spin_lock(&vfsmount_lock);
73258 ++ write_seqlock(&rename_lock);
73259 ++ br_read_lock(vfsmount_lock);
73260 +
73261 -+ if (unlikely((mnt == shm_mnt && dentry->d_inode->i_nlink == 0) || mnt == pipe_mnt ||
73262 ++ if (unlikely((mnt == shm_mnt && dentry->d_inode->i_nlink == 0) || mnt == pipe_mnt ||
73263 +#ifdef CONFIG_NET
73264 + mnt == sock_mnt ||
73265 +#endif
73266 @@ -52508,7 +49321,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73267 + }
73268 +
73269 + for (;;) {
73270 -+ if (dentry == real_root && mnt == real_root_mnt)
73271 ++ if (dentry == real_root.dentry && mnt == real_root.mnt)
73272 + break;
73273 +
73274 + if (dentry == mnt->mnt_root || IS_ROOT(dentry)) {
73275 @@ -52524,20 +49337,22 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73276 + continue;
73277 + }
73278 +
73279 ++ parent = dentry->d_parent;
73280 + retval = full_lookup(l_dentry, l_mnt, dentry, subj, &path, checkglob);
73281 + if (retval != NULL)
73282 + goto out;
73283 +
73284 -+ dentry = dentry->d_parent;
73285 ++ dentry = parent;
73286 + }
73287 +
73288 + retval = full_lookup(l_dentry, l_mnt, dentry, subj, &path, checkglob);
73289 +
73290 ++ /* real_root is pinned so we don't have to hold a reference */
73291 + if (retval == NULL)
73292 -+ retval = full_lookup(l_dentry, l_mnt, real_root, subj, &path, checkglob);
73293 ++ retval = full_lookup(l_dentry, l_mnt, real_root.dentry, subj, &path, checkglob);
73294 +out:
73295 -+ spin_unlock(&vfsmount_lock);
73296 -+ spin_unlock(&dcache_lock);
73297 ++ br_read_unlock(vfsmount_lock);
73298 ++ write_sequnlock(&rename_lock);
73299 +
73300 + BUG_ON(retval == NULL);
73301 +
73302 @@ -52574,22 +49389,25 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73303 + struct dentry *dentry = (struct dentry *) l_dentry;
73304 + struct vfsmount *mnt = (struct vfsmount *) l_mnt;
73305 + struct acl_subject_label *retval;
73306 ++ struct dentry *parent;
73307 +
73308 -+ spin_lock(&dcache_lock);
73309 -+ spin_lock(&vfsmount_lock);
73310 ++ write_seqlock(&rename_lock);
73311 ++ br_read_lock(vfsmount_lock);
73312 +
73313 + for (;;) {
73314 -+ if (dentry == real_root && mnt == real_root_mnt)
73315 ++ if (dentry == real_root.dentry && mnt == real_root.mnt)
73316 + break;
73317 + if (dentry == mnt->mnt_root || IS_ROOT(dentry)) {
73318 + if (mnt->mnt_parent == mnt)
73319 + break;
73320 +
73321 ++ spin_lock(&dentry->d_lock);
73322 + read_lock(&gr_inode_lock);
73323 + retval =
73324 + lookup_acl_subj_label(dentry->d_inode->i_ino,
73325 + __get_dev(dentry), role);
73326 + read_unlock(&gr_inode_lock);
73327 ++ spin_unlock(&dentry->d_lock);
73328 + if (retval != NULL)
73329 + goto out;
73330 +
73331 @@ -52598,30 +49416,37 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73332 + continue;
73333 + }
73334 +
73335 ++ spin_lock(&dentry->d_lock);
73336 + read_lock(&gr_inode_lock);
73337 + retval = lookup_acl_subj_label(dentry->d_inode->i_ino,
73338 + __get_dev(dentry), role);
73339 + read_unlock(&gr_inode_lock);
73340 ++ parent = dentry->d_parent;
73341 ++ spin_unlock(&dentry->d_lock);
73342 ++
73343 + if (retval != NULL)
73344 + goto out;
73345 +
73346 -+ dentry = dentry->d_parent;
73347 ++ dentry = parent;
73348 + }
73349 +
73350 ++ spin_lock(&dentry->d_lock);
73351 + read_lock(&gr_inode_lock);
73352 + retval = lookup_acl_subj_label(dentry->d_inode->i_ino,
73353 + __get_dev(dentry), role);
73354 + read_unlock(&gr_inode_lock);
73355 ++ spin_unlock(&dentry->d_lock);
73356 +
73357 + if (unlikely(retval == NULL)) {
73358 ++ /* real_root is pinned, we don't need to hold a reference */
73359 + read_lock(&gr_inode_lock);
73360 -+ retval = lookup_acl_subj_label(real_root->d_inode->i_ino,
73361 -+ __get_dev(real_root), role);
73362 ++ retval = lookup_acl_subj_label(real_root.dentry->d_inode->i_ino,
73363 ++ __get_dev(real_root.dentry), role);
73364 + read_unlock(&gr_inode_lock);
73365 + }
73366 +out:
73367 -+ spin_unlock(&vfsmount_lock);
73368 -+ spin_unlock(&dcache_lock);
73369 ++ br_read_unlock(vfsmount_lock);
73370 ++ write_sequnlock(&rename_lock);
73371 +
73372 + BUG_ON(retval == NULL);
73373 +
73374 @@ -53371,29 +50196,28 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73375 +}
73376 +
73377 +static void
73378 -+__do_handle_create(const struct name_entry *matchn, ino_t inode, dev_t dev)
73379 ++__do_handle_create(const struct name_entry *matchn, ino_t ino, dev_t dev)
73380 +{
73381 + struct acl_subject_label *subj;
73382 + struct acl_role_label *role;
73383 + unsigned int x;
73384 -+
73385 ++
73386 + FOR_EACH_ROLE_START(role)
73387 -+ update_acl_subj_label(matchn->inode, matchn->device,
73388 -+ inode, dev, role);
73389 ++ update_acl_subj_label(matchn->inode, matchn->device, ino, dev, role);
73390 +
73391 + FOR_EACH_NESTED_SUBJECT_START(role, subj)
73392 -+ if ((subj->inode == inode) && (subj->device == dev)) {
73393 -+ subj->inode = inode;
73394 ++ if ((subj->inode == ino) && (subj->device == dev)) {
73395 ++ subj->inode = ino;
73396 + subj->device = dev;
73397 + }
73398 + FOR_EACH_NESTED_SUBJECT_END(subj)
73399 + FOR_EACH_SUBJECT_START(role, subj, x)
73400 + update_acl_obj_label(matchn->inode, matchn->device,
73401 -+ inode, dev, subj);
73402 ++ ino, dev, subj);
73403 + FOR_EACH_SUBJECT_END(subj,x)
73404 + FOR_EACH_ROLE_END(role)
73405 +
73406 -+ update_inodev_entry(matchn->inode, matchn->device, inode, dev);
73407 ++ update_inodev_entry(matchn->inode, matchn->device, ino, dev);
73408 +
73409 + return;
73410 +}
73411 @@ -53460,8 +50284,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73412 +{
73413 + struct name_entry *matchn;
73414 + struct inodev_entry *inodev;
73415 -+ ino_t oldinode = old_dentry->d_inode->i_ino;
73416 -+ dev_t olddev = __get_dev(old_dentry);
73417 ++ ino_t old_ino = old_dentry->d_inode->i_ino;
73418 ++ dev_t old_dev = __get_dev(old_dentry);
73419 +
73420 + /* vfs_rename swaps the name and parent link for old_dentry and
73421 + new_dentry
73422 @@ -53483,16 +50307,17 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73423 +
73424 + write_lock(&gr_inode_lock);
73425 + if (unlikely(replace && new_dentry->d_inode)) {
73426 -+ ino_t newinode = new_dentry->d_inode->i_ino;
73427 -+ dev_t newdev = __get_dev(new_dentry);
73428 -+ inodev = lookup_inodev_entry(newinode, newdev);
73429 ++ ino_t new_ino = new_dentry->d_inode->i_ino;
73430 ++ dev_t new_dev = __get_dev(new_dentry);
73431 ++
73432 ++ inodev = lookup_inodev_entry(new_ino, new_dev);
73433 + if (inodev != NULL && (new_dentry->d_inode->i_nlink <= 1))
73434 -+ do_handle_delete(inodev, newinode, newdev);
73435 ++ do_handle_delete(inodev, new_ino, new_dev);
73436 + }
73437 +
73438 -+ inodev = lookup_inodev_entry(oldinode, olddev);
73439 ++ inodev = lookup_inodev_entry(old_ino, old_dev);
73440 + if (inodev != NULL && (old_dentry->d_inode->i_nlink <= 1))
73441 -+ do_handle_delete(inodev, oldinode, olddev);
73442 ++ do_handle_delete(inodev, old_ino, old_dev);
73443 +
73444 + if (unlikely((unsigned long)matchn))
73445 + do_handle_create(matchn, old_dentry, mnt);
73446 @@ -53810,7 +50635,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73447 + gr_log_str(GR_DONT_AUDIT_GOOD, GR_RELOADI_ACL_MSG, GR_VERSION);
73448 + error = -EAGAIN;
73449 + } else if (!(chkpw(gr_usermode, gr_system_salt, gr_system_sum))) {
73450 -+ lock_kernel();
73451 ++ preempt_disable();
73452 +
73453 + pax_open_kernel();
73454 + gr_status &= ~GR_READY;
73455 @@ -53818,10 +50643,10 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73456 +
73457 + free_variables();
73458 + if (!(error2 = gracl_init(gr_usermode))) {
73459 -+ unlock_kernel();
73460 ++ preempt_enable();
73461 + gr_log_str(GR_DONT_AUDIT_GOOD, GR_RELOAD_ACL_MSG, GR_VERSION);
73462 + } else {
73463 -+ unlock_kernel();
73464 ++ preempt_enable();
73465 + error = error2;
73466 + gr_log_str(GR_DONT_AUDIT, GR_RELOADF_ACL_MSG, GR_VERSION);
73467 + }
73468 @@ -54034,7 +50859,6 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73469 + if (task->exec_file) {
73470 + cred = __task_cred(task);
73471 + task->role = lookup_acl_role_label(task, cred->uid, cred->gid);
73472 -+
73473 + ret = gr_apply_subject_to_task(task);
73474 + if (ret) {
73475 + read_unlock(&grsec_exec_file_lock);
73476 @@ -54267,7 +51091,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73477 +__u32
73478 +gr_handle_sysctl(const struct ctl_table *table, const int op)
73479 +{
73480 -+ ctl_table *tmp;
73481 ++ struct ctl_table *tmp;
73482 + const char *proc_sys = "/proc/sys";
73483 + char *path;
73484 + struct acl_object_label *obj;
73485 @@ -54300,7 +51124,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73486 +
73487 + /* convert the requested sysctl entry into a pathname */
73488 +
73489 -+ for (tmp = (ctl_table *)table; tmp != NULL; tmp = tmp->parent) {
73490 ++ for (tmp = (struct ctl_table *)table; tmp != NULL; tmp = tmp->parent) {
73491 + len += strlen(tmp->procname);
73492 + len++;
73493 + depth++;
73494 @@ -54320,7 +51144,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73495 + for (; depth > 0; depth--) {
73496 + path[pos] = '/';
73497 + pos++;
73498 -+ for (i = 1, tmp = (ctl_table *)table; tmp != NULL; tmp = tmp->parent) {
73499 ++ for (i = 1, tmp = (struct ctl_table *)table; tmp != NULL; tmp = tmp->parent) {
73500 + if (depth == i) {
73501 + memcpy(path + pos, tmp->procname,
73502 + strlen(tmp->procname));
73503 @@ -54779,9 +51603,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl.c linux-2.6.32.48/grsecurity/gracl.c
73504 +EXPORT_SYMBOL(gr_check_group_change);
73505 +#endif
73506 +
73507 -diff -urNp linux-2.6.32.48/grsecurity/gracl_cap.c linux-2.6.32.48/grsecurity/gracl_cap.c
73508 ---- linux-2.6.32.48/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500
73509 -+++ linux-2.6.32.48/grsecurity/gracl_cap.c 2011-11-12 12:46:47.000000000 -0500
73510 +diff -urNp linux-3.0.8/grsecurity/gracl_cap.c linux-3.0.8/grsecurity/gracl_cap.c
73511 +--- linux-3.0.8/grsecurity/gracl_cap.c 1969-12-31 19:00:00.000000000 -0500
73512 ++++ linux-3.0.8/grsecurity/gracl_cap.c 2011-09-14 09:21:24.000000000 -0400
73513 @@ -0,0 +1,101 @@
73514 +#include <linux/kernel.h>
73515 +#include <linux/module.h>
73516 @@ -54884,9 +51708,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_cap.c linux-2.6.32.48/grsecurity/gra
73517 + return 0;
73518 +}
73519 +
73520 -diff -urNp linux-2.6.32.48/grsecurity/gracl_fs.c linux-2.6.32.48/grsecurity/gracl_fs.c
73521 ---- linux-2.6.32.48/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500
73522 -+++ linux-2.6.32.48/grsecurity/gracl_fs.c 2011-11-12 12:46:47.000000000 -0500
73523 +diff -urNp linux-3.0.8/grsecurity/gracl_fs.c linux-3.0.8/grsecurity/gracl_fs.c
73524 +--- linux-3.0.8/grsecurity/gracl_fs.c 1969-12-31 19:00:00.000000000 -0500
73525 ++++ linux-3.0.8/grsecurity/gracl_fs.c 2011-10-17 01:22:26.000000000 -0400
73526 @@ -0,0 +1,431 @@
73527 +#include <linux/kernel.h>
73528 +#include <linux/sched.h>
73529 @@ -54938,7 +51762,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_fs.c linux-2.6.32.48/grsecurity/grac
73530 + reqmode |= GR_WRITE;
73531 + if (likely((fmode & FMODE_READ) && !(fmode & O_DIRECTORY)))
73532 + reqmode |= GR_READ;
73533 -+ if ((fmode & FMODE_GREXEC) && (fmode & FMODE_EXEC))
73534 ++ if ((fmode & FMODE_GREXEC) && (fmode & __FMODE_EXEC))
73535 + reqmode &= ~GR_READ;
73536 + mode =
73537 + gr_search_file(dentry, reqmode | to_gr_audit(reqmode) | GR_SUPPRESS,
73538 @@ -55291,8 +52115,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_fs.c linux-2.6.32.48/grsecurity/grac
73539 + char *rolename;
73540 + struct file *exec_file;
73541 +
73542 -+ if (unlikely(current->acl_sp_role && gr_acl_is_enabled() &&
73543 -+ !(current->role->roletype & GR_ROLE_PERSIST))) {
73544 ++ if (unlikely(current->acl_sp_role && gr_acl_is_enabled() &&
73545 ++ !(current->role->roletype & GR_ROLE_PERSIST))) {
73546 + id = current->acl_role_id;
73547 + rolename = current->role->rolename;
73548 + gr_set_acls(1);
73549 @@ -55319,10 +52143,10 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_fs.c linux-2.6.32.48/grsecurity/grac
73550 +
73551 + return 0;
73552 +}
73553 -diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/gracl_ip.c
73554 ---- linux-2.6.32.48/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500
73555 -+++ linux-2.6.32.48/grsecurity/gracl_ip.c 2011-11-12 12:46:47.000000000 -0500
73556 -@@ -0,0 +1,382 @@
73557 +diff -urNp linux-3.0.8/grsecurity/gracl_ip.c linux-3.0.8/grsecurity/gracl_ip.c
73558 +--- linux-3.0.8/grsecurity/gracl_ip.c 1969-12-31 19:00:00.000000000 -0500
73559 ++++ linux-3.0.8/grsecurity/gracl_ip.c 2011-08-23 21:48:14.000000000 -0400
73560 +@@ -0,0 +1,381 @@
73561 +#include <linux/kernel.h>
73562 +#include <asm/uaccess.h>
73563 +#include <asm/errno.h>
73564 @@ -55334,7 +52158,6 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
73565 +#include <linux/skbuff.h>
73566 +#include <linux/ip.h>
73567 +#include <linux/udp.h>
73568 -+#include <linux/smp_lock.h>
73569 +#include <linux/types.h>
73570 +#include <linux/sched.h>
73571 +#include <linux/netdevice.h>
73572 @@ -55394,7 +52217,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
73573 + "unspec", "unix", "inet", "ax25", "ipx", "appletalk", "netrom", "bridge", "atmpvc", "x25",
73574 + "inet6", "rose", "decnet", "netbeui", "security", "key", "netlink", "packet", "ash",
73575 + "econet", "atmsvc", "rds", "sna", "irda", "ppox", "wanpipe", "llc", "fam_27", "fam_28",
73576 -+ "tipc", "bluetooth", "iucv", "rxrpc", "isdn", "phonet", "ieee802154"
73577 ++ "tipc", "bluetooth", "iucv", "rxrpc", "isdn", "phonet", "ieee802154", "ciaf"
73578 + };
73579 +
73580 +const char *
73581 @@ -55550,13 +52373,13 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
73582 + /* INADDR_ANY overriding for binds, inaddr_any_override is already in network order */
73583 + if ((full_mode & GR_BINDOVERRIDE) && addr->sin_addr.s_addr == htonl(INADDR_ANY) && curr->inaddr_any_override != 0)
73584 + addr->sin_addr.s_addr = curr->inaddr_any_override;
73585 -+ if ((full_mode & GR_CONNECT) && isk->saddr == htonl(INADDR_ANY) && curr->inaddr_any_override != 0) {
73586 ++ if ((full_mode & GR_CONNECT) && isk->inet_saddr == htonl(INADDR_ANY) && curr->inaddr_any_override != 0) {
73587 + struct sockaddr_in saddr;
73588 + int err;
73589 +
73590 + saddr.sin_family = AF_INET;
73591 + saddr.sin_addr.s_addr = curr->inaddr_any_override;
73592 -+ saddr.sin_port = isk->sport;
73593 ++ saddr.sin_port = isk->inet_sport;
73594 +
73595 + err = security_socket_bind(sk->sk_socket, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in));
73596 + if (err)
73597 @@ -55659,8 +52482,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
73598 + struct sock *sk = sock->sk;
73599 + struct sockaddr_in addr;
73600 +
73601 -+ addr.sin_addr.s_addr = inet_sk(sk)->saddr;
73602 -+ addr.sin_port = inet_sk(sk)->sport;
73603 ++ addr.sin_addr.s_addr = inet_sk(sk)->inet_saddr;
73604 ++ addr.sin_port = inet_sk(sk)->inet_sport;
73605 +
73606 + return gr_search_connectbind(GR_BIND | GR_CONNECTOVERRIDE, sock->sk, &addr, sock->type);
73607 +}
73608 @@ -55670,8 +52493,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
73609 + struct sock *sk = sock->sk;
73610 + struct sockaddr_in addr;
73611 +
73612 -+ addr.sin_addr.s_addr = inet_sk(sk)->saddr;
73613 -+ addr.sin_port = inet_sk(sk)->sport;
73614 ++ addr.sin_addr.s_addr = inet_sk(sk)->inet_saddr;
73615 ++ addr.sin_port = inet_sk(sk)->inet_sport;
73616 +
73617 + return gr_search_connectbind(GR_BIND | GR_CONNECTOVERRIDE, sock->sk, &addr, sock->type);
73618 +}
73619 @@ -55685,8 +52508,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
73620 + struct sockaddr_in sin;
73621 + const struct inet_sock *inet = inet_sk(sk);
73622 +
73623 -+ sin.sin_addr.s_addr = inet->daddr;
73624 -+ sin.sin_port = inet->dport;
73625 ++ sin.sin_addr.s_addr = inet->inet_daddr;
73626 ++ sin.sin_port = inet->inet_dport;
73627 +
73628 + return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM);
73629 + }
73630 @@ -55705,15 +52528,14 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_ip.c linux-2.6.32.48/grsecurity/grac
73631 +
73632 + return gr_search_connectbind(GR_CONNECT | GR_CONNECTOVERRIDE, sk, &sin, SOCK_DGRAM);
73633 +}
73634 -diff -urNp linux-2.6.32.48/grsecurity/gracl_learn.c linux-2.6.32.48/grsecurity/gracl_learn.c
73635 ---- linux-2.6.32.48/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500
73636 -+++ linux-2.6.32.48/grsecurity/gracl_learn.c 2011-11-12 12:46:47.000000000 -0500
73637 -@@ -0,0 +1,208 @@
73638 +diff -urNp linux-3.0.8/grsecurity/gracl_learn.c linux-3.0.8/grsecurity/gracl_learn.c
73639 +--- linux-3.0.8/grsecurity/gracl_learn.c 1969-12-31 19:00:00.000000000 -0500
73640 ++++ linux-3.0.8/grsecurity/gracl_learn.c 2011-08-23 21:48:14.000000000 -0400
73641 +@@ -0,0 +1,207 @@
73642 +#include <linux/kernel.h>
73643 +#include <linux/mm.h>
73644 +#include <linux/sched.h>
73645 +#include <linux/poll.h>
73646 -+#include <linux/smp_lock.h>
73647 +#include <linux/string.h>
73648 +#include <linux/file.h>
73649 +#include <linux/types.h>
73650 @@ -55917,10 +52739,10 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_learn.c linux-2.6.32.48/grsecurity/g
73651 + .release = close_learn,
73652 + .poll = poll_learn,
73653 +};
73654 -diff -urNp linux-2.6.32.48/grsecurity/gracl_res.c linux-2.6.32.48/grsecurity/gracl_res.c
73655 ---- linux-2.6.32.48/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500
73656 -+++ linux-2.6.32.48/grsecurity/gracl_res.c 2011-11-12 12:46:47.000000000 -0500
73657 -@@ -0,0 +1,67 @@
73658 +diff -urNp linux-3.0.8/grsecurity/gracl_res.c linux-3.0.8/grsecurity/gracl_res.c
73659 +--- linux-3.0.8/grsecurity/gracl_res.c 1969-12-31 19:00:00.000000000 -0500
73660 ++++ linux-3.0.8/grsecurity/gracl_res.c 2011-08-23 21:48:14.000000000 -0400
73661 +@@ -0,0 +1,68 @@
73662 +#include <linux/kernel.h>
73663 +#include <linux/sched.h>
73664 +#include <linux/gracl.h>
73665 @@ -55961,9 +52783,10 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_res.c linux-2.6.32.48/grsecurity/gra
73666 + return;
73667 +
73668 + if (res == RLIMIT_CPU || res == RLIMIT_RTTIME)
73669 -+ rlim = task->signal->rlim[res].rlim_max;
73670 ++ rlim = task_rlimit_max(task, res);
73671 + else
73672 -+ rlim = task->signal->rlim[res].rlim_cur;
73673 ++ rlim = task_rlimit(task, res);
73674 ++
73675 + if (likely((rlim == RLIM_INFINITY) || (gt && wanted <= rlim) || (!gt && wanted < rlim)))
73676 + return;
73677 +
73678 @@ -55988,10 +52811,10 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_res.c linux-2.6.32.48/grsecurity/gra
73679 + rcu_read_unlock();
73680 + return;
73681 +}
73682 -diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gracl_segv.c
73683 ---- linux-2.6.32.48/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500
73684 -+++ linux-2.6.32.48/grsecurity/gracl_segv.c 2011-11-12 12:46:47.000000000 -0500
73685 -@@ -0,0 +1,284 @@
73686 +diff -urNp linux-3.0.8/grsecurity/gracl_segv.c linux-3.0.8/grsecurity/gracl_segv.c
73687 +--- linux-3.0.8/grsecurity/gracl_segv.c 1969-12-31 19:00:00.000000000 -0500
73688 ++++ linux-3.0.8/grsecurity/gracl_segv.c 2011-08-23 21:48:14.000000000 -0400
73689 +@@ -0,0 +1,299 @@
73690 +#include <linux/kernel.h>
73691 +#include <linux/mm.h>
73692 +#include <asm/uaccess.h>
73693 @@ -56002,7 +52825,6 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gr
73694 +#include <linux/fs.h>
73695 +#include <linux/net.h>
73696 +#include <linux/in.h>
73697 -+#include <linux/smp_lock.h>
73698 +#include <linux/slab.h>
73699 +#include <linux/types.h>
73700 +#include <linux/sched.h>
73701 @@ -56018,7 +52840,21 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gr
73702 +extern struct acl_subject_label *
73703 + lookup_acl_subj_label(const ino_t inode, const dev_t dev,
73704 + struct acl_role_label *role);
73705 -+extern int gr_fake_force_sig(int sig, struct task_struct *t);
73706 ++
73707 ++#ifdef CONFIG_BTRFS_FS
73708 ++extern dev_t get_btrfs_dev_from_inode(struct inode *inode);
73709 ++extern int btrfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat);
73710 ++#endif
73711 ++
73712 ++static inline dev_t __get_dev(const struct dentry *dentry)
73713 ++{
73714 ++#ifdef CONFIG_BTRFS_FS
73715 ++ if (dentry->d_inode->i_op && dentry->d_inode->i_op->getattr == &btrfs_getattr)
73716 ++ return get_btrfs_dev_from_inode(dentry->d_inode);
73717 ++ else
73718 ++#endif
73719 ++ return dentry->d_inode->i_sb->s_dev;
73720 ++}
73721 +
73722 +int
73723 +gr_init_uidset(void)
73724 @@ -56154,6 +52990,8 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gr
73725 + return 0;
73726 +}
73727 +
73728 ++extern int gr_fake_force_sig(int sig, struct task_struct *t);
73729 ++
73730 +void
73731 +gr_handle_crash(struct task_struct *task, const int sig)
73732 +{
73733 @@ -56232,7 +53070,7 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gr
73734 +
73735 + read_lock(&gr_inode_lock);
73736 + curr = lookup_acl_subj_label(filp->f_path.dentry->d_inode->i_ino,
73737 -+ filp->f_path.dentry->d_inode->i_sb->s_dev,
73738 ++ __get_dev(filp->f_path.dentry),
73739 + current->role);
73740 + read_unlock(&gr_inode_lock);
73741 +
73742 @@ -56276,9 +53114,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_segv.c linux-2.6.32.48/grsecurity/gr
73743 +
73744 + return;
73745 +}
73746 -diff -urNp linux-2.6.32.48/grsecurity/gracl_shm.c linux-2.6.32.48/grsecurity/gracl_shm.c
73747 ---- linux-2.6.32.48/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500
73748 -+++ linux-2.6.32.48/grsecurity/gracl_shm.c 2011-11-12 12:46:47.000000000 -0500
73749 +diff -urNp linux-3.0.8/grsecurity/gracl_shm.c linux-3.0.8/grsecurity/gracl_shm.c
73750 +--- linux-3.0.8/grsecurity/gracl_shm.c 1969-12-31 19:00:00.000000000 -0500
73751 ++++ linux-3.0.8/grsecurity/gracl_shm.c 2011-08-23 21:48:14.000000000 -0400
73752 @@ -0,0 +1,40 @@
73753 +#include <linux/kernel.h>
73754 +#include <linux/mm.h>
73755 @@ -56320,9 +53158,9 @@ diff -urNp linux-2.6.32.48/grsecurity/gracl_shm.c linux-2.6.32.48/grsecurity/gra
73756 +
73757 + return 1;
73758 +}
73759 -diff -urNp linux-2.6.32.48/grsecurity/grsec_chdir.c linux-2.6.32.48/grsecurity/grsec_chdir.c
73760 ---- linux-2.6.32.48/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500
73761 -+++ linux-2.6.32.48/grsecurity/grsec_chdir.c 2011-11-12 12:46:47.000000000 -0500
73762 +diff -urNp linux-3.0.8/grsecurity/grsec_chdir.c linux-3.0.8/grsecurity/grsec_chdir.c
73763 +--- linux-3.0.8/grsecurity/grsec_chdir.c 1969-12-31 19:00:00.000000000 -0500
73764 ++++ linux-3.0.8/grsecurity/grsec_chdir.c 2011-08-23 21:48:14.000000000 -0400
73765 @@ -0,0 +1,19 @@
73766 +#include <linux/kernel.h>
73767 +#include <linux/sched.h>
73768 @@ -56343,10 +53181,10 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chdir.c linux-2.6.32.48/grsecurity/g
73769 +#endif
73770 + return;
73771 +}
73772 -diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/grsec_chroot.c
73773 ---- linux-2.6.32.48/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500
73774 -+++ linux-2.6.32.48/grsecurity/grsec_chroot.c 2011-11-12 12:46:47.000000000 -0500
73775 -@@ -0,0 +1,386 @@
73776 +diff -urNp linux-3.0.8/grsecurity/grsec_chroot.c linux-3.0.8/grsecurity/grsec_chroot.c
73777 +--- linux-3.0.8/grsecurity/grsec_chroot.c 1969-12-31 19:00:00.000000000 -0500
73778 ++++ linux-3.0.8/grsecurity/grsec_chroot.c 2011-09-15 06:47:48.000000000 -0400
73779 +@@ -0,0 +1,351 @@
73780 +#include <linux/kernel.h>
73781 +#include <linux/module.h>
73782 +#include <linux/sched.h>
73783 @@ -56395,7 +53233,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/
73784 +
73785 + rcu_read_lock();
73786 + read_lock(&tasklist_lock);
73787 -+
73788 + p = find_task_by_vpid_unrestricted(pid);
73789 + if (unlikely(p && !have_same_root(current, p))) {
73790 + read_unlock(&tasklist_lock);
73791 @@ -56488,50 +53325,16 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/
73792 +#if defined(CONFIG_GRKERNSEC_CHROOT_DOUBLE) || defined(CONFIG_GRKERNSEC_CHROOT_FCHDIR)
73793 +int gr_is_outside_chroot(const struct dentry *u_dentry, const struct vfsmount *u_mnt)
73794 +{
73795 -+ struct dentry *dentry = (struct dentry *)u_dentry;
73796 -+ struct vfsmount *mnt = (struct vfsmount *)u_mnt;
73797 -+ struct dentry *realroot;
73798 -+ struct vfsmount *realrootmnt;
73799 -+ struct dentry *currentroot;
73800 -+ struct vfsmount *currentmnt;
73801 -+ struct task_struct *reaper = &init_task;
73802 -+ int ret = 1;
73803 -+
73804 -+ read_lock(&reaper->fs->lock);
73805 -+ realrootmnt = mntget(reaper->fs->root.mnt);
73806 -+ realroot = dget(reaper->fs->root.dentry);
73807 -+ read_unlock(&reaper->fs->lock);
73808 -+
73809 -+ read_lock(&current->fs->lock);
73810 -+ currentmnt = mntget(current->fs->root.mnt);
73811 -+ currentroot = dget(current->fs->root.dentry);
73812 -+ read_unlock(&current->fs->lock);
73813 -+
73814 -+ spin_lock(&dcache_lock);
73815 -+ for (;;) {
73816 -+ if (unlikely((dentry == realroot && mnt == realrootmnt)
73817 -+ || (dentry == currentroot && mnt == currentmnt)))
73818 -+ break;
73819 -+ if (unlikely(dentry == mnt->mnt_root || IS_ROOT(dentry))) {
73820 -+ if (mnt->mnt_parent == mnt)
73821 -+ break;
73822 -+ dentry = mnt->mnt_mountpoint;
73823 -+ mnt = mnt->mnt_parent;
73824 -+ continue;
73825 -+ }
73826 -+ dentry = dentry->d_parent;
73827 -+ }
73828 -+ spin_unlock(&dcache_lock);
73829 -+
73830 -+ dput(currentroot);
73831 -+ mntput(currentmnt);
73832 ++ struct path path, currentroot;
73833 ++ int ret = 0;
73834 +
73835 -+ /* access is outside of chroot */
73836 -+ if (dentry == realroot && mnt == realrootmnt)
73837 -+ ret = 0;
73838 ++ path.dentry = (struct dentry *)u_dentry;
73839 ++ path.mnt = (struct vfsmount *)u_mnt;
73840 ++ get_fs_root(current->fs, &currentroot);
73841 ++ if (path_is_under(&path, &currentroot))
73842 ++ ret = 1;
73843 ++ path_put(&currentroot);
73844 +
73845 -+ dput(realroot);
73846 -+ mntput(realrootmnt);
73847 + return ret;
73848 +}
73849 +#endif
73850 @@ -56630,7 +53433,7 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/
73851 +{
73852 +#ifdef CONFIG_GRKERNSEC_CHROOT_MOUNT
73853 + if (grsec_enable_chroot_mount && proc_is_chrooted(current)) {
73854 -+ gr_log_str_fs(GR_DONT_AUDIT, GR_MOUNT_CHROOT_MSG, dev_name ? dev_name : "none" , dentry, mnt);
73855 ++ gr_log_str_fs(GR_DONT_AUDIT, GR_MOUNT_CHROOT_MSG, dev_name ? dev_name : "none", dentry, mnt);
73856 + return -EPERM;
73857 + }
73858 +#endif
73859 @@ -56701,8 +53504,8 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/
73860 +gr_handle_chroot_sysctl(const int op)
73861 +{
73862 +#ifdef CONFIG_GRKERNSEC_CHROOT_SYSCTL
73863 -+ if (grsec_enable_chroot_sysctl && proc_is_chrooted(current)
73864 -+ && (op & MAY_WRITE))
73865 ++ if (grsec_enable_chroot_sysctl && (op & MAY_WRITE) &&
73866 ++ proc_is_chrooted(current))
73867 + return -EACCES;
73868 +#endif
73869 + return 0;
73870 @@ -56723,7 +53526,7 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/
73871 + const struct vfsmount *mnt, const int mode)
73872 +{
73873 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHMOD
73874 -+ /* allow chmod +s on directories, but not on files */
73875 ++ /* allow chmod +s on directories, but not files */
73876 + if (grsec_enable_chroot_chmod && !S_ISDIR(dentry->d_inode->i_mode) &&
73877 + ((mode & S_ISUID) || ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))) &&
73878 + proc_is_chrooted(current)) {
73879 @@ -56733,9 +53536,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_chroot.c linux-2.6.32.48/grsecurity/
73880 +#endif
73881 + return 0;
73882 +}
73883 -diff -urNp linux-2.6.32.48/grsecurity/grsec_disabled.c linux-2.6.32.48/grsecurity/grsec_disabled.c
73884 ---- linux-2.6.32.48/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500
73885 -+++ linux-2.6.32.48/grsecurity/grsec_disabled.c 2011-11-12 12:46:47.000000000 -0500
73886 +diff -urNp linux-3.0.8/grsecurity/grsec_disabled.c linux-3.0.8/grsecurity/grsec_disabled.c
73887 +--- linux-3.0.8/grsecurity/grsec_disabled.c 1969-12-31 19:00:00.000000000 -0500
73888 ++++ linux-3.0.8/grsecurity/grsec_disabled.c 2011-10-25 09:17:34.000000000 -0400
73889 @@ -0,0 +1,439 @@
73890 +#include <linux/kernel.h>
73891 +#include <linux/module.h>
73892 @@ -56779,7 +53582,7 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_disabled.c linux-2.6.32.48/grsecurit
73893 +}
73894 +
73895 +void
73896 -+gr_handle_proc_create(const struct dentry *dentry, const struct inode *inode)
73897 ++gr_handle_proc_create(const struct dentry *dentry, const struct inode *inode)
73898 +{
73899 + return;
73900 +}
73901 @@ -57176,21 +53979,20 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_disabled.c linux-2.6.32.48/grsecurit
73902 +EXPORT_SYMBOL(gr_check_user_change);
73903 +EXPORT_SYMBOL(gr_check_group_change);
73904 +#endif
73905 -diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/grsec_exec.c
73906 ---- linux-2.6.32.48/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500
73907 -+++ linux-2.6.32.48/grsecurity/grsec_exec.c 2011-11-12 12:46:47.000000000 -0500
73908 -@@ -0,0 +1,204 @@
73909 +diff -urNp linux-3.0.8/grsecurity/grsec_exec.c linux-3.0.8/grsecurity/grsec_exec.c
73910 +--- linux-3.0.8/grsecurity/grsec_exec.c 1969-12-31 19:00:00.000000000 -0500
73911 ++++ linux-3.0.8/grsecurity/grsec_exec.c 2011-10-20 00:50:54.000000000 -0400
73912 +@@ -0,0 +1,146 @@
73913 +#include <linux/kernel.h>
73914 +#include <linux/sched.h>
73915 +#include <linux/file.h>
73916 +#include <linux/binfmts.h>
73917 -+#include <linux/smp_lock.h>
73918 +#include <linux/fs.h>
73919 +#include <linux/types.h>
73920 +#include <linux/grdefs.h>
73921 ++#include <linux/grsecurity.h>
73922 +#include <linux/grinternal.h>
73923 +#include <linux/capability.h>
73924 -+#include <linux/compat.h>
73925 +#include <linux/module.h>
73926 +
73927 +#include <asm/uaccess.h>
73928 @@ -57200,8 +54002,10 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/gr
73929 +static DEFINE_MUTEX(gr_exec_arg_mutex);
73930 +#endif
73931 +
73932 ++extern const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr);
73933 ++
73934 +void
73935 -+gr_handle_exec_args(struct linux_binprm *bprm, const char __user *const __user *argv)
73936 ++gr_handle_exec_args(struct linux_binprm *bprm, struct user_arg_ptr argv)
73937 +{
73938 +#ifdef CONFIG_GRKERNSEC_EXECLOG
73939 + char *grarg = gr_exec_arg_buf;
73940 @@ -57216,17 +54020,14 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/gr
73941 + mutex_lock(&gr_exec_arg_mutex);
73942 + memset(grarg, 0, sizeof(gr_exec_arg_buf));
73943 +
73944 -+ if (unlikely(argv == NULL))
73945 -+ goto log;
73946 -+
73947 + for (i = 0; i < bprm->argc && execlen < 128; i++) {
73948 + const char __user *p;
73949 + unsigned int len;
73950 +
73951 -+ if (copy_from_user(&p, argv + i, sizeof(p)))
73952 -+ goto log;
73953 -+ if (!p)
73954 ++ p = get_user_arg_ptr(argv, i);
73955 ++ if (IS_ERR(p))
73956 + goto log;
73957 ++
73958 + len = strnlen_user(p, 128 - execlen);
73959 + if (len > 128 - execlen)
73960 + len = 128 - execlen;
73961 @@ -57256,64 +54057,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/gr
73962 + return;
73963 +}
73964 +
73965 -+#ifdef CONFIG_COMPAT
73966 -+void
73967 -+gr_handle_exec_args_compat(struct linux_binprm *bprm, compat_uptr_t __user *argv)
73968 -+{
73969 -+#ifdef CONFIG_GRKERNSEC_EXECLOG
73970 -+ char *grarg = gr_exec_arg_buf;
73971 -+ unsigned int i, x, execlen = 0;
73972 -+ char c;
73973 -+
73974 -+ if (!((grsec_enable_execlog && grsec_enable_group &&
73975 -+ in_group_p(grsec_audit_gid))
73976 -+ || (grsec_enable_execlog && !grsec_enable_group)))
73977 -+ return;
73978 -+
73979 -+ mutex_lock(&gr_exec_arg_mutex);
73980 -+ memset(grarg, 0, sizeof(gr_exec_arg_buf));
73981 -+
73982 -+ if (unlikely(argv == NULL))
73983 -+ goto log;
73984 -+
73985 -+ for (i = 0; i < bprm->argc && execlen < 128; i++) {
73986 -+ compat_uptr_t p;
73987 -+ unsigned int len;
73988 -+
73989 -+ if (get_user(p, argv + i))
73990 -+ goto log;
73991 -+ len = strnlen_user(compat_ptr(p), 128 - execlen);
73992 -+ if (len > 128 - execlen)
73993 -+ len = 128 - execlen;
73994 -+ else if (len > 0)
73995 -+ len--;
73996 -+ else
73997 -+ goto log;
73998 -+ if (copy_from_user(grarg + execlen, compat_ptr(p), len))
73999 -+ goto log;
74000 -+
74001 -+ /* rewrite unprintable characters */
74002 -+ for (x = 0; x < len; x++) {
74003 -+ c = *(grarg + execlen + x);
74004 -+ if (c < 32 || c > 126)
74005 -+ *(grarg + execlen + x) = ' ';
74006 -+ }
74007 -+
74008 -+ execlen += len;
74009 -+ *(grarg + execlen) = ' ';
74010 -+ *(grarg + execlen + 1) = '\0';
74011 -+ execlen++;
74012 -+ }
74013 -+
74014 -+ log:
74015 -+ gr_log_fs_str(GR_DO_AUDIT, GR_EXEC_AUDIT_MSG, bprm->file->f_path.dentry,
74016 -+ bprm->file->f_path.mnt, grarg);
74017 -+ mutex_unlock(&gr_exec_arg_mutex);
74018 -+#endif
74019 -+ return;
74020 -+}
74021 -+#endif
74022 -+
74023 +#ifdef CONFIG_GRKERNSEC
74024 +extern int gr_acl_is_capable(const int cap);
74025 +extern int gr_acl_is_capable_nolog(const int cap);
74026 @@ -57355,7 +54098,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/gr
74027 + "CAP_AUDIT_CONTROL",
74028 + "CAP_SETFCAP",
74029 + "CAP_MAC_OVERRIDE",
74030 -+ "CAP_MAC_ADMIN"
74031 ++ "CAP_MAC_ADMIN",
74032 ++ "CAP_SYSLOG",
74033 ++ "CAP_WAKE_ALARM"
74034 +};
74035 +
74036 +int captab_log_entries = sizeof(captab_log)/sizeof(captab_log[0]);
74037 @@ -57384,9 +54129,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_exec.c linux-2.6.32.48/grsecurity/gr
74038 +
74039 +EXPORT_SYMBOL(gr_is_capable);
74040 +EXPORT_SYMBOL(gr_is_capable_nolog);
74041 -diff -urNp linux-2.6.32.48/grsecurity/grsec_fifo.c linux-2.6.32.48/grsecurity/grsec_fifo.c
74042 ---- linux-2.6.32.48/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500
74043 -+++ linux-2.6.32.48/grsecurity/grsec_fifo.c 2011-11-12 12:46:47.000000000 -0500
74044 +diff -urNp linux-3.0.8/grsecurity/grsec_fifo.c linux-3.0.8/grsecurity/grsec_fifo.c
74045 +--- linux-3.0.8/grsecurity/grsec_fifo.c 1969-12-31 19:00:00.000000000 -0500
74046 ++++ linux-3.0.8/grsecurity/grsec_fifo.c 2011-08-23 21:48:14.000000000 -0400
74047 @@ -0,0 +1,24 @@
74048 +#include <linux/kernel.h>
74049 +#include <linux/sched.h>
74050 @@ -57412,9 +54157,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_fifo.c linux-2.6.32.48/grsecurity/gr
74051 +#endif
74052 + return 0;
74053 +}
74054 -diff -urNp linux-2.6.32.48/grsecurity/grsec_fork.c linux-2.6.32.48/grsecurity/grsec_fork.c
74055 ---- linux-2.6.32.48/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500
74056 -+++ linux-2.6.32.48/grsecurity/grsec_fork.c 2011-11-12 12:46:47.000000000 -0500
74057 +diff -urNp linux-3.0.8/grsecurity/grsec_fork.c linux-3.0.8/grsecurity/grsec_fork.c
74058 +--- linux-3.0.8/grsecurity/grsec_fork.c 1969-12-31 19:00:00.000000000 -0500
74059 ++++ linux-3.0.8/grsecurity/grsec_fork.c 2011-08-23 21:48:14.000000000 -0400
74060 @@ -0,0 +1,23 @@
74061 +#include <linux/kernel.h>
74062 +#include <linux/sched.h>
74063 @@ -57439,14 +54184,13 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_fork.c linux-2.6.32.48/grsecurity/gr
74064 +#endif
74065 + return;
74066 +}
74067 -diff -urNp linux-2.6.32.48/grsecurity/grsec_init.c linux-2.6.32.48/grsecurity/grsec_init.c
74068 ---- linux-2.6.32.48/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500
74069 -+++ linux-2.6.32.48/grsecurity/grsec_init.c 2011-11-12 12:46:47.000000000 -0500
74070 -@@ -0,0 +1,270 @@
74071 +diff -urNp linux-3.0.8/grsecurity/grsec_init.c linux-3.0.8/grsecurity/grsec_init.c
74072 +--- linux-3.0.8/grsecurity/grsec_init.c 1969-12-31 19:00:00.000000000 -0500
74073 ++++ linux-3.0.8/grsecurity/grsec_init.c 2011-08-25 17:25:12.000000000 -0400
74074 +@@ -0,0 +1,269 @@
74075 +#include <linux/kernel.h>
74076 +#include <linux/sched.h>
74077 +#include <linux/mm.h>
74078 -+#include <linux/smp_lock.h>
74079 +#include <linux/gracl.h>
74080 +#include <linux/slab.h>
74081 +#include <linux/vmalloc.h>
74082 @@ -57713,9 +54457,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_init.c linux-2.6.32.48/grsecurity/gr
74083 +
74084 + return;
74085 +}
74086 -diff -urNp linux-2.6.32.48/grsecurity/grsec_link.c linux-2.6.32.48/grsecurity/grsec_link.c
74087 ---- linux-2.6.32.48/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500
74088 -+++ linux-2.6.32.48/grsecurity/grsec_link.c 2011-11-12 12:46:47.000000000 -0500
74089 +diff -urNp linux-3.0.8/grsecurity/grsec_link.c linux-3.0.8/grsecurity/grsec_link.c
74090 +--- linux-3.0.8/grsecurity/grsec_link.c 1969-12-31 19:00:00.000000000 -0500
74091 ++++ linux-3.0.8/grsecurity/grsec_link.c 2011-08-23 21:48:14.000000000 -0400
74092 @@ -0,0 +1,43 @@
74093 +#include <linux/kernel.h>
74094 +#include <linux/sched.h>
74095 @@ -57760,9 +54504,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_link.c linux-2.6.32.48/grsecurity/gr
74096 +#endif
74097 + return 0;
74098 +}
74099 -diff -urNp linux-2.6.32.48/grsecurity/grsec_log.c linux-2.6.32.48/grsecurity/grsec_log.c
74100 ---- linux-2.6.32.48/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500
74101 -+++ linux-2.6.32.48/grsecurity/grsec_log.c 2011-11-12 12:46:47.000000000 -0500
74102 +diff -urNp linux-3.0.8/grsecurity/grsec_log.c linux-3.0.8/grsecurity/grsec_log.c
74103 +--- linux-3.0.8/grsecurity/grsec_log.c 1969-12-31 19:00:00.000000000 -0500
74104 ++++ linux-3.0.8/grsecurity/grsec_log.c 2011-09-26 10:46:21.000000000 -0400
74105 @@ -0,0 +1,315 @@
74106 +#include <linux/kernel.h>
74107 +#include <linux/sched.h>
74108 @@ -58079,9 +54823,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_log.c linux-2.6.32.48/grsecurity/grs
74109 + gr_log_end(audit);
74110 + END_LOCKS(audit);
74111 +}
74112 -diff -urNp linux-2.6.32.48/grsecurity/grsec_mem.c linux-2.6.32.48/grsecurity/grsec_mem.c
74113 ---- linux-2.6.32.48/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500
74114 -+++ linux-2.6.32.48/grsecurity/grsec_mem.c 2011-11-12 12:46:47.000000000 -0500
74115 +diff -urNp linux-3.0.8/grsecurity/grsec_mem.c linux-3.0.8/grsecurity/grsec_mem.c
74116 +--- linux-3.0.8/grsecurity/grsec_mem.c 1969-12-31 19:00:00.000000000 -0500
74117 ++++ linux-3.0.8/grsecurity/grsec_mem.c 2011-08-23 21:48:14.000000000 -0400
74118 @@ -0,0 +1,33 @@
74119 +#include <linux/kernel.h>
74120 +#include <linux/sched.h>
74121 @@ -58116,9 +54860,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_mem.c linux-2.6.32.48/grsecurity/grs
74122 + gr_log_noargs(GR_DONT_AUDIT, GR_VM86_MSG);
74123 + return;
74124 +}
74125 -diff -urNp linux-2.6.32.48/grsecurity/grsec_mount.c linux-2.6.32.48/grsecurity/grsec_mount.c
74126 ---- linux-2.6.32.48/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500
74127 -+++ linux-2.6.32.48/grsecurity/grsec_mount.c 2011-11-12 12:46:47.000000000 -0500
74128 +diff -urNp linux-3.0.8/grsecurity/grsec_mount.c linux-3.0.8/grsecurity/grsec_mount.c
74129 +--- linux-3.0.8/grsecurity/grsec_mount.c 1969-12-31 19:00:00.000000000 -0500
74130 ++++ linux-3.0.8/grsecurity/grsec_mount.c 2011-08-23 21:48:14.000000000 -0400
74131 @@ -0,0 +1,62 @@
74132 +#include <linux/kernel.h>
74133 +#include <linux/sched.h>
74134 @@ -58182,9 +54926,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_mount.c linux-2.6.32.48/grsecurity/g
74135 +#endif
74136 + return 0;
74137 +}
74138 -diff -urNp linux-2.6.32.48/grsecurity/grsec_pax.c linux-2.6.32.48/grsecurity/grsec_pax.c
74139 ---- linux-2.6.32.48/grsecurity/grsec_pax.c 1969-12-31 19:00:00.000000000 -0500
74140 -+++ linux-2.6.32.48/grsecurity/grsec_pax.c 2011-11-12 12:46:47.000000000 -0500
74141 +diff -urNp linux-3.0.8/grsecurity/grsec_pax.c linux-3.0.8/grsecurity/grsec_pax.c
74142 +--- linux-3.0.8/grsecurity/grsec_pax.c 1969-12-31 19:00:00.000000000 -0500
74143 ++++ linux-3.0.8/grsecurity/grsec_pax.c 2011-08-23 21:48:14.000000000 -0400
74144 @@ -0,0 +1,36 @@
74145 +#include <linux/kernel.h>
74146 +#include <linux/sched.h>
74147 @@ -58222,9 +54966,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_pax.c linux-2.6.32.48/grsecurity/grs
74148 +#endif
74149 + return;
74150 +}
74151 -diff -urNp linux-2.6.32.48/grsecurity/grsec_ptrace.c linux-2.6.32.48/grsecurity/grsec_ptrace.c
74152 ---- linux-2.6.32.48/grsecurity/grsec_ptrace.c 1969-12-31 19:00:00.000000000 -0500
74153 -+++ linux-2.6.32.48/grsecurity/grsec_ptrace.c 2011-11-12 12:46:47.000000000 -0500
74154 +diff -urNp linux-3.0.8/grsecurity/grsec_ptrace.c linux-3.0.8/grsecurity/grsec_ptrace.c
74155 +--- linux-3.0.8/grsecurity/grsec_ptrace.c 1969-12-31 19:00:00.000000000 -0500
74156 ++++ linux-3.0.8/grsecurity/grsec_ptrace.c 2011-08-23 21:48:14.000000000 -0400
74157 @@ -0,0 +1,14 @@
74158 +#include <linux/kernel.h>
74159 +#include <linux/sched.h>
74160 @@ -58240,10 +54984,10 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_ptrace.c linux-2.6.32.48/grsecurity/
74161 +#endif
74162 + return;
74163 +}
74164 -diff -urNp linux-2.6.32.48/grsecurity/grsec_sig.c linux-2.6.32.48/grsecurity/grsec_sig.c
74165 ---- linux-2.6.32.48/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500
74166 -+++ linux-2.6.32.48/grsecurity/grsec_sig.c 2011-11-12 12:46:47.000000000 -0500
74167 -@@ -0,0 +1,205 @@
74168 +diff -urNp linux-3.0.8/grsecurity/grsec_sig.c linux-3.0.8/grsecurity/grsec_sig.c
74169 +--- linux-3.0.8/grsecurity/grsec_sig.c 1969-12-31 19:00:00.000000000 -0500
74170 ++++ linux-3.0.8/grsecurity/grsec_sig.c 2011-08-23 21:48:14.000000000 -0400
74171 +@@ -0,0 +1,206 @@
74172 +#include <linux/kernel.h>
74173 +#include <linux/sched.h>
74174 +#include <linux/delay.h>
74175 @@ -58375,6 +55119,7 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sig.c linux-2.6.32.48/grsecurity/grs
74176 +
74177 + if (uid)
74178 + printk(KERN_ALERT "grsec: bruteforce prevention initiated against uid %u, banning for %d minutes\n", uid, GR_USER_BAN_TIME / 60);
74179 ++
74180 +#endif
74181 + return;
74182 +}
74183 @@ -58422,7 +55167,7 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sig.c linux-2.6.32.48/grsecurity/grs
74184 + if (cred->uid == uid)
74185 + gr_fake_force_sig(SIGKILL, tsk);
74186 + } while_each_thread(tsk2, tsk);
74187 -+ read_unlock(&tasklist_lock);
74188 ++ read_unlock(&tasklist_lock);
74189 + }
74190 +#endif
74191 +}
74192 @@ -58449,10 +55194,10 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sig.c linux-2.6.32.48/grsecurity/grs
74193 +#endif
74194 + return 0;
74195 +}
74196 -diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/grsec_sock.c
74197 ---- linux-2.6.32.48/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500
74198 -+++ linux-2.6.32.48/grsecurity/grsec_sock.c 2011-11-12 12:46:47.000000000 -0500
74199 -@@ -0,0 +1,275 @@
74200 +diff -urNp linux-3.0.8/grsecurity/grsec_sock.c linux-3.0.8/grsecurity/grsec_sock.c
74201 +--- linux-3.0.8/grsecurity/grsec_sock.c 1969-12-31 19:00:00.000000000 -0500
74202 ++++ linux-3.0.8/grsecurity/grsec_sock.c 2011-08-23 21:48:14.000000000 -0400
74203 +@@ -0,0 +1,244 @@
74204 +#include <linux/kernel.h>
74205 +#include <linux/module.h>
74206 +#include <linux/sched.h>
74207 @@ -58466,9 +55211,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/gr
74208 +#include <linux/grinternal.h>
74209 +#include <linux/gracl.h>
74210 +
74211 -+kernel_cap_t gr_cap_rtnetlink(struct sock *sock);
74212 -+EXPORT_SYMBOL(gr_cap_rtnetlink);
74213 -+
74214 +extern int gr_search_udp_recvmsg(const struct sock *sk, const struct sk_buff *skb);
74215 +extern int gr_search_udp_sendmsg(const struct sock *sk, const struct sockaddr_in *addr);
74216 +
74217 @@ -58591,10 +55333,10 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/gr
74218 + /* no bh lock needed since we are called with bh disabled */
74219 + spin_lock(&gr_conn_table_lock);
74220 + gr_del_task_from_ip_table_nolock(sig);
74221 -+ sig->gr_saddr = inet->rcv_saddr;
74222 -+ sig->gr_daddr = inet->daddr;
74223 -+ sig->gr_sport = inet->sport;
74224 -+ sig->gr_dport = inet->dport;
74225 ++ sig->gr_saddr = inet->inet_rcv_saddr;
74226 ++ sig->gr_daddr = inet->inet_daddr;
74227 ++ sig->gr_sport = inet->inet_sport;
74228 ++ sig->gr_dport = inet->inet_dport;
74229 + gr_add_to_task_ip_table_nolock(sig, newent);
74230 + spin_unlock(&gr_conn_table_lock);
74231 +#endif
74232 @@ -58624,8 +55366,8 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/gr
74233 + set = current->signal;
74234 +
74235 + spin_lock_bh(&gr_conn_table_lock);
74236 -+ p = gr_lookup_task_ip_table(inet->daddr, inet->rcv_saddr,
74237 -+ inet->dport, inet->sport);
74238 ++ p = gr_lookup_task_ip_table(inet->inet_daddr, inet->inet_rcv_saddr,
74239 ++ inet->inet_dport, inet->inet_sport);
74240 + if (unlikely(p != NULL)) {
74241 + set->curr_ip = p->curr_ip;
74242 + set->used_accept = 1;
74243 @@ -58635,7 +55377,7 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/gr
74244 + }
74245 + spin_unlock_bh(&gr_conn_table_lock);
74246 +
74247 -+ set->curr_ip = inet->daddr;
74248 ++ set->curr_ip = inet->inet_daddr;
74249 + set->used_accept = 1;
74250 +#endif
74251 + return;
74252 @@ -58700,38 +55442,10 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sock.c linux-2.6.32.48/grsecurity/gr
74253 +#endif
74254 + return 0;
74255 +}
74256 -+
74257 -+kernel_cap_t
74258 -+gr_cap_rtnetlink(struct sock *sock)
74259 -+{
74260 -+#ifdef CONFIG_GRKERNSEC
74261 -+ if (!gr_acl_is_enabled())
74262 -+ return current_cap();
74263 -+ else if (sock->sk_protocol == NETLINK_ISCSI &&
74264 -+ cap_raised(current_cap(), CAP_SYS_ADMIN) &&
74265 -+ gr_is_capable(CAP_SYS_ADMIN))
74266 -+ return current_cap();
74267 -+ else if (sock->sk_protocol == NETLINK_AUDIT &&
74268 -+ cap_raised(current_cap(), CAP_AUDIT_WRITE) &&
74269 -+ gr_is_capable(CAP_AUDIT_WRITE) &&
74270 -+ cap_raised(current_cap(), CAP_AUDIT_CONTROL) &&
74271 -+ gr_is_capable(CAP_AUDIT_CONTROL))
74272 -+ return current_cap();
74273 -+ else if (cap_raised(current_cap(), CAP_NET_ADMIN) &&
74274 -+ ((sock->sk_protocol == NETLINK_ROUTE) ?
74275 -+ gr_is_capable_nolog(CAP_NET_ADMIN) :
74276 -+ gr_is_capable(CAP_NET_ADMIN)))
74277 -+ return current_cap();
74278 -+ else
74279 -+ return __cap_empty_set;
74280 -+#else
74281 -+ return current_cap();
74282 -+#endif
74283 -+}
74284 -diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/grsec_sysctl.c
74285 ---- linux-2.6.32.48/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500
74286 -+++ linux-2.6.32.48/grsecurity/grsec_sysctl.c 2011-11-12 12:46:47.000000000 -0500
74287 -@@ -0,0 +1,479 @@
74288 +diff -urNp linux-3.0.8/grsecurity/grsec_sysctl.c linux-3.0.8/grsecurity/grsec_sysctl.c
74289 +--- linux-3.0.8/grsecurity/grsec_sysctl.c 1969-12-31 19:00:00.000000000 -0500
74290 ++++ linux-3.0.8/grsecurity/grsec_sysctl.c 2011-08-25 17:26:15.000000000 -0400
74291 +@@ -0,0 +1,433 @@
74292 +#include <linux/kernel.h>
74293 +#include <linux/sched.h>
74294 +#include <linux/sysctl.h>
74295 @@ -58755,12 +55469,11 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74296 +#endif
74297 +
74298 +#if defined(CONFIG_GRKERNSEC_SYSCTL) || defined(CONFIG_GRKERNSEC_ROFS)
74299 -+ctl_table grsecurity_table[] = {
74300 ++struct ctl_table grsecurity_table[] = {
74301 +#ifdef CONFIG_GRKERNSEC_SYSCTL
74302 +#ifdef CONFIG_GRKERNSEC_SYSCTL_DISTRO
74303 +#ifdef CONFIG_GRKERNSEC_IO
74304 + {
74305 -+ .ctl_name = CTL_UNNUMBERED,
74306 + .procname = "disable_priv_io",
74307 + .data = &grsec_disable_privio,
74308 + .maxlen = sizeof(int),
74309 @@ -58771,7 +55484,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74310 +#endif
74311 +#ifdef CONFIG_GRKERNSEC_LINK
74312 + {
74313 -+ .ctl_name = CTL_UNNUMBERED,
74314 + .procname = "linking_restrictions",
74315 + .data = &grsec_enable_link,
74316 + .maxlen = sizeof(int),
74317 @@ -58781,7 +55493,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74318 +#endif
74319 +#ifdef CONFIG_GRKERNSEC_BRUTE
74320 + {
74321 -+ .ctl_name = CTL_UNNUMBERED,
74322 + .procname = "deter_bruteforce",
74323 + .data = &grsec_enable_brute,
74324 + .maxlen = sizeof(int),
74325 @@ -58791,7 +55502,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74326 +#endif
74327 +#ifdef CONFIG_GRKERNSEC_FIFO
74328 + {
74329 -+ .ctl_name = CTL_UNNUMBERED,
74330 + .procname = "fifo_restrictions",
74331 + .data = &grsec_enable_fifo,
74332 + .maxlen = sizeof(int),
74333 @@ -58801,7 +55511,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74334 +#endif
74335 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
74336 + {
74337 -+ .ctl_name = CTL_UNNUMBERED,
74338 + .procname = "ip_blackhole",
74339 + .data = &grsec_enable_blackhole,
74340 + .maxlen = sizeof(int),
74341 @@ -58809,7 +55518,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74342 + .proc_handler = &proc_dointvec,
74343 + },
74344 + {
74345 -+ .ctl_name = CTL_UNNUMBERED,
74346 + .procname = "lastack_retries",
74347 + .data = &grsec_lastack_retries,
74348 + .maxlen = sizeof(int),
74349 @@ -58819,7 +55527,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74350 +#endif
74351 +#ifdef CONFIG_GRKERNSEC_EXECLOG
74352 + {
74353 -+ .ctl_name = CTL_UNNUMBERED,
74354 + .procname = "exec_logging",
74355 + .data = &grsec_enable_execlog,
74356 + .maxlen = sizeof(int),
74357 @@ -58829,7 +55536,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74358 +#endif
74359 +#ifdef CONFIG_GRKERNSEC_RWXMAP_LOG
74360 + {
74361 -+ .ctl_name = CTL_UNNUMBERED,
74362 + .procname = "rwxmap_logging",
74363 + .data = &grsec_enable_log_rwxmaps,
74364 + .maxlen = sizeof(int),
74365 @@ -58839,7 +55545,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74366 +#endif
74367 +#ifdef CONFIG_GRKERNSEC_SIGNAL
74368 + {
74369 -+ .ctl_name = CTL_UNNUMBERED,
74370 + .procname = "signal_logging",
74371 + .data = &grsec_enable_signal,
74372 + .maxlen = sizeof(int),
74373 @@ -58849,7 +55554,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74374 +#endif
74375 +#ifdef CONFIG_GRKERNSEC_FORKFAIL
74376 + {
74377 -+ .ctl_name = CTL_UNNUMBERED,
74378 + .procname = "forkfail_logging",
74379 + .data = &grsec_enable_forkfail,
74380 + .maxlen = sizeof(int),
74381 @@ -58859,7 +55563,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74382 +#endif
74383 +#ifdef CONFIG_GRKERNSEC_TIME
74384 + {
74385 -+ .ctl_name = CTL_UNNUMBERED,
74386 + .procname = "timechange_logging",
74387 + .data = &grsec_enable_time,
74388 + .maxlen = sizeof(int),
74389 @@ -58869,7 +55572,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74390 +#endif
74391 +#ifdef CONFIG_GRKERNSEC_CHROOT_SHMAT
74392 + {
74393 -+ .ctl_name = CTL_UNNUMBERED,
74394 + .procname = "chroot_deny_shmat",
74395 + .data = &grsec_enable_chroot_shmat,
74396 + .maxlen = sizeof(int),
74397 @@ -58879,7 +55581,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74398 +#endif
74399 +#ifdef CONFIG_GRKERNSEC_CHROOT_UNIX
74400 + {
74401 -+ .ctl_name = CTL_UNNUMBERED,
74402 + .procname = "chroot_deny_unix",
74403 + .data = &grsec_enable_chroot_unix,
74404 + .maxlen = sizeof(int),
74405 @@ -58889,7 +55590,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74406 +#endif
74407 +#ifdef CONFIG_GRKERNSEC_CHROOT_MOUNT
74408 + {
74409 -+ .ctl_name = CTL_UNNUMBERED,
74410 + .procname = "chroot_deny_mount",
74411 + .data = &grsec_enable_chroot_mount,
74412 + .maxlen = sizeof(int),
74413 @@ -58899,7 +55599,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74414 +#endif
74415 +#ifdef CONFIG_GRKERNSEC_CHROOT_FCHDIR
74416 + {
74417 -+ .ctl_name = CTL_UNNUMBERED,
74418 + .procname = "chroot_deny_fchdir",
74419 + .data = &grsec_enable_chroot_fchdir,
74420 + .maxlen = sizeof(int),
74421 @@ -58909,7 +55608,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74422 +#endif
74423 +#ifdef CONFIG_GRKERNSEC_CHROOT_DOUBLE
74424 + {
74425 -+ .ctl_name = CTL_UNNUMBERED,
74426 + .procname = "chroot_deny_chroot",
74427 + .data = &grsec_enable_chroot_double,
74428 + .maxlen = sizeof(int),
74429 @@ -58919,7 +55617,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74430 +#endif
74431 +#ifdef CONFIG_GRKERNSEC_CHROOT_PIVOT
74432 + {
74433 -+ .ctl_name = CTL_UNNUMBERED,
74434 + .procname = "chroot_deny_pivot",
74435 + .data = &grsec_enable_chroot_pivot,
74436 + .maxlen = sizeof(int),
74437 @@ -58929,7 +55626,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74438 +#endif
74439 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHDIR
74440 + {
74441 -+ .ctl_name = CTL_UNNUMBERED,
74442 + .procname = "chroot_enforce_chdir",
74443 + .data = &grsec_enable_chroot_chdir,
74444 + .maxlen = sizeof(int),
74445 @@ -58939,7 +55635,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74446 +#endif
74447 +#ifdef CONFIG_GRKERNSEC_CHROOT_CHMOD
74448 + {
74449 -+ .ctl_name = CTL_UNNUMBERED,
74450 + .procname = "chroot_deny_chmod",
74451 + .data = &grsec_enable_chroot_chmod,
74452 + .maxlen = sizeof(int),
74453 @@ -58949,7 +55644,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74454 +#endif
74455 +#ifdef CONFIG_GRKERNSEC_CHROOT_MKNOD
74456 + {
74457 -+ .ctl_name = CTL_UNNUMBERED,
74458 + .procname = "chroot_deny_mknod",
74459 + .data = &grsec_enable_chroot_mknod,
74460 + .maxlen = sizeof(int),
74461 @@ -58959,7 +55653,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74462 +#endif
74463 +#ifdef CONFIG_GRKERNSEC_CHROOT_NICE
74464 + {
74465 -+ .ctl_name = CTL_UNNUMBERED,
74466 + .procname = "chroot_restrict_nice",
74467 + .data = &grsec_enable_chroot_nice,
74468 + .maxlen = sizeof(int),
74469 @@ -58969,7 +55662,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74470 +#endif
74471 +#ifdef CONFIG_GRKERNSEC_CHROOT_EXECLOG
74472 + {
74473 -+ .ctl_name = CTL_UNNUMBERED,
74474 + .procname = "chroot_execlog",
74475 + .data = &grsec_enable_chroot_execlog,
74476 + .maxlen = sizeof(int),
74477 @@ -58979,7 +55671,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74478 +#endif
74479 +#ifdef CONFIG_GRKERNSEC_CHROOT_CAPS
74480 + {
74481 -+ .ctl_name = CTL_UNNUMBERED,
74482 + .procname = "chroot_caps",
74483 + .data = &grsec_enable_chroot_caps,
74484 + .maxlen = sizeof(int),
74485 @@ -58989,7 +55680,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74486 +#endif
74487 +#ifdef CONFIG_GRKERNSEC_CHROOT_SYSCTL
74488 + {
74489 -+ .ctl_name = CTL_UNNUMBERED,
74490 + .procname = "chroot_deny_sysctl",
74491 + .data = &grsec_enable_chroot_sysctl,
74492 + .maxlen = sizeof(int),
74493 @@ -58999,7 +55689,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74494 +#endif
74495 +#ifdef CONFIG_GRKERNSEC_TPE
74496 + {
74497 -+ .ctl_name = CTL_UNNUMBERED,
74498 + .procname = "tpe",
74499 + .data = &grsec_enable_tpe,
74500 + .maxlen = sizeof(int),
74501 @@ -59007,7 +55696,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74502 + .proc_handler = &proc_dointvec,
74503 + },
74504 + {
74505 -+ .ctl_name = CTL_UNNUMBERED,
74506 + .procname = "tpe_gid",
74507 + .data = &grsec_tpe_gid,
74508 + .maxlen = sizeof(int),
74509 @@ -59017,7 +55705,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74510 +#endif
74511 +#ifdef CONFIG_GRKERNSEC_TPE_INVERT
74512 + {
74513 -+ .ctl_name = CTL_UNNUMBERED,
74514 + .procname = "tpe_invert",
74515 + .data = &grsec_enable_tpe_invert,
74516 + .maxlen = sizeof(int),
74517 @@ -59027,7 +55714,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74518 +#endif
74519 +#ifdef CONFIG_GRKERNSEC_TPE_ALL
74520 + {
74521 -+ .ctl_name = CTL_UNNUMBERED,
74522 + .procname = "tpe_restrict_all",
74523 + .data = &grsec_enable_tpe_all,
74524 + .maxlen = sizeof(int),
74525 @@ -59037,7 +55723,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74526 +#endif
74527 +#ifdef CONFIG_GRKERNSEC_SOCKET_ALL
74528 + {
74529 -+ .ctl_name = CTL_UNNUMBERED,
74530 + .procname = "socket_all",
74531 + .data = &grsec_enable_socket_all,
74532 + .maxlen = sizeof(int),
74533 @@ -59045,7 +55730,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74534 + .proc_handler = &proc_dointvec,
74535 + },
74536 + {
74537 -+ .ctl_name = CTL_UNNUMBERED,
74538 + .procname = "socket_all_gid",
74539 + .data = &grsec_socket_all_gid,
74540 + .maxlen = sizeof(int),
74541 @@ -59055,7 +55739,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74542 +#endif
74543 +#ifdef CONFIG_GRKERNSEC_SOCKET_CLIENT
74544 + {
74545 -+ .ctl_name = CTL_UNNUMBERED,
74546 + .procname = "socket_client",
74547 + .data = &grsec_enable_socket_client,
74548 + .maxlen = sizeof(int),
74549 @@ -59063,7 +55746,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74550 + .proc_handler = &proc_dointvec,
74551 + },
74552 + {
74553 -+ .ctl_name = CTL_UNNUMBERED,
74554 + .procname = "socket_client_gid",
74555 + .data = &grsec_socket_client_gid,
74556 + .maxlen = sizeof(int),
74557 @@ -59073,7 +55755,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74558 +#endif
74559 +#ifdef CONFIG_GRKERNSEC_SOCKET_SERVER
74560 + {
74561 -+ .ctl_name = CTL_UNNUMBERED,
74562 + .procname = "socket_server",
74563 + .data = &grsec_enable_socket_server,
74564 + .maxlen = sizeof(int),
74565 @@ -59081,7 +55762,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74566 + .proc_handler = &proc_dointvec,
74567 + },
74568 + {
74569 -+ .ctl_name = CTL_UNNUMBERED,
74570 + .procname = "socket_server_gid",
74571 + .data = &grsec_socket_server_gid,
74572 + .maxlen = sizeof(int),
74573 @@ -59091,7 +55771,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74574 +#endif
74575 +#ifdef CONFIG_GRKERNSEC_AUDIT_GROUP
74576 + {
74577 -+ .ctl_name = CTL_UNNUMBERED,
74578 + .procname = "audit_group",
74579 + .data = &grsec_enable_group,
74580 + .maxlen = sizeof(int),
74581 @@ -59099,7 +55778,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74582 + .proc_handler = &proc_dointvec,
74583 + },
74584 + {
74585 -+ .ctl_name = CTL_UNNUMBERED,
74586 + .procname = "audit_gid",
74587 + .data = &grsec_audit_gid,
74588 + .maxlen = sizeof(int),
74589 @@ -59109,7 +55787,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74590 +#endif
74591 +#ifdef CONFIG_GRKERNSEC_AUDIT_CHDIR
74592 + {
74593 -+ .ctl_name = CTL_UNNUMBERED,
74594 + .procname = "audit_chdir",
74595 + .data = &grsec_enable_chdir,
74596 + .maxlen = sizeof(int),
74597 @@ -59119,7 +55796,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74598 +#endif
74599 +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT
74600 + {
74601 -+ .ctl_name = CTL_UNNUMBERED,
74602 + .procname = "audit_mount",
74603 + .data = &grsec_enable_mount,
74604 + .maxlen = sizeof(int),
74605 @@ -59129,7 +55805,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74606 +#endif
74607 +#ifdef CONFIG_GRKERNSEC_AUDIT_TEXTREL
74608 + {
74609 -+ .ctl_name = CTL_UNNUMBERED,
74610 + .procname = "audit_textrel",
74611 + .data = &grsec_enable_audit_textrel,
74612 + .maxlen = sizeof(int),
74613 @@ -59139,7 +55814,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74614 +#endif
74615 +#ifdef CONFIG_GRKERNSEC_DMESG
74616 + {
74617 -+ .ctl_name = CTL_UNNUMBERED,
74618 + .procname = "dmesg",
74619 + .data = &grsec_enable_dmesg,
74620 + .maxlen = sizeof(int),
74621 @@ -59149,7 +55823,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74622 +#endif
74623 +#ifdef CONFIG_GRKERNSEC_CHROOT_FINDTASK
74624 + {
74625 -+ .ctl_name = CTL_UNNUMBERED,
74626 + .procname = "chroot_findtask",
74627 + .data = &grsec_enable_chroot_findtask,
74628 + .maxlen = sizeof(int),
74629 @@ -59159,7 +55832,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74630 +#endif
74631 +#ifdef CONFIG_GRKERNSEC_RESLOG
74632 + {
74633 -+ .ctl_name = CTL_UNNUMBERED,
74634 + .procname = "resource_logging",
74635 + .data = &grsec_resource_logging,
74636 + .maxlen = sizeof(int),
74637 @@ -59169,7 +55841,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74638 +#endif
74639 +#ifdef CONFIG_GRKERNSEC_AUDIT_PTRACE
74640 + {
74641 -+ .ctl_name = CTL_UNNUMBERED,
74642 + .procname = "audit_ptrace",
74643 + .data = &grsec_enable_audit_ptrace,
74644 + .maxlen = sizeof(int),
74645 @@ -59179,7 +55850,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74646 +#endif
74647 +#ifdef CONFIG_GRKERNSEC_HARDEN_PTRACE
74648 + {
74649 -+ .ctl_name = CTL_UNNUMBERED,
74650 + .procname = "harden_ptrace",
74651 + .data = &grsec_enable_harden_ptrace,
74652 + .maxlen = sizeof(int),
74653 @@ -59188,7 +55858,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74654 + },
74655 +#endif
74656 + {
74657 -+ .ctl_name = CTL_UNNUMBERED,
74658 + .procname = "grsec_lock",
74659 + .data = &grsec_lock,
74660 + .maxlen = sizeof(int),
74661 @@ -59198,7 +55867,6 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74662 +#endif
74663 +#ifdef CONFIG_GRKERNSEC_ROFS
74664 + {
74665 -+ .ctl_name = CTL_UNNUMBERED,
74666 + .procname = "romount_protect",
74667 + .data = &grsec_enable_rofs,
74668 + .maxlen = sizeof(int),
74669 @@ -59208,12 +55876,12 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_sysctl.c linux-2.6.32.48/grsecurity/
74670 + .extra2 = &one,
74671 + },
74672 +#endif
74673 -+ { .ctl_name = 0 }
74674 ++ { }
74675 +};
74676 +#endif
74677 -diff -urNp linux-2.6.32.48/grsecurity/grsec_time.c linux-2.6.32.48/grsecurity/grsec_time.c
74678 ---- linux-2.6.32.48/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500
74679 -+++ linux-2.6.32.48/grsecurity/grsec_time.c 2011-11-12 12:46:47.000000000 -0500
74680 +diff -urNp linux-3.0.8/grsecurity/grsec_time.c linux-3.0.8/grsecurity/grsec_time.c
74681 +--- linux-3.0.8/grsecurity/grsec_time.c 1969-12-31 19:00:00.000000000 -0500
74682 ++++ linux-3.0.8/grsecurity/grsec_time.c 2011-08-23 21:48:14.000000000 -0400
74683 @@ -0,0 +1,16 @@
74684 +#include <linux/kernel.h>
74685 +#include <linux/sched.h>
74686 @@ -59231,9 +55899,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_time.c linux-2.6.32.48/grsecurity/gr
74687 +}
74688 +
74689 +EXPORT_SYMBOL(gr_log_timechange);
74690 -diff -urNp linux-2.6.32.48/grsecurity/grsec_tpe.c linux-2.6.32.48/grsecurity/grsec_tpe.c
74691 ---- linux-2.6.32.48/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500
74692 -+++ linux-2.6.32.48/grsecurity/grsec_tpe.c 2011-11-12 12:46:47.000000000 -0500
74693 +diff -urNp linux-3.0.8/grsecurity/grsec_tpe.c linux-3.0.8/grsecurity/grsec_tpe.c
74694 +--- linux-3.0.8/grsecurity/grsec_tpe.c 1969-12-31 19:00:00.000000000 -0500
74695 ++++ linux-3.0.8/grsecurity/grsec_tpe.c 2011-08-23 21:48:14.000000000 -0400
74696 @@ -0,0 +1,39 @@
74697 +#include <linux/kernel.h>
74698 +#include <linux/sched.h>
74699 @@ -59274,9 +55942,9 @@ diff -urNp linux-2.6.32.48/grsecurity/grsec_tpe.c linux-2.6.32.48/grsecurity/grs
74700 +#endif
74701 + return 1;
74702 +}
74703 -diff -urNp linux-2.6.32.48/grsecurity/grsum.c linux-2.6.32.48/grsecurity/grsum.c
74704 ---- linux-2.6.32.48/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500
74705 -+++ linux-2.6.32.48/grsecurity/grsum.c 2011-11-12 12:46:47.000000000 -0500
74706 +diff -urNp linux-3.0.8/grsecurity/grsum.c linux-3.0.8/grsecurity/grsum.c
74707 +--- linux-3.0.8/grsecurity/grsum.c 1969-12-31 19:00:00.000000000 -0500
74708 ++++ linux-3.0.8/grsecurity/grsum.c 2011-08-23 21:48:14.000000000 -0400
74709 @@ -0,0 +1,61 @@
74710 +#include <linux/err.h>
74711 +#include <linux/kernel.h>
74712 @@ -59339,10 +56007,10 @@ diff -urNp linux-2.6.32.48/grsecurity/grsum.c linux-2.6.32.48/grsecurity/grsum.c
74713 +
74714 + return retval;
74715 +}
74716 -diff -urNp linux-2.6.32.48/grsecurity/Kconfig linux-2.6.32.48/grsecurity/Kconfig
74717 ---- linux-2.6.32.48/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500
74718 -+++ linux-2.6.32.48/grsecurity/Kconfig 2011-11-12 12:46:47.000000000 -0500
74719 -@@ -0,0 +1,1037 @@
74720 +diff -urNp linux-3.0.8/grsecurity/Kconfig linux-3.0.8/grsecurity/Kconfig
74721 +--- linux-3.0.8/grsecurity/Kconfig 1969-12-31 19:00:00.000000000 -0500
74722 ++++ linux-3.0.8/grsecurity/Kconfig 2011-09-15 00:00:57.000000000 -0400
74723 +@@ -0,0 +1,1038 @@
74724 +#
74725 +# grecurity configuration
74726 +#
74727 @@ -59502,7 +56170,7 @@ diff -urNp linux-2.6.32.48/grsecurity/Kconfig linux-2.6.32.48/grsecurity/Kconfig
74728 + select PAX_ETEXECRELOCS if (ALPHA || IA64 || PARISC)
74729 + select PAX_ELFRELOCS if (PAX_ETEXECRELOCS || (IA64 || PPC || X86))
74730 + select PAX_REFCOUNT if (X86 || SPARC64)
74731 -+ select PAX_USERCOPY if ((X86 || SPARC || PPC || ARM) && (SLAB || SLUB || SLOB))
74732 ++ select PAX_USERCOPY if ((X86 || PPC || SPARC || ARM) && (SLAB || SLUB || SLOB))
74733 + help
74734 + If you say Y here, many of the features of grsecurity will be
74735 + enabled, which will protect you against many kinds of attacks
74736 @@ -59635,6 +56303,7 @@ diff -urNp linux-2.6.32.48/grsecurity/Kconfig linux-2.6.32.48/grsecurity/Kconfig
74737 + If the sysctl option is enabled, a sysctl option with name
74738 + "deter_bruteforce" is created.
74739 +
74740 ++
74741 +config GRKERNSEC_MODHARDEN
74742 + bool "Harden module auto-loading"
74743 + depends on MODULES
74744 @@ -59769,10 +56438,10 @@ diff -urNp linux-2.6.32.48/grsecurity/Kconfig linux-2.6.32.48/grsecurity/Kconfig
74745 + depends on GRKERNSEC_PROC && !GRKERNSEC_PROC_USER
74746 + help
74747 + If you say Y here, you will be able to select a group that will be
74748 -+ able to view all processes and network-related information. If you've
74749 -+ enabled GRKERNSEC_HIDESYM, kernel and symbol information may still
74750 -+ remain hidden. This option is useful if you want to run identd as
74751 -+ a non-root user.
74752 ++ able to view all processes and network-related information. If you've
74753 ++ enabled GRKERNSEC_HIDESYM, kernel and symbol information may still
74754 ++ remain hidden. This option is useful if you want to run identd as
74755 ++ a non-root user.
74756 +
74757 +config GRKERNSEC_PROC_GID
74758 + int "GID for special group"
74759 @@ -60380,9 +57049,9 @@ diff -urNp linux-2.6.32.48/grsecurity/Kconfig linux-2.6.32.48/grsecurity/Kconfig
74760 +endmenu
74761 +
74762 +endmenu
74763 -diff -urNp linux-2.6.32.48/grsecurity/Makefile linux-2.6.32.48/grsecurity/Makefile
74764 ---- linux-2.6.32.48/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500
74765 -+++ linux-2.6.32.48/grsecurity/Makefile 2011-11-12 12:46:47.000000000 -0500
74766 +diff -urNp linux-3.0.8/grsecurity/Makefile linux-3.0.8/grsecurity/Makefile
74767 +--- linux-3.0.8/grsecurity/Makefile 1969-12-31 19:00:00.000000000 -0500
74768 ++++ linux-3.0.8/grsecurity/Makefile 2011-10-17 06:45:43.000000000 -0400
74769 @@ -0,0 +1,36 @@
74770 +# grsecurity's ACL system was originally written in 2001 by Michael Dalton
74771 +# during 2001-2009 it has been completely redesigned by Brad Spengler
74772 @@ -60420,9 +57089,9 @@ diff -urNp linux-2.6.32.48/grsecurity/Makefile linux-2.6.32.48/grsecurity/Makefi
74773 + @-chmod -f 700 .
74774 + @echo ' grsec: protected kernel image paths'
74775 +endif
74776 -diff -urNp linux-2.6.32.48/include/acpi/acpi_bus.h linux-2.6.32.48/include/acpi/acpi_bus.h
74777 ---- linux-2.6.32.48/include/acpi/acpi_bus.h 2009-12-02 22:51:21.000000000 -0500
74778 -+++ linux-2.6.32.48/include/acpi/acpi_bus.h 2011-11-12 12:46:47.000000000 -0500
74779 +diff -urNp linux-3.0.8/include/acpi/acpi_bus.h linux-3.0.8/include/acpi/acpi_bus.h
74780 +--- linux-3.0.8/include/acpi/acpi_bus.h 2011-07-21 22:17:23.000000000 -0400
74781 ++++ linux-3.0.8/include/acpi/acpi_bus.h 2011-08-23 21:47:56.000000000 -0400
74782 @@ -107,7 +107,7 @@ struct acpi_device_ops {
74783 acpi_op_bind bind;
74784 acpi_op_unbind unbind;
74785 @@ -60432,41 +57101,9 @@ diff -urNp linux-2.6.32.48/include/acpi/acpi_bus.h linux-2.6.32.48/include/acpi/
74786
74787 #define ACPI_DRIVER_ALL_NOTIFY_EVENTS 0x1 /* system AND device events */
74788
74789 -diff -urNp linux-2.6.32.48/include/acpi/acpi_drivers.h linux-2.6.32.48/include/acpi/acpi_drivers.h
74790 ---- linux-2.6.32.48/include/acpi/acpi_drivers.h 2009-12-02 22:51:21.000000000 -0500
74791 -+++ linux-2.6.32.48/include/acpi/acpi_drivers.h 2011-11-12 12:46:47.000000000 -0500
74792 -@@ -119,8 +119,8 @@ int acpi_processor_set_thermal_limit(acp
74793 - Dock Station
74794 - -------------------------------------------------------------------------- */
74795 - struct acpi_dock_ops {
74796 -- acpi_notify_handler handler;
74797 -- acpi_notify_handler uevent;
74798 -+ const acpi_notify_handler handler;
74799 -+ const acpi_notify_handler uevent;
74800 - };
74801 -
74802 - #if defined(CONFIG_ACPI_DOCK) || defined(CONFIG_ACPI_DOCK_MODULE)
74803 -@@ -128,7 +128,7 @@ extern int is_dock_device(acpi_handle ha
74804 - extern int register_dock_notifier(struct notifier_block *nb);
74805 - extern void unregister_dock_notifier(struct notifier_block *nb);
74806 - extern int register_hotplug_dock_device(acpi_handle handle,
74807 -- struct acpi_dock_ops *ops,
74808 -+ const struct acpi_dock_ops *ops,
74809 - void *context);
74810 - extern void unregister_hotplug_dock_device(acpi_handle handle);
74811 - #else
74812 -@@ -144,7 +144,7 @@ static inline void unregister_dock_notif
74813 - {
74814 - }
74815 - static inline int register_hotplug_dock_device(acpi_handle handle,
74816 -- struct acpi_dock_ops *ops,
74817 -+ const struct acpi_dock_ops *ops,
74818 - void *context)
74819 - {
74820 - return -ENODEV;
74821 -diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/include/asm-generic/atomic-long.h
74822 ---- linux-2.6.32.48/include/asm-generic/atomic-long.h 2009-12-02 22:51:21.000000000 -0500
74823 -+++ linux-2.6.32.48/include/asm-generic/atomic-long.h 2011-11-12 12:46:47.000000000 -0500
74824 +diff -urNp linux-3.0.8/include/asm-generic/atomic-long.h linux-3.0.8/include/asm-generic/atomic-long.h
74825 +--- linux-3.0.8/include/asm-generic/atomic-long.h 2011-07-21 22:17:23.000000000 -0400
74826 ++++ linux-3.0.8/include/asm-generic/atomic-long.h 2011-08-23 21:47:56.000000000 -0400
74827 @@ -22,6 +22,12 @@
74828
74829 typedef atomic64_t atomic_long_t;
74830 @@ -60560,7 +57197,23 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74831 static inline void atomic_long_sub(long i, atomic_long_t *l)
74832 {
74833 atomic64_t *v = (atomic64_t *)l;
74834 -@@ -115,6 +166,15 @@ static inline long atomic_long_inc_retur
74835 +@@ -66,6 +117,15 @@ static inline void atomic_long_sub(long
74836 + atomic64_sub(i, v);
74837 + }
74838 +
74839 ++#ifdef CONFIG_PAX_REFCOUNT
74840 ++static inline void atomic_long_sub_unchecked(long i, atomic_long_unchecked_t *l)
74841 ++{
74842 ++ atomic64_unchecked_t *v = (atomic64_unchecked_t *)l;
74843 ++
74844 ++ atomic64_sub_unchecked(i, v);
74845 ++}
74846 ++#endif
74847 ++
74848 + static inline int atomic_long_sub_and_test(long i, atomic_long_t *l)
74849 + {
74850 + atomic64_t *v = (atomic64_t *)l;
74851 +@@ -115,6 +175,15 @@ static inline long atomic_long_inc_retur
74852 return (long)atomic64_inc_return(v);
74853 }
74854
74855 @@ -60576,7 +57229,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74856 static inline long atomic_long_dec_return(atomic_long_t *l)
74857 {
74858 atomic64_t *v = (atomic64_t *)l;
74859 -@@ -140,6 +200,12 @@ static inline long atomic_long_add_unles
74860 +@@ -140,6 +209,12 @@ static inline long atomic_long_add_unles
74861
74862 typedef atomic_t atomic_long_t;
74863
74864 @@ -60589,7 +57242,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74865 #define ATOMIC_LONG_INIT(i) ATOMIC_INIT(i)
74866 static inline long atomic_long_read(atomic_long_t *l)
74867 {
74868 -@@ -148,6 +214,15 @@ static inline long atomic_long_read(atom
74869 +@@ -148,6 +223,15 @@ static inline long atomic_long_read(atom
74870 return (long)atomic_read(v);
74871 }
74872
74873 @@ -60605,7 +57258,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74874 static inline void atomic_long_set(atomic_long_t *l, long i)
74875 {
74876 atomic_t *v = (atomic_t *)l;
74877 -@@ -155,6 +230,15 @@ static inline void atomic_long_set(atomi
74878 +@@ -155,6 +239,15 @@ static inline void atomic_long_set(atomi
74879 atomic_set(v, i);
74880 }
74881
74882 @@ -60621,7 +57274,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74883 static inline void atomic_long_inc(atomic_long_t *l)
74884 {
74885 atomic_t *v = (atomic_t *)l;
74886 -@@ -162,6 +246,15 @@ static inline void atomic_long_inc(atomi
74887 +@@ -162,6 +255,15 @@ static inline void atomic_long_inc(atomi
74888 atomic_inc(v);
74889 }
74890
74891 @@ -60637,7 +57290,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74892 static inline void atomic_long_dec(atomic_long_t *l)
74893 {
74894 atomic_t *v = (atomic_t *)l;
74895 -@@ -169,6 +262,15 @@ static inline void atomic_long_dec(atomi
74896 +@@ -169,6 +271,15 @@ static inline void atomic_long_dec(atomi
74897 atomic_dec(v);
74898 }
74899
74900 @@ -60653,7 +57306,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74901 static inline void atomic_long_add(long i, atomic_long_t *l)
74902 {
74903 atomic_t *v = (atomic_t *)l;
74904 -@@ -176,6 +278,15 @@ static inline void atomic_long_add(long
74905 +@@ -176,6 +287,15 @@ static inline void atomic_long_add(long
74906 atomic_add(i, v);
74907 }
74908
74909 @@ -60669,7 +57322,23 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74910 static inline void atomic_long_sub(long i, atomic_long_t *l)
74911 {
74912 atomic_t *v = (atomic_t *)l;
74913 -@@ -232,6 +343,15 @@ static inline long atomic_long_inc_retur
74914 +@@ -183,6 +303,15 @@ static inline void atomic_long_sub(long
74915 + atomic_sub(i, v);
74916 + }
74917 +
74918 ++#ifdef CONFIG_PAX_REFCOUNT
74919 ++static inline void atomic_long_sub_unchecked(long i, atomic_long_unchecked_t *l)
74920 ++{
74921 ++ atomic_unchecked_t *v = (atomic_unchecked_t *)l;
74922 ++
74923 ++ atomic_sub_unchecked(i, v);
74924 ++}
74925 ++#endif
74926 ++
74927 + static inline int atomic_long_sub_and_test(long i, atomic_long_t *l)
74928 + {
74929 + atomic_t *v = (atomic_t *)l;
74930 +@@ -232,6 +361,15 @@ static inline long atomic_long_inc_retur
74931 return (long)atomic_inc_return(v);
74932 }
74933
74934 @@ -60685,7 +57354,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74935 static inline long atomic_long_dec_return(atomic_long_t *l)
74936 {
74937 atomic_t *v = (atomic_t *)l;
74938 -@@ -255,4 +375,47 @@ static inline long atomic_long_add_unles
74939 +@@ -255,4 +393,49 @@ static inline long atomic_long_add_unles
74940
74941 #endif /* BITS_PER_LONG == 64 */
74942
74943 @@ -60707,6 +57376,7 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74944 + atomic_long_read_unchecked((atomic_long_unchecked_t *)NULL);
74945 + atomic_long_set_unchecked((atomic_long_unchecked_t *)NULL, 0);
74946 + atomic_long_add_unchecked(0, (atomic_long_unchecked_t *)NULL);
74947 ++ atomic_long_sub_unchecked(0, (atomic_long_unchecked_t *)NULL);
74948 + atomic_long_inc_unchecked((atomic_long_unchecked_t *)NULL);
74949 + atomic_long_inc_return_unchecked((atomic_long_unchecked_t *)NULL);
74950 + atomic_long_dec_unchecked((atomic_long_unchecked_t *)NULL);
74951 @@ -60727,32 +57397,16 @@ diff -urNp linux-2.6.32.48/include/asm-generic/atomic-long.h linux-2.6.32.48/inc
74952 +#define atomic_long_read_unchecked(v) atomic_long_read(v)
74953 +#define atomic_long_set_unchecked(v, i) atomic_long_set((v), (i))
74954 +#define atomic_long_add_unchecked(i, v) atomic_long_add((i), (v))
74955 ++#define atomic_long_sub_unchecked(i, v) atomic_long_sub((i), (v))
74956 +#define atomic_long_inc_unchecked(v) atomic_long_inc(v)
74957 +#define atomic_long_inc_return_unchecked(v) atomic_long_inc_return(v)
74958 +#define atomic_long_dec_unchecked(v) atomic_long_dec(v)
74959 +#endif
74960 +
74961 #endif /* _ASM_GENERIC_ATOMIC_LONG_H */
74962 -diff -urNp linux-2.6.32.48/include/asm-generic/bug.h linux-2.6.32.48/include/asm-generic/bug.h
74963 ---- linux-2.6.32.48/include/asm-generic/bug.h 2011-11-12 12:44:30.000000000 -0500
74964 -+++ linux-2.6.32.48/include/asm-generic/bug.h 2011-11-12 12:46:47.000000000 -0500
74965 -@@ -105,11 +105,11 @@ extern void warn_slowpath_null(const cha
74966 -
74967 - #else /* !CONFIG_BUG */
74968 - #ifndef HAVE_ARCH_BUG
74969 --#define BUG() do {} while(0)
74970 -+#define BUG() do { for (;;) ; } while(0)
74971 - #endif
74972 -
74973 - #ifndef HAVE_ARCH_BUG_ON
74974 --#define BUG_ON(condition) do { if (condition) ; } while(0)
74975 -+#define BUG_ON(condition) do { if (condition) for (;;) ; } while(0)
74976 - #endif
74977 -
74978 - #ifndef HAVE_ARCH_WARN_ON
74979 -diff -urNp linux-2.6.32.48/include/asm-generic/cache.h linux-2.6.32.48/include/asm-generic/cache.h
74980 ---- linux-2.6.32.48/include/asm-generic/cache.h 2009-12-02 22:51:21.000000000 -0500
74981 -+++ linux-2.6.32.48/include/asm-generic/cache.h 2011-11-12 12:46:47.000000000 -0500
74982 +diff -urNp linux-3.0.8/include/asm-generic/cache.h linux-3.0.8/include/asm-generic/cache.h
74983 +--- linux-3.0.8/include/asm-generic/cache.h 2011-07-21 22:17:23.000000000 -0400
74984 ++++ linux-3.0.8/include/asm-generic/cache.h 2011-08-23 21:47:56.000000000 -0400
74985 @@ -6,7 +6,7 @@
74986 * cache lines need to provide their own cache.h.
74987 */
74988 @@ -60763,153 +57417,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/cache.h linux-2.6.32.48/include/a
74989 +#define L1_CACHE_BYTES (1UL << L1_CACHE_SHIFT)
74990
74991 #endif /* __ASM_GENERIC_CACHE_H */
74992 -diff -urNp linux-2.6.32.48/include/asm-generic/dma-mapping-common.h linux-2.6.32.48/include/asm-generic/dma-mapping-common.h
74993 ---- linux-2.6.32.48/include/asm-generic/dma-mapping-common.h 2011-11-12 12:44:30.000000000 -0500
74994 -+++ linux-2.6.32.48/include/asm-generic/dma-mapping-common.h 2011-11-12 12:46:47.000000000 -0500
74995 -@@ -11,7 +11,7 @@ static inline dma_addr_t dma_map_single_
74996 - enum dma_data_direction dir,
74997 - struct dma_attrs *attrs)
74998 - {
74999 -- struct dma_map_ops *ops = get_dma_ops(dev);
75000 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75001 - dma_addr_t addr;
75002 -
75003 - kmemcheck_mark_initialized(ptr, size);
75004 -@@ -30,7 +30,7 @@ static inline void dma_unmap_single_attr
75005 - enum dma_data_direction dir,
75006 - struct dma_attrs *attrs)
75007 - {
75008 -- struct dma_map_ops *ops = get_dma_ops(dev);
75009 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75010 -
75011 - BUG_ON(!valid_dma_direction(dir));
75012 - if (ops->unmap_page)
75013 -@@ -42,7 +42,7 @@ static inline int dma_map_sg_attrs(struc
75014 - int nents, enum dma_data_direction dir,
75015 - struct dma_attrs *attrs)
75016 - {
75017 -- struct dma_map_ops *ops = get_dma_ops(dev);
75018 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75019 - int i, ents;
75020 - struct scatterlist *s;
75021 -
75022 -@@ -59,7 +59,7 @@ static inline void dma_unmap_sg_attrs(st
75023 - int nents, enum dma_data_direction dir,
75024 - struct dma_attrs *attrs)
75025 - {
75026 -- struct dma_map_ops *ops = get_dma_ops(dev);
75027 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75028 -
75029 - BUG_ON(!valid_dma_direction(dir));
75030 - debug_dma_unmap_sg(dev, sg, nents, dir);
75031 -@@ -71,7 +71,7 @@ static inline dma_addr_t dma_map_page(st
75032 - size_t offset, size_t size,
75033 - enum dma_data_direction dir)
75034 - {
75035 -- struct dma_map_ops *ops = get_dma_ops(dev);
75036 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75037 - dma_addr_t addr;
75038 -
75039 - kmemcheck_mark_initialized(page_address(page) + offset, size);
75040 -@@ -85,7 +85,7 @@ static inline dma_addr_t dma_map_page(st
75041 - static inline void dma_unmap_page(struct device *dev, dma_addr_t addr,
75042 - size_t size, enum dma_data_direction dir)
75043 - {
75044 -- struct dma_map_ops *ops = get_dma_ops(dev);
75045 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75046 -
75047 - BUG_ON(!valid_dma_direction(dir));
75048 - if (ops->unmap_page)
75049 -@@ -97,7 +97,7 @@ static inline void dma_sync_single_for_c
75050 - size_t size,
75051 - enum dma_data_direction dir)
75052 - {
75053 -- struct dma_map_ops *ops = get_dma_ops(dev);
75054 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75055 -
75056 - BUG_ON(!valid_dma_direction(dir));
75057 - if (ops->sync_single_for_cpu)
75058 -@@ -109,7 +109,7 @@ static inline void dma_sync_single_for_d
75059 - dma_addr_t addr, size_t size,
75060 - enum dma_data_direction dir)
75061 - {
75062 -- struct dma_map_ops *ops = get_dma_ops(dev);
75063 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75064 -
75065 - BUG_ON(!valid_dma_direction(dir));
75066 - if (ops->sync_single_for_device)
75067 -@@ -123,7 +123,7 @@ static inline void dma_sync_single_range
75068 - size_t size,
75069 - enum dma_data_direction dir)
75070 - {
75071 -- struct dma_map_ops *ops = get_dma_ops(dev);
75072 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75073 -
75074 - BUG_ON(!valid_dma_direction(dir));
75075 - if (ops->sync_single_range_for_cpu) {
75076 -@@ -140,7 +140,7 @@ static inline void dma_sync_single_range
75077 - size_t size,
75078 - enum dma_data_direction dir)
75079 - {
75080 -- struct dma_map_ops *ops = get_dma_ops(dev);
75081 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75082 -
75083 - BUG_ON(!valid_dma_direction(dir));
75084 - if (ops->sync_single_range_for_device) {
75085 -@@ -155,7 +155,7 @@ static inline void
75086 - dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
75087 - int nelems, enum dma_data_direction dir)
75088 - {
75089 -- struct dma_map_ops *ops = get_dma_ops(dev);
75090 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75091 -
75092 - BUG_ON(!valid_dma_direction(dir));
75093 - if (ops->sync_sg_for_cpu)
75094 -@@ -167,7 +167,7 @@ static inline void
75095 - dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
75096 - int nelems, enum dma_data_direction dir)
75097 - {
75098 -- struct dma_map_ops *ops = get_dma_ops(dev);
75099 -+ const struct dma_map_ops *ops = get_dma_ops(dev);
75100 -
75101 - BUG_ON(!valid_dma_direction(dir));
75102 - if (ops->sync_sg_for_device)
75103 -diff -urNp linux-2.6.32.48/include/asm-generic/emergency-restart.h linux-2.6.32.48/include/asm-generic/emergency-restart.h
75104 ---- linux-2.6.32.48/include/asm-generic/emergency-restart.h 2009-12-02 22:51:21.000000000 -0500
75105 -+++ linux-2.6.32.48/include/asm-generic/emergency-restart.h 2011-11-12 12:46:47.000000000 -0500
75106 -@@ -1,7 +1,7 @@
75107 - #ifndef _ASM_GENERIC_EMERGENCY_RESTART_H
75108 - #define _ASM_GENERIC_EMERGENCY_RESTART_H
75109 -
75110 --static inline void machine_emergency_restart(void)
75111 -+static inline __noreturn void machine_emergency_restart(void)
75112 - {
75113 - machine_restart(NULL);
75114 - }
75115 -diff -urNp linux-2.6.32.48/include/asm-generic/futex.h linux-2.6.32.48/include/asm-generic/futex.h
75116 ---- linux-2.6.32.48/include/asm-generic/futex.h 2009-12-02 22:51:21.000000000 -0500
75117 -+++ linux-2.6.32.48/include/asm-generic/futex.h 2011-11-12 12:46:47.000000000 -0500
75118 -@@ -6,7 +6,7 @@
75119 - #include <asm/errno.h>
75120 -
75121 - static inline int
75122 --futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
75123 -+futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
75124 - {
75125 - int op = (encoded_op >> 28) & 7;
75126 - int cmp = (encoded_op >> 24) & 15;
75127 -@@ -48,7 +48,7 @@ futex_atomic_op_inuser (int encoded_op,
75128 - }
75129 -
75130 - static inline int
75131 --futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
75132 -+futex_atomic_cmpxchg_inatomic(u32 __user *uaddr, int oldval, int newval)
75133 - {
75134 - return -ENOSYS;
75135 - }
75136 -diff -urNp linux-2.6.32.48/include/asm-generic/int-l64.h linux-2.6.32.48/include/asm-generic/int-l64.h
75137 ---- linux-2.6.32.48/include/asm-generic/int-l64.h 2009-12-02 22:51:21.000000000 -0500
75138 -+++ linux-2.6.32.48/include/asm-generic/int-l64.h 2011-11-12 12:46:47.000000000 -0500
75139 +diff -urNp linux-3.0.8/include/asm-generic/int-l64.h linux-3.0.8/include/asm-generic/int-l64.h
75140 +--- linux-3.0.8/include/asm-generic/int-l64.h 2011-07-21 22:17:23.000000000 -0400
75141 ++++ linux-3.0.8/include/asm-generic/int-l64.h 2011-08-23 21:47:56.000000000 -0400
75142 @@ -46,6 +46,8 @@ typedef unsigned int u32;
75143 typedef signed long s64;
75144 typedef unsigned long u64;
75145 @@ -60919,9 +57429,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/int-l64.h linux-2.6.32.48/include
75146 #define S8_C(x) x
75147 #define U8_C(x) x ## U
75148 #define S16_C(x) x
75149 -diff -urNp linux-2.6.32.48/include/asm-generic/int-ll64.h linux-2.6.32.48/include/asm-generic/int-ll64.h
75150 ---- linux-2.6.32.48/include/asm-generic/int-ll64.h 2009-12-02 22:51:21.000000000 -0500
75151 -+++ linux-2.6.32.48/include/asm-generic/int-ll64.h 2011-11-12 12:46:47.000000000 -0500
75152 +diff -urNp linux-3.0.8/include/asm-generic/int-ll64.h linux-3.0.8/include/asm-generic/int-ll64.h
75153 +--- linux-3.0.8/include/asm-generic/int-ll64.h 2011-07-21 22:17:23.000000000 -0400
75154 ++++ linux-3.0.8/include/asm-generic/int-ll64.h 2011-08-23 21:47:56.000000000 -0400
75155 @@ -51,6 +51,8 @@ typedef unsigned int u32;
75156 typedef signed long long s64;
75157 typedef unsigned long long u64;
75158 @@ -60931,24 +57441,27 @@ diff -urNp linux-2.6.32.48/include/asm-generic/int-ll64.h linux-2.6.32.48/includ
75159 #define S8_C(x) x
75160 #define U8_C(x) x ## U
75161 #define S16_C(x) x
75162 -diff -urNp linux-2.6.32.48/include/asm-generic/kmap_types.h linux-2.6.32.48/include/asm-generic/kmap_types.h
75163 ---- linux-2.6.32.48/include/asm-generic/kmap_types.h 2009-12-02 22:51:21.000000000 -0500
75164 -+++ linux-2.6.32.48/include/asm-generic/kmap_types.h 2011-11-12 12:46:47.000000000 -0500
75165 -@@ -28,7 +28,8 @@ KMAP_D(15) KM_UML_USERCOPY,
75166 - KMAP_D(16) KM_IRQ_PTE,
75167 +diff -urNp linux-3.0.8/include/asm-generic/kmap_types.h linux-3.0.8/include/asm-generic/kmap_types.h
75168 +--- linux-3.0.8/include/asm-generic/kmap_types.h 2011-07-21 22:17:23.000000000 -0400
75169 ++++ linux-3.0.8/include/asm-generic/kmap_types.h 2011-08-23 21:47:56.000000000 -0400
75170 +@@ -29,10 +29,11 @@ KMAP_D(16) KM_IRQ_PTE,
75171 KMAP_D(17) KM_NMI,
75172 KMAP_D(18) KM_NMI_PTE,
75173 --KMAP_D(19) KM_TYPE_NR
75174 -+KMAP_D(19) KM_CLEARPAGE,
75175 -+KMAP_D(20) KM_TYPE_NR
75176 + KMAP_D(19) KM_KDB,
75177 ++KMAP_D(20) KM_CLEARPAGE,
75178 + /*
75179 + * Remember to update debug_kmap_atomic() when adding new kmap types!
75180 + */
75181 +-KMAP_D(20) KM_TYPE_NR
75182 ++KMAP_D(21) KM_TYPE_NR
75183 };
75184
75185 #undef KMAP_D
75186 -diff -urNp linux-2.6.32.48/include/asm-generic/pgtable.h linux-2.6.32.48/include/asm-generic/pgtable.h
75187 ---- linux-2.6.32.48/include/asm-generic/pgtable.h 2009-12-02 22:51:21.000000000 -0500
75188 -+++ linux-2.6.32.48/include/asm-generic/pgtable.h 2011-11-12 12:46:47.000000000 -0500
75189 -@@ -344,6 +344,14 @@ extern void untrack_pfn_vma(struct vm_ar
75190 - unsigned long size);
75191 +diff -urNp linux-3.0.8/include/asm-generic/pgtable.h linux-3.0.8/include/asm-generic/pgtable.h
75192 +--- linux-3.0.8/include/asm-generic/pgtable.h 2011-07-21 22:17:23.000000000 -0400
75193 ++++ linux-3.0.8/include/asm-generic/pgtable.h 2011-08-23 21:47:56.000000000 -0400
75194 +@@ -443,6 +443,14 @@ static inline int pmd_write(pmd_t pmd)
75195 + #endif /* __HAVE_ARCH_PMD_WRITE */
75196 #endif
75197
75198 +#ifndef __HAVE_ARCH_PAX_OPEN_KERNEL
75199 @@ -60962,9 +57475,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/pgtable.h linux-2.6.32.48/include
75200 #endif /* !__ASSEMBLY__ */
75201
75202 #endif /* _ASM_GENERIC_PGTABLE_H */
75203 -diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h
75204 ---- linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h 2009-12-02 22:51:21.000000000 -0500
75205 -+++ linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h 2011-11-12 12:46:47.000000000 -0500
75206 +diff -urNp linux-3.0.8/include/asm-generic/pgtable-nopmd.h linux-3.0.8/include/asm-generic/pgtable-nopmd.h
75207 +--- linux-3.0.8/include/asm-generic/pgtable-nopmd.h 2011-07-21 22:17:23.000000000 -0400
75208 ++++ linux-3.0.8/include/asm-generic/pgtable-nopmd.h 2011-08-23 21:47:56.000000000 -0400
75209 @@ -1,14 +1,19 @@
75210 #ifndef _PGTABLE_NOPMD_H
75211 #define _PGTABLE_NOPMD_H
75212 @@ -61001,9 +57514,9 @@ diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopmd.h linux-2.6.32.48/i
75213 /*
75214 * The "pud_xxx()" functions here are trivial for a folded two-level
75215 * setup: the pmd is never bad, and a pmd always exists (as it's folded
75216 -diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopud.h linux-2.6.32.48/include/asm-generic/pgtable-nopud.h
75217 ---- linux-2.6.32.48/include/asm-generic/pgtable-nopud.h 2009-12-02 22:51:21.000000000 -0500
75218 -+++ linux-2.6.32.48/include/asm-generic/pgtable-nopud.h 2011-11-12 12:46:47.000000000 -0500
75219 +diff -urNp linux-3.0.8/include/asm-generic/pgtable-nopud.h linux-3.0.8/include/asm-generic/pgtable-nopud.h
75220 +--- linux-3.0.8/include/asm-generic/pgtable-nopud.h 2011-07-21 22:17:23.000000000 -0400
75221 ++++ linux-3.0.8/include/asm-generic/pgtable-nopud.h 2011-08-23 21:47:56.000000000 -0400
75222 @@ -1,10 +1,15 @@
75223 #ifndef _PGTABLE_NOPUD_H
75224 #define _PGTABLE_NOPUD_H
75225 @@ -61034,60 +57547,53 @@ diff -urNp linux-2.6.32.48/include/asm-generic/pgtable-nopud.h linux-2.6.32.48/i
75226 /*
75227 * The "pgd_xxx()" functions here are trivial for a folded two-level
75228 * setup: the pud is never bad, and a pud always exists (as it's folded
75229 -diff -urNp linux-2.6.32.48/include/asm-generic/vmlinux.lds.h linux-2.6.32.48/include/asm-generic/vmlinux.lds.h
75230 ---- linux-2.6.32.48/include/asm-generic/vmlinux.lds.h 2009-12-02 22:51:21.000000000 -0500
75231 -+++ linux-2.6.32.48/include/asm-generic/vmlinux.lds.h 2011-11-12 12:46:47.000000000 -0500
75232 -@@ -199,6 +199,7 @@
75233 +diff -urNp linux-3.0.8/include/asm-generic/vmlinux.lds.h linux-3.0.8/include/asm-generic/vmlinux.lds.h
75234 +--- linux-3.0.8/include/asm-generic/vmlinux.lds.h 2011-07-21 22:17:23.000000000 -0400
75235 ++++ linux-3.0.8/include/asm-generic/vmlinux.lds.h 2011-08-23 21:47:56.000000000 -0400
75236 +@@ -217,6 +217,7 @@
75237 .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
75238 VMLINUX_SYMBOL(__start_rodata) = .; \
75239 *(.rodata) *(.rodata.*) \
75240 -+ *(.data.read_only) \
75241 ++ *(.data..read_only) \
75242 *(__vermagic) /* Kernel version magic */ \
75243 - *(__markers_strings) /* Markers: strings */ \
75244 - *(__tracepoints_strings)/* Tracepoints: strings */ \
75245 -@@ -656,22 +657,24 @@
75246 + . = ALIGN(8); \
75247 + VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .; \
75248 +@@ -723,17 +724,18 @@
75249 * section in the linker script will go there too. @phdr should have
75250 * a leading colon.
75251 *
75252 - * Note that this macros defines __per_cpu_load as an absolute symbol.
75253 + * Note that this macros defines per_cpu_load as an absolute symbol.
75254 * If there is no need to put the percpu section at a predetermined
75255 - * address, use PERCPU().
75256 + * address, use PERCPU_SECTION.
75257 */
75258 - #define PERCPU_VADDR(vaddr, phdr) \
75259 + #define PERCPU_VADDR(cacheline, vaddr, phdr) \
75260 - VMLINUX_SYMBOL(__per_cpu_load) = .; \
75261 -- .data.percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \
75262 +- .data..percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \
75263 + per_cpu_load = .; \
75264 -+ .data.percpu vaddr : AT(VMLINUX_SYMBOL(per_cpu_load) \
75265 ++ .data..percpu vaddr : AT(VMLINUX_SYMBOL(per_cpu_load) \
75266 - LOAD_OFFSET) { \
75267 + VMLINUX_SYMBOL(__per_cpu_load) = . + per_cpu_load; \
75268 - VMLINUX_SYMBOL(__per_cpu_start) = .; \
75269 - *(.data.percpu.first) \
75270 -- *(.data.percpu.page_aligned) \
75271 - *(.data.percpu) \
75272 -+ . = ALIGN(PAGE_SIZE); \
75273 -+ *(.data.percpu.page_aligned) \
75274 - *(.data.percpu.shared_aligned) \
75275 - VMLINUX_SYMBOL(__per_cpu_end) = .; \
75276 + PERCPU_INPUT(cacheline) \
75277 } phdr \
75278 -- . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data.percpu);
75279 -+ . = VMLINUX_SYMBOL(per_cpu_load) + SIZEOF(.data.percpu);
75280 +- . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data..percpu);
75281 ++ . = VMLINUX_SYMBOL(per_cpu_load) + SIZEOF(.data..percpu);
75282
75283 /**
75284 - * PERCPU - define output section for percpu area, simple version
75285 -diff -urNp linux-2.6.32.48/include/drm/drm_crtc_helper.h linux-2.6.32.48/include/drm/drm_crtc_helper.h
75286 ---- linux-2.6.32.48/include/drm/drm_crtc_helper.h 2009-12-02 22:51:21.000000000 -0500
75287 -+++ linux-2.6.32.48/include/drm/drm_crtc_helper.h 2011-11-12 12:46:47.000000000 -0500
75288 -@@ -64,7 +64,7 @@ struct drm_crtc_helper_funcs {
75289 -
75290 - /* reload the current crtc LUT */
75291 - void (*load_lut)(struct drm_crtc *crtc);
75292 + * PERCPU_SECTION - define output section for percpu area, simple version
75293 +diff -urNp linux-3.0.8/include/drm/drm_crtc_helper.h linux-3.0.8/include/drm/drm_crtc_helper.h
75294 +--- linux-3.0.8/include/drm/drm_crtc_helper.h 2011-07-21 22:17:23.000000000 -0400
75295 ++++ linux-3.0.8/include/drm/drm_crtc_helper.h 2011-08-23 21:47:56.000000000 -0400
75296 +@@ -74,7 +74,7 @@ struct drm_crtc_helper_funcs {
75297 +
75298 + /* disable crtc when not in use - more explicit than dpms off */
75299 + void (*disable)(struct drm_crtc *crtc);
75300 -};
75301 +} __no_const;
75302
75303 struct drm_encoder_helper_funcs {
75304 void (*dpms)(struct drm_encoder *encoder, int mode);
75305 -@@ -85,7 +85,7 @@ struct drm_encoder_helper_funcs {
75306 +@@ -95,7 +95,7 @@ struct drm_encoder_helper_funcs {
75307 struct drm_connector *connector);
75308 /* disable encoder when not in use - more explicit than dpms off */
75309 void (*disable)(struct drm_encoder *encoder);
75310 @@ -61096,10 +57602,10 @@ diff -urNp linux-2.6.32.48/include/drm/drm_crtc_helper.h linux-2.6.32.48/include
75311
75312 struct drm_connector_helper_funcs {
75313 int (*get_modes)(struct drm_connector *connector);
75314 -diff -urNp linux-2.6.32.48/include/drm/drmP.h linux-2.6.32.48/include/drm/drmP.h
75315 ---- linux-2.6.32.48/include/drm/drmP.h 2011-11-12 12:44:30.000000000 -0500
75316 -+++ linux-2.6.32.48/include/drm/drmP.h 2011-11-12 12:46:47.000000000 -0500
75317 -@@ -71,6 +71,7 @@
75318 +diff -urNp linux-3.0.8/include/drm/drmP.h linux-3.0.8/include/drm/drmP.h
75319 +--- linux-3.0.8/include/drm/drmP.h 2011-07-21 22:17:23.000000000 -0400
75320 ++++ linux-3.0.8/include/drm/drmP.h 2011-08-23 21:47:56.000000000 -0400
75321 +@@ -73,6 +73,7 @@
75322 #include <linux/workqueue.h>
75323 #include <linux/poll.h>
75324 #include <asm/pgalloc.h>
75325 @@ -61107,16 +57613,7 @@ diff -urNp linux-2.6.32.48/include/drm/drmP.h linux-2.6.32.48/include/drm/drmP.h
75326 #include "drm.h"
75327
75328 #include <linux/idr.h>
75329 -@@ -814,7 +815,7 @@ struct drm_driver {
75330 - void (*vgaarb_irq)(struct drm_device *dev, bool state);
75331 -
75332 - /* Driver private ops for this object */
75333 -- struct vm_operations_struct *gem_vm_ops;
75334 -+ const struct vm_operations_struct *gem_vm_ops;
75335 -
75336 - int major;
75337 - int minor;
75338 -@@ -917,7 +918,7 @@ struct drm_device {
75339 +@@ -1033,7 +1034,7 @@ struct drm_device {
75340
75341 /** \name Usage Counters */
75342 /*@{ */
75343 @@ -61125,7 +57622,7 @@ diff -urNp linux-2.6.32.48/include/drm/drmP.h linux-2.6.32.48/include/drm/drmP.h
75344 atomic_t ioctl_count; /**< Outstanding IOCTLs pending */
75345 atomic_t vma_count; /**< Outstanding vma areas open */
75346 int buf_use; /**< Buffers in use -- cannot alloc */
75347 -@@ -928,7 +929,7 @@ struct drm_device {
75348 +@@ -1044,7 +1045,7 @@ struct drm_device {
75349 /*@{ */
75350 unsigned long counters;
75351 enum drm_stat_type types[15];
75352 @@ -61134,33 +57631,9 @@ diff -urNp linux-2.6.32.48/include/drm/drmP.h linux-2.6.32.48/include/drm/drmP.h
75353 /*@} */
75354
75355 struct list_head filelist;
75356 -@@ -1016,7 +1017,7 @@ struct drm_device {
75357 - struct pci_controller *hose;
75358 - #endif
75359 - struct drm_sg_mem *sg; /**< Scatter gather memory */
75360 -- unsigned int num_crtcs; /**< Number of CRTCs on this device */
75361 -+ unsigned int num_crtcs; /**< Number of CRTCs on this device */
75362 - void *dev_private; /**< device private data */
75363 - void *mm_private;
75364 - struct address_space *dev_mapping;
75365 -@@ -1042,11 +1043,11 @@ struct drm_device {
75366 - spinlock_t object_name_lock;
75367 - struct idr object_name_idr;
75368 - atomic_t object_count;
75369 -- atomic_t object_memory;
75370 -+ atomic_unchecked_t object_memory;
75371 - atomic_t pin_count;
75372 -- atomic_t pin_memory;
75373 -+ atomic_unchecked_t pin_memory;
75374 - atomic_t gtt_count;
75375 -- atomic_t gtt_memory;
75376 -+ atomic_unchecked_t gtt_memory;
75377 - uint32_t gtt_total;
75378 - uint32_t invalidate_domains; /* domains pending invalidation */
75379 - uint32_t flush_domains; /* domains pending flush */
75380 -diff -urNp linux-2.6.32.48/include/drm/ttm/ttm_memory.h linux-2.6.32.48/include/drm/ttm/ttm_memory.h
75381 ---- linux-2.6.32.48/include/drm/ttm/ttm_memory.h 2011-11-12 12:44:30.000000000 -0500
75382 -+++ linux-2.6.32.48/include/drm/ttm/ttm_memory.h 2011-11-12 12:46:47.000000000 -0500
75383 +diff -urNp linux-3.0.8/include/drm/ttm/ttm_memory.h linux-3.0.8/include/drm/ttm/ttm_memory.h
75384 +--- linux-3.0.8/include/drm/ttm/ttm_memory.h 2011-07-21 22:17:23.000000000 -0400
75385 ++++ linux-3.0.8/include/drm/ttm/ttm_memory.h 2011-08-23 21:47:56.000000000 -0400
75386 @@ -47,7 +47,7 @@
75387
75388 struct ttm_mem_shrink {
75389 @@ -61170,9 +57643,9 @@ diff -urNp linux-2.6.32.48/include/drm/ttm/ttm_memory.h linux-2.6.32.48/include/
75390
75391 /**
75392 * struct ttm_mem_global - Global memory accounting structure.
75393 -diff -urNp linux-2.6.32.48/include/linux/a.out.h linux-2.6.32.48/include/linux/a.out.h
75394 ---- linux-2.6.32.48/include/linux/a.out.h 2009-12-02 22:51:21.000000000 -0500
75395 -+++ linux-2.6.32.48/include/linux/a.out.h 2011-11-12 12:46:47.000000000 -0500
75396 +diff -urNp linux-3.0.8/include/linux/a.out.h linux-3.0.8/include/linux/a.out.h
75397 +--- linux-3.0.8/include/linux/a.out.h 2011-07-21 22:17:23.000000000 -0400
75398 ++++ linux-3.0.8/include/linux/a.out.h 2011-08-23 21:47:56.000000000 -0400
75399 @@ -39,6 +39,14 @@ enum machine_type {
75400 M_MIPS2 = 152 /* MIPS R6000/R4000 binary */
75401 };
75402 @@ -61188,9 +57661,9 @@ diff -urNp linux-2.6.32.48/include/linux/a.out.h linux-2.6.32.48/include/linux/a
75403 #if !defined (N_MAGIC)
75404 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
75405 #endif
75406 -diff -urNp linux-2.6.32.48/include/linux/atmdev.h linux-2.6.32.48/include/linux/atmdev.h
75407 ---- linux-2.6.32.48/include/linux/atmdev.h 2009-12-02 22:51:21.000000000 -0500
75408 -+++ linux-2.6.32.48/include/linux/atmdev.h 2011-11-12 12:46:47.000000000 -0500
75409 +diff -urNp linux-3.0.8/include/linux/atmdev.h linux-3.0.8/include/linux/atmdev.h
75410 +--- linux-3.0.8/include/linux/atmdev.h 2011-07-21 22:17:23.000000000 -0400
75411 ++++ linux-3.0.8/include/linux/atmdev.h 2011-08-23 21:47:56.000000000 -0400
75412 @@ -237,7 +237,7 @@ struct compat_atm_iobuf {
75413 #endif
75414
75415 @@ -61200,77 +57673,33 @@ diff -urNp linux-2.6.32.48/include/linux/atmdev.h linux-2.6.32.48/include/linux/
75416 __AAL_STAT_ITEMS
75417 #undef __HANDLE_ITEM
75418 };
75419 -diff -urNp linux-2.6.32.48/include/linux/backlight.h linux-2.6.32.48/include/linux/backlight.h
75420 ---- linux-2.6.32.48/include/linux/backlight.h 2009-12-02 22:51:21.000000000 -0500
75421 -+++ linux-2.6.32.48/include/linux/backlight.h 2011-11-12 12:46:47.000000000 -0500
75422 -@@ -36,18 +36,18 @@ struct backlight_device;
75423 - struct fb_info;
75424 -
75425 - struct backlight_ops {
75426 -- unsigned int options;
75427 -+ const unsigned int options;
75428 -
75429 - #define BL_CORE_SUSPENDRESUME (1 << 0)
75430 -
75431 - /* Notify the backlight driver some property has changed */
75432 -- int (*update_status)(struct backlight_device *);
75433 -+ int (* const update_status)(struct backlight_device *);
75434 - /* Return the current backlight brightness (accounting for power,
75435 - fb_blank etc.) */
75436 -- int (*get_brightness)(struct backlight_device *);
75437 -+ int (* const get_brightness)(struct backlight_device *);
75438 - /* Check if given framebuffer device is the one bound to this backlight;
75439 - return 0 if not, !=0 if it is. If NULL, backlight always matches the fb. */
75440 -- int (*check_fb)(struct fb_info *);
75441 -+ int (* const check_fb)(struct fb_info *);
75442 - };
75443 -
75444 - /* This structure defines all the properties of a backlight */
75445 -@@ -86,7 +86,7 @@ struct backlight_device {
75446 - registered this device has been unloaded, and if class_get_devdata()
75447 - points to something in the body of that driver, it is also invalid. */
75448 - struct mutex ops_lock;
75449 -- struct backlight_ops *ops;
75450 -+ const struct backlight_ops *ops;
75451 -
75452 - /* The framebuffer notifier block */
75453 - struct notifier_block fb_notif;
75454 -@@ -103,7 +103,7 @@ static inline void backlight_update_stat
75455 - }
75456 -
75457 - extern struct backlight_device *backlight_device_register(const char *name,
75458 -- struct device *dev, void *devdata, struct backlight_ops *ops);
75459 -+ struct device *dev, void *devdata, const struct backlight_ops *ops);
75460 - extern void backlight_device_unregister(struct backlight_device *bd);
75461 - extern void backlight_force_update(struct backlight_device *bd,
75462 - enum backlight_update_reason reason);
75463 -diff -urNp linux-2.6.32.48/include/linux/binfmts.h linux-2.6.32.48/include/linux/binfmts.h
75464 ---- linux-2.6.32.48/include/linux/binfmts.h 2011-11-12 12:44:30.000000000 -0500
75465 -+++ linux-2.6.32.48/include/linux/binfmts.h 2011-11-12 12:46:47.000000000 -0500
75466 -@@ -83,6 +83,7 @@ struct linux_binfmt {
75467 +diff -urNp linux-3.0.8/include/linux/binfmts.h linux-3.0.8/include/linux/binfmts.h
75468 +--- linux-3.0.8/include/linux/binfmts.h 2011-07-21 22:17:23.000000000 -0400
75469 ++++ linux-3.0.8/include/linux/binfmts.h 2011-08-23 21:47:56.000000000 -0400
75470 +@@ -88,6 +88,7 @@ struct linux_binfmt {
75471 int (*load_binary)(struct linux_binprm *, struct pt_regs * regs);
75472 int (*load_shlib)(struct file *);
75473 - int (*core_dump)(long signr, struct pt_regs *regs, struct file *file, unsigned long limit);
75474 + int (*core_dump)(struct coredump_params *cprm);
75475 + void (*handle_mprotect)(struct vm_area_struct *vma, unsigned long newflags);
75476 unsigned long min_coredump; /* minimal dump size */
75477 - int hasvdso;
75478 };
75479 -diff -urNp linux-2.6.32.48/include/linux/blkdev.h linux-2.6.32.48/include/linux/blkdev.h
75480 ---- linux-2.6.32.48/include/linux/blkdev.h 2011-11-12 12:44:30.000000000 -0500
75481 -+++ linux-2.6.32.48/include/linux/blkdev.h 2011-11-12 12:46:47.000000000 -0500
75482 -@@ -1278,7 +1278,7 @@ struct block_device_operations {
75483 - int (*revalidate_disk) (struct gendisk *);
75484 - int (*getgeo)(struct block_device *, struct hd_geometry *);
75485 +
75486 +diff -urNp linux-3.0.8/include/linux/blkdev.h linux-3.0.8/include/linux/blkdev.h
75487 +--- linux-3.0.8/include/linux/blkdev.h 2011-07-21 22:17:23.000000000 -0400
75488 ++++ linux-3.0.8/include/linux/blkdev.h 2011-08-26 19:49:56.000000000 -0400
75489 +@@ -1308,7 +1308,7 @@ struct block_device_operations {
75490 + /* this callback is with swap_lock and sometimes page table lock held */
75491 + void (*swap_slot_free_notify) (struct block_device *, unsigned long);
75492 struct module *owner;
75493 -};
75494 +} __do_const;
75495
75496 extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int,
75497 unsigned long);
75498 -diff -urNp linux-2.6.32.48/include/linux/blktrace_api.h linux-2.6.32.48/include/linux/blktrace_api.h
75499 ---- linux-2.6.32.48/include/linux/blktrace_api.h 2009-12-02 22:51:21.000000000 -0500
75500 -+++ linux-2.6.32.48/include/linux/blktrace_api.h 2011-11-12 12:46:47.000000000 -0500
75501 -@@ -160,7 +160,7 @@ struct blk_trace {
75502 +diff -urNp linux-3.0.8/include/linux/blktrace_api.h linux-3.0.8/include/linux/blktrace_api.h
75503 +--- linux-3.0.8/include/linux/blktrace_api.h 2011-07-21 22:17:23.000000000 -0400
75504 ++++ linux-3.0.8/include/linux/blktrace_api.h 2011-08-23 21:47:56.000000000 -0400
75505 +@@ -161,7 +161,7 @@ struct blk_trace {
75506 struct dentry *dir;
75507 struct dentry *dropped_file;
75508 struct dentry *msg_file;
75509 @@ -61279,9 +57708,9 @@ diff -urNp linux-2.6.32.48/include/linux/blktrace_api.h linux-2.6.32.48/include/
75510 };
75511
75512 extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
75513 -diff -urNp linux-2.6.32.48/include/linux/byteorder/little_endian.h linux-2.6.32.48/include/linux/byteorder/little_endian.h
75514 ---- linux-2.6.32.48/include/linux/byteorder/little_endian.h 2009-12-02 22:51:21.000000000 -0500
75515 -+++ linux-2.6.32.48/include/linux/byteorder/little_endian.h 2011-11-12 12:46:47.000000000 -0500
75516 +diff -urNp linux-3.0.8/include/linux/byteorder/little_endian.h linux-3.0.8/include/linux/byteorder/little_endian.h
75517 +--- linux-3.0.8/include/linux/byteorder/little_endian.h 2011-07-21 22:17:23.000000000 -0400
75518 ++++ linux-3.0.8/include/linux/byteorder/little_endian.h 2011-08-23 21:47:56.000000000 -0400
75519 @@ -42,51 +42,51 @@
75520
75521 static inline __le64 __cpu_to_le64p(const __u64 *p)
75522 @@ -61346,9 +57775,9 @@ diff -urNp linux-2.6.32.48/include/linux/byteorder/little_endian.h linux-2.6.32.
75523 }
75524 #define __cpu_to_le64s(x) do { (void)(x); } while (0)
75525 #define __le64_to_cpus(x) do { (void)(x); } while (0)
75526 -diff -urNp linux-2.6.32.48/include/linux/cache.h linux-2.6.32.48/include/linux/cache.h
75527 ---- linux-2.6.32.48/include/linux/cache.h 2009-12-02 22:51:21.000000000 -0500
75528 -+++ linux-2.6.32.48/include/linux/cache.h 2011-11-12 12:46:47.000000000 -0500
75529 +diff -urNp linux-3.0.8/include/linux/cache.h linux-3.0.8/include/linux/cache.h
75530 +--- linux-3.0.8/include/linux/cache.h 2011-07-21 22:17:23.000000000 -0400
75531 ++++ linux-3.0.8/include/linux/cache.h 2011-08-23 21:47:56.000000000 -0400
75532 @@ -16,6 +16,10 @@
75533 #define __read_mostly
75534 #endif
75535 @@ -61360,46 +57789,68 @@ diff -urNp linux-2.6.32.48/include/linux/cache.h linux-2.6.32.48/include/linux/c
75536 #ifndef ____cacheline_aligned
75537 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
75538 #endif
75539 -diff -urNp linux-2.6.32.48/include/linux/capability.h linux-2.6.32.48/include/linux/capability.h
75540 ---- linux-2.6.32.48/include/linux/capability.h 2009-12-02 22:51:21.000000000 -0500
75541 -+++ linux-2.6.32.48/include/linux/capability.h 2011-11-12 12:46:47.000000000 -0500
75542 -@@ -563,6 +563,7 @@ extern const kernel_cap_t __cap_init_eff
75543 - (security_real_capable_noaudit((t), (cap)) == 0)
75544 -
75545 - extern int capable(int cap);
75546 -+int capable_nolog(int cap);
75547 +diff -urNp linux-3.0.8/include/linux/capability.h linux-3.0.8/include/linux/capability.h
75548 +--- linux-3.0.8/include/linux/capability.h 2011-07-21 22:17:23.000000000 -0400
75549 ++++ linux-3.0.8/include/linux/capability.h 2011-08-23 21:48:14.000000000 -0400
75550 +@@ -547,6 +547,9 @@ extern bool capable(int cap);
75551 + extern bool ns_capable(struct user_namespace *ns, int cap);
75552 + extern bool task_ns_capable(struct task_struct *t, int cap);
75553 + extern bool nsown_capable(int cap);
75554 ++extern bool task_ns_capable_nolog(struct task_struct *t, int cap);
75555 ++extern bool ns_capable_nolog(struct user_namespace *ns, int cap);
75556 ++extern bool capable_nolog(int cap);
75557
75558 /* audit system wants to get cap info from files as well */
75559 - struct dentry;
75560 -diff -urNp linux-2.6.32.48/include/linux/compiler-gcc4.h linux-2.6.32.48/include/linux/compiler-gcc4.h
75561 ---- linux-2.6.32.48/include/linux/compiler-gcc4.h 2009-12-02 22:51:21.000000000 -0500
75562 -+++ linux-2.6.32.48/include/linux/compiler-gcc4.h 2011-11-12 12:46:47.000000000 -0500
75563 -@@ -36,4 +36,16 @@
75564 - the kernel context */
75565 - #define __cold __attribute__((__cold__))
75566 + extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps);
75567 +diff -urNp linux-3.0.8/include/linux/cleancache.h linux-3.0.8/include/linux/cleancache.h
75568 +--- linux-3.0.8/include/linux/cleancache.h 2011-07-21 22:17:23.000000000 -0400
75569 ++++ linux-3.0.8/include/linux/cleancache.h 2011-08-23 21:47:56.000000000 -0400
75570 +@@ -31,7 +31,7 @@ struct cleancache_ops {
75571 + void (*flush_page)(int, struct cleancache_filekey, pgoff_t);
75572 + void (*flush_inode)(int, struct cleancache_filekey);
75573 + void (*flush_fs)(int);
75574 +-};
75575 ++} __no_const;
75576
75577 -+#define __alloc_size(...) __attribute((alloc_size(__VA_ARGS__)))
75578 -+#define __bos(ptr, arg) __builtin_object_size((ptr), (arg))
75579 -+#define __bos0(ptr) __bos((ptr), 0)
75580 -+#define __bos1(ptr) __bos((ptr), 1)
75581 + extern struct cleancache_ops
75582 + cleancache_register_ops(struct cleancache_ops *ops);
75583 +diff -urNp linux-3.0.8/include/linux/compiler-gcc4.h linux-3.0.8/include/linux/compiler-gcc4.h
75584 +--- linux-3.0.8/include/linux/compiler-gcc4.h 2011-07-21 22:17:23.000000000 -0400
75585 ++++ linux-3.0.8/include/linux/compiler-gcc4.h 2011-08-26 19:49:56.000000000 -0400
75586 +@@ -31,6 +31,12 @@
75587 +
75588 +
75589 + #if __GNUC_MINOR__ >= 5
75590 +
75591 -+#if __GNUC_MINOR__ >= 5
75592 +#ifdef CONSTIFY_PLUGIN
75593 +#define __no_const __attribute__((no_const))
75594 +#define __do_const __attribute__((do_const))
75595 +#endif
75596 -+#endif
75597 +
75598 + /*
75599 + * Mark a position in code as unreachable. This can be used to
75600 + * suppress control flow warnings after asm blocks that transfer
75601 +@@ -46,6 +52,11 @@
75602 + #define __noclone __attribute__((__noclone__))
75603 +
75604 + #endif
75605 ++
75606 ++#define __alloc_size(...) __attribute((alloc_size(__VA_ARGS__)))
75607 ++#define __bos(ptr, arg) __builtin_object_size((ptr), (arg))
75608 ++#define __bos0(ptr) __bos((ptr), 0)
75609 ++#define __bos1(ptr) __bos((ptr), 1)
75610 #endif
75611 -diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linux/compiler.h
75612 ---- linux-2.6.32.48/include/linux/compiler.h 2009-12-02 22:51:21.000000000 -0500
75613 -+++ linux-2.6.32.48/include/linux/compiler.h 2011-11-12 12:46:47.000000000 -0500
75614 -@@ -5,11 +5,14 @@
75615 +
75616 + #if __GNUC_MINOR__ > 0
75617 +diff -urNp linux-3.0.8/include/linux/compiler.h linux-3.0.8/include/linux/compiler.h
75618 +--- linux-3.0.8/include/linux/compiler.h 2011-07-21 22:17:23.000000000 -0400
75619 ++++ linux-3.0.8/include/linux/compiler.h 2011-10-06 04:17:55.000000000 -0400
75620 +@@ -5,31 +5,62 @@
75621
75622 #ifdef __CHECKER__
75623 # define __user __attribute__((noderef, address_space(1)))
75624 +# define __force_user __force __user
75625 - # define __kernel /* default address space */
75626 + # define __kernel __attribute__((address_space(0)))
75627 +# define __force_kernel __force __kernel
75628 # define __safe __attribute__((safe))
75629 # define __force __attribute__((force))
75630 @@ -61409,8 +57860,17 @@ diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linu
75631 # define __acquires(x) __attribute__((context(x,0,1)))
75632 # define __releases(x) __attribute__((context(x,1,0)))
75633 # define __acquire(x) __context__(x,1)
75634 -@@ -17,13 +20,34 @@
75635 + # define __release(x) __context__(x,-1)
75636 # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
75637 + # define __percpu __attribute__((noderef, address_space(3)))
75638 ++# define __force_percpu __force __percpu
75639 + #ifdef CONFIG_SPARSE_RCU_POINTER
75640 + # define __rcu __attribute__((noderef, address_space(4)))
75641 ++# define __force_rcu __force __rcu
75642 + #else
75643 + # define __rcu
75644 ++# define __force_rcu
75645 + #endif
75646 extern void __chk_user_ptr(const volatile void __user *);
75647 extern void __chk_io_ptr(const volatile void __iomem *);
75648 +#elif defined(CHECKER_PLUGIN)
75649 @@ -61431,6 +57891,10 @@ diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linu
75650 +# define __acquire(x) (void)0
75651 +# define __release(x) (void)0
75652 +# define __cond_lock(x,c) (c)
75653 ++# define __percpu
75654 ++# define __force_percpu
75655 ++# define __rcu
75656 ++# define __force_rcu
75657 #else
75658 # define __user
75659 +# define __force_user
75660 @@ -61444,7 +57908,17 @@ diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linu
75661 # define __chk_user_ptr(x) (void)0
75662 # define __chk_io_ptr(x) (void)0
75663 # define __builtin_warning(x, y...) (1)
75664 -@@ -247,6 +271,14 @@ void ftrace_likely_update(struct ftrace_
75665 +@@ -39,7 +70,9 @@ extern void __chk_io_ptr(const volatile
75666 + # define __release(x) (void)0
75667 + # define __cond_lock(x,c) (c)
75668 + # define __percpu
75669 ++# define __force_percpu
75670 + # define __rcu
75671 ++# define __force_rcu
75672 + #endif
75673 +
75674 + #ifdef __KERNEL__
75675 +@@ -264,6 +297,14 @@ void ftrace_likely_update(struct ftrace_
75676 # define __attribute_const__ /* unimplemented */
75677 #endif
75678
75679 @@ -61459,7 +57933,7 @@ diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linu
75680 /*
75681 * Tell gcc if a function is cold. The compiler will assume any path
75682 * directly leading to the call is unlikely.
75683 -@@ -256,6 +288,22 @@ void ftrace_likely_update(struct ftrace_
75684 +@@ -273,6 +314,22 @@ void ftrace_likely_update(struct ftrace_
75685 #define __cold
75686 #endif
75687
75688 @@ -61482,7 +57956,7 @@ diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linu
75689 /* Simple shorthand for a section definition */
75690 #ifndef __section
75691 # define __section(S) __attribute__ ((__section__(#S)))
75692 -@@ -278,6 +326,7 @@ void ftrace_likely_update(struct ftrace_
75693 +@@ -306,6 +363,7 @@ void ftrace_likely_update(struct ftrace_
75694 * use is to mediate communication between process-level code and irq/NMI
75695 * handlers, all running on the same CPU.
75696 */
75697 @@ -61491,10 +57965,22 @@ diff -urNp linux-2.6.32.48/include/linux/compiler.h linux-2.6.32.48/include/linu
75698 +#define ACCESS_ONCE_RW(x) (*(volatile typeof(x) *)&(x))
75699
75700 #endif /* __LINUX_COMPILER_H */
75701 -diff -urNp linux-2.6.32.48/include/linux/crypto.h linux-2.6.32.48/include/linux/crypto.h
75702 ---- linux-2.6.32.48/include/linux/crypto.h 2009-12-02 22:51:21.000000000 -0500
75703 -+++ linux-2.6.32.48/include/linux/crypto.h 2011-11-12 12:46:47.000000000 -0500
75704 -@@ -394,7 +394,7 @@ struct cipher_tfm {
75705 +diff -urNp linux-3.0.8/include/linux/cpuset.h linux-3.0.8/include/linux/cpuset.h
75706 +--- linux-3.0.8/include/linux/cpuset.h 2011-07-21 22:17:23.000000000 -0400
75707 ++++ linux-3.0.8/include/linux/cpuset.h 2011-08-23 21:47:56.000000000 -0400
75708 +@@ -118,7 +118,7 @@ static inline void put_mems_allowed(void
75709 + * nodemask.
75710 + */
75711 + smp_mb();
75712 +- --ACCESS_ONCE(current->mems_allowed_change_disable);
75713 ++ --ACCESS_ONCE_RW(current->mems_allowed_change_disable);
75714 + }
75715 +
75716 + static inline void set_mems_allowed(nodemask_t nodemask)
75717 +diff -urNp linux-3.0.8/include/linux/crypto.h linux-3.0.8/include/linux/crypto.h
75718 +--- linux-3.0.8/include/linux/crypto.h 2011-07-21 22:17:23.000000000 -0400
75719 ++++ linux-3.0.8/include/linux/crypto.h 2011-08-23 21:47:56.000000000 -0400
75720 +@@ -361,7 +361,7 @@ struct cipher_tfm {
75721 const u8 *key, unsigned int keylen);
75722 void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
75723 void (*cit_decrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
75724 @@ -61503,7 +57989,7 @@ diff -urNp linux-2.6.32.48/include/linux/crypto.h linux-2.6.32.48/include/linux/
75725
75726 struct hash_tfm {
75727 int (*init)(struct hash_desc *desc);
75728 -@@ -415,13 +415,13 @@ struct compress_tfm {
75729 +@@ -382,13 +382,13 @@ struct compress_tfm {
75730 int (*cot_decompress)(struct crypto_tfm *tfm,
75731 const u8 *src, unsigned int slen,
75732 u8 *dst, unsigned int *dlen);
75733 @@ -61519,22 +58005,10 @@ diff -urNp linux-2.6.32.48/include/linux/crypto.h linux-2.6.32.48/include/linux/
75734
75735 #define crt_ablkcipher crt_u.ablkcipher
75736 #define crt_aead crt_u.aead
75737 -diff -urNp linux-2.6.32.48/include/linux/dcache.h linux-2.6.32.48/include/linux/dcache.h
75738 ---- linux-2.6.32.48/include/linux/dcache.h 2009-12-02 22:51:21.000000000 -0500
75739 -+++ linux-2.6.32.48/include/linux/dcache.h 2011-11-12 12:46:47.000000000 -0500
75740 -@@ -119,6 +119,8 @@ struct dentry {
75741 - unsigned char d_iname[DNAME_INLINE_LEN_MIN]; /* small names */
75742 - };
75743 -
75744 -+#define DNAME_INLINE_LEN (sizeof(struct dentry)-offsetof(struct dentry,d_iname))
75745 -+
75746 - /*
75747 - * dentry->d_lock spinlock nesting subclasses:
75748 - *
75749 -diff -urNp linux-2.6.32.48/include/linux/decompress/mm.h linux-2.6.32.48/include/linux/decompress/mm.h
75750 ---- linux-2.6.32.48/include/linux/decompress/mm.h 2011-11-12 12:44:30.000000000 -0500
75751 -+++ linux-2.6.32.48/include/linux/decompress/mm.h 2011-11-12 12:46:47.000000000 -0500
75752 -@@ -78,7 +78,7 @@ static void free(void *where)
75753 +diff -urNp linux-3.0.8/include/linux/decompress/mm.h linux-3.0.8/include/linux/decompress/mm.h
75754 +--- linux-3.0.8/include/linux/decompress/mm.h 2011-07-21 22:17:23.000000000 -0400
75755 ++++ linux-3.0.8/include/linux/decompress/mm.h 2011-08-23 21:47:56.000000000 -0400
75756 +@@ -77,7 +77,7 @@ static void free(void *where)
75757 * warnings when not needed (indeed large_malloc / large_free are not
75758 * needed by inflate */
75759
75760 @@ -61543,69 +58017,11 @@ diff -urNp linux-2.6.32.48/include/linux/decompress/mm.h linux-2.6.32.48/include
75761 #define free(a) kfree(a)
75762
75763 #define large_malloc(a) vmalloc(a)
75764 -diff -urNp linux-2.6.32.48/include/linux/dma-mapping.h linux-2.6.32.48/include/linux/dma-mapping.h
75765 ---- linux-2.6.32.48/include/linux/dma-mapping.h 2009-12-02 22:51:21.000000000 -0500
75766 -+++ linux-2.6.32.48/include/linux/dma-mapping.h 2011-11-12 12:46:47.000000000 -0500
75767 -@@ -16,51 +16,51 @@ enum dma_data_direction {
75768 - };
75769 -
75770 - struct dma_map_ops {
75771 -- void* (*alloc_coherent)(struct device *dev, size_t size,
75772 -+ void* (* const alloc_coherent)(struct device *dev, size_t size,
75773 - dma_addr_t *dma_handle, gfp_t gfp);
75774 -- void (*free_coherent)(struct device *dev, size_t size,
75775 -+ void (* const free_coherent)(struct device *dev, size_t size,
75776 - void *vaddr, dma_addr_t dma_handle);
75777 -- dma_addr_t (*map_page)(struct device *dev, struct page *page,
75778 -+ dma_addr_t (* const map_page)(struct device *dev, struct page *page,
75779 - unsigned long offset, size_t size,
75780 - enum dma_data_direction dir,
75781 - struct dma_attrs *attrs);
75782 -- void (*unmap_page)(struct device *dev, dma_addr_t dma_handle,
75783 -+ void (* const unmap_page)(struct device *dev, dma_addr_t dma_handle,
75784 - size_t size, enum dma_data_direction dir,
75785 - struct dma_attrs *attrs);
75786 -- int (*map_sg)(struct device *dev, struct scatterlist *sg,
75787 -+ int (* const map_sg)(struct device *dev, struct scatterlist *sg,
75788 - int nents, enum dma_data_direction dir,
75789 - struct dma_attrs *attrs);
75790 -- void (*unmap_sg)(struct device *dev,
75791 -+ void (* const unmap_sg)(struct device *dev,
75792 - struct scatterlist *sg, int nents,
75793 - enum dma_data_direction dir,
75794 - struct dma_attrs *attrs);
75795 -- void (*sync_single_for_cpu)(struct device *dev,
75796 -+ void (* const sync_single_for_cpu)(struct device *dev,
75797 - dma_addr_t dma_handle, size_t size,
75798 - enum dma_data_direction dir);
75799 -- void (*sync_single_for_device)(struct device *dev,
75800 -+ void (* const sync_single_for_device)(struct device *dev,
75801 - dma_addr_t dma_handle, size_t size,
75802 - enum dma_data_direction dir);
75803 -- void (*sync_single_range_for_cpu)(struct device *dev,
75804 -+ void (* const sync_single_range_for_cpu)(struct device *dev,
75805 - dma_addr_t dma_handle,
75806 - unsigned long offset,
75807 - size_t size,
75808 - enum dma_data_direction dir);
75809 -- void (*sync_single_range_for_device)(struct device *dev,
75810 -+ void (* const sync_single_range_for_device)(struct device *dev,
75811 - dma_addr_t dma_handle,
75812 - unsigned long offset,
75813 - size_t size,
75814 - enum dma_data_direction dir);
75815 -- void (*sync_sg_for_cpu)(struct device *dev,
75816 -+ void (* const sync_sg_for_cpu)(struct device *dev,
75817 - struct scatterlist *sg, int nents,
75818 - enum dma_data_direction dir);
75819 -- void (*sync_sg_for_device)(struct device *dev,
75820 -+ void (* const sync_sg_for_device)(struct device *dev,
75821 - struct scatterlist *sg, int nents,
75822 - enum dma_data_direction dir);
75823 -- int (*mapping_error)(struct device *dev, dma_addr_t dma_addr);
75824 -- int (*dma_supported)(struct device *dev, u64 mask);
75825 -+ int (* const mapping_error)(struct device *dev, dma_addr_t dma_addr);
75826 -+ int (* const dma_supported)(struct device *dev, u64 mask);
75827 +diff -urNp linux-3.0.8/include/linux/dma-mapping.h linux-3.0.8/include/linux/dma-mapping.h
75828 +--- linux-3.0.8/include/linux/dma-mapping.h 2011-07-21 22:17:23.000000000 -0400
75829 ++++ linux-3.0.8/include/linux/dma-mapping.h 2011-08-26 19:49:56.000000000 -0400
75830 +@@ -50,7 +50,7 @@ struct dma_map_ops {
75831 + int (*dma_supported)(struct device *dev, u64 mask);
75832 int (*set_dma_mask)(struct device *dev, u64 mask);
75833 int is_phys;
75834 -};
75835 @@ -61613,21 +58029,21 @@ diff -urNp linux-2.6.32.48/include/linux/dma-mapping.h linux-2.6.32.48/include/l
75836
75837 #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
75838
75839 -diff -urNp linux-2.6.32.48/include/linux/dst.h linux-2.6.32.48/include/linux/dst.h
75840 ---- linux-2.6.32.48/include/linux/dst.h 2009-12-02 22:51:21.000000000 -0500
75841 -+++ linux-2.6.32.48/include/linux/dst.h 2011-11-12 12:46:47.000000000 -0500
75842 -@@ -380,7 +380,7 @@ struct dst_node
75843 - struct thread_pool *pool;
75844 -
75845 - /* Transaction IDs live here */
75846 -- atomic_long_t gen;
75847 -+ atomic_long_unchecked_t gen;
75848 +diff -urNp linux-3.0.8/include/linux/efi.h linux-3.0.8/include/linux/efi.h
75849 +--- linux-3.0.8/include/linux/efi.h 2011-07-21 22:17:23.000000000 -0400
75850 ++++ linux-3.0.8/include/linux/efi.h 2011-08-23 21:47:56.000000000 -0400
75851 +@@ -410,7 +410,7 @@ struct efivar_operations {
75852 + efi_get_variable_t *get_variable;
75853 + efi_get_next_variable_t *get_next_variable;
75854 + efi_set_variable_t *set_variable;
75855 +-};
75856 ++} __no_const;
75857
75858 + struct efivars {
75859 /*
75860 - * How frequently and how many times transaction
75861 -diff -urNp linux-2.6.32.48/include/linux/elf.h linux-2.6.32.48/include/linux/elf.h
75862 ---- linux-2.6.32.48/include/linux/elf.h 2009-12-02 22:51:21.000000000 -0500
75863 -+++ linux-2.6.32.48/include/linux/elf.h 2011-11-12 12:46:47.000000000 -0500
75864 +diff -urNp linux-3.0.8/include/linux/elf.h linux-3.0.8/include/linux/elf.h
75865 +--- linux-3.0.8/include/linux/elf.h 2011-07-21 22:17:23.000000000 -0400
75866 ++++ linux-3.0.8/include/linux/elf.h 2011-08-23 21:47:56.000000000 -0400
75867 @@ -49,6 +49,17 @@ typedef __s64 Elf64_Sxword;
75868 #define PT_GNU_EH_FRAME 0x6474e550
75869
75870 @@ -61644,9 +58060,9 @@ diff -urNp linux-2.6.32.48/include/linux/elf.h linux-2.6.32.48/include/linux/elf
75871 +/*#define EF_PAX_RANDEXEC 16*/ /* Randomize ET_EXEC base */
75872 +#define EF_PAX_SEGMEXEC 32 /* Segmentation based non-executable pages */
75873
75874 - /* These constants define the different elf file types */
75875 - #define ET_NONE 0
75876 -@@ -84,6 +95,8 @@ typedef __s64 Elf64_Sxword;
75877 + /*
75878 + * Extended Numbering
75879 +@@ -106,6 +117,8 @@ typedef __s64 Elf64_Sxword;
75880 #define DT_DEBUG 21
75881 #define DT_TEXTREL 22
75882 #define DT_JMPREL 23
75883 @@ -61655,7 +58071,7 @@ diff -urNp linux-2.6.32.48/include/linux/elf.h linux-2.6.32.48/include/linux/elf
75884 #define DT_ENCODING 32
75885 #define OLD_DT_LOOS 0x60000000
75886 #define DT_LOOS 0x6000000d
75887 -@@ -230,6 +243,19 @@ typedef struct elf64_hdr {
75888 +@@ -252,6 +265,19 @@ typedef struct elf64_hdr {
75889 #define PF_W 0x2
75890 #define PF_X 0x1
75891
75892 @@ -61675,7 +58091,7 @@ diff -urNp linux-2.6.32.48/include/linux/elf.h linux-2.6.32.48/include/linux/elf
75893 typedef struct elf32_phdr{
75894 Elf32_Word p_type;
75895 Elf32_Off p_offset;
75896 -@@ -322,6 +348,8 @@ typedef struct elf64_shdr {
75897 +@@ -344,6 +370,8 @@ typedef struct elf64_shdr {
75898 #define EI_OSABI 7
75899 #define EI_PAD 8
75900
75901 @@ -61684,49 +58100,61 @@ diff -urNp linux-2.6.32.48/include/linux/elf.h linux-2.6.32.48/include/linux/elf
75902 #define ELFMAG0 0x7f /* EI_MAG */
75903 #define ELFMAG1 'E'
75904 #define ELFMAG2 'L'
75905 -@@ -386,6 +414,7 @@ extern Elf32_Dyn _DYNAMIC [];
75906 - #define elf_phdr elf32_phdr
75907 +@@ -422,6 +450,7 @@ extern Elf32_Dyn _DYNAMIC [];
75908 #define elf_note elf32_note
75909 #define elf_addr_t Elf32_Off
75910 + #define Elf_Half Elf32_Half
75911 +#define elf_dyn Elf32_Dyn
75912
75913 #else
75914
75915 -@@ -394,6 +423,7 @@ extern Elf64_Dyn _DYNAMIC [];
75916 - #define elf_phdr elf64_phdr
75917 +@@ -432,6 +461,7 @@ extern Elf64_Dyn _DYNAMIC [];
75918 #define elf_note elf64_note
75919 #define elf_addr_t Elf64_Off
75920 + #define Elf_Half Elf64_Half
75921 +#define elf_dyn Elf64_Dyn
75922
75923 #endif
75924
75925 -diff -urNp linux-2.6.32.48/include/linux/fscache-cache.h linux-2.6.32.48/include/linux/fscache-cache.h
75926 ---- linux-2.6.32.48/include/linux/fscache-cache.h 2009-12-02 22:51:21.000000000 -0500
75927 -+++ linux-2.6.32.48/include/linux/fscache-cache.h 2011-11-12 12:46:47.000000000 -0500
75928 -@@ -116,7 +116,7 @@ struct fscache_operation {
75929 - #endif
75930 +diff -urNp linux-3.0.8/include/linux/firewire.h linux-3.0.8/include/linux/firewire.h
75931 +--- linux-3.0.8/include/linux/firewire.h 2011-07-21 22:17:23.000000000 -0400
75932 ++++ linux-3.0.8/include/linux/firewire.h 2011-08-23 21:47:56.000000000 -0400
75933 +@@ -428,7 +428,7 @@ struct fw_iso_context {
75934 + union {
75935 + fw_iso_callback_t sc;
75936 + fw_iso_mc_callback_t mc;
75937 +- } callback;
75938 ++ } __no_const callback;
75939 + void *callback_data;
75940 + };
75941 +
75942 +diff -urNp linux-3.0.8/include/linux/fscache-cache.h linux-3.0.8/include/linux/fscache-cache.h
75943 +--- linux-3.0.8/include/linux/fscache-cache.h 2011-07-21 22:17:23.000000000 -0400
75944 ++++ linux-3.0.8/include/linux/fscache-cache.h 2011-08-23 21:47:56.000000000 -0400
75945 +@@ -102,7 +102,7 @@ struct fscache_operation {
75946 + fscache_operation_release_t release;
75947 };
75948
75949 -extern atomic_t fscache_op_debug_id;
75950 +extern atomic_unchecked_t fscache_op_debug_id;
75951 - extern const struct slow_work_ops fscache_op_slow_work_ops;
75952 + extern void fscache_op_work_func(struct work_struct *work);
75953
75954 extern void fscache_enqueue_operation(struct fscache_operation *);
75955 -@@ -134,7 +134,7 @@ static inline void fscache_operation_ini
75956 - fscache_operation_release_t release)
75957 +@@ -122,7 +122,7 @@ static inline void fscache_operation_ini
75958 {
75959 + INIT_WORK(&op->work, fscache_op_work_func);
75960 atomic_set(&op->usage, 1);
75961 - op->debug_id = atomic_inc_return(&fscache_op_debug_id);
75962 + op->debug_id = atomic_inc_return_unchecked(&fscache_op_debug_id);
75963 + op->processor = processor;
75964 op->release = release;
75965 INIT_LIST_HEAD(&op->pend_link);
75966 - fscache_set_op_state(op, "Init");
75967 -diff -urNp linux-2.6.32.48/include/linux/fs.h linux-2.6.32.48/include/linux/fs.h
75968 ---- linux-2.6.32.48/include/linux/fs.h 2011-11-12 12:44:30.000000000 -0500
75969 -+++ linux-2.6.32.48/include/linux/fs.h 2011-11-12 12:46:47.000000000 -0500
75970 -@@ -90,6 +90,11 @@ struct inodes_stat_t {
75971 - /* Expect random access pattern */
75972 - #define FMODE_RANDOM ((__force fmode_t)4096)
75973 +diff -urNp linux-3.0.8/include/linux/fs.h linux-3.0.8/include/linux/fs.h
75974 +--- linux-3.0.8/include/linux/fs.h 2011-07-21 22:17:23.000000000 -0400
75975 ++++ linux-3.0.8/include/linux/fs.h 2011-08-26 19:49:56.000000000 -0400
75976 +@@ -109,6 +109,11 @@ struct inodes_stat_t {
75977 + /* File was opened by fanotify and shouldn't generate fanotify events */
75978 + #define FMODE_NONOTIFY ((__force fmode_t)0x1000000)
75979
75980 +/* Hack for grsec so as not to require read permission simply to execute
75981 + * a binary
75982 @@ -61736,204 +58164,76 @@ diff -urNp linux-2.6.32.48/include/linux/fs.h linux-2.6.32.48/include/linux/fs.h
75983 /*
75984 * The below are the various read and write types that we support. Some of
75985 * them include behavioral modifiers that send information down to the
75986 -@@ -568,41 +573,41 @@ typedef int (*read_actor_t)(read_descrip
75987 - unsigned long, unsigned long);
75988 -
75989 - struct address_space_operations {
75990 -- int (*writepage)(struct page *page, struct writeback_control *wbc);
75991 -- int (*readpage)(struct file *, struct page *);
75992 -- void (*sync_page)(struct page *);
75993 -+ int (* const writepage)(struct page *page, struct writeback_control *wbc);
75994 -+ int (* const readpage)(struct file *, struct page *);
75995 -+ void (* const sync_page)(struct page *);
75996 -
75997 - /* Write back some dirty pages from this mapping. */
75998 -- int (*writepages)(struct address_space *, struct writeback_control *);
75999 -+ int (* const writepages)(struct address_space *, struct writeback_control *);
76000 -
76001 - /* Set a page dirty. Return true if this dirtied it */
76002 -- int (*set_page_dirty)(struct page *page);
76003 -+ int (* const set_page_dirty)(struct page *page);
76004 -
76005 -- int (*readpages)(struct file *filp, struct address_space *mapping,
76006 -+ int (* const readpages)(struct file *filp, struct address_space *mapping,
76007 - struct list_head *pages, unsigned nr_pages);
76008 -
76009 -- int (*write_begin)(struct file *, struct address_space *mapping,
76010 -+ int (* const write_begin)(struct file *, struct address_space *mapping,
76011 - loff_t pos, unsigned len, unsigned flags,
76012 - struct page **pagep, void **fsdata);
76013 -- int (*write_end)(struct file *, struct address_space *mapping,
76014 -+ int (* const write_end)(struct file *, struct address_space *mapping,
76015 - loff_t pos, unsigned len, unsigned copied,
76016 - struct page *page, void *fsdata);
76017 -
76018 - /* Unfortunately this kludge is needed for FIBMAP. Don't use it */
76019 -- sector_t (*bmap)(struct address_space *, sector_t);
76020 -- void (*invalidatepage) (struct page *, unsigned long);
76021 -- int (*releasepage) (struct page *, gfp_t);
76022 -- ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
76023 -+ sector_t (* const bmap)(struct address_space *, sector_t);
76024 -+ void (* const invalidatepage) (struct page *, unsigned long);
76025 -+ int (* const releasepage) (struct page *, gfp_t);
76026 -+ ssize_t (* const direct_IO)(int, struct kiocb *, const struct iovec *iov,
76027 - loff_t offset, unsigned long nr_segs);
76028 -- int (*get_xip_mem)(struct address_space *, pgoff_t, int,
76029 -+ int (* const get_xip_mem)(struct address_space *, pgoff_t, int,
76030 - void **, unsigned long *);
76031 - /* migrate the contents of a page to the specified target */
76032 -- int (*migratepage) (struct address_space *,
76033 -+ int (* const migratepage) (struct address_space *,
76034 - struct page *, struct page *);
76035 -- int (*launder_page) (struct page *);
76036 -- int (*is_partially_uptodate) (struct page *, read_descriptor_t *,
76037 -+ int (* const launder_page) (struct page *);
76038 -+ int (* const is_partially_uptodate) (struct page *, read_descriptor_t *,
76039 - unsigned long);
76040 -- int (*error_remove_page)(struct address_space *, struct page *);
76041 -+ int (* const error_remove_page)(struct address_space *, struct page *);
76042 - };
76043 -
76044 - /*
76045 -@@ -1031,19 +1036,19 @@ static inline int file_check_writeable(s
76046 - typedef struct files_struct *fl_owner_t;
76047 -
76048 - struct file_lock_operations {
76049 -- void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
76050 -- void (*fl_release_private)(struct file_lock *);
76051 -+ void (* const fl_copy_lock)(struct file_lock *, struct file_lock *);
76052 -+ void (* const fl_release_private)(struct file_lock *);
76053 - };
76054 -
76055 - struct lock_manager_operations {
76056 -- int (*fl_compare_owner)(struct file_lock *, struct file_lock *);
76057 -- void (*fl_notify)(struct file_lock *); /* unblock callback */
76058 -- int (*fl_grant)(struct file_lock *, struct file_lock *, int);
76059 -- void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
76060 -- void (*fl_release_private)(struct file_lock *);
76061 -- void (*fl_break)(struct file_lock *);
76062 -- int (*fl_mylease)(struct file_lock *, struct file_lock *);
76063 -- int (*fl_change)(struct file_lock **, int);
76064 -+ int (* const fl_compare_owner)(struct file_lock *, struct file_lock *);
76065 -+ void (* const fl_notify)(struct file_lock *); /* unblock callback */
76066 -+ int (* const fl_grant)(struct file_lock *, struct file_lock *, int);
76067 -+ void (* const fl_copy_lock)(struct file_lock *, struct file_lock *);
76068 -+ void (* const fl_release_private)(struct file_lock *);
76069 -+ void (* const fl_break)(struct file_lock *);
76070 -+ int (* const fl_mylease)(struct file_lock *, struct file_lock *);
76071 -+ int (* const fl_change)(struct file_lock **, int);
76072 - };
76073 -
76074 - struct lock_manager {
76075 -@@ -1442,7 +1447,7 @@ struct fiemap_extent_info {
76076 - unsigned int fi_flags; /* Flags as passed from user */
76077 - unsigned int fi_extents_mapped; /* Number of mapped extents */
76078 - unsigned int fi_extents_max; /* Size of fiemap_extent array */
76079 -- struct fiemap_extent *fi_extents_start; /* Start of fiemap_extent
76080 -+ struct fiemap_extent __user *fi_extents_start; /* Start of fiemap_extent
76081 - * array */
76082 - };
76083 - int fiemap_fill_next_extent(struct fiemap_extent_info *info, u64 logical,
76084 -@@ -1512,7 +1517,8 @@ struct file_operations {
76085 - ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
76086 - ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
76087 +@@ -1571,7 +1576,8 @@ struct file_operations {
76088 int (*setlease)(struct file *, long, struct file_lock **);
76089 + long (*fallocate)(struct file *file, int mode, loff_t offset,
76090 + loff_t len);
76091 -};
76092 +} __do_const;
76093 +typedef struct file_operations __no_const file_operations_no_const;
76094
76095 - struct inode_operations {
76096 - int (*create) (struct inode *,struct dentry *,int, struct nameidata *);
76097 -@@ -1559,30 +1565,30 @@ extern ssize_t vfs_writev(struct file *,
76098 - unsigned long, loff_t *);
76099 -
76100 - struct super_operations {
76101 -- struct inode *(*alloc_inode)(struct super_block *sb);
76102 -- void (*destroy_inode)(struct inode *);
76103 -+ struct inode *(* const alloc_inode)(struct super_block *sb);
76104 -+ void (* const destroy_inode)(struct inode *);
76105 -
76106 -- void (*dirty_inode) (struct inode *);
76107 -- int (*write_inode) (struct inode *, int);
76108 -- void (*drop_inode) (struct inode *);
76109 -- void (*delete_inode) (struct inode *);
76110 -- void (*put_super) (struct super_block *);
76111 -- void (*write_super) (struct super_block *);
76112 -- int (*sync_fs)(struct super_block *sb, int wait);
76113 -- int (*freeze_fs) (struct super_block *);
76114 -- int (*unfreeze_fs) (struct super_block *);
76115 -- int (*statfs) (struct dentry *, struct kstatfs *);
76116 -- int (*remount_fs) (struct super_block *, int *, char *);
76117 -- void (*clear_inode) (struct inode *);
76118 -- void (*umount_begin) (struct super_block *);
76119 -+ void (* const dirty_inode) (struct inode *);
76120 -+ int (* const write_inode) (struct inode *, int);
76121 -+ void (* const drop_inode) (struct inode *);
76122 -+ void (* const delete_inode) (struct inode *);
76123 -+ void (* const put_super) (struct super_block *);
76124 -+ void (* const write_super) (struct super_block *);
76125 -+ int (* const sync_fs)(struct super_block *sb, int wait);
76126 -+ int (* const freeze_fs) (struct super_block *);
76127 -+ int (* const unfreeze_fs) (struct super_block *);
76128 -+ int (* const statfs) (struct dentry *, struct kstatfs *);
76129 -+ int (* const remount_fs) (struct super_block *, int *, char *);
76130 -+ void (* const clear_inode) (struct inode *);
76131 -+ void (* const umount_begin) (struct super_block *);
76132 -
76133 -- int (*show_options)(struct seq_file *, struct vfsmount *);
76134 -- int (*show_stats)(struct seq_file *, struct vfsmount *);
76135 -+ int (* const show_options)(struct seq_file *, struct vfsmount *);
76136 -+ int (* const show_stats)(struct seq_file *, struct vfsmount *);
76137 - #ifdef CONFIG_QUOTA
76138 -- ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
76139 -- ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
76140 -+ ssize_t (* const quota_read)(struct super_block *, int, char *, size_t, loff_t);
76141 -+ ssize_t (* const quota_write)(struct super_block *, int, const char *, size_t, loff_t);
76142 - #endif
76143 -- int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);
76144 -+ int (* const bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);
76145 - };
76146 + #define IPERM_FLAG_RCU 0x0001
76147 +
76148 +diff -urNp linux-3.0.8/include/linux/fsnotify.h linux-3.0.8/include/linux/fsnotify.h
76149 +--- linux-3.0.8/include/linux/fsnotify.h 2011-07-21 22:17:23.000000000 -0400
76150 ++++ linux-3.0.8/include/linux/fsnotify.h 2011-08-24 18:10:29.000000000 -0400
76151 +@@ -314,7 +314,7 @@ static inline void fsnotify_change(struc
76152 + */
76153 + static inline const unsigned char *fsnotify_oldname_init(const unsigned char *name)
76154 + {
76155 +- return kstrdup(name, GFP_KERNEL);
76156 ++ return (const unsigned char *)kstrdup((const char *)name, GFP_KERNEL);
76157 + }
76158
76159 /*
76160 -diff -urNp linux-2.6.32.48/include/linux/fs_struct.h linux-2.6.32.48/include/linux/fs_struct.h
76161 ---- linux-2.6.32.48/include/linux/fs_struct.h 2009-12-02 22:51:21.000000000 -0500
76162 -+++ linux-2.6.32.48/include/linux/fs_struct.h 2011-11-12 12:46:47.000000000 -0500
76163 -@@ -4,7 +4,7 @@
76164 - #include <linux/path.h>
76165 +diff -urNp linux-3.0.8/include/linux/fs_struct.h linux-3.0.8/include/linux/fs_struct.h
76166 +--- linux-3.0.8/include/linux/fs_struct.h 2011-07-21 22:17:23.000000000 -0400
76167 ++++ linux-3.0.8/include/linux/fs_struct.h 2011-08-23 21:47:56.000000000 -0400
76168 +@@ -6,7 +6,7 @@
76169 + #include <linux/seqlock.h>
76170
76171 struct fs_struct {
76172 - int users;
76173 + atomic_t users;
76174 - rwlock_t lock;
76175 + spinlock_t lock;
76176 + seqcount_t seq;
76177 int umask;
76178 - int in_exec;
76179 -diff -urNp linux-2.6.32.48/include/linux/ftrace_event.h linux-2.6.32.48/include/linux/ftrace_event.h
76180 ---- linux-2.6.32.48/include/linux/ftrace_event.h 2009-12-02 22:51:21.000000000 -0500
76181 -+++ linux-2.6.32.48/include/linux/ftrace_event.h 2011-11-12 12:46:47.000000000 -0500
76182 -@@ -163,7 +163,7 @@ extern int trace_define_field(struct ftr
76183 - int filter_type);
76184 - extern int trace_define_common_fields(struct ftrace_event_call *call);
76185 +diff -urNp linux-3.0.8/include/linux/ftrace_event.h linux-3.0.8/include/linux/ftrace_event.h
76186 +--- linux-3.0.8/include/linux/ftrace_event.h 2011-07-21 22:17:23.000000000 -0400
76187 ++++ linux-3.0.8/include/linux/ftrace_event.h 2011-08-23 21:47:56.000000000 -0400
76188 +@@ -96,7 +96,7 @@ struct trace_event_functions {
76189 + trace_print_func raw;
76190 + trace_print_func hex;
76191 + trace_print_func binary;
76192 +-};
76193 ++} __no_const;
76194 +
76195 + struct trace_event {
76196 + struct hlist_node node;
76197 +@@ -247,7 +247,7 @@ extern int trace_define_field(struct ftr
76198 + extern int trace_add_event_call(struct ftrace_event_call *call);
76199 + extern void trace_remove_event_call(struct ftrace_event_call *call);
76200
76201 -#define is_signed_type(type) (((type)(-1)) < 0)
76202 +#define is_signed_type(type) (((type)(-1)) < (type)1)
76203
76204 int trace_set_clr_event(const char *system, const char *event, int set);
76205
76206 -diff -urNp linux-2.6.32.48/include/linux/genhd.h linux-2.6.32.48/include/linux/genhd.h
76207 ---- linux-2.6.32.48/include/linux/genhd.h 2009-12-02 22:51:21.000000000 -0500
76208 -+++ linux-2.6.32.48/include/linux/genhd.h 2011-11-12 12:46:47.000000000 -0500
76209 -@@ -161,7 +161,7 @@ struct gendisk {
76210 +diff -urNp linux-3.0.8/include/linux/genhd.h linux-3.0.8/include/linux/genhd.h
76211 +--- linux-3.0.8/include/linux/genhd.h 2011-07-21 22:17:23.000000000 -0400
76212 ++++ linux-3.0.8/include/linux/genhd.h 2011-08-23 21:47:56.000000000 -0400
76213 +@@ -184,7 +184,7 @@ struct gendisk {
76214 + struct kobject *slave_dir;
76215
76216 struct timer_rand_state *random;
76217 -
76218 - atomic_t sync_io; /* RAID */
76219 + atomic_unchecked_t sync_io; /* RAID */
76220 - struct work_struct async_notify;
76221 + struct disk_events *ev;
76222 #ifdef CONFIG_BLK_DEV_INTEGRITY
76223 struct blk_integrity *integrity;
76224 -diff -urNp linux-2.6.32.48/include/linux/gracl.h linux-2.6.32.48/include/linux/gracl.h
76225 ---- linux-2.6.32.48/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500
76226 -+++ linux-2.6.32.48/include/linux/gracl.h 2011-11-12 12:46:47.000000000 -0500
76227 +diff -urNp linux-3.0.8/include/linux/gracl.h linux-3.0.8/include/linux/gracl.h
76228 +--- linux-3.0.8/include/linux/gracl.h 1969-12-31 19:00:00.000000000 -0500
76229 ++++ linux-3.0.8/include/linux/gracl.h 2011-08-23 21:48:14.000000000 -0400
76230 @@ -0,0 +1,317 @@
76231 +#ifndef GR_ACL_H
76232 +#define GR_ACL_H
76233 @@ -62252,9 +58552,9 @@ diff -urNp linux-2.6.32.48/include/linux/gracl.h linux-2.6.32.48/include/linux/g
76234 +
76235 +#endif
76236 +
76237 -diff -urNp linux-2.6.32.48/include/linux/gralloc.h linux-2.6.32.48/include/linux/gralloc.h
76238 ---- linux-2.6.32.48/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500
76239 -+++ linux-2.6.32.48/include/linux/gralloc.h 2011-11-12 12:46:47.000000000 -0500
76240 +diff -urNp linux-3.0.8/include/linux/gralloc.h linux-3.0.8/include/linux/gralloc.h
76241 +--- linux-3.0.8/include/linux/gralloc.h 1969-12-31 19:00:00.000000000 -0500
76242 ++++ linux-3.0.8/include/linux/gralloc.h 2011-08-23 21:48:14.000000000 -0400
76243 @@ -0,0 +1,9 @@
76244 +#ifndef __GRALLOC_H
76245 +#define __GRALLOC_H
76246 @@ -62265,9 +58565,9 @@ diff -urNp linux-2.6.32.48/include/linux/gralloc.h linux-2.6.32.48/include/linux
76247 +void *acl_alloc_num(unsigned long num, unsigned long len);
76248 +
76249 +#endif
76250 -diff -urNp linux-2.6.32.48/include/linux/grdefs.h linux-2.6.32.48/include/linux/grdefs.h
76251 ---- linux-2.6.32.48/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500
76252 -+++ linux-2.6.32.48/include/linux/grdefs.h 2011-11-12 12:46:47.000000000 -0500
76253 +diff -urNp linux-3.0.8/include/linux/grdefs.h linux-3.0.8/include/linux/grdefs.h
76254 +--- linux-3.0.8/include/linux/grdefs.h 1969-12-31 19:00:00.000000000 -0500
76255 ++++ linux-3.0.8/include/linux/grdefs.h 2011-08-23 21:48:14.000000000 -0400
76256 @@ -0,0 +1,140 @@
76257 +#ifndef GRDEFS_H
76258 +#define GRDEFS_H
76259 @@ -62295,7 +58595,7 @@ diff -urNp linux-2.6.32.48/include/linux/grdefs.h linux-2.6.32.48/include/linux/
76260 + GR_ROLE_TPE = 0x0100,
76261 + GR_ROLE_DOMAIN = 0x0200,
76262 + GR_ROLE_PAM = 0x0400,
76263 -+ GR_ROLE_PERSIST = 0x800
76264 ++ GR_ROLE_PERSIST = 0x0800
76265 +};
76266 +
76267 +/* ACL Subject and Object mode flags */
76268 @@ -62409,10 +58709,10 @@ diff -urNp linux-2.6.32.48/include/linux/grdefs.h linux-2.6.32.48/include/linux/
76269 +};
76270 +
76271 +#endif
76272 -diff -urNp linux-2.6.32.48/include/linux/grinternal.h linux-2.6.32.48/include/linux/grinternal.h
76273 ---- linux-2.6.32.48/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500
76274 -+++ linux-2.6.32.48/include/linux/grinternal.h 2011-11-12 12:46:47.000000000 -0500
76275 -@@ -0,0 +1,218 @@
76276 +diff -urNp linux-3.0.8/include/linux/grinternal.h linux-3.0.8/include/linux/grinternal.h
76277 +--- linux-3.0.8/include/linux/grinternal.h 1969-12-31 19:00:00.000000000 -0500
76278 ++++ linux-3.0.8/include/linux/grinternal.h 2011-10-20 00:47:28.000000000 -0400
76279 +@@ -0,0 +1,220 @@
76280 +#ifndef __GRINTERNAL_H
76281 +#define __GRINTERNAL_H
76282 +
76283 @@ -62452,6 +58752,7 @@ diff -urNp linux-2.6.32.48/include/linux/grinternal.h linux-2.6.32.48/include/li
76284 +extern int grsec_enable_harden_ptrace;
76285 +extern int grsec_enable_link;
76286 +extern int grsec_enable_fifo;
76287 ++extern int grsec_enable_execve;
76288 +extern int grsec_enable_shm;
76289 +extern int grsec_enable_execlog;
76290 +extern int grsec_enable_signal;
76291 @@ -62537,7 +58838,7 @@ diff -urNp linux-2.6.32.48/include/linux/grinternal.h linux-2.6.32.48/include/li
76292 + CAP_TO_MASK(CAP_SYS_BOOT) | CAP_TO_MASK(CAP_SYS_TIME) | \
76293 + CAP_TO_MASK(CAP_NET_RAW) | CAP_TO_MASK(CAP_SYS_TTY_CONFIG) | \
76294 + CAP_TO_MASK(CAP_IPC_OWNER) | CAP_TO_MASK(CAP_SETFCAP), \
76295 -+ CAP_TO_MASK(CAP_MAC_ADMIN) }}
76296 ++ CAP_TO_MASK(CAP_SYSLOG) | CAP_TO_MASK(CAP_MAC_ADMIN) }}
76297 +
76298 +#define security_learn(normal_msg,args...) \
76299 +({ \
76300 @@ -62549,6 +58850,7 @@ diff -urNp linux-2.6.32.48/include/linux/grinternal.h linux-2.6.32.48/include/li
76301 +enum {
76302 + GR_DO_AUDIT,
76303 + GR_DONT_AUDIT,
76304 ++ /* used for non-audit messages that we shouldn't kill the task on */
76305 + GR_DONT_AUDIT_GOOD
76306 +};
76307 +
76308 @@ -62631,9 +58933,9 @@ diff -urNp linux-2.6.32.48/include/linux/grinternal.h linux-2.6.32.48/include/li
76309 +#endif
76310 +
76311 +#endif
76312 -diff -urNp linux-2.6.32.48/include/linux/grmsg.h linux-2.6.32.48/include/linux/grmsg.h
76313 ---- linux-2.6.32.48/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500
76314 -+++ linux-2.6.32.48/include/linux/grmsg.h 2011-11-12 12:46:47.000000000 -0500
76315 +diff -urNp linux-3.0.8/include/linux/grmsg.h linux-3.0.8/include/linux/grmsg.h
76316 +--- linux-3.0.8/include/linux/grmsg.h 1969-12-31 19:00:00.000000000 -0500
76317 ++++ linux-3.0.8/include/linux/grmsg.h 2011-09-14 09:16:54.000000000 -0400
76318 @@ -0,0 +1,108 @@
76319 +#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"
76320 +#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"
76321 @@ -62743,17 +59045,16 @@ diff -urNp linux-2.6.32.48/include/linux/grmsg.h linux-2.6.32.48/include/linux/g
76322 +#define GR_VM86_MSG "denied use of vm86 by "
76323 +#define GR_PTRACE_AUDIT_MSG "process %.950s(%.16s:%d) attached to via ptrace by "
76324 +#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
76325 -diff -urNp linux-2.6.32.48/include/linux/grsecurity.h linux-2.6.32.48/include/linux/grsecurity.h
76326 ---- linux-2.6.32.48/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
76327 -+++ linux-2.6.32.48/include/linux/grsecurity.h 2011-11-12 12:46:47.000000000 -0500
76328 -@@ -0,0 +1,218 @@
76329 +diff -urNp linux-3.0.8/include/linux/grsecurity.h linux-3.0.8/include/linux/grsecurity.h
76330 +--- linux-3.0.8/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
76331 ++++ linux-3.0.8/include/linux/grsecurity.h 2011-10-17 06:35:30.000000000 -0400
76332 +@@ -0,0 +1,228 @@
76333 +#ifndef GR_SECURITY_H
76334 +#define GR_SECURITY_H
76335 +#include <linux/fs.h>
76336 +#include <linux/fs_struct.h>
76337 +#include <linux/binfmts.h>
76338 +#include <linux/gracl.h>
76339 -+#include <linux/compat.h>
76340 +
76341 +/* notify of brain-dead configs */
76342 +#if defined(CONFIG_GRKERNSEC_PROC_USER) && defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
76343 @@ -62775,6 +59076,20 @@ diff -urNp linux-2.6.32.48/include/linux/grsecurity.h linux-2.6.32.48/include/li
76344 +#error "CONFIG_PAX enabled, but no PaX options are enabled."
76345 +#endif
76346 +
76347 ++#include <linux/compat.h>
76348 ++
76349 ++struct user_arg_ptr {
76350 ++#ifdef CONFIG_COMPAT
76351 ++ bool is_compat;
76352 ++#endif
76353 ++ union {
76354 ++ const char __user *const __user *native;
76355 ++#ifdef CONFIG_COMPAT
76356 ++ compat_uptr_t __user *compat;
76357 ++#endif
76358 ++ } ptr;
76359 ++};
76360 ++
76361 +void gr_handle_brute_attach(struct task_struct *p, unsigned long mm_flags);
76362 +void gr_handle_brute_check(void);
76363 +void gr_handle_kernel_exploit(void);
76364 @@ -62826,10 +59141,7 @@ diff -urNp linux-2.6.32.48/include/linux/grsecurity.h linux-2.6.32.48/include/li
76365 + const struct vfsmount *mnt);
76366 +void gr_log_chroot_exec(const struct dentry *dentry,
76367 + const struct vfsmount *mnt);
76368 -+void gr_handle_exec_args(struct linux_binprm *bprm, const char __user *const __user *argv);
76369 -+#ifdef CONFIG_COMPAT
76370 -+void gr_handle_exec_args_compat(struct linux_binprm *bprm, compat_uptr_t __user *argv);
76371 -+#endif
76372 ++void gr_handle_exec_args(struct linux_binprm *bprm, struct user_arg_ptr argv);
76373 +void gr_log_remount(const char *devname, const int retval);
76374 +void gr_log_unmount(const char *devname, const int retval);
76375 +void gr_log_mount(const char *from, const char *to, const int retval);
76376 @@ -62965,22 +59277,45 @@ diff -urNp linux-2.6.32.48/include/linux/grsecurity.h linux-2.6.32.48/include/li
76377 +#endif
76378 +
76379 +#endif
76380 -diff -urNp linux-2.6.32.48/include/linux/hdpu_features.h linux-2.6.32.48/include/linux/hdpu_features.h
76381 ---- linux-2.6.32.48/include/linux/hdpu_features.h 2009-12-02 22:51:21.000000000 -0500
76382 -+++ linux-2.6.32.48/include/linux/hdpu_features.h 2011-11-12 12:46:47.000000000 -0500
76383 -@@ -3,7 +3,7 @@
76384 - struct cpustate_t {
76385 - spinlock_t lock;
76386 - int excl;
76387 -- int open_count;
76388 -+ atomic_t open_count;
76389 - unsigned char cached_val;
76390 - int inited;
76391 - unsigned long *set_addr;
76392 -diff -urNp linux-2.6.32.48/include/linux/highmem.h linux-2.6.32.48/include/linux/highmem.h
76393 ---- linux-2.6.32.48/include/linux/highmem.h 2009-12-02 22:51:21.000000000 -0500
76394 -+++ linux-2.6.32.48/include/linux/highmem.h 2011-11-12 12:46:47.000000000 -0500
76395 -@@ -137,6 +137,18 @@ static inline void clear_highpage(struct
76396 +diff -urNp linux-3.0.8/include/linux/grsock.h linux-3.0.8/include/linux/grsock.h
76397 +--- linux-3.0.8/include/linux/grsock.h 1969-12-31 19:00:00.000000000 -0500
76398 ++++ linux-3.0.8/include/linux/grsock.h 2011-08-23 21:48:14.000000000 -0400
76399 +@@ -0,0 +1,19 @@
76400 ++#ifndef __GRSOCK_H
76401 ++#define __GRSOCK_H
76402 ++
76403 ++extern void gr_attach_curr_ip(const struct sock *sk);
76404 ++extern int gr_handle_sock_all(const int family, const int type,
76405 ++ const int protocol);
76406 ++extern int gr_handle_sock_server(const struct sockaddr *sck);
76407 ++extern int gr_handle_sock_server_other(const struct sock *sck);
76408 ++extern int gr_handle_sock_client(const struct sockaddr *sck);
76409 ++extern int gr_search_connect(struct socket * sock,
76410 ++ struct sockaddr_in * addr);
76411 ++extern int gr_search_bind(struct socket * sock,
76412 ++ struct sockaddr_in * addr);
76413 ++extern int gr_search_listen(struct socket * sock);
76414 ++extern int gr_search_accept(struct socket * sock);
76415 ++extern int gr_search_socket(const int domain, const int type,
76416 ++ const int protocol);
76417 ++
76418 ++#endif
76419 +diff -urNp linux-3.0.8/include/linux/hid.h linux-3.0.8/include/linux/hid.h
76420 +--- linux-3.0.8/include/linux/hid.h 2011-07-21 22:17:23.000000000 -0400
76421 ++++ linux-3.0.8/include/linux/hid.h 2011-08-23 21:47:56.000000000 -0400
76422 +@@ -675,7 +675,7 @@ struct hid_ll_driver {
76423 + unsigned int code, int value);
76424 +
76425 + int (*parse)(struct hid_device *hdev);
76426 +-};
76427 ++} __no_const;
76428 +
76429 + #define PM_HINT_FULLON 1<<5
76430 + #define PM_HINT_NORMAL 1<<1
76431 +diff -urNp linux-3.0.8/include/linux/highmem.h linux-3.0.8/include/linux/highmem.h
76432 +--- linux-3.0.8/include/linux/highmem.h 2011-07-21 22:17:23.000000000 -0400
76433 ++++ linux-3.0.8/include/linux/highmem.h 2011-08-23 21:47:56.000000000 -0400
76434 +@@ -185,6 +185,18 @@ static inline void clear_highpage(struct
76435 kunmap_atomic(kaddr, KM_USER0);
76436 }
76437
76438 @@ -62999,10 +59334,10 @@ diff -urNp linux-2.6.32.48/include/linux/highmem.h linux-2.6.32.48/include/linux
76439 static inline void zero_user_segments(struct page *page,
76440 unsigned start1, unsigned end1,
76441 unsigned start2, unsigned end2)
76442 -diff -urNp linux-2.6.32.48/include/linux/i2c.h linux-2.6.32.48/include/linux/i2c.h
76443 ---- linux-2.6.32.48/include/linux/i2c.h 2009-12-02 22:51:21.000000000 -0500
76444 -+++ linux-2.6.32.48/include/linux/i2c.h 2011-11-12 12:46:47.000000000 -0500
76445 -@@ -325,6 +325,7 @@ struct i2c_algorithm {
76446 +diff -urNp linux-3.0.8/include/linux/i2c.h linux-3.0.8/include/linux/i2c.h
76447 +--- linux-3.0.8/include/linux/i2c.h 2011-07-21 22:17:23.000000000 -0400
76448 ++++ linux-3.0.8/include/linux/i2c.h 2011-08-23 21:47:56.000000000 -0400
76449 +@@ -346,6 +346,7 @@ struct i2c_algorithm {
76450 /* To determine what the adapter supports */
76451 u32 (*functionality) (struct i2c_adapter *);
76452 };
76453 @@ -63010,9 +59345,9 @@ diff -urNp linux-2.6.32.48/include/linux/i2c.h linux-2.6.32.48/include/linux/i2c
76454
76455 /*
76456 * i2c_adapter is the structure used to identify a physical i2c bus along
76457 -diff -urNp linux-2.6.32.48/include/linux/i2o.h linux-2.6.32.48/include/linux/i2o.h
76458 ---- linux-2.6.32.48/include/linux/i2o.h 2009-12-02 22:51:21.000000000 -0500
76459 -+++ linux-2.6.32.48/include/linux/i2o.h 2011-11-12 12:46:47.000000000 -0500
76460 +diff -urNp linux-3.0.8/include/linux/i2o.h linux-3.0.8/include/linux/i2o.h
76461 +--- linux-3.0.8/include/linux/i2o.h 2011-07-21 22:17:23.000000000 -0400
76462 ++++ linux-3.0.8/include/linux/i2o.h 2011-08-23 21:47:56.000000000 -0400
76463 @@ -564,7 +564,7 @@ struct i2o_controller {
76464 struct i2o_device *exec; /* Executive */
76465 #if BITS_PER_LONG == 64
76466 @@ -63022,11 +59357,30 @@ diff -urNp linux-2.6.32.48/include/linux/i2o.h linux-2.6.32.48/include/linux/i2o
76467 struct list_head context_list; /* list of context id's
76468 and pointers */
76469 #endif
76470 -diff -urNp linux-2.6.32.48/include/linux/init_task.h linux-2.6.32.48/include/linux/init_task.h
76471 ---- linux-2.6.32.48/include/linux/init_task.h 2009-12-02 22:51:21.000000000 -0500
76472 -+++ linux-2.6.32.48/include/linux/init_task.h 2011-11-12 12:46:47.000000000 -0500
76473 -@@ -83,6 +83,12 @@ extern struct group_info init_groups;
76474 - #define INIT_IDS
76475 +diff -urNp linux-3.0.8/include/linux/init.h linux-3.0.8/include/linux/init.h
76476 +--- linux-3.0.8/include/linux/init.h 2011-07-21 22:17:23.000000000 -0400
76477 ++++ linux-3.0.8/include/linux/init.h 2011-08-23 21:47:56.000000000 -0400
76478 +@@ -293,13 +293,13 @@ void __init parse_early_options(char *cm
76479 +
76480 + /* Each module must use one module_init(). */
76481 + #define module_init(initfn) \
76482 +- static inline initcall_t __inittest(void) \
76483 ++ static inline __used initcall_t __inittest(void) \
76484 + { return initfn; } \
76485 + int init_module(void) __attribute__((alias(#initfn)));
76486 +
76487 + /* This is only required if you want to be unloadable. */
76488 + #define module_exit(exitfn) \
76489 +- static inline exitcall_t __exittest(void) \
76490 ++ static inline __used exitcall_t __exittest(void) \
76491 + { return exitfn; } \
76492 + void cleanup_module(void) __attribute__((alias(#exitfn)));
76493 +
76494 +diff -urNp linux-3.0.8/include/linux/init_task.h linux-3.0.8/include/linux/init_task.h
76495 +--- linux-3.0.8/include/linux/init_task.h 2011-07-21 22:17:23.000000000 -0400
76496 ++++ linux-3.0.8/include/linux/init_task.h 2011-08-23 21:47:56.000000000 -0400
76497 +@@ -126,6 +126,12 @@ extern struct cred init_cred;
76498 + # define INIT_PERF_EVENTS(tsk)
76499 #endif
76500
76501 +#ifdef CONFIG_X86
76502 @@ -63035,20 +59389,20 @@ diff -urNp linux-2.6.32.48/include/linux/init_task.h linux-2.6.32.48/include/lin
76503 +#define INIT_TASK_THREAD_INFO
76504 +#endif
76505 +
76506 - #ifdef CONFIG_SECURITY_FILE_CAPABILITIES
76507 /*
76508 - * Because of the reduced scope of CAP_SETPCAP when filesystem
76509 -@@ -156,6 +162,7 @@ extern struct cred init_cred;
76510 - __MUTEX_INITIALIZER(tsk.cred_guard_mutex), \
76511 + * INIT_TASK is used to set up the first task table, touch at
76512 + * your own risk!. Base=0, limit=0x1fffff (=2MB)
76513 +@@ -164,6 +170,7 @@ extern struct cred init_cred;
76514 + RCU_INIT_POINTER(.cred, &init_cred), \
76515 .comm = "swapper", \
76516 .thread = INIT_THREAD, \
76517 + INIT_TASK_THREAD_INFO \
76518 .fs = &init_fs, \
76519 .files = &init_files, \
76520 .signal = &init_signals, \
76521 -diff -urNp linux-2.6.32.48/include/linux/intel-iommu.h linux-2.6.32.48/include/linux/intel-iommu.h
76522 ---- linux-2.6.32.48/include/linux/intel-iommu.h 2009-12-02 22:51:21.000000000 -0500
76523 -+++ linux-2.6.32.48/include/linux/intel-iommu.h 2011-11-12 12:46:47.000000000 -0500
76524 +diff -urNp linux-3.0.8/include/linux/intel-iommu.h linux-3.0.8/include/linux/intel-iommu.h
76525 +--- linux-3.0.8/include/linux/intel-iommu.h 2011-07-21 22:17:23.000000000 -0400
76526 ++++ linux-3.0.8/include/linux/intel-iommu.h 2011-08-23 21:47:56.000000000 -0400
76527 @@ -296,7 +296,7 @@ struct iommu_flush {
76528 u8 fm, u64 type);
76529 void (*flush_iotlb)(struct intel_iommu *iommu, u16 did, u64 addr,
76530 @@ -63058,10 +59412,10 @@ diff -urNp linux-2.6.32.48/include/linux/intel-iommu.h linux-2.6.32.48/include/l
76531
76532 enum {
76533 SR_DMAR_FECTL_REG,
76534 -diff -urNp linux-2.6.32.48/include/linux/interrupt.h linux-2.6.32.48/include/linux/interrupt.h
76535 ---- linux-2.6.32.48/include/linux/interrupt.h 2011-11-12 12:44:30.000000000 -0500
76536 -+++ linux-2.6.32.48/include/linux/interrupt.h 2011-11-12 12:46:47.000000000 -0500
76537 -@@ -363,7 +363,7 @@ enum
76538 +diff -urNp linux-3.0.8/include/linux/interrupt.h linux-3.0.8/include/linux/interrupt.h
76539 +--- linux-3.0.8/include/linux/interrupt.h 2011-07-21 22:17:23.000000000 -0400
76540 ++++ linux-3.0.8/include/linux/interrupt.h 2011-08-23 21:47:56.000000000 -0400
76541 +@@ -422,7 +422,7 @@ enum
76542 /* map softirq index to softirq name. update 'softirq_to_name' in
76543 * kernel/softirq.c when adding a new softirq.
76544 */
76545 @@ -63070,7 +59424,7 @@ diff -urNp linux-2.6.32.48/include/linux/interrupt.h linux-2.6.32.48/include/lin
76546
76547 /* softirq mask and active fields moved to irq_cpustat_t in
76548 * asm/hardirq.h to get better cache usage. KAO
76549 -@@ -371,12 +371,12 @@ extern char *softirq_to_name[NR_SOFTIRQS
76550 +@@ -430,12 +430,12 @@ extern char *softirq_to_name[NR_SOFTIRQS
76551
76552 struct softirq_action
76553 {
76554 @@ -63083,28 +59437,11 @@ diff -urNp linux-2.6.32.48/include/linux/interrupt.h linux-2.6.32.48/include/lin
76555 -extern void open_softirq(int nr, void (*action)(struct softirq_action *));
76556 +extern void open_softirq(int nr, void (*action)(void));
76557 extern void softirq_init(void);
76558 - #define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
76559 - extern void raise_softirq_irqoff(unsigned int nr);
76560 -diff -urNp linux-2.6.32.48/include/linux/irq.h linux-2.6.32.48/include/linux/irq.h
76561 ---- linux-2.6.32.48/include/linux/irq.h 2011-11-12 12:44:30.000000000 -0500
76562 -+++ linux-2.6.32.48/include/linux/irq.h 2011-11-12 12:46:47.000000000 -0500
76563 -@@ -438,12 +438,12 @@ extern int set_irq_msi(unsigned int irq,
76564 - static inline bool alloc_desc_masks(struct irq_desc *desc, int node,
76565 - bool boot)
76566 - {
76567 -+#ifdef CONFIG_CPUMASK_OFFSTACK
76568 - gfp_t gfp = GFP_ATOMIC;
76569 -
76570 - if (boot)
76571 - gfp = GFP_NOWAIT;
76572 -
76573 --#ifdef CONFIG_CPUMASK_OFFSTACK
76574 - if (!alloc_cpumask_var_node(&desc->affinity, gfp, node))
76575 - return false;
76576 -
76577 -diff -urNp linux-2.6.32.48/include/linux/kallsyms.h linux-2.6.32.48/include/linux/kallsyms.h
76578 ---- linux-2.6.32.48/include/linux/kallsyms.h 2009-12-02 22:51:21.000000000 -0500
76579 -+++ linux-2.6.32.48/include/linux/kallsyms.h 2011-11-12 12:46:47.000000000 -0500
76580 + static inline void __raise_softirq_irqoff(unsigned int nr)
76581 + {
76582 +diff -urNp linux-3.0.8/include/linux/kallsyms.h linux-3.0.8/include/linux/kallsyms.h
76583 +--- linux-3.0.8/include/linux/kallsyms.h 2011-07-21 22:17:23.000000000 -0400
76584 ++++ linux-3.0.8/include/linux/kallsyms.h 2011-08-23 21:48:14.000000000 -0400
76585 @@ -15,7 +15,8 @@
76586
76587 struct module;
76588 @@ -63115,13 +59452,14 @@ diff -urNp linux-2.6.32.48/include/linux/kallsyms.h linux-2.6.32.48/include/linu
76589 /* Lookup the address for a symbol. Returns 0 if not found. */
76590 unsigned long kallsyms_lookup_name(const char *name);
76591
76592 -@@ -92,6 +93,15 @@ static inline int lookup_symbol_attrs(un
76593 +@@ -99,6 +100,16 @@ static inline int lookup_symbol_attrs(un
76594 /* Stupid that this does nothing, but I didn't create this mess. */
76595 #define __print_symbol(fmt, addr)
76596 #endif /*CONFIG_KALLSYMS*/
76597 +#else /* when included by kallsyms.c, vsnprintf.c, or
76598 -+ arch/x86/kernel/dumpstack.c, with HIDESYM enabled */
76599 ++ arch/x86/kernel/dumpstack.c, with HIDESYM enabled */
76600 +extern void __print_symbol(const char *fmt, unsigned long address);
76601 ++extern int sprint_backtrace(char *buffer, unsigned long address);
76602 +extern int sprint_symbol(char *buffer, unsigned long address);
76603 +const char *kallsyms_lookup(unsigned long addr,
76604 + unsigned long *symbolsize,
76605 @@ -63131,22 +59469,20 @@ diff -urNp linux-2.6.32.48/include/linux/kallsyms.h linux-2.6.32.48/include/linu
76606
76607 /* This macro allows us to keep printk typechecking */
76608 static void __check_printsym_format(const char *fmt, ...)
76609 -diff -urNp linux-2.6.32.48/include/linux/kgdb.h linux-2.6.32.48/include/linux/kgdb.h
76610 ---- linux-2.6.32.48/include/linux/kgdb.h 2009-12-02 22:51:21.000000000 -0500
76611 -+++ linux-2.6.32.48/include/linux/kgdb.h 2011-11-12 12:46:47.000000000 -0500
76612 -@@ -74,8 +74,8 @@ void kgdb_breakpoint(void);
76613 -
76614 - extern int kgdb_connected;
76615 +diff -urNp linux-3.0.8/include/linux/kgdb.h linux-3.0.8/include/linux/kgdb.h
76616 +--- linux-3.0.8/include/linux/kgdb.h 2011-07-21 22:17:23.000000000 -0400
76617 ++++ linux-3.0.8/include/linux/kgdb.h 2011-08-26 19:49:56.000000000 -0400
76618 +@@ -53,7 +53,7 @@ extern int kgdb_connected;
76619 + extern int kgdb_io_module_registered;
76620
76621 --extern atomic_t kgdb_setting_breakpoint;
76622 + extern atomic_t kgdb_setting_breakpoint;
76623 -extern atomic_t kgdb_cpu_doing_single_step;
76624 -+extern atomic_unchecked_t kgdb_setting_breakpoint;
76625 +extern atomic_unchecked_t kgdb_cpu_doing_single_step;
76626
76627 extern struct task_struct *kgdb_usethread;
76628 extern struct task_struct *kgdb_contthread;
76629 -@@ -235,7 +235,7 @@ struct kgdb_arch {
76630 - int (*remove_hw_breakpoint)(unsigned long, int, enum kgdb_bptype);
76631 +@@ -251,7 +251,7 @@ struct kgdb_arch {
76632 + void (*disable_hw_break)(struct pt_regs *regs);
76633 void (*remove_all_hw_break)(void);
76634 void (*correct_hw_break)(void);
76635 -};
76636 @@ -63154,29 +59490,19 @@ diff -urNp linux-2.6.32.48/include/linux/kgdb.h linux-2.6.32.48/include/linux/kg
76637
76638 /**
76639 * struct kgdb_io - Describe the interface for an I/O driver to talk with KGDB.
76640 -@@ -257,14 +257,14 @@ struct kgdb_io {
76641 - int (*init) (void);
76642 +@@ -276,7 +276,7 @@ struct kgdb_io {
76643 void (*pre_exception) (void);
76644 void (*post_exception) (void);
76645 + int is_console;
76646 -};
76647 +} __do_const;
76648
76649 --extern struct kgdb_arch arch_kgdb_ops;
76650 -+extern const struct kgdb_arch arch_kgdb_ops;
76651 + extern struct kgdb_arch arch_kgdb_ops;
76652
76653 - extern unsigned long __weak kgdb_arch_pc(int exception, struct pt_regs *regs);
76654 -
76655 --extern int kgdb_register_io_module(struct kgdb_io *local_kgdb_io_ops);
76656 --extern void kgdb_unregister_io_module(struct kgdb_io *local_kgdb_io_ops);
76657 -+extern int kgdb_register_io_module(const struct kgdb_io *local_kgdb_io_ops);
76658 -+extern void kgdb_unregister_io_module(const struct kgdb_io *local_kgdb_io_ops);
76659 -
76660 - extern int kgdb_hex2long(char **ptr, unsigned long *long_val);
76661 - extern int kgdb_mem2hex(char *mem, char *buf, int count);
76662 -diff -urNp linux-2.6.32.48/include/linux/kmod.h linux-2.6.32.48/include/linux/kmod.h
76663 ---- linux-2.6.32.48/include/linux/kmod.h 2009-12-02 22:51:21.000000000 -0500
76664 -+++ linux-2.6.32.48/include/linux/kmod.h 2011-11-12 12:46:47.000000000 -0500
76665 -@@ -31,6 +31,8 @@
76666 +diff -urNp linux-3.0.8/include/linux/kmod.h linux-3.0.8/include/linux/kmod.h
76667 +--- linux-3.0.8/include/linux/kmod.h 2011-07-21 22:17:23.000000000 -0400
76668 ++++ linux-3.0.8/include/linux/kmod.h 2011-08-23 21:48:14.000000000 -0400
76669 +@@ -34,6 +34,8 @@ extern char modprobe_path[]; /* for sysc
76670 * usually useless though. */
76671 extern int __request_module(bool wait, const char *name, ...) \
76672 __attribute__((format(printf, 2, 3)));
76673 @@ -63185,70 +59511,19 @@ diff -urNp linux-2.6.32.48/include/linux/kmod.h linux-2.6.32.48/include/linux/km
76674 #define request_module(mod...) __request_module(true, mod)
76675 #define request_module_nowait(mod...) __request_module(false, mod)
76676 #define try_then_request_module(x, mod...) \
76677 -diff -urNp linux-2.6.32.48/include/linux/kobject.h linux-2.6.32.48/include/linux/kobject.h
76678 ---- linux-2.6.32.48/include/linux/kobject.h 2009-12-02 22:51:21.000000000 -0500
76679 -+++ linux-2.6.32.48/include/linux/kobject.h 2011-11-12 12:46:47.000000000 -0500
76680 -@@ -106,7 +106,7 @@ extern char *kobject_get_path(struct kob
76681 -
76682 - struct kobj_type {
76683 - void (*release)(struct kobject *kobj);
76684 -- struct sysfs_ops *sysfs_ops;
76685 -+ const struct sysfs_ops *sysfs_ops;
76686 - struct attribute **default_attrs;
76687 - };
76688 -
76689 -@@ -118,9 +118,9 @@ struct kobj_uevent_env {
76690 - };
76691 -
76692 - struct kset_uevent_ops {
76693 -- int (*filter)(struct kset *kset, struct kobject *kobj);
76694 -- const char *(*name)(struct kset *kset, struct kobject *kobj);
76695 -- int (*uevent)(struct kset *kset, struct kobject *kobj,
76696 -+ int (* const filter)(struct kset *kset, struct kobject *kobj);
76697 -+ const char *(* const name)(struct kset *kset, struct kobject *kobj);
76698 -+ int (* const uevent)(struct kset *kset, struct kobject *kobj,
76699 - struct kobj_uevent_env *env);
76700 - };
76701 -
76702 -@@ -132,7 +132,7 @@ struct kobj_attribute {
76703 - const char *buf, size_t count);
76704 - };
76705 -
76706 --extern struct sysfs_ops kobj_sysfs_ops;
76707 -+extern const struct sysfs_ops kobj_sysfs_ops;
76708 -
76709 - /**
76710 - * struct kset - a set of kobjects of a specific type, belonging to a specific subsystem.
76711 -@@ -155,14 +155,14 @@ struct kset {
76712 - struct list_head list;
76713 - spinlock_t list_lock;
76714 - struct kobject kobj;
76715 -- struct kset_uevent_ops *uevent_ops;
76716 -+ const struct kset_uevent_ops *uevent_ops;
76717 - };
76718 -
76719 - extern void kset_init(struct kset *kset);
76720 - extern int __must_check kset_register(struct kset *kset);
76721 - extern void kset_unregister(struct kset *kset);
76722 - extern struct kset * __must_check kset_create_and_add(const char *name,
76723 -- struct kset_uevent_ops *u,
76724 -+ const struct kset_uevent_ops *u,
76725 - struct kobject *parent_kobj);
76726 -
76727 - static inline struct kset *to_kset(struct kobject *kobj)
76728 -diff -urNp linux-2.6.32.48/include/linux/kvm_host.h linux-2.6.32.48/include/linux/kvm_host.h
76729 ---- linux-2.6.32.48/include/linux/kvm_host.h 2011-11-12 12:44:30.000000000 -0500
76730 -+++ linux-2.6.32.48/include/linux/kvm_host.h 2011-11-12 12:46:47.000000000 -0500
76731 -@@ -210,7 +210,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vc
76732 +diff -urNp linux-3.0.8/include/linux/kvm_host.h linux-3.0.8/include/linux/kvm_host.h
76733 +--- linux-3.0.8/include/linux/kvm_host.h 2011-07-21 22:17:23.000000000 -0400
76734 ++++ linux-3.0.8/include/linux/kvm_host.h 2011-08-23 21:47:56.000000000 -0400
76735 +@@ -307,7 +307,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vc
76736 void vcpu_load(struct kvm_vcpu *vcpu);
76737 void vcpu_put(struct kvm_vcpu *vcpu);
76738
76739 --int kvm_init(void *opaque, unsigned int vcpu_size,
76740 -+int kvm_init(const void *opaque, unsigned int vcpu_size,
76741 +-int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
76742 ++int kvm_init(const void *opaque, unsigned vcpu_size, unsigned vcpu_align,
76743 struct module *module);
76744 void kvm_exit(void);
76745
76746 -@@ -316,7 +316,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(
76747 +@@ -446,7 +446,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(
76748 struct kvm_guest_debug *dbg);
76749 int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
76750
76751 @@ -63257,33 +59532,10 @@ diff -urNp linux-2.6.32.48/include/linux/kvm_host.h linux-2.6.32.48/include/linu
76752 void kvm_arch_exit(void);
76753
76754 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
76755 -diff -urNp linux-2.6.32.48/include/linux/libata.h linux-2.6.32.48/include/linux/libata.h
76756 ---- linux-2.6.32.48/include/linux/libata.h 2011-11-12 12:44:30.000000000 -0500
76757 -+++ linux-2.6.32.48/include/linux/libata.h 2011-11-12 12:46:47.000000000 -0500
76758 -@@ -525,11 +525,11 @@ struct ata_ioports {
76759 -
76760 - struct ata_host {
76761 - spinlock_t lock;
76762 -- struct device *dev;
76763 -+ struct device *dev;
76764 - void __iomem * const *iomap;
76765 - unsigned int n_ports;
76766 - void *private_data;
76767 -- struct ata_port_operations *ops;
76768 -+ const struct ata_port_operations *ops;
76769 - unsigned long flags;
76770 - #ifdef CONFIG_ATA_ACPI
76771 - acpi_handle acpi_handle;
76772 -@@ -710,7 +710,7 @@ struct ata_link {
76773 -
76774 - struct ata_port {
76775 - struct Scsi_Host *scsi_host; /* our co-allocated scsi host */
76776 -- struct ata_port_operations *ops;
76777 -+ const struct ata_port_operations *ops;
76778 - spinlock_t *lock;
76779 - /* Flags owned by the EH context. Only EH should touch these once the
76780 - port is active */
76781 -@@ -884,7 +884,7 @@ struct ata_port_operations {
76782 +diff -urNp linux-3.0.8/include/linux/libata.h linux-3.0.8/include/linux/libata.h
76783 +--- linux-3.0.8/include/linux/libata.h 2011-07-21 22:17:23.000000000 -0400
76784 ++++ linux-3.0.8/include/linux/libata.h 2011-08-26 19:49:56.000000000 -0400
76785 +@@ -899,7 +899,7 @@ struct ata_port_operations {
76786 * fields must be pointers.
76787 */
76788 const struct ata_port_operations *inherits;
76789 @@ -63292,56 +59544,9 @@ diff -urNp linux-2.6.32.48/include/linux/libata.h linux-2.6.32.48/include/linux/
76790
76791 struct ata_port_info {
76792 unsigned long flags;
76793 -@@ -892,7 +892,7 @@ struct ata_port_info {
76794 - unsigned long pio_mask;
76795 - unsigned long mwdma_mask;
76796 - unsigned long udma_mask;
76797 -- struct ata_port_operations *port_ops;
76798 -+ const struct ata_port_operations *port_ops;
76799 - void *private_data;
76800 - };
76801 -
76802 -@@ -916,7 +916,7 @@ extern const unsigned long sata_deb_timi
76803 - extern const unsigned long sata_deb_timing_hotplug[];
76804 - extern const unsigned long sata_deb_timing_long[];
76805 -
76806 --extern struct ata_port_operations ata_dummy_port_ops;
76807 -+extern const struct ata_port_operations ata_dummy_port_ops;
76808 - extern const struct ata_port_info ata_dummy_port_info;
76809 -
76810 - static inline const unsigned long *
76811 -@@ -962,7 +962,7 @@ extern int ata_host_activate(struct ata_
76812 - struct scsi_host_template *sht);
76813 - extern void ata_host_detach(struct ata_host *host);
76814 - extern void ata_host_init(struct ata_host *, struct device *,
76815 -- unsigned long, struct ata_port_operations *);
76816 -+ unsigned long, const struct ata_port_operations *);
76817 - extern int ata_scsi_detect(struct scsi_host_template *sht);
76818 - extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
76819 - extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
76820 -diff -urNp linux-2.6.32.48/include/linux/lockd/bind.h linux-2.6.32.48/include/linux/lockd/bind.h
76821 ---- linux-2.6.32.48/include/linux/lockd/bind.h 2009-12-02 22:51:21.000000000 -0500
76822 -+++ linux-2.6.32.48/include/linux/lockd/bind.h 2011-11-12 12:46:47.000000000 -0500
76823 -@@ -23,13 +23,13 @@ struct svc_rqst;
76824 - * This is the set of functions for lockd->nfsd communication
76825 - */
76826 - struct nlmsvc_binding {
76827 -- __be32 (*fopen)(struct svc_rqst *,
76828 -+ __be32 (* const fopen)(struct svc_rqst *,
76829 - struct nfs_fh *,
76830 - struct file **);
76831 -- void (*fclose)(struct file *);
76832 -+ void (* const fclose)(struct file *);
76833 - };
76834 -
76835 --extern struct nlmsvc_binding * nlmsvc_ops;
76836 -+extern const struct nlmsvc_binding * nlmsvc_ops;
76837 -
76838 - /*
76839 - * Similar to nfs_client_initdata, but without the NFS-specific
76840 -diff -urNp linux-2.6.32.48/include/linux/mca.h linux-2.6.32.48/include/linux/mca.h
76841 ---- linux-2.6.32.48/include/linux/mca.h 2009-12-02 22:51:21.000000000 -0500
76842 -+++ linux-2.6.32.48/include/linux/mca.h 2011-11-12 12:46:47.000000000 -0500
76843 +diff -urNp linux-3.0.8/include/linux/mca.h linux-3.0.8/include/linux/mca.h
76844 +--- linux-3.0.8/include/linux/mca.h 2011-07-21 22:17:23.000000000 -0400
76845 ++++ linux-3.0.8/include/linux/mca.h 2011-08-23 21:47:56.000000000 -0400
76846 @@ -80,7 +80,7 @@ struct mca_bus_accessor_functions {
76847 int region);
76848 void * (*mca_transform_memory)(struct mca_device *,
76849 @@ -63351,10 +59556,10 @@ diff -urNp linux-2.6.32.48/include/linux/mca.h linux-2.6.32.48/include/linux/mca
76850
76851 struct mca_bus {
76852 u64 default_dma_mask;
76853 -diff -urNp linux-2.6.32.48/include/linux/memory.h linux-2.6.32.48/include/linux/memory.h
76854 ---- linux-2.6.32.48/include/linux/memory.h 2009-12-02 22:51:21.000000000 -0500
76855 -+++ linux-2.6.32.48/include/linux/memory.h 2011-11-12 12:46:47.000000000 -0500
76856 -@@ -108,7 +108,7 @@ struct memory_accessor {
76857 +diff -urNp linux-3.0.8/include/linux/memory.h linux-3.0.8/include/linux/memory.h
76858 +--- linux-3.0.8/include/linux/memory.h 2011-07-21 22:17:23.000000000 -0400
76859 ++++ linux-3.0.8/include/linux/memory.h 2011-08-23 21:47:56.000000000 -0400
76860 +@@ -144,7 +144,7 @@ struct memory_accessor {
76861 size_t count);
76862 ssize_t (*write)(struct memory_accessor *, const char *buf,
76863 off_t offset, size_t count);
76864 @@ -63363,10 +59568,21 @@ diff -urNp linux-2.6.32.48/include/linux/memory.h linux-2.6.32.48/include/linux/
76865
76866 /*
76867 * Kernel text modification mutex, used for code patching. Users of this lock
76868 -diff -urNp linux-2.6.32.48/include/linux/mm.h linux-2.6.32.48/include/linux/mm.h
76869 ---- linux-2.6.32.48/include/linux/mm.h 2011-11-12 12:44:30.000000000 -0500
76870 -+++ linux-2.6.32.48/include/linux/mm.h 2011-11-12 12:46:47.000000000 -0500
76871 -@@ -106,7 +106,14 @@ extern unsigned int kobjsize(const void
76872 +diff -urNp linux-3.0.8/include/linux/mfd/abx500.h linux-3.0.8/include/linux/mfd/abx500.h
76873 +--- linux-3.0.8/include/linux/mfd/abx500.h 2011-07-21 22:17:23.000000000 -0400
76874 ++++ linux-3.0.8/include/linux/mfd/abx500.h 2011-08-23 21:47:56.000000000 -0400
76875 +@@ -234,6 +234,7 @@ struct abx500_ops {
76876 + int (*event_registers_startup_state_get) (struct device *, u8 *);
76877 + int (*startup_irq_enabled) (struct device *, unsigned int);
76878 + };
76879 ++typedef struct abx500_ops __no_const abx500_ops_no_const;
76880 +
76881 + int abx500_register_ops(struct device *core_dev, struct abx500_ops *ops);
76882 + void abx500_remove_ops(struct device *dev);
76883 +diff -urNp linux-3.0.8/include/linux/mm.h linux-3.0.8/include/linux/mm.h
76884 +--- linux-3.0.8/include/linux/mm.h 2011-10-24 08:05:21.000000000 -0400
76885 ++++ linux-3.0.8/include/linux/mm.h 2011-08-23 21:47:56.000000000 -0400
76886 +@@ -113,7 +113,14 @@ extern unsigned int kobjsize(const void
76887
76888 #define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */
76889 #define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */
76890 @@ -63381,29 +59597,58 @@ diff -urNp linux-2.6.32.48/include/linux/mm.h linux-2.6.32.48/include/linux/mm.h
76891 #define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */
76892 #define VM_MERGEABLE 0x80000000 /* KSM may merge identical pages */
76893
76894 -@@ -841,12 +848,6 @@ int set_page_dirty(struct page *page);
76895 +@@ -1009,34 +1016,6 @@ int set_page_dirty(struct page *page);
76896 int set_page_dirty_lock(struct page *page);
76897 int clear_page_dirty_for_io(struct page *page);
76898
76899 -/* Is the vma a continuation of the stack vma above it? */
76900 --static inline int vma_stack_continue(struct vm_area_struct *vma, unsigned long addr)
76901 +-static inline int vma_growsdown(struct vm_area_struct *vma, unsigned long addr)
76902 -{
76903 - return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN);
76904 -}
76905 -
76906 +-static inline int stack_guard_page_start(struct vm_area_struct *vma,
76907 +- unsigned long addr)
76908 +-{
76909 +- return (vma->vm_flags & VM_GROWSDOWN) &&
76910 +- (vma->vm_start == addr) &&
76911 +- !vma_growsdown(vma->vm_prev, addr);
76912 +-}
76913 +-
76914 +-/* Is the vma a continuation of the stack vma below it? */
76915 +-static inline int vma_growsup(struct vm_area_struct *vma, unsigned long addr)
76916 +-{
76917 +- return vma && (vma->vm_start == addr) && (vma->vm_flags & VM_GROWSUP);
76918 +-}
76919 +-
76920 +-static inline int stack_guard_page_end(struct vm_area_struct *vma,
76921 +- unsigned long addr)
76922 +-{
76923 +- return (vma->vm_flags & VM_GROWSUP) &&
76924 +- (vma->vm_end == addr) &&
76925 +- !vma_growsup(vma->vm_next, addr);
76926 +-}
76927 +-
76928 extern unsigned long move_page_tables(struct vm_area_struct *vma,
76929 unsigned long old_addr, struct vm_area_struct *new_vma,
76930 unsigned long new_addr, unsigned long len);
76931 -@@ -890,6 +891,8 @@ struct shrinker {
76932 +@@ -1169,6 +1148,15 @@ struct shrinker {
76933 extern void register_shrinker(struct shrinker *);
76934 extern void unregister_shrinker(struct shrinker *);
76935
76936 -+pgprot_t vm_get_page_prot(unsigned long vm_flags);
76937 ++#ifdef CONFIG_MMU
76938 ++pgprot_t vm_get_page_prot(vm_flags_t vm_flags);
76939 ++#else
76940 ++static inline pgprot_t vm_get_page_prot(vm_flags_t vm_flags)
76941 ++{
76942 ++ return __pgprot(0);
76943 ++}
76944 ++#endif
76945 +
76946 int vma_wants_writenotify(struct vm_area_struct *vma);
76947
76948 - extern pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl);
76949 -@@ -1162,6 +1165,7 @@ out:
76950 + extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
76951 +@@ -1452,6 +1440,7 @@ out:
76952 }
76953
76954 extern int do_munmap(struct mm_struct *, unsigned long, size_t);
76955 @@ -63411,44 +59656,58 @@ diff -urNp linux-2.6.32.48/include/linux/mm.h linux-2.6.32.48/include/linux/mm.h
76956
76957 extern unsigned long do_brk(unsigned long, unsigned long);
76958
76959 -@@ -1218,6 +1222,10 @@ extern struct vm_area_struct * find_vma(
76960 +@@ -1510,6 +1499,10 @@ extern struct vm_area_struct * find_vma(
76961 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
76962 struct vm_area_struct **pprev);
76963
76964 +extern struct vm_area_struct *pax_find_mirror_vma(struct vm_area_struct *vma);
76965 -+extern void pax_mirror_vma(struct vm_area_struct *vma_m, struct vm_area_struct *vma);
76966 ++extern __must_check long pax_mirror_vma(struct vm_area_struct *vma_m, struct vm_area_struct *vma);
76967 +extern void pax_mirror_file_pte(struct vm_area_struct *vma, unsigned long address, struct page *page_m, spinlock_t *ptl);
76968 +
76969 /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
76970 NULL if none. Assume start_addr < end_addr. */
76971 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
76972 -@@ -1234,7 +1242,6 @@ static inline unsigned long vma_pages(st
76973 +@@ -1526,15 +1519,6 @@ static inline unsigned long vma_pages(st
76974 return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
76975 }
76976
76977 +-#ifdef CONFIG_MMU
76978 -pgprot_t vm_get_page_prot(unsigned long vm_flags);
76979 +-#else
76980 +-static inline pgprot_t vm_get_page_prot(unsigned long vm_flags)
76981 +-{
76982 +- return __pgprot(0);
76983 +-}
76984 +-#endif
76985 +-
76986 struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr);
76987 int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
76988 unsigned long pfn, unsigned long size, pgprot_t);
76989 -@@ -1332,7 +1339,13 @@ extern void memory_failure(unsigned long
76990 - extern int __memory_failure(unsigned long pfn, int trapno, int ref);
76991 +@@ -1647,7 +1631,7 @@ extern int unpoison_memory(unsigned long
76992 extern int sysctl_memory_failure_early_kill;
76993 extern int sysctl_memory_failure_recovery;
76994 + extern void shake_page(struct page *p, int access);
76995 -extern atomic_long_t mce_bad_pages;
76996 +extern atomic_long_unchecked_t mce_bad_pages;
76997 -+
76998 + extern int soft_offline_page(struct page *page, int flags);
76999 +
77000 + extern void dump_page(struct page *page);
77001 +@@ -1661,5 +1645,11 @@ extern void copy_user_huge_page(struct p
77002 + unsigned int pages_per_huge_page);
77003 + #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */
77004 +
77005 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
77006 +extern void track_exec_limit(struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long prot);
77007 +#else
77008 +static inline void track_exec_limit(struct mm_struct *mm, unsigned long start, unsigned long end, unsigned long prot) {}
77009 +#endif
77010 -
77011 ++
77012 #endif /* __KERNEL__ */
77013 #endif /* _LINUX_MM_H */
77014 -diff -urNp linux-2.6.32.48/include/linux/mm_types.h linux-2.6.32.48/include/linux/mm_types.h
77015 ---- linux-2.6.32.48/include/linux/mm_types.h 2011-11-12 12:44:30.000000000 -0500
77016 -+++ linux-2.6.32.48/include/linux/mm_types.h 2011-11-12 12:46:47.000000000 -0500
77017 -@@ -186,6 +186,8 @@ struct vm_area_struct {
77018 +diff -urNp linux-3.0.8/include/linux/mm_types.h linux-3.0.8/include/linux/mm_types.h
77019 +--- linux-3.0.8/include/linux/mm_types.h 2011-07-21 22:17:23.000000000 -0400
77020 ++++ linux-3.0.8/include/linux/mm_types.h 2011-08-23 21:47:56.000000000 -0400
77021 +@@ -184,6 +184,8 @@ struct vm_area_struct {
77022 #ifdef CONFIG_NUMA
77023 struct mempolicy *vm_policy; /* NUMA policy for the VMA */
77024 #endif
77025 @@ -63457,9 +59716,9 @@ diff -urNp linux-2.6.32.48/include/linux/mm_types.h linux-2.6.32.48/include/linu
77026 };
77027
77028 struct core_thread {
77029 -@@ -287,6 +289,24 @@ struct mm_struct {
77030 - #ifdef CONFIG_MMU_NOTIFIER
77031 - struct mmu_notifier_mm *mmu_notifier_mm;
77032 +@@ -316,6 +318,24 @@ struct mm_struct {
77033 + #ifdef CONFIG_CPUMASK_OFFSTACK
77034 + struct cpumask cpumask_allocation;
77035 #endif
77036 +
77037 +#if defined(CONFIG_PAX_EI_PAX) || defined(CONFIG_PAX_PT_PAX_FLAGS) || defined(CONFIG_PAX_NOEXEC) || defined(CONFIG_PAX_ASLR)
77038 @@ -63481,11 +59740,11 @@ diff -urNp linux-2.6.32.48/include/linux/mm_types.h linux-2.6.32.48/include/linu
77039 +
77040 };
77041
77042 - /* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
77043 -diff -urNp linux-2.6.32.48/include/linux/mmu_notifier.h linux-2.6.32.48/include/linux/mmu_notifier.h
77044 ---- linux-2.6.32.48/include/linux/mmu_notifier.h 2009-12-02 22:51:21.000000000 -0500
77045 -+++ linux-2.6.32.48/include/linux/mmu_notifier.h 2011-11-12 12:46:47.000000000 -0500
77046 -@@ -235,12 +235,12 @@ static inline void mmu_notifier_mm_destr
77047 + static inline void mm_init_cpumask(struct mm_struct *mm)
77048 +diff -urNp linux-3.0.8/include/linux/mmu_notifier.h linux-3.0.8/include/linux/mmu_notifier.h
77049 +--- linux-3.0.8/include/linux/mmu_notifier.h 2011-07-21 22:17:23.000000000 -0400
77050 ++++ linux-3.0.8/include/linux/mmu_notifier.h 2011-08-23 21:47:56.000000000 -0400
77051 +@@ -255,12 +255,12 @@ static inline void mmu_notifier_mm_destr
77052 */
77053 #define ptep_clear_flush_notify(__vma, __address, __ptep) \
77054 ({ \
77055 @@ -63500,10 +59759,10 @@ diff -urNp linux-2.6.32.48/include/linux/mmu_notifier.h linux-2.6.32.48/include/
77056 + ___pte; \
77057 })
77058
77059 - #define ptep_clear_flush_young_notify(__vma, __address, __ptep) \
77060 -diff -urNp linux-2.6.32.48/include/linux/mmzone.h linux-2.6.32.48/include/linux/mmzone.h
77061 ---- linux-2.6.32.48/include/linux/mmzone.h 2011-11-12 12:44:30.000000000 -0500
77062 -+++ linux-2.6.32.48/include/linux/mmzone.h 2011-11-12 12:46:47.000000000 -0500
77063 + #define pmdp_clear_flush_notify(__vma, __address, __pmdp) \
77064 +diff -urNp linux-3.0.8/include/linux/mmzone.h linux-3.0.8/include/linux/mmzone.h
77065 +--- linux-3.0.8/include/linux/mmzone.h 2011-07-21 22:17:23.000000000 -0400
77066 ++++ linux-3.0.8/include/linux/mmzone.h 2011-08-23 21:47:56.000000000 -0400
77067 @@ -350,7 +350,7 @@ struct zone {
77068 unsigned long flags; /* zone flags, see below */
77069
77070 @@ -63512,10 +59771,10 @@ diff -urNp linux-2.6.32.48/include/linux/mmzone.h linux-2.6.32.48/include/linux/
77071 + atomic_long_unchecked_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
77072
77073 /*
77074 - * prev_priority holds the scanning priority for this zone. It is
77075 -diff -urNp linux-2.6.32.48/include/linux/mod_devicetable.h linux-2.6.32.48/include/linux/mod_devicetable.h
77076 ---- linux-2.6.32.48/include/linux/mod_devicetable.h 2009-12-02 22:51:21.000000000 -0500
77077 -+++ linux-2.6.32.48/include/linux/mod_devicetable.h 2011-11-12 12:46:47.000000000 -0500
77078 + * The target ratio of ACTIVE_ANON to INACTIVE_ANON pages on
77079 +diff -urNp linux-3.0.8/include/linux/mod_devicetable.h linux-3.0.8/include/linux/mod_devicetable.h
77080 +--- linux-3.0.8/include/linux/mod_devicetable.h 2011-07-21 22:17:23.000000000 -0400
77081 ++++ linux-3.0.8/include/linux/mod_devicetable.h 2011-08-23 21:47:56.000000000 -0400
77082 @@ -12,7 +12,7 @@
77083 typedef unsigned long kernel_ulong_t;
77084 #endif
77085 @@ -63534,18 +59793,18 @@ diff -urNp linux-2.6.32.48/include/linux/mod_devicetable.h linux-2.6.32.48/inclu
77086
77087 struct hid_device_id {
77088 __u16 bus;
77089 -diff -urNp linux-2.6.32.48/include/linux/module.h linux-2.6.32.48/include/linux/module.h
77090 ---- linux-2.6.32.48/include/linux/module.h 2009-12-02 22:51:21.000000000 -0500
77091 -+++ linux-2.6.32.48/include/linux/module.h 2011-11-12 12:46:47.000000000 -0500
77092 +diff -urNp linux-3.0.8/include/linux/module.h linux-3.0.8/include/linux/module.h
77093 +--- linux-3.0.8/include/linux/module.h 2011-07-21 22:17:23.000000000 -0400
77094 ++++ linux-3.0.8/include/linux/module.h 2011-08-23 21:47:56.000000000 -0400
77095 @@ -16,6 +16,7 @@
77096 #include <linux/kobject.h>
77097 #include <linux/moduleparam.h>
77098 #include <linux/tracepoint.h>
77099 +#include <linux/fs.h>
77100
77101 - #include <asm/local.h>
77102 + #include <linux/percpu.h>
77103 #include <asm/module.h>
77104 -@@ -287,16 +288,16 @@ struct module
77105 +@@ -325,19 +326,16 @@ struct module
77106 int (*init)(void);
77107
77108 /* If this is non-NULL, vfree after init() returns */
77109 @@ -63562,13 +59821,16 @@ diff -urNp linux-2.6.32.48/include/linux/module.h linux-2.6.32.48/include/linux/
77110
77111 /* The size of the executable code in each section. */
77112 - unsigned int init_text_size, core_text_size;
77113 +-
77114 +- /* Size of RO sections of the module (text+rodata) */
77115 +- unsigned int init_ro_size, core_ro_size;
77116 + unsigned int init_size_rx, core_size_rx;
77117
77118 /* Arch-specific module values */
77119 struct mod_arch_specific arch;
77120 -@@ -345,6 +346,10 @@ struct module
77121 +@@ -393,6 +391,10 @@ struct module
77122 #ifdef CONFIG_EVENT_TRACING
77123 - struct ftrace_event_call *trace_events;
77124 + struct ftrace_event_call **trace_events;
77125 unsigned int num_trace_events;
77126 + struct file_operations trace_id;
77127 + struct file_operations trace_enable;
77128 @@ -63576,9 +59838,9 @@ diff -urNp linux-2.6.32.48/include/linux/module.h linux-2.6.32.48/include/linux/
77129 + struct file_operations trace_filter;
77130 #endif
77131 #ifdef CONFIG_FTRACE_MCOUNT_RECORD
77132 - unsigned long *ftrace_callsites;
77133 -@@ -393,16 +398,46 @@ struct module *__module_address(unsigned
77134 - bool is_module_address(unsigned long addr);
77135 + unsigned int num_ftrace_callsites;
77136 +@@ -443,16 +445,46 @@ bool is_module_address(unsigned long add
77137 + bool is_module_percpu_address(unsigned long addr);
77138 bool is_module_text_address(unsigned long addr);
77139
77140 +static inline int within_module_range(unsigned long addr, void *start, unsigned long size)
77141 @@ -63628,9 +59890,9 @@ diff -urNp linux-2.6.32.48/include/linux/module.h linux-2.6.32.48/include/linux/
77142 }
77143
77144 /* Search for module by name: must hold module_mutex. */
77145 -diff -urNp linux-2.6.32.48/include/linux/moduleloader.h linux-2.6.32.48/include/linux/moduleloader.h
77146 ---- linux-2.6.32.48/include/linux/moduleloader.h 2009-12-02 22:51:21.000000000 -0500
77147 -+++ linux-2.6.32.48/include/linux/moduleloader.h 2011-11-12 12:46:47.000000000 -0500
77148 +diff -urNp linux-3.0.8/include/linux/moduleloader.h linux-3.0.8/include/linux/moduleloader.h
77149 +--- linux-3.0.8/include/linux/moduleloader.h 2011-07-21 22:17:23.000000000 -0400
77150 ++++ linux-3.0.8/include/linux/moduleloader.h 2011-08-23 21:47:56.000000000 -0400
77151 @@ -20,9 +20,21 @@ unsigned int arch_mod_section_prepend(st
77152 sections. Returns NULL on failure. */
77153 void *module_alloc(unsigned long size);
77154 @@ -63653,44 +59915,32 @@ diff -urNp linux-2.6.32.48/include/linux/moduleloader.h linux-2.6.32.48/include/
77155 /* Apply the given relocation to the (simplified) ELF. Return -error
77156 or 0. */
77157 int apply_relocate(Elf_Shdr *sechdrs,
77158 -diff -urNp linux-2.6.32.48/include/linux/moduleparam.h linux-2.6.32.48/include/linux/moduleparam.h
77159 ---- linux-2.6.32.48/include/linux/moduleparam.h 2009-12-02 22:51:21.000000000 -0500
77160 -+++ linux-2.6.32.48/include/linux/moduleparam.h 2011-11-12 12:46:47.000000000 -0500
77161 -@@ -132,7 +132,7 @@ struct kparam_array
77162 -
77163 - /* Actually copy string: maxlen param is usually sizeof(string). */
77164 +diff -urNp linux-3.0.8/include/linux/moduleparam.h linux-3.0.8/include/linux/moduleparam.h
77165 +--- linux-3.0.8/include/linux/moduleparam.h 2011-07-21 22:17:23.000000000 -0400
77166 ++++ linux-3.0.8/include/linux/moduleparam.h 2011-08-23 21:47:56.000000000 -0400
77167 +@@ -255,7 +255,7 @@ static inline void __kernel_param_unlock
77168 + * @len is usually just sizeof(string).
77169 + */
77170 #define module_param_string(name, string, len, perm) \
77171 - static const struct kparam_string __param_string_##name \
77172 + static const struct kparam_string __param_string_##name __used \
77173 = { len, string }; \
77174 __module_param_call(MODULE_PARAM_PREFIX, name, \
77175 - param_set_copystring, param_get_string, \
77176 -@@ -211,7 +211,7 @@ extern int param_get_invbool(char *buffe
77177 -
77178 - /* Comma-separated array: *nump is set to number they actually specified. */
77179 + &param_ops_string, \
77180 +@@ -370,7 +370,7 @@ extern int param_get_invbool(char *buffe
77181 + * module_param_named() for why this might be necessary.
77182 + */
77183 #define module_param_array_named(name, array, type, nump, perm) \
77184 - static const struct kparam_array __param_arr_##name \
77185 + static const struct kparam_array __param_arr_##name __used \
77186 - = { ARRAY_SIZE(array), nump, param_set_##type, param_get_##type,\
77187 - sizeof(array[0]), array }; \
77188 - __module_param_call(MODULE_PARAM_PREFIX, name, \
77189 -diff -urNp linux-2.6.32.48/include/linux/mutex.h linux-2.6.32.48/include/linux/mutex.h
77190 ---- linux-2.6.32.48/include/linux/mutex.h 2009-12-02 22:51:21.000000000 -0500
77191 -+++ linux-2.6.32.48/include/linux/mutex.h 2011-11-12 12:46:47.000000000 -0500
77192 -@@ -51,7 +51,7 @@ struct mutex {
77193 - spinlock_t wait_lock;
77194 - struct list_head wait_list;
77195 - #if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_SMP)
77196 -- struct thread_info *owner;
77197 -+ struct task_struct *owner;
77198 - #endif
77199 - #ifdef CONFIG_DEBUG_MUTEXES
77200 - const char *name;
77201 -diff -urNp linux-2.6.32.48/include/linux/namei.h linux-2.6.32.48/include/linux/namei.h
77202 ---- linux-2.6.32.48/include/linux/namei.h 2009-12-02 22:51:21.000000000 -0500
77203 -+++ linux-2.6.32.48/include/linux/namei.h 2011-11-12 12:46:47.000000000 -0500
77204 -@@ -22,7 +22,7 @@ struct nameidata {
77205 - unsigned int flags;
77206 + = { .max = ARRAY_SIZE(array), .num = nump, \
77207 + .ops = &param_ops_##type, \
77208 + .elemsize = sizeof(array[0]), .elem = array }; \
77209 +diff -urNp linux-3.0.8/include/linux/namei.h linux-3.0.8/include/linux/namei.h
77210 +--- linux-3.0.8/include/linux/namei.h 2011-07-21 22:17:23.000000000 -0400
77211 ++++ linux-3.0.8/include/linux/namei.h 2011-08-23 21:47:56.000000000 -0400
77212 +@@ -24,7 +24,7 @@ struct nameidata {
77213 + unsigned seq;
77214 int last_type;
77215 unsigned depth;
77216 - char *saved_names[MAX_NESTED_LINKS + 1];
77217 @@ -63698,7 +59948,7 @@ diff -urNp linux-2.6.32.48/include/linux/namei.h linux-2.6.32.48/include/linux/n
77218
77219 /* Intent data */
77220 union {
77221 -@@ -84,12 +84,12 @@ extern int follow_up(struct path *);
77222 +@@ -91,12 +91,12 @@ extern int follow_up(struct path *);
77223 extern struct dentry *lock_rename(struct dentry *, struct dentry *);
77224 extern void unlock_rename(struct dentry *, struct dentry *);
77225
77226 @@ -63713,20 +59963,20 @@ diff -urNp linux-2.6.32.48/include/linux/namei.h linux-2.6.32.48/include/linux/n
77227 {
77228 return nd->saved_names[nd->depth];
77229 }
77230 -diff -urNp linux-2.6.32.48/include/linux/netdevice.h linux-2.6.32.48/include/linux/netdevice.h
77231 ---- linux-2.6.32.48/include/linux/netdevice.h 2011-11-12 12:44:30.000000000 -0500
77232 -+++ linux-2.6.32.48/include/linux/netdevice.h 2011-11-12 12:46:47.000000000 -0500
77233 -@@ -637,6 +637,7 @@ struct net_device_ops {
77234 - u16 xid);
77235 - #endif
77236 +diff -urNp linux-3.0.8/include/linux/netdevice.h linux-3.0.8/include/linux/netdevice.h
77237 +--- linux-3.0.8/include/linux/netdevice.h 2011-10-24 08:05:21.000000000 -0400
77238 ++++ linux-3.0.8/include/linux/netdevice.h 2011-08-23 21:47:56.000000000 -0400
77239 +@@ -979,6 +979,7 @@ struct net_device_ops {
77240 + int (*ndo_set_features)(struct net_device *dev,
77241 + u32 features);
77242 };
77243 +typedef struct net_device_ops __no_const net_device_ops_no_const;
77244
77245 /*
77246 * The DEVICE structure.
77247 -diff -urNp linux-2.6.32.48/include/linux/netfilter/xt_gradm.h linux-2.6.32.48/include/linux/netfilter/xt_gradm.h
77248 ---- linux-2.6.32.48/include/linux/netfilter/xt_gradm.h 1969-12-31 19:00:00.000000000 -0500
77249 -+++ linux-2.6.32.48/include/linux/netfilter/xt_gradm.h 2011-11-12 12:46:47.000000000 -0500
77250 +diff -urNp linux-3.0.8/include/linux/netfilter/xt_gradm.h linux-3.0.8/include/linux/netfilter/xt_gradm.h
77251 +--- linux-3.0.8/include/linux/netfilter/xt_gradm.h 1969-12-31 19:00:00.000000000 -0500
77252 ++++ linux-3.0.8/include/linux/netfilter/xt_gradm.h 2011-08-23 21:48:14.000000000 -0400
77253 @@ -0,0 +1,9 @@
77254 +#ifndef _LINUX_NETFILTER_XT_GRADM_H
77255 +#define _LINUX_NETFILTER_XT_GRADM_H 1
77256 @@ -63737,29 +59987,22 @@ diff -urNp linux-2.6.32.48/include/linux/netfilter/xt_gradm.h linux-2.6.32.48/in
77257 +};
77258 +
77259 +#endif
77260 -diff -urNp linux-2.6.32.48/include/linux/nodemask.h linux-2.6.32.48/include/linux/nodemask.h
77261 ---- linux-2.6.32.48/include/linux/nodemask.h 2009-12-02 22:51:21.000000000 -0500
77262 -+++ linux-2.6.32.48/include/linux/nodemask.h 2011-11-12 12:46:47.000000000 -0500
77263 -@@ -464,11 +464,11 @@ static inline int num_node_state(enum no
77264 -
77265 - #define any_online_node(mask) \
77266 - ({ \
77267 -- int node; \
77268 -- for_each_node_mask(node, (mask)) \
77269 -- if (node_online(node)) \
77270 -+ int __node; \
77271 -+ for_each_node_mask(__node, (mask)) \
77272 -+ if (node_online(__node)) \
77273 - break; \
77274 -- node; \
77275 -+ __node; \
77276 - })
77277 +diff -urNp linux-3.0.8/include/linux/of_pdt.h linux-3.0.8/include/linux/of_pdt.h
77278 +--- linux-3.0.8/include/linux/of_pdt.h 2011-07-21 22:17:23.000000000 -0400
77279 ++++ linux-3.0.8/include/linux/of_pdt.h 2011-08-30 06:20:11.000000000 -0400
77280 +@@ -32,7 +32,7 @@ struct of_pdt_ops {
77281 +
77282 + /* return 0 on success; fill in 'len' with number of bytes in path */
77283 + int (*pkg2path)(phandle node, char *buf, const int buflen, int *len);
77284 +-};
77285 ++} __no_const;
77286
77287 - #define num_online_nodes() num_node_state(N_ONLINE)
77288 -diff -urNp linux-2.6.32.48/include/linux/oprofile.h linux-2.6.32.48/include/linux/oprofile.h
77289 ---- linux-2.6.32.48/include/linux/oprofile.h 2009-12-02 22:51:21.000000000 -0500
77290 -+++ linux-2.6.32.48/include/linux/oprofile.h 2011-11-12 12:46:47.000000000 -0500
77291 -@@ -129,9 +129,9 @@ int oprofilefs_create_ulong(struct super
77292 + extern void *prom_early_alloc(unsigned long size);
77293 +
77294 +diff -urNp linux-3.0.8/include/linux/oprofile.h linux-3.0.8/include/linux/oprofile.h
77295 +--- linux-3.0.8/include/linux/oprofile.h 2011-07-21 22:17:23.000000000 -0400
77296 ++++ linux-3.0.8/include/linux/oprofile.h 2011-08-23 21:47:56.000000000 -0400
77297 +@@ -139,9 +139,9 @@ int oprofilefs_create_ulong(struct super
77298 int oprofilefs_create_ro_ulong(struct super_block * sb, struct dentry * root,
77299 char const * name, ulong * val);
77300
77301 @@ -63771,39 +60014,33 @@ diff -urNp linux-2.6.32.48/include/linux/oprofile.h linux-2.6.32.48/include/linu
77302
77303 /** create a directory */
77304 struct dentry * oprofilefs_mkdir(struct super_block * sb, struct dentry * root,
77305 -diff -urNp linux-2.6.32.48/include/linux/pagemap.h linux-2.6.32.48/include/linux/pagemap.h
77306 ---- linux-2.6.32.48/include/linux/pagemap.h 2011-11-12 12:44:30.000000000 -0500
77307 -+++ linux-2.6.32.48/include/linux/pagemap.h 2011-11-12 12:46:47.000000000 -0500
77308 -@@ -425,6 +425,7 @@ static inline int fault_in_pages_readabl
77309 - if (((unsigned long)uaddr & PAGE_MASK) !=
77310 - ((unsigned long)end & PAGE_MASK))
77311 - ret = __get_user(c, end);
77312 -+ (void)c;
77313 - }
77314 - return ret;
77315 - }
77316 -diff -urNp linux-2.6.32.48/include/linux/perf_event.h linux-2.6.32.48/include/linux/perf_event.h
77317 ---- linux-2.6.32.48/include/linux/perf_event.h 2011-11-12 12:44:30.000000000 -0500
77318 -+++ linux-2.6.32.48/include/linux/perf_event.h 2011-11-12 12:46:47.000000000 -0500
77319 -@@ -476,7 +476,7 @@ struct hw_perf_event {
77320 - struct hrtimer hrtimer;
77321 - };
77322 - };
77323 -- atomic64_t prev_count;
77324 -+ atomic64_unchecked_t prev_count;
77325 - u64 sample_period;
77326 - u64 last_period;
77327 - atomic64_t period_left;
77328 -@@ -557,7 +557,7 @@ struct perf_event {
77329 - const struct pmu *pmu;
77330 +diff -urNp linux-3.0.8/include/linux/padata.h linux-3.0.8/include/linux/padata.h
77331 +--- linux-3.0.8/include/linux/padata.h 2011-07-21 22:17:23.000000000 -0400
77332 ++++ linux-3.0.8/include/linux/padata.h 2011-08-23 21:47:56.000000000 -0400
77333 +@@ -129,7 +129,7 @@ struct parallel_data {
77334 + struct padata_instance *pinst;
77335 + struct padata_parallel_queue __percpu *pqueue;
77336 + struct padata_serial_queue __percpu *squeue;
77337 +- atomic_t seq_nr;
77338 ++ atomic_unchecked_t seq_nr;
77339 + atomic_t reorder_objects;
77340 + atomic_t refcnt;
77341 + unsigned int max_seq_nr;
77342 +diff -urNp linux-3.0.8/include/linux/perf_event.h linux-3.0.8/include/linux/perf_event.h
77343 +--- linux-3.0.8/include/linux/perf_event.h 2011-07-21 22:17:23.000000000 -0400
77344 ++++ linux-3.0.8/include/linux/perf_event.h 2011-08-23 21:47:56.000000000 -0400
77345 +@@ -761,8 +761,8 @@ struct perf_event {
77346
77347 enum perf_event_active_state state;
77348 -- atomic64_t count;
77349 -+ atomic64_unchecked_t count;
77350 + unsigned int attach_state;
77351 +- local64_t count;
77352 +- atomic64_t child_count;
77353 ++ local64_t count; /* PaX: fix it one day */
77354 ++ atomic64_unchecked_t child_count;
77355
77356 /*
77357 * These are the total time in nanoseconds that the event
77358 -@@ -595,8 +595,8 @@ struct perf_event {
77359 +@@ -813,8 +813,8 @@ struct perf_event {
77360 * These accumulate total time (in nanoseconds) that children
77361 * events have been enabled and running, respectively.
77362 */
77363 @@ -63814,13 +60051,13 @@ diff -urNp linux-2.6.32.48/include/linux/perf_event.h linux-2.6.32.48/include/li
77364
77365 /*
77366 * Protect attach/detach and child_list:
77367 -diff -urNp linux-2.6.32.48/include/linux/pipe_fs_i.h linux-2.6.32.48/include/linux/pipe_fs_i.h
77368 ---- linux-2.6.32.48/include/linux/pipe_fs_i.h 2009-12-02 22:51:21.000000000 -0500
77369 -+++ linux-2.6.32.48/include/linux/pipe_fs_i.h 2011-11-12 12:46:47.000000000 -0500
77370 -@@ -46,9 +46,9 @@ struct pipe_inode_info {
77371 +diff -urNp linux-3.0.8/include/linux/pipe_fs_i.h linux-3.0.8/include/linux/pipe_fs_i.h
77372 +--- linux-3.0.8/include/linux/pipe_fs_i.h 2011-07-21 22:17:23.000000000 -0400
77373 ++++ linux-3.0.8/include/linux/pipe_fs_i.h 2011-08-23 21:47:56.000000000 -0400
77374 +@@ -46,9 +46,9 @@ struct pipe_buffer {
77375 + struct pipe_inode_info {
77376 wait_queue_head_t wait;
77377 - unsigned int nrbufs, curbuf;
77378 - struct page *tmp_page;
77379 + unsigned int nrbufs, curbuf, buffers;
77380 - unsigned int readers;
77381 - unsigned int writers;
77382 - unsigned int waiting_writers;
77383 @@ -63829,10 +60066,22 @@ diff -urNp linux-2.6.32.48/include/linux/pipe_fs_i.h linux-2.6.32.48/include/lin
77384 + atomic_t waiting_writers;
77385 unsigned int r_counter;
77386 unsigned int w_counter;
77387 - struct fasync_struct *fasync_readers;
77388 -diff -urNp linux-2.6.32.48/include/linux/poison.h linux-2.6.32.48/include/linux/poison.h
77389 ---- linux-2.6.32.48/include/linux/poison.h 2011-11-12 12:44:30.000000000 -0500
77390 -+++ linux-2.6.32.48/include/linux/poison.h 2011-11-12 12:46:47.000000000 -0500
77391 + struct page *tmp_page;
77392 +diff -urNp linux-3.0.8/include/linux/pm_runtime.h linux-3.0.8/include/linux/pm_runtime.h
77393 +--- linux-3.0.8/include/linux/pm_runtime.h 2011-07-21 22:17:23.000000000 -0400
77394 ++++ linux-3.0.8/include/linux/pm_runtime.h 2011-08-23 21:47:56.000000000 -0400
77395 +@@ -94,7 +94,7 @@ static inline bool pm_runtime_callbacks_
77396 +
77397 + static inline void pm_runtime_mark_last_busy(struct device *dev)
77398 + {
77399 +- ACCESS_ONCE(dev->power.last_busy) = jiffies;
77400 ++ ACCESS_ONCE_RW(dev->power.last_busy) = jiffies;
77401 + }
77402 +
77403 + #else /* !CONFIG_PM_RUNTIME */
77404 +diff -urNp linux-3.0.8/include/linux/poison.h linux-3.0.8/include/linux/poison.h
77405 +--- linux-3.0.8/include/linux/poison.h 2011-07-21 22:17:23.000000000 -0400
77406 ++++ linux-3.0.8/include/linux/poison.h 2011-08-23 21:47:56.000000000 -0400
77407 @@ -19,8 +19,8 @@
77408 * under normal circumstances, used to verify that nobody uses
77409 * non-initialized list entries.
77410 @@ -63844,22 +60093,10 @@ diff -urNp linux-2.6.32.48/include/linux/poison.h linux-2.6.32.48/include/linux/
77411
77412 /********** include/linux/timer.h **********/
77413 /*
77414 -diff -urNp linux-2.6.32.48/include/linux/posix-timers.h linux-2.6.32.48/include/linux/posix-timers.h
77415 ---- linux-2.6.32.48/include/linux/posix-timers.h 2009-12-02 22:51:21.000000000 -0500
77416 -+++ linux-2.6.32.48/include/linux/posix-timers.h 2011-11-12 12:46:47.000000000 -0500
77417 -@@ -67,7 +67,7 @@ struct k_itimer {
77418 - };
77419 -
77420 - struct k_clock {
77421 -- int res; /* in nanoseconds */
77422 -+ const int res; /* in nanoseconds */
77423 - int (*clock_getres) (const clockid_t which_clock, struct timespec *tp);
77424 - int (*clock_set) (const clockid_t which_clock, struct timespec * tp);
77425 - int (*clock_get) (const clockid_t which_clock, struct timespec * tp);
77426 -diff -urNp linux-2.6.32.48/include/linux/preempt.h linux-2.6.32.48/include/linux/preempt.h
77427 ---- linux-2.6.32.48/include/linux/preempt.h 2009-12-02 22:51:21.000000000 -0500
77428 -+++ linux-2.6.32.48/include/linux/preempt.h 2011-11-12 12:46:47.000000000 -0500
77429 -@@ -110,7 +110,7 @@ struct preempt_ops {
77430 +diff -urNp linux-3.0.8/include/linux/preempt.h linux-3.0.8/include/linux/preempt.h
77431 +--- linux-3.0.8/include/linux/preempt.h 2011-07-21 22:17:23.000000000 -0400
77432 ++++ linux-3.0.8/include/linux/preempt.h 2011-08-23 21:47:56.000000000 -0400
77433 +@@ -115,7 +115,7 @@ struct preempt_ops {
77434 void (*sched_in)(struct preempt_notifier *notifier, int cpu);
77435 void (*sched_out)(struct preempt_notifier *notifier,
77436 struct task_struct *next);
77437 @@ -63868,9 +60105,9 @@ diff -urNp linux-2.6.32.48/include/linux/preempt.h linux-2.6.32.48/include/linux
77438
77439 /**
77440 * preempt_notifier - key for installing preemption notifiers
77441 -diff -urNp linux-2.6.32.48/include/linux/proc_fs.h linux-2.6.32.48/include/linux/proc_fs.h
77442 ---- linux-2.6.32.48/include/linux/proc_fs.h 2009-12-02 22:51:21.000000000 -0500
77443 -+++ linux-2.6.32.48/include/linux/proc_fs.h 2011-11-12 12:46:47.000000000 -0500
77444 +diff -urNp linux-3.0.8/include/linux/proc_fs.h linux-3.0.8/include/linux/proc_fs.h
77445 +--- linux-3.0.8/include/linux/proc_fs.h 2011-07-21 22:17:23.000000000 -0400
77446 ++++ linux-3.0.8/include/linux/proc_fs.h 2011-08-23 21:48:14.000000000 -0400
77447 @@ -155,6 +155,19 @@ static inline struct proc_dir_entry *pro
77448 return proc_create_data(name, mode, parent, proc_fops, NULL);
77449 }
77450 @@ -63891,7 +60128,7 @@ diff -urNp linux-2.6.32.48/include/linux/proc_fs.h linux-2.6.32.48/include/linux
77451 static inline struct proc_dir_entry *create_proc_read_entry(const char *name,
77452 mode_t mode, struct proc_dir_entry *base,
77453 read_proc_t *read_proc, void * data)
77454 -@@ -256,7 +269,7 @@ union proc_op {
77455 +@@ -258,7 +271,7 @@ union proc_op {
77456 int (*proc_show)(struct seq_file *m,
77457 struct pid_namespace *ns, struct pid *pid,
77458 struct task_struct *task);
77459 @@ -63900,10 +60137,10 @@ diff -urNp linux-2.6.32.48/include/linux/proc_fs.h linux-2.6.32.48/include/linux
77460
77461 struct ctl_table_header;
77462 struct ctl_table;
77463 -diff -urNp linux-2.6.32.48/include/linux/ptrace.h linux-2.6.32.48/include/linux/ptrace.h
77464 ---- linux-2.6.32.48/include/linux/ptrace.h 2009-12-02 22:51:21.000000000 -0500
77465 -+++ linux-2.6.32.48/include/linux/ptrace.h 2011-11-12 12:46:47.000000000 -0500
77466 -@@ -96,10 +96,10 @@ extern void __ptrace_unlink(struct task_
77467 +diff -urNp linux-3.0.8/include/linux/ptrace.h linux-3.0.8/include/linux/ptrace.h
77468 +--- linux-3.0.8/include/linux/ptrace.h 2011-07-21 22:17:23.000000000 -0400
77469 ++++ linux-3.0.8/include/linux/ptrace.h 2011-08-23 21:48:14.000000000 -0400
77470 +@@ -115,10 +115,10 @@ extern void __ptrace_unlink(struct task_
77471 extern void exit_ptrace(struct task_struct *tracer);
77472 #define PTRACE_MODE_READ 1
77473 #define PTRACE_MODE_ATTACH 2
77474 @@ -63916,24 +60153,31 @@ diff -urNp linux-2.6.32.48/include/linux/ptrace.h linux-2.6.32.48/include/linux/
77475
77476 static inline int ptrace_reparented(struct task_struct *child)
77477 {
77478 -diff -urNp linux-2.6.32.48/include/linux/random.h linux-2.6.32.48/include/linux/random.h
77479 ---- linux-2.6.32.48/include/linux/random.h 2011-11-12 12:44:30.000000000 -0500
77480 -+++ linux-2.6.32.48/include/linux/random.h 2011-11-12 12:46:47.000000000 -0500
77481 -@@ -63,6 +63,11 @@ unsigned long randomize_range(unsigned l
77482 - u32 random32(void);
77483 - void srandom32(u32 seed);
77484 +diff -urNp linux-3.0.8/include/linux/random.h linux-3.0.8/include/linux/random.h
77485 +--- linux-3.0.8/include/linux/random.h 2011-10-24 08:05:21.000000000 -0400
77486 ++++ linux-3.0.8/include/linux/random.h 2011-08-23 21:47:56.000000000 -0400
77487 +@@ -69,12 +69,17 @@ void srandom32(u32 seed);
77488 +
77489 + u32 prandom32(struct rnd_state *);
77490
77491 +static inline unsigned long pax_get_random_long(void)
77492 +{
77493 + return random32() + (sizeof(long) > 4 ? (unsigned long)random32() << 32 : 0);
77494 +}
77495 +
77496 - #endif /* __KERNEL___ */
77497 + /*
77498 + * Handle minimum values for seeds
77499 + */
77500 + static inline u32 __seed(u32 x, u32 m)
77501 + {
77502 +- return (x < m) ? x + m : x;
77503 ++ return (x <= m) ? x + m + 1 : x;
77504 + }
77505
77506 - #endif /* _LINUX_RANDOM_H */
77507 -diff -urNp linux-2.6.32.48/include/linux/reboot.h linux-2.6.32.48/include/linux/reboot.h
77508 ---- linux-2.6.32.48/include/linux/reboot.h 2009-12-02 22:51:21.000000000 -0500
77509 -+++ linux-2.6.32.48/include/linux/reboot.h 2011-11-12 12:46:47.000000000 -0500
77510 + /**
77511 +diff -urNp linux-3.0.8/include/linux/reboot.h linux-3.0.8/include/linux/reboot.h
77512 +--- linux-3.0.8/include/linux/reboot.h 2011-07-21 22:17:23.000000000 -0400
77513 ++++ linux-3.0.8/include/linux/reboot.h 2011-08-23 21:47:56.000000000 -0400
77514 @@ -47,9 +47,9 @@ extern int unregister_reboot_notifier(st
77515 * Architecture-specific implementations of sys_reboot commands.
77516 */
77517 @@ -63958,9 +60202,9 @@ diff -urNp linux-2.6.32.48/include/linux/reboot.h linux-2.6.32.48/include/linux/
77518 +extern void kernel_halt(void) __noreturn;
77519 +extern void kernel_power_off(void) __noreturn;
77520
77521 + extern int C_A_D; /* for sysctl */
77522 void ctrl_alt_del(void);
77523 -
77524 -@@ -75,7 +75,7 @@ extern int orderly_poweroff(bool force);
77525 +@@ -76,7 +76,7 @@ extern int orderly_poweroff(bool force);
77526 * Emergency restart, callable from an interrupt handler.
77527 */
77528
77529 @@ -63969,10 +60213,10 @@ diff -urNp linux-2.6.32.48/include/linux/reboot.h linux-2.6.32.48/include/linux/
77530 #include <asm/emergency-restart.h>
77531
77532 #endif
77533 -diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs.h linux-2.6.32.48/include/linux/reiserfs_fs.h
77534 ---- linux-2.6.32.48/include/linux/reiserfs_fs.h 2009-12-02 22:51:21.000000000 -0500
77535 -+++ linux-2.6.32.48/include/linux/reiserfs_fs.h 2011-11-12 12:46:47.000000000 -0500
77536 -@@ -1326,7 +1326,7 @@ static inline loff_t max_reiserfs_offset
77537 +diff -urNp linux-3.0.8/include/linux/reiserfs_fs.h linux-3.0.8/include/linux/reiserfs_fs.h
77538 +--- linux-3.0.8/include/linux/reiserfs_fs.h 2011-07-21 22:17:23.000000000 -0400
77539 ++++ linux-3.0.8/include/linux/reiserfs_fs.h 2011-08-23 21:47:56.000000000 -0400
77540 +@@ -1406,7 +1406,7 @@ static inline loff_t max_reiserfs_offset
77541 #define REISERFS_USER_MEM 1 /* reiserfs user memory mode */
77542
77543 #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter)
77544 @@ -63980,48 +60224,11 @@ diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs.h linux-2.6.32.48/include/l
77545 +#define get_generation(s) atomic_read_unchecked (&fs_generation(s))
77546 #define FILESYSTEM_CHANGED_TB(tb) (get_generation((tb)->tb_sb) != (tb)->fs_gen)
77547 #define __fs_changed(gen,s) (gen != get_generation (s))
77548 - #define fs_changed(gen,s) ({cond_resched(); __fs_changed(gen, s);})
77549 -@@ -1534,24 +1534,24 @@ static inline struct super_block *sb_fro
77550 - */
77551 -
77552 - struct item_operations {
77553 -- int (*bytes_number) (struct item_head * ih, int block_size);
77554 -- void (*decrement_key) (struct cpu_key *);
77555 -- int (*is_left_mergeable) (struct reiserfs_key * ih,
77556 -+ int (* const bytes_number) (struct item_head * ih, int block_size);
77557 -+ void (* const decrement_key) (struct cpu_key *);
77558 -+ int (* const is_left_mergeable) (struct reiserfs_key * ih,
77559 - unsigned long bsize);
77560 -- void (*print_item) (struct item_head *, char *item);
77561 -- void (*check_item) (struct item_head *, char *item);
77562 -+ void (* const print_item) (struct item_head *, char *item);
77563 -+ void (* const check_item) (struct item_head *, char *item);
77564 -
77565 -- int (*create_vi) (struct virtual_node * vn, struct virtual_item * vi,
77566 -+ int (* const create_vi) (struct virtual_node * vn, struct virtual_item * vi,
77567 - int is_affected, int insert_size);
77568 -- int (*check_left) (struct virtual_item * vi, int free,
77569 -+ int (* const check_left) (struct virtual_item * vi, int free,
77570 - int start_skip, int end_skip);
77571 -- int (*check_right) (struct virtual_item * vi, int free);
77572 -- int (*part_size) (struct virtual_item * vi, int from, int to);
77573 -- int (*unit_num) (struct virtual_item * vi);
77574 -- void (*print_vi) (struct virtual_item * vi);
77575 -+ int (* const check_right) (struct virtual_item * vi, int free);
77576 -+ int (* const part_size) (struct virtual_item * vi, int from, int to);
77577 -+ int (* const unit_num) (struct virtual_item * vi);
77578 -+ void (* const print_vi) (struct virtual_item * vi);
77579 - };
77580 -
77581 --extern struct item_operations *item_ops[TYPE_ANY + 1];
77582 -+extern const struct item_operations * const item_ops[TYPE_ANY + 1];
77583 -
77584 - #define op_bytes_number(ih,bsize) item_ops[le_ih_k_type (ih)]->bytes_number (ih, bsize)
77585 - #define op_is_left_mergeable(key,bsize) item_ops[le_key_k_type (le_key_version (key), key)]->is_left_mergeable (key, bsize)
77586 -diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs_sb.h linux-2.6.32.48/include/linux/reiserfs_fs_sb.h
77587 ---- linux-2.6.32.48/include/linux/reiserfs_fs_sb.h 2009-12-02 22:51:21.000000000 -0500
77588 -+++ linux-2.6.32.48/include/linux/reiserfs_fs_sb.h 2011-11-12 12:46:47.000000000 -0500
77589 -@@ -377,7 +377,7 @@ struct reiserfs_sb_info {
77590 + #define fs_changed(gen,s) \
77591 +diff -urNp linux-3.0.8/include/linux/reiserfs_fs_sb.h linux-3.0.8/include/linux/reiserfs_fs_sb.h
77592 +--- linux-3.0.8/include/linux/reiserfs_fs_sb.h 2011-07-21 22:17:23.000000000 -0400
77593 ++++ linux-3.0.8/include/linux/reiserfs_fs_sb.h 2011-08-23 21:47:56.000000000 -0400
77594 +@@ -386,7 +386,7 @@ struct reiserfs_sb_info {
77595 /* Comment? -Hans */
77596 wait_queue_head_t s_wait;
77597 /* To be obsoleted soon by per buffer seals.. -Hans */
77598 @@ -64030,9 +60237,9 @@ diff -urNp linux-2.6.32.48/include/linux/reiserfs_fs_sb.h linux-2.6.32.48/includ
77599 // tree gets re-balanced
77600 unsigned long s_properties; /* File system properties. Currently holds
77601 on-disk FS format */
77602 -diff -urNp linux-2.6.32.48/include/linux/relay.h linux-2.6.32.48/include/linux/relay.h
77603 ---- linux-2.6.32.48/include/linux/relay.h 2009-12-02 22:51:21.000000000 -0500
77604 -+++ linux-2.6.32.48/include/linux/relay.h 2011-11-12 12:46:47.000000000 -0500
77605 +diff -urNp linux-3.0.8/include/linux/relay.h linux-3.0.8/include/linux/relay.h
77606 +--- linux-3.0.8/include/linux/relay.h 2011-07-21 22:17:23.000000000 -0400
77607 ++++ linux-3.0.8/include/linux/relay.h 2011-08-23 21:47:56.000000000 -0400
77608 @@ -159,7 +159,7 @@ struct rchan_callbacks
77609 * The callback should return 0 if successful, negative if not.
77610 */
77611 @@ -64042,10 +60249,10 @@ diff -urNp linux-2.6.32.48/include/linux/relay.h linux-2.6.32.48/include/linux/r
77612
77613 /*
77614 * CONFIG_RELAY kernel API, kernel/relay.c
77615 -diff -urNp linux-2.6.32.48/include/linux/rfkill.h linux-2.6.32.48/include/linux/rfkill.h
77616 ---- linux-2.6.32.48/include/linux/rfkill.h 2009-12-02 22:51:21.000000000 -0500
77617 -+++ linux-2.6.32.48/include/linux/rfkill.h 2011-11-12 12:46:47.000000000 -0500
77618 -@@ -144,6 +144,7 @@ struct rfkill_ops {
77619 +diff -urNp linux-3.0.8/include/linux/rfkill.h linux-3.0.8/include/linux/rfkill.h
77620 +--- linux-3.0.8/include/linux/rfkill.h 2011-07-21 22:17:23.000000000 -0400
77621 ++++ linux-3.0.8/include/linux/rfkill.h 2011-08-23 21:47:56.000000000 -0400
77622 +@@ -147,6 +147,7 @@ struct rfkill_ops {
77623 void (*query)(struct rfkill *rfkill, void *data);
77624 int (*set_block)(void *data, bool blocked);
77625 };
77626 @@ -64053,43 +60260,50 @@ diff -urNp linux-2.6.32.48/include/linux/rfkill.h linux-2.6.32.48/include/linux/
77627
77628 #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
77629 /**
77630 -diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/sched.h
77631 ---- linux-2.6.32.48/include/linux/sched.h 2011-11-12 12:44:30.000000000 -0500
77632 -+++ linux-2.6.32.48/include/linux/sched.h 2011-11-12 12:46:47.000000000 -0500
77633 -@@ -101,6 +101,7 @@ struct bio;
77634 +diff -urNp linux-3.0.8/include/linux/rmap.h linux-3.0.8/include/linux/rmap.h
77635 +--- linux-3.0.8/include/linux/rmap.h 2011-07-21 22:17:23.000000000 -0400
77636 ++++ linux-3.0.8/include/linux/rmap.h 2011-08-23 21:47:56.000000000 -0400
77637 +@@ -119,8 +119,8 @@ static inline void anon_vma_unlock(struc
77638 + void anon_vma_init(void); /* create anon_vma_cachep */
77639 + int anon_vma_prepare(struct vm_area_struct *);
77640 + void unlink_anon_vmas(struct vm_area_struct *);
77641 +-int anon_vma_clone(struct vm_area_struct *, struct vm_area_struct *);
77642 +-int anon_vma_fork(struct vm_area_struct *, struct vm_area_struct *);
77643 ++int anon_vma_clone(struct vm_area_struct *, const struct vm_area_struct *);
77644 ++int anon_vma_fork(struct vm_area_struct *, const struct vm_area_struct *);
77645 + void __anon_vma_link(struct vm_area_struct *);
77646 +
77647 + static inline void anon_vma_merge(struct vm_area_struct *vma,
77648 +diff -urNp linux-3.0.8/include/linux/sched.h linux-3.0.8/include/linux/sched.h
77649 +--- linux-3.0.8/include/linux/sched.h 2011-10-24 08:05:32.000000000 -0400
77650 ++++ linux-3.0.8/include/linux/sched.h 2011-10-17 23:17:19.000000000 -0400
77651 +@@ -100,6 +100,7 @@ struct bio_list;
77652 struct fs_struct;
77653 - struct bts_context;
77654 struct perf_event_context;
77655 + struct blk_plug;
77656 +struct linux_binprm;
77657
77658 /*
77659 * List of flags we want to share for kernel threads,
77660 -@@ -350,7 +351,7 @@ extern signed long schedule_timeout_kill
77661 - extern signed long schedule_timeout_uninterruptible(signed long timeout);
77662 - asmlinkage void __schedule(void);
77663 - asmlinkage void schedule(void);
77664 --extern int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner);
77665 -+extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner);
77666 -
77667 - struct nsproxy;
77668 - struct user_namespace;
77669 -@@ -371,9 +372,12 @@ struct user_namespace;
77670 - #define DEFAULT_MAX_MAP_COUNT (USHORT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
77671 +@@ -380,10 +381,13 @@ struct user_namespace;
77672 + #define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
77673
77674 extern int sysctl_max_map_count;
77675 +extern unsigned long sysctl_heap_stack_gap;
77676
77677 #include <linux/aio.h>
77678
77679 + #ifdef CONFIG_MMU
77680 +extern bool check_heap_stack_gap(const struct vm_area_struct *vma, unsigned long addr, unsigned long len);
77681 +extern unsigned long skip_heap_stack_gap(const struct vm_area_struct *vma, unsigned long len);
77682 + extern void arch_pick_mmap_layout(struct mm_struct *mm);
77683 extern unsigned long
77684 arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
77685 - unsigned long, unsigned long);
77686 -@@ -666,6 +670,16 @@ struct signal_struct {
77687 - struct tty_audit_buf *tty_audit_buf;
77688 +@@ -629,6 +633,17 @@ struct signal_struct {
77689 + #ifdef CONFIG_TASKSTATS
77690 + struct taskstats *stats;
77691 #endif
77692 -
77693 ++
77694 +#ifdef CONFIG_GRKERNSEC
77695 + u32 curr_ip;
77696 + u32 saved_ip;
77697 @@ -64100,10 +60314,10 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77698 + u8 used_accept:1;
77699 +#endif
77700 +
77701 - int oom_adj; /* OOM kill score adjustment (bit shift) */
77702 - };
77703 -
77704 -@@ -723,6 +737,11 @@ struct user_struct {
77705 + #ifdef CONFIG_AUDIT
77706 + unsigned audit_tty;
77707 + struct tty_audit_buf *tty_audit_buf;
77708 +@@ -710,6 +725,11 @@ struct user_struct {
77709 struct key *session_keyring; /* UID's default session keyring */
77710 #endif
77711
77712 @@ -64115,7 +60329,7 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77713 /* Hash table maintenance information */
77714 struct hlist_node uidhash_node;
77715 uid_t uid;
77716 -@@ -1328,8 +1347,8 @@ struct task_struct {
77717 +@@ -1340,8 +1360,8 @@ struct task_struct {
77718 struct list_head thread_group;
77719
77720 struct completion *vfork_done; /* for vfork() */
77721 @@ -64126,24 +60340,21 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77722
77723 cputime_t utime, stime, utimescaled, stimescaled;
77724 cputime_t gtime;
77725 -@@ -1343,16 +1362,6 @@ struct task_struct {
77726 +@@ -1357,13 +1377,6 @@ struct task_struct {
77727 struct task_cputime cputime_expires;
77728 struct list_head cpu_timers[3];
77729
77730 -/* process credentials */
77731 -- const struct cred *real_cred; /* objective and real subjective task
77732 +- const struct cred __rcu *real_cred; /* objective and real subjective task
77733 - * credentials (COW) */
77734 -- const struct cred *cred; /* effective (overridable) subjective task
77735 +- const struct cred __rcu *cred; /* effective (overridable) subjective task
77736 - * credentials (COW) */
77737 -- struct mutex cred_guard_mutex; /* guard against foreign influences on
77738 -- * credential calculations
77739 -- * (notably. ptrace) */
77740 - struct cred *replacement_session_keyring; /* for KEYCTL_SESSION_TO_PARENT */
77741 -
77742 char comm[TASK_COMM_LEN]; /* executable name excluding path
77743 - access with [gs]et_task_comm (which lock
77744 it with task_lock())
77745 -@@ -1369,6 +1378,10 @@ struct task_struct {
77746 +@@ -1380,8 +1393,16 @@ struct task_struct {
77747 #endif
77748 /* CPU-specific state of this task */
77749 struct thread_struct thread;
77750 @@ -64153,34 +60364,26 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77751 +#endif
77752 /* filesystem information */
77753 struct fs_struct *fs;
77754 - /* open file information */
77755 -@@ -1436,6 +1449,15 @@ struct task_struct {
77756 - int hardirq_context;
77757 - int softirq_context;
77758 - #endif
77759 +
77760 -+/* process credentials */
77761 -+ const struct cred *real_cred; /* objective and real subjective task
77762 ++ const struct cred __rcu *cred; /* effective (overridable) subjective task
77763 + * credentials (COW) */
77764 -+ struct mutex cred_guard_mutex; /* guard against foreign influences on
77765 -+ * credential calculations
77766 -+ * (notably. ptrace) */
77767 -+ struct cred *replacement_session_keyring; /* for KEYCTL_SESSION_TO_PARENT */
77768 +
77769 - #ifdef CONFIG_LOCKDEP
77770 - # define MAX_LOCK_DEPTH 48UL
77771 - u64 curr_chain_key;
77772 -@@ -1456,6 +1478,9 @@ struct task_struct {
77773 -
77774 - struct backing_dev_info *backing_dev_info;
77775 + /* open file information */
77776 + struct files_struct *files;
77777 + /* namespaces */
77778 +@@ -1428,6 +1449,11 @@ struct task_struct {
77779 + struct rt_mutex_waiter *pi_blocked_on;
77780 + #endif
77781
77782 -+ const struct cred *cred; /* effective (overridable) subjective task
77783 ++/* process credentials */
77784 ++ const struct cred __rcu *real_cred; /* objective and real subjective task
77785 + * credentials (COW) */
77786 ++ struct cred *replacement_session_keyring; /* for KEYCTL_SESSION_TO_PARENT */
77787 +
77788 - struct io_context *io_context;
77789 -
77790 - unsigned long ptrace_message;
77791 -@@ -1519,6 +1544,21 @@ struct task_struct {
77792 + #ifdef CONFIG_DEBUG_MUTEXES
77793 + /* mutex deadlock detection */
77794 + struct mutex_waiter *blocked_on;
77795 +@@ -1538,6 +1564,21 @@ struct task_struct {
77796 unsigned long default_timer_slack_ns;
77797
77798 struct list_head *scm_work_list;
77799 @@ -64200,10 +60403,10 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77800 +#endif
77801 +
77802 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
77803 - /* Index of current stored adress in ret_stack */
77804 + /* Index of current stored address in ret_stack */
77805 int curr_ret_stack;
77806 -@@ -1542,6 +1582,57 @@ struct task_struct {
77807 - #endif /* CONFIG_TRACING */
77808 +@@ -1572,6 +1613,57 @@ struct task_struct {
77809 + #endif
77810 };
77811
77812 +#define MF_PAX_PAGEEXEC 0x01000000 /* Paging based non-executable pages */
77813 @@ -64258,18 +60461,17 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77814 +#endif
77815 +
77816 /* Future-safe accessor for struct task_struct's cpus_allowed. */
77817 - #define tsk_cpumask(tsk) (&(tsk)->cpus_allowed)
77818 + #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
77819
77820 -@@ -1740,7 +1831,7 @@ extern void thread_group_times(struct ta
77821 +@@ -1768,6 +1860,7 @@ extern void thread_group_times(struct ta
77822 #define PF_DUMPCORE 0x00000200 /* dumped core */
77823 #define PF_SIGNALED 0x00000400 /* killed by a signal */
77824 #define PF_MEMALLOC 0x00000800 /* Allocating memory */
77825 --#define PF_FLUSHER 0x00001000 /* responsible for disk writeback */
77826 +#define PF_NPROC_EXCEEDED 0x00001000 /* set_user noticed that RLIMIT_NPROC was exceeded */
77827 #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */
77828 #define PF_FREEZING 0x00004000 /* freeze in progress. do not account to load */
77829 #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */
77830 -@@ -1978,7 +2069,9 @@ void yield(void);
77831 +@@ -2055,7 +2148,9 @@ void yield(void);
77832 extern struct exec_domain default_exec_domain;
77833
77834 union thread_union {
77835 @@ -64279,7 +60481,7 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77836 unsigned long stack[THREAD_SIZE/sizeof(long)];
77837 };
77838
77839 -@@ -2011,6 +2104,7 @@ extern struct pid_namespace init_pid_ns;
77840 +@@ -2088,6 +2183,7 @@ extern struct pid_namespace init_pid_ns;
77841 */
77842
77843 extern struct task_struct *find_task_by_vpid(pid_t nr);
77844 @@ -64287,7 +60489,7 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77845 extern struct task_struct *find_task_by_pid_ns(pid_t nr,
77846 struct pid_namespace *ns);
77847
77848 -@@ -2155,7 +2249,7 @@ extern void __cleanup_sighand(struct sig
77849 +@@ -2224,7 +2320,7 @@ extern void __cleanup_sighand(struct sig
77850 extern void exit_itimers(struct signal_struct *);
77851 extern void flush_itimer_signals(void);
77852
77853 @@ -64296,7 +60498,7 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77854
77855 extern void daemonize(const char *, ...);
77856 extern int allow_signal(int);
77857 -@@ -2284,13 +2378,17 @@ static inline unsigned long *end_of_stac
77858 +@@ -2392,13 +2488,17 @@ static inline unsigned long *end_of_stac
77859
77860 #endif
77861
77862 @@ -64316,10 +60518,10 @@ diff -urNp linux-2.6.32.48/include/linux/sched.h linux-2.6.32.48/include/linux/s
77863 extern void thread_info_cache_init(void);
77864
77865 #ifdef CONFIG_DEBUG_STACK_USAGE
77866 -diff -urNp linux-2.6.32.48/include/linux/screen_info.h linux-2.6.32.48/include/linux/screen_info.h
77867 ---- linux-2.6.32.48/include/linux/screen_info.h 2009-12-02 22:51:21.000000000 -0500
77868 -+++ linux-2.6.32.48/include/linux/screen_info.h 2011-11-12 12:46:47.000000000 -0500
77869 -@@ -42,7 +42,8 @@ struct screen_info {
77870 +diff -urNp linux-3.0.8/include/linux/screen_info.h linux-3.0.8/include/linux/screen_info.h
77871 +--- linux-3.0.8/include/linux/screen_info.h 2011-07-21 22:17:23.000000000 -0400
77872 ++++ linux-3.0.8/include/linux/screen_info.h 2011-08-23 21:47:56.000000000 -0400
77873 +@@ -43,7 +43,8 @@ struct screen_info {
77874 __u16 pages; /* 0x32 */
77875 __u16 vesa_attributes; /* 0x34 */
77876 __u32 capabilities; /* 0x36 */
77877 @@ -64329,20 +60531,20 @@ diff -urNp linux-2.6.32.48/include/linux/screen_info.h linux-2.6.32.48/include/l
77878 } __attribute__((packed));
77879
77880 #define VIDEO_TYPE_MDA 0x10 /* Monochrome Text Display */
77881 -diff -urNp linux-2.6.32.48/include/linux/security.h linux-2.6.32.48/include/linux/security.h
77882 ---- linux-2.6.32.48/include/linux/security.h 2011-11-12 12:44:30.000000000 -0500
77883 -+++ linux-2.6.32.48/include/linux/security.h 2011-11-12 12:46:47.000000000 -0500
77884 -@@ -34,6 +34,7 @@
77885 +diff -urNp linux-3.0.8/include/linux/security.h linux-3.0.8/include/linux/security.h
77886 +--- linux-3.0.8/include/linux/security.h 2011-07-21 22:17:23.000000000 -0400
77887 ++++ linux-3.0.8/include/linux/security.h 2011-08-23 21:48:14.000000000 -0400
77888 +@@ -36,6 +36,7 @@
77889 #include <linux/key.h>
77890 #include <linux/xfrm.h>
77891 - #include <linux/gfp.h>
77892 + #include <linux/slab.h>
77893 +#include <linux/grsecurity.h>
77894 #include <net/flow.h>
77895
77896 /* Maximum number of letters for an LSM name string */
77897 -diff -urNp linux-2.6.32.48/include/linux/seq_file.h linux-2.6.32.48/include/linux/seq_file.h
77898 ---- linux-2.6.32.48/include/linux/seq_file.h 2009-12-02 22:51:21.000000000 -0500
77899 -+++ linux-2.6.32.48/include/linux/seq_file.h 2011-11-12 12:46:47.000000000 -0500
77900 +diff -urNp linux-3.0.8/include/linux/seq_file.h linux-3.0.8/include/linux/seq_file.h
77901 +--- linux-3.0.8/include/linux/seq_file.h 2011-07-21 22:17:23.000000000 -0400
77902 ++++ linux-3.0.8/include/linux/seq_file.h 2011-08-23 21:47:56.000000000 -0400
77903 @@ -32,6 +32,7 @@ struct seq_operations {
77904 void * (*next) (struct seq_file *m, void *v, loff_t *pos);
77905 int (*show) (struct seq_file *m, void *v);
77906 @@ -64351,9 +60553,21 @@ diff -urNp linux-2.6.32.48/include/linux/seq_file.h linux-2.6.32.48/include/linu
77907
77908 #define SEQ_SKIP 1
77909
77910 -diff -urNp linux-2.6.32.48/include/linux/shm.h linux-2.6.32.48/include/linux/shm.h
77911 ---- linux-2.6.32.48/include/linux/shm.h 2009-12-02 22:51:21.000000000 -0500
77912 -+++ linux-2.6.32.48/include/linux/shm.h 2011-11-12 12:46:47.000000000 -0500
77913 +diff -urNp linux-3.0.8/include/linux/shmem_fs.h linux-3.0.8/include/linux/shmem_fs.h
77914 +--- linux-3.0.8/include/linux/shmem_fs.h 2011-07-21 22:17:23.000000000 -0400
77915 ++++ linux-3.0.8/include/linux/shmem_fs.h 2011-08-23 21:47:56.000000000 -0400
77916 +@@ -10,7 +10,7 @@
77917 +
77918 + #define SHMEM_NR_DIRECT 16
77919 +
77920 +-#define SHMEM_SYMLINK_INLINE_LEN (SHMEM_NR_DIRECT * sizeof(swp_entry_t))
77921 ++#define SHMEM_SYMLINK_INLINE_LEN 64
77922 +
77923 + struct shmem_inode_info {
77924 + spinlock_t lock;
77925 +diff -urNp linux-3.0.8/include/linux/shm.h linux-3.0.8/include/linux/shm.h
77926 +--- linux-3.0.8/include/linux/shm.h 2011-07-21 22:17:23.000000000 -0400
77927 ++++ linux-3.0.8/include/linux/shm.h 2011-08-23 21:48:14.000000000 -0400
77928 @@ -95,6 +95,10 @@ struct shmid_kernel /* private to the ke
77929 pid_t shm_cprid;
77930 pid_t shm_lprid;
77931 @@ -64365,18 +60579,10 @@ diff -urNp linux-2.6.32.48/include/linux/shm.h linux-2.6.32.48/include/linux/shm
77932 };
77933
77934 /* shm_mode upper byte flags */
77935 -diff -urNp linux-2.6.32.48/include/linux/skbuff.h linux-2.6.32.48/include/linux/skbuff.h
77936 ---- linux-2.6.32.48/include/linux/skbuff.h 2009-12-02 22:51:21.000000000 -0500
77937 -+++ linux-2.6.32.48/include/linux/skbuff.h 2011-11-12 12:46:47.000000000 -0500
77938 -@@ -14,6 +14,7 @@
77939 - #ifndef _LINUX_SKBUFF_H
77940 - #define _LINUX_SKBUFF_H
77941 -
77942 -+#include <linux/const.h>
77943 - #include <linux/kernel.h>
77944 - #include <linux/kmemcheck.h>
77945 - #include <linux/compiler.h>
77946 -@@ -544,7 +545,7 @@ static inline union skb_shared_tx *skb_t
77947 +diff -urNp linux-3.0.8/include/linux/skbuff.h linux-3.0.8/include/linux/skbuff.h
77948 +--- linux-3.0.8/include/linux/skbuff.h 2011-07-21 22:17:23.000000000 -0400
77949 ++++ linux-3.0.8/include/linux/skbuff.h 2011-08-23 21:47:56.000000000 -0400
77950 +@@ -592,7 +592,7 @@ static inline struct skb_shared_hwtstamp
77951 */
77952 static inline int skb_queue_empty(const struct sk_buff_head *list)
77953 {
77954 @@ -64385,37 +60591,37 @@ diff -urNp linux-2.6.32.48/include/linux/skbuff.h linux-2.6.32.48/include/linux/
77955 }
77956
77957 /**
77958 -@@ -557,7 +558,7 @@ static inline int skb_queue_empty(const
77959 +@@ -605,7 +605,7 @@ static inline int skb_queue_empty(const
77960 static inline bool skb_queue_is_last(const struct sk_buff_head *list,
77961 const struct sk_buff *skb)
77962 {
77963 -- return (skb->next == (struct sk_buff *) list);
77964 -+ return (skb->next == (const struct sk_buff *) list);
77965 +- return skb->next == (struct sk_buff *)list;
77966 ++ return skb->next == (const struct sk_buff *)list;
77967 }
77968
77969 /**
77970 -@@ -570,7 +571,7 @@ static inline bool skb_queue_is_last(con
77971 +@@ -618,7 +618,7 @@ static inline bool skb_queue_is_last(con
77972 static inline bool skb_queue_is_first(const struct sk_buff_head *list,
77973 const struct sk_buff *skb)
77974 {
77975 -- return (skb->prev == (struct sk_buff *) list);
77976 -+ return (skb->prev == (const struct sk_buff *) list);
77977 +- return skb->prev == (struct sk_buff *)list;
77978 ++ return skb->prev == (const struct sk_buff *)list;
77979 }
77980
77981 /**
77982 -@@ -1367,7 +1368,7 @@ static inline int skb_network_offset(con
77983 - * headroom, you should not reduce this.
77984 +@@ -1440,7 +1440,7 @@ static inline int pskb_network_may_pull(
77985 + * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
77986 */
77987 #ifndef NET_SKB_PAD
77988 --#define NET_SKB_PAD 32
77989 -+#define NET_SKB_PAD (_AC(32,UL))
77990 +-#define NET_SKB_PAD max(32, L1_CACHE_BYTES)
77991 ++#define NET_SKB_PAD max(_AC(32,UL), L1_CACHE_BYTES)
77992 #endif
77993
77994 extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
77995 -diff -urNp linux-2.6.32.48/include/linux/slab_def.h linux-2.6.32.48/include/linux/slab_def.h
77996 ---- linux-2.6.32.48/include/linux/slab_def.h 2009-12-02 22:51:21.000000000 -0500
77997 -+++ linux-2.6.32.48/include/linux/slab_def.h 2011-11-12 12:46:47.000000000 -0500
77998 -@@ -69,10 +69,10 @@ struct kmem_cache {
77999 +diff -urNp linux-3.0.8/include/linux/slab_def.h linux-3.0.8/include/linux/slab_def.h
78000 +--- linux-3.0.8/include/linux/slab_def.h 2011-07-21 22:17:23.000000000 -0400
78001 ++++ linux-3.0.8/include/linux/slab_def.h 2011-08-23 21:47:56.000000000 -0400
78002 +@@ -96,10 +96,10 @@ struct kmem_cache {
78003 unsigned long node_allocs;
78004 unsigned long node_frees;
78005 unsigned long node_overflow;
78006 @@ -64430,9 +60636,9 @@ diff -urNp linux-2.6.32.48/include/linux/slab_def.h linux-2.6.32.48/include/linu
78007
78008 /*
78009 * If debugging is enabled, then the allocator can add additional
78010 -diff -urNp linux-2.6.32.48/include/linux/slab.h linux-2.6.32.48/include/linux/slab.h
78011 ---- linux-2.6.32.48/include/linux/slab.h 2009-12-02 22:51:21.000000000 -0500
78012 -+++ linux-2.6.32.48/include/linux/slab.h 2011-11-12 12:46:47.000000000 -0500
78013 +diff -urNp linux-3.0.8/include/linux/slab.h linux-3.0.8/include/linux/slab.h
78014 +--- linux-3.0.8/include/linux/slab.h 2011-07-21 22:17:23.000000000 -0400
78015 ++++ linux-3.0.8/include/linux/slab.h 2011-08-23 21:47:56.000000000 -0400
78016 @@ -11,12 +11,20 @@
78017
78018 #include <linux/gfp.h>
78019 @@ -64454,7 +60660,7 @@ diff -urNp linux-2.6.32.48/include/linux/slab.h linux-2.6.32.48/include/linux/sl
78020 #define SLAB_RED_ZONE 0x00000400UL /* DEBUG: Red zone objs in a cache */
78021 #define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */
78022 #define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */
78023 -@@ -82,10 +90,13 @@
78024 +@@ -87,10 +95,13 @@
78025 * ZERO_SIZE_PTR can be passed to kfree though in the same way that NULL can.
78026 * Both make kfree a no-op.
78027 */
78028 @@ -64471,7 +60677,7 @@ diff -urNp linux-2.6.32.48/include/linux/slab.h linux-2.6.32.48/include/linux/sl
78029
78030 /*
78031 * struct kmem_cache related prototypes
78032 -@@ -138,6 +149,7 @@ void * __must_check krealloc(const void
78033 +@@ -141,6 +152,7 @@ void * __must_check krealloc(const void
78034 void kfree(const void *);
78035 void kzfree(const void *);
78036 size_t ksize(const void *);
78037 @@ -64479,19 +60685,19 @@ diff -urNp linux-2.6.32.48/include/linux/slab.h linux-2.6.32.48/include/linux/sl
78038
78039 /*
78040 * Allocator specific definitions. These are mainly used to establish optimized
78041 -@@ -328,4 +340,37 @@ static inline void *kzalloc_node(size_t
78042 +@@ -333,4 +345,59 @@ static inline void *kzalloc_node(size_t
78043
78044 void __init kmem_cache_init_late(void);
78045
78046 -+#define kmalloc(x, y) \
78047 -+({ \
78048 -+ void *___retval; \
78049 -+ intoverflow_t ___x = (intoverflow_t)x; \
78050 -+ if (WARN(___x > ULONG_MAX, "kmalloc size overflow\n"))\
78051 -+ ___retval = NULL; \
78052 -+ else \
78053 -+ ___retval = kmalloc((size_t)___x, (y)); \
78054 -+ ___retval; \
78055 ++#define kmalloc(x, y) \
78056 ++({ \
78057 ++ void *___retval; \
78058 ++ intoverflow_t ___x = (intoverflow_t)x; \
78059 ++ if (WARN(___x > ULONG_MAX, "kmalloc size overflow\n")) \
78060 ++ ___retval = NULL; \
78061 ++ else \
78062 ++ ___retval = kmalloc((size_t)___x, (y)); \
78063 ++ ___retval; \
78064 +})
78065 +
78066 +#define kmalloc_node(x, y, z) \
78067 @@ -64505,22 +60711,44 @@ diff -urNp linux-2.6.32.48/include/linux/slab.h linux-2.6.32.48/include/linux/sl
78068 + ___retval; \
78069 +})
78070 +
78071 -+#define kzalloc(x, y) \
78072 -+({ \
78073 -+ void *___retval; \
78074 -+ intoverflow_t ___x = (intoverflow_t)x; \
78075 -+ if (WARN(___x > ULONG_MAX, "kzalloc size overflow\n"))\
78076 -+ ___retval = NULL; \
78077 -+ else \
78078 -+ ___retval = kzalloc((size_t)___x, (y)); \
78079 -+ ___retval; \
78080 ++#define kzalloc(x, y) \
78081 ++({ \
78082 ++ void *___retval; \
78083 ++ intoverflow_t ___x = (intoverflow_t)x; \
78084 ++ if (WARN(___x > ULONG_MAX, "kzalloc size overflow\n")) \
78085 ++ ___retval = NULL; \
78086 ++ else \
78087 ++ ___retval = kzalloc((size_t)___x, (y)); \
78088 ++ ___retval; \
78089 ++})
78090 ++
78091 ++#define __krealloc(x, y, z) \
78092 ++({ \
78093 ++ void *___retval; \
78094 ++ intoverflow_t ___y = (intoverflow_t)y; \
78095 ++ if (WARN(___y > ULONG_MAX, "__krealloc size overflow\n"))\
78096 ++ ___retval = NULL; \
78097 ++ else \
78098 ++ ___retval = __krealloc((x), (size_t)___y, (z)); \
78099 ++ ___retval; \
78100 ++})
78101 ++
78102 ++#define krealloc(x, y, z) \
78103 ++({ \
78104 ++ void *___retval; \
78105 ++ intoverflow_t ___y = (intoverflow_t)y; \
78106 ++ if (WARN(___y > ULONG_MAX, "krealloc size overflow\n")) \
78107 ++ ___retval = NULL; \
78108 ++ else \
78109 ++ ___retval = krealloc((x), (size_t)___y, (z)); \
78110 ++ ___retval; \
78111 +})
78112 +
78113 #endif /* _LINUX_SLAB_H */
78114 -diff -urNp linux-2.6.32.48/include/linux/slub_def.h linux-2.6.32.48/include/linux/slub_def.h
78115 ---- linux-2.6.32.48/include/linux/slub_def.h 2009-12-02 22:51:21.000000000 -0500
78116 -+++ linux-2.6.32.48/include/linux/slub_def.h 2011-11-12 12:46:47.000000000 -0500
78117 -@@ -86,7 +86,7 @@ struct kmem_cache {
78118 +diff -urNp linux-3.0.8/include/linux/slub_def.h linux-3.0.8/include/linux/slub_def.h
78119 +--- linux-3.0.8/include/linux/slub_def.h 2011-07-21 22:17:23.000000000 -0400
78120 ++++ linux-3.0.8/include/linux/slub_def.h 2011-08-23 21:47:56.000000000 -0400
78121 +@@ -82,7 +82,7 @@ struct kmem_cache {
78122 struct kmem_cache_order_objects max;
78123 struct kmem_cache_order_objects min;
78124 gfp_t allocflags; /* gfp flags to use on each alloc */
78125 @@ -64529,18 +60757,18 @@ diff -urNp linux-2.6.32.48/include/linux/slub_def.h linux-2.6.32.48/include/linu
78126 void (*ctor)(void *);
78127 int inuse; /* Offset to metadata */
78128 int align; /* Alignment */
78129 -@@ -215,7 +215,7 @@ static __always_inline struct kmem_cache
78130 - #endif
78131 +@@ -218,7 +218,7 @@ static __always_inline struct kmem_cache
78132 + }
78133
78134 void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
78135 -void *__kmalloc(size_t size, gfp_t flags);
78136 +void *__kmalloc(size_t size, gfp_t flags) __alloc_size(1);
78137
78138 - #ifdef CONFIG_KMEMTRACE
78139 - extern void *kmem_cache_alloc_notrace(struct kmem_cache *s, gfp_t gfpflags);
78140 -diff -urNp linux-2.6.32.48/include/linux/sonet.h linux-2.6.32.48/include/linux/sonet.h
78141 ---- linux-2.6.32.48/include/linux/sonet.h 2009-12-02 22:51:21.000000000 -0500
78142 -+++ linux-2.6.32.48/include/linux/sonet.h 2011-11-12 12:46:47.000000000 -0500
78143 + static __always_inline void *
78144 + kmalloc_order(size_t size, gfp_t flags, unsigned int order)
78145 +diff -urNp linux-3.0.8/include/linux/sonet.h linux-3.0.8/include/linux/sonet.h
78146 +--- linux-3.0.8/include/linux/sonet.h 2011-07-21 22:17:23.000000000 -0400
78147 ++++ linux-3.0.8/include/linux/sonet.h 2011-08-23 21:47:56.000000000 -0400
78148 @@ -61,7 +61,7 @@ struct sonet_stats {
78149 #include <asm/atomic.h>
78150
78151 @@ -64550,22 +60778,10 @@ diff -urNp linux-2.6.32.48/include/linux/sonet.h linux-2.6.32.48/include/linux/s
78152 __SONET_ITEMS
78153 #undef __HANDLE_ITEM
78154 };
78155 -diff -urNp linux-2.6.32.48/include/linux/sunrpc/cache.h linux-2.6.32.48/include/linux/sunrpc/cache.h
78156 ---- linux-2.6.32.48/include/linux/sunrpc/cache.h 2009-12-02 22:51:21.000000000 -0500
78157 -+++ linux-2.6.32.48/include/linux/sunrpc/cache.h 2011-11-12 12:46:47.000000000 -0500
78158 -@@ -125,7 +125,7 @@ struct cache_detail {
78159 - */
78160 - struct cache_req {
78161 - struct cache_deferred_req *(*defer)(struct cache_req *req);
78162 --};
78163 -+} __no_const;
78164 - /* this must be embedded in a deferred_request that is being
78165 - * delayed awaiting cache-fill
78166 - */
78167 -diff -urNp linux-2.6.32.48/include/linux/sunrpc/clnt.h linux-2.6.32.48/include/linux/sunrpc/clnt.h
78168 ---- linux-2.6.32.48/include/linux/sunrpc/clnt.h 2009-12-02 22:51:21.000000000 -0500
78169 -+++ linux-2.6.32.48/include/linux/sunrpc/clnt.h 2011-11-12 12:46:47.000000000 -0500
78170 -@@ -167,9 +167,9 @@ static inline unsigned short rpc_get_por
78171 +diff -urNp linux-3.0.8/include/linux/sunrpc/clnt.h linux-3.0.8/include/linux/sunrpc/clnt.h
78172 +--- linux-3.0.8/include/linux/sunrpc/clnt.h 2011-07-21 22:17:23.000000000 -0400
78173 ++++ linux-3.0.8/include/linux/sunrpc/clnt.h 2011-08-23 21:47:56.000000000 -0400
78174 +@@ -169,9 +169,9 @@ static inline unsigned short rpc_get_por
78175 {
78176 switch (sap->sa_family) {
78177 case AF_INET:
78178 @@ -64577,7 +60793,7 @@ diff -urNp linux-2.6.32.48/include/linux/sunrpc/clnt.h linux-2.6.32.48/include/l
78179 }
78180 return 0;
78181 }
78182 -@@ -202,7 +202,7 @@ static inline bool __rpc_cmp_addr4(const
78183 +@@ -204,7 +204,7 @@ static inline bool __rpc_cmp_addr4(const
78184 static inline bool __rpc_copy_addr4(struct sockaddr *dst,
78185 const struct sockaddr *src)
78186 {
78187 @@ -64586,7 +60802,7 @@ diff -urNp linux-2.6.32.48/include/linux/sunrpc/clnt.h linux-2.6.32.48/include/l
78188 struct sockaddr_in *dsin = (struct sockaddr_in *) dst;
78189
78190 dsin->sin_family = ssin->sin_family;
78191 -@@ -299,7 +299,7 @@ static inline u32 rpc_get_scope_id(const
78192 +@@ -301,7 +301,7 @@ static inline u32 rpc_get_scope_id(const
78193 if (sa->sa_family != AF_INET6)
78194 return 0;
78195
78196 @@ -64595,9 +60811,9 @@ diff -urNp linux-2.6.32.48/include/linux/sunrpc/clnt.h linux-2.6.32.48/include/l
78197 }
78198
78199 #endif /* __KERNEL__ */
78200 -diff -urNp linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h
78201 ---- linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h 2009-12-02 22:51:21.000000000 -0500
78202 -+++ linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h 2011-11-12 12:46:47.000000000 -0500
78203 +diff -urNp linux-3.0.8/include/linux/sunrpc/svc_rdma.h linux-3.0.8/include/linux/sunrpc/svc_rdma.h
78204 +--- linux-3.0.8/include/linux/sunrpc/svc_rdma.h 2011-07-21 22:17:23.000000000 -0400
78205 ++++ linux-3.0.8/include/linux/sunrpc/svc_rdma.h 2011-08-23 21:47:56.000000000 -0400
78206 @@ -53,15 +53,15 @@ extern unsigned int svcrdma_ord;
78207 extern unsigned int svcrdma_max_requests;
78208 extern unsigned int svcrdma_max_req_size;
78209 @@ -64623,101 +60839,10 @@ diff -urNp linux-2.6.32.48/include/linux/sunrpc/svc_rdma.h linux-2.6.32.48/inclu
78210
78211 #define RPCRDMA_VERSION 1
78212
78213 -diff -urNp linux-2.6.32.48/include/linux/suspend.h linux-2.6.32.48/include/linux/suspend.h
78214 ---- linux-2.6.32.48/include/linux/suspend.h 2009-12-02 22:51:21.000000000 -0500
78215 -+++ linux-2.6.32.48/include/linux/suspend.h 2011-11-12 12:46:47.000000000 -0500
78216 -@@ -104,15 +104,15 @@ typedef int __bitwise suspend_state_t;
78217 - * which require special recovery actions in that situation.
78218 - */
78219 - struct platform_suspend_ops {
78220 -- int (*valid)(suspend_state_t state);
78221 -- int (*begin)(suspend_state_t state);
78222 -- int (*prepare)(void);
78223 -- int (*prepare_late)(void);
78224 -- int (*enter)(suspend_state_t state);
78225 -- void (*wake)(void);
78226 -- void (*finish)(void);
78227 -- void (*end)(void);
78228 -- void (*recover)(void);
78229 -+ int (* const valid)(suspend_state_t state);
78230 -+ int (* const begin)(suspend_state_t state);
78231 -+ int (* const prepare)(void);
78232 -+ int (* const prepare_late)(void);
78233 -+ int (* const enter)(suspend_state_t state);
78234 -+ void (* const wake)(void);
78235 -+ void (* const finish)(void);
78236 -+ void (* const end)(void);
78237 -+ void (* const recover)(void);
78238 - };
78239 -
78240 - #ifdef CONFIG_SUSPEND
78241 -@@ -120,7 +120,7 @@ struct platform_suspend_ops {
78242 - * suspend_set_ops - set platform dependent suspend operations
78243 - * @ops: The new suspend operations to set.
78244 - */
78245 --extern void suspend_set_ops(struct platform_suspend_ops *ops);
78246 -+extern void suspend_set_ops(const struct platform_suspend_ops *ops);
78247 - extern int suspend_valid_only_mem(suspend_state_t state);
78248 -
78249 - /**
78250 -@@ -145,7 +145,7 @@ extern int pm_suspend(suspend_state_t st
78251 - #else /* !CONFIG_SUSPEND */
78252 - #define suspend_valid_only_mem NULL
78253 -
78254 --static inline void suspend_set_ops(struct platform_suspend_ops *ops) {}
78255 -+static inline void suspend_set_ops(const struct platform_suspend_ops *ops) {}
78256 - static inline int pm_suspend(suspend_state_t state) { return -ENOSYS; }
78257 - #endif /* !CONFIG_SUSPEND */
78258 -
78259 -@@ -215,16 +215,16 @@ extern void mark_free_pages(struct zone
78260 - * platforms which require special recovery actions in that situation.
78261 - */
78262 - struct platform_hibernation_ops {
78263 -- int (*begin)(void);
78264 -- void (*end)(void);
78265 -- int (*pre_snapshot)(void);
78266 -- void (*finish)(void);
78267 -- int (*prepare)(void);
78268 -- int (*enter)(void);
78269 -- void (*leave)(void);
78270 -- int (*pre_restore)(void);
78271 -- void (*restore_cleanup)(void);
78272 -- void (*recover)(void);
78273 -+ int (* const begin)(void);
78274 -+ void (* const end)(void);
78275 -+ int (* const pre_snapshot)(void);
78276 -+ void (* const finish)(void);
78277 -+ int (* const prepare)(void);
78278 -+ int (* const enter)(void);
78279 -+ void (* const leave)(void);
78280 -+ int (* const pre_restore)(void);
78281 -+ void (* const restore_cleanup)(void);
78282 -+ void (* const recover)(void);
78283 - };
78284 -
78285 - #ifdef CONFIG_HIBERNATION
78286 -@@ -243,7 +243,7 @@ extern void swsusp_set_page_free(struct
78287 - extern void swsusp_unset_page_free(struct page *);
78288 - extern unsigned long get_safe_page(gfp_t gfp_mask);
78289 -
78290 --extern void hibernation_set_ops(struct platform_hibernation_ops *ops);
78291 -+extern void hibernation_set_ops(const struct platform_hibernation_ops *ops);
78292 - extern int hibernate(void);
78293 - extern bool system_entering_hibernation(void);
78294 - #else /* CONFIG_HIBERNATION */
78295 -@@ -251,7 +251,7 @@ static inline int swsusp_page_is_forbidd
78296 - static inline void swsusp_set_page_free(struct page *p) {}
78297 - static inline void swsusp_unset_page_free(struct page *p) {}
78298 -
78299 --static inline void hibernation_set_ops(struct platform_hibernation_ops *ops) {}
78300 -+static inline void hibernation_set_ops(const struct platform_hibernation_ops *ops) {}
78301 - static inline int hibernate(void) { return -ENOSYS; }
78302 - static inline bool system_entering_hibernation(void) { return false; }
78303 - #endif /* CONFIG_HIBERNATION */
78304 -diff -urNp linux-2.6.32.48/include/linux/sysctl.h linux-2.6.32.48/include/linux/sysctl.h
78305 ---- linux-2.6.32.48/include/linux/sysctl.h 2011-11-12 12:44:30.000000000 -0500
78306 -+++ linux-2.6.32.48/include/linux/sysctl.h 2011-11-12 12:46:47.000000000 -0500
78307 -@@ -164,7 +164,11 @@ enum
78308 +diff -urNp linux-3.0.8/include/linux/sysctl.h linux-3.0.8/include/linux/sysctl.h
78309 +--- linux-3.0.8/include/linux/sysctl.h 2011-07-21 22:17:23.000000000 -0400
78310 ++++ linux-3.0.8/include/linux/sysctl.h 2011-08-23 21:48:14.000000000 -0400
78311 +@@ -155,7 +155,11 @@ enum
78312 KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
78313 };
78314
78315 @@ -64730,7 +60855,7 @@ diff -urNp linux-2.6.32.48/include/linux/sysctl.h linux-2.6.32.48/include/linux/
78316
78317 /* CTL_VM names: */
78318 enum
78319 -@@ -982,6 +986,8 @@ typedef int proc_handler (struct ctl_tab
78320 +@@ -967,6 +971,8 @@ typedef int proc_handler (struct ctl_tab
78321
78322 extern int proc_dostring(struct ctl_table *, int,
78323 void __user *, size_t *, loff_t *);
78324 @@ -64739,55 +60864,10 @@ diff -urNp linux-2.6.32.48/include/linux/sysctl.h linux-2.6.32.48/include/linux/
78325 extern int proc_dointvec(struct ctl_table *, int,
78326 void __user *, size_t *, loff_t *);
78327 extern int proc_dointvec_minmax(struct ctl_table *, int,
78328 -@@ -1003,6 +1009,7 @@ extern int do_sysctl (int __user *name,
78329 -
78330 - extern ctl_handler sysctl_data;
78331 - extern ctl_handler sysctl_string;
78332 -+extern ctl_handler sysctl_string_modpriv;
78333 - extern ctl_handler sysctl_intvec;
78334 - extern ctl_handler sysctl_jiffies;
78335 - extern ctl_handler sysctl_ms_jiffies;
78336 -diff -urNp linux-2.6.32.48/include/linux/sysfs.h linux-2.6.32.48/include/linux/sysfs.h
78337 ---- linux-2.6.32.48/include/linux/sysfs.h 2009-12-02 22:51:21.000000000 -0500
78338 -+++ linux-2.6.32.48/include/linux/sysfs.h 2011-11-12 12:46:47.000000000 -0500
78339 -@@ -75,8 +75,8 @@ struct bin_attribute {
78340 - };
78341 -
78342 - struct sysfs_ops {
78343 -- ssize_t (*show)(struct kobject *, struct attribute *,char *);
78344 -- ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
78345 -+ ssize_t (* const show)(struct kobject *, struct attribute *,char *);
78346 -+ ssize_t (* const store)(struct kobject *,struct attribute *,const char *, size_t);
78347 - };
78348 -
78349 - struct sysfs_dirent;
78350 -diff -urNp linux-2.6.32.48/include/linux/thread_info.h linux-2.6.32.48/include/linux/thread_info.h
78351 ---- linux-2.6.32.48/include/linux/thread_info.h 2009-12-02 22:51:21.000000000 -0500
78352 -+++ linux-2.6.32.48/include/linux/thread_info.h 2011-11-12 12:46:47.000000000 -0500
78353 -@@ -23,7 +23,7 @@ struct restart_block {
78354 - };
78355 - /* For futex_wait and futex_wait_requeue_pi */
78356 - struct {
78357 -- u32 *uaddr;
78358 -+ u32 __user *uaddr;
78359 - u32 val;
78360 - u32 flags;
78361 - u32 bitset;
78362 -diff -urNp linux-2.6.32.48/include/linux/tty.h linux-2.6.32.48/include/linux/tty.h
78363 ---- linux-2.6.32.48/include/linux/tty.h 2011-11-12 12:44:30.000000000 -0500
78364 -+++ linux-2.6.32.48/include/linux/tty.h 2011-11-12 12:46:47.000000000 -0500
78365 -@@ -493,7 +493,6 @@ extern void tty_ldisc_begin(void);
78366 - /* This last one is just for the tty layer internals and shouldn't be used elsewhere */
78367 - extern void tty_ldisc_enable(struct tty_struct *tty);
78368 -
78369 --
78370 - /* n_tty.c */
78371 - extern struct tty_ldisc_ops tty_ldisc_N_TTY;
78372 -
78373 -diff -urNp linux-2.6.32.48/include/linux/tty_ldisc.h linux-2.6.32.48/include/linux/tty_ldisc.h
78374 ---- linux-2.6.32.48/include/linux/tty_ldisc.h 2009-12-02 22:51:21.000000000 -0500
78375 -+++ linux-2.6.32.48/include/linux/tty_ldisc.h 2011-11-12 12:46:47.000000000 -0500
78376 -@@ -139,7 +139,7 @@ struct tty_ldisc_ops {
78377 +diff -urNp linux-3.0.8/include/linux/tty_ldisc.h linux-3.0.8/include/linux/tty_ldisc.h
78378 +--- linux-3.0.8/include/linux/tty_ldisc.h 2011-07-21 22:17:23.000000000 -0400
78379 ++++ linux-3.0.8/include/linux/tty_ldisc.h 2011-08-23 21:47:56.000000000 -0400
78380 +@@ -148,7 +148,7 @@ struct tty_ldisc_ops {
78381
78382 struct module *owner;
78383
78384 @@ -64796,16 +60876,16 @@ diff -urNp linux-2.6.32.48/include/linux/tty_ldisc.h linux-2.6.32.48/include/lin
78385 };
78386
78387 struct tty_ldisc {
78388 -diff -urNp linux-2.6.32.48/include/linux/types.h linux-2.6.32.48/include/linux/types.h
78389 ---- linux-2.6.32.48/include/linux/types.h 2009-12-02 22:51:21.000000000 -0500
78390 -+++ linux-2.6.32.48/include/linux/types.h 2011-11-12 12:46:47.000000000 -0500
78391 -@@ -191,10 +191,26 @@ typedef struct {
78392 - volatile int counter;
78393 +diff -urNp linux-3.0.8/include/linux/types.h linux-3.0.8/include/linux/types.h
78394 +--- linux-3.0.8/include/linux/types.h 2011-07-21 22:17:23.000000000 -0400
78395 ++++ linux-3.0.8/include/linux/types.h 2011-08-23 21:47:56.000000000 -0400
78396 +@@ -213,10 +213,26 @@ typedef struct {
78397 + int counter;
78398 } atomic_t;
78399
78400 +#ifdef CONFIG_PAX_REFCOUNT
78401 +typedef struct {
78402 -+ volatile int counter;
78403 ++ int counter;
78404 +} atomic_unchecked_t;
78405 +#else
78406 +typedef atomic_t atomic_unchecked_t;
78407 @@ -64813,22 +60893,22 @@ diff -urNp linux-2.6.32.48/include/linux/types.h linux-2.6.32.48/include/linux/t
78408 +
78409 #ifdef CONFIG_64BIT
78410 typedef struct {
78411 - volatile long counter;
78412 + long counter;
78413 } atomic64_t;
78414 +
78415 +#ifdef CONFIG_PAX_REFCOUNT
78416 +typedef struct {
78417 -+ volatile long counter;
78418 ++ long counter;
78419 +} atomic64_unchecked_t;
78420 +#else
78421 +typedef atomic64_t atomic64_unchecked_t;
78422 +#endif
78423 #endif
78424
78425 - struct ustat {
78426 -diff -urNp linux-2.6.32.48/include/linux/uaccess.h linux-2.6.32.48/include/linux/uaccess.h
78427 ---- linux-2.6.32.48/include/linux/uaccess.h 2009-12-02 22:51:21.000000000 -0500
78428 -+++ linux-2.6.32.48/include/linux/uaccess.h 2011-11-12 12:46:47.000000000 -0500
78429 + struct list_head {
78430 +diff -urNp linux-3.0.8/include/linux/uaccess.h linux-3.0.8/include/linux/uaccess.h
78431 +--- linux-3.0.8/include/linux/uaccess.h 2011-07-21 22:17:23.000000000 -0400
78432 ++++ linux-3.0.8/include/linux/uaccess.h 2011-10-06 04:17:55.000000000 -0400
78433 @@ -76,11 +76,11 @@ static inline unsigned long __copy_from_
78434 long ret; \
78435 mm_segment_t old_fs = get_fs(); \
78436 @@ -64844,26 +60924,9 @@ diff -urNp linux-2.6.32.48/include/linux/uaccess.h linux-2.6.32.48/include/linux
78437 ret; \
78438 })
78439
78440 -@@ -93,7 +93,7 @@ static inline unsigned long __copy_from_
78441 - * Safely read from address @src to the buffer at @dst. If a kernel fault
78442 - * happens, handle that and return -EFAULT.
78443 - */
78444 --extern long probe_kernel_read(void *dst, void *src, size_t size);
78445 -+extern long probe_kernel_read(void *dst, const void *src, size_t size);
78446 -
78447 - /*
78448 - * probe_kernel_write(): safely attempt to write to a location
78449 -@@ -104,6 +104,6 @@ extern long probe_kernel_read(void *dst,
78450 - * Safely write to address @dst from the buffer at @src. If a kernel fault
78451 - * happens, handle that and return -EFAULT.
78452 - */
78453 --extern long probe_kernel_write(void *dst, void *src, size_t size);
78454 -+extern long probe_kernel_write(void *dst, const void *src, size_t size);
78455 -
78456 - #endif /* __LINUX_UACCESS_H__ */
78457 -diff -urNp linux-2.6.32.48/include/linux/unaligned/access_ok.h linux-2.6.32.48/include/linux/unaligned/access_ok.h
78458 ---- linux-2.6.32.48/include/linux/unaligned/access_ok.h 2009-12-02 22:51:21.000000000 -0500
78459 -+++ linux-2.6.32.48/include/linux/unaligned/access_ok.h 2011-11-12 12:46:47.000000000 -0500
78460 +diff -urNp linux-3.0.8/include/linux/unaligned/access_ok.h linux-3.0.8/include/linux/unaligned/access_ok.h
78461 +--- linux-3.0.8/include/linux/unaligned/access_ok.h 2011-07-21 22:17:23.000000000 -0400
78462 ++++ linux-3.0.8/include/linux/unaligned/access_ok.h 2011-08-23 21:47:56.000000000 -0400
78463 @@ -6,32 +6,32 @@
78464
78465 static inline u16 get_unaligned_le16(const void *p)
78466 @@ -64903,9 +60966,9 @@ diff -urNp linux-2.6.32.48/include/linux/unaligned/access_ok.h linux-2.6.32.48/i
78467 }
78468
78469 static inline void put_unaligned_le16(u16 val, void *p)
78470 -diff -urNp linux-2.6.32.48/include/linux/vermagic.h linux-2.6.32.48/include/linux/vermagic.h
78471 ---- linux-2.6.32.48/include/linux/vermagic.h 2009-12-02 22:51:21.000000000 -0500
78472 -+++ linux-2.6.32.48/include/linux/vermagic.h 2011-11-12 12:46:47.000000000 -0500
78473 +diff -urNp linux-3.0.8/include/linux/vermagic.h linux-3.0.8/include/linux/vermagic.h
78474 +--- linux-3.0.8/include/linux/vermagic.h 2011-07-21 22:17:23.000000000 -0400
78475 ++++ linux-3.0.8/include/linux/vermagic.h 2011-10-07 19:25:35.000000000 -0400
78476 @@ -26,9 +26,28 @@
78477 #define MODULE_ARCH_VERMAGIC ""
78478 #endif
78479 @@ -64936,9 +60999,9 @@ diff -urNp linux-2.6.32.48/include/linux/vermagic.h linux-2.6.32.48/include/linu
78480 + MODULE_ARCH_VERMAGIC \
78481 + MODULE_PAX_REFCOUNT MODULE_CONSTIFY_PLUGIN MODULE_GRSEC
78482
78483 -diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux/vmalloc.h
78484 ---- linux-2.6.32.48/include/linux/vmalloc.h 2011-11-12 12:44:30.000000000 -0500
78485 -+++ linux-2.6.32.48/include/linux/vmalloc.h 2011-11-12 12:46:47.000000000 -0500
78486 +diff -urNp linux-3.0.8/include/linux/vmalloc.h linux-3.0.8/include/linux/vmalloc.h
78487 +--- linux-3.0.8/include/linux/vmalloc.h 2011-07-21 22:17:23.000000000 -0400
78488 ++++ linux-3.0.8/include/linux/vmalloc.h 2011-08-23 21:47:56.000000000 -0400
78489 @@ -13,6 +13,11 @@ struct vm_area_struct; /* vma defining
78490 #define VM_MAP 0x00000004 /* vmap()ed pages */
78491 #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
78492 @@ -64951,9 +61014,9 @@ diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux
78493 /* bits [20..32] reserved for arch specific ioremap internals */
78494
78495 /*
78496 -@@ -123,4 +128,81 @@ struct vm_struct **pcpu_get_vm_areas(con
78497 -
78498 - void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms);
78499 +@@ -155,4 +160,103 @@ pcpu_free_vm_areas(struct vm_struct **vm
78500 + # endif
78501 + #endif
78502
78503 +#define vmalloc(x) \
78504 +({ \
78505 @@ -64966,6 +61029,17 @@ diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux
78506 + ___retval; \
78507 +})
78508 +
78509 ++#define vzalloc(x) \
78510 ++({ \
78511 ++ void *___retval; \
78512 ++ intoverflow_t ___x = (intoverflow_t)x; \
78513 ++ if (WARN(___x > ULONG_MAX, "vzalloc size overflow\n")) \
78514 ++ ___retval = NULL; \
78515 ++ else \
78516 ++ ___retval = vzalloc((unsigned long)___x); \
78517 ++ ___retval; \
78518 ++})
78519 ++
78520 +#define __vmalloc(x, y, z) \
78521 +({ \
78522 + void *___retval; \
78523 @@ -65010,6 +61084,17 @@ diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux
78524 + ___retval; \
78525 +})
78526 +
78527 ++#define vzalloc_node(x, y) \
78528 ++({ \
78529 ++ void *___retval; \
78530 ++ intoverflow_t ___x = (intoverflow_t)x; \
78531 ++ if (WARN(___x > ULONG_MAX, "vzalloc_node size overflow\n"))\
78532 ++ ___retval = NULL; \
78533 ++ else \
78534 ++ ___retval = vzalloc_node((unsigned long)___x, (y));\
78535 ++ ___retval; \
78536 ++})
78537 ++
78538 +#define vmalloc_32(x) \
78539 +({ \
78540 + void *___retval; \
78541 @@ -65023,7 +61108,7 @@ diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux
78542 +
78543 +#define vmalloc_32_user(x) \
78544 +({ \
78545 -+ void *___retval; \
78546 ++void *___retval; \
78547 + intoverflow_t ___x = (intoverflow_t)x; \
78548 + if (WARN(___x > ULONG_MAX, "vmalloc_32_user size overflow\n"))\
78549 + ___retval = NULL; \
78550 @@ -65033,10 +61118,10 @@ diff -urNp linux-2.6.32.48/include/linux/vmalloc.h linux-2.6.32.48/include/linux
78551 +})
78552 +
78553 #endif /* _LINUX_VMALLOC_H */
78554 -diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/vmstat.h
78555 ---- linux-2.6.32.48/include/linux/vmstat.h 2011-11-12 12:44:30.000000000 -0500
78556 -+++ linux-2.6.32.48/include/linux/vmstat.h 2011-11-12 12:46:47.000000000 -0500
78557 -@@ -136,18 +136,18 @@ static inline void vm_events_fold_cpu(in
78558 +diff -urNp linux-3.0.8/include/linux/vmstat.h linux-3.0.8/include/linux/vmstat.h
78559 +--- linux-3.0.8/include/linux/vmstat.h 2011-07-21 22:17:23.000000000 -0400
78560 ++++ linux-3.0.8/include/linux/vmstat.h 2011-08-23 21:47:56.000000000 -0400
78561 +@@ -87,18 +87,18 @@ static inline void vm_events_fold_cpu(in
78562 /*
78563 * Zone based page accounting with per cpu differentials.
78564 */
78565 @@ -65059,7 +61144,7 @@ diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/
78566 #ifdef CONFIG_SMP
78567 if (x < 0)
78568 x = 0;
78569 -@@ -158,7 +158,7 @@ static inline unsigned long global_page_
78570 +@@ -109,7 +109,7 @@ static inline unsigned long global_page_
78571 static inline unsigned long zone_page_state(struct zone *zone,
78572 enum zone_stat_item item)
78573 {
78574 @@ -65068,7 +61153,7 @@ diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/
78575 #ifdef CONFIG_SMP
78576 if (x < 0)
78577 x = 0;
78578 -@@ -175,7 +175,7 @@ static inline unsigned long zone_page_st
78579 +@@ -126,7 +126,7 @@ static inline unsigned long zone_page_st
78580 static inline unsigned long zone_page_state_snapshot(struct zone *zone,
78581 enum zone_stat_item item)
78582 {
78583 @@ -65077,7 +61162,7 @@ diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/
78584
78585 #ifdef CONFIG_SMP
78586 int cpu;
78587 -@@ -264,8 +264,8 @@ static inline void __mod_zone_page_state
78588 +@@ -221,8 +221,8 @@ static inline void __mod_zone_page_state
78589
78590 static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
78591 {
78592 @@ -65088,7 +61173,7 @@ diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/
78593 }
78594
78595 static inline void __inc_zone_page_state(struct page *page,
78596 -@@ -276,8 +276,8 @@ static inline void __inc_zone_page_state
78597 +@@ -233,8 +233,8 @@ static inline void __inc_zone_page_state
78598
78599 static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
78600 {
78601 @@ -65099,10 +61184,10 @@ diff -urNp linux-2.6.32.48/include/linux/vmstat.h linux-2.6.32.48/include/linux/
78602 }
78603
78604 static inline void __dec_zone_page_state(struct page *page,
78605 -diff -urNp linux-2.6.32.48/include/media/saa7146_vv.h linux-2.6.32.48/include/media/saa7146_vv.h
78606 ---- linux-2.6.32.48/include/media/saa7146_vv.h 2009-12-02 22:51:21.000000000 -0500
78607 -+++ linux-2.6.32.48/include/media/saa7146_vv.h 2011-11-12 12:46:47.000000000 -0500
78608 -@@ -167,7 +167,7 @@ struct saa7146_ext_vv
78609 +diff -urNp linux-3.0.8/include/media/saa7146_vv.h linux-3.0.8/include/media/saa7146_vv.h
78610 +--- linux-3.0.8/include/media/saa7146_vv.h 2011-07-21 22:17:23.000000000 -0400
78611 ++++ linux-3.0.8/include/media/saa7146_vv.h 2011-10-07 19:07:40.000000000 -0400
78612 +@@ -163,7 +163,7 @@ struct saa7146_ext_vv
78613 int (*std_callback)(struct saa7146_dev*, struct saa7146_standard *);
78614
78615 /* the extension can override this */
78616 @@ -65111,11 +61196,11 @@ diff -urNp linux-2.6.32.48/include/media/saa7146_vv.h linux-2.6.32.48/include/me
78617 /* pointer to the saa7146 core ops */
78618 const struct v4l2_ioctl_ops *core_ops;
78619
78620 -diff -urNp linux-2.6.32.48/include/media/v4l2-dev.h linux-2.6.32.48/include/media/v4l2-dev.h
78621 ---- linux-2.6.32.48/include/media/v4l2-dev.h 2009-12-02 22:51:21.000000000 -0500
78622 -+++ linux-2.6.32.48/include/media/v4l2-dev.h 2011-11-12 12:46:47.000000000 -0500
78623 -@@ -34,7 +34,7 @@ struct v4l2_device;
78624 - #define V4L2_FL_UNREGISTERED (0)
78625 +diff -urNp linux-3.0.8/include/media/v4l2-dev.h linux-3.0.8/include/media/v4l2-dev.h
78626 +--- linux-3.0.8/include/media/v4l2-dev.h 2011-07-21 22:17:23.000000000 -0400
78627 ++++ linux-3.0.8/include/media/v4l2-dev.h 2011-10-07 19:07:40.000000000 -0400
78628 +@@ -56,7 +56,7 @@ int v4l2_prio_check(struct v4l2_prio_sta
78629 +
78630
78631 struct v4l2_file_operations {
78632 - struct module *owner;
78633 @@ -65123,7 +61208,7 @@ diff -urNp linux-2.6.32.48/include/media/v4l2-dev.h linux-2.6.32.48/include/medi
78634 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
78635 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
78636 unsigned int (*poll) (struct file *, struct poll_table_struct *);
78637 -@@ -46,6 +46,7 @@ struct v4l2_file_operations {
78638 +@@ -68,6 +68,7 @@ struct v4l2_file_operations {
78639 int (*open) (struct file *);
78640 int (*release) (struct file *);
78641 };
78642 @@ -65131,57 +61216,90 @@ diff -urNp linux-2.6.32.48/include/media/v4l2-dev.h linux-2.6.32.48/include/medi
78643
78644 /*
78645 * Newer version of video_device, handled by videodev2.c
78646 -diff -urNp linux-2.6.32.48/include/media/v4l2-device.h linux-2.6.32.48/include/media/v4l2-device.h
78647 ---- linux-2.6.32.48/include/media/v4l2-device.h 2009-12-02 22:51:21.000000000 -0500
78648 -+++ linux-2.6.32.48/include/media/v4l2-device.h 2011-11-12 12:46:47.000000000 -0500
78649 -@@ -71,7 +71,7 @@ int __must_check v4l2_device_register(st
78650 - this function returns 0. If the name ends with a digit (e.g. cx18),
78651 - then the name will be set to cx18-0 since cx180 looks really odd. */
78652 - int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename,
78653 -- atomic_t *instance);
78654 -+ atomic_unchecked_t *instance);
78655 -
78656 - /* Set v4l2_dev->dev to NULL. Call when the USB parent disconnects.
78657 - Since the parent disappears this ensures that v4l2_dev doesn't have an
78658 -diff -urNp linux-2.6.32.48/include/media/v4l2-ioctl.h linux-2.6.32.48/include/media/v4l2-ioctl.h
78659 ---- linux-2.6.32.48/include/media/v4l2-ioctl.h 2009-12-02 22:51:21.000000000 -0500
78660 -+++ linux-2.6.32.48/include/media/v4l2-ioctl.h 2011-11-12 12:46:47.000000000 -0500
78661 -@@ -243,6 +243,7 @@ struct v4l2_ioctl_ops {
78662 +diff -urNp linux-3.0.8/include/media/v4l2-ioctl.h linux-3.0.8/include/media/v4l2-ioctl.h
78663 +--- linux-3.0.8/include/media/v4l2-ioctl.h 2011-07-21 22:17:23.000000000 -0400
78664 ++++ linux-3.0.8/include/media/v4l2-ioctl.h 2011-08-24 18:25:45.000000000 -0400
78665 +@@ -272,6 +272,7 @@ struct v4l2_ioctl_ops {
78666 long (*vidioc_default) (struct file *file, void *fh,
78667 - int cmd, void *arg);
78668 + bool valid_prio, int cmd, void *arg);
78669 };
78670 +typedef struct v4l2_ioctl_ops __no_const v4l2_ioctl_ops_no_const;
78671
78672
78673 /* v4l debugging and diagnostics */
78674 -diff -urNp linux-2.6.32.48/include/net/flow.h linux-2.6.32.48/include/net/flow.h
78675 ---- linux-2.6.32.48/include/net/flow.h 2009-12-02 22:51:21.000000000 -0500
78676 -+++ linux-2.6.32.48/include/net/flow.h 2011-11-12 12:46:47.000000000 -0500
78677 -@@ -92,7 +92,7 @@ typedef int (*flow_resolve_t)(struct net
78678 - extern void *flow_cache_lookup(struct net *net, struct flowi *key, u16 family,
78679 - u8 dir, flow_resolve_t resolver);
78680 +diff -urNp linux-3.0.8/include/net/caif/cfctrl.h linux-3.0.8/include/net/caif/cfctrl.h
78681 +--- linux-3.0.8/include/net/caif/cfctrl.h 2011-07-21 22:17:23.000000000 -0400
78682 ++++ linux-3.0.8/include/net/caif/cfctrl.h 2011-08-23 21:47:56.000000000 -0400
78683 +@@ -52,7 +52,7 @@ struct cfctrl_rsp {
78684 + void (*radioset_rsp)(void);
78685 + void (*reject_rsp)(struct cflayer *layer, u8 linkid,
78686 + struct cflayer *client_layer);
78687 +-};
78688 ++} __no_const;
78689 +
78690 + /* Link Setup Parameters for CAIF-Links. */
78691 + struct cfctrl_link_param {
78692 +@@ -101,8 +101,8 @@ struct cfctrl_request_info {
78693 + struct cfctrl {
78694 + struct cfsrvl serv;
78695 + struct cfctrl_rsp res;
78696 +- atomic_t req_seq_no;
78697 +- atomic_t rsp_seq_no;
78698 ++ atomic_unchecked_t req_seq_no;
78699 ++ atomic_unchecked_t rsp_seq_no;
78700 + struct list_head list;
78701 + /* Protects from simultaneous access to first_req list */
78702 + spinlock_t info_list_lock;
78703 +diff -urNp linux-3.0.8/include/net/flow.h linux-3.0.8/include/net/flow.h
78704 +--- linux-3.0.8/include/net/flow.h 2011-07-21 22:17:23.000000000 -0400
78705 ++++ linux-3.0.8/include/net/flow.h 2011-08-23 21:47:56.000000000 -0400
78706 +@@ -188,6 +188,6 @@ extern struct flow_cache_object *flow_ca
78707 + u8 dir, flow_resolve_t resolver, void *ctx);
78708 +
78709 extern void flow_cache_flush(void);
78710 -extern atomic_t flow_cache_genid;
78711 +extern atomic_unchecked_t flow_cache_genid;
78712
78713 - static inline int flow_cache_uli_match(struct flowi *fl1, struct flowi *fl2)
78714 - {
78715 -diff -urNp linux-2.6.32.48/include/net/inetpeer.h linux-2.6.32.48/include/net/inetpeer.h
78716 ---- linux-2.6.32.48/include/net/inetpeer.h 2009-12-02 22:51:21.000000000 -0500
78717 -+++ linux-2.6.32.48/include/net/inetpeer.h 2011-11-12 12:46:47.000000000 -0500
78718 -@@ -24,7 +24,7 @@ struct inet_peer
78719 - __u32 dtime; /* the time of last use of not
78720 - * referenced entries */
78721 - atomic_t refcnt;
78722 -- atomic_t rid; /* Frag reception counter */
78723 -+ atomic_unchecked_t rid; /* Frag reception counter */
78724 - __u32 tcp_ts;
78725 - unsigned long tcp_ts_stamp;
78726 - };
78727 -diff -urNp linux-2.6.32.48/include/net/ip_vs.h linux-2.6.32.48/include/net/ip_vs.h
78728 ---- linux-2.6.32.48/include/net/ip_vs.h 2009-12-02 22:51:21.000000000 -0500
78729 -+++ linux-2.6.32.48/include/net/ip_vs.h 2011-11-12 12:46:47.000000000 -0500
78730 -@@ -365,7 +365,7 @@ struct ip_vs_conn {
78731 + #endif
78732 +diff -urNp linux-3.0.8/include/net/inetpeer.h linux-3.0.8/include/net/inetpeer.h
78733 +--- linux-3.0.8/include/net/inetpeer.h 2011-07-21 22:17:23.000000000 -0400
78734 ++++ linux-3.0.8/include/net/inetpeer.h 2011-08-23 21:47:56.000000000 -0400
78735 +@@ -43,8 +43,8 @@ struct inet_peer {
78736 + */
78737 + union {
78738 + struct {
78739 +- atomic_t rid; /* Frag reception counter */
78740 +- atomic_t ip_id_count; /* IP ID for the next packet */
78741 ++ atomic_unchecked_t rid; /* Frag reception counter */
78742 ++ atomic_unchecked_t ip_id_count; /* IP ID for the next packet */
78743 + __u32 tcp_ts;
78744 + __u32 tcp_ts_stamp;
78745 + u32 metrics[RTAX_MAX];
78746 +@@ -108,7 +108,7 @@ static inline __u16 inet_getid(struct in
78747 + {
78748 + more++;
78749 + inet_peer_refcheck(p);
78750 +- return atomic_add_return(more, &p->ip_id_count) - more;
78751 ++ return atomic_add_return_unchecked(more, &p->ip_id_count) - more;
78752 + }
78753 +
78754 + #endif /* _NET_INETPEER_H */
78755 +diff -urNp linux-3.0.8/include/net/ip_fib.h linux-3.0.8/include/net/ip_fib.h
78756 +--- linux-3.0.8/include/net/ip_fib.h 2011-07-21 22:17:23.000000000 -0400
78757 ++++ linux-3.0.8/include/net/ip_fib.h 2011-08-23 21:47:56.000000000 -0400
78758 +@@ -146,7 +146,7 @@ extern __be32 fib_info_update_nh_saddr(s
78759 +
78760 + #define FIB_RES_SADDR(net, res) \
78761 + ((FIB_RES_NH(res).nh_saddr_genid == \
78762 +- atomic_read(&(net)->ipv4.dev_addr_genid)) ? \
78763 ++ atomic_read_unchecked(&(net)->ipv4.dev_addr_genid)) ? \
78764 + FIB_RES_NH(res).nh_saddr : \
78765 + fib_info_update_nh_saddr((net), &FIB_RES_NH(res)))
78766 + #define FIB_RES_GW(res) (FIB_RES_NH(res).nh_gw)
78767 +diff -urNp linux-3.0.8/include/net/ip_vs.h linux-3.0.8/include/net/ip_vs.h
78768 +--- linux-3.0.8/include/net/ip_vs.h 2011-07-21 22:17:23.000000000 -0400
78769 ++++ linux-3.0.8/include/net/ip_vs.h 2011-08-23 21:47:56.000000000 -0400
78770 +@@ -509,7 +509,7 @@ struct ip_vs_conn {
78771 struct ip_vs_conn *control; /* Master control connection */
78772 atomic_t n_control; /* Number of controlled ones */
78773 struct ip_vs_dest *dest; /* real server */
78774 @@ -65190,18 +61308,18 @@ diff -urNp linux-2.6.32.48/include/net/ip_vs.h linux-2.6.32.48/include/net/ip_vs
78775
78776 /* packet transmitter for different forwarding methods. If it
78777 mangles the packet, it must return NF_DROP or better NF_STOLEN,
78778 -@@ -466,7 +466,7 @@ struct ip_vs_dest {
78779 - union nf_inet_addr addr; /* IP address of the server */
78780 +@@ -647,7 +647,7 @@ struct ip_vs_dest {
78781 __be16 port; /* port number of the server */
78782 + union nf_inet_addr addr; /* IP address of the server */
78783 volatile unsigned flags; /* dest status flags */
78784 - atomic_t conn_flags; /* flags to copy to conn */
78785 + atomic_unchecked_t conn_flags; /* flags to copy to conn */
78786 atomic_t weight; /* server weight */
78787
78788 atomic_t refcnt; /* reference counter */
78789 -diff -urNp linux-2.6.32.48/include/net/irda/ircomm_core.h linux-2.6.32.48/include/net/irda/ircomm_core.h
78790 ---- linux-2.6.32.48/include/net/irda/ircomm_core.h 2009-12-02 22:51:21.000000000 -0500
78791 -+++ linux-2.6.32.48/include/net/irda/ircomm_core.h 2011-11-12 12:46:47.000000000 -0500
78792 +diff -urNp linux-3.0.8/include/net/irda/ircomm_core.h linux-3.0.8/include/net/irda/ircomm_core.h
78793 +--- linux-3.0.8/include/net/irda/ircomm_core.h 2011-07-21 22:17:23.000000000 -0400
78794 ++++ linux-3.0.8/include/net/irda/ircomm_core.h 2011-08-23 21:47:56.000000000 -0400
78795 @@ -51,7 +51,7 @@ typedef struct {
78796 int (*connect_response)(struct ircomm_cb *, struct sk_buff *);
78797 int (*disconnect_request)(struct ircomm_cb *, struct sk_buff *,
78798 @@ -65211,9 +61329,9 @@ diff -urNp linux-2.6.32.48/include/net/irda/ircomm_core.h linux-2.6.32.48/includ
78799
78800 struct ircomm_cb {
78801 irda_queue_t queue;
78802 -diff -urNp linux-2.6.32.48/include/net/irda/ircomm_tty.h linux-2.6.32.48/include/net/irda/ircomm_tty.h
78803 ---- linux-2.6.32.48/include/net/irda/ircomm_tty.h 2009-12-02 22:51:21.000000000 -0500
78804 -+++ linux-2.6.32.48/include/net/irda/ircomm_tty.h 2011-11-12 12:46:47.000000000 -0500
78805 +diff -urNp linux-3.0.8/include/net/irda/ircomm_tty.h linux-3.0.8/include/net/irda/ircomm_tty.h
78806 +--- linux-3.0.8/include/net/irda/ircomm_tty.h 2011-07-21 22:17:23.000000000 -0400
78807 ++++ linux-3.0.8/include/net/irda/ircomm_tty.h 2011-08-23 21:47:56.000000000 -0400
78808 @@ -35,6 +35,7 @@
78809 #include <linux/termios.h>
78810 #include <linux/timer.h>
78811 @@ -65233,9 +61351,9 @@ diff -urNp linux-2.6.32.48/include/net/irda/ircomm_tty.h linux-2.6.32.48/include
78812
78813 /* Protect concurent access to :
78814 * o self->open_count
78815 -diff -urNp linux-2.6.32.48/include/net/iucv/af_iucv.h linux-2.6.32.48/include/net/iucv/af_iucv.h
78816 ---- linux-2.6.32.48/include/net/iucv/af_iucv.h 2009-12-02 22:51:21.000000000 -0500
78817 -+++ linux-2.6.32.48/include/net/iucv/af_iucv.h 2011-11-12 12:46:47.000000000 -0500
78818 +diff -urNp linux-3.0.8/include/net/iucv/af_iucv.h linux-3.0.8/include/net/iucv/af_iucv.h
78819 +--- linux-3.0.8/include/net/iucv/af_iucv.h 2011-07-21 22:17:23.000000000 -0400
78820 ++++ linux-3.0.8/include/net/iucv/af_iucv.h 2011-08-23 21:47:56.000000000 -0400
78821 @@ -87,7 +87,7 @@ struct iucv_sock {
78822 struct iucv_sock_list {
78823 struct hlist_head head;
78824 @@ -65245,9 +61363,9 @@ diff -urNp linux-2.6.32.48/include/net/iucv/af_iucv.h linux-2.6.32.48/include/ne
78825 };
78826
78827 unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
78828 -diff -urNp linux-2.6.32.48/include/net/lapb.h linux-2.6.32.48/include/net/lapb.h
78829 ---- linux-2.6.32.48/include/net/lapb.h 2009-12-02 22:51:21.000000000 -0500
78830 -+++ linux-2.6.32.48/include/net/lapb.h 2011-11-12 12:46:47.000000000 -0500
78831 +diff -urNp linux-3.0.8/include/net/lapb.h linux-3.0.8/include/net/lapb.h
78832 +--- linux-3.0.8/include/net/lapb.h 2011-07-21 22:17:23.000000000 -0400
78833 ++++ linux-3.0.8/include/net/lapb.h 2011-08-23 21:47:56.000000000 -0400
78834 @@ -95,7 +95,7 @@ struct lapb_cb {
78835 struct sk_buff_head write_queue;
78836 struct sk_buff_head ack_queue;
78837 @@ -65257,31 +61375,22 @@ diff -urNp linux-2.6.32.48/include/net/lapb.h linux-2.6.32.48/include/net/lapb.h
78838
78839 /* FRMR control information */
78840 struct lapb_frame frmr_data;
78841 -diff -urNp linux-2.6.32.48/include/net/neighbour.h linux-2.6.32.48/include/net/neighbour.h
78842 ---- linux-2.6.32.48/include/net/neighbour.h 2009-12-02 22:51:21.000000000 -0500
78843 -+++ linux-2.6.32.48/include/net/neighbour.h 2011-11-12 12:46:47.000000000 -0500
78844 -@@ -131,7 +131,7 @@ struct neigh_ops
78845 +diff -urNp linux-3.0.8/include/net/neighbour.h linux-3.0.8/include/net/neighbour.h
78846 +--- linux-3.0.8/include/net/neighbour.h 2011-07-21 22:17:23.000000000 -0400
78847 ++++ linux-3.0.8/include/net/neighbour.h 2011-08-31 18:39:25.000000000 -0400
78848 +@@ -124,7 +124,7 @@ struct neigh_ops {
78849 int (*connected_output)(struct sk_buff*);
78850 int (*hh_output)(struct sk_buff*);
78851 int (*queue_xmit)(struct sk_buff*);
78852 -};
78853 +} __do_const;
78854
78855 - struct pneigh_entry
78856 - {
78857 -diff -urNp linux-2.6.32.48/include/net/netlink.h linux-2.6.32.48/include/net/netlink.h
78858 ---- linux-2.6.32.48/include/net/netlink.h 2011-11-12 12:44:30.000000000 -0500
78859 -+++ linux-2.6.32.48/include/net/netlink.h 2011-11-12 12:46:47.000000000 -0500
78860 -@@ -335,7 +335,7 @@ static inline int nlmsg_ok(const struct
78861 - {
78862 - return (remaining >= (int) sizeof(struct nlmsghdr) &&
78863 - nlh->nlmsg_len >= sizeof(struct nlmsghdr) &&
78864 -- nlh->nlmsg_len <= remaining);
78865 -+ nlh->nlmsg_len <= (unsigned int)remaining);
78866 - }
78867 -
78868 - /**
78869 -@@ -558,7 +558,7 @@ static inline void *nlmsg_get_pos(struct
78870 + struct pneigh_entry {
78871 + struct pneigh_entry *next;
78872 +diff -urNp linux-3.0.8/include/net/netlink.h linux-3.0.8/include/net/netlink.h
78873 +--- linux-3.0.8/include/net/netlink.h 2011-07-21 22:17:23.000000000 -0400
78874 ++++ linux-3.0.8/include/net/netlink.h 2011-08-23 21:47:56.000000000 -0400
78875 +@@ -562,7 +562,7 @@ static inline void *nlmsg_get_pos(struct
78876 static inline void nlmsg_trim(struct sk_buff *skb, const void *mark)
78877 {
78878 if (mark)
78879 @@ -65290,79 +61399,61 @@ diff -urNp linux-2.6.32.48/include/net/netlink.h linux-2.6.32.48/include/net/net
78880 }
78881
78882 /**
78883 -diff -urNp linux-2.6.32.48/include/net/netns/ipv4.h linux-2.6.32.48/include/net/netns/ipv4.h
78884 ---- linux-2.6.32.48/include/net/netns/ipv4.h 2011-11-12 12:44:30.000000000 -0500
78885 -+++ linux-2.6.32.48/include/net/netns/ipv4.h 2011-11-12 12:46:47.000000000 -0500
78886 -@@ -54,7 +54,7 @@ struct netns_ipv4 {
78887 - int current_rt_cache_rebuild_count;
78888 +diff -urNp linux-3.0.8/include/net/netns/ipv4.h linux-3.0.8/include/net/netns/ipv4.h
78889 +--- linux-3.0.8/include/net/netns/ipv4.h 2011-07-21 22:17:23.000000000 -0400
78890 ++++ linux-3.0.8/include/net/netns/ipv4.h 2011-08-23 21:47:56.000000000 -0400
78891 +@@ -56,8 +56,8 @@ struct netns_ipv4 {
78892 +
78893 + unsigned int sysctl_ping_group_range[2];
78894
78895 - struct timer_list rt_secret_timer;
78896 - atomic_t rt_genid;
78897 +- atomic_t dev_addr_genid;
78898 + atomic_unchecked_t rt_genid;
78899 ++ atomic_unchecked_t dev_addr_genid;
78900
78901 #ifdef CONFIG_IP_MROUTE
78902 - struct sock *mroute_sk;
78903 -diff -urNp linux-2.6.32.48/include/net/sctp/sctp.h linux-2.6.32.48/include/net/sctp/sctp.h
78904 ---- linux-2.6.32.48/include/net/sctp/sctp.h 2009-12-02 22:51:21.000000000 -0500
78905 -+++ linux-2.6.32.48/include/net/sctp/sctp.h 2011-11-12 12:46:47.000000000 -0500
78906 -@@ -305,8 +305,8 @@ extern int sctp_debug_flag;
78907 + #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
78908 +diff -urNp linux-3.0.8/include/net/sctp/sctp.h linux-3.0.8/include/net/sctp/sctp.h
78909 +--- linux-3.0.8/include/net/sctp/sctp.h 2011-07-21 22:17:23.000000000 -0400
78910 ++++ linux-3.0.8/include/net/sctp/sctp.h 2011-08-23 21:47:56.000000000 -0400
78911 +@@ -315,9 +315,9 @@ do { \
78912
78913 #else /* SCTP_DEBUG */
78914
78915 -#define SCTP_DEBUG_PRINTK(whatever...)
78916 +-#define SCTP_DEBUG_PRINTK_CONT(fmt, args...)
78917 -#define SCTP_DEBUG_PRINTK_IPADDR(whatever...)
78918 +#define SCTP_DEBUG_PRINTK(whatever...) do {} while (0)
78919 ++#define SCTP_DEBUG_PRINTK_CONT(fmt, args...) do {} while (0)
78920 +#define SCTP_DEBUG_PRINTK_IPADDR(whatever...) do {} while (0)
78921 #define SCTP_ENABLE_DEBUG
78922 #define SCTP_DISABLE_DEBUG
78923 #define SCTP_ASSERT(expr, str, func)
78924 -diff -urNp linux-2.6.32.48/include/net/secure_seq.h linux-2.6.32.48/include/net/secure_seq.h
78925 ---- linux-2.6.32.48/include/net/secure_seq.h 2011-11-12 12:44:30.000000000 -0500
78926 -+++ linux-2.6.32.48/include/net/secure_seq.h 2011-11-12 12:46:47.000000000 -0500
78927 -@@ -7,14 +7,14 @@ extern __u32 secure_ip_id(__be32 daddr);
78928 - extern __u32 secure_ipv6_id(const __be32 daddr[4]);
78929 - extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
78930 - extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
78931 -- __be16 dport);
78932 -+ __be16 dport);
78933 - extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
78934 - __be16 sport, __be16 dport);
78935 - extern __u32 secure_tcpv6_sequence_number(__be32 *saddr, __be32 *daddr,
78936 -- __be16 sport, __be16 dport);
78937 -+ __be16 sport, __be16 dport);
78938 - extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
78939 -- __be16 sport, __be16 dport);
78940 -+ __be16 sport, __be16 dport);
78941 - extern u64 secure_dccpv6_sequence_number(__be32 *saddr, __be32 *daddr,
78942 -- __be16 sport, __be16 dport);
78943 -+ __be16 sport, __be16 dport);
78944 -
78945 - #endif /* _NET_SECURE_SEQ */
78946 -diff -urNp linux-2.6.32.48/include/net/sock.h linux-2.6.32.48/include/net/sock.h
78947 ---- linux-2.6.32.48/include/net/sock.h 2009-12-02 22:51:21.000000000 -0500
78948 -+++ linux-2.6.32.48/include/net/sock.h 2011-11-12 12:46:47.000000000 -0500
78949 -@@ -272,7 +272,7 @@ struct sock {
78950 - rwlock_t sk_callback_lock;
78951 - int sk_err,
78952 - sk_err_soft;
78953 +diff -urNp linux-3.0.8/include/net/sock.h linux-3.0.8/include/net/sock.h
78954 +--- linux-3.0.8/include/net/sock.h 2011-07-21 22:17:23.000000000 -0400
78955 ++++ linux-3.0.8/include/net/sock.h 2011-08-23 21:47:56.000000000 -0400
78956 +@@ -277,7 +277,7 @@ struct sock {
78957 + #ifdef CONFIG_RPS
78958 + __u32 sk_rxhash;
78959 + #endif
78960 - atomic_t sk_drops;
78961 + atomic_unchecked_t sk_drops;
78962 - unsigned short sk_ack_backlog;
78963 - unsigned short sk_max_ack_backlog;
78964 - __u32 sk_priority;
78965 -@@ -737,7 +737,7 @@ static inline void sk_refcnt_debug_relea
78966 - extern void sock_prot_inuse_add(struct net *net, struct proto *prot, int inc);
78967 - extern int sock_prot_inuse_get(struct net *net, struct proto *proto);
78968 - #else
78969 --static void inline sock_prot_inuse_add(struct net *net, struct proto *prot,
78970 -+static inline void sock_prot_inuse_add(struct net *net, struct proto *prot,
78971 - int inc)
78972 - {
78973 + int sk_rcvbuf;
78974 +
78975 + struct sk_filter __rcu *sk_filter;
78976 +@@ -1390,7 +1390,7 @@ static inline void sk_nocaps_add(struct
78977 }
78978 -diff -urNp linux-2.6.32.48/include/net/tcp.h linux-2.6.32.48/include/net/tcp.h
78979 ---- linux-2.6.32.48/include/net/tcp.h 2011-11-12 12:44:30.000000000 -0500
78980 -+++ linux-2.6.32.48/include/net/tcp.h 2011-11-12 12:46:47.000000000 -0500
78981 -@@ -1444,8 +1444,8 @@ enum tcp_seq_states {
78982 +
78983 + static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
78984 +- char __user *from, char *to,
78985 ++ char __user *from, unsigned char *to,
78986 + int copy, int offset)
78987 + {
78988 + if (skb->ip_summed == CHECKSUM_NONE) {
78989 +diff -urNp linux-3.0.8/include/net/tcp.h linux-3.0.8/include/net/tcp.h
78990 +--- linux-3.0.8/include/net/tcp.h 2011-07-21 22:17:23.000000000 -0400
78991 ++++ linux-3.0.8/include/net/tcp.h 2011-08-23 21:47:56.000000000 -0400
78992 +@@ -1374,8 +1374,8 @@ enum tcp_seq_states {
78993 struct tcp_seq_afinfo {
78994 char *name;
78995 sa_family_t family;
78996 @@ -65373,10 +61464,10 @@ diff -urNp linux-2.6.32.48/include/net/tcp.h linux-2.6.32.48/include/net/tcp.h
78997 };
78998
78999 struct tcp_iter_state {
79000 -diff -urNp linux-2.6.32.48/include/net/udp.h linux-2.6.32.48/include/net/udp.h
79001 ---- linux-2.6.32.48/include/net/udp.h 2009-12-02 22:51:21.000000000 -0500
79002 -+++ linux-2.6.32.48/include/net/udp.h 2011-11-12 12:46:47.000000000 -0500
79003 -@@ -187,8 +187,8 @@ struct udp_seq_afinfo {
79004 +diff -urNp linux-3.0.8/include/net/udp.h linux-3.0.8/include/net/udp.h
79005 +--- linux-3.0.8/include/net/udp.h 2011-07-21 22:17:23.000000000 -0400
79006 ++++ linux-3.0.8/include/net/udp.h 2011-08-23 21:47:56.000000000 -0400
79007 +@@ -234,8 +234,8 @@ struct udp_seq_afinfo {
79008 char *name;
79009 sa_family_t family;
79010 struct udp_table *udp_table;
79011 @@ -65387,10 +61478,22 @@ diff -urNp linux-2.6.32.48/include/net/udp.h linux-2.6.32.48/include/net/udp.h
79012 };
79013
79014 struct udp_iter_state {
79015 -diff -urNp linux-2.6.32.48/include/rdma/iw_cm.h linux-2.6.32.48/include/rdma/iw_cm.h
79016 ---- linux-2.6.32.48/include/rdma/iw_cm.h 2009-12-02 22:51:21.000000000 -0500
79017 -+++ linux-2.6.32.48/include/rdma/iw_cm.h 2011-11-12 12:46:47.000000000 -0500
79018 -@@ -129,7 +129,7 @@ struct iw_cm_verbs {
79019 +diff -urNp linux-3.0.8/include/net/xfrm.h linux-3.0.8/include/net/xfrm.h
79020 +--- linux-3.0.8/include/net/xfrm.h 2011-07-21 22:17:23.000000000 -0400
79021 ++++ linux-3.0.8/include/net/xfrm.h 2011-08-23 21:47:56.000000000 -0400
79022 +@@ -505,7 +505,7 @@ struct xfrm_policy {
79023 + struct timer_list timer;
79024 +
79025 + struct flow_cache_object flo;
79026 +- atomic_t genid;
79027 ++ atomic_unchecked_t genid;
79028 + u32 priority;
79029 + u32 index;
79030 + struct xfrm_mark mark;
79031 +diff -urNp linux-3.0.8/include/rdma/iw_cm.h linux-3.0.8/include/rdma/iw_cm.h
79032 +--- linux-3.0.8/include/rdma/iw_cm.h 2011-07-21 22:17:23.000000000 -0400
79033 ++++ linux-3.0.8/include/rdma/iw_cm.h 2011-08-23 21:47:56.000000000 -0400
79034 +@@ -120,7 +120,7 @@ struct iw_cm_verbs {
79035 int backlog);
79036
79037 int (*destroy_listen)(struct iw_cm_id *cm_id);
79038 @@ -65399,30 +61502,30 @@ diff -urNp linux-2.6.32.48/include/rdma/iw_cm.h linux-2.6.32.48/include/rdma/iw_
79039
79040 /**
79041 * iw_create_cm_id - Create an IW CM identifier.
79042 -diff -urNp linux-2.6.32.48/include/scsi/libfc.h linux-2.6.32.48/include/scsi/libfc.h
79043 ---- linux-2.6.32.48/include/scsi/libfc.h 2011-11-12 12:44:30.000000000 -0500
79044 -+++ linux-2.6.32.48/include/scsi/libfc.h 2011-11-12 12:46:47.000000000 -0500
79045 -@@ -675,6 +675,7 @@ struct libfc_function_template {
79046 +diff -urNp linux-3.0.8/include/scsi/libfc.h linux-3.0.8/include/scsi/libfc.h
79047 +--- linux-3.0.8/include/scsi/libfc.h 2011-07-21 22:17:23.000000000 -0400
79048 ++++ linux-3.0.8/include/scsi/libfc.h 2011-08-23 21:47:56.000000000 -0400
79049 +@@ -750,6 +750,7 @@ struct libfc_function_template {
79050 */
79051 void (*disc_stop_final) (struct fc_lport *);
79052 };
79053 +typedef struct libfc_function_template __no_const libfc_function_template_no_const;
79054
79055 - /* information used by the discovery layer */
79056 - struct fc_disc {
79057 -@@ -707,7 +708,7 @@ struct fc_lport {
79058 - struct fc_disc disc;
79059 + /**
79060 + * struct fc_disc - Discovery context
79061 +@@ -853,7 +854,7 @@ struct fc_lport {
79062 + struct fc_vport *vport;
79063
79064 /* Operational Information */
79065 - struct libfc_function_template tt;
79066 + libfc_function_template_no_const tt;
79067 - u8 link_up;
79068 - u8 qfull;
79069 - enum fc_lport_state state;
79070 -diff -urNp linux-2.6.32.48/include/scsi/scsi_device.h linux-2.6.32.48/include/scsi/scsi_device.h
79071 ---- linux-2.6.32.48/include/scsi/scsi_device.h 2011-11-12 12:44:30.000000000 -0500
79072 -+++ linux-2.6.32.48/include/scsi/scsi_device.h 2011-11-12 12:46:47.000000000 -0500
79073 -@@ -156,9 +156,9 @@ struct scsi_device {
79074 + u8 link_up;
79075 + u8 qfull;
79076 + enum fc_lport_state state;
79077 +diff -urNp linux-3.0.8/include/scsi/scsi_device.h linux-3.0.8/include/scsi/scsi_device.h
79078 +--- linux-3.0.8/include/scsi/scsi_device.h 2011-07-21 22:17:23.000000000 -0400
79079 ++++ linux-3.0.8/include/scsi/scsi_device.h 2011-08-23 21:47:56.000000000 -0400
79080 +@@ -161,9 +161,9 @@ struct scsi_device {
79081 unsigned int max_device_blocked; /* what device_blocked counts down from */
79082 #define SCSI_DEFAULT_DEVICE_BLOCKED 3
79083
79084 @@ -65435,10 +61538,10 @@ diff -urNp linux-2.6.32.48/include/scsi/scsi_device.h linux-2.6.32.48/include/sc
79085
79086 struct device sdev_gendev,
79087 sdev_dev;
79088 -diff -urNp linux-2.6.32.48/include/scsi/scsi_transport_fc.h linux-2.6.32.48/include/scsi/scsi_transport_fc.h
79089 ---- linux-2.6.32.48/include/scsi/scsi_transport_fc.h 2009-12-02 22:51:21.000000000 -0500
79090 -+++ linux-2.6.32.48/include/scsi/scsi_transport_fc.h 2011-11-12 12:46:47.000000000 -0500
79091 -@@ -708,7 +708,7 @@ struct fc_function_template {
79092 +diff -urNp linux-3.0.8/include/scsi/scsi_transport_fc.h linux-3.0.8/include/scsi/scsi_transport_fc.h
79093 +--- linux-3.0.8/include/scsi/scsi_transport_fc.h 2011-07-21 22:17:23.000000000 -0400
79094 ++++ linux-3.0.8/include/scsi/scsi_transport_fc.h 2011-08-26 19:49:56.000000000 -0400
79095 +@@ -711,7 +711,7 @@ struct fc_function_template {
79096 unsigned long show_host_system_hostname:1;
79097
79098 unsigned long disable_target_scan:1;
79099 @@ -65447,44 +61550,9 @@ diff -urNp linux-2.6.32.48/include/scsi/scsi_transport_fc.h linux-2.6.32.48/incl
79100
79101
79102 /**
79103 -diff -urNp linux-2.6.32.48/include/sound/ac97_codec.h linux-2.6.32.48/include/sound/ac97_codec.h
79104 ---- linux-2.6.32.48/include/sound/ac97_codec.h 2009-12-02 22:51:21.000000000 -0500
79105 -+++ linux-2.6.32.48/include/sound/ac97_codec.h 2011-11-12 12:46:47.000000000 -0500
79106 -@@ -419,15 +419,15 @@
79107 - struct snd_ac97;
79108 -
79109 - struct snd_ac97_build_ops {
79110 -- int (*build_3d) (struct snd_ac97 *ac97);
79111 -- int (*build_specific) (struct snd_ac97 *ac97);
79112 -- int (*build_spdif) (struct snd_ac97 *ac97);
79113 -- int (*build_post_spdif) (struct snd_ac97 *ac97);
79114 -+ int (* const build_3d) (struct snd_ac97 *ac97);
79115 -+ int (* const build_specific) (struct snd_ac97 *ac97);
79116 -+ int (* const build_spdif) (struct snd_ac97 *ac97);
79117 -+ int (* const build_post_spdif) (struct snd_ac97 *ac97);
79118 - #ifdef CONFIG_PM
79119 -- void (*suspend) (struct snd_ac97 *ac97);
79120 -- void (*resume) (struct snd_ac97 *ac97);
79121 -+ void (* const suspend) (struct snd_ac97 *ac97);
79122 -+ void (* const resume) (struct snd_ac97 *ac97);
79123 - #endif
79124 -- void (*update_jacks) (struct snd_ac97 *ac97); /* for jack-sharing */
79125 -+ void (* const update_jacks) (struct snd_ac97 *ac97); /* for jack-sharing */
79126 - };
79127 -
79128 - struct snd_ac97_bus_ops {
79129 -@@ -477,7 +477,7 @@ struct snd_ac97_template {
79130 -
79131 - struct snd_ac97 {
79132 - /* -- lowlevel (hardware) driver specific -- */
79133 -- struct snd_ac97_build_ops * build_ops;
79134 -+ const struct snd_ac97_build_ops * build_ops;
79135 - void *private_data;
79136 - void (*private_free) (struct snd_ac97 *ac97);
79137 - /* --- */
79138 -diff -urNp linux-2.6.32.48/include/sound/ak4xxx-adda.h linux-2.6.32.48/include/sound/ak4xxx-adda.h
79139 ---- linux-2.6.32.48/include/sound/ak4xxx-adda.h 2009-12-02 22:51:21.000000000 -0500
79140 -+++ linux-2.6.32.48/include/sound/ak4xxx-adda.h 2011-11-12 12:46:47.000000000 -0500
79141 +diff -urNp linux-3.0.8/include/sound/ak4xxx-adda.h linux-3.0.8/include/sound/ak4xxx-adda.h
79142 +--- linux-3.0.8/include/sound/ak4xxx-adda.h 2011-07-21 22:17:23.000000000 -0400
79143 ++++ linux-3.0.8/include/sound/ak4xxx-adda.h 2011-08-23 21:47:56.000000000 -0400
79144 @@ -35,7 +35,7 @@ struct snd_ak4xxx_ops {
79145 void (*write)(struct snd_akm4xxx *ak, int chip, unsigned char reg,
79146 unsigned char val);
79147 @@ -65494,9 +61562,9 @@ diff -urNp linux-2.6.32.48/include/sound/ak4xxx-adda.h linux-2.6.32.48/include/s
79148
79149 #define AK4XXX_IMAGE_SIZE (AK4XXX_MAX_CHIPS * 16) /* 64 bytes */
79150
79151 -diff -urNp linux-2.6.32.48/include/sound/hwdep.h linux-2.6.32.48/include/sound/hwdep.h
79152 ---- linux-2.6.32.48/include/sound/hwdep.h 2009-12-02 22:51:21.000000000 -0500
79153 -+++ linux-2.6.32.48/include/sound/hwdep.h 2011-11-12 12:46:47.000000000 -0500
79154 +diff -urNp linux-3.0.8/include/sound/hwdep.h linux-3.0.8/include/sound/hwdep.h
79155 +--- linux-3.0.8/include/sound/hwdep.h 2011-07-21 22:17:23.000000000 -0400
79156 ++++ linux-3.0.8/include/sound/hwdep.h 2011-08-23 21:47:56.000000000 -0400
79157 @@ -49,7 +49,7 @@ struct snd_hwdep_ops {
79158 struct snd_hwdep_dsp_status *status);
79159 int (*dsp_load)(struct snd_hwdep *hw,
79160 @@ -65506,9 +61574,9 @@ diff -urNp linux-2.6.32.48/include/sound/hwdep.h linux-2.6.32.48/include/sound/h
79161
79162 struct snd_hwdep {
79163 struct snd_card *card;
79164 -diff -urNp linux-2.6.32.48/include/sound/info.h linux-2.6.32.48/include/sound/info.h
79165 ---- linux-2.6.32.48/include/sound/info.h 2009-12-02 22:51:21.000000000 -0500
79166 -+++ linux-2.6.32.48/include/sound/info.h 2011-11-12 12:46:47.000000000 -0500
79167 +diff -urNp linux-3.0.8/include/sound/info.h linux-3.0.8/include/sound/info.h
79168 +--- linux-3.0.8/include/sound/info.h 2011-07-21 22:17:23.000000000 -0400
79169 ++++ linux-3.0.8/include/sound/info.h 2011-08-23 21:47:56.000000000 -0400
79170 @@ -44,7 +44,7 @@ struct snd_info_entry_text {
79171 struct snd_info_buffer *buffer);
79172 void (*write)(struct snd_info_entry *entry,
79173 @@ -65518,10 +61586,10 @@ diff -urNp linux-2.6.32.48/include/sound/info.h linux-2.6.32.48/include/sound/in
79174
79175 struct snd_info_entry_ops {
79176 int (*open)(struct snd_info_entry *entry,
79177 -diff -urNp linux-2.6.32.48/include/sound/pcm.h linux-2.6.32.48/include/sound/pcm.h
79178 ---- linux-2.6.32.48/include/sound/pcm.h 2009-12-02 22:51:21.000000000 -0500
79179 -+++ linux-2.6.32.48/include/sound/pcm.h 2011-11-12 12:46:47.000000000 -0500
79180 -@@ -80,6 +80,7 @@ struct snd_pcm_ops {
79181 +diff -urNp linux-3.0.8/include/sound/pcm.h linux-3.0.8/include/sound/pcm.h
79182 +--- linux-3.0.8/include/sound/pcm.h 2011-07-21 22:17:23.000000000 -0400
79183 ++++ linux-3.0.8/include/sound/pcm.h 2011-08-23 21:47:56.000000000 -0400
79184 +@@ -81,6 +81,7 @@ struct snd_pcm_ops {
79185 int (*mmap)(struct snd_pcm_substream *substream, struct vm_area_struct *vma);
79186 int (*ack)(struct snd_pcm_substream *substream);
79187 };
79188 @@ -65529,10 +61597,10 @@ diff -urNp linux-2.6.32.48/include/sound/pcm.h linux-2.6.32.48/include/sound/pcm
79189
79190 /*
79191 *
79192 -diff -urNp linux-2.6.32.48/include/sound/sb16_csp.h linux-2.6.32.48/include/sound/sb16_csp.h
79193 ---- linux-2.6.32.48/include/sound/sb16_csp.h 2009-12-02 22:51:21.000000000 -0500
79194 -+++ linux-2.6.32.48/include/sound/sb16_csp.h 2011-11-12 12:46:47.000000000 -0500
79195 -@@ -139,7 +139,7 @@ struct snd_sb_csp_ops {
79196 +diff -urNp linux-3.0.8/include/sound/sb16_csp.h linux-3.0.8/include/sound/sb16_csp.h
79197 +--- linux-3.0.8/include/sound/sb16_csp.h 2011-07-21 22:17:23.000000000 -0400
79198 ++++ linux-3.0.8/include/sound/sb16_csp.h 2011-08-23 21:47:56.000000000 -0400
79199 +@@ -146,7 +146,7 @@ struct snd_sb_csp_ops {
79200 int (*csp_start) (struct snd_sb_csp * p, int sample_width, int channels);
79201 int (*csp_stop) (struct snd_sb_csp * p);
79202 int (*csp_qsound_transfer) (struct snd_sb_csp * p);
79203 @@ -65541,9 +61609,21 @@ diff -urNp linux-2.6.32.48/include/sound/sb16_csp.h linux-2.6.32.48/include/soun
79204
79205 /*
79206 * CSP private data
79207 -diff -urNp linux-2.6.32.48/include/sound/ymfpci.h linux-2.6.32.48/include/sound/ymfpci.h
79208 ---- linux-2.6.32.48/include/sound/ymfpci.h 2009-12-02 22:51:21.000000000 -0500
79209 -+++ linux-2.6.32.48/include/sound/ymfpci.h 2011-11-12 12:46:47.000000000 -0500
79210 +diff -urNp linux-3.0.8/include/sound/soc.h linux-3.0.8/include/sound/soc.h
79211 +--- linux-3.0.8/include/sound/soc.h 2011-07-21 22:17:23.000000000 -0400
79212 ++++ linux-3.0.8/include/sound/soc.h 2011-08-26 19:49:56.000000000 -0400
79213 +@@ -636,7 +636,7 @@ struct snd_soc_platform_driver {
79214 +
79215 + /* platform stream ops */
79216 + struct snd_pcm_ops *ops;
79217 +-};
79218 ++} __do_const;
79219 +
79220 + struct snd_soc_platform {
79221 + const char *name;
79222 +diff -urNp linux-3.0.8/include/sound/ymfpci.h linux-3.0.8/include/sound/ymfpci.h
79223 +--- linux-3.0.8/include/sound/ymfpci.h 2011-07-21 22:17:23.000000000 -0400
79224 ++++ linux-3.0.8/include/sound/ymfpci.h 2011-08-23 21:47:56.000000000 -0400
79225 @@ -358,7 +358,7 @@ struct snd_ymfpci {
79226 spinlock_t reg_lock;
79227 spinlock_t voice_lock;
79228 @@ -65553,10 +61633,42 @@ diff -urNp linux-2.6.32.48/include/sound/ymfpci.h linux-2.6.32.48/include/sound/
79229 struct snd_info_entry *proc_entry;
79230 const struct firmware *dsp_microcode;
79231 const struct firmware *controller_microcode;
79232 -diff -urNp linux-2.6.32.48/include/trace/events/irq.h linux-2.6.32.48/include/trace/events/irq.h
79233 ---- linux-2.6.32.48/include/trace/events/irq.h 2009-12-02 22:51:21.000000000 -0500
79234 -+++ linux-2.6.32.48/include/trace/events/irq.h 2011-11-12 12:46:47.000000000 -0500
79235 -@@ -34,7 +34,7 @@
79236 +diff -urNp linux-3.0.8/include/target/target_core_base.h linux-3.0.8/include/target/target_core_base.h
79237 +--- linux-3.0.8/include/target/target_core_base.h 2011-07-21 22:17:23.000000000 -0400
79238 ++++ linux-3.0.8/include/target/target_core_base.h 2011-08-23 21:47:56.000000000 -0400
79239 +@@ -364,7 +364,7 @@ struct t10_reservation_ops {
79240 + int (*t10_seq_non_holder)(struct se_cmd *, unsigned char *, u32);
79241 + int (*t10_pr_register)(struct se_cmd *);
79242 + int (*t10_pr_clear)(struct se_cmd *);
79243 +-};
79244 ++} __no_const;
79245 +
79246 + struct t10_reservation_template {
79247 + /* Reservation effects all target ports */
79248 +@@ -432,8 +432,8 @@ struct se_transport_task {
79249 + atomic_t t_task_cdbs_left;
79250 + atomic_t t_task_cdbs_ex_left;
79251 + atomic_t t_task_cdbs_timeout_left;
79252 +- atomic_t t_task_cdbs_sent;
79253 +- atomic_t t_transport_aborted;
79254 ++ atomic_unchecked_t t_task_cdbs_sent;
79255 ++ atomic_unchecked_t t_transport_aborted;
79256 + atomic_t t_transport_active;
79257 + atomic_t t_transport_complete;
79258 + atomic_t t_transport_queue_active;
79259 +@@ -774,7 +774,7 @@ struct se_device {
79260 + atomic_t active_cmds;
79261 + atomic_t simple_cmds;
79262 + atomic_t depth_left;
79263 +- atomic_t dev_ordered_id;
79264 ++ atomic_unchecked_t dev_ordered_id;
79265 + atomic_t dev_tur_active;
79266 + atomic_t execute_tasks;
79267 + atomic_t dev_status_thr_count;
79268 +diff -urNp linux-3.0.8/include/trace/events/irq.h linux-3.0.8/include/trace/events/irq.h
79269 +--- linux-3.0.8/include/trace/events/irq.h 2011-07-21 22:17:23.000000000 -0400
79270 ++++ linux-3.0.8/include/trace/events/irq.h 2011-08-23 21:47:56.000000000 -0400
79271 +@@ -36,7 +36,7 @@ struct softirq_action;
79272 */
79273 TRACE_EVENT(irq_handler_entry,
79274
79275 @@ -65565,7 +61677,7 @@ diff -urNp linux-2.6.32.48/include/trace/events/irq.h linux-2.6.32.48/include/tr
79276
79277 TP_ARGS(irq, action),
79278
79279 -@@ -64,7 +64,7 @@ TRACE_EVENT(irq_handler_entry,
79280 +@@ -66,7 +66,7 @@ TRACE_EVENT(irq_handler_entry,
79281 */
79282 TRACE_EVENT(irq_handler_exit,
79283
79284 @@ -65574,27 +61686,27 @@ diff -urNp linux-2.6.32.48/include/trace/events/irq.h linux-2.6.32.48/include/tr
79285
79286 TP_ARGS(irq, action, ret),
79287
79288 -@@ -95,7 +95,7 @@ TRACE_EVENT(irq_handler_exit,
79289 - */
79290 - TRACE_EVENT(softirq_entry,
79291 -
79292 -- TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
79293 -+ TP_PROTO(const struct softirq_action *h, const struct softirq_action *vec),
79294 -
79295 - TP_ARGS(h, vec),
79296 -
79297 -@@ -124,7 +124,7 @@ TRACE_EVENT(softirq_entry,
79298 - */
79299 - TRACE_EVENT(softirq_exit,
79300 -
79301 -- TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
79302 -+ TP_PROTO(const struct softirq_action *h, const struct softirq_action *vec),
79303 -
79304 - TP_ARGS(h, vec),
79305 +diff -urNp linux-3.0.8/include/video/udlfb.h linux-3.0.8/include/video/udlfb.h
79306 +--- linux-3.0.8/include/video/udlfb.h 2011-07-21 22:17:23.000000000 -0400
79307 ++++ linux-3.0.8/include/video/udlfb.h 2011-08-23 21:47:56.000000000 -0400
79308 +@@ -51,10 +51,10 @@ struct dlfb_data {
79309 + int base8;
79310 + u32 pseudo_palette[256];
79311 + /* blit-only rendering path metrics, exposed through sysfs */
79312 +- atomic_t bytes_rendered; /* raw pixel-bytes driver asked to render */
79313 +- atomic_t bytes_identical; /* saved effort with backbuffer comparison */
79314 +- atomic_t bytes_sent; /* to usb, after compression including overhead */
79315 +- atomic_t cpu_kcycles_used; /* transpired during pixel processing */
79316 ++ atomic_unchecked_t bytes_rendered; /* raw pixel-bytes driver asked to render */
79317 ++ atomic_unchecked_t bytes_identical; /* saved effort with backbuffer comparison */
79318 ++ atomic_unchecked_t bytes_sent; /* to usb, after compression including overhead */
79319 ++ atomic_unchecked_t cpu_kcycles_used; /* transpired during pixel processing */
79320 + };
79321
79322 -diff -urNp linux-2.6.32.48/include/video/uvesafb.h linux-2.6.32.48/include/video/uvesafb.h
79323 ---- linux-2.6.32.48/include/video/uvesafb.h 2009-12-02 22:51:21.000000000 -0500
79324 -+++ linux-2.6.32.48/include/video/uvesafb.h 2011-11-12 12:46:47.000000000 -0500
79325 + #define NR_USB_REQUEST_I2C_SUB_IO 0x02
79326 +diff -urNp linux-3.0.8/include/video/uvesafb.h linux-3.0.8/include/video/uvesafb.h
79327 +--- linux-3.0.8/include/video/uvesafb.h 2011-07-21 22:17:23.000000000 -0400
79328 ++++ linux-3.0.8/include/video/uvesafb.h 2011-08-23 21:47:56.000000000 -0400
79329 @@ -177,6 +177,7 @@ struct uvesafb_par {
79330 u8 ypan; /* 0 - nothing, 1 - ypan, 2 - ywrap */
79331 u8 pmi_setpal; /* PMI for palette changes */
79332 @@ -65603,24 +61715,24 @@ diff -urNp linux-2.6.32.48/include/video/uvesafb.h linux-2.6.32.48/include/video
79333 void *pmi_start;
79334 void *pmi_pal;
79335 u8 *vbe_state_orig; /*
79336 -diff -urNp linux-2.6.32.48/init/do_mounts.c linux-2.6.32.48/init/do_mounts.c
79337 ---- linux-2.6.32.48/init/do_mounts.c 2009-12-02 22:51:21.000000000 -0500
79338 -+++ linux-2.6.32.48/init/do_mounts.c 2011-11-12 12:46:47.000000000 -0500
79339 -@@ -216,11 +216,11 @@ static void __init get_fs_names(char *pa
79340 +diff -urNp linux-3.0.8/init/do_mounts.c linux-3.0.8/init/do_mounts.c
79341 +--- linux-3.0.8/init/do_mounts.c 2011-07-21 22:17:23.000000000 -0400
79342 ++++ linux-3.0.8/init/do_mounts.c 2011-10-06 04:17:55.000000000 -0400
79343 +@@ -287,11 +287,11 @@ static void __init get_fs_names(char *pa
79344
79345 static int __init do_mount_root(char *name, char *fs, int flags, void *data)
79346 {
79347 - int err = sys_mount(name, "/root", fs, flags, data);
79348 -+ int err = sys_mount((__force char __user *)name, (__force char __user *)"/root", (__force char __user *)fs, flags, (__force void __user *)data);
79349 ++ int err = sys_mount((char __force_user *)name, (char __force_user *)"/root", (char __force_user *)fs, flags, (void __force_user *)data);
79350 if (err)
79351 return err;
79352
79353 -- sys_chdir("/root");
79354 -+ sys_chdir((__force const char __user *)"/root");
79355 +- sys_chdir((const char __user __force *)"/root");
79356 ++ sys_chdir((const char __force_user*)"/root");
79357 ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev;
79358 - printk("VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
79359 - current->fs->pwd.mnt->mnt_sb->s_type->name,
79360 -@@ -311,18 +311,18 @@ void __init change_floppy(char *fmt, ...
79361 + printk(KERN_INFO
79362 + "VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
79363 +@@ -383,18 +383,18 @@ void __init change_floppy(char *fmt, ...
79364 va_start(args, fmt);
79365 vsprintf(buf, fmt, args);
79366 va_end(args);
79367 @@ -65632,7 +61744,7 @@ diff -urNp linux-2.6.32.48/init/do_mounts.c linux-2.6.32.48/init/do_mounts.c
79368 }
79369 printk(KERN_NOTICE "VFS: Insert %s and press ENTER\n", buf);
79370 - fd = sys_open("/dev/console", O_RDWR, 0);
79371 -+ fd = sys_open((char __user *)"/dev/console", O_RDWR, 0);
79372 ++ fd = sys_open((__force const char __user *)"/dev/console", O_RDWR, 0);
79373 if (fd >= 0) {
79374 sys_ioctl(fd, TCGETS, (long)&termios);
79375 termios.c_lflag &= ~ICANON;
79376 @@ -65642,18 +61754,18 @@ diff -urNp linux-2.6.32.48/init/do_mounts.c linux-2.6.32.48/init/do_mounts.c
79377 termios.c_lflag |= ICANON;
79378 sys_ioctl(fd, TCSETSF, (long)&termios);
79379 sys_close(fd);
79380 -@@ -416,6 +416,6 @@ void __init prepare_namespace(void)
79381 +@@ -488,6 +488,6 @@ void __init prepare_namespace(void)
79382 mount_root();
79383 out:
79384 devtmpfs_mount("dev");
79385 - sys_mount(".", "/", NULL, MS_MOVE, NULL);
79386 -- sys_chroot(".");
79387 -+ sys_mount((__force char __user *)".", (__force char __user *)"/", NULL, MS_MOVE, NULL);
79388 -+ sys_chroot((__force char __user *)".");
79389 +- sys_chroot((const char __user __force *)".");
79390 ++ sys_mount((char __force_user *)".", (char __force_user *)"/", NULL, MS_MOVE, NULL);
79391 ++ sys_chroot((const char __force_user *)".");
79392 }
79393 -diff -urNp linux-2.6.32.48/init/do_mounts.h linux-2.6.32.48/init/do_mounts.h
79394 ---- linux-2.6.32.48/init/do_mounts.h 2009-12-02 22:51:21.000000000 -0500
79395 -+++ linux-2.6.32.48/init/do_mounts.h 2011-11-12 12:46:47.000000000 -0500
79396 +diff -urNp linux-3.0.8/init/do_mounts.h linux-3.0.8/init/do_mounts.h
79397 +--- linux-3.0.8/init/do_mounts.h 2011-07-21 22:17:23.000000000 -0400
79398 ++++ linux-3.0.8/init/do_mounts.h 2011-10-06 04:17:55.000000000 -0400
79399 @@ -15,15 +15,15 @@ extern int root_mountflags;
79400
79401 static inline int create_dev(char *name, dev_t dev)
79402 @@ -65682,19 +61794,10 @@ diff -urNp linux-2.6.32.48/init/do_mounts.h linux-2.6.32.48/init/do_mounts.h
79403 return 0;
79404 if (!S_ISBLK(stat.st_mode))
79405 return 0;
79406 -diff -urNp linux-2.6.32.48/init/do_mounts_initrd.c linux-2.6.32.48/init/do_mounts_initrd.c
79407 ---- linux-2.6.32.48/init/do_mounts_initrd.c 2009-12-02 22:51:21.000000000 -0500
79408 -+++ linux-2.6.32.48/init/do_mounts_initrd.c 2011-11-12 12:46:47.000000000 -0500
79409 -@@ -32,7 +32,7 @@ static int __init do_linuxrc(void * shel
79410 - sys_close(old_fd);sys_close(root_fd);
79411 - sys_close(0);sys_close(1);sys_close(2);
79412 - sys_setsid();
79413 -- (void) sys_open("/dev/console",O_RDWR,0);
79414 -+ (void) sys_open((__force const char __user *)"/dev/console",O_RDWR,0);
79415 - (void) sys_dup(0);
79416 - (void) sys_dup(0);
79417 - return kernel_execve(shell, argv, envp_init);
79418 -@@ -47,13 +47,13 @@ static void __init handle_initrd(void)
79419 +diff -urNp linux-3.0.8/init/do_mounts_initrd.c linux-3.0.8/init/do_mounts_initrd.c
79420 +--- linux-3.0.8/init/do_mounts_initrd.c 2011-07-21 22:17:23.000000000 -0400
79421 ++++ linux-3.0.8/init/do_mounts_initrd.c 2011-10-06 04:17:55.000000000 -0400
79422 +@@ -44,13 +44,13 @@ static void __init handle_initrd(void)
79423 create_dev("/dev/root.old", Root_RAM0);
79424 /* mount initrd on rootfs' /root */
79425 mount_block_root("/dev/root.old", root_mountflags & ~MS_RDONLY);
79426 @@ -65714,7 +61817,7 @@ diff -urNp linux-2.6.32.48/init/do_mounts_initrd.c linux-2.6.32.48/init/do_mount
79427
79428 /*
79429 * In case that a resume from disk is carried out by linuxrc or one of
79430 -@@ -70,15 +70,15 @@ static void __init handle_initrd(void)
79431 +@@ -67,15 +67,15 @@ static void __init handle_initrd(void)
79432
79433 /* move initrd to rootfs' /old */
79434 sys_fchdir(old_fd);
79435 @@ -65733,7 +61836,7 @@ diff -urNp linux-2.6.32.48/init/do_mounts_initrd.c linux-2.6.32.48/init/do_mount
79436 return;
79437 }
79438
79439 -@@ -86,17 +86,17 @@ static void __init handle_initrd(void)
79440 +@@ -83,17 +83,17 @@ static void __init handle_initrd(void)
79441 mount_root();
79442
79443 printk(KERN_NOTICE "Trying to move old root to /initrd ... ");
79444 @@ -65754,7 +61857,7 @@ diff -urNp linux-2.6.32.48/init/do_mounts_initrd.c linux-2.6.32.48/init/do_mount
79445 printk(KERN_NOTICE "Trying to free ramdisk memory ... ");
79446 if (fd < 0) {
79447 error = fd;
79448 -@@ -119,11 +119,11 @@ int __init initrd_load(void)
79449 +@@ -116,11 +116,11 @@ int __init initrd_load(void)
79450 * mounted in the normal path.
79451 */
79452 if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) {
79453 @@ -65768,9 +61871,9 @@ diff -urNp linux-2.6.32.48/init/do_mounts_initrd.c linux-2.6.32.48/init/do_mount
79454 + sys_unlink((const char __force_user *)"/initrd.image");
79455 return 0;
79456 }
79457 -diff -urNp linux-2.6.32.48/init/do_mounts_md.c linux-2.6.32.48/init/do_mounts_md.c
79458 ---- linux-2.6.32.48/init/do_mounts_md.c 2009-12-02 22:51:21.000000000 -0500
79459 -+++ linux-2.6.32.48/init/do_mounts_md.c 2011-11-12 12:46:47.000000000 -0500
79460 +diff -urNp linux-3.0.8/init/do_mounts_md.c linux-3.0.8/init/do_mounts_md.c
79461 +--- linux-3.0.8/init/do_mounts_md.c 2011-07-21 22:17:23.000000000 -0400
79462 ++++ linux-3.0.8/init/do_mounts_md.c 2011-10-06 04:17:55.000000000 -0400
79463 @@ -170,7 +170,7 @@ static void __init md_setup_drive(void)
79464 partitioned ? "_d" : "", minor,
79465 md_setup_args[ent].device_names);
79466 @@ -65793,14 +61896,14 @@ diff -urNp linux-2.6.32.48/init/do_mounts_md.c linux-2.6.32.48/init/do_mounts_md
79467
79468 wait_for_device_probe();
79469
79470 -- fd = sys_open("/dev/md0", 0, 0);
79471 -+ fd = sys_open((__force char __user *)"/dev/md0", 0, 0);
79472 +- fd = sys_open((const char __user __force *) "/dev/md0", 0, 0);
79473 ++ fd = sys_open((const char __force_user *) "/dev/md0", 0, 0);
79474 if (fd >= 0) {
79475 sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
79476 sys_close(fd);
79477 -diff -urNp linux-2.6.32.48/init/initramfs.c linux-2.6.32.48/init/initramfs.c
79478 ---- linux-2.6.32.48/init/initramfs.c 2011-11-12 12:44:30.000000000 -0500
79479 -+++ linux-2.6.32.48/init/initramfs.c 2011-11-12 12:46:47.000000000 -0500
79480 +diff -urNp linux-3.0.8/init/initramfs.c linux-3.0.8/init/initramfs.c
79481 +--- linux-3.0.8/init/initramfs.c 2011-07-21 22:17:23.000000000 -0400
79482 ++++ linux-3.0.8/init/initramfs.c 2011-10-06 04:17:55.000000000 -0400
79483 @@ -74,7 +74,7 @@ static void __init free_hash(void)
79484 }
79485 }
79486 @@ -65909,10 +62012,10 @@ diff -urNp linux-2.6.32.48/init/initramfs.c linux-2.6.32.48/init/initramfs.c
79487 state = SkipIt;
79488 next_state = Reset;
79489 return 0;
79490 -diff -urNp linux-2.6.32.48/init/Kconfig linux-2.6.32.48/init/Kconfig
79491 ---- linux-2.6.32.48/init/Kconfig 2011-11-12 12:44:30.000000000 -0500
79492 -+++ linux-2.6.32.48/init/Kconfig 2011-11-12 12:46:47.000000000 -0500
79493 -@@ -1004,7 +1004,7 @@ config SLUB_DEBUG
79494 +diff -urNp linux-3.0.8/init/Kconfig linux-3.0.8/init/Kconfig
79495 +--- linux-3.0.8/init/Kconfig 2011-07-21 22:17:23.000000000 -0400
79496 ++++ linux-3.0.8/init/Kconfig 2011-08-23 21:47:56.000000000 -0400
79497 +@@ -1195,7 +1195,7 @@ config SLUB_DEBUG
79498
79499 config COMPAT_BRK
79500 bool "Disable heap randomization"
79501 @@ -65921,18 +62024,19 @@ diff -urNp linux-2.6.32.48/init/Kconfig linux-2.6.32.48/init/Kconfig
79502 help
79503 Randomizing heap placement makes heap exploits harder, but it
79504 also breaks ancient binaries (including anything libc5 based).
79505 -diff -urNp linux-2.6.32.48/init/main.c linux-2.6.32.48/init/main.c
79506 ---- linux-2.6.32.48/init/main.c 2011-11-12 12:44:30.000000000 -0500
79507 -+++ linux-2.6.32.48/init/main.c 2011-11-12 12:46:47.000000000 -0500
79508 -@@ -97,6 +97,7 @@ static inline void mark_rodata_ro(void)
79509 - #ifdef CONFIG_TC
79510 +diff -urNp linux-3.0.8/init/main.c linux-3.0.8/init/main.c
79511 +--- linux-3.0.8/init/main.c 2011-07-21 22:17:23.000000000 -0400
79512 ++++ linux-3.0.8/init/main.c 2011-10-06 04:17:55.000000000 -0400
79513 +@@ -96,6 +96,8 @@ static inline void mark_rodata_ro(void)
79514 extern void tc_init(void);
79515 #endif
79516 -+extern void grsecurity_init(void);
79517
79518 - enum system_states system_state __read_mostly;
79519 - EXPORT_SYMBOL(system_state);
79520 -@@ -183,6 +184,49 @@ static int __init set_reset_devices(char
79521 ++extern void grsecurity_init(void);
79522 ++
79523 + /*
79524 + * Debug helper: via this flag we know that we are in 'early bootup code'
79525 + * where only the boot processor is running with IRQ disabled. This means
79526 +@@ -149,6 +151,49 @@ static int __init set_reset_devices(char
79527
79528 __setup("reset_devices", set_reset_devices);
79529
79530 @@ -65979,57 +62083,19 @@ diff -urNp linux-2.6.32.48/init/main.c linux-2.6.32.48/init/main.c
79531 +__setup("pax_softmode=", setup_pax_softmode);
79532 +#endif
79533 +
79534 - static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
79535 - char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
79536 + static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
79537 + const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
79538 static const char *panic_later, *panic_param;
79539 -@@ -705,52 +749,53 @@ int initcall_debug;
79540 - core_param(initcall_debug, initcall_debug, bool, 0644);
79541 -
79542 - static char msgbuf[64];
79543 --static struct boot_trace_call call;
79544 --static struct boot_trace_ret ret;
79545 -+static struct boot_trace_call trace_call;
79546 -+static struct boot_trace_ret trace_ret;
79547 -
79548 - int do_one_initcall(initcall_t fn)
79549 +@@ -667,6 +712,7 @@ int __init_or_module do_one_initcall(ini
79550 {
79551 int count = preempt_count();
79552 - ktime_t calltime, delta, rettime;
79553 + int ret;
79554 + const char *msg1 = "", *msg2 = "";
79555
79556 - if (initcall_debug) {
79557 -- call.caller = task_pid_nr(current);
79558 -- printk("calling %pF @ %i\n", fn, call.caller);
79559 -+ trace_call.caller = task_pid_nr(current);
79560 -+ printk("calling %pF @ %i\n", fn, trace_call.caller);
79561 - calltime = ktime_get();
79562 -- trace_boot_call(&call, fn);
79563 -+ trace_boot_call(&trace_call, fn);
79564 - enable_boot_trace();
79565 - }
79566 -
79567 -- ret.result = fn();
79568 -+ trace_ret.result = fn();
79569 -
79570 - if (initcall_debug) {
79571 - disable_boot_trace();
79572 - rettime = ktime_get();
79573 - delta = ktime_sub(rettime, calltime);
79574 -- ret.duration = (unsigned long long) ktime_to_ns(delta) >> 10;
79575 -- trace_boot_ret(&ret, fn);
79576 -+ trace_ret.duration = (unsigned long long) ktime_to_ns(delta) >> 10;
79577 -+ trace_boot_ret(&trace_ret, fn);
79578 - printk("initcall %pF returned %d after %Ld usecs\n", fn,
79579 -- ret.result, ret.duration);
79580 -+ trace_ret.result, trace_ret.duration);
79581 - }
79582 -
79583 - msgbuf[0] = 0;
79584 -
79585 -- if (ret.result && ret.result != -ENODEV && initcall_debug)
79586 -- sprintf(msgbuf, "error code %d ", ret.result);
79587 -+ if (trace_ret.result && trace_ret.result != -ENODEV && initcall_debug)
79588 -+ sprintf(msgbuf, "error code %d ", trace_ret.result);
79589 + if (initcall_debug)
79590 + ret = do_one_initcall_debug(fn);
79591 +@@ -679,15 +725,15 @@ int __init_or_module do_one_initcall(ini
79592 + sprintf(msgbuf, "error code %d ", ret);
79593
79594 if (preempt_count() != count) {
79595 - strlcat(msgbuf, "preemption imbalance ", sizeof(msgbuf));
79596 @@ -66047,12 +62113,17 @@ diff -urNp linux-2.6.32.48/init/main.c linux-2.6.32.48/init/main.c
79597 + printk("initcall %pF returned with %s%s%s\n", fn, msgbuf, msg1, msg2);
79598 }
79599
79600 -- return ret.result;
79601 -+ return trace_ret.result;
79602 - }
79603 + return ret;
79604 +@@ -805,7 +851,7 @@ static int __init kernel_init(void * unu
79605 + do_basic_setup();
79606
79607 + /* Open the /dev/console on the rootfs, this should never fail */
79608 +- if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
79609 ++ if (sys_open((const char __force_user *) "/dev/console", O_RDWR, 0) < 0)
79610 + printk(KERN_WARNING "Warning: unable to open an initial console.\n");
79611
79612 -@@ -893,11 +938,13 @@ static int __init kernel_init(void * unu
79613 + (void) sys_dup(0);
79614 +@@ -818,11 +864,13 @@ static int __init kernel_init(void * unu
79615 if (!ramdisk_execute_command)
79616 ramdisk_execute_command = "/init";
79617
79618 @@ -66067,42 +62138,21 @@ diff -urNp linux-2.6.32.48/init/main.c linux-2.6.32.48/init/main.c
79619 /*
79620 * Ok, we have completed the initial bootup, and
79621 * we're essentially up and running. Get rid of the
79622 -diff -urNp linux-2.6.32.48/init/noinitramfs.c linux-2.6.32.48/init/noinitramfs.c
79623 ---- linux-2.6.32.48/init/noinitramfs.c 2009-12-02 22:51:21.000000000 -0500
79624 -+++ linux-2.6.32.48/init/noinitramfs.c 2011-11-12 12:46:47.000000000 -0500
79625 -@@ -29,7 +29,7 @@ static int __init default_rootfs(void)
79626 - {
79627 - int err;
79628 -
79629 -- err = sys_mkdir("/dev", 0755);
79630 -+ err = sys_mkdir((const char __user *)"/dev", 0755);
79631 - if (err < 0)
79632 - goto out;
79633 -
79634 -@@ -39,7 +39,7 @@ static int __init default_rootfs(void)
79635 - if (err < 0)
79636 - goto out;
79637 -
79638 -- err = sys_mkdir("/root", 0700);
79639 -+ err = sys_mkdir((const char __user *)"/root", 0700);
79640 - if (err < 0)
79641 - goto out;
79642 -
79643 -diff -urNp linux-2.6.32.48/ipc/mqueue.c linux-2.6.32.48/ipc/mqueue.c
79644 ---- linux-2.6.32.48/ipc/mqueue.c 2011-11-12 12:44:30.000000000 -0500
79645 -+++ linux-2.6.32.48/ipc/mqueue.c 2011-11-12 12:46:47.000000000 -0500
79646 -@@ -150,6 +150,7 @@ static struct inode *mqueue_get_inode(st
79647 - mq_bytes = (mq_msg_tblsz +
79648 - (info->attr.mq_maxmsg * info->attr.mq_msgsize));
79649 -
79650 -+ gr_learn_resource(current, RLIMIT_MSGQUEUE, u->mq_bytes + mq_bytes, 1);
79651 - spin_lock(&mq_lock);
79652 - if (u->mq_bytes + mq_bytes < u->mq_bytes ||
79653 - u->mq_bytes + mq_bytes >
79654 -diff -urNp linux-2.6.32.48/ipc/msg.c linux-2.6.32.48/ipc/msg.c
79655 ---- linux-2.6.32.48/ipc/msg.c 2011-11-12 12:44:30.000000000 -0500
79656 -+++ linux-2.6.32.48/ipc/msg.c 2011-11-12 12:46:47.000000000 -0500
79657 -@@ -310,18 +310,19 @@ static inline int msg_security(struct ke
79658 +diff -urNp linux-3.0.8/ipc/mqueue.c linux-3.0.8/ipc/mqueue.c
79659 +--- linux-3.0.8/ipc/mqueue.c 2011-10-24 08:05:30.000000000 -0400
79660 ++++ linux-3.0.8/ipc/mqueue.c 2011-10-16 21:59:31.000000000 -0400
79661 +@@ -156,6 +156,7 @@ static struct inode *mqueue_get_inode(st
79662 + mq_bytes = (mq_msg_tblsz +
79663 + (info->attr.mq_maxmsg * info->attr.mq_msgsize));
79664 +
79665 ++ gr_learn_resource(current, RLIMIT_MSGQUEUE, u->mq_bytes + mq_bytes, 1);
79666 + spin_lock(&mq_lock);
79667 + if (u->mq_bytes + mq_bytes < u->mq_bytes ||
79668 + u->mq_bytes + mq_bytes > task_rlimit(p, RLIMIT_MSGQUEUE)) {
79669 +diff -urNp linux-3.0.8/ipc/msg.c linux-3.0.8/ipc/msg.c
79670 +--- linux-3.0.8/ipc/msg.c 2011-07-21 22:17:23.000000000 -0400
79671 ++++ linux-3.0.8/ipc/msg.c 2011-08-23 21:47:56.000000000 -0400
79672 +@@ -309,18 +309,19 @@ static inline int msg_security(struct ke
79673 return security_msg_queue_associate(msq, msgflg);
79674 }
79675
79676 @@ -66127,10 +62177,10 @@ diff -urNp linux-2.6.32.48/ipc/msg.c linux-2.6.32.48/ipc/msg.c
79677 msg_params.key = key;
79678 msg_params.flg = msgflg;
79679
79680 -diff -urNp linux-2.6.32.48/ipc/sem.c linux-2.6.32.48/ipc/sem.c
79681 ---- linux-2.6.32.48/ipc/sem.c 2011-11-12 12:44:30.000000000 -0500
79682 -+++ linux-2.6.32.48/ipc/sem.c 2011-11-12 12:46:47.000000000 -0500
79683 -@@ -309,10 +309,15 @@ static inline int sem_more_checks(struct
79684 +diff -urNp linux-3.0.8/ipc/sem.c linux-3.0.8/ipc/sem.c
79685 +--- linux-3.0.8/ipc/sem.c 2011-10-24 08:05:21.000000000 -0400
79686 ++++ linux-3.0.8/ipc/sem.c 2011-08-23 21:48:14.000000000 -0400
79687 +@@ -318,10 +318,15 @@ static inline int sem_more_checks(struct
79688 return 0;
79689 }
79690
79691 @@ -66147,7 +62197,7 @@ diff -urNp linux-2.6.32.48/ipc/sem.c linux-2.6.32.48/ipc/sem.c
79692 struct ipc_params sem_params;
79693
79694 ns = current->nsproxy->ipc_ns;
79695 -@@ -320,10 +325,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int,
79696 +@@ -329,10 +334,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int,
79697 if (nsems < 0 || nsems > ns->sc_semmsl)
79698 return -EINVAL;
79699
79700 @@ -66158,28 +62208,28 @@ diff -urNp linux-2.6.32.48/ipc/sem.c linux-2.6.32.48/ipc/sem.c
79701 sem_params.key = key;
79702 sem_params.flg = semflg;
79703 sem_params.u.nsems = nsems;
79704 -@@ -671,6 +672,8 @@ static int semctl_main(struct ipc_namesp
79705 - ushort* sem_io = fast_sem_io;
79706 +@@ -854,6 +855,8 @@ static int semctl_main(struct ipc_namesp
79707 int nsems;
79708 + struct list_head tasks;
79709
79710 + pax_track_stack();
79711 +
79712 sma = sem_lock_check(ns, semid);
79713 if (IS_ERR(sma))
79714 return PTR_ERR(sma);
79715 -@@ -1071,6 +1074,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid,
79716 - unsigned long jiffies_left = 0;
79717 +@@ -1301,6 +1304,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid,
79718 struct ipc_namespace *ns;
79719 + struct list_head tasks;
79720
79721 + pax_track_stack();
79722 +
79723 ns = current->nsproxy->ipc_ns;
79724
79725 if (nsops < 1 || semid < 0)
79726 -diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
79727 ---- linux-2.6.32.48/ipc/shm.c 2011-11-12 12:44:30.000000000 -0500
79728 -+++ linux-2.6.32.48/ipc/shm.c 2011-11-12 12:46:47.000000000 -0500
79729 -@@ -70,6 +70,14 @@ static void shm_destroy (struct ipc_name
79730 +diff -urNp linux-3.0.8/ipc/shm.c linux-3.0.8/ipc/shm.c
79731 +--- linux-3.0.8/ipc/shm.c 2011-07-21 22:17:23.000000000 -0400
79732 ++++ linux-3.0.8/ipc/shm.c 2011-08-23 21:48:14.000000000 -0400
79733 +@@ -69,6 +69,14 @@ static void shm_destroy (struct ipc_name
79734 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
79735 #endif
79736
79737 @@ -66194,7 +62244,7 @@ diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
79738 void shm_init_ns(struct ipc_namespace *ns)
79739 {
79740 ns->shm_ctlmax = SHMMAX;
79741 -@@ -396,6 +404,14 @@ static int newseg(struct ipc_namespace *
79742 +@@ -401,6 +409,14 @@ static int newseg(struct ipc_namespace *
79743 shp->shm_lprid = 0;
79744 shp->shm_atim = shp->shm_dtim = 0;
79745 shp->shm_ctim = get_seconds();
79746 @@ -66209,7 +62259,7 @@ diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
79747 shp->shm_segsz = size;
79748 shp->shm_nattch = 0;
79749 shp->shm_file = file;
79750 -@@ -446,18 +462,19 @@ static inline int shm_more_checks(struct
79751 +@@ -451,18 +467,19 @@ static inline int shm_more_checks(struct
79752 return 0;
79753 }
79754
79755 @@ -66234,7 +62284,16 @@ diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
79756 shm_params.key = key;
79757 shm_params.flg = shmflg;
79758 shm_params.u.size = size;
79759 -@@ -880,9 +897,21 @@ long do_shmat(int shmid, char __user *sh
79760 +@@ -762,8 +779,6 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int,
79761 + case SHM_LOCK:
79762 + case SHM_UNLOCK:
79763 + {
79764 +- struct file *uninitialized_var(shm_file);
79765 +-
79766 + lru_add_drain_all(); /* drain pagevecs to lru lists */
79767 +
79768 + shp = shm_lock_check(ns, shmid);
79769 +@@ -896,9 +911,21 @@ long do_shmat(int shmid, char __user *sh
79770 if (err)
79771 goto out_unlock;
79772
79773 @@ -66247,8 +62306,8 @@ diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
79774 + }
79775 +#endif
79776 +
79777 - path.dentry = dget(shp->shm_file->f_path.dentry);
79778 - path.mnt = shp->shm_file->f_path.mnt;
79779 + path = shp->shm_file->f_path;
79780 + path_get(&path);
79781 shp->shm_nattch++;
79782 +#ifdef CONFIG_GRKERNSEC
79783 + shp->shm_lapid = current->pid;
79784 @@ -66256,10 +62315,10 @@ diff -urNp linux-2.6.32.48/ipc/shm.c linux-2.6.32.48/ipc/shm.c
79785 size = i_size_read(path.dentry->d_inode);
79786 shm_unlock(shp);
79787
79788 -diff -urNp linux-2.6.32.48/kernel/acct.c linux-2.6.32.48/kernel/acct.c
79789 ---- linux-2.6.32.48/kernel/acct.c 2011-11-12 12:44:30.000000000 -0500
79790 -+++ linux-2.6.32.48/kernel/acct.c 2011-11-12 12:46:47.000000000 -0500
79791 -@@ -579,7 +579,7 @@ static void do_acct_process(struct bsd_a
79792 +diff -urNp linux-3.0.8/kernel/acct.c linux-3.0.8/kernel/acct.c
79793 +--- linux-3.0.8/kernel/acct.c 2011-07-21 22:17:23.000000000 -0400
79794 ++++ linux-3.0.8/kernel/acct.c 2011-10-06 04:17:55.000000000 -0400
79795 +@@ -570,7 +570,7 @@ static void do_acct_process(struct bsd_a
79796 */
79797 flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
79798 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY;
79799 @@ -66268,10 +62327,10 @@ diff -urNp linux-2.6.32.48/kernel/acct.c linux-2.6.32.48/kernel/acct.c
79800 sizeof(acct_t), &file->f_pos);
79801 current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
79802 set_fs(fs);
79803 -diff -urNp linux-2.6.32.48/kernel/audit.c linux-2.6.32.48/kernel/audit.c
79804 ---- linux-2.6.32.48/kernel/audit.c 2009-12-02 22:51:21.000000000 -0500
79805 -+++ linux-2.6.32.48/kernel/audit.c 2011-11-12 12:46:47.000000000 -0500
79806 -@@ -110,7 +110,7 @@ u32 audit_sig_sid = 0;
79807 +diff -urNp linux-3.0.8/kernel/audit.c linux-3.0.8/kernel/audit.c
79808 +--- linux-3.0.8/kernel/audit.c 2011-07-21 22:17:23.000000000 -0400
79809 ++++ linux-3.0.8/kernel/audit.c 2011-08-23 21:47:56.000000000 -0400
79810 +@@ -112,7 +112,7 @@ u32 audit_sig_sid = 0;
79811 3) suppressed due to audit_rate_limit
79812 4) suppressed due to audit_backlog_limit
79813 */
79814 @@ -66280,7 +62339,7 @@ diff -urNp linux-2.6.32.48/kernel/audit.c linux-2.6.32.48/kernel/audit.c
79815
79816 /* The netlink socket. */
79817 static struct sock *audit_sock;
79818 -@@ -232,7 +232,7 @@ void audit_log_lost(const char *message)
79819 +@@ -234,7 +234,7 @@ void audit_log_lost(const char *message)
79820 unsigned long now;
79821 int print;
79822
79823 @@ -66289,7 +62348,7 @@ diff -urNp linux-2.6.32.48/kernel/audit.c linux-2.6.32.48/kernel/audit.c
79824
79825 print = (audit_failure == AUDIT_FAIL_PANIC || !audit_rate_limit);
79826
79827 -@@ -251,7 +251,7 @@ void audit_log_lost(const char *message)
79828 +@@ -253,7 +253,7 @@ void audit_log_lost(const char *message)
79829 printk(KERN_WARNING
79830 "audit: audit_lost=%d audit_rate_limit=%d "
79831 "audit_backlog_limit=%d\n",
79832 @@ -66298,7 +62357,7 @@ diff -urNp linux-2.6.32.48/kernel/audit.c linux-2.6.32.48/kernel/audit.c
79833 audit_rate_limit,
79834 audit_backlog_limit);
79835 audit_panic(message);
79836 -@@ -691,7 +691,7 @@ static int audit_receive_msg(struct sk_b
79837 +@@ -686,7 +686,7 @@ static int audit_receive_msg(struct sk_b
79838 status_set.pid = audit_pid;
79839 status_set.rate_limit = audit_rate_limit;
79840 status_set.backlog_limit = audit_backlog_limit;
79841 @@ -66307,23 +62366,10 @@ diff -urNp linux-2.6.32.48/kernel/audit.c linux-2.6.32.48/kernel/audit.c
79842 status_set.backlog = skb_queue_len(&audit_skb_queue);
79843 audit_send_reply(NETLINK_CB(skb).pid, seq, AUDIT_GET, 0, 0,
79844 &status_set, sizeof(status_set));
79845 -@@ -891,8 +891,10 @@ static int audit_receive_msg(struct sk_b
79846 - spin_unlock_irq(&tsk->sighand->siglock);
79847 - }
79848 - read_unlock(&tasklist_lock);
79849 -- audit_send_reply(NETLINK_CB(skb).pid, seq, AUDIT_TTY_GET, 0, 0,
79850 -- &s, sizeof(s));
79851 -+
79852 -+ if (!err)
79853 -+ audit_send_reply(NETLINK_CB(skb).pid, seq,
79854 -+ AUDIT_TTY_GET, 0, 0, &s, sizeof(s));
79855 - break;
79856 - }
79857 - case AUDIT_TTY_SET: {
79858 -diff -urNp linux-2.6.32.48/kernel/auditsc.c linux-2.6.32.48/kernel/auditsc.c
79859 ---- linux-2.6.32.48/kernel/auditsc.c 2009-12-02 22:51:21.000000000 -0500
79860 -+++ linux-2.6.32.48/kernel/auditsc.c 2011-11-12 12:46:47.000000000 -0500
79861 -@@ -2113,7 +2113,7 @@ int auditsc_get_stamp(struct audit_conte
79862 +diff -urNp linux-3.0.8/kernel/auditsc.c linux-3.0.8/kernel/auditsc.c
79863 +--- linux-3.0.8/kernel/auditsc.c 2011-07-21 22:17:23.000000000 -0400
79864 ++++ linux-3.0.8/kernel/auditsc.c 2011-08-23 21:47:56.000000000 -0400
79865 +@@ -2118,7 +2118,7 @@ int auditsc_get_stamp(struct audit_conte
79866 }
79867
79868 /* global counter which is incremented every time something logs in */
79869 @@ -66332,7 +62378,7 @@ diff -urNp linux-2.6.32.48/kernel/auditsc.c linux-2.6.32.48/kernel/auditsc.c
79870
79871 /**
79872 * audit_set_loginuid - set a task's audit_context loginuid
79873 -@@ -2126,7 +2126,7 @@ static atomic_t session_id = ATOMIC_INIT
79874 +@@ -2131,7 +2131,7 @@ static atomic_t session_id = ATOMIC_INIT
79875 */
79876 int audit_set_loginuid(struct task_struct *task, uid_t loginuid)
79877 {
79878 @@ -66341,41 +62387,73 @@ diff -urNp linux-2.6.32.48/kernel/auditsc.c linux-2.6.32.48/kernel/auditsc.c
79879 struct audit_context *context = task->audit_context;
79880
79881 if (context && context->in_syscall) {
79882 -diff -urNp linux-2.6.32.48/kernel/capability.c linux-2.6.32.48/kernel/capability.c
79883 ---- linux-2.6.32.48/kernel/capability.c 2011-11-12 12:44:30.000000000 -0500
79884 -+++ linux-2.6.32.48/kernel/capability.c 2011-11-12 12:46:47.000000000 -0500
79885 -@@ -305,10 +305,26 @@ int capable(int cap)
79886 +diff -urNp linux-3.0.8/kernel/capability.c linux-3.0.8/kernel/capability.c
79887 +--- linux-3.0.8/kernel/capability.c 2011-07-21 22:17:23.000000000 -0400
79888 ++++ linux-3.0.8/kernel/capability.c 2011-08-23 21:48:14.000000000 -0400
79889 +@@ -202,6 +202,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_
79890 + * before modification is attempted and the application
79891 + * fails.
79892 + */
79893 ++ if (tocopy > ARRAY_SIZE(kdata))
79894 ++ return -EFAULT;
79895 ++
79896 + if (copy_to_user(dataptr, kdata, tocopy
79897 + * sizeof(struct __user_cap_data_struct))) {
79898 + return -EFAULT;
79899 +@@ -374,7 +377,7 @@ bool ns_capable(struct user_namespace *n
79900 BUG();
79901 }
79902
79903 -- if (security_capable(cap) == 0) {
79904 -+ if (security_capable(cap) == 0 && gr_is_capable(cap)) {
79905 +- if (security_capable(ns, current_cred(), cap) == 0) {
79906 ++ if (security_capable(ns, current_cred(), cap) == 0 && gr_is_capable(cap)) {
79907 current->flags |= PF_SUPERPRIV;
79908 - return 1;
79909 + return true;
79910 }
79911 - return 0;
79912 +@@ -382,6 +385,27 @@ bool ns_capable(struct user_namespace *n
79913 }
79914 -+
79915 -+int capable_nolog(int cap)
79916 + EXPORT_SYMBOL(ns_capable);
79917 +
79918 ++bool ns_capable_nolog(struct user_namespace *ns, int cap)
79919 +{
79920 + if (unlikely(!cap_valid(cap))) {
79921 + printk(KERN_CRIT "capable() called with invalid cap=%u\n", cap);
79922 + BUG();
79923 + }
79924 +
79925 -+ if (security_capable(cap) == 0 && gr_is_capable_nolog(cap)) {
79926 ++ if (security_capable(ns, current_cred(), cap) == 0 && gr_is_capable_nolog(cap)) {
79927 + current->flags |= PF_SUPERPRIV;
79928 -+ return 1;
79929 ++ return true;
79930 + }
79931 -+ return 0;
79932 ++ return false;
79933 +}
79934 ++EXPORT_SYMBOL(ns_capable_nolog);
79935 +
79936 - EXPORT_SYMBOL(capable);
79937 ++bool capable_nolog(int cap)
79938 ++{
79939 ++ return ns_capable_nolog(&init_user_ns, cap);
79940 ++}
79941 +EXPORT_SYMBOL(capable_nolog);
79942 -diff -urNp linux-2.6.32.48/kernel/cgroup.c linux-2.6.32.48/kernel/cgroup.c
79943 ---- linux-2.6.32.48/kernel/cgroup.c 2011-11-12 12:44:30.000000000 -0500
79944 -+++ linux-2.6.32.48/kernel/cgroup.c 2011-11-12 12:46:47.000000000 -0500
79945 -@@ -536,6 +536,8 @@ static struct css_set *find_css_set(
79946 ++
79947 + /**
79948 + * task_ns_capable - Determine whether current task has a superior
79949 + * capability targeted at a specific task's user namespace.
79950 +@@ -396,6 +420,12 @@ bool task_ns_capable(struct task_struct
79951 + }
79952 + EXPORT_SYMBOL(task_ns_capable);
79953 +
79954 ++bool task_ns_capable_nolog(struct task_struct *t, int cap)
79955 ++{
79956 ++ return ns_capable_nolog(task_cred_xxx(t, user)->user_ns, cap);
79957 ++}
79958 ++EXPORT_SYMBOL(task_ns_capable_nolog);
79959 ++
79960 + /**
79961 + * nsown_capable - Check superior capability to one's own user_ns
79962 + * @cap: The capability in question
79963 +diff -urNp linux-3.0.8/kernel/cgroup.c linux-3.0.8/kernel/cgroup.c
79964 +--- linux-3.0.8/kernel/cgroup.c 2011-07-21 22:17:23.000000000 -0400
79965 ++++ linux-3.0.8/kernel/cgroup.c 2011-08-23 21:48:14.000000000 -0400
79966 +@@ -593,6 +593,8 @@ static struct css_set *find_css_set(
79967 struct hlist_head *hhead;
79968 struct cg_cgroup_link *link;
79969
79970 @@ -66384,10 +62462,18 @@ diff -urNp linux-2.6.32.48/kernel/cgroup.c linux-2.6.32.48/kernel/cgroup.c
79971 /* First see if we already have a cgroup group that matches
79972 * the desired set */
79973 read_lock(&css_set_lock);
79974 -diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
79975 ---- linux-2.6.32.48/kernel/compat.c 2011-11-12 12:44:30.000000000 -0500
79976 -+++ linux-2.6.32.48/kernel/compat.c 2011-11-12 12:46:47.000000000 -0500
79977 -@@ -108,7 +108,7 @@ static long compat_nanosleep_restart(str
79978 +diff -urNp linux-3.0.8/kernel/compat.c linux-3.0.8/kernel/compat.c
79979 +--- linux-3.0.8/kernel/compat.c 2011-07-21 22:17:23.000000000 -0400
79980 ++++ linux-3.0.8/kernel/compat.c 2011-10-06 04:17:55.000000000 -0400
79981 +@@ -13,6 +13,7 @@
79982 +
79983 + #include <linux/linkage.h>
79984 + #include <linux/compat.h>
79985 ++#include <linux/module.h>
79986 + #include <linux/errno.h>
79987 + #include <linux/time.h>
79988 + #include <linux/signal.h>
79989 +@@ -166,7 +167,7 @@ static long compat_nanosleep_restart(str
79990 mm_segment_t oldfs;
79991 long ret;
79992
79993 @@ -66396,7 +62482,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
79994 oldfs = get_fs();
79995 set_fs(KERNEL_DS);
79996 ret = hrtimer_nanosleep_restart(restart);
79997 -@@ -140,7 +140,7 @@ asmlinkage long compat_sys_nanosleep(str
79998 +@@ -198,7 +199,7 @@ asmlinkage long compat_sys_nanosleep(str
79999 oldfs = get_fs();
80000 set_fs(KERNEL_DS);
80001 ret = hrtimer_nanosleep(&tu,
80002 @@ -66405,7 +62491,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80003 HRTIMER_MODE_REL, CLOCK_MONOTONIC);
80004 set_fs(oldfs);
80005
80006 -@@ -247,7 +247,7 @@ asmlinkage long compat_sys_sigpending(co
80007 +@@ -307,7 +308,7 @@ asmlinkage long compat_sys_sigpending(co
80008 mm_segment_t old_fs = get_fs();
80009
80010 set_fs(KERNEL_DS);
80011 @@ -66414,7 +62500,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80012 set_fs(old_fs);
80013 if (ret == 0)
80014 ret = put_user(s, set);
80015 -@@ -266,8 +266,8 @@ asmlinkage long compat_sys_sigprocmask(i
80016 +@@ -330,8 +331,8 @@ asmlinkage long compat_sys_sigprocmask(i
80017 old_fs = get_fs();
80018 set_fs(KERNEL_DS);
80019 ret = sys_sigprocmask(how,
80020 @@ -66425,7 +62511,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80021 set_fs(old_fs);
80022 if (ret == 0)
80023 if (oset)
80024 -@@ -310,7 +310,7 @@ asmlinkage long compat_sys_old_getrlimit
80025 +@@ -368,7 +369,7 @@ asmlinkage long compat_sys_old_getrlimit
80026 mm_segment_t old_fs = get_fs();
80027
80028 set_fs(KERNEL_DS);
80029 @@ -66434,7 +62520,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80030 set_fs(old_fs);
80031
80032 if (!ret) {
80033 -@@ -385,7 +385,7 @@ asmlinkage long compat_sys_getrusage(int
80034 +@@ -440,7 +441,7 @@ asmlinkage long compat_sys_getrusage(int
80035 mm_segment_t old_fs = get_fs();
80036
80037 set_fs(KERNEL_DS);
80038 @@ -66443,7 +62529,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80039 set_fs(old_fs);
80040
80041 if (ret)
80042 -@@ -412,8 +412,8 @@ compat_sys_wait4(compat_pid_t pid, compa
80043 +@@ -467,8 +468,8 @@ compat_sys_wait4(compat_pid_t pid, compa
80044 set_fs (KERNEL_DS);
80045 ret = sys_wait4(pid,
80046 (stat_addr ?
80047 @@ -66454,7 +62540,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80048 set_fs (old_fs);
80049
80050 if (ret > 0) {
80051 -@@ -438,8 +438,8 @@ asmlinkage long compat_sys_waitid(int wh
80052 +@@ -493,8 +494,8 @@ asmlinkage long compat_sys_waitid(int wh
80053 memset(&info, 0, sizeof(info));
80054
80055 set_fs(KERNEL_DS);
80056 @@ -66465,7 +62551,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80057 set_fs(old_fs);
80058
80059 if ((ret < 0) || (info.si_signo == 0))
80060 -@@ -569,8 +569,8 @@ long compat_sys_timer_settime(timer_t ti
80061 +@@ -624,8 +625,8 @@ long compat_sys_timer_settime(timer_t ti
80062 oldfs = get_fs();
80063 set_fs(KERNEL_DS);
80064 err = sys_timer_settime(timer_id, flags,
80065 @@ -66476,7 +62562,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80066 set_fs(oldfs);
80067 if (!err && old && put_compat_itimerspec(old, &oldts))
80068 return -EFAULT;
80069 -@@ -587,7 +587,7 @@ long compat_sys_timer_gettime(timer_t ti
80070 +@@ -642,7 +643,7 @@ long compat_sys_timer_gettime(timer_t ti
80071 oldfs = get_fs();
80072 set_fs(KERNEL_DS);
80073 err = sys_timer_gettime(timer_id,
80074 @@ -66485,7 +62571,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80075 set_fs(oldfs);
80076 if (!err && put_compat_itimerspec(setting, &ts))
80077 return -EFAULT;
80078 -@@ -606,7 +606,7 @@ long compat_sys_clock_settime(clockid_t
80079 +@@ -661,7 +662,7 @@ long compat_sys_clock_settime(clockid_t
80080 oldfs = get_fs();
80081 set_fs(KERNEL_DS);
80082 err = sys_clock_settime(which_clock,
80083 @@ -66494,7 +62580,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80084 set_fs(oldfs);
80085 return err;
80086 }
80087 -@@ -621,7 +621,7 @@ long compat_sys_clock_gettime(clockid_t
80088 +@@ -676,7 +677,7 @@ long compat_sys_clock_gettime(clockid_t
80089 oldfs = get_fs();
80090 set_fs(KERNEL_DS);
80091 err = sys_clock_gettime(which_clock,
80092 @@ -66503,7 +62589,16 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80093 set_fs(oldfs);
80094 if (!err && put_compat_timespec(&ts, tp))
80095 return -EFAULT;
80096 -@@ -638,7 +638,7 @@ long compat_sys_clock_getres(clockid_t w
80097 +@@ -696,7 +697,7 @@ long compat_sys_clock_adjtime(clockid_t
80098 +
80099 + oldfs = get_fs();
80100 + set_fs(KERNEL_DS);
80101 +- ret = sys_clock_adjtime(which_clock, (struct timex __user *) &txc);
80102 ++ ret = sys_clock_adjtime(which_clock, (struct timex __force_user *) &txc);
80103 + set_fs(oldfs);
80104 +
80105 + err = compat_put_timex(utp, &txc);
80106 +@@ -716,7 +717,7 @@ long compat_sys_clock_getres(clockid_t w
80107 oldfs = get_fs();
80108 set_fs(KERNEL_DS);
80109 err = sys_clock_getres(which_clock,
80110 @@ -66512,7 +62607,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80111 set_fs(oldfs);
80112 if (!err && tp && put_compat_timespec(&ts, tp))
80113 return -EFAULT;
80114 -@@ -650,9 +650,9 @@ static long compat_clock_nanosleep_resta
80115 +@@ -728,9 +729,9 @@ static long compat_clock_nanosleep_resta
80116 long err;
80117 mm_segment_t oldfs;
80118 struct timespec tu;
80119 @@ -66524,7 +62619,7 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80120 oldfs = get_fs();
80121 set_fs(KERNEL_DS);
80122 err = clock_nanosleep_restart(restart);
80123 -@@ -684,8 +684,8 @@ long compat_sys_clock_nanosleep(clockid_
80124 +@@ -762,8 +763,8 @@ long compat_sys_clock_nanosleep(clockid_
80125 oldfs = get_fs();
80126 set_fs(KERNEL_DS);
80127 err = sys_clock_nanosleep(which_clock, flags,
80128 @@ -66535,10 +62630,10 @@ diff -urNp linux-2.6.32.48/kernel/compat.c linux-2.6.32.48/kernel/compat.c
80129 set_fs(oldfs);
80130
80131 if ((err == -ERESTART_RESTARTBLOCK) && rmtp &&
80132 -diff -urNp linux-2.6.32.48/kernel/configs.c linux-2.6.32.48/kernel/configs.c
80133 ---- linux-2.6.32.48/kernel/configs.c 2009-12-02 22:51:21.000000000 -0500
80134 -+++ linux-2.6.32.48/kernel/configs.c 2011-11-12 12:46:47.000000000 -0500
80135 -@@ -73,8 +73,19 @@ static int __init ikconfig_init(void)
80136 +diff -urNp linux-3.0.8/kernel/configs.c linux-3.0.8/kernel/configs.c
80137 +--- linux-3.0.8/kernel/configs.c 2011-07-21 22:17:23.000000000 -0400
80138 ++++ linux-3.0.8/kernel/configs.c 2011-08-23 21:48:14.000000000 -0400
80139 +@@ -74,8 +74,19 @@ static int __init ikconfig_init(void)
80140 struct proc_dir_entry *entry;
80141
80142 /* create the current config file */
80143 @@ -66558,22 +62653,10 @@ diff -urNp linux-2.6.32.48/kernel/configs.c linux-2.6.32.48/kernel/configs.c
80144 if (!entry)
80145 return -ENOMEM;
80146
80147 -diff -urNp linux-2.6.32.48/kernel/cpu.c linux-2.6.32.48/kernel/cpu.c
80148 ---- linux-2.6.32.48/kernel/cpu.c 2011-11-12 12:44:30.000000000 -0500
80149 -+++ linux-2.6.32.48/kernel/cpu.c 2011-11-12 12:46:47.000000000 -0500
80150 -@@ -19,7 +19,7 @@
80151 - /* Serializes the updates to cpu_online_mask, cpu_present_mask */
80152 - static DEFINE_MUTEX(cpu_add_remove_lock);
80153 -
80154 --static __cpuinitdata RAW_NOTIFIER_HEAD(cpu_chain);
80155 -+static RAW_NOTIFIER_HEAD(cpu_chain);
80156 -
80157 - /* If set, cpu_up and cpu_down will return -EBUSY and do nothing.
80158 - * Should always be manipulated under cpu_add_remove_lock
80159 -diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80160 ---- linux-2.6.32.48/kernel/cred.c 2011-11-12 12:44:30.000000000 -0500
80161 -+++ linux-2.6.32.48/kernel/cred.c 2011-11-12 12:46:47.000000000 -0500
80162 -@@ -160,6 +160,8 @@ static void put_cred_rcu(struct rcu_head
80163 +diff -urNp linux-3.0.8/kernel/cred.c linux-3.0.8/kernel/cred.c
80164 +--- linux-3.0.8/kernel/cred.c 2011-07-21 22:17:23.000000000 -0400
80165 ++++ linux-3.0.8/kernel/cred.c 2011-08-25 17:23:03.000000000 -0400
80166 +@@ -158,6 +158,8 @@ static void put_cred_rcu(struct rcu_head
80167 */
80168 void __put_cred(struct cred *cred)
80169 {
80170 @@ -66582,7 +62665,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80171 kdebug("__put_cred(%p{%d,%d})", cred,
80172 atomic_read(&cred->usage),
80173 read_cred_subscribers(cred));
80174 -@@ -184,6 +186,8 @@ void exit_creds(struct task_struct *tsk)
80175 +@@ -182,6 +184,8 @@ void exit_creds(struct task_struct *tsk)
80176 {
80177 struct cred *cred;
80178
80179 @@ -66591,7 +62674,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80180 kdebug("exit_creds(%u,%p,%p,{%d,%d})", tsk->pid, tsk->real_cred, tsk->cred,
80181 atomic_read(&tsk->cred->usage),
80182 read_cred_subscribers(tsk->cred));
80183 -@@ -222,6 +226,8 @@ const struct cred *get_task_cred(struct
80184 +@@ -220,6 +224,8 @@ const struct cred *get_task_cred(struct
80185 {
80186 const struct cred *cred;
80187
80188 @@ -66600,7 +62683,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80189 rcu_read_lock();
80190
80191 do {
80192 -@@ -241,6 +247,8 @@ struct cred *cred_alloc_blank(void)
80193 +@@ -239,6 +245,8 @@ struct cred *cred_alloc_blank(void)
80194 {
80195 struct cred *new;
80196
80197 @@ -66609,7 +62692,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80198 new = kmem_cache_zalloc(cred_jar, GFP_KERNEL);
80199 if (!new)
80200 return NULL;
80201 -@@ -289,6 +297,8 @@ struct cred *prepare_creds(void)
80202 +@@ -287,6 +295,8 @@ struct cred *prepare_creds(void)
80203 const struct cred *old;
80204 struct cred *new;
80205
80206 @@ -66618,7 +62701,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80207 validate_process_creds();
80208
80209 new = kmem_cache_alloc(cred_jar, GFP_KERNEL);
80210 -@@ -335,6 +345,8 @@ struct cred *prepare_exec_creds(void)
80211 +@@ -333,6 +343,8 @@ struct cred *prepare_exec_creds(void)
80212 struct thread_group_cred *tgcred = NULL;
80213 struct cred *new;
80214
80215 @@ -66627,16 +62710,16 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80216 #ifdef CONFIG_KEYS
80217 tgcred = kmalloc(sizeof(*tgcred), GFP_KERNEL);
80218 if (!tgcred)
80219 -@@ -441,6 +453,8 @@ int copy_creds(struct task_struct *p, un
80220 +@@ -385,6 +397,8 @@ int copy_creds(struct task_struct *p, un
80221 struct cred *new;
80222 int ret;
80223
80224 + pax_track_stack();
80225 +
80226 - mutex_init(&p->cred_guard_mutex);
80227 -
80228 if (
80229 -@@ -528,6 +542,8 @@ int commit_creds(struct cred *new)
80230 + #ifdef CONFIG_KEYS
80231 + !p->cred->thread_keyring &&
80232 +@@ -475,6 +489,8 @@ int commit_creds(struct cred *new)
80233 struct task_struct *task = current;
80234 const struct cred *old = task->real_cred;
80235
80236 @@ -66645,7 +62728,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80237 kdebug("commit_creds(%p{%d,%d})", new,
80238 atomic_read(&new->usage),
80239 read_cred_subscribers(new));
80240 -@@ -544,6 +560,8 @@ int commit_creds(struct cred *new)
80241 +@@ -489,6 +505,8 @@ int commit_creds(struct cred *new)
80242
80243 get_cred(new); /* we will require a ref for the subj creds too */
80244
80245 @@ -66654,7 +62737,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80246 /* dumpability changes */
80247 if (old->euid != new->euid ||
80248 old->egid != new->egid ||
80249 -@@ -563,10 +581,8 @@ int commit_creds(struct cred *new)
80250 +@@ -508,10 +526,8 @@ int commit_creds(struct cred *new)
80251 key_fsgid_changed(task);
80252
80253 /* do it
80254 @@ -66667,7 +62750,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80255 */
80256 alter_cred_subscribers(new, 2);
80257 if (new->user != old->user)
80258 -@@ -606,6 +622,8 @@ EXPORT_SYMBOL(commit_creds);
80259 +@@ -551,6 +567,8 @@ EXPORT_SYMBOL(commit_creds);
80260 */
80261 void abort_creds(struct cred *new)
80262 {
80263 @@ -66676,7 +62759,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80264 kdebug("abort_creds(%p{%d,%d})", new,
80265 atomic_read(&new->usage),
80266 read_cred_subscribers(new));
80267 -@@ -629,6 +647,8 @@ const struct cred *override_creds(const
80268 +@@ -574,6 +592,8 @@ const struct cred *override_creds(const
80269 {
80270 const struct cred *old = current->cred;
80271
80272 @@ -66685,7 +62768,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80273 kdebug("override_creds(%p{%d,%d})", new,
80274 atomic_read(&new->usage),
80275 read_cred_subscribers(new));
80276 -@@ -658,6 +678,8 @@ void revert_creds(const struct cred *old
80277 +@@ -603,6 +623,8 @@ void revert_creds(const struct cred *old
80278 {
80279 const struct cred *override = current->cred;
80280
80281 @@ -66694,7 +62777,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80282 kdebug("revert_creds(%p{%d,%d})", old,
80283 atomic_read(&old->usage),
80284 read_cred_subscribers(old));
80285 -@@ -704,6 +726,8 @@ struct cred *prepare_kernel_cred(struct
80286 +@@ -649,6 +671,8 @@ struct cred *prepare_kernel_cred(struct
80287 const struct cred *old;
80288 struct cred *new;
80289
80290 @@ -66703,7 +62786,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80291 new = kmem_cache_alloc(cred_jar, GFP_KERNEL);
80292 if (!new)
80293 return NULL;
80294 -@@ -758,6 +782,8 @@ EXPORT_SYMBOL(prepare_kernel_cred);
80295 +@@ -703,6 +727,8 @@ EXPORT_SYMBOL(prepare_kernel_cred);
80296 */
80297 int set_security_override(struct cred *new, u32 secid)
80298 {
80299 @@ -66712,7 +62795,7 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80300 return security_kernel_act_as(new, secid);
80301 }
80302 EXPORT_SYMBOL(set_security_override);
80303 -@@ -777,6 +803,8 @@ int set_security_override_from_ctx(struc
80304 +@@ -722,6 +748,8 @@ int set_security_override_from_ctx(struc
80305 u32 secid;
80306 int ret;
80307
80308 @@ -66721,10 +62804,192 @@ diff -urNp linux-2.6.32.48/kernel/cred.c linux-2.6.32.48/kernel/cred.c
80309 ret = security_secctx_to_secid(secctx, strlen(secctx), &secid);
80310 if (ret < 0)
80311 return ret;
80312 -diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80313 ---- linux-2.6.32.48/kernel/exit.c 2011-11-12 12:44:30.000000000 -0500
80314 -+++ linux-2.6.32.48/kernel/exit.c 2011-11-12 12:46:47.000000000 -0500
80315 -@@ -55,6 +55,10 @@
80316 +diff -urNp linux-3.0.8/kernel/debug/debug_core.c linux-3.0.8/kernel/debug/debug_core.c
80317 +--- linux-3.0.8/kernel/debug/debug_core.c 2011-07-21 22:17:23.000000000 -0400
80318 ++++ linux-3.0.8/kernel/debug/debug_core.c 2011-08-23 21:47:56.000000000 -0400
80319 +@@ -119,7 +119,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_loc
80320 + */
80321 + static atomic_t masters_in_kgdb;
80322 + static atomic_t slaves_in_kgdb;
80323 +-static atomic_t kgdb_break_tasklet_var;
80324 ++static atomic_unchecked_t kgdb_break_tasklet_var;
80325 + atomic_t kgdb_setting_breakpoint;
80326 +
80327 + struct task_struct *kgdb_usethread;
80328 +@@ -129,7 +129,7 @@ int kgdb_single_step;
80329 + static pid_t kgdb_sstep_pid;
80330 +
80331 + /* to keep track of the CPU which is doing the single stepping*/
80332 +-atomic_t kgdb_cpu_doing_single_step = ATOMIC_INIT(-1);
80333 ++atomic_unchecked_t kgdb_cpu_doing_single_step = ATOMIC_INIT(-1);
80334 +
80335 + /*
80336 + * If you are debugging a problem where roundup (the collection of
80337 +@@ -542,7 +542,7 @@ return_normal:
80338 + * kernel will only try for the value of sstep_tries before
80339 + * giving up and continuing on.
80340 + */
80341 +- if (atomic_read(&kgdb_cpu_doing_single_step) != -1 &&
80342 ++ if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1 &&
80343 + (kgdb_info[cpu].task &&
80344 + kgdb_info[cpu].task->pid != kgdb_sstep_pid) && --sstep_tries) {
80345 + atomic_set(&kgdb_active, -1);
80346 +@@ -636,8 +636,8 @@ cpu_master_loop:
80347 + }
80348 +
80349 + kgdb_restore:
80350 +- if (atomic_read(&kgdb_cpu_doing_single_step) != -1) {
80351 +- int sstep_cpu = atomic_read(&kgdb_cpu_doing_single_step);
80352 ++ if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1) {
80353 ++ int sstep_cpu = atomic_read_unchecked(&kgdb_cpu_doing_single_step);
80354 + if (kgdb_info[sstep_cpu].task)
80355 + kgdb_sstep_pid = kgdb_info[sstep_cpu].task->pid;
80356 + else
80357 +@@ -834,18 +834,18 @@ static void kgdb_unregister_callbacks(vo
80358 + static void kgdb_tasklet_bpt(unsigned long ing)
80359 + {
80360 + kgdb_breakpoint();
80361 +- atomic_set(&kgdb_break_tasklet_var, 0);
80362 ++ atomic_set_unchecked(&kgdb_break_tasklet_var, 0);
80363 + }
80364 +
80365 + static DECLARE_TASKLET(kgdb_tasklet_breakpoint, kgdb_tasklet_bpt, 0);
80366 +
80367 + void kgdb_schedule_breakpoint(void)
80368 + {
80369 +- if (atomic_read(&kgdb_break_tasklet_var) ||
80370 ++ if (atomic_read_unchecked(&kgdb_break_tasklet_var) ||
80371 + atomic_read(&kgdb_active) != -1 ||
80372 + atomic_read(&kgdb_setting_breakpoint))
80373 + return;
80374 +- atomic_inc(&kgdb_break_tasklet_var);
80375 ++ atomic_inc_unchecked(&kgdb_break_tasklet_var);
80376 + tasklet_schedule(&kgdb_tasklet_breakpoint);
80377 + }
80378 + EXPORT_SYMBOL_GPL(kgdb_schedule_breakpoint);
80379 +diff -urNp linux-3.0.8/kernel/debug/kdb/kdb_main.c linux-3.0.8/kernel/debug/kdb/kdb_main.c
80380 +--- linux-3.0.8/kernel/debug/kdb/kdb_main.c 2011-07-21 22:17:23.000000000 -0400
80381 ++++ linux-3.0.8/kernel/debug/kdb/kdb_main.c 2011-08-23 21:47:56.000000000 -0400
80382 +@@ -1980,7 +1980,7 @@ static int kdb_lsmod(int argc, const cha
80383 + list_for_each_entry(mod, kdb_modules, list) {
80384 +
80385 + kdb_printf("%-20s%8u 0x%p ", mod->name,
80386 +- mod->core_size, (void *)mod);
80387 ++ mod->core_size_rx + mod->core_size_rw, (void *)mod);
80388 + #ifdef CONFIG_MODULE_UNLOAD
80389 + kdb_printf("%4d ", module_refcount(mod));
80390 + #endif
80391 +@@ -1990,7 +1990,7 @@ static int kdb_lsmod(int argc, const cha
80392 + kdb_printf(" (Loading)");
80393 + else
80394 + kdb_printf(" (Live)");
80395 +- kdb_printf(" 0x%p", mod->module_core);
80396 ++ kdb_printf(" 0x%p 0x%p", mod->module_core_rx, mod->module_core_rw);
80397 +
80398 + #ifdef CONFIG_MODULE_UNLOAD
80399 + {
80400 +diff -urNp linux-3.0.8/kernel/events/core.c linux-3.0.8/kernel/events/core.c
80401 +--- linux-3.0.8/kernel/events/core.c 2011-10-24 08:05:21.000000000 -0400
80402 ++++ linux-3.0.8/kernel/events/core.c 2011-09-14 09:08:05.000000000 -0400
80403 +@@ -170,7 +170,7 @@ int perf_proc_update_handler(struct ctl_
80404 + return 0;
80405 + }
80406 +
80407 +-static atomic64_t perf_event_id;
80408 ++static atomic64_unchecked_t perf_event_id;
80409 +
80410 + static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
80411 + enum event_type_t event_type);
80412 +@@ -2488,7 +2488,7 @@ static void __perf_event_read(void *info
80413 +
80414 + static inline u64 perf_event_count(struct perf_event *event)
80415 + {
80416 +- return local64_read(&event->count) + atomic64_read(&event->child_count);
80417 ++ return local64_read(&event->count) + atomic64_read_unchecked(&event->child_count);
80418 + }
80419 +
80420 + static u64 perf_event_read(struct perf_event *event)
80421 +@@ -3023,9 +3023,9 @@ u64 perf_event_read_value(struct perf_ev
80422 + mutex_lock(&event->child_mutex);
80423 + total += perf_event_read(event);
80424 + *enabled += event->total_time_enabled +
80425 +- atomic64_read(&event->child_total_time_enabled);
80426 ++ atomic64_read_unchecked(&event->child_total_time_enabled);
80427 + *running += event->total_time_running +
80428 +- atomic64_read(&event->child_total_time_running);
80429 ++ atomic64_read_unchecked(&event->child_total_time_running);
80430 +
80431 + list_for_each_entry(child, &event->child_list, child_list) {
80432 + total += perf_event_read(child);
80433 +@@ -3388,10 +3388,10 @@ void perf_event_update_userpage(struct p
80434 + userpg->offset -= local64_read(&event->hw.prev_count);
80435 +
80436 + userpg->time_enabled = event->total_time_enabled +
80437 +- atomic64_read(&event->child_total_time_enabled);
80438 ++ atomic64_read_unchecked(&event->child_total_time_enabled);
80439 +
80440 + userpg->time_running = event->total_time_running +
80441 +- atomic64_read(&event->child_total_time_running);
80442 ++ atomic64_read_unchecked(&event->child_total_time_running);
80443 +
80444 + barrier();
80445 + ++userpg->lock;
80446 +@@ -4188,11 +4188,11 @@ static void perf_output_read_one(struct
80447 + values[n++] = perf_event_count(event);
80448 + if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
80449 + values[n++] = enabled +
80450 +- atomic64_read(&event->child_total_time_enabled);
80451 ++ atomic64_read_unchecked(&event->child_total_time_enabled);
80452 + }
80453 + if (read_format & PERF_FORMAT_TOTAL_TIME_RUNNING) {
80454 + values[n++] = running +
80455 +- atomic64_read(&event->child_total_time_running);
80456 ++ atomic64_read_unchecked(&event->child_total_time_running);
80457 + }
80458 + if (read_format & PERF_FORMAT_ID)
80459 + values[n++] = primary_event_id(event);
80460 +@@ -4833,12 +4833,12 @@ static void perf_event_mmap_event(struct
80461 + * need to add enough zero bytes after the string to handle
80462 + * the 64bit alignment we do later.
80463 + */
80464 +- buf = kzalloc(PATH_MAX + sizeof(u64), GFP_KERNEL);
80465 ++ buf = kzalloc(PATH_MAX, GFP_KERNEL);
80466 + if (!buf) {
80467 + name = strncpy(tmp, "//enomem", sizeof(tmp));
80468 + goto got_name;
80469 + }
80470 +- name = d_path(&file->f_path, buf, PATH_MAX);
80471 ++ name = d_path(&file->f_path, buf, PATH_MAX - sizeof(u64));
80472 + if (IS_ERR(name)) {
80473 + name = strncpy(tmp, "//toolong", sizeof(tmp));
80474 + goto got_name;
80475 +@@ -6190,7 +6190,7 @@ perf_event_alloc(struct perf_event_attr
80476 + event->parent = parent_event;
80477 +
80478 + event->ns = get_pid_ns(current->nsproxy->pid_ns);
80479 +- event->id = atomic64_inc_return(&perf_event_id);
80480 ++ event->id = atomic64_inc_return_unchecked(&perf_event_id);
80481 +
80482 + event->state = PERF_EVENT_STATE_INACTIVE;
80483 +
80484 +@@ -6713,10 +6713,10 @@ static void sync_child_event(struct perf
80485 + /*
80486 + * Add back the child's count to the parent's count:
80487 + */
80488 +- atomic64_add(child_val, &parent_event->child_count);
80489 +- atomic64_add(child_event->total_time_enabled,
80490 ++ atomic64_add_unchecked(child_val, &parent_event->child_count);
80491 ++ atomic64_add_unchecked(child_event->total_time_enabled,
80492 + &parent_event->child_total_time_enabled);
80493 +- atomic64_add(child_event->total_time_running,
80494 ++ atomic64_add_unchecked(child_event->total_time_running,
80495 + &parent_event->child_total_time_running);
80496 +
80497 + /*
80498 +diff -urNp linux-3.0.8/kernel/exit.c linux-3.0.8/kernel/exit.c
80499 +--- linux-3.0.8/kernel/exit.c 2011-07-21 22:17:23.000000000 -0400
80500 ++++ linux-3.0.8/kernel/exit.c 2011-08-23 21:48:14.000000000 -0400
80501 +@@ -57,6 +57,10 @@
80502 #include <asm/pgtable.h>
80503 #include <asm/mmu_context.h>
80504
80505 @@ -66734,8 +62999,8 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80506 +
80507 static void exit_mm(struct task_struct * tsk);
80508
80509 - static void __unhash_process(struct task_struct *p)
80510 -@@ -174,6 +178,10 @@ void release_task(struct task_struct * p
80511 + static void __unhash_process(struct task_struct *p, bool group_dead)
80512 +@@ -169,6 +173,10 @@ void release_task(struct task_struct * p
80513 struct task_struct *leader;
80514 int zap_leader;
80515 repeat:
80516 @@ -66745,8 +63010,8 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80517 +
80518 tracehook_prepare_release_task(p);
80519 /* don't need to get the RCU readlock here - the process is dead and
80520 - * can't be modifying its own credentials */
80521 -@@ -341,11 +349,22 @@ static void reparent_to_kthreadd(void)
80522 + * can't be modifying its own credentials. But shut RCU-lockdep up */
80523 +@@ -338,11 +346,22 @@ static void reparent_to_kthreadd(void)
80524 {
80525 write_lock_irq(&tasklist_lock);
80526
80527 @@ -66769,7 +63034,7 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80528 /* Set the exit signal to SIGCHLD so we signal init on exit */
80529 current->exit_signal = SIGCHLD;
80530
80531 -@@ -397,7 +416,7 @@ int allow_signal(int sig)
80532 +@@ -394,7 +413,7 @@ int allow_signal(int sig)
80533 * know it'll be handled, so that they don't get converted to
80534 * SIGKILL or just silently dropped.
80535 */
80536 @@ -66778,7 +63043,7 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80537 recalc_sigpending();
80538 spin_unlock_irq(&current->sighand->siglock);
80539 return 0;
80540 -@@ -433,6 +452,17 @@ void daemonize(const char *name, ...)
80541 +@@ -430,6 +449,17 @@ void daemonize(const char *name, ...)
80542 vsnprintf(current->comm, sizeof(current->comm), name, args);
80543 va_end(args);
80544
80545 @@ -66796,38 +63061,30 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80546 /*
80547 * If we were started as result of loading a module, close all of the
80548 * user space pages. We don't need them, and if we didn't close them
80549 -@@ -897,17 +927,17 @@ NORET_TYPE void do_exit(long code)
80550 +@@ -904,15 +934,8 @@ NORET_TYPE void do_exit(long code)
80551 struct task_struct *tsk = current;
80552 int group_dead;
80553
80554 - profile_task_exit(tsk);
80555 -
80556 - WARN_ON(atomic_read(&tsk->fs_excl));
80557 +- WARN_ON(blk_needs_flush_plug(tsk));
80558 -
80559 -+ /*
80560 -+ * Check this first since set_fs() below depends on
80561 -+ * current_thread_info(), which we better not access when we're in
80562 -+ * interrupt context. Other than that, we want to do the set_fs()
80563 -+ * as early as possible.
80564 -+ */
80565 if (unlikely(in_interrupt()))
80566 panic("Aiee, killing interrupt handler!");
80567 - if (unlikely(!tsk->pid))
80568 - panic("Attempted to kill the idle task!");
80569
80570 /*
80571 -- * If do_exit is called because this processes oopsed, it's possible
80572 -+ * If do_exit is called because this processes Oops'ed, it's possible
80573 - * that get_fs() was left as KERNEL_DS, so reset it to USER_DS before
80574 - * continuing. Amongst other possible reasons, this is to prevent
80575 - * mm_release()->clear_child_tid() from writing to a user-controlled
80576 -@@ -915,6 +945,13 @@ NORET_TYPE void do_exit(long code)
80577 + * If do_exit is called because this processes oopsed, it's possible
80578 +@@ -923,6 +946,14 @@ NORET_TYPE void do_exit(long code)
80579 */
80580 set_fs(USER_DS);
80581
80582 + profile_task_exit(tsk);
80583 +
80584 + WARN_ON(atomic_read(&tsk->fs_excl));
80585 ++ WARN_ON(blk_needs_flush_plug(tsk));
80586 +
80587 + if (unlikely(!tsk->pid))
80588 + panic("Attempted to kill the idle task!");
80589 @@ -66835,7 +63092,7 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80590 tracehook_report_exit(&code);
80591
80592 validate_creds_for_do_exit(tsk);
80593 -@@ -973,6 +1010,9 @@ NORET_TYPE void do_exit(long code)
80594 +@@ -983,6 +1014,9 @@ NORET_TYPE void do_exit(long code)
80595 tsk->exit_code = code;
80596 taskstats_exit(tsk, group_dead);
80597
80598 @@ -66845,19 +63102,10 @@ diff -urNp linux-2.6.32.48/kernel/exit.c linux-2.6.32.48/kernel/exit.c
80599 exit_mm(tsk);
80600
80601 if (group_dead)
80602 -@@ -1188,7 +1228,7 @@ static int wait_task_zombie(struct wait_
80603 -
80604 - if (unlikely(wo->wo_flags & WNOWAIT)) {
80605 - int exit_code = p->exit_code;
80606 -- int why, status;
80607 -+ int why;
80608 -
80609 - get_task_struct(p);
80610 - read_unlock(&tasklist_lock);
80611 -diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80612 ---- linux-2.6.32.48/kernel/fork.c 2011-11-12 12:44:30.000000000 -0500
80613 -+++ linux-2.6.32.48/kernel/fork.c 2011-11-12 12:46:47.000000000 -0500
80614 -@@ -253,7 +253,7 @@ static struct task_struct *dup_task_stru
80615 +diff -urNp linux-3.0.8/kernel/fork.c linux-3.0.8/kernel/fork.c
80616 +--- linux-3.0.8/kernel/fork.c 2011-07-21 22:17:23.000000000 -0400
80617 ++++ linux-3.0.8/kernel/fork.c 2011-08-25 17:23:36.000000000 -0400
80618 +@@ -286,7 +286,7 @@ static struct task_struct *dup_task_stru
80619 *stackend = STACK_END_MAGIC; /* for overflow detection */
80620
80621 #ifdef CONFIG_CC_STACKPROTECTOR
80622 @@ -66866,7 +63114,87 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80623 #endif
80624
80625 /* One for us, one for whoever does the "release_task()" (usually parent) */
80626 -@@ -293,8 +293,8 @@ static int dup_mmap(struct mm_struct *mm
80627 +@@ -308,13 +308,77 @@ out:
80628 + }
80629 +
80630 + #ifdef CONFIG_MMU
80631 ++static struct vm_area_struct *dup_vma(struct mm_struct *mm, struct vm_area_struct *mpnt)
80632 ++{
80633 ++ struct vm_area_struct *tmp;
80634 ++ unsigned long charge;
80635 ++ struct mempolicy *pol;
80636 ++ struct file *file;
80637 ++
80638 ++ charge = 0;
80639 ++ if (mpnt->vm_flags & VM_ACCOUNT) {
80640 ++ unsigned int len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
80641 ++ if (security_vm_enough_memory(len))
80642 ++ goto fail_nomem;
80643 ++ charge = len;
80644 ++ }
80645 ++ tmp = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
80646 ++ if (!tmp)
80647 ++ goto fail_nomem;
80648 ++ *tmp = *mpnt;
80649 ++ tmp->vm_mm = mm;
80650 ++ INIT_LIST_HEAD(&tmp->anon_vma_chain);
80651 ++ pol = mpol_dup(vma_policy(mpnt));
80652 ++ if (IS_ERR(pol))
80653 ++ goto fail_nomem_policy;
80654 ++ vma_set_policy(tmp, pol);
80655 ++ if (anon_vma_fork(tmp, mpnt))
80656 ++ goto fail_nomem_anon_vma_fork;
80657 ++ tmp->vm_flags &= ~VM_LOCKED;
80658 ++ tmp->vm_next = tmp->vm_prev = NULL;
80659 ++ tmp->vm_mirror = NULL;
80660 ++ file = tmp->vm_file;
80661 ++ if (file) {
80662 ++ struct inode *inode = file->f_path.dentry->d_inode;
80663 ++ struct address_space *mapping = file->f_mapping;
80664 ++
80665 ++ get_file(file);
80666 ++ if (tmp->vm_flags & VM_DENYWRITE)
80667 ++ atomic_dec(&inode->i_writecount);
80668 ++ mutex_lock(&mapping->i_mmap_mutex);
80669 ++ if (tmp->vm_flags & VM_SHARED)
80670 ++ mapping->i_mmap_writable++;
80671 ++ flush_dcache_mmap_lock(mapping);
80672 ++ /* insert tmp into the share list, just after mpnt */
80673 ++ vma_prio_tree_add(tmp, mpnt);
80674 ++ flush_dcache_mmap_unlock(mapping);
80675 ++ mutex_unlock(&mapping->i_mmap_mutex);
80676 ++ }
80677 ++
80678 ++ /*
80679 ++ * Clear hugetlb-related page reserves for children. This only
80680 ++ * affects MAP_PRIVATE mappings. Faults generated by the child
80681 ++ * are not guaranteed to succeed, even if read-only
80682 ++ */
80683 ++ if (is_vm_hugetlb_page(tmp))
80684 ++ reset_vma_resv_huge_pages(tmp);
80685 ++
80686 ++ return tmp;
80687 ++
80688 ++fail_nomem_anon_vma_fork:
80689 ++ mpol_put(pol);
80690 ++fail_nomem_policy:
80691 ++ kmem_cache_free(vm_area_cachep, tmp);
80692 ++fail_nomem:
80693 ++ vm_unacct_memory(charge);
80694 ++ return NULL;
80695 ++}
80696 ++
80697 + static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
80698 + {
80699 + struct vm_area_struct *mpnt, *tmp, *prev, **pprev;
80700 + struct rb_node **rb_link, *rb_parent;
80701 + int retval;
80702 +- unsigned long charge;
80703 +- struct mempolicy *pol;
80704 +
80705 + down_write(&oldmm->mmap_sem);
80706 + flush_cache_dup_mm(oldmm);
80707 +@@ -326,8 +390,8 @@ static int dup_mmap(struct mm_struct *mm
80708 mm->locked_vm = 0;
80709 mm->mmap = NULL;
80710 mm->mmap_cache = NULL;
80711 @@ -66877,15 +63205,76 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80712 mm->map_count = 0;
80713 cpumask_clear(mm_cpumask(mm));
80714 mm->mm_rb = RB_ROOT;
80715 -@@ -335,6 +335,7 @@ static int dup_mmap(struct mm_struct *mm
80716 - tmp->vm_flags &= ~VM_LOCKED;
80717 - tmp->vm_mm = mm;
80718 - tmp->vm_next = tmp->vm_prev = NULL;
80719 -+ tmp->vm_mirror = NULL;
80720 - anon_vma_link(tmp);
80721 - file = tmp->vm_file;
80722 - if (file) {
80723 -@@ -384,6 +385,31 @@ static int dup_mmap(struct mm_struct *mm
80724 +@@ -343,8 +407,6 @@ static int dup_mmap(struct mm_struct *mm
80725 +
80726 + prev = NULL;
80727 + for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
80728 +- struct file *file;
80729 +-
80730 + if (mpnt->vm_flags & VM_DONTCOPY) {
80731 + long pages = vma_pages(mpnt);
80732 + mm->total_vm -= pages;
80733 +@@ -352,55 +414,13 @@ static int dup_mmap(struct mm_struct *mm
80734 + -pages);
80735 + continue;
80736 + }
80737 +- charge = 0;
80738 +- if (mpnt->vm_flags & VM_ACCOUNT) {
80739 +- unsigned int len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
80740 +- if (security_vm_enough_memory(len))
80741 +- goto fail_nomem;
80742 +- charge = len;
80743 +- }
80744 +- tmp = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
80745 +- if (!tmp)
80746 +- goto fail_nomem;
80747 +- *tmp = *mpnt;
80748 +- INIT_LIST_HEAD(&tmp->anon_vma_chain);
80749 +- pol = mpol_dup(vma_policy(mpnt));
80750 +- retval = PTR_ERR(pol);
80751 +- if (IS_ERR(pol))
80752 +- goto fail_nomem_policy;
80753 +- vma_set_policy(tmp, pol);
80754 +- tmp->vm_mm = mm;
80755 +- if (anon_vma_fork(tmp, mpnt))
80756 +- goto fail_nomem_anon_vma_fork;
80757 +- tmp->vm_flags &= ~VM_LOCKED;
80758 +- tmp->vm_next = tmp->vm_prev = NULL;
80759 +- file = tmp->vm_file;
80760 +- if (file) {
80761 +- struct inode *inode = file->f_path.dentry->d_inode;
80762 +- struct address_space *mapping = file->f_mapping;
80763 +-
80764 +- get_file(file);
80765 +- if (tmp->vm_flags & VM_DENYWRITE)
80766 +- atomic_dec(&inode->i_writecount);
80767 +- mutex_lock(&mapping->i_mmap_mutex);
80768 +- if (tmp->vm_flags & VM_SHARED)
80769 +- mapping->i_mmap_writable++;
80770 +- flush_dcache_mmap_lock(mapping);
80771 +- /* insert tmp into the share list, just after mpnt */
80772 +- vma_prio_tree_add(tmp, mpnt);
80773 +- flush_dcache_mmap_unlock(mapping);
80774 +- mutex_unlock(&mapping->i_mmap_mutex);
80775 ++ tmp = dup_vma(mm, mpnt);
80776 ++ if (!tmp) {
80777 ++ retval = -ENOMEM;
80778 ++ goto out;
80779 + }
80780 +
80781 + /*
80782 +- * Clear hugetlb-related page reserves for children. This only
80783 +- * affects MAP_PRIVATE mappings. Faults generated by the child
80784 +- * are not guaranteed to succeed, even if read-only
80785 +- */
80786 +- if (is_vm_hugetlb_page(tmp))
80787 +- reset_vma_resv_huge_pages(tmp);
80788 +-
80789 +- /*
80790 + * Link in the new vma and copy the page table entries.
80791 + */
80792 + *pprev = tmp;
80793 +@@ -421,6 +441,31 @@ static int dup_mmap(struct mm_struct *mm
80794 if (retval)
80795 goto out;
80796 }
80797 @@ -66917,13 +63306,28 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80798 /* a new mm has just been created */
80799 arch_dup_mmap(oldmm, mm);
80800 retval = 0;
80801 -@@ -734,13 +760,14 @@ static int copy_fs(unsigned long clone_f
80802 - write_unlock(&fs->lock);
80803 +@@ -429,14 +474,6 @@ out:
80804 + flush_tlb_mm(oldmm);
80805 + up_write(&oldmm->mmap_sem);
80806 + return retval;
80807 +-fail_nomem_anon_vma_fork:
80808 +- mpol_put(pol);
80809 +-fail_nomem_policy:
80810 +- kmem_cache_free(vm_area_cachep, tmp);
80811 +-fail_nomem:
80812 +- retval = -ENOMEM;
80813 +- vm_unacct_memory(charge);
80814 +- goto out;
80815 + }
80816 +
80817 + static inline int mm_alloc_pgd(struct mm_struct * mm)
80818 +@@ -836,13 +873,14 @@ static int copy_fs(unsigned long clone_f
80819 + spin_unlock(&fs->lock);
80820 return -EAGAIN;
80821 }
80822 - fs->users++;
80823 + atomic_inc(&fs->users);
80824 - write_unlock(&fs->lock);
80825 + spin_unlock(&fs->lock);
80826 return 0;
80827 }
80828 tsk->fs = copy_fs_struct(fs);
80829 @@ -66933,7 +63337,7 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80830 return 0;
80831 }
80832
80833 -@@ -1033,12 +1060,16 @@ static struct task_struct *copy_process(
80834 +@@ -1104,12 +1142,16 @@ static struct task_struct *copy_process(
80835 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
80836 #endif
80837 retval = -EAGAIN;
80838 @@ -66941,27 +63345,27 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80839 + gr_learn_resource(p, RLIMIT_NPROC, atomic_read(&p->real_cred->user->processes), 0);
80840 +
80841 if (atomic_read(&p->real_cred->user->processes) >=
80842 - p->signal->rlim[RLIMIT_NPROC].rlim_cur) {
80843 + task_rlimit(p, RLIMIT_NPROC)) {
80844 - if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
80845 - p->real_cred->user != INIT_USER)
80846 + if (p->real_cred->user != INIT_USER &&
80847 -+ !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN))
80848 ++ !capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE))
80849 goto bad_fork_free;
80850 }
80851 + current->flags &= ~PF_NPROC_EXCEEDED;
80852
80853 retval = copy_creds(p, clone_flags);
80854 if (retval < 0)
80855 -@@ -1183,6 +1214,8 @@ static struct task_struct *copy_process(
80856 - goto bad_fork_free_pid;
80857 - }
80858 +@@ -1250,6 +1292,8 @@ static struct task_struct *copy_process(
80859 + if (clone_flags & CLONE_THREAD)
80860 + p->tgid = current->tgid;
80861
80862 + gr_copy_label(p);
80863 +
80864 p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? child_tidptr : NULL;
80865 /*
80866 * Clear TID on mm_release()?
80867 -@@ -1333,6 +1366,8 @@ bad_fork_cleanup_count:
80868 +@@ -1414,6 +1458,8 @@ bad_fork_cleanup_count:
80869 bad_fork_free:
80870 free_task(p);
80871 fork_out:
80872 @@ -66970,7 +63374,7 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80873 return ERR_PTR(retval);
80874 }
80875
80876 -@@ -1426,6 +1461,8 @@ long do_fork(unsigned long clone_flags,
80877 +@@ -1502,6 +1548,8 @@ long do_fork(unsigned long clone_flags,
80878 if (clone_flags & CLONE_PARENT_SETTID)
80879 put_user(nr, parent_tidptr);
80880
80881 @@ -66979,7 +63383,7 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80882 if (clone_flags & CLONE_VFORK) {
80883 p->vfork_done = &vfork;
80884 init_completion(&vfork);
80885 -@@ -1558,7 +1595,7 @@ static int unshare_fs(unsigned long unsh
80886 +@@ -1610,7 +1658,7 @@ static int unshare_fs(unsigned long unsh
80887 return 0;
80888
80889 /* don't need lock here; in the worst case we'll do useless copy */
80890 @@ -66988,9 +63392,9 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80891 return 0;
80892
80893 *new_fsp = copy_fs_struct(fs);
80894 -@@ -1681,7 +1718,8 @@ SYSCALL_DEFINE1(unshare, unsigned long,
80895 +@@ -1697,7 +1745,8 @@ SYSCALL_DEFINE1(unshare, unsigned long,
80896 fs = current->fs;
80897 - write_lock(&fs->lock);
80898 + spin_lock(&fs->lock);
80899 current->fs = new_fs;
80900 - if (--fs->users)
80901 + gr_set_chroot_entries(current, &current->fs->root);
80902 @@ -66998,9 +63402,9 @@ diff -urNp linux-2.6.32.48/kernel/fork.c linux-2.6.32.48/kernel/fork.c
80903 new_fs = NULL;
80904 else
80905 new_fs = fs;
80906 -diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
80907 ---- linux-2.6.32.48/kernel/futex.c 2011-11-12 12:44:30.000000000 -0500
80908 -+++ linux-2.6.32.48/kernel/futex.c 2011-11-12 12:46:47.000000000 -0500
80909 +diff -urNp linux-3.0.8/kernel/futex.c linux-3.0.8/kernel/futex.c
80910 +--- linux-3.0.8/kernel/futex.c 2011-10-24 08:05:21.000000000 -0400
80911 ++++ linux-3.0.8/kernel/futex.c 2011-08-23 21:48:14.000000000 -0400
80912 @@ -54,6 +54,7 @@
80913 #include <linux/mount.h>
80914 #include <linux/pagemap.h>
80915 @@ -67009,8 +63413,8 @@ diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
80916 #include <linux/signal.h>
80917 #include <linux/module.h>
80918 #include <linux/magic.h>
80919 -@@ -223,6 +224,11 @@ get_futex_key(u32 __user *uaddr, int fsh
80920 - struct page *page;
80921 +@@ -238,6 +239,11 @@ get_futex_key(u32 __user *uaddr, int fsh
80922 + struct page *page, *page_head;
80923 int err, ro = 0;
80924
80925 +#ifdef CONFIG_PAX_SEGMEXEC
80926 @@ -67021,26 +63425,17 @@ diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
80927 /*
80928 * The futex address must be "naturally" aligned.
80929 */
80930 -@@ -1819,6 +1825,8 @@ static int futex_wait(u32 __user *uaddr,
80931 - struct futex_q q;
80932 +@@ -1863,6 +1869,8 @@ static int futex_wait(u32 __user *uaddr,
80933 + struct futex_q q = futex_q_init;
80934 int ret;
80935
80936 + pax_track_stack();
80937 +
80938 if (!bitset)
80939 return -EINVAL;
80940 -
80941 -@@ -1871,7 +1879,7 @@ retry:
80942 -
80943 - restart = &current_thread_info()->restart_block;
80944 - restart->fn = futex_wait_restart;
80945 -- restart->futex.uaddr = (u32 *)uaddr;
80946 -+ restart->futex.uaddr = uaddr;
80947 - restart->futex.val = val;
80948 - restart->futex.time = abs_time->tv64;
80949 - restart->futex.bitset = bitset;
80950 -@@ -2233,6 +2241,8 @@ static int futex_wait_requeue_pi(u32 __u
80951 - struct futex_q q;
80952 + q.bitset = bitset;
80953 +@@ -2259,6 +2267,8 @@ static int futex_wait_requeue_pi(u32 __u
80954 + struct futex_q q = futex_q_init;
80955 int res, ret;
80956
80957 + pax_track_stack();
80958 @@ -67048,7 +63443,7 @@ diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
80959 if (!bitset)
80960 return -EINVAL;
80961
80962 -@@ -2407,7 +2417,9 @@ SYSCALL_DEFINE3(get_robust_list, int, pi
80963 +@@ -2431,7 +2441,9 @@ SYSCALL_DEFINE3(get_robust_list, int, pi
80964 {
80965 struct robust_list_head __user *head;
80966 unsigned long ret;
80967 @@ -67058,7 +63453,7 @@ diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
80968
80969 if (!futex_cmpxchg_enabled)
80970 return -ENOSYS;
80971 -@@ -2423,11 +2435,16 @@ SYSCALL_DEFINE3(get_robust_list, int, pi
80972 +@@ -2447,6 +2459,10 @@ SYSCALL_DEFINE3(get_robust_list, int, pi
80973 if (!p)
80974 goto err_unlock;
80975 ret = -EPERM;
80976 @@ -67067,24 +63462,17 @@ diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
80977 + goto err_unlock;
80978 +#else
80979 pcred = __task_cred(p);
80980 - if (cred->euid != pcred->euid &&
80981 - cred->euid != pcred->uid &&
80982 - !capable(CAP_SYS_PTRACE))
80983 + /* If victim is in different user_ns, then uids are not
80984 + comparable, so we must have CAP_SYS_PTRACE */
80985 +@@ -2461,6 +2477,7 @@ SYSCALL_DEFINE3(get_robust_list, int, pi
80986 + !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
80987 goto err_unlock;
80988 + ok:
80989 +#endif
80990 head = p->robust_list;
80991 rcu_read_unlock();
80992 }
80993 -@@ -2489,7 +2506,7 @@ retry:
80994 - */
80995 - static inline int fetch_robust_entry(struct robust_list __user **entry,
80996 - struct robust_list __user * __user *head,
80997 -- int *pi)
80998 -+ unsigned int *pi)
80999 - {
81000 - unsigned long uentry;
81001 -
81002 -@@ -2670,6 +2687,7 @@ static int __init futex_init(void)
81003 +@@ -2712,6 +2729,7 @@ static int __init futex_init(void)
81004 {
81005 u32 curval;
81006 int i;
81007 @@ -67092,20 +63480,21 @@ diff -urNp linux-2.6.32.48/kernel/futex.c linux-2.6.32.48/kernel/futex.c
81008
81009 /*
81010 * This will fail and we want it. Some arch implementations do
81011 -@@ -2681,7 +2699,10 @@ static int __init futex_init(void)
81012 - * implementation, the non functional ones will return
81013 +@@ -2723,8 +2741,11 @@ static int __init futex_init(void)
81014 + * implementation, the non-functional ones will return
81015 * -ENOSYS.
81016 */
81017 + oldfs = get_fs();
81018 + set_fs(USER_DS);
81019 - curval = cmpxchg_futex_value_locked(NULL, 0, 0);
81020 -+ set_fs(oldfs);
81021 - if (curval == -EFAULT)
81022 + if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT)
81023 futex_cmpxchg_enabled = 1;
81024 ++ set_fs(oldfs);
81025
81026 -diff -urNp linux-2.6.32.48/kernel/futex_compat.c linux-2.6.32.48/kernel/futex_compat.c
81027 ---- linux-2.6.32.48/kernel/futex_compat.c 2009-12-02 22:51:21.000000000 -0500
81028 -+++ linux-2.6.32.48/kernel/futex_compat.c 2011-11-12 12:46:47.000000000 -0500
81029 + for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
81030 + plist_head_init(&futex_queues[i].chain, &futex_queues[i].lock);
81031 +diff -urNp linux-3.0.8/kernel/futex_compat.c linux-3.0.8/kernel/futex_compat.c
81032 +--- linux-3.0.8/kernel/futex_compat.c 2011-07-21 22:17:23.000000000 -0400
81033 ++++ linux-3.0.8/kernel/futex_compat.c 2011-08-23 21:48:14.000000000 -0400
81034 @@ -10,6 +10,7 @@
81035 #include <linux/compat.h>
81036 #include <linux/nsproxy.h>
81037 @@ -67114,7 +63503,7 @@ diff -urNp linux-2.6.32.48/kernel/futex_compat.c linux-2.6.32.48/kernel/futex_co
81038
81039 #include <asm/uaccess.h>
81040
81041 -@@ -135,7 +136,10 @@ compat_sys_get_robust_list(int pid, comp
81042 +@@ -136,7 +137,10 @@ compat_sys_get_robust_list(int pid, comp
81043 {
81044 struct compat_robust_list_head __user *head;
81045 unsigned long ret;
81046 @@ -67126,7 +63515,7 @@ diff -urNp linux-2.6.32.48/kernel/futex_compat.c linux-2.6.32.48/kernel/futex_co
81047
81048 if (!futex_cmpxchg_enabled)
81049 return -ENOSYS;
81050 -@@ -151,11 +155,16 @@ compat_sys_get_robust_list(int pid, comp
81051 +@@ -152,6 +156,10 @@ compat_sys_get_robust_list(int pid, comp
81052 if (!p)
81053 goto err_unlock;
81054 ret = -EPERM;
81055 @@ -67135,17 +63524,19 @@ diff -urNp linux-2.6.32.48/kernel/futex_compat.c linux-2.6.32.48/kernel/futex_co
81056 + goto err_unlock;
81057 +#else
81058 pcred = __task_cred(p);
81059 - if (cred->euid != pcred->euid &&
81060 - cred->euid != pcred->uid &&
81061 - !capable(CAP_SYS_PTRACE))
81062 + /* If victim is in different user_ns, then uids are not
81063 + comparable, so we must have CAP_SYS_PTRACE */
81064 +@@ -166,6 +174,7 @@ compat_sys_get_robust_list(int pid, comp
81065 + !ns_capable(pcred->user->user_ns, CAP_SYS_PTRACE))
81066 goto err_unlock;
81067 + ok:
81068 +#endif
81069 head = p->compat_robust_list;
81070 - read_unlock(&tasklist_lock);
81071 + rcu_read_unlock();
81072 }
81073 -diff -urNp linux-2.6.32.48/kernel/gcov/base.c linux-2.6.32.48/kernel/gcov/base.c
81074 ---- linux-2.6.32.48/kernel/gcov/base.c 2009-12-02 22:51:21.000000000 -0500
81075 -+++ linux-2.6.32.48/kernel/gcov/base.c 2011-11-12 12:46:47.000000000 -0500
81076 +diff -urNp linux-3.0.8/kernel/gcov/base.c linux-3.0.8/kernel/gcov/base.c
81077 +--- linux-3.0.8/kernel/gcov/base.c 2011-07-21 22:17:23.000000000 -0400
81078 ++++ linux-3.0.8/kernel/gcov/base.c 2011-08-23 21:47:56.000000000 -0400
81079 @@ -102,11 +102,6 @@ void gcov_enable_events(void)
81080 }
81081
81082 @@ -67167,9 +63558,9 @@ diff -urNp linux-2.6.32.48/kernel/gcov/base.c linux-2.6.32.48/kernel/gcov/base.c
81083 if (prev)
81084 prev->next = info->next;
81085 else
81086 -diff -urNp linux-2.6.32.48/kernel/hrtimer.c linux-2.6.32.48/kernel/hrtimer.c
81087 ---- linux-2.6.32.48/kernel/hrtimer.c 2011-11-12 12:44:30.000000000 -0500
81088 -+++ linux-2.6.32.48/kernel/hrtimer.c 2011-11-12 12:46:47.000000000 -0500
81089 +diff -urNp linux-3.0.8/kernel/hrtimer.c linux-3.0.8/kernel/hrtimer.c
81090 +--- linux-3.0.8/kernel/hrtimer.c 2011-07-21 22:17:23.000000000 -0400
81091 ++++ linux-3.0.8/kernel/hrtimer.c 2011-08-23 21:47:56.000000000 -0400
81092 @@ -1391,7 +1391,7 @@ void hrtimer_peek_ahead_timers(void)
81093 local_irq_restore(flags);
81094 }
81095 @@ -67179,9 +63570,35 @@ diff -urNp linux-2.6.32.48/kernel/hrtimer.c linux-2.6.32.48/kernel/hrtimer.c
81096 {
81097 hrtimer_peek_ahead_timers();
81098 }
81099 -diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81100 ---- linux-2.6.32.48/kernel/kallsyms.c 2009-12-02 22:51:21.000000000 -0500
81101 -+++ linux-2.6.32.48/kernel/kallsyms.c 2011-11-12 12:46:47.000000000 -0500
81102 +diff -urNp linux-3.0.8/kernel/jump_label.c linux-3.0.8/kernel/jump_label.c
81103 +--- linux-3.0.8/kernel/jump_label.c 2011-07-21 22:17:23.000000000 -0400
81104 ++++ linux-3.0.8/kernel/jump_label.c 2011-08-23 21:47:56.000000000 -0400
81105 +@@ -55,7 +55,9 @@ jump_label_sort_entries(struct jump_entr
81106 +
81107 + size = (((unsigned long)stop - (unsigned long)start)
81108 + / sizeof(struct jump_entry));
81109 ++ pax_open_kernel();
81110 + sort(start, size, sizeof(struct jump_entry), jump_label_cmp, NULL);
81111 ++ pax_close_kernel();
81112 + }
81113 +
81114 + static void jump_label_update(struct jump_label_key *key, int enable);
81115 +@@ -297,10 +299,12 @@ static void jump_label_invalidate_module
81116 + struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
81117 + struct jump_entry *iter;
81118 +
81119 ++ pax_open_kernel();
81120 + for (iter = iter_start; iter < iter_stop; iter++) {
81121 + if (within_module_init(iter->code, mod))
81122 + iter->code = 0;
81123 + }
81124 ++ pax_close_kernel();
81125 + }
81126 +
81127 + static int
81128 +diff -urNp linux-3.0.8/kernel/kallsyms.c linux-3.0.8/kernel/kallsyms.c
81129 +--- linux-3.0.8/kernel/kallsyms.c 2011-07-21 22:17:23.000000000 -0400
81130 ++++ linux-3.0.8/kernel/kallsyms.c 2011-08-23 21:48:14.000000000 -0400
81131 @@ -11,6 +11,9 @@
81132 * Changed the compression method from stem compression to "table lookup"
81133 * compression (see scripts/kallsyms.c for a more complete description)
81134 @@ -67192,7 +63609,7 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81135 #include <linux/kallsyms.h>
81136 #include <linux/module.h>
81137 #include <linux/init.h>
81138 -@@ -51,12 +54,33 @@ extern const unsigned long kallsyms_mark
81139 +@@ -53,12 +56,33 @@ extern const unsigned long kallsyms_mark
81140
81141 static inline int is_kernel_inittext(unsigned long addr)
81142 {
81143 @@ -67226,7 +63643,7 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81144 static inline int is_kernel_text(unsigned long addr)
81145 {
81146 if ((addr >= (unsigned long)_stext && addr <= (unsigned long)_etext) ||
81147 -@@ -67,13 +91,28 @@ static inline int is_kernel_text(unsigne
81148 +@@ -69,13 +93,28 @@ static inline int is_kernel_text(unsigne
81149
81150 static inline int is_kernel(unsigned long addr)
81151 {
81152 @@ -67241,7 +63658,7 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81153 +#endif
81154 +
81155 return 1;
81156 - return in_gate_area_no_task(addr);
81157 + return in_gate_area_no_mm(addr);
81158 }
81159
81160 static int is_ksym_addr(unsigned long addr)
81161 @@ -67255,7 +63672,7 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81162 if (all_var)
81163 return is_kernel(addr);
81164
81165 -@@ -413,7 +452,6 @@ static unsigned long get_ksymbol_core(st
81166 +@@ -454,7 +493,6 @@ static unsigned long get_ksymbol_core(st
81167
81168 static void reset_iter(struct kallsym_iter *iter, loff_t new_pos)
81169 {
81170 @@ -67263,7 +63680,7 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81171 iter->nameoff = get_symbol_offset(new_pos);
81172 iter->pos = new_pos;
81173 }
81174 -@@ -461,6 +499,11 @@ static int s_show(struct seq_file *m, vo
81175 +@@ -502,6 +540,11 @@ static int s_show(struct seq_file *m, vo
81176 {
81177 struct kallsym_iter *iter = m->private;
81178
81179 @@ -67275,7 +63692,7 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81180 /* Some debugging symbols have no name. Ignore them. */
81181 if (!iter->name[0])
81182 return 0;
81183 -@@ -501,7 +544,7 @@ static int kallsyms_open(struct inode *i
81184 +@@ -540,7 +583,7 @@ static int kallsyms_open(struct inode *i
81185 struct kallsym_iter *iter;
81186 int ret;
81187
81188 @@ -67284,10 +63701,10 @@ diff -urNp linux-2.6.32.48/kernel/kallsyms.c linux-2.6.32.48/kernel/kallsyms.c
81189 if (!iter)
81190 return -ENOMEM;
81191 reset_iter(iter, 0);
81192 -diff -urNp linux-2.6.32.48/kernel/kexec.c linux-2.6.32.48/kernel/kexec.c
81193 ---- linux-2.6.32.48/kernel/kexec.c 2009-12-02 22:51:21.000000000 -0500
81194 -+++ linux-2.6.32.48/kernel/kexec.c 2011-11-12 12:46:47.000000000 -0500
81195 -@@ -1028,7 +1028,8 @@ asmlinkage long compat_sys_kexec_load(un
81196 +diff -urNp linux-3.0.8/kernel/kexec.c linux-3.0.8/kernel/kexec.c
81197 +--- linux-3.0.8/kernel/kexec.c 2011-07-21 22:17:23.000000000 -0400
81198 ++++ linux-3.0.8/kernel/kexec.c 2011-10-06 04:17:55.000000000 -0400
81199 +@@ -1033,7 +1033,8 @@ asmlinkage long compat_sys_kexec_load(un
81200 unsigned long flags)
81201 {
81202 struct compat_kexec_segment in;
81203 @@ -67297,92 +63714,10 @@ diff -urNp linux-2.6.32.48/kernel/kexec.c linux-2.6.32.48/kernel/kexec.c
81204 unsigned long i, result;
81205
81206 /* Don't allow clients that don't understand the native
81207 -diff -urNp linux-2.6.32.48/kernel/kgdb.c linux-2.6.32.48/kernel/kgdb.c
81208 ---- linux-2.6.32.48/kernel/kgdb.c 2011-11-12 12:44:30.000000000 -0500
81209 -+++ linux-2.6.32.48/kernel/kgdb.c 2011-11-12 12:46:47.000000000 -0500
81210 -@@ -86,7 +86,7 @@ static int kgdb_io_module_registered;
81211 - /* Guard for recursive entry */
81212 - static int exception_level;
81213 -
81214 --static struct kgdb_io *kgdb_io_ops;
81215 -+static const struct kgdb_io *kgdb_io_ops;
81216 - static DEFINE_SPINLOCK(kgdb_registration_lock);
81217 -
81218 - /* kgdb console driver is loaded */
81219 -@@ -123,7 +123,7 @@ atomic_t kgdb_active = ATOMIC_INIT(-1)
81220 - */
81221 - static atomic_t passive_cpu_wait[NR_CPUS];
81222 - static atomic_t cpu_in_kgdb[NR_CPUS];
81223 --atomic_t kgdb_setting_breakpoint;
81224 -+atomic_unchecked_t kgdb_setting_breakpoint;
81225 -
81226 - struct task_struct *kgdb_usethread;
81227 - struct task_struct *kgdb_contthread;
81228 -@@ -140,7 +140,7 @@ static unsigned long gdb_regs[(NUMREGBY
81229 - sizeof(unsigned long)];
81230 -
81231 - /* to keep track of the CPU which is doing the single stepping*/
81232 --atomic_t kgdb_cpu_doing_single_step = ATOMIC_INIT(-1);
81233 -+atomic_unchecked_t kgdb_cpu_doing_single_step = ATOMIC_INIT(-1);
81234 -
81235 - /*
81236 - * If you are debugging a problem where roundup (the collection of
81237 -@@ -815,7 +815,7 @@ static int kgdb_io_ready(int print_wait)
81238 - return 0;
81239 - if (kgdb_connected)
81240 - return 1;
81241 -- if (atomic_read(&kgdb_setting_breakpoint))
81242 -+ if (atomic_read_unchecked(&kgdb_setting_breakpoint))
81243 - return 1;
81244 - if (print_wait)
81245 - printk(KERN_CRIT "KGDB: Waiting for remote debugger\n");
81246 -@@ -1426,8 +1426,8 @@ acquirelock:
81247 - * instance of the exception handler wanted to come into the
81248 - * debugger on a different CPU via a single step
81249 - */
81250 -- if (atomic_read(&kgdb_cpu_doing_single_step) != -1 &&
81251 -- atomic_read(&kgdb_cpu_doing_single_step) != cpu) {
81252 -+ if (atomic_read_unchecked(&kgdb_cpu_doing_single_step) != -1 &&
81253 -+ atomic_read_unchecked(&kgdb_cpu_doing_single_step) != cpu) {
81254 -
81255 - atomic_set(&kgdb_active, -1);
81256 - touch_softlockup_watchdog();
81257 -@@ -1634,7 +1634,7 @@ static void kgdb_initial_breakpoint(void
81258 - *
81259 - * Register it with the KGDB core.
81260 - */
81261 --int kgdb_register_io_module(struct kgdb_io *new_kgdb_io_ops)
81262 -+int kgdb_register_io_module(const struct kgdb_io *new_kgdb_io_ops)
81263 - {
81264 - int err;
81265 -
81266 -@@ -1679,7 +1679,7 @@ EXPORT_SYMBOL_GPL(kgdb_register_io_modul
81267 - *
81268 - * Unregister it with the KGDB core.
81269 - */
81270 --void kgdb_unregister_io_module(struct kgdb_io *old_kgdb_io_ops)
81271 -+void kgdb_unregister_io_module(const struct kgdb_io *old_kgdb_io_ops)
81272 - {
81273 - BUG_ON(kgdb_connected);
81274 -
81275 -@@ -1712,11 +1712,11 @@ EXPORT_SYMBOL_GPL(kgdb_unregister_io_mod
81276 - */
81277 - void kgdb_breakpoint(void)
81278 - {
81279 -- atomic_set(&kgdb_setting_breakpoint, 1);
81280 -+ atomic_set_unchecked(&kgdb_setting_breakpoint, 1);
81281 - wmb(); /* Sync point before breakpoint */
81282 - arch_kgdb_breakpoint();
81283 - wmb(); /* Sync point after breakpoint */
81284 -- atomic_set(&kgdb_setting_breakpoint, 0);
81285 -+ atomic_set_unchecked(&kgdb_setting_breakpoint, 0);
81286 - }
81287 - EXPORT_SYMBOL_GPL(kgdb_breakpoint);
81288 -
81289 -diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
81290 ---- linux-2.6.32.48/kernel/kmod.c 2011-11-12 12:44:30.000000000 -0500
81291 -+++ linux-2.6.32.48/kernel/kmod.c 2011-11-12 12:46:47.000000000 -0500
81292 -@@ -65,13 +65,12 @@ char modprobe_path[KMOD_PATH_LEN] = "/sb
81293 +diff -urNp linux-3.0.8/kernel/kmod.c linux-3.0.8/kernel/kmod.c
81294 +--- linux-3.0.8/kernel/kmod.c 2011-07-21 22:17:23.000000000 -0400
81295 ++++ linux-3.0.8/kernel/kmod.c 2011-10-06 04:17:55.000000000 -0400
81296 +@@ -73,13 +73,12 @@ char modprobe_path[KMOD_PATH_LEN] = "/sb
81297 * If module auto-loading support is disabled then this function
81298 * becomes a no-operation.
81299 */
81300 @@ -67398,9 +63733,9 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
81301 static char *envp[] = { "HOME=/",
81302 "TERM=linux",
81303 "PATH=/sbin:/usr/sbin:/bin:/usr/bin",
81304 -@@ -84,12 +83,24 @@ int __request_module(bool wait, const ch
81305 - if (ret)
81306 - return ret;
81307 +@@ -88,9 +87,7 @@ int __request_module(bool wait, const ch
81308 + #define MAX_KMOD_CONCURRENT 50 /* Completely arbitrary value - KAO */
81309 + static int kmod_loop_msg;
81310
81311 - va_start(args, fmt);
81312 - ret = vsnprintf(module_name, MODULE_NAME_LEN, fmt, args);
81313 @@ -67409,6 +63744,10 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
81314 if (ret >= MODULE_NAME_LEN)
81315 return -ENAMETOOLONG;
81316
81317 +@@ -98,6 +95,20 @@ int __request_module(bool wait, const ch
81318 + if (ret)
81319 + return ret;
81320 +
81321 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
81322 + if (!current_uid()) {
81323 + /* hack to workaround consolekit/udisks stupidity */
81324 @@ -67426,7 +63765,7 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
81325 /* If modprobe needs a service that is in a module, we get a recursive
81326 * loop. Limit the number of running kmod threads to max_threads/2 or
81327 * MAX_KMOD_CONCURRENT, whichever is the smaller. A cleaner method
81328 -@@ -123,6 +134,48 @@ int __request_module(bool wait, const ch
81329 +@@ -131,6 +142,47 @@ int __request_module(bool wait, const ch
81330 atomic_dec(&kmod_concurrent);
81331 return ret;
81332 }
81333 @@ -67471,11 +63810,10 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
81334 + return ret;
81335 +}
81336 +
81337 -+
81338 EXPORT_SYMBOL(__request_module);
81339 #endif /* CONFIG_MODULES */
81340
81341 -@@ -228,7 +281,7 @@ static int wait_for_helper(void *data)
81342 +@@ -220,7 +272,7 @@ static int wait_for_helper(void *data)
81343 *
81344 * Thus the __user pointer cast is valid here.
81345 */
81346 @@ -67484,10 +63822,10 @@ diff -urNp linux-2.6.32.48/kernel/kmod.c linux-2.6.32.48/kernel/kmod.c
81347
81348 /*
81349 * If ret is 0, either ____call_usermodehelper failed and the
81350 -diff -urNp linux-2.6.32.48/kernel/kprobes.c linux-2.6.32.48/kernel/kprobes.c
81351 ---- linux-2.6.32.48/kernel/kprobes.c 2009-12-02 22:51:21.000000000 -0500
81352 -+++ linux-2.6.32.48/kernel/kprobes.c 2011-11-12 12:46:47.000000000 -0500
81353 -@@ -183,7 +183,7 @@ static kprobe_opcode_t __kprobes *__get_
81354 +diff -urNp linux-3.0.8/kernel/kprobes.c linux-3.0.8/kernel/kprobes.c
81355 +--- linux-3.0.8/kernel/kprobes.c 2011-07-21 22:17:23.000000000 -0400
81356 ++++ linux-3.0.8/kernel/kprobes.c 2011-08-23 21:47:56.000000000 -0400
81357 +@@ -185,7 +185,7 @@ static kprobe_opcode_t __kprobes *__get_
81358 * kernel image and loaded module images reside. This is required
81359 * so x86_64 can correctly handle the %rip-relative fixups.
81360 */
81361 @@ -67496,16 +63834,16 @@ diff -urNp linux-2.6.32.48/kernel/kprobes.c linux-2.6.32.48/kernel/kprobes.c
81362 if (!kip->insns) {
81363 kfree(kip);
81364 return NULL;
81365 -@@ -220,7 +220,7 @@ static int __kprobes collect_one_slot(st
81366 +@@ -225,7 +225,7 @@ static int __kprobes collect_one_slot(st
81367 */
81368 - if (!list_is_singular(&kprobe_insn_pages)) {
81369 + if (!list_is_singular(&kip->list)) {
81370 list_del(&kip->list);
81371 - module_free(NULL, kip->insns);
81372 + module_free_exec(NULL, kip->insns);
81373 kfree(kip);
81374 }
81375 return 1;
81376 -@@ -1189,7 +1189,7 @@ static int __init init_kprobes(void)
81377 +@@ -1936,7 +1936,7 @@ static int __init init_kprobes(void)
81378 {
81379 int i, err = 0;
81380 unsigned long offset = 0, size = 0;
81381 @@ -67514,7 +63852,7 @@ diff -urNp linux-2.6.32.48/kernel/kprobes.c linux-2.6.32.48/kernel/kprobes.c
81382 const char *symbol_name;
81383 void *addr;
81384 struct kprobe_blackpoint *kb;
81385 -@@ -1304,7 +1304,7 @@ static int __kprobes show_kprobe_addr(st
81386 +@@ -2062,7 +2062,7 @@ static int __kprobes show_kprobe_addr(st
81387 const char *sym = NULL;
81388 unsigned int i = *(loff_t *) v;
81389 unsigned long offset = 0;
81390 @@ -67523,47 +63861,12 @@ diff -urNp linux-2.6.32.48/kernel/kprobes.c linux-2.6.32.48/kernel/kprobes.c
81391
81392 head = &kprobe_table[i];
81393 preempt_disable();
81394 -diff -urNp linux-2.6.32.48/kernel/lockdep.c linux-2.6.32.48/kernel/lockdep.c
81395 ---- linux-2.6.32.48/kernel/lockdep.c 2011-11-12 12:44:30.000000000 -0500
81396 -+++ linux-2.6.32.48/kernel/lockdep.c 2011-11-12 12:46:47.000000000 -0500
81397 -@@ -421,20 +421,20 @@ static struct stack_trace lockdep_init_t
81398 - /*
81399 - * Various lockdep statistics:
81400 - */
81401 --atomic_t chain_lookup_hits;
81402 --atomic_t chain_lookup_misses;
81403 --atomic_t hardirqs_on_events;
81404 --atomic_t hardirqs_off_events;
81405 --atomic_t redundant_hardirqs_on;
81406 --atomic_t redundant_hardirqs_off;
81407 --atomic_t softirqs_on_events;
81408 --atomic_t softirqs_off_events;
81409 --atomic_t redundant_softirqs_on;
81410 --atomic_t redundant_softirqs_off;
81411 --atomic_t nr_unused_locks;
81412 --atomic_t nr_cyclic_checks;
81413 --atomic_t nr_find_usage_forwards_checks;
81414 --atomic_t nr_find_usage_backwards_checks;
81415 -+atomic_unchecked_t chain_lookup_hits;
81416 -+atomic_unchecked_t chain_lookup_misses;
81417 -+atomic_unchecked_t hardirqs_on_events;
81418 -+atomic_unchecked_t hardirqs_off_events;
81419 -+atomic_unchecked_t redundant_hardirqs_on;
81420 -+atomic_unchecked_t redundant_hardirqs_off;
81421 -+atomic_unchecked_t softirqs_on_events;
81422 -+atomic_unchecked_t softirqs_off_events;
81423 -+atomic_unchecked_t redundant_softirqs_on;
81424 -+atomic_unchecked_t redundant_softirqs_off;
81425 -+atomic_unchecked_t nr_unused_locks;
81426 -+atomic_unchecked_t nr_cyclic_checks;
81427 -+atomic_unchecked_t nr_find_usage_forwards_checks;
81428 -+atomic_unchecked_t nr_find_usage_backwards_checks;
81429 - #endif
81430 -
81431 - /*
81432 -@@ -577,6 +577,10 @@ static int static_obj(void *obj)
81433 - int i;
81434 - #endif
81435 +diff -urNp linux-3.0.8/kernel/lockdep.c linux-3.0.8/kernel/lockdep.c
81436 +--- linux-3.0.8/kernel/lockdep.c 2011-07-21 22:17:23.000000000 -0400
81437 ++++ linux-3.0.8/kernel/lockdep.c 2011-08-23 21:47:56.000000000 -0400
81438 +@@ -583,6 +583,10 @@ static int static_obj(void *obj)
81439 + end = (unsigned long) &_end,
81440 + addr = (unsigned long) obj;
81441
81442 +#ifdef CONFIG_PAX_KERNEXEC
81443 + start = ktla_ktva(start);
81444 @@ -67572,17 +63875,7 @@ diff -urNp linux-2.6.32.48/kernel/lockdep.c linux-2.6.32.48/kernel/lockdep.c
81445 /*
81446 * static variable?
81447 */
81448 -@@ -592,8 +596,7 @@ static int static_obj(void *obj)
81449 - */
81450 - for_each_possible_cpu(i) {
81451 - start = (unsigned long) &__per_cpu_start + per_cpu_offset(i);
81452 -- end = (unsigned long) &__per_cpu_start + PERCPU_ENOUGH_ROOM
81453 -- + per_cpu_offset(i);
81454 -+ end = start + PERCPU_ENOUGH_ROOM;
81455 -
81456 - if ((addr >= start) && (addr < end))
81457 - return 1;
81458 -@@ -710,6 +713,7 @@ register_lock_class(struct lockdep_map *
81459 +@@ -718,6 +722,7 @@ register_lock_class(struct lockdep_map *
81460 if (!static_obj(lock->key)) {
81461 debug_locks_off();
81462 printk("INFO: trying to register non-static key.\n");
81463 @@ -67590,68 +63883,18 @@ diff -urNp linux-2.6.32.48/kernel/lockdep.c linux-2.6.32.48/kernel/lockdep.c
81464 printk("the code is fine but needs lockdep annotation.\n");
81465 printk("turning off the locking correctness validator.\n");
81466 dump_stack();
81467 -@@ -2751,7 +2755,7 @@ static int __lock_acquire(struct lockdep
81468 +@@ -2936,7 +2941,7 @@ static int __lock_acquire(struct lockdep
81469 if (!class)
81470 return 0;
81471 }
81472 -- debug_atomic_inc((atomic_t *)&class->ops);
81473 -+ debug_atomic_inc((atomic_unchecked_t *)&class->ops);
81474 +- atomic_inc((atomic_t *)&class->ops);
81475 ++ atomic_inc_unchecked((atomic_unchecked_t *)&class->ops);
81476 if (very_verbose(class)) {
81477 printk("\nacquire class [%p] %s", class->key, class->name);
81478 if (class->name_version > 1)
81479 -diff -urNp linux-2.6.32.48/kernel/lockdep_internals.h linux-2.6.32.48/kernel/lockdep_internals.h
81480 ---- linux-2.6.32.48/kernel/lockdep_internals.h 2009-12-02 22:51:21.000000000 -0500
81481 -+++ linux-2.6.32.48/kernel/lockdep_internals.h 2011-11-12 12:46:47.000000000 -0500
81482 -@@ -113,26 +113,26 @@ lockdep_count_backward_deps(struct lock_
81483 - /*
81484 - * Various lockdep statistics:
81485 - */
81486 --extern atomic_t chain_lookup_hits;
81487 --extern atomic_t chain_lookup_misses;
81488 --extern atomic_t hardirqs_on_events;
81489 --extern atomic_t hardirqs_off_events;
81490 --extern atomic_t redundant_hardirqs_on;
81491 --extern atomic_t redundant_hardirqs_off;
81492 --extern atomic_t softirqs_on_events;
81493 --extern atomic_t softirqs_off_events;
81494 --extern atomic_t redundant_softirqs_on;
81495 --extern atomic_t redundant_softirqs_off;
81496 --extern atomic_t nr_unused_locks;
81497 --extern atomic_t nr_cyclic_checks;
81498 --extern atomic_t nr_cyclic_check_recursions;
81499 --extern atomic_t nr_find_usage_forwards_checks;
81500 --extern atomic_t nr_find_usage_forwards_recursions;
81501 --extern atomic_t nr_find_usage_backwards_checks;
81502 --extern atomic_t nr_find_usage_backwards_recursions;
81503 --# define debug_atomic_inc(ptr) atomic_inc(ptr)
81504 --# define debug_atomic_dec(ptr) atomic_dec(ptr)
81505 --# define debug_atomic_read(ptr) atomic_read(ptr)
81506 -+extern atomic_unchecked_t chain_lookup_hits;
81507 -+extern atomic_unchecked_t chain_lookup_misses;
81508 -+extern atomic_unchecked_t hardirqs_on_events;
81509 -+extern atomic_unchecked_t hardirqs_off_events;
81510 -+extern atomic_unchecked_t redundant_hardirqs_on;
81511 -+extern atomic_unchecked_t redundant_hardirqs_off;
81512 -+extern atomic_unchecked_t softirqs_on_events;
81513 -+extern atomic_unchecked_t softirqs_off_events;
81514 -+extern atomic_unchecked_t redundant_softirqs_on;
81515 -+extern atomic_unchecked_t redundant_softirqs_off;
81516 -+extern atomic_unchecked_t nr_unused_locks;
81517 -+extern atomic_unchecked_t nr_cyclic_checks;
81518 -+extern atomic_unchecked_t nr_cyclic_check_recursions;
81519 -+extern atomic_unchecked_t nr_find_usage_forwards_checks;
81520 -+extern atomic_unchecked_t nr_find_usage_forwards_recursions;
81521 -+extern atomic_unchecked_t nr_find_usage_backwards_checks;
81522 -+extern atomic_unchecked_t nr_find_usage_backwards_recursions;
81523 -+# define debug_atomic_inc(ptr) atomic_inc_unchecked(ptr)
81524 -+# define debug_atomic_dec(ptr) atomic_dec_unchecked(ptr)
81525 -+# define debug_atomic_read(ptr) atomic_read_unchecked(ptr)
81526 - #else
81527 - # define debug_atomic_inc(ptr) do { } while (0)
81528 - # define debug_atomic_dec(ptr) do { } while (0)
81529 -diff -urNp linux-2.6.32.48/kernel/lockdep_proc.c linux-2.6.32.48/kernel/lockdep_proc.c
81530 ---- linux-2.6.32.48/kernel/lockdep_proc.c 2009-12-02 22:51:21.000000000 -0500
81531 -+++ linux-2.6.32.48/kernel/lockdep_proc.c 2011-11-12 12:46:47.000000000 -0500
81532 +diff -urNp linux-3.0.8/kernel/lockdep_proc.c linux-3.0.8/kernel/lockdep_proc.c
81533 +--- linux-3.0.8/kernel/lockdep_proc.c 2011-07-21 22:17:23.000000000 -0400
81534 ++++ linux-3.0.8/kernel/lockdep_proc.c 2011-08-23 21:47:56.000000000 -0400
81535 @@ -39,7 +39,7 @@ static void l_stop(struct seq_file *m, v
81536
81537 static void print_name(struct seq_file *m, struct lock_class *class)
81538 @@ -67661,28 +63904,28 @@ diff -urNp linux-2.6.32.48/kernel/lockdep_proc.c linux-2.6.32.48/kernel/lockdep_
81539 const char *name = class->name;
81540
81541 if (!name) {
81542 -diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81543 ---- linux-2.6.32.48/kernel/module.c 2011-11-12 12:44:30.000000000 -0500
81544 -+++ linux-2.6.32.48/kernel/module.c 2011-11-12 12:46:47.000000000 -0500
81545 -@@ -55,6 +55,7 @@
81546 - #include <linux/async.h>
81547 - #include <linux/percpu.h>
81548 - #include <linux/kmemleak.h>
81549 +diff -urNp linux-3.0.8/kernel/module.c linux-3.0.8/kernel/module.c
81550 +--- linux-3.0.8/kernel/module.c 2011-07-21 22:17:23.000000000 -0400
81551 ++++ linux-3.0.8/kernel/module.c 2011-08-23 21:48:14.000000000 -0400
81552 +@@ -58,6 +58,7 @@
81553 + #include <linux/jump_label.h>
81554 + #include <linux/pfn.h>
81555 + #include <linux/bsearch.h>
81556 +#include <linux/grsecurity.h>
81557
81558 #define CREATE_TRACE_POINTS
81559 #include <trace/events/module.h>
81560 -@@ -89,7 +90,8 @@ static DECLARE_WAIT_QUEUE_HEAD(module_wq
81561 - static BLOCKING_NOTIFIER_HEAD(module_notify_list);
81562 +@@ -119,7 +120,8 @@ static BLOCKING_NOTIFIER_HEAD(module_not
81563
81564 - /* Bounds of module allocation, for speeding __module_address */
81565 + /* Bounds of module allocation, for speeding __module_address.
81566 + * Protected by module_mutex. */
81567 -static unsigned long module_addr_min = -1UL, module_addr_max = 0;
81568 +static unsigned long module_addr_min_rw = -1UL, module_addr_max_rw = 0;
81569 +static unsigned long module_addr_min_rx = -1UL, module_addr_max_rx = 0;
81570
81571 int register_module_notifier(struct notifier_block * nb)
81572 {
81573 -@@ -245,7 +247,7 @@ bool each_symbol(bool (*fn)(const struct
81574 +@@ -284,7 +286,7 @@ bool each_symbol_section(bool (*fn)(cons
81575 return true;
81576
81577 list_for_each_entry_rcu(mod, &modules, list) {
81578 @@ -67691,7 +63934,7 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81579 { mod->syms, mod->syms + mod->num_syms, mod->crcs,
81580 NOT_GPL_ONLY, false },
81581 { mod->gpl_syms, mod->gpl_syms + mod->num_gpl_syms,
81582 -@@ -267,7 +269,7 @@ bool each_symbol(bool (*fn)(const struct
81583 +@@ -306,7 +308,7 @@ bool each_symbol_section(bool (*fn)(cons
81584 #endif
81585 };
81586
81587 @@ -67700,51 +63943,121 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81588 return true;
81589 }
81590 return false;
81591 -@@ -442,7 +444,7 @@ static void *percpu_modalloc(unsigned lo
81592 - void *ptr;
81593 - int cpu;
81594 -
81595 +@@ -438,7 +440,7 @@ static inline void __percpu *mod_percpu(
81596 + static int percpu_modalloc(struct module *mod,
81597 + unsigned long size, unsigned long align)
81598 + {
81599 - if (align > PAGE_SIZE) {
81600 + if (align-1 >= PAGE_SIZE) {
81601 printk(KERN_WARNING "%s: per-cpu alignment %li > %li\n",
81602 - name, align, PAGE_SIZE);
81603 + mod->name, align, PAGE_SIZE);
81604 align = PAGE_SIZE;
81605 -@@ -1158,7 +1160,7 @@ static const struct kernel_symbol *resol
81606 - * /sys/module/foo/sections stuff
81607 - * J. Corbet <corbet@×××.net>
81608 +@@ -1166,7 +1168,7 @@ resolve_symbol_wait(struct module *mod,
81609 */
81610 --#if defined(CONFIG_KALLSYMS) && defined(CONFIG_SYSFS)
81611 -+#if defined(CONFIG_KALLSYMS) && defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
81612 + #ifdef CONFIG_SYSFS
81613
81614 +-#ifdef CONFIG_KALLSYMS
81615 ++#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
81616 static inline bool sect_empty(const Elf_Shdr *sect)
81617 {
81618 -@@ -1545,7 +1547,8 @@ static void free_module(struct module *m
81619 - destroy_params(mod->kp, mod->num_kp);
81620 + return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0;
81621 +@@ -1632,21 +1634,21 @@ static void set_section_ro_nx(void *base
81622 +
81623 + static void unset_module_core_ro_nx(struct module *mod)
81624 + {
81625 +- set_page_attributes(mod->module_core + mod->core_text_size,
81626 +- mod->module_core + mod->core_size,
81627 ++ set_page_attributes(mod->module_core_rw,
81628 ++ mod->module_core_rw + mod->core_size_rw,
81629 + set_memory_x);
81630 +- set_page_attributes(mod->module_core,
81631 +- mod->module_core + mod->core_ro_size,
81632 ++ set_page_attributes(mod->module_core_rx,
81633 ++ mod->module_core_rx + mod->core_size_rx,
81634 + set_memory_rw);
81635 + }
81636 +
81637 + static void unset_module_init_ro_nx(struct module *mod)
81638 + {
81639 +- set_page_attributes(mod->module_init + mod->init_text_size,
81640 +- mod->module_init + mod->init_size,
81641 ++ set_page_attributes(mod->module_init_rw,
81642 ++ mod->module_init_rw + mod->init_size_rw,
81643 + set_memory_x);
81644 +- set_page_attributes(mod->module_init,
81645 +- mod->module_init + mod->init_ro_size,
81646 ++ set_page_attributes(mod->module_init_rx,
81647 ++ mod->module_init_rx + mod->init_size_rx,
81648 + set_memory_rw);
81649 + }
81650 +
81651 +@@ -1657,14 +1659,14 @@ void set_all_modules_text_rw(void)
81652 +
81653 + mutex_lock(&module_mutex);
81654 + list_for_each_entry_rcu(mod, &modules, list) {
81655 +- if ((mod->module_core) && (mod->core_text_size)) {
81656 +- set_page_attributes(mod->module_core,
81657 +- mod->module_core + mod->core_text_size,
81658 ++ if ((mod->module_core_rx) && (mod->core_size_rx)) {
81659 ++ set_page_attributes(mod->module_core_rx,
81660 ++ mod->module_core_rx + mod->core_size_rx,
81661 + set_memory_rw);
81662 + }
81663 +- if ((mod->module_init) && (mod->init_text_size)) {
81664 +- set_page_attributes(mod->module_init,
81665 +- mod->module_init + mod->init_text_size,
81666 ++ if ((mod->module_init_rx) && (mod->init_size_rx)) {
81667 ++ set_page_attributes(mod->module_init_rx,
81668 ++ mod->module_init_rx + mod->init_size_rx,
81669 + set_memory_rw);
81670 + }
81671 + }
81672 +@@ -1678,14 +1680,14 @@ void set_all_modules_text_ro(void)
81673 +
81674 + mutex_lock(&module_mutex);
81675 + list_for_each_entry_rcu(mod, &modules, list) {
81676 +- if ((mod->module_core) && (mod->core_text_size)) {
81677 +- set_page_attributes(mod->module_core,
81678 +- mod->module_core + mod->core_text_size,
81679 ++ if ((mod->module_core_rx) && (mod->core_size_rx)) {
81680 ++ set_page_attributes(mod->module_core_rx,
81681 ++ mod->module_core_rx + mod->core_size_rx,
81682 + set_memory_ro);
81683 + }
81684 +- if ((mod->module_init) && (mod->init_text_size)) {
81685 +- set_page_attributes(mod->module_init,
81686 +- mod->module_init + mod->init_text_size,
81687 ++ if ((mod->module_init_rx) && (mod->init_size_rx)) {
81688 ++ set_page_attributes(mod->module_init_rx,
81689 ++ mod->module_init_rx + mod->init_size_rx,
81690 + set_memory_ro);
81691 + }
81692 + }
81693 +@@ -1722,16 +1724,19 @@ static void free_module(struct module *m
81694
81695 /* This may be NULL, but that's OK */
81696 + unset_module_init_ro_nx(mod);
81697 - module_free(mod, mod->module_init);
81698 + module_free(mod, mod->module_init_rw);
81699 + module_free_exec(mod, mod->module_init_rx);
81700 kfree(mod->args);
81701 - if (mod->percpu)
81702 - percpu_modfree(mod->percpu);
81703 -@@ -1554,10 +1557,12 @@ static void free_module(struct module *m
81704 - percpu_modfree(mod->refptr);
81705 - #endif
81706 + percpu_modfree(mod);
81707 +
81708 /* Free lock-classes: */
81709 - lockdep_free_key_range(mod->module_core, mod->core_size);
81710 + lockdep_free_key_range(mod->module_core_rx, mod->core_size_rx);
81711 + lockdep_free_key_range(mod->module_core_rw, mod->core_size_rw);
81712
81713 /* Finally, free the core (containing the module structure) */
81714 + unset_module_core_ro_nx(mod);
81715 - module_free(mod, mod->module_core);
81716 + module_free_exec(mod, mod->module_core_rx);
81717 + module_free(mod, mod->module_core_rw);
81718
81719 #ifdef CONFIG_MPU
81720 update_protections(current->mm);
81721 -@@ -1628,8 +1633,32 @@ static int simplify_symbols(Elf_Shdr *se
81722 - unsigned int i, n = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
81723 +@@ -1800,10 +1805,31 @@ static int simplify_symbols(struct modul
81724 + unsigned int i;
81725 int ret = 0;
81726 const struct kernel_symbol *ksym;
81727 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
81728 @@ -67753,7 +64066,6 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81729 + char *p;
81730 +
81731 + p = strstr(mod->args, "grsec_modharden_fs");
81732 -+
81733 + if (p) {
81734 + char *endptr = p + strlen("grsec_modharden_fs");
81735 + /* copy \0 as well */
81736 @@ -67761,35 +64073,35 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81737 + is_fs_load = 1;
81738 + }
81739 +#endif
81740 -+
81741
81742 - for (i = 1; i < n; i++) {
81743 + for (i = 1; i < symsec->sh_size / sizeof(Elf_Sym); i++) {
81744 + const char *name = info->strtab + sym[i].st_name;
81745 +
81746 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
81747 -+ const char *name = strtab + sym[i].st_name;
81748 -+
81749 + /* it's a real shame this will never get ripped and copied
81750 + upstream! ;(
81751 + */
81752 + if (is_fs_load && !strcmp(name, "register_filesystem"))
81753 + register_filesystem_found = 1;
81754 +#endif
81755 ++
81756 switch (sym[i].st_shndx) {
81757 case SHN_COMMON:
81758 /* We compiled with -fno-common. These are not
81759 -@@ -1651,7 +1680,9 @@ static int simplify_symbols(Elf_Shdr *se
81760 - strtab + sym[i].st_name, mod);
81761 +@@ -1824,7 +1850,9 @@ static int simplify_symbols(struct modul
81762 + ksym = resolve_symbol_wait(mod, info, name);
81763 /* Ok if resolved. */
81764 - if (ksym) {
81765 + if (ksym && !IS_ERR(ksym)) {
81766 + pax_open_kernel();
81767 sym[i].st_value = ksym->value;
81768 + pax_close_kernel();
81769 break;
81770 }
81771
81772 -@@ -1670,11 +1701,20 @@ static int simplify_symbols(Elf_Shdr *se
81773 - secbase = (unsigned long)mod->percpu;
81774 +@@ -1843,11 +1871,20 @@ static int simplify_symbols(struct modul
81775 + secbase = (unsigned long)mod_percpu(mod);
81776 else
81777 - secbase = sechdrs[sym[i].st_shndx].sh_addr;
81778 + secbase = info->sechdrs[sym[i].st_shndx].sh_addr;
81779 + pax_open_kernel();
81780 sym[i].st_value += secbase;
81781 + pax_close_kernel();
81782 @@ -67807,25 +64119,36 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81783 return ret;
81784 }
81785
81786 -@@ -1731,11 +1771,12 @@ static void layout_sections(struct modul
81787 +@@ -1931,22 +1968,12 @@ static void layout_sections(struct modul
81788 || s->sh_entsize != ~0UL
81789 - || strstarts(secstrings + s->sh_name, ".init"))
81790 + || strstarts(sname, ".init"))
81791 continue;
81792 - s->sh_entsize = get_offset(mod, &mod->core_size, s, i);
81793 + if ((s->sh_flags & SHF_WRITE) || !(s->sh_flags & SHF_ALLOC))
81794 + s->sh_entsize = get_offset(mod, &mod->core_size_rw, s, i);
81795 + else
81796 + s->sh_entsize = get_offset(mod, &mod->core_size_rx, s, i);
81797 - DEBUGP("\t%s\n", secstrings + s->sh_name);
81798 + DEBUGP("\t%s\n", name);
81799 }
81800 -- if (m == 0)
81801 +- switch (m) {
81802 +- case 0: /* executable */
81803 +- mod->core_size = debug_align(mod->core_size);
81804 - mod->core_text_size = mod->core_size;
81805 +- break;
81806 +- case 1: /* RO: text and ro-data */
81807 +- mod->core_size = debug_align(mod->core_size);
81808 +- mod->core_ro_size = mod->core_size;
81809 +- break;
81810 +- case 3: /* whole core */
81811 +- mod->core_size = debug_align(mod->core_size);
81812 +- break;
81813 +- }
81814 }
81815
81816 DEBUGP("Init section allocation order:\n");
81817 -@@ -1748,12 +1789,13 @@ static void layout_sections(struct modul
81818 +@@ -1960,23 +1987,13 @@ static void layout_sections(struct modul
81819 || s->sh_entsize != ~0UL
81820 - || !strstarts(secstrings + s->sh_name, ".init"))
81821 + || !strstarts(sname, ".init"))
81822 continue;
81823 - s->sh_entsize = (get_offset(mod, &mod->init_size, s, i)
81824 - | INIT_OFFSET_MASK);
81825 @@ -67834,92 +64157,89 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81826 + else
81827 + s->sh_entsize = get_offset(mod, &mod->init_size_rx, s, i);
81828 + s->sh_entsize |= INIT_OFFSET_MASK;
81829 - DEBUGP("\t%s\n", secstrings + s->sh_name);
81830 + DEBUGP("\t%s\n", sname);
81831 }
81832 -- if (m == 0)
81833 +- switch (m) {
81834 +- case 0: /* executable */
81835 +- mod->init_size = debug_align(mod->init_size);
81836 - mod->init_text_size = mod->init_size;
81837 +- break;
81838 +- case 1: /* RO: text and ro-data */
81839 +- mod->init_size = debug_align(mod->init_size);
81840 +- mod->init_ro_size = mod->init_size;
81841 +- break;
81842 +- case 3: /* whole init */
81843 +- mod->init_size = debug_align(mod->init_size);
81844 +- break;
81845 +- }
81846 }
81847 }
81848
81849 -@@ -1857,9 +1899,8 @@ static int is_exported(const char *name,
81850 -
81851 - /* As per nm */
81852 - static char elf_type(const Elf_Sym *sym,
81853 -- Elf_Shdr *sechdrs,
81854 -- const char *secstrings,
81855 -- struct module *mod)
81856 -+ const Elf_Shdr *sechdrs,
81857 -+ const char *secstrings)
81858 - {
81859 - if (ELF_ST_BIND(sym->st_info) == STB_WEAK) {
81860 - if (ELF_ST_TYPE(sym->st_info) == STT_OBJECT)
81861 -@@ -1934,7 +1975,7 @@ static unsigned long layout_symtab(struc
81862 +@@ -2141,7 +2158,7 @@ static void layout_symtab(struct module
81863
81864 /* Put symbol section at end of init part of module. */
81865 symsect->sh_flags |= SHF_ALLOC;
81866 - symsect->sh_entsize = get_offset(mod, &mod->init_size, symsect,
81867 + symsect->sh_entsize = get_offset(mod, &mod->init_size_rx, symsect,
81868 - symindex) | INIT_OFFSET_MASK;
81869 - DEBUGP("\t%s\n", secstrings + symsect->sh_name);
81870 + info->index.sym) | INIT_OFFSET_MASK;
81871 + DEBUGP("\t%s\n", info->secstrings + symsect->sh_name);
81872
81873 -@@ -1951,19 +1992,19 @@ static unsigned long layout_symtab(struc
81874 +@@ -2158,19 +2175,19 @@ static void layout_symtab(struct module
81875 }
81876
81877 /* Append room for core symbols at end of core part. */
81878 -- symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1);
81879 -- mod->core_size = symoffs + ndst * sizeof(Elf_Sym);
81880 -+ symoffs = ALIGN(mod->core_size_rx, symsect->sh_addralign ?: 1);
81881 -+ mod->core_size_rx = symoffs + ndst * sizeof(Elf_Sym);
81882 +- info->symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1);
81883 +- mod->core_size = info->symoffs + ndst * sizeof(Elf_Sym);
81884 ++ info->symoffs = ALIGN(mod->core_size_rx, symsect->sh_addralign ?: 1);
81885 ++ mod->core_size_rx = info->symoffs + ndst * sizeof(Elf_Sym);
81886
81887 /* Put string table section at end of init part of module. */
81888 strsect->sh_flags |= SHF_ALLOC;
81889 - strsect->sh_entsize = get_offset(mod, &mod->init_size, strsect,
81890 + strsect->sh_entsize = get_offset(mod, &mod->init_size_rx, strsect,
81891 - strindex) | INIT_OFFSET_MASK;
81892 - DEBUGP("\t%s\n", secstrings + strsect->sh_name);
81893 + info->index.str) | INIT_OFFSET_MASK;
81894 + DEBUGP("\t%s\n", info->secstrings + strsect->sh_name);
81895
81896 /* Append room for core symbols' strings at end of core part. */
81897 -- *pstroffs = mod->core_size;
81898 -+ *pstroffs = mod->core_size_rx;
81899 - __set_bit(0, strmap);
81900 -- mod->core_size += bitmap_weight(strmap, strsect->sh_size);
81901 -+ mod->core_size_rx += bitmap_weight(strmap, strsect->sh_size);
81902 -
81903 - return symoffs;
81904 +- info->stroffs = mod->core_size;
81905 ++ info->stroffs = mod->core_size_rx;
81906 + __set_bit(0, info->strmap);
81907 +- mod->core_size += bitmap_weight(info->strmap, strsect->sh_size);
81908 ++ mod->core_size_rx += bitmap_weight(info->strmap, strsect->sh_size);
81909 }
81910 -@@ -1987,12 +2028,14 @@ static void add_kallsyms(struct module *
81911 - mod->num_symtab = sechdrs[symindex].sh_size / sizeof(Elf_Sym);
81912 - mod->strtab = (void *)sechdrs[strindex].sh_addr;
81913 +
81914 + static void add_kallsyms(struct module *mod, const struct load_info *info)
81915 +@@ -2186,11 +2203,13 @@ static void add_kallsyms(struct module *
81916 + /* Make sure we get permanent strtab: don't use info->strtab. */
81917 + mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
81918
81919 + pax_open_kernel();
81920 +
81921 /* Set types up while we still have access to sections. */
81922 for (i = 0; i < mod->num_symtab; i++)
81923 - mod->symtab[i].st_info
81924 -- = elf_type(&mod->symtab[i], sechdrs, secstrings, mod);
81925 -+ = elf_type(&mod->symtab[i], sechdrs, secstrings);
81926 + mod->symtab[i].st_info = elf_type(&mod->symtab[i], info);
81927
81928 -- mod->core_symtab = dst = mod->module_core + symoffs;
81929 -+ mod->core_symtab = dst = mod->module_core_rx + symoffs;
81930 +- mod->core_symtab = dst = mod->module_core + info->symoffs;
81931 ++ mod->core_symtab = dst = mod->module_core_rx + info->symoffs;
81932 src = mod->symtab;
81933 *dst = *src;
81934 for (ndst = i = 1; i < mod->num_symtab; ++i, ++src) {
81935 -@@ -2004,10 +2047,12 @@ static void add_kallsyms(struct module *
81936 +@@ -2203,10 +2222,12 @@ static void add_kallsyms(struct module *
81937 }
81938 mod->core_num_syms = ndst;
81939
81940 -- mod->core_strtab = s = mod->module_core + stroffs;
81941 -+ mod->core_strtab = s = mod->module_core_rx + stroffs;
81942 - for (*s = 0, i = 1; i < sechdrs[strindex].sh_size; ++i)
81943 - if (test_bit(i, strmap))
81944 +- mod->core_strtab = s = mod->module_core + info->stroffs;
81945 ++ mod->core_strtab = s = mod->module_core_rx + info->stroffs;
81946 + for (*s = 0, i = 1; i < info->sechdrs[info->index.str].sh_size; ++i)
81947 + if (test_bit(i, info->strmap))
81948 *++s = mod->strtab[i];
81949 +
81950 + pax_close_kernel();
81951 }
81952 #else
81953 - static inline unsigned long layout_symtab(struct module *mod,
81954 -@@ -2044,16 +2089,30 @@ static void dynamic_debug_setup(struct _
81955 - #endif
81956 + static inline void layout_symtab(struct module *mod, struct load_info *info)
81957 +@@ -2235,17 +2256,33 @@ static void dynamic_debug_remove(struct
81958 + ddebug_remove_module(debug->modname);
81959 }
81960
81961 -static void *module_alloc_update_bounds(unsigned long size)
81962 @@ -67928,6 +64248,7 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81963 void *ret = module_alloc(size);
81964
81965 if (ret) {
81966 + mutex_lock(&module_mutex);
81967 /* Update module bounds. */
81968 - if ((unsigned long)ret < module_addr_min)
81969 - module_addr_min = (unsigned long)ret;
81970 @@ -67937,6 +64258,7 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81971 + module_addr_min_rw = (unsigned long)ret;
81972 + if ((unsigned long)ret + size > module_addr_max_rw)
81973 + module_addr_max_rw = (unsigned long)ret + size;
81974 ++ mutex_unlock(&module_mutex);
81975 + }
81976 + return ret;
81977 +}
81978 @@ -67946,38 +64268,17 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
81979 + void *ret = module_alloc_exec(size);
81980 +
81981 + if (ret) {
81982 ++ mutex_lock(&module_mutex);
81983 + /* Update module bounds. */
81984 + if ((unsigned long)ret < module_addr_min_rx)
81985 + module_addr_min_rx = (unsigned long)ret;
81986 + if ((unsigned long)ret + size > module_addr_max_rx)
81987 + module_addr_max_rx = (unsigned long)ret + size;
81988 + mutex_unlock(&module_mutex);
81989 }
81990 return ret;
81991 - }
81992 -@@ -2065,8 +2124,8 @@ static void kmemleak_load_module(struct
81993 - unsigned int i;
81994 -
81995 - /* only scan the sections containing data */
81996 -- kmemleak_scan_area(mod->module_core, (unsigned long)mod -
81997 -- (unsigned long)mod->module_core,
81998 -+ kmemleak_scan_area(mod->module_core_rw, (unsigned long)mod -
81999 -+ (unsigned long)mod->module_core_rw,
82000 - sizeof(struct module), GFP_KERNEL);
82001 -
82002 - for (i = 1; i < hdr->e_shnum; i++) {
82003 -@@ -2076,8 +2135,8 @@ static void kmemleak_load_module(struct
82004 - && strncmp(secstrings + sechdrs[i].sh_name, ".bss", 4) != 0)
82005 - continue;
82006 -
82007 -- kmemleak_scan_area(mod->module_core, sechdrs[i].sh_addr -
82008 -- (unsigned long)mod->module_core,
82009 -+ kmemleak_scan_area(mod->module_core_rw, sechdrs[i].sh_addr -
82010 -+ (unsigned long)mod->module_core_rw,
82011 - sechdrs[i].sh_size, GFP_KERNEL);
82012 - }
82013 - }
82014 -@@ -2263,7 +2322,7 @@ static noinline struct module *load_modu
82015 - secstrings, &stroffs, strmap);
82016 +@@ -2538,7 +2575,7 @@ static int move_module(struct module *mo
82017 + void *ptr;
82018
82019 /* Do the allocs. */
82020 - ptr = module_alloc_update_bounds(mod->core_size);
82021 @@ -67985,10 +64286,10 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82022 /*
82023 * The pointer to this block is stored in the module structure
82024 * which is inside the block. Just mark it as not being a
82025 -@@ -2274,23 +2333,47 @@ static noinline struct module *load_modu
82026 - err = -ENOMEM;
82027 - goto free_percpu;
82028 - }
82029 +@@ -2548,23 +2585,50 @@ static int move_module(struct module *mo
82030 + if (!ptr)
82031 + return -ENOMEM;
82032 +
82033 - memset(ptr, 0, mod->core_size);
82034 - mod->module_core = ptr;
82035 + memset(ptr, 0, mod->core_size_rw);
82036 @@ -68004,23 +64305,24 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82037 */
82038 - kmemleak_ignore(ptr);
82039 - if (!ptr && mod->init_size) {
82040 +- module_free(mod, mod->module_core);
82041 + kmemleak_not_leak(ptr);
82042 + if (!ptr && mod->init_size_rw) {
82043 -+ err = -ENOMEM;
82044 -+ goto free_core_rw;
82045 -+ }
82046 ++ module_free(mod, mod->module_core_rw);
82047 + return -ENOMEM;
82048 + }
82049 +- memset(ptr, 0, mod->init_size);
82050 +- mod->module_init = ptr;
82051 + memset(ptr, 0, mod->init_size_rw);
82052 + mod->module_init_rw = ptr;
82053 +
82054 + ptr = module_alloc_update_bounds_rx(mod->core_size_rx);
82055 + kmemleak_not_leak(ptr);
82056 + if (!ptr) {
82057 - err = -ENOMEM;
82058 -- goto free_core;
82059 -+ goto free_init_rw;
82060 - }
82061 -- memset(ptr, 0, mod->init_size);
82062 -- mod->module_init = ptr;
82063 ++ module_free(mod, mod->module_init_rw);
82064 ++ module_free(mod, mod->module_core_rw);
82065 ++ return -ENOMEM;
82066 ++ }
82067 +
82068 + pax_open_kernel();
82069 + memset(ptr, 0, mod->core_size_rx);
82070 @@ -68030,8 +64332,10 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82071 + ptr = module_alloc_update_bounds_rx(mod->init_size_rx);
82072 + kmemleak_not_leak(ptr);
82073 + if (!ptr && mod->init_size_rx) {
82074 -+ err = -ENOMEM;
82075 -+ goto free_core_rx;
82076 ++ module_free_exec(mod, mod->module_core_rx);
82077 ++ module_free(mod, mod->module_init_rw);
82078 ++ module_free(mod, mod->module_core_rw);
82079 ++ return -ENOMEM;
82080 + }
82081 +
82082 + pax_open_kernel();
82083 @@ -68041,76 +64345,105 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82084
82085 /* Transfer each section which specifies SHF_ALLOC */
82086 DEBUGP("final section addresses:\n");
82087 -@@ -2300,17 +2383,45 @@ static noinline struct module *load_modu
82088 - if (!(sechdrs[i].sh_flags & SHF_ALLOC))
82089 +@@ -2575,16 +2639,45 @@ static int move_module(struct module *mo
82090 + if (!(shdr->sh_flags & SHF_ALLOC))
82091 continue;
82092
82093 -- if (sechdrs[i].sh_entsize & INIT_OFFSET_MASK)
82094 +- if (shdr->sh_entsize & INIT_OFFSET_MASK)
82095 - dest = mod->module_init
82096 -- + (sechdrs[i].sh_entsize & ~INIT_OFFSET_MASK);
82097 +- + (shdr->sh_entsize & ~INIT_OFFSET_MASK);
82098 - else
82099 -- dest = mod->module_core + sechdrs[i].sh_entsize;
82100 -+ if (sechdrs[i].sh_entsize & INIT_OFFSET_MASK) {
82101 -+ if ((sechdrs[i].sh_flags & SHF_WRITE) || !(sechdrs[i].sh_flags & SHF_ALLOC))
82102 +- dest = mod->module_core + shdr->sh_entsize;
82103 ++ if (shdr->sh_entsize & INIT_OFFSET_MASK) {
82104 ++ if ((shdr->sh_flags & SHF_WRITE) || !(shdr->sh_flags & SHF_ALLOC))
82105 + dest = mod->module_init_rw
82106 -+ + (sechdrs[i].sh_entsize & ~INIT_OFFSET_MASK);
82107 ++ + (shdr->sh_entsize & ~INIT_OFFSET_MASK);
82108 + else
82109 + dest = mod->module_init_rx
82110 -+ + (sechdrs[i].sh_entsize & ~INIT_OFFSET_MASK);
82111 ++ + (shdr->sh_entsize & ~INIT_OFFSET_MASK);
82112 + } else {
82113 -+ if ((sechdrs[i].sh_flags & SHF_WRITE) || !(sechdrs[i].sh_flags & SHF_ALLOC))
82114 -+ dest = mod->module_core_rw + sechdrs[i].sh_entsize;
82115 ++ if ((shdr->sh_flags & SHF_WRITE) || !(shdr->sh_flags & SHF_ALLOC))
82116 ++ dest = mod->module_core_rw + shdr->sh_entsize;
82117 + else
82118 -+ dest = mod->module_core_rx + sechdrs[i].sh_entsize;
82119 ++ dest = mod->module_core_rx + shdr->sh_entsize;
82120 + }
82121 +
82122 -+ if (sechdrs[i].sh_type != SHT_NOBITS) {
82123 -
82124 -- if (sechdrs[i].sh_type != SHT_NOBITS)
82125 -- memcpy(dest, (void *)sechdrs[i].sh_addr,
82126 -- sechdrs[i].sh_size);
82127 ++ if (shdr->sh_type != SHT_NOBITS) {
82128 ++
82129 +#ifdef CONFIG_PAX_KERNEXEC
82130 +#ifdef CONFIG_X86_64
82131 -+ if ((sechdrs[i].sh_flags & SHF_WRITE) && (sechdrs[i].sh_flags & SHF_EXECINSTR))
82132 -+ set_memory_x((unsigned long)dest, (sechdrs[i].sh_size + PAGE_SIZE) >> PAGE_SHIFT);
82133 ++ if ((shdr->sh_flags & SHF_WRITE) && (shdr->sh_flags & SHF_EXECINSTR))
82134 ++ set_memory_x((unsigned long)dest, (shdr->sh_size + PAGE_SIZE) >> PAGE_SHIFT);
82135 +#endif
82136 -+ if (!(sechdrs[i].sh_flags & SHF_WRITE) && (sechdrs[i].sh_flags & SHF_ALLOC)) {
82137 ++ if (!(shdr->sh_flags & SHF_WRITE) && (shdr->sh_flags & SHF_ALLOC)) {
82138 + pax_open_kernel();
82139 -+ memcpy(dest, (void *)sechdrs[i].sh_addr, sechdrs[i].sh_size);
82140 ++ memcpy(dest, (void *)shdr->sh_addr, shdr->sh_size);
82141 + pax_close_kernel();
82142 + } else
82143 +#endif
82144 -+
82145 -+ memcpy(dest, (void *)sechdrs[i].sh_addr, sechdrs[i].sh_size);
82146 +
82147 +- if (shdr->sh_type != SHT_NOBITS)
82148 + memcpy(dest, (void *)shdr->sh_addr, shdr->sh_size);
82149 + }
82150 /* Update sh_addr to point to copy in image. */
82151 -- sechdrs[i].sh_addr = (unsigned long)dest;
82152 +- shdr->sh_addr = (unsigned long)dest;
82153 +
82154 +#ifdef CONFIG_PAX_KERNEXEC
82155 -+ if (sechdrs[i].sh_flags & SHF_EXECINSTR)
82156 -+ sechdrs[i].sh_addr = ktva_ktla((unsigned long)dest);
82157 ++ if (shdr->sh_flags & SHF_EXECINSTR)
82158 ++ shdr->sh_addr = ktva_ktla((unsigned long)dest);
82159 + else
82160 +#endif
82161 +
82162 -+ sechdrs[i].sh_addr = (unsigned long)dest;
82163 - DEBUGP("\t0x%lx %s\n", sechdrs[i].sh_addr, secstrings + sechdrs[i].sh_name);
82164 - }
82165 - /* Module has been moved. */
82166 -@@ -2322,7 +2433,7 @@ static noinline struct module *load_modu
82167 - mod->name);
82168 - if (!mod->refptr) {
82169 - err = -ENOMEM;
82170 -- goto free_init;
82171 -+ goto free_init_rx;
82172 ++ shdr->sh_addr = (unsigned long)dest;
82173 + DEBUGP("\t0x%lx %s\n",
82174 + shdr->sh_addr, info->secstrings + shdr->sh_name);
82175 }
82176 - #endif
82177 - /* Now we've moved module, initialize linked lists, etc. */
82178 -@@ -2351,6 +2462,31 @@ static noinline struct module *load_modu
82179 - /* Set up MODINFO_ATTR fields */
82180 - setup_modinfo(mod, sechdrs, infoindex);
82181 +@@ -2635,12 +2728,12 @@ static void flush_module_icache(const st
82182 + * Do it before processing of module parameters, so the module
82183 + * can provide parameter accessor functions of its own.
82184 + */
82185 +- if (mod->module_init)
82186 +- flush_icache_range((unsigned long)mod->module_init,
82187 +- (unsigned long)mod->module_init
82188 +- + mod->init_size);
82189 +- flush_icache_range((unsigned long)mod->module_core,
82190 +- (unsigned long)mod->module_core + mod->core_size);
82191 ++ if (mod->module_init_rx)
82192 ++ flush_icache_range((unsigned long)mod->module_init_rx,
82193 ++ (unsigned long)mod->module_init_rx
82194 ++ + mod->init_size_rx);
82195 ++ flush_icache_range((unsigned long)mod->module_core_rx,
82196 ++ (unsigned long)mod->module_core_rx + mod->core_size_rx);
82197
82198 -+ mod->args = args;
82199 + set_fs(old_fs);
82200 + }
82201 +@@ -2712,8 +2805,10 @@ static void module_deallocate(struct mod
82202 + {
82203 + kfree(info->strmap);
82204 + percpu_modfree(mod);
82205 +- module_free(mod, mod->module_init);
82206 +- module_free(mod, mod->module_core);
82207 ++ module_free_exec(mod, mod->module_init_rx);
82208 ++ module_free_exec(mod, mod->module_core_rx);
82209 ++ module_free(mod, mod->module_init_rw);
82210 ++ module_free(mod, mod->module_core_rw);
82211 + }
82212 +
82213 + static int post_relocation(struct module *mod, const struct load_info *info)
82214 +@@ -2770,9 +2865,38 @@ static struct module *load_module(void _
82215 + if (err)
82216 + goto free_unload;
82217 +
82218 ++ /* Now copy in args */
82219 ++ mod->args = strndup_user(uargs, ~0UL >> 1);
82220 ++ if (IS_ERR(mod->args)) {
82221 ++ err = PTR_ERR(mod->args);
82222 ++ goto free_unload;
82223 ++ }
82224 +
82225 + /* Set up MODINFO_ATTR fields */
82226 + setup_modinfo(mod, &info);
82227 +
82228 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
82229 + {
82230 + char *p, *p2;
82231 @@ -68118,7 +64451,7 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82232 + if (strstr(mod->args, "grsec_modharden_netdev")) {
82233 + printk(KERN_ALERT "grsec: denied auto-loading kernel module for a network device with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-%.64s instead.", mod->name);
82234 + err = -EPERM;
82235 -+ goto cleanup;
82236 ++ goto free_modinfo;
82237 + } else if ((p = strstr(mod->args, "grsec_modharden_normal"))) {
82238 + p += strlen("grsec_modharden_normal");
82239 + p2 = strstr(p, "_");
82240 @@ -68128,76 +64461,74 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82241 + *p2 = '_';
82242 + }
82243 + err = -EPERM;
82244 -+ goto cleanup;
82245 ++ goto free_modinfo;
82246 + }
82247 + }
82248 +#endif
82249 +
82250 -+
82251 /* Fix up syms, so that st_value is a pointer to location. */
82252 - err = simplify_symbols(sechdrs, symindex, strtab, versindex, pcpuindex,
82253 - mod);
82254 -@@ -2431,8 +2567,8 @@ static noinline struct module *load_modu
82255 -
82256 - /* Now do relocations. */
82257 - for (i = 1; i < hdr->e_shnum; i++) {
82258 -- const char *strtab = (char *)sechdrs[strindex].sh_addr;
82259 - unsigned int info = sechdrs[i].sh_info;
82260 -+ strtab = (char *)sechdrs[strindex].sh_addr;
82261 -
82262 - /* Not a valid relocation section? */
82263 - if (info >= hdr->e_shnum)
82264 -@@ -2493,16 +2629,15 @@ static noinline struct module *load_modu
82265 - * Do it before processing of module parameters, so the module
82266 - * can provide parameter accessor functions of its own.
82267 - */
82268 -- if (mod->module_init)
82269 -- flush_icache_range((unsigned long)mod->module_init,
82270 -- (unsigned long)mod->module_init
82271 -- + mod->init_size);
82272 -- flush_icache_range((unsigned long)mod->module_core,
82273 -- (unsigned long)mod->module_core + mod->core_size);
82274 -+ if (mod->module_init_rx)
82275 -+ flush_icache_range((unsigned long)mod->module_init_rx,
82276 -+ (unsigned long)mod->module_init_rx
82277 -+ + mod->init_size_rx);
82278 -+ flush_icache_range((unsigned long)mod->module_core_rx,
82279 -+ (unsigned long)mod->module_core_rx + mod->core_size_rx);
82280 + err = simplify_symbols(mod, &info);
82281 + if (err < 0)
82282 +@@ -2788,13 +2912,6 @@ static struct module *load_module(void _
82283
82284 - set_fs(old_fs);
82285 + flush_module_icache(mod);
82286
82287 -- mod->args = args;
82288 - if (section_addr(hdr, sechdrs, secstrings, "__obsparm"))
82289 - printk(KERN_WARNING "%s: Ignoring obsolete parameters\n",
82290 - mod->name);
82291 -@@ -2546,12 +2681,16 @@ static noinline struct module *load_modu
82292 +- /* Now copy in args */
82293 +- mod->args = strndup_user(uargs, ~0UL >> 1);
82294 +- if (IS_ERR(mod->args)) {
82295 +- err = PTR_ERR(mod->args);
82296 +- goto free_arch_cleanup;
82297 +- }
82298 +-
82299 + /* Mark state as coming so strong_try_module_get() ignores us. */
82300 + mod->state = MODULE_STATE_COMING;
82301 +
82302 +@@ -2854,11 +2971,10 @@ static struct module *load_module(void _
82303 + unlock:
82304 + mutex_unlock(&module_mutex);
82305 + synchronize_sched();
82306 +- kfree(mod->args);
82307 +- free_arch_cleanup:
82308 + module_arch_cleanup(mod);
82309 + free_modinfo:
82310 + free_modinfo(mod);
82311 ++ kfree(mod->args);
82312 free_unload:
82313 module_unload_free(mod);
82314 - #if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)
82315 -+ free_init_rx:
82316 - percpu_modfree(mod->refptr);
82317 -- free_init:
82318 - #endif
82319 -- module_free(mod, mod->module_init);
82320 -- free_core:
82321 -- module_free(mod, mod->module_core);
82322 -+ module_free_exec(mod, mod->module_init_rx);
82323 -+ free_core_rx:
82324 -+ module_free_exec(mod, mod->module_core_rx);
82325 -+ free_init_rw:
82326 -+ module_free(mod, mod->module_init_rw);
82327 -+ free_core_rw:
82328 -+ module_free(mod, mod->module_core_rw);
82329 - /* mod will be freed with core. Don't access it beyond this line! */
82330 - free_percpu:
82331 - if (percpu)
82332 -@@ -2653,10 +2792,12 @@ SYSCALL_DEFINE3(init_module, void __user
82333 - mod->symtab = mod->core_symtab;
82334 + free_module:
82335 +@@ -2899,16 +3015,16 @@ SYSCALL_DEFINE3(init_module, void __user
82336 + MODULE_STATE_COMING, mod);
82337 +
82338 + /* Set RO and NX regions for core */
82339 +- set_section_ro_nx(mod->module_core,
82340 +- mod->core_text_size,
82341 +- mod->core_ro_size,
82342 +- mod->core_size);
82343 ++ set_section_ro_nx(mod->module_core_rx,
82344 ++ mod->core_size_rx,
82345 ++ mod->core_size_rx,
82346 ++ mod->core_size_rx);
82347 +
82348 + /* Set RO and NX regions for init */
82349 +- set_section_ro_nx(mod->module_init,
82350 +- mod->init_text_size,
82351 +- mod->init_ro_size,
82352 +- mod->init_size);
82353 ++ set_section_ro_nx(mod->module_init_rx,
82354 ++ mod->init_size_rx,
82355 ++ mod->init_size_rx,
82356 ++ mod->init_size_rx);
82357 +
82358 + do_mod_ctors(mod);
82359 + /* Start the module */
82360 +@@ -2954,11 +3070,12 @@ SYSCALL_DEFINE3(init_module, void __user
82361 mod->strtab = mod->core_strtab;
82362 #endif
82363 + unset_module_init_ro_nx(mod);
82364 - module_free(mod, mod->module_init);
82365 - mod->module_init = NULL;
82366 - mod->init_size = 0;
82367 +- mod->init_ro_size = 0;
82368 - mod->init_text_size = 0;
82369 + module_free(mod, mod->module_init_rw);
82370 + module_free_exec(mod, mod->module_init_rx);
82371 @@ -68208,7 +64539,7 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82372 mutex_unlock(&module_mutex);
82373
82374 return 0;
82375 -@@ -2687,10 +2828,16 @@ static const char *get_ksymbol(struct mo
82376 +@@ -2989,10 +3106,16 @@ static const char *get_ksymbol(struct mo
82377 unsigned long nextval;
82378
82379 /* At worse, next value is at end of module */
82380 @@ -68226,9 +64557,9 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82381 - nextval = (unsigned long)mod->module_core+mod->core_text_size;
82382 + return NULL;
82383
82384 - /* Scan for closest preceeding symbol, and next symbol. (ELF
82385 + /* Scan for closest preceding symbol, and next symbol. (ELF
82386 starts real symbols at 1). */
82387 -@@ -2936,7 +3083,7 @@ static int m_show(struct seq_file *m, vo
82388 +@@ -3238,7 +3361,7 @@ static int m_show(struct seq_file *m, vo
82389 char buf[8];
82390
82391 seq_printf(m, "%s %u",
82392 @@ -68237,16 +64568,16 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82393 print_unload_info(m, mod);
82394
82395 /* Informative for users. */
82396 -@@ -2945,7 +3092,7 @@ static int m_show(struct seq_file *m, vo
82397 +@@ -3247,7 +3370,7 @@ static int m_show(struct seq_file *m, vo
82398 mod->state == MODULE_STATE_COMING ? "Loading":
82399 "Live");
82400 /* Used by oprofile and other similar tools. */
82401 -- seq_printf(m, " 0x%p", mod->module_core);
82402 -+ seq_printf(m, " 0x%p 0x%p", mod->module_core_rx, mod->module_core_rw);
82403 +- seq_printf(m, " 0x%pK", mod->module_core);
82404 ++ seq_printf(m, " 0x%pK 0x%pK", mod->module_core_rx, mod->module_core_rw);
82405
82406 /* Taints info */
82407 if (mod->taints)
82408 -@@ -2981,7 +3128,17 @@ static const struct file_operations proc
82409 +@@ -3283,7 +3406,17 @@ static const struct file_operations proc
82410
82411 static int __init proc_modules_init(void)
82412 {
82413 @@ -68264,7 +64595,7 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82414 return 0;
82415 }
82416 module_init(proc_modules_init);
82417 -@@ -3040,12 +3197,12 @@ struct module *__module_address(unsigned
82418 +@@ -3342,12 +3475,12 @@ struct module *__module_address(unsigned
82419 {
82420 struct module *mod;
82421
82422 @@ -68280,7 +64611,7 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82423 return mod;
82424 return NULL;
82425 }
82426 -@@ -3079,11 +3236,20 @@ bool is_module_text_address(unsigned lon
82427 +@@ -3381,11 +3514,20 @@ bool is_module_text_address(unsigned lon
82428 */
82429 struct module *__module_text_address(unsigned long addr)
82430 {
82431 @@ -68304,19 +64635,10 @@ diff -urNp linux-2.6.32.48/kernel/module.c linux-2.6.32.48/kernel/module.c
82432 mod = NULL;
82433 }
82434 return mod;
82435 -diff -urNp linux-2.6.32.48/kernel/mutex.c linux-2.6.32.48/kernel/mutex.c
82436 ---- linux-2.6.32.48/kernel/mutex.c 2011-11-12 12:44:30.000000000 -0500
82437 -+++ linux-2.6.32.48/kernel/mutex.c 2011-11-12 12:46:47.000000000 -0500
82438 -@@ -169,7 +169,7 @@ __mutex_lock_common(struct mutex *lock,
82439 - */
82440 -
82441 - for (;;) {
82442 -- struct thread_info *owner;
82443 -+ struct task_struct *owner;
82444 -
82445 - /*
82446 - * If we own the BKL, then don't spin. The owner of
82447 -@@ -214,7 +214,7 @@ __mutex_lock_common(struct mutex *lock,
82448 +diff -urNp linux-3.0.8/kernel/mutex.c linux-3.0.8/kernel/mutex.c
82449 +--- linux-3.0.8/kernel/mutex.c 2011-07-21 22:17:23.000000000 -0400
82450 ++++ linux-3.0.8/kernel/mutex.c 2011-08-23 21:47:56.000000000 -0400
82451 +@@ -198,7 +198,7 @@ __mutex_lock_common(struct mutex *lock,
82452 spin_lock_mutex(&lock->wait_lock, flags);
82453
82454 debug_mutex_lock_common(lock, &waiter);
82455 @@ -68325,7 +64647,7 @@ diff -urNp linux-2.6.32.48/kernel/mutex.c linux-2.6.32.48/kernel/mutex.c
82456
82457 /* add waiting tasks to the end of the waitqueue (FIFO): */
82458 list_add_tail(&waiter.list, &lock->wait_list);
82459 -@@ -243,8 +243,7 @@ __mutex_lock_common(struct mutex *lock,
82460 +@@ -227,8 +227,7 @@ __mutex_lock_common(struct mutex *lock,
82461 * TASK_UNINTERRUPTIBLE case.)
82462 */
82463 if (unlikely(signal_pending_state(state, task))) {
82464 @@ -68335,7 +64657,7 @@ diff -urNp linux-2.6.32.48/kernel/mutex.c linux-2.6.32.48/kernel/mutex.c
82465 mutex_release(&lock->dep_map, 1, ip);
82466 spin_unlock_mutex(&lock->wait_lock, flags);
82467
82468 -@@ -265,7 +264,7 @@ __mutex_lock_common(struct mutex *lock,
82469 +@@ -249,7 +248,7 @@ __mutex_lock_common(struct mutex *lock,
82470 done:
82471 lock_acquired(&lock->dep_map, ip);
82472 /* got the lock - rejoice! */
82473 @@ -68344,9 +64666,9 @@ diff -urNp linux-2.6.32.48/kernel/mutex.c linux-2.6.32.48/kernel/mutex.c
82474 mutex_set_owner(lock);
82475
82476 /* set it to 0 if there are no waiters left: */
82477 -diff -urNp linux-2.6.32.48/kernel/mutex-debug.c linux-2.6.32.48/kernel/mutex-debug.c
82478 ---- linux-2.6.32.48/kernel/mutex-debug.c 2009-12-02 22:51:21.000000000 -0500
82479 -+++ linux-2.6.32.48/kernel/mutex-debug.c 2011-11-12 12:46:47.000000000 -0500
82480 +diff -urNp linux-3.0.8/kernel/mutex-debug.c linux-3.0.8/kernel/mutex-debug.c
82481 +--- linux-3.0.8/kernel/mutex-debug.c 2011-07-21 22:17:23.000000000 -0400
82482 ++++ linux-3.0.8/kernel/mutex-debug.c 2011-08-23 21:47:56.000000000 -0400
82483 @@ -49,21 +49,21 @@ void debug_mutex_free_waiter(struct mute
82484 }
82485
82486 @@ -68375,19 +64697,10 @@ diff -urNp linux-2.6.32.48/kernel/mutex-debug.c linux-2.6.32.48/kernel/mutex-deb
82487
82488 list_del_init(&waiter->list);
82489 waiter->task = NULL;
82490 -@@ -75,7 +75,7 @@ void debug_mutex_unlock(struct mutex *lo
82491 - return;
82492 -
82493 - DEBUG_LOCKS_WARN_ON(lock->magic != lock);
82494 -- DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
82495 -+ DEBUG_LOCKS_WARN_ON(lock->owner != current);
82496 - DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
82497 - mutex_clear_owner(lock);
82498 - }
82499 -diff -urNp linux-2.6.32.48/kernel/mutex-debug.h linux-2.6.32.48/kernel/mutex-debug.h
82500 ---- linux-2.6.32.48/kernel/mutex-debug.h 2009-12-02 22:51:21.000000000 -0500
82501 -+++ linux-2.6.32.48/kernel/mutex-debug.h 2011-11-12 12:46:47.000000000 -0500
82502 -@@ -20,16 +20,16 @@ extern void debug_mutex_wake_waiter(stru
82503 +diff -urNp linux-3.0.8/kernel/mutex-debug.h linux-3.0.8/kernel/mutex-debug.h
82504 +--- linux-3.0.8/kernel/mutex-debug.h 2011-07-21 22:17:23.000000000 -0400
82505 ++++ linux-3.0.8/kernel/mutex-debug.h 2011-08-23 21:47:56.000000000 -0400
82506 +@@ -20,9 +20,9 @@ extern void debug_mutex_wake_waiter(stru
82507 extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
82508 extern void debug_mutex_add_waiter(struct mutex *lock,
82509 struct mutex_waiter *waiter,
82510 @@ -68399,30 +64712,36 @@ diff -urNp linux-2.6.32.48/kernel/mutex-debug.h linux-2.6.32.48/kernel/mutex-deb
82511 extern void debug_mutex_unlock(struct mutex *lock);
82512 extern void debug_mutex_init(struct mutex *lock, const char *name,
82513 struct lock_class_key *key);
82514 -
82515 - static inline void mutex_set_owner(struct mutex *lock)
82516 - {
82517 -- lock->owner = current_thread_info();
82518 -+ lock->owner = current;
82519 - }
82520 -
82521 - static inline void mutex_clear_owner(struct mutex *lock)
82522 -diff -urNp linux-2.6.32.48/kernel/mutex.h linux-2.6.32.48/kernel/mutex.h
82523 ---- linux-2.6.32.48/kernel/mutex.h 2009-12-02 22:51:21.000000000 -0500
82524 -+++ linux-2.6.32.48/kernel/mutex.h 2011-11-12 12:46:47.000000000 -0500
82525 -@@ -19,7 +19,7 @@
82526 - #ifdef CONFIG_SMP
82527 - static inline void mutex_set_owner(struct mutex *lock)
82528 - {
82529 -- lock->owner = current_thread_info();
82530 -+ lock->owner = current;
82531 - }
82532 -
82533 - static inline void mutex_clear_owner(struct mutex *lock)
82534 -diff -urNp linux-2.6.32.48/kernel/panic.c linux-2.6.32.48/kernel/panic.c
82535 ---- linux-2.6.32.48/kernel/panic.c 2009-12-02 22:51:21.000000000 -0500
82536 -+++ linux-2.6.32.48/kernel/panic.c 2011-11-12 12:46:47.000000000 -0500
82537 -@@ -352,7 +352,7 @@ static void warn_slowpath_common(const c
82538 +diff -urNp linux-3.0.8/kernel/padata.c linux-3.0.8/kernel/padata.c
82539 +--- linux-3.0.8/kernel/padata.c 2011-07-21 22:17:23.000000000 -0400
82540 ++++ linux-3.0.8/kernel/padata.c 2011-08-23 21:47:56.000000000 -0400
82541 +@@ -132,10 +132,10 @@ int padata_do_parallel(struct padata_ins
82542 + padata->pd = pd;
82543 + padata->cb_cpu = cb_cpu;
82544 +
82545 +- if (unlikely(atomic_read(&pd->seq_nr) == pd->max_seq_nr))
82546 +- atomic_set(&pd->seq_nr, -1);
82547 ++ if (unlikely(atomic_read_unchecked(&pd->seq_nr) == pd->max_seq_nr))
82548 ++ atomic_set_unchecked(&pd->seq_nr, -1);
82549 +
82550 +- padata->seq_nr = atomic_inc_return(&pd->seq_nr);
82551 ++ padata->seq_nr = atomic_inc_return_unchecked(&pd->seq_nr);
82552 +
82553 + target_cpu = padata_cpu_hash(padata);
82554 + queue = per_cpu_ptr(pd->pqueue, target_cpu);
82555 +@@ -444,7 +444,7 @@ static struct parallel_data *padata_allo
82556 + padata_init_pqueues(pd);
82557 + padata_init_squeues(pd);
82558 + setup_timer(&pd->timer, padata_reorder_timer, (unsigned long)pd);
82559 +- atomic_set(&pd->seq_nr, -1);
82560 ++ atomic_set_unchecked(&pd->seq_nr, -1);
82561 + atomic_set(&pd->reorder_objects, 0);
82562 + atomic_set(&pd->refcnt, 0);
82563 + pd->pinst = pinst;
82564 +diff -urNp linux-3.0.8/kernel/panic.c linux-3.0.8/kernel/panic.c
82565 +--- linux-3.0.8/kernel/panic.c 2011-07-21 22:17:23.000000000 -0400
82566 ++++ linux-3.0.8/kernel/panic.c 2011-08-23 21:48:14.000000000 -0400
82567 +@@ -369,7 +369,7 @@ static void warn_slowpath_common(const c
82568 const char *board;
82569
82570 printk(KERN_WARNING "------------[ cut here ]------------\n");
82571 @@ -68431,7 +64750,7 @@ diff -urNp linux-2.6.32.48/kernel/panic.c linux-2.6.32.48/kernel/panic.c
82572 board = dmi_get_system_info(DMI_PRODUCT_NAME);
82573 if (board)
82574 printk(KERN_WARNING "Hardware name: %s\n", board);
82575 -@@ -392,7 +392,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
82576 +@@ -424,7 +424,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
82577 */
82578 void __stack_chk_fail(void)
82579 {
82580 @@ -68441,253 +64760,9 @@ diff -urNp linux-2.6.32.48/kernel/panic.c linux-2.6.32.48/kernel/panic.c
82581 __builtin_return_address(0));
82582 }
82583 EXPORT_SYMBOL(__stack_chk_fail);
82584 -diff -urNp linux-2.6.32.48/kernel/params.c linux-2.6.32.48/kernel/params.c
82585 ---- linux-2.6.32.48/kernel/params.c 2009-12-02 22:51:21.000000000 -0500
82586 -+++ linux-2.6.32.48/kernel/params.c 2011-11-12 12:46:47.000000000 -0500
82587 -@@ -725,7 +725,7 @@ static ssize_t module_attr_store(struct
82588 - return ret;
82589 - }
82590 -
82591 --static struct sysfs_ops module_sysfs_ops = {
82592 -+static const struct sysfs_ops module_sysfs_ops = {
82593 - .show = module_attr_show,
82594 - .store = module_attr_store,
82595 - };
82596 -@@ -739,7 +739,7 @@ static int uevent_filter(struct kset *ks
82597 - return 0;
82598 - }
82599 -
82600 --static struct kset_uevent_ops module_uevent_ops = {
82601 -+static const struct kset_uevent_ops module_uevent_ops = {
82602 - .filter = uevent_filter,
82603 - };
82604 -
82605 -diff -urNp linux-2.6.32.48/kernel/perf_event.c linux-2.6.32.48/kernel/perf_event.c
82606 ---- linux-2.6.32.48/kernel/perf_event.c 2011-11-12 12:44:30.000000000 -0500
82607 -+++ linux-2.6.32.48/kernel/perf_event.c 2011-11-12 12:46:47.000000000 -0500
82608 -@@ -77,7 +77,7 @@ int sysctl_perf_event_mlock __read_mostl
82609 - */
82610 - int sysctl_perf_event_sample_rate __read_mostly = 100000;
82611 -
82612 --static atomic64_t perf_event_id;
82613 -+static atomic64_unchecked_t perf_event_id;
82614 -
82615 - /*
82616 - * Lock for (sysadmin-configurable) event reservations:
82617 -@@ -1094,9 +1094,9 @@ static void __perf_event_sync_stat(struc
82618 - * In order to keep per-task stats reliable we need to flip the event
82619 - * values when we flip the contexts.
82620 - */
82621 -- value = atomic64_read(&next_event->count);
82622 -- value = atomic64_xchg(&event->count, value);
82623 -- atomic64_set(&next_event->count, value);
82624 -+ value = atomic64_read_unchecked(&next_event->count);
82625 -+ value = atomic64_xchg_unchecked(&event->count, value);
82626 -+ atomic64_set_unchecked(&next_event->count, value);
82627 -
82628 - swap(event->total_time_enabled, next_event->total_time_enabled);
82629 - swap(event->total_time_running, next_event->total_time_running);
82630 -@@ -1552,7 +1552,7 @@ static u64 perf_event_read(struct perf_e
82631 - update_event_times(event);
82632 - }
82633 -
82634 -- return atomic64_read(&event->count);
82635 -+ return atomic64_read_unchecked(&event->count);
82636 - }
82637 -
82638 - /*
82639 -@@ -1790,11 +1790,11 @@ static int perf_event_read_group(struct
82640 - values[n++] = 1 + leader->nr_siblings;
82641 - if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
82642 - values[n++] = leader->total_time_enabled +
82643 -- atomic64_read(&leader->child_total_time_enabled);
82644 -+ atomic64_read_unchecked(&leader->child_total_time_enabled);
82645 - }
82646 - if (read_format & PERF_FORMAT_TOTAL_TIME_RUNNING) {
82647 - values[n++] = leader->total_time_running +
82648 -- atomic64_read(&leader->child_total_time_running);
82649 -+ atomic64_read_unchecked(&leader->child_total_time_running);
82650 - }
82651 -
82652 - size = n * sizeof(u64);
82653 -@@ -1829,11 +1829,11 @@ static int perf_event_read_one(struct pe
82654 - values[n++] = perf_event_read_value(event);
82655 - if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
82656 - values[n++] = event->total_time_enabled +
82657 -- atomic64_read(&event->child_total_time_enabled);
82658 -+ atomic64_read_unchecked(&event->child_total_time_enabled);
82659 - }
82660 - if (read_format & PERF_FORMAT_TOTAL_TIME_RUNNING) {
82661 - values[n++] = event->total_time_running +
82662 -- atomic64_read(&event->child_total_time_running);
82663 -+ atomic64_read_unchecked(&event->child_total_time_running);
82664 - }
82665 - if (read_format & PERF_FORMAT_ID)
82666 - values[n++] = primary_event_id(event);
82667 -@@ -1903,7 +1903,7 @@ static unsigned int perf_poll(struct fil
82668 - static void perf_event_reset(struct perf_event *event)
82669 - {
82670 - (void)perf_event_read(event);
82671 -- atomic64_set(&event->count, 0);
82672 -+ atomic64_set_unchecked(&event->count, 0);
82673 - perf_event_update_userpage(event);
82674 - }
82675 -
82676 -@@ -2079,15 +2079,15 @@ void perf_event_update_userpage(struct p
82677 - ++userpg->lock;
82678 - barrier();
82679 - userpg->index = perf_event_index(event);
82680 -- userpg->offset = atomic64_read(&event->count);
82681 -+ userpg->offset = atomic64_read_unchecked(&event->count);
82682 - if (event->state == PERF_EVENT_STATE_ACTIVE)
82683 -- userpg->offset -= atomic64_read(&event->hw.prev_count);
82684 -+ userpg->offset -= atomic64_read_unchecked(&event->hw.prev_count);
82685 -
82686 - userpg->time_enabled = event->total_time_enabled +
82687 -- atomic64_read(&event->child_total_time_enabled);
82688 -+ atomic64_read_unchecked(&event->child_total_time_enabled);
82689 -
82690 - userpg->time_running = event->total_time_running +
82691 -- atomic64_read(&event->child_total_time_running);
82692 -+ atomic64_read_unchecked(&event->child_total_time_running);
82693 -
82694 - barrier();
82695 - ++userpg->lock;
82696 -@@ -2903,14 +2903,14 @@ static void perf_output_read_one(struct
82697 - u64 values[4];
82698 - int n = 0;
82699 -
82700 -- values[n++] = atomic64_read(&event->count);
82701 -+ values[n++] = atomic64_read_unchecked(&event->count);
82702 - if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
82703 - values[n++] = event->total_time_enabled +
82704 -- atomic64_read(&event->child_total_time_enabled);
82705 -+ atomic64_read_unchecked(&event->child_total_time_enabled);
82706 - }
82707 - if (read_format & PERF_FORMAT_TOTAL_TIME_RUNNING) {
82708 - values[n++] = event->total_time_running +
82709 -- atomic64_read(&event->child_total_time_running);
82710 -+ atomic64_read_unchecked(&event->child_total_time_running);
82711 - }
82712 - if (read_format & PERF_FORMAT_ID)
82713 - values[n++] = primary_event_id(event);
82714 -@@ -2940,7 +2940,7 @@ static void perf_output_read_group(struc
82715 - if (leader != event)
82716 - leader->pmu->read(leader);
82717 -
82718 -- values[n++] = atomic64_read(&leader->count);
82719 -+ values[n++] = atomic64_read_unchecked(&leader->count);
82720 - if (read_format & PERF_FORMAT_ID)
82721 - values[n++] = primary_event_id(leader);
82722 -
82723 -@@ -2952,7 +2952,7 @@ static void perf_output_read_group(struc
82724 - if (sub != event)
82725 - sub->pmu->read(sub);
82726 -
82727 -- values[n++] = atomic64_read(&sub->count);
82728 -+ values[n++] = atomic64_read_unchecked(&sub->count);
82729 - if (read_format & PERF_FORMAT_ID)
82730 - values[n++] = primary_event_id(sub);
82731 -
82732 -@@ -3525,12 +3525,12 @@ static void perf_event_mmap_event(struct
82733 - * need to add enough zero bytes after the string to handle
82734 - * the 64bit alignment we do later.
82735 - */
82736 -- buf = kzalloc(PATH_MAX + sizeof(u64), GFP_KERNEL);
82737 -+ buf = kzalloc(PATH_MAX, GFP_KERNEL);
82738 - if (!buf) {
82739 - name = strncpy(tmp, "//enomem", sizeof(tmp));
82740 - goto got_name;
82741 - }
82742 -- name = d_path(&file->f_path, buf, PATH_MAX);
82743 -+ name = d_path(&file->f_path, buf, PATH_MAX - sizeof(u64));
82744 - if (IS_ERR(name)) {
82745 - name = strncpy(tmp, "//toolong", sizeof(tmp));
82746 - goto got_name;
82747 -@@ -3783,7 +3783,7 @@ static void perf_swevent_add(struct perf
82748 - {
82749 - struct hw_perf_event *hwc = &event->hw;
82750 -
82751 -- atomic64_add(nr, &event->count);
82752 -+ atomic64_add_unchecked(nr, &event->count);
82753 -
82754 - if (!hwc->sample_period)
82755 - return;
82756 -@@ -4040,9 +4040,9 @@ static void cpu_clock_perf_event_update(
82757 - u64 now;
82758 -
82759 - now = cpu_clock(cpu);
82760 -- prev = atomic64_read(&event->hw.prev_count);
82761 -- atomic64_set(&event->hw.prev_count, now);
82762 -- atomic64_add(now - prev, &event->count);
82763 -+ prev = atomic64_read_unchecked(&event->hw.prev_count);
82764 -+ atomic64_set_unchecked(&event->hw.prev_count, now);
82765 -+ atomic64_add_unchecked(now - prev, &event->count);
82766 - }
82767 -
82768 - static int cpu_clock_perf_event_enable(struct perf_event *event)
82769 -@@ -4050,7 +4050,7 @@ static int cpu_clock_perf_event_enable(s
82770 - struct hw_perf_event *hwc = &event->hw;
82771 - int cpu = raw_smp_processor_id();
82772 -
82773 -- atomic64_set(&hwc->prev_count, cpu_clock(cpu));
82774 -+ atomic64_set_unchecked(&hwc->prev_count, cpu_clock(cpu));
82775 - perf_swevent_start_hrtimer(event);
82776 -
82777 - return 0;
82778 -@@ -4082,9 +4082,9 @@ static void task_clock_perf_event_update
82779 - u64 prev;
82780 - s64 delta;
82781 -
82782 -- prev = atomic64_xchg(&event->hw.prev_count, now);
82783 -+ prev = atomic64_xchg_unchecked(&event->hw.prev_count, now);
82784 - delta = now - prev;
82785 -- atomic64_add(delta, &event->count);
82786 -+ atomic64_add_unchecked(delta, &event->count);
82787 - }
82788 -
82789 - static int task_clock_perf_event_enable(struct perf_event *event)
82790 -@@ -4094,7 +4094,7 @@ static int task_clock_perf_event_enable(
82791 -
82792 - now = event->ctx->time;
82793 -
82794 -- atomic64_set(&hwc->prev_count, now);
82795 -+ atomic64_set_unchecked(&hwc->prev_count, now);
82796 -
82797 - perf_swevent_start_hrtimer(event);
82798 -
82799 -@@ -4289,7 +4289,7 @@ perf_event_alloc(struct perf_event_attr
82800 - event->parent = parent_event;
82801 -
82802 - event->ns = get_pid_ns(current->nsproxy->pid_ns);
82803 -- event->id = atomic64_inc_return(&perf_event_id);
82804 -+ event->id = atomic64_inc_return_unchecked(&perf_event_id);
82805 -
82806 - event->state = PERF_EVENT_STATE_INACTIVE;
82807 -
82808 -@@ -4720,15 +4720,15 @@ static void sync_child_event(struct perf
82809 - if (child_event->attr.inherit_stat)
82810 - perf_event_read_event(child_event, child);
82811 -
82812 -- child_val = atomic64_read(&child_event->count);
82813 -+ child_val = atomic64_read_unchecked(&child_event->count);
82814 -
82815 - /*
82816 - * Add back the child's count to the parent's count:
82817 - */
82818 -- atomic64_add(child_val, &parent_event->count);
82819 -- atomic64_add(child_event->total_time_enabled,
82820 -+ atomic64_add_unchecked(child_val, &parent_event->count);
82821 -+ atomic64_add_unchecked(child_event->total_time_enabled,
82822 - &parent_event->child_total_time_enabled);
82823 -- atomic64_add(child_event->total_time_running,
82824 -+ atomic64_add_unchecked(child_event->total_time_running,
82825 - &parent_event->child_total_time_running);
82826 -
82827 - /*
82828 -diff -urNp linux-2.6.32.48/kernel/pid.c linux-2.6.32.48/kernel/pid.c
82829 ---- linux-2.6.32.48/kernel/pid.c 2011-11-12 12:44:30.000000000 -0500
82830 -+++ linux-2.6.32.48/kernel/pid.c 2011-11-12 12:46:47.000000000 -0500
82831 +diff -urNp linux-3.0.8/kernel/pid.c linux-3.0.8/kernel/pid.c
82832 +--- linux-3.0.8/kernel/pid.c 2011-07-21 22:17:23.000000000 -0400
82833 ++++ linux-3.0.8/kernel/pid.c 2011-08-23 21:48:14.000000000 -0400
82834 @@ -33,6 +33,7 @@
82835 #include <linux/rculist.h>
82836 #include <linux/bootmem.h>
82837 @@ -68705,13 +64780,14 @@ diff -urNp linux-2.6.32.48/kernel/pid.c linux-2.6.32.48/kernel/pid.c
82838
82839 int pid_max_min = RESERVED_PIDS + 1;
82840 int pid_max_max = PID_MAX_LIMIT;
82841 -@@ -383,7 +384,14 @@ EXPORT_SYMBOL(pid_task);
82842 +@@ -419,8 +420,15 @@ EXPORT_SYMBOL(pid_task);
82843 */
82844 struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns)
82845 {
82846 -- return pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
82847 + struct task_struct *task;
82848 -+
82849 ++
82850 + rcu_lockdep_assert(rcu_read_lock_held());
82851 +- return pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
82852 + task = pid_task(find_pid_ns(nr, ns), PIDTYPE_PID);
82853 +
82854 + if (gr_pid_is_chrooted(task))
82855 @@ -68721,21 +64797,22 @@ diff -urNp linux-2.6.32.48/kernel/pid.c linux-2.6.32.48/kernel/pid.c
82856 }
82857
82858 struct task_struct *find_task_by_vpid(pid_t vnr)
82859 -@@ -391,6 +399,11 @@ struct task_struct *find_task_by_vpid(pi
82860 +@@ -428,6 +436,12 @@ struct task_struct *find_task_by_vpid(pi
82861 return find_task_by_pid_ns(vnr, current->nsproxy->pid_ns);
82862 }
82863
82864 +struct task_struct *find_task_by_vpid_unrestricted(pid_t vnr)
82865 +{
82866 ++ rcu_lockdep_assert(rcu_read_lock_held());
82867 + return pid_task(find_pid_ns(vnr, current->nsproxy->pid_ns), PIDTYPE_PID);
82868 +}
82869 +
82870 struct pid *get_task_pid(struct task_struct *task, enum pid_type type)
82871 {
82872 struct pid *pid;
82873 -diff -urNp linux-2.6.32.48/kernel/posix-cpu-timers.c linux-2.6.32.48/kernel/posix-cpu-timers.c
82874 ---- linux-2.6.32.48/kernel/posix-cpu-timers.c 2009-12-02 22:51:21.000000000 -0500
82875 -+++ linux-2.6.32.48/kernel/posix-cpu-timers.c 2011-11-12 12:46:47.000000000 -0500
82876 +diff -urNp linux-3.0.8/kernel/posix-cpu-timers.c linux-3.0.8/kernel/posix-cpu-timers.c
82877 +--- linux-3.0.8/kernel/posix-cpu-timers.c 2011-10-25 09:10:33.000000000 -0400
82878 ++++ linux-3.0.8/kernel/posix-cpu-timers.c 2011-10-25 09:10:41.000000000 -0400
82879 @@ -6,6 +6,7 @@
82880 #include <linux/posix-timers.h>
82881 #include <linux/errno.h>
82882 @@ -68744,36 +64821,35 @@ diff -urNp linux-2.6.32.48/kernel/posix-cpu-timers.c linux-2.6.32.48/kernel/posi
82883 #include <asm/uaccess.h>
82884 #include <linux/kernel_stat.h>
82885 #include <trace/events/timer.h>
82886 -@@ -1697,7 +1698,7 @@ static long thread_cpu_nsleep_restart(st
82887 +@@ -1606,14 +1607,14 @@ struct k_clock clock_posix_cpu = {
82888
82889 static __init int init_posix_cpu_timers(void)
82890 {
82891 - struct k_clock process = {
82892 + static struct k_clock process = {
82893 - .clock_getres = process_cpu_clock_getres,
82894 - .clock_get = process_cpu_clock_get,
82895 - .clock_set = do_posix_clock_nosettime,
82896 -@@ -1705,7 +1706,7 @@ static __init int init_posix_cpu_timers(
82897 - .nsleep = process_cpu_nsleep,
82898 - .nsleep_restart = process_cpu_nsleep_restart,
82899 + .clock_getres = process_cpu_clock_getres,
82900 + .clock_get = process_cpu_clock_get,
82901 + .timer_create = process_cpu_timer_create,
82902 + .nsleep = process_cpu_nsleep,
82903 + .nsleep_restart = process_cpu_nsleep_restart,
82904 };
82905 - struct k_clock thread = {
82906 + static struct k_clock thread = {
82907 - .clock_getres = thread_cpu_clock_getres,
82908 - .clock_get = thread_cpu_clock_get,
82909 - .clock_set = do_posix_clock_nosettime,
82910 -diff -urNp linux-2.6.32.48/kernel/posix-timers.c linux-2.6.32.48/kernel/posix-timers.c
82911 ---- linux-2.6.32.48/kernel/posix-timers.c 2011-11-12 12:44:30.000000000 -0500
82912 -+++ linux-2.6.32.48/kernel/posix-timers.c 2011-11-12 12:46:47.000000000 -0500
82913 -@@ -42,6 +42,7 @@
82914 - #include <linux/compiler.h>
82915 + .clock_getres = thread_cpu_clock_getres,
82916 + .clock_get = thread_cpu_clock_get,
82917 + .timer_create = thread_cpu_timer_create,
82918 +diff -urNp linux-3.0.8/kernel/posix-timers.c linux-3.0.8/kernel/posix-timers.c
82919 +--- linux-3.0.8/kernel/posix-timers.c 2011-07-21 22:17:23.000000000 -0400
82920 ++++ linux-3.0.8/kernel/posix-timers.c 2011-08-23 21:48:14.000000000 -0400
82921 +@@ -43,6 +43,7 @@
82922 #include <linux/idr.h>
82923 + #include <linux/posix-clock.h>
82924 #include <linux/posix-timers.h>
82925 +#include <linux/grsecurity.h>
82926 #include <linux/syscalls.h>
82927 #include <linux/wait.h>
82928 #include <linux/workqueue.h>
82929 -@@ -131,7 +132,7 @@ static DEFINE_SPINLOCK(idr_lock);
82930 +@@ -129,7 +130,7 @@ static DEFINE_SPINLOCK(idr_lock);
82931 * which we beg off on and pass to do_sys_settimeofday().
82932 */
82933
82934 @@ -68782,94 +64858,79 @@ diff -urNp linux-2.6.32.48/kernel/posix-timers.c linux-2.6.32.48/kernel/posix-ti
82935
82936 /*
82937 * These ones are defined below.
82938 -@@ -157,8 +158,8 @@ static inline void unlock_timer(struct k
82939 - */
82940 - #define CLOCK_DISPATCH(clock, call, arglist) \
82941 - ((clock) < 0 ? posix_cpu_##call arglist : \
82942 -- (posix_clocks[clock].call != NULL \
82943 -- ? (*posix_clocks[clock].call) arglist : common_##call arglist))
82944 -+ (posix_clocks[clock]->call != NULL \
82945 -+ ? (*posix_clocks[clock]->call) arglist : common_##call arglist))
82946 -
82947 - /*
82948 - * Default clock hook functions when the struct k_clock passed
82949 -@@ -172,7 +173,7 @@ static inline int common_clock_getres(co
82950 - struct timespec *tp)
82951 - {
82952 - tp->tv_sec = 0;
82953 -- tp->tv_nsec = posix_clocks[which_clock].res;
82954 -+ tp->tv_nsec = posix_clocks[which_clock]->res;
82955 - return 0;
82956 - }
82957 -
82958 -@@ -217,9 +218,11 @@ static inline int invalid_clockid(const
82959 - return 0;
82960 - if ((unsigned) which_clock >= MAX_CLOCKS)
82961 - return 1;
82962 -- if (posix_clocks[which_clock].clock_getres != NULL)
82963 -+ if (posix_clocks[which_clock] == NULL)
82964 - return 0;
82965 -- if (posix_clocks[which_clock].res != 0)
82966 -+ if (posix_clocks[which_clock]->clock_getres != NULL)
82967 -+ return 0;
82968 -+ if (posix_clocks[which_clock]->res != 0)
82969 - return 0;
82970 - return 1;
82971 - }
82972 -@@ -266,29 +269,29 @@ int posix_get_coarse_res(const clockid_t
82973 +@@ -227,7 +228,7 @@ static int posix_get_boottime(const cloc
82974 */
82975 static __init int init_posix_timers(void)
82976 {
82977 - struct k_clock clock_realtime = {
82978 + static struct k_clock clock_realtime = {
82979 - .clock_getres = hrtimer_get_res,
82980 + .clock_getres = hrtimer_get_res,
82981 + .clock_get = posix_clock_realtime_get,
82982 + .clock_set = posix_clock_realtime_set,
82983 +@@ -239,7 +240,7 @@ static __init int init_posix_timers(void
82984 + .timer_get = common_timer_get,
82985 + .timer_del = common_timer_del,
82986 };
82987 - struct k_clock clock_monotonic = {
82988 + static struct k_clock clock_monotonic = {
82989 - .clock_getres = hrtimer_get_res,
82990 - .clock_get = posix_ktime_get_ts,
82991 - .clock_set = do_posix_clock_nosettime,
82992 + .clock_getres = hrtimer_get_res,
82993 + .clock_get = posix_ktime_get_ts,
82994 + .nsleep = common_nsleep,
82995 +@@ -249,19 +250,19 @@ static __init int init_posix_timers(void
82996 + .timer_get = common_timer_get,
82997 + .timer_del = common_timer_del,
82998 };
82999 - struct k_clock clock_monotonic_raw = {
83000 + static struct k_clock clock_monotonic_raw = {
83001 - .clock_getres = hrtimer_get_res,
83002 - .clock_get = posix_get_monotonic_raw,
83003 - .clock_set = do_posix_clock_nosettime,
83004 - .timer_create = no_timer_create,
83005 - .nsleep = no_nsleep,
83006 + .clock_getres = hrtimer_get_res,
83007 + .clock_get = posix_get_monotonic_raw,
83008 };
83009 - struct k_clock clock_realtime_coarse = {
83010 + static struct k_clock clock_realtime_coarse = {
83011 - .clock_getres = posix_get_coarse_res,
83012 - .clock_get = posix_get_realtime_coarse,
83013 - .clock_set = do_posix_clock_nosettime,
83014 - .timer_create = no_timer_create,
83015 - .nsleep = no_nsleep,
83016 + .clock_getres = posix_get_coarse_res,
83017 + .clock_get = posix_get_realtime_coarse,
83018 };
83019 - struct k_clock clock_monotonic_coarse = {
83020 + static struct k_clock clock_monotonic_coarse = {
83021 - .clock_getres = posix_get_coarse_res,
83022 - .clock_get = posix_get_monotonic_coarse,
83023 - .clock_set = do_posix_clock_nosettime,
83024 -@@ -296,6 +299,8 @@ static __init int init_posix_timers(void
83025 - .nsleep = no_nsleep,
83026 + .clock_getres = posix_get_coarse_res,
83027 + .clock_get = posix_get_monotonic_coarse,
83028 + };
83029 +- struct k_clock clock_boottime = {
83030 ++ static struct k_clock clock_boottime = {
83031 + .clock_getres = hrtimer_get_res,
83032 + .clock_get = posix_get_boottime,
83033 + .nsleep = common_nsleep,
83034 +@@ -272,6 +273,8 @@ static __init int init_posix_timers(void
83035 + .timer_del = common_timer_del,
83036 };
83037
83038 + pax_track_stack();
83039 +
83040 - register_posix_clock(CLOCK_REALTIME, &clock_realtime);
83041 - register_posix_clock(CLOCK_MONOTONIC, &clock_monotonic);
83042 - register_posix_clock(CLOCK_MONOTONIC_RAW, &clock_monotonic_raw);
83043 -@@ -484,7 +489,7 @@ void register_posix_clock(const clockid_
83044 + posix_timers_register_clock(CLOCK_REALTIME, &clock_realtime);
83045 + posix_timers_register_clock(CLOCK_MONOTONIC, &clock_monotonic);
83046 + posix_timers_register_clock(CLOCK_MONOTONIC_RAW, &clock_monotonic_raw);
83047 +@@ -473,7 +476,7 @@ void posix_timers_register_clock(const c
83048 return;
83049 }
83050
83051 - posix_clocks[clock_id] = *new_clock;
83052 + posix_clocks[clock_id] = new_clock;
83053 }
83054 - EXPORT_SYMBOL_GPL(register_posix_clock);
83055 + EXPORT_SYMBOL_GPL(posix_timers_register_clock);
83056
83057 -@@ -948,6 +953,13 @@ SYSCALL_DEFINE2(clock_settime, const clo
83058 +@@ -519,9 +522,9 @@ static struct k_clock *clockid_to_kclock
83059 + return (id & CLOCKFD_MASK) == CLOCKFD ?
83060 + &clock_posix_dynamic : &clock_posix_cpu;
83061 +
83062 +- if (id >= MAX_CLOCKS || !posix_clocks[id].clock_getres)
83063 ++ if (id >= MAX_CLOCKS || !posix_clocks[id] || !posix_clocks[id]->clock_getres)
83064 + return NULL;
83065 +- return &posix_clocks[id];
83066 ++ return posix_clocks[id];
83067 + }
83068 +
83069 + static int common_timer_create(struct k_itimer *new_timer)
83070 +@@ -959,6 +962,13 @@ SYSCALL_DEFINE2(clock_settime, const clo
83071 if (copy_from_user(&new_tp, tp, sizeof (*tp)))
83072 return -EFAULT;
83073
83074 @@ -68880,32 +64941,12 @@ diff -urNp linux-2.6.32.48/kernel/posix-timers.c linux-2.6.32.48/kernel/posix-ti
83075 + we hook
83076 + */
83077 +
83078 - return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp));
83079 + return kc->clock_set(which_clock, &new_tp);
83080 }
83081
83082 -diff -urNp linux-2.6.32.48/kernel/power/hibernate.c linux-2.6.32.48/kernel/power/hibernate.c
83083 ---- linux-2.6.32.48/kernel/power/hibernate.c 2009-12-02 22:51:21.000000000 -0500
83084 -+++ linux-2.6.32.48/kernel/power/hibernate.c 2011-11-12 12:46:47.000000000 -0500
83085 -@@ -48,14 +48,14 @@ enum {
83086 -
83087 - static int hibernation_mode = HIBERNATION_SHUTDOWN;
83088 -
83089 --static struct platform_hibernation_ops *hibernation_ops;
83090 -+static const struct platform_hibernation_ops *hibernation_ops;
83091 -
83092 - /**
83093 - * hibernation_set_ops - set the global hibernate operations
83094 - * @ops: the hibernation operations to use in subsequent hibernation transitions
83095 - */
83096 -
83097 --void hibernation_set_ops(struct platform_hibernation_ops *ops)
83098 -+void hibernation_set_ops(const struct platform_hibernation_ops *ops)
83099 - {
83100 - if (ops && !(ops->begin && ops->end && ops->pre_snapshot
83101 - && ops->prepare && ops->finish && ops->enter && ops->pre_restore
83102 -diff -urNp linux-2.6.32.48/kernel/power/poweroff.c linux-2.6.32.48/kernel/power/poweroff.c
83103 ---- linux-2.6.32.48/kernel/power/poweroff.c 2009-12-02 22:51:21.000000000 -0500
83104 -+++ linux-2.6.32.48/kernel/power/poweroff.c 2011-11-12 12:46:47.000000000 -0500
83105 +diff -urNp linux-3.0.8/kernel/power/poweroff.c linux-3.0.8/kernel/power/poweroff.c
83106 +--- linux-3.0.8/kernel/power/poweroff.c 2011-07-21 22:17:23.000000000 -0400
83107 ++++ linux-3.0.8/kernel/power/poweroff.c 2011-08-23 21:47:56.000000000 -0400
83108 @@ -37,7 +37,7 @@ static struct sysrq_key_op sysrq_powerof
83109 .enable_mask = SYSRQ_ENABLE_BOOT,
83110 };
83111 @@ -68915,28 +64956,29 @@ diff -urNp linux-2.6.32.48/kernel/power/poweroff.c linux-2.6.32.48/kernel/power/
83112 {
83113 register_sysrq_key('o', &sysrq_poweroff_op);
83114 return 0;
83115 -diff -urNp linux-2.6.32.48/kernel/power/process.c linux-2.6.32.48/kernel/power/process.c
83116 ---- linux-2.6.32.48/kernel/power/process.c 2011-11-12 12:44:30.000000000 -0500
83117 -+++ linux-2.6.32.48/kernel/power/process.c 2011-11-12 12:46:47.000000000 -0500
83118 -@@ -37,12 +37,15 @@ static int try_to_freeze_tasks(bool sig_
83119 - struct timeval start, end;
83120 +diff -urNp linux-3.0.8/kernel/power/process.c linux-3.0.8/kernel/power/process.c
83121 +--- linux-3.0.8/kernel/power/process.c 2011-07-21 22:17:23.000000000 -0400
83122 ++++ linux-3.0.8/kernel/power/process.c 2011-08-23 21:47:56.000000000 -0400
83123 +@@ -41,6 +41,7 @@ static int try_to_freeze_tasks(bool sig_
83124 u64 elapsed_csecs64;
83125 unsigned int elapsed_csecs;
83126 + bool wakeup = false;
83127 + bool timedout = false;
83128
83129 do_gettimeofday(&start);
83130
83131 - end_time = jiffies + TIMEOUT;
83132 - do {
83133 +@@ -51,6 +52,8 @@ static int try_to_freeze_tasks(bool sig_
83134 +
83135 + while (true) {
83136 todo = 0;
83137 + if (time_after(jiffies, end_time))
83138 + timedout = true;
83139 read_lock(&tasklist_lock);
83140 do_each_thread(g, p) {
83141 - if (frozen(p) || !freezeable(p))
83142 -@@ -57,15 +60,17 @@ static int try_to_freeze_tasks(bool sig_
83143 - * It is "frozen enough". If the task does wake
83144 - * up, it will immediately call try_to_freeze.
83145 + if (frozen(p) || !freezable(p))
83146 +@@ -71,9 +74,13 @@ static int try_to_freeze_tasks(bool sig_
83147 + * try_to_stop() after schedule() in ptrace/signal
83148 + * stop sees TIF_FREEZE.
83149 */
83150 - if (!task_is_stopped_or_traced(p) &&
83151 - !freezer_should_skip(p))
83152 @@ -68949,51 +64991,41 @@ diff -urNp linux-2.6.32.48/kernel/power/process.c linux-2.6.32.48/kernel/power/p
83153 + }
83154 } while_each_thread(g, p);
83155 read_unlock(&tasklist_lock);
83156 - yield(); /* Yield is okay here */
83157 -- if (time_after(jiffies, end_time))
83158 -- break;
83159 -- } while (todo);
83160 -+ } while (todo && !timedout);
83161 -
83162 - do_gettimeofday(&end);
83163 - elapsed_csecs64 = timeval_to_ns(&end) - timeval_to_ns(&start);
83164 -diff -urNp linux-2.6.32.48/kernel/power/suspend.c linux-2.6.32.48/kernel/power/suspend.c
83165 ---- linux-2.6.32.48/kernel/power/suspend.c 2009-12-02 22:51:21.000000000 -0500
83166 -+++ linux-2.6.32.48/kernel/power/suspend.c 2011-11-12 12:46:47.000000000 -0500
83167 -@@ -23,13 +23,13 @@ const char *const pm_states[PM_SUSPEND_M
83168 - [PM_SUSPEND_MEM] = "mem",
83169 - };
83170
83171 --static struct platform_suspend_ops *suspend_ops;
83172 -+static const struct platform_suspend_ops *suspend_ops;
83173 +@@ -82,7 +89,7 @@ static int try_to_freeze_tasks(bool sig_
83174 + todo += wq_busy;
83175 + }
83176
83177 - /**
83178 - * suspend_set_ops - Set the global suspend method table.
83179 - * @ops: Pointer to ops structure.
83180 - */
83181 --void suspend_set_ops(struct platform_suspend_ops *ops)
83182 -+void suspend_set_ops(const struct platform_suspend_ops *ops)
83183 - {
83184 - mutex_lock(&pm_mutex);
83185 - suspend_ops = ops;
83186 -diff -urNp linux-2.6.32.48/kernel/printk.c linux-2.6.32.48/kernel/printk.c
83187 ---- linux-2.6.32.48/kernel/printk.c 2011-11-12 12:44:30.000000000 -0500
83188 -+++ linux-2.6.32.48/kernel/printk.c 2011-11-12 12:46:47.000000000 -0500
83189 -@@ -278,6 +278,11 @@ int do_syslog(int type, char __user *buf
83190 - char c;
83191 - int error = 0;
83192 +- if (!todo || time_after(jiffies, end_time))
83193 ++ if (!todo || timedout)
83194 + break;
83195 +
83196 + if (pm_wakeup_pending()) {
83197 +diff -urNp linux-3.0.8/kernel/printk.c linux-3.0.8/kernel/printk.c
83198 +--- linux-3.0.8/kernel/printk.c 2011-10-24 08:05:30.000000000 -0400
83199 ++++ linux-3.0.8/kernel/printk.c 2011-10-16 21:55:28.000000000 -0400
83200 +@@ -313,12 +313,17 @@ static int check_syslog_permissions(int
83201 + if (from_file && type != SYSLOG_ACTION_OPEN)
83202 + return 0;
83203
83204 +#ifdef CONFIG_GRKERNSEC_DMESG
83205 -+ if (grsec_enable_dmesg && !capable(CAP_SYS_ADMIN))
83206 ++ if (grsec_enable_dmesg && !capable(CAP_SYSLOG) && !capable_nolog(CAP_SYS_ADMIN))
83207 + return -EPERM;
83208 +#endif
83209 +
83210 - error = security_syslog(type);
83211 - if (error)
83212 - return error;
83213 -diff -urNp linux-2.6.32.48/kernel/profile.c linux-2.6.32.48/kernel/profile.c
83214 ---- linux-2.6.32.48/kernel/profile.c 2011-11-12 12:44:30.000000000 -0500
83215 -+++ linux-2.6.32.48/kernel/profile.c 2011-11-12 12:46:47.000000000 -0500
83216 + if (syslog_action_restricted(type)) {
83217 + if (capable(CAP_SYSLOG))
83218 + return 0;
83219 + /* For historical reasons, accept CAP_SYS_ADMIN too, with a warning */
83220 + if (capable(CAP_SYS_ADMIN)) {
83221 +- WARN_ONCE(1, "Attempt to access syslog with CAP_SYS_ADMIN "
83222 ++ printk_once(KERN_WARNING "Attempt to access syslog with CAP_SYS_ADMIN "
83223 + "but no CAP_SYSLOG (deprecated).\n");
83224 + return 0;
83225 + }
83226 +diff -urNp linux-3.0.8/kernel/profile.c linux-3.0.8/kernel/profile.c
83227 +--- linux-3.0.8/kernel/profile.c 2011-07-21 22:17:23.000000000 -0400
83228 ++++ linux-3.0.8/kernel/profile.c 2011-08-23 21:47:56.000000000 -0400
83229 @@ -39,7 +39,7 @@ struct profile_hit {
83230 /* Oprofile timer tick hook */
83231 static int (*timer_hook)(struct pt_regs *) __read_mostly;
83232 @@ -69003,7 +65035,7 @@ diff -urNp linux-2.6.32.48/kernel/profile.c linux-2.6.32.48/kernel/profile.c
83233 static unsigned long prof_len, prof_shift;
83234
83235 int prof_on __read_mostly;
83236 -@@ -283,7 +283,7 @@ static void profile_flip_buffers(void)
83237 +@@ -281,7 +281,7 @@ static void profile_flip_buffers(void)
83238 hits[i].pc = 0;
83239 continue;
83240 }
83241 @@ -69012,7 +65044,7 @@ diff -urNp linux-2.6.32.48/kernel/profile.c linux-2.6.32.48/kernel/profile.c
83242 hits[i].hits = hits[i].pc = 0;
83243 }
83244 }
83245 -@@ -346,9 +346,9 @@ void profile_hits(int type, void *__pc,
83246 +@@ -342,9 +342,9 @@ static void do_profile_hits(int type, vo
83247 * Add the current hit(s) and flush the write-queue out
83248 * to the global buffer:
83249 */
83250 @@ -69024,15 +65056,15 @@ diff -urNp linux-2.6.32.48/kernel/profile.c linux-2.6.32.48/kernel/profile.c
83251 hits[i].pc = hits[i].hits = 0;
83252 }
83253 out:
83254 -@@ -426,7 +426,7 @@ void profile_hits(int type, void *__pc,
83255 - if (prof_on != type || !prof_buffer)
83256 - return;
83257 +@@ -419,7 +419,7 @@ static void do_profile_hits(int type, vo
83258 + {
83259 + unsigned long pc;
83260 pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift;
83261 - atomic_add(nr_hits, &prof_buffer[min(pc, prof_len - 1)]);
83262 + atomic_add_unchecked(nr_hits, &prof_buffer[min(pc, prof_len - 1)]);
83263 }
83264 #endif /* !CONFIG_SMP */
83265 - EXPORT_SYMBOL_GPL(profile_hits);
83266 +
83267 @@ -517,7 +517,7 @@ read_profile(struct file *file, char __u
83268 return -EFAULT;
83269 buf++; p++; count--; read++;
83270 @@ -69051,10 +65083,10 @@ diff -urNp linux-2.6.32.48/kernel/profile.c linux-2.6.32.48/kernel/profile.c
83271 return count;
83272 }
83273
83274 -diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83275 ---- linux-2.6.32.48/kernel/ptrace.c 2011-11-12 12:44:30.000000000 -0500
83276 -+++ linux-2.6.32.48/kernel/ptrace.c 2011-11-12 12:46:47.000000000 -0500
83277 -@@ -117,7 +117,8 @@ int ptrace_check_attach(struct task_stru
83278 +diff -urNp linux-3.0.8/kernel/ptrace.c linux-3.0.8/kernel/ptrace.c
83279 +--- linux-3.0.8/kernel/ptrace.c 2011-07-21 22:17:23.000000000 -0400
83280 ++++ linux-3.0.8/kernel/ptrace.c 2011-08-23 21:48:14.000000000 -0400
83281 +@@ -132,7 +132,8 @@ int ptrace_check_attach(struct task_stru
83282 return ret;
83283 }
83284
83285 @@ -69064,29 +65096,28 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83286 {
83287 const struct cred *cred = current_cred(), *tcred;
83288
83289 -@@ -141,7 +142,9 @@ int __ptrace_may_access(struct task_stru
83290 - cred->gid != tcred->egid ||
83291 - cred->gid != tcred->sgid ||
83292 - cred->gid != tcred->gid) &&
83293 -- !capable(CAP_SYS_PTRACE)) {
83294 -+ ((!log && !capable_nolog(CAP_SYS_PTRACE)) ||
83295 -+ (log && !capable(CAP_SYS_PTRACE)))
83296 -+ ) {
83297 - rcu_read_unlock();
83298 - return -EPERM;
83299 - }
83300 -@@ -149,7 +152,9 @@ int __ptrace_may_access(struct task_stru
83301 +@@ -158,7 +159,8 @@ int __ptrace_may_access(struct task_stru
83302 + cred->gid == tcred->sgid &&
83303 + cred->gid == tcred->gid))
83304 + goto ok;
83305 +- if (ns_capable(tcred->user->user_ns, CAP_SYS_PTRACE))
83306 ++ if ((!log && ns_capable_nolog(tcred->user->user_ns, CAP_SYS_PTRACE)) ||
83307 ++ (log && ns_capable(tcred->user->user_ns, CAP_SYS_PTRACE)))
83308 + goto ok;
83309 + rcu_read_unlock();
83310 + return -EPERM;
83311 +@@ -167,7 +169,9 @@ ok:
83312 smp_rmb();
83313 if (task->mm)
83314 dumpable = get_dumpable(task->mm);
83315 -- if (!dumpable && !capable(CAP_SYS_PTRACE))
83316 +- if (!dumpable && !task_ns_capable(task, CAP_SYS_PTRACE))
83317 + if (!dumpable &&
83318 -+ ((!log && !capable_nolog(CAP_SYS_PTRACE)) ||
83319 -+ (log && !capable(CAP_SYS_PTRACE))))
83320 ++ ((!log && !task_ns_capable_nolog(task, CAP_SYS_PTRACE)) ||
83321 ++ (log && !task_ns_capable(task, CAP_SYS_PTRACE))))
83322 return -EPERM;
83323
83324 return security_ptrace_access_check(task, mode);
83325 -@@ -159,7 +164,16 @@ bool ptrace_may_access(struct task_struc
83326 +@@ -177,7 +181,16 @@ bool ptrace_may_access(struct task_struc
83327 {
83328 int err;
83329 task_lock(task);
83330 @@ -69104,7 +65135,7 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83331 task_unlock(task);
83332 return !err;
83333 }
83334 -@@ -186,7 +200,7 @@ int ptrace_attach(struct task_struct *ta
83335 +@@ -205,7 +218,7 @@ static int ptrace_attach(struct task_str
83336 goto out;
83337
83338 task_lock(task);
83339 @@ -69113,16 +65144,16 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83340 task_unlock(task);
83341 if (retval)
83342 goto unlock_creds;
83343 -@@ -199,7 +213,7 @@ int ptrace_attach(struct task_struct *ta
83344 +@@ -218,7 +231,7 @@ static int ptrace_attach(struct task_str
83345 goto unlock_tasklist;
83346
83347 task->ptrace = PT_PTRACED;
83348 -- if (capable(CAP_SYS_PTRACE))
83349 -+ if (capable_nolog(CAP_SYS_PTRACE))
83350 +- if (task_ns_capable(task, CAP_SYS_PTRACE))
83351 ++ if (task_ns_capable_nolog(task, CAP_SYS_PTRACE))
83352 task->ptrace |= PT_PTRACE_CAP;
83353
83354 __ptrace_link(task, current);
83355 -@@ -351,6 +365,8 @@ int ptrace_readdata(struct task_struct *
83356 +@@ -406,6 +419,8 @@ int ptrace_readdata(struct task_struct *
83357 {
83358 int copied = 0;
83359
83360 @@ -69131,7 +65162,16 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83361 while (len > 0) {
83362 char buf[128];
83363 int this_len, retval;
83364 -@@ -376,6 +392,8 @@ int ptrace_writedata(struct task_struct
83365 +@@ -417,7 +432,7 @@ int ptrace_readdata(struct task_struct *
83366 + break;
83367 + return -EIO;
83368 + }
83369 +- if (copy_to_user(dst, buf, retval))
83370 ++ if (retval > sizeof(buf) || copy_to_user(dst, buf, retval))
83371 + return -EFAULT;
83372 + copied += retval;
83373 + src += retval;
83374 +@@ -431,6 +446,8 @@ int ptrace_writedata(struct task_struct
83375 {
83376 int copied = 0;
83377
83378 @@ -69140,38 +65180,20 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83379 while (len > 0) {
83380 char buf[128];
83381 int this_len, retval;
83382 -@@ -517,6 +535,8 @@ int ptrace_request(struct task_struct *c
83383 +@@ -613,9 +630,11 @@ int ptrace_request(struct task_struct *c
83384 + {
83385 int ret = -EIO;
83386 siginfo_t siginfo;
83387 +- void __user *datavp = (void __user *) data;
83388 ++ void __user *datavp = (__force void __user *) data;
83389 + unsigned long __user *datalp = datavp;
83390
83391 + pax_track_stack();
83392 +
83393 switch (request) {
83394 case PTRACE_PEEKTEXT:
83395 case PTRACE_PEEKDATA:
83396 -@@ -532,18 +552,18 @@ int ptrace_request(struct task_struct *c
83397 - ret = ptrace_setoptions(child, data);
83398 - break;
83399 - case PTRACE_GETEVENTMSG:
83400 -- ret = put_user(child->ptrace_message, (unsigned long __user *) data);
83401 -+ ret = put_user(child->ptrace_message, (__force unsigned long __user *) data);
83402 - break;
83403 -
83404 - case PTRACE_GETSIGINFO:
83405 - ret = ptrace_getsiginfo(child, &siginfo);
83406 - if (!ret)
83407 -- ret = copy_siginfo_to_user((siginfo_t __user *) data,
83408 -+ ret = copy_siginfo_to_user((__force siginfo_t __user *) data,
83409 - &siginfo);
83410 - break;
83411 -
83412 - case PTRACE_SETSIGINFO:
83413 -- if (copy_from_user(&siginfo, (siginfo_t __user *) data,
83414 -+ if (copy_from_user(&siginfo, (__force siginfo_t __user *) data,
83415 - sizeof siginfo))
83416 - ret = -EFAULT;
83417 - else
83418 -@@ -621,14 +641,21 @@ SYSCALL_DEFINE4(ptrace, long, request, l
83419 +@@ -761,14 +780,21 @@ SYSCALL_DEFINE4(ptrace, long, request, l
83420 goto out;
83421 }
83422
83423 @@ -69194,7 +65216,7 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83424 goto out_put_task_struct;
83425 }
83426
83427 -@@ -653,7 +680,7 @@ int generic_ptrace_peekdata(struct task_
83428 +@@ -793,7 +819,7 @@ int generic_ptrace_peekdata(struct task_
83429 copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
83430 if (copied != sizeof(tmp))
83431 return -EIO;
83432 @@ -69202,8 +65224,8 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83433 + return put_user(tmp, (__force unsigned long __user *)data);
83434 }
83435
83436 - int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data)
83437 -@@ -675,6 +702,8 @@ int compat_ptrace_request(struct task_st
83438 + int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
83439 +@@ -816,6 +842,8 @@ int compat_ptrace_request(struct task_st
83440 siginfo_t siginfo;
83441 int ret;
83442
83443 @@ -69212,7 +65234,7 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83444 switch (request) {
83445 case PTRACE_PEEKTEXT:
83446 case PTRACE_PEEKDATA:
83447 -@@ -740,14 +769,21 @@ asmlinkage long compat_sys_ptrace(compat
83448 +@@ -903,14 +931,21 @@ asmlinkage long compat_sys_ptrace(compat
83449 goto out;
83450 }
83451
83452 @@ -69235,10 +65257,10 @@ diff -urNp linux-2.6.32.48/kernel/ptrace.c linux-2.6.32.48/kernel/ptrace.c
83453 goto out_put_task_struct;
83454 }
83455
83456 -diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture.c
83457 ---- linux-2.6.32.48/kernel/rcutorture.c 2009-12-02 22:51:21.000000000 -0500
83458 -+++ linux-2.6.32.48/kernel/rcutorture.c 2011-11-12 12:46:47.000000000 -0500
83459 -@@ -118,12 +118,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_
83460 +diff -urNp linux-3.0.8/kernel/rcutorture.c linux-3.0.8/kernel/rcutorture.c
83461 +--- linux-3.0.8/kernel/rcutorture.c 2011-07-21 22:17:23.000000000 -0400
83462 ++++ linux-3.0.8/kernel/rcutorture.c 2011-08-23 21:47:56.000000000 -0400
83463 +@@ -138,12 +138,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_
83464 { 0 };
83465 static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch) =
83466 { 0 };
83467 @@ -69254,10 +65276,10 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83468 +static atomic_unchecked_t n_rcu_torture_free;
83469 +static atomic_unchecked_t n_rcu_torture_mberror;
83470 +static atomic_unchecked_t n_rcu_torture_error;
83471 - static long n_rcu_torture_timers;
83472 - static struct list_head rcu_torture_removed;
83473 - static cpumask_var_t shuffle_tmp_mask;
83474 -@@ -187,11 +187,11 @@ rcu_torture_alloc(void)
83475 + static long n_rcu_torture_boost_ktrerror;
83476 + static long n_rcu_torture_boost_rterror;
83477 + static long n_rcu_torture_boost_failure;
83478 +@@ -223,11 +223,11 @@ rcu_torture_alloc(void)
83479
83480 spin_lock_bh(&rcu_torture_lock);
83481 if (list_empty(&rcu_torture_freelist)) {
83482 @@ -69271,7 +65293,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83483 p = rcu_torture_freelist.next;
83484 list_del_init(p);
83485 spin_unlock_bh(&rcu_torture_lock);
83486 -@@ -204,7 +204,7 @@ rcu_torture_alloc(void)
83487 +@@ -240,7 +240,7 @@ rcu_torture_alloc(void)
83488 static void
83489 rcu_torture_free(struct rcu_torture *p)
83490 {
83491 @@ -69280,7 +65302,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83492 spin_lock_bh(&rcu_torture_lock);
83493 list_add_tail(&p->rtort_free, &rcu_torture_freelist);
83494 spin_unlock_bh(&rcu_torture_lock);
83495 -@@ -319,7 +319,7 @@ rcu_torture_cb(struct rcu_head *p)
83496 +@@ -360,7 +360,7 @@ rcu_torture_cb(struct rcu_head *p)
83497 i = rp->rtort_pipe_count;
83498 if (i > RCU_TORTURE_PIPE_LEN)
83499 i = RCU_TORTURE_PIPE_LEN;
83500 @@ -69289,7 +65311,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83501 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
83502 rp->rtort_mbtest = 0;
83503 rcu_torture_free(rp);
83504 -@@ -359,7 +359,7 @@ static void rcu_sync_torture_deferred_fr
83505 +@@ -407,7 +407,7 @@ static void rcu_sync_torture_deferred_fr
83506 i = rp->rtort_pipe_count;
83507 if (i > RCU_TORTURE_PIPE_LEN)
83508 i = RCU_TORTURE_PIPE_LEN;
83509 @@ -69298,7 +65320,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83510 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
83511 rp->rtort_mbtest = 0;
83512 list_del(&rp->rtort_free);
83513 -@@ -653,7 +653,7 @@ rcu_torture_writer(void *arg)
83514 +@@ -882,7 +882,7 @@ rcu_torture_writer(void *arg)
83515 i = old_rp->rtort_pipe_count;
83516 if (i > RCU_TORTURE_PIPE_LEN)
83517 i = RCU_TORTURE_PIPE_LEN;
83518 @@ -69307,7 +65329,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83519 old_rp->rtort_pipe_count++;
83520 cur_ops->deferred_free(old_rp);
83521 }
83522 -@@ -718,7 +718,7 @@ static void rcu_torture_timer(unsigned l
83523 +@@ -951,7 +951,7 @@ static void rcu_torture_timer(unsigned l
83524 return;
83525 }
83526 if (p->rtort_mbtest == 0)
83527 @@ -69316,7 +65338,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83528 spin_lock(&rand_lock);
83529 cur_ops->read_delay(&rand);
83530 n_rcu_torture_timers++;
83531 -@@ -776,7 +776,7 @@ rcu_torture_reader(void *arg)
83532 +@@ -1013,7 +1013,7 @@ rcu_torture_reader(void *arg)
83533 continue;
83534 }
83535 if (p->rtort_mbtest == 0)
83536 @@ -69325,7 +65347,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83537 cur_ops->read_delay(&rand);
83538 preempt_disable();
83539 pipe_count = p->rtort_pipe_count;
83540 -@@ -834,17 +834,17 @@ rcu_torture_printk(char *page)
83541 +@@ -1072,16 +1072,16 @@ rcu_torture_printk(char *page)
83542 rcu_torture_current,
83543 rcu_torture_current_version,
83544 list_empty(&rcu_torture_freelist),
83545 @@ -69337,10 +65359,17 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83546 + atomic_read_unchecked(&n_rcu_torture_alloc_fail),
83547 + atomic_read_unchecked(&n_rcu_torture_free),
83548 + atomic_read_unchecked(&n_rcu_torture_mberror),
83549 + n_rcu_torture_boost_ktrerror,
83550 + n_rcu_torture_boost_rterror,
83551 + n_rcu_torture_boost_failure,
83552 + n_rcu_torture_boosts,
83553 n_rcu_torture_timers);
83554 -- if (atomic_read(&n_rcu_torture_mberror) != 0)
83555 -+ if (atomic_read_unchecked(&n_rcu_torture_mberror) != 0)
83556 - cnt += sprintf(&page[cnt], " !!!");
83557 +- if (atomic_read(&n_rcu_torture_mberror) != 0 ||
83558 ++ if (atomic_read_unchecked(&n_rcu_torture_mberror) != 0 ||
83559 + n_rcu_torture_boost_ktrerror != 0 ||
83560 + n_rcu_torture_boost_rterror != 0 ||
83561 + n_rcu_torture_boost_failure != 0)
83562 +@@ -1089,7 +1089,7 @@ rcu_torture_printk(char *page)
83563 cnt += sprintf(&page[cnt], "\n%s%s ", torture_type, TORTURE_FLAG);
83564 if (i > 1) {
83565 cnt += sprintf(&page[cnt], "!!! ");
83566 @@ -69349,7 +65378,7 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83567 WARN_ON_ONCE(1);
83568 }
83569 cnt += sprintf(&page[cnt], "Reader Pipe: ");
83570 -@@ -858,7 +858,7 @@ rcu_torture_printk(char *page)
83571 +@@ -1103,7 +1103,7 @@ rcu_torture_printk(char *page)
83572 cnt += sprintf(&page[cnt], "Free-Block Circulation: ");
83573 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
83574 cnt += sprintf(&page[cnt], " %d",
83575 @@ -69358,16 +65387,16 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83576 }
83577 cnt += sprintf(&page[cnt], "\n");
83578 if (cur_ops->stats)
83579 -@@ -1084,7 +1084,7 @@ rcu_torture_cleanup(void)
83580 +@@ -1412,7 +1412,7 @@ rcu_torture_cleanup(void)
83581
83582 if (cur_ops->cleanup)
83583 cur_ops->cleanup();
83584 - if (atomic_read(&n_rcu_torture_error))
83585 + if (atomic_read_unchecked(&n_rcu_torture_error))
83586 - rcu_torture_print_module_parms("End of test: FAILURE");
83587 + rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
83588 else
83589 - rcu_torture_print_module_parms("End of test: SUCCESS");
83590 -@@ -1138,13 +1138,13 @@ rcu_torture_init(void)
83591 + rcu_torture_print_module_parms(cur_ops, "End of test: SUCCESS");
83592 +@@ -1476,17 +1476,17 @@ rcu_torture_init(void)
83593
83594 rcu_torture_current = NULL;
83595 rcu_torture_current_version = 0;
83596 @@ -69381,71 +65410,194 @@ diff -urNp linux-2.6.32.48/kernel/rcutorture.c linux-2.6.32.48/kernel/rcutorture
83597 + atomic_set_unchecked(&n_rcu_torture_free, 0);
83598 + atomic_set_unchecked(&n_rcu_torture_mberror, 0);
83599 + atomic_set_unchecked(&n_rcu_torture_error, 0);
83600 + n_rcu_torture_boost_ktrerror = 0;
83601 + n_rcu_torture_boost_rterror = 0;
83602 + n_rcu_torture_boost_failure = 0;
83603 + n_rcu_torture_boosts = 0;
83604 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++)
83605 - atomic_set(&rcu_torture_wcount[i], 0);
83606 + atomic_set_unchecked(&rcu_torture_wcount[i], 0);
83607 for_each_possible_cpu(cpu) {
83608 for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
83609 per_cpu(rcu_torture_count, cpu)[i] = 0;
83610 -diff -urNp linux-2.6.32.48/kernel/rcutree.c linux-2.6.32.48/kernel/rcutree.c
83611 ---- linux-2.6.32.48/kernel/rcutree.c 2011-11-12 12:44:30.000000000 -0500
83612 -+++ linux-2.6.32.48/kernel/rcutree.c 2011-11-12 12:46:47.000000000 -0500
83613 -@@ -1303,7 +1303,7 @@ __rcu_process_callbacks(struct rcu_state
83614 +diff -urNp linux-3.0.8/kernel/rcutree.c linux-3.0.8/kernel/rcutree.c
83615 +--- linux-3.0.8/kernel/rcutree.c 2011-07-21 22:17:23.000000000 -0400
83616 ++++ linux-3.0.8/kernel/rcutree.c 2011-09-14 09:08:05.000000000 -0400
83617 +@@ -356,9 +356,9 @@ void rcu_enter_nohz(void)
83618 + }
83619 + /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
83620 + smp_mb__before_atomic_inc(); /* See above. */
83621 +- atomic_inc(&rdtp->dynticks);
83622 ++ atomic_inc_unchecked(&rdtp->dynticks);
83623 + smp_mb__after_atomic_inc(); /* Force ordering with next sojourn. */
83624 +- WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
83625 ++ WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
83626 + local_irq_restore(flags);
83627 +
83628 + /* If the interrupt queued a callback, get out of dyntick mode. */
83629 +@@ -387,10 +387,10 @@ void rcu_exit_nohz(void)
83630 + return;
83631 + }
83632 + smp_mb__before_atomic_inc(); /* Force ordering w/previous sojourn. */
83633 +- atomic_inc(&rdtp->dynticks);
83634 ++ atomic_inc_unchecked(&rdtp->dynticks);
83635 + /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */
83636 + smp_mb__after_atomic_inc(); /* See above. */
83637 +- WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
83638 ++ WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
83639 + local_irq_restore(flags);
83640 + }
83641 +
83642 +@@ -406,14 +406,14 @@ void rcu_nmi_enter(void)
83643 + struct rcu_dynticks *rdtp = &__get_cpu_var(rcu_dynticks);
83644 +
83645 + if (rdtp->dynticks_nmi_nesting == 0 &&
83646 +- (atomic_read(&rdtp->dynticks) & 0x1))
83647 ++ (atomic_read_unchecked(&rdtp->dynticks) & 0x1))
83648 + return;
83649 + rdtp->dynticks_nmi_nesting++;
83650 + smp_mb__before_atomic_inc(); /* Force delay from prior write. */
83651 +- atomic_inc(&rdtp->dynticks);
83652 ++ atomic_inc_unchecked(&rdtp->dynticks);
83653 + /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */
83654 + smp_mb__after_atomic_inc(); /* See above. */
83655 +- WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
83656 ++ WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
83657 + }
83658 +
83659 + /**
83660 +@@ -432,9 +432,9 @@ void rcu_nmi_exit(void)
83661 + return;
83662 + /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
83663 + smp_mb__before_atomic_inc(); /* See above. */
83664 +- atomic_inc(&rdtp->dynticks);
83665 ++ atomic_inc_unchecked(&rdtp->dynticks);
83666 + smp_mb__after_atomic_inc(); /* Force delay to next write. */
83667 +- WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
83668 ++ WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
83669 + }
83670 +
83671 + /**
83672 +@@ -469,7 +469,7 @@ void rcu_irq_exit(void)
83673 + */
83674 + static int dyntick_save_progress_counter(struct rcu_data *rdp)
83675 + {
83676 +- rdp->dynticks_snap = atomic_add_return(0, &rdp->dynticks->dynticks);
83677 ++ rdp->dynticks_snap = atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
83678 + return 0;
83679 + }
83680 +
83681 +@@ -484,7 +484,7 @@ static int rcu_implicit_dynticks_qs(stru
83682 + unsigned long curr;
83683 + unsigned long snap;
83684 +
83685 +- curr = (unsigned long)atomic_add_return(0, &rdp->dynticks->dynticks);
83686 ++ curr = (unsigned long)atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
83687 + snap = (unsigned long)rdp->dynticks_snap;
83688 +
83689 + /*
83690 +@@ -1470,7 +1470,7 @@ __rcu_process_callbacks(struct rcu_state
83691 /*
83692 * Do softirq processing for the current CPU.
83693 */
83694 -static void rcu_process_callbacks(struct softirq_action *unused)
83695 +static void rcu_process_callbacks(void)
83696 {
83697 + __rcu_process_callbacks(&rcu_sched_state,
83698 + &__get_cpu_var(rcu_sched_data));
83699 +diff -urNp linux-3.0.8/kernel/rcutree.h linux-3.0.8/kernel/rcutree.h
83700 +--- linux-3.0.8/kernel/rcutree.h 2011-07-21 22:17:23.000000000 -0400
83701 ++++ linux-3.0.8/kernel/rcutree.h 2011-09-14 09:08:05.000000000 -0400
83702 +@@ -86,7 +86,7 @@
83703 + struct rcu_dynticks {
83704 + int dynticks_nesting; /* Track irq/process nesting level. */
83705 + int dynticks_nmi_nesting; /* Track NMI nesting level. */
83706 +- atomic_t dynticks; /* Even value for dynticks-idle, else odd. */
83707 ++ atomic_unchecked_t dynticks; /* Even value for dynticks-idle, else odd. */
83708 + };
83709 +
83710 + /* RCU's kthread states for tracing. */
83711 +diff -urNp linux-3.0.8/kernel/rcutree_plugin.h linux-3.0.8/kernel/rcutree_plugin.h
83712 +--- linux-3.0.8/kernel/rcutree_plugin.h 2011-07-21 22:17:23.000000000 -0400
83713 ++++ linux-3.0.8/kernel/rcutree_plugin.h 2011-08-23 21:47:56.000000000 -0400
83714 +@@ -822,7 +822,7 @@ void synchronize_rcu_expedited(void)
83715 +
83716 + /* Clean up and exit. */
83717 + smp_mb(); /* ensure expedited GP seen before counter increment. */
83718 +- ACCESS_ONCE(sync_rcu_preempt_exp_count)++;
83719 ++ ACCESS_ONCE_RW(sync_rcu_preempt_exp_count)++;
83720 + unlock_mb_ret:
83721 + mutex_unlock(&sync_rcu_preempt_exp_mutex);
83722 + mb_ret:
83723 +@@ -1774,8 +1774,8 @@ EXPORT_SYMBOL_GPL(synchronize_sched_expe
83724 +
83725 + #else /* #ifndef CONFIG_SMP */
83726 +
83727 +-static atomic_t sync_sched_expedited_started = ATOMIC_INIT(0);
83728 +-static atomic_t sync_sched_expedited_done = ATOMIC_INIT(0);
83729 ++static atomic_unchecked_t sync_sched_expedited_started = ATOMIC_INIT(0);
83730 ++static atomic_unchecked_t sync_sched_expedited_done = ATOMIC_INIT(0);
83731 +
83732 + static int synchronize_sched_expedited_cpu_stop(void *data)
83733 + {
83734 +@@ -1830,7 +1830,7 @@ void synchronize_sched_expedited(void)
83735 + int firstsnap, s, snap, trycount = 0;
83736 +
83737 + /* Note that atomic_inc_return() implies full memory barrier. */
83738 +- firstsnap = snap = atomic_inc_return(&sync_sched_expedited_started);
83739 ++ firstsnap = snap = atomic_inc_return_unchecked(&sync_sched_expedited_started);
83740 + get_online_cpus();
83741 +
83742 /*
83743 - * Memory references from any prior RCU read-side critical sections
83744 -diff -urNp linux-2.6.32.48/kernel/rcutree_plugin.h linux-2.6.32.48/kernel/rcutree_plugin.h
83745 ---- linux-2.6.32.48/kernel/rcutree_plugin.h 2011-11-12 12:44:30.000000000 -0500
83746 -+++ linux-2.6.32.48/kernel/rcutree_plugin.h 2011-11-12 12:46:47.000000000 -0500
83747 -@@ -145,7 +145,7 @@ static void rcu_preempt_note_context_swi
83748 - */
83749 - void __rcu_read_lock(void)
83750 - {
83751 -- ACCESS_ONCE(current->rcu_read_lock_nesting)++;
83752 -+ ACCESS_ONCE_RW(current->rcu_read_lock_nesting)++;
83753 - barrier(); /* needed if we ever invoke rcu_read_lock in rcutree.c */
83754 - }
83755 - EXPORT_SYMBOL_GPL(__rcu_read_lock);
83756 -@@ -251,7 +251,7 @@ void __rcu_read_unlock(void)
83757 - struct task_struct *t = current;
83758 -
83759 - barrier(); /* needed if we ever invoke rcu_read_unlock in rcutree.c */
83760 -- if (--ACCESS_ONCE(t->rcu_read_lock_nesting) == 0 &&
83761 -+ if (--ACCESS_ONCE_RW(t->rcu_read_lock_nesting) == 0 &&
83762 - unlikely(ACCESS_ONCE(t->rcu_read_unlock_special)))
83763 - rcu_read_unlock_special(t);
83764 - }
83765 -diff -urNp linux-2.6.32.48/kernel/relay.c linux-2.6.32.48/kernel/relay.c
83766 ---- linux-2.6.32.48/kernel/relay.c 2009-12-02 22:51:21.000000000 -0500
83767 -+++ linux-2.6.32.48/kernel/relay.c 2011-11-12 12:46:47.000000000 -0500
83768 -@@ -1222,7 +1222,7 @@ static int subbuf_splice_actor(struct fi
83769 - unsigned int flags,
83770 - int *nonpad_ret)
83771 - {
83772 -- unsigned int pidx, poff, total_len, subbuf_pages, nr_pages, ret;
83773 -+ unsigned int pidx, poff, total_len, subbuf_pages, nr_pages;
83774 - struct rchan_buf *rbuf = in->private_data;
83775 - unsigned int subbuf_size = rbuf->chan->subbuf_size;
83776 - uint64_t pos = (uint64_t) *ppos;
83777 -@@ -1241,6 +1241,9 @@ static int subbuf_splice_actor(struct fi
83778 - .ops = &relay_pipe_buf_ops,
83779 - .spd_release = relay_page_release,
83780 +@@ -1851,7 +1851,7 @@ void synchronize_sched_expedited(void)
83781 + }
83782 +
83783 + /* Check to see if someone else did our work for us. */
83784 +- s = atomic_read(&sync_sched_expedited_done);
83785 ++ s = atomic_read_unchecked(&sync_sched_expedited_done);
83786 + if (UINT_CMP_GE((unsigned)s, (unsigned)firstsnap)) {
83787 + smp_mb(); /* ensure test happens before caller kfree */
83788 + return;
83789 +@@ -1866,7 +1866,7 @@ void synchronize_sched_expedited(void)
83790 + * grace period works for us.
83791 + */
83792 + get_online_cpus();
83793 +- snap = atomic_read(&sync_sched_expedited_started) - 1;
83794 ++ snap = atomic_read_unchecked(&sync_sched_expedited_started) - 1;
83795 + smp_mb(); /* ensure read is before try_stop_cpus(). */
83796 + }
83797 +
83798 +@@ -1877,12 +1877,12 @@ void synchronize_sched_expedited(void)
83799 + * than we did beat us to the punch.
83800 + */
83801 + do {
83802 +- s = atomic_read(&sync_sched_expedited_done);
83803 ++ s = atomic_read_unchecked(&sync_sched_expedited_done);
83804 + if (UINT_CMP_GE((unsigned)s, (unsigned)snap)) {
83805 + smp_mb(); /* ensure test happens before caller kfree */
83806 + break;
83807 + }
83808 +- } while (atomic_cmpxchg(&sync_sched_expedited_done, s, snap) != s);
83809 ++ } while (atomic_cmpxchg_unchecked(&sync_sched_expedited_done, s, snap) != s);
83810 +
83811 + put_online_cpus();
83812 + }
83813 +diff -urNp linux-3.0.8/kernel/relay.c linux-3.0.8/kernel/relay.c
83814 +--- linux-3.0.8/kernel/relay.c 2011-07-21 22:17:23.000000000 -0400
83815 ++++ linux-3.0.8/kernel/relay.c 2011-08-23 21:48:14.000000000 -0400
83816 +@@ -1236,6 +1236,8 @@ static ssize_t subbuf_splice_actor(struc
83817 };
83818 -+ ssize_t ret;
83819 -+
83820 -+ pax_track_stack();
83821 + ssize_t ret;
83822
83823 ++ pax_track_stack();
83824 ++
83825 if (rbuf->subbufs_produced == rbuf->subbufs_consumed)
83826 return 0;
83827 -diff -urNp linux-2.6.32.48/kernel/resource.c linux-2.6.32.48/kernel/resource.c
83828 ---- linux-2.6.32.48/kernel/resource.c 2009-12-02 22:51:21.000000000 -0500
83829 -+++ linux-2.6.32.48/kernel/resource.c 2011-11-12 12:46:47.000000000 -0500
83830 -@@ -132,8 +132,18 @@ static const struct file_operations proc
83831 + if (splice_grow_spd(pipe, &spd))
83832 +diff -urNp linux-3.0.8/kernel/resource.c linux-3.0.8/kernel/resource.c
83833 +--- linux-3.0.8/kernel/resource.c 2011-07-21 22:17:23.000000000 -0400
83834 ++++ linux-3.0.8/kernel/resource.c 2011-08-23 21:48:14.000000000 -0400
83835 +@@ -141,8 +141,18 @@ static const struct file_operations proc
83836
83837 static int __init ioresources_init(void)
83838 {
83839 @@ -69464,22 +65616,10 @@ diff -urNp linux-2.6.32.48/kernel/resource.c linux-2.6.32.48/kernel/resource.c
83840 return 0;
83841 }
83842 __initcall(ioresources_init);
83843 -diff -urNp linux-2.6.32.48/kernel/rtmutex.c linux-2.6.32.48/kernel/rtmutex.c
83844 ---- linux-2.6.32.48/kernel/rtmutex.c 2009-12-02 22:51:21.000000000 -0500
83845 -+++ linux-2.6.32.48/kernel/rtmutex.c 2011-11-12 12:46:47.000000000 -0500
83846 -@@ -511,7 +511,7 @@ static void wakeup_next_waiter(struct rt
83847 - */
83848 - spin_lock_irqsave(&pendowner->pi_lock, flags);
83849 -
83850 -- WARN_ON(!pendowner->pi_blocked_on);
83851 -+ BUG_ON(!pendowner->pi_blocked_on);
83852 - WARN_ON(pendowner->pi_blocked_on != waiter);
83853 - WARN_ON(pendowner->pi_blocked_on->lock != lock);
83854 -
83855 -diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmutex-tester.c
83856 ---- linux-2.6.32.48/kernel/rtmutex-tester.c 2009-12-02 22:51:21.000000000 -0500
83857 -+++ linux-2.6.32.48/kernel/rtmutex-tester.c 2011-11-12 12:46:47.000000000 -0500
83858 -@@ -21,7 +21,7 @@
83859 +diff -urNp linux-3.0.8/kernel/rtmutex-tester.c linux-3.0.8/kernel/rtmutex-tester.c
83860 +--- linux-3.0.8/kernel/rtmutex-tester.c 2011-07-21 22:17:23.000000000 -0400
83861 ++++ linux-3.0.8/kernel/rtmutex-tester.c 2011-08-23 21:47:56.000000000 -0400
83862 +@@ -20,7 +20,7 @@
83863 #define MAX_RT_TEST_MUTEXES 8
83864
83865 static spinlock_t rttest_lock;
83866 @@ -69488,7 +65628,7 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83867
83868 struct test_thread_data {
83869 int opcode;
83870 -@@ -64,7 +64,7 @@ static int handle_op(struct test_thread_
83871 +@@ -61,7 +61,7 @@ static int handle_op(struct test_thread_
83872
83873 case RTTEST_LOCKCONT:
83874 td->mutexes[td->opdata] = 1;
83875 @@ -69497,7 +65637,7 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83876 return 0;
83877
83878 case RTTEST_RESET:
83879 -@@ -82,7 +82,7 @@ static int handle_op(struct test_thread_
83880 +@@ -74,7 +74,7 @@ static int handle_op(struct test_thread_
83881 return 0;
83882
83883 case RTTEST_RESETEVENT:
83884 @@ -69506,7 +65646,7 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83885 return 0;
83886
83887 default:
83888 -@@ -99,9 +99,9 @@ static int handle_op(struct test_thread_
83889 +@@ -91,9 +91,9 @@ static int handle_op(struct test_thread_
83890 return ret;
83891
83892 td->mutexes[id] = 1;
83893 @@ -69518,7 +65658,7 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83894 td->mutexes[id] = 4;
83895 return 0;
83896
83897 -@@ -112,9 +112,9 @@ static int handle_op(struct test_thread_
83898 +@@ -104,9 +104,9 @@ static int handle_op(struct test_thread_
83899 return ret;
83900
83901 td->mutexes[id] = 1;
83902 @@ -69530,7 +65670,7 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83903 td->mutexes[id] = ret ? 0 : 4;
83904 return ret ? -EINTR : 0;
83905
83906 -@@ -123,9 +123,9 @@ static int handle_op(struct test_thread_
83907 +@@ -115,9 +115,9 @@ static int handle_op(struct test_thread_
83908 if (id < 0 || id >= MAX_RT_TEST_MUTEXES || td->mutexes[id] != 4)
83909 return ret;
83910
83911 @@ -69542,7 +65682,7 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83912 td->mutexes[id] = 0;
83913 return 0;
83914
83915 -@@ -187,7 +187,7 @@ void schedule_rt_mutex_test(struct rt_mu
83916 +@@ -164,7 +164,7 @@ void schedule_rt_mutex_test(struct rt_mu
83917 break;
83918
83919 td->mutexes[dat] = 2;
83920 @@ -69550,8 +65690,8 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83921 + td->event = atomic_add_return_unchecked(1, &rttest_event);
83922 break;
83923
83924 - case RTTEST_LOCKBKL:
83925 -@@ -208,7 +208,7 @@ void schedule_rt_mutex_test(struct rt_mu
83926 + default:
83927 +@@ -184,7 +184,7 @@ void schedule_rt_mutex_test(struct rt_mu
83928 return;
83929
83930 td->mutexes[dat] = 3;
83931 @@ -69560,7 +65700,7 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83932 break;
83933
83934 case RTTEST_LOCKNOWAIT:
83935 -@@ -220,7 +220,7 @@ void schedule_rt_mutex_test(struct rt_mu
83936 +@@ -196,7 +196,7 @@ void schedule_rt_mutex_test(struct rt_mu
83937 return;
83938
83939 td->mutexes[dat] = 1;
83940 @@ -69568,32 +65708,32 @@ diff -urNp linux-2.6.32.48/kernel/rtmutex-tester.c linux-2.6.32.48/kernel/rtmute
83941 + td->event = atomic_add_return_unchecked(1, &rttest_event);
83942 return;
83943
83944 - case RTTEST_LOCKBKL:
83945 -diff -urNp linux-2.6.32.48/kernel/sched.c linux-2.6.32.48/kernel/sched.c
83946 ---- linux-2.6.32.48/kernel/sched.c 2011-11-12 12:44:30.000000000 -0500
83947 -+++ linux-2.6.32.48/kernel/sched.c 2011-11-12 12:46:47.000000000 -0500
83948 -@@ -2764,9 +2764,10 @@ void wake_up_new_task(struct task_struct
83949 - {
83950 - unsigned long flags;
83951 - struct rq *rq;
83952 -- int cpu = get_cpu();
83953 -
83954 - #ifdef CONFIG_SMP
83955 -+ int cpu = get_cpu();
83956 -+
83957 - rq = task_rq_lock(p, &flags);
83958 - p->state = TASK_WAKING;
83959 -
83960 -@@ -5043,7 +5044,7 @@ out:
83961 - * In CONFIG_NO_HZ case, the idle load balance owner will do the
83962 - * rebalancing for all the cpus for whom scheduler ticks are stopped.
83963 - */
83964 --static void run_rebalance_domains(struct softirq_action *h)
83965 -+static void run_rebalance_domains(void)
83966 - {
83967 - int this_cpu = smp_processor_id();
83968 - struct rq *this_rq = cpu_rq(this_cpu);
83969 -@@ -5700,6 +5701,8 @@ asmlinkage void __sched schedule(void)
83970 + default:
83971 +diff -urNp linux-3.0.8/kernel/sched_autogroup.c linux-3.0.8/kernel/sched_autogroup.c
83972 +--- linux-3.0.8/kernel/sched_autogroup.c 2011-07-21 22:17:23.000000000 -0400
83973 ++++ linux-3.0.8/kernel/sched_autogroup.c 2011-08-23 21:47:56.000000000 -0400
83974 +@@ -7,7 +7,7 @@
83975 +
83976 + unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
83977 + static struct autogroup autogroup_default;
83978 +-static atomic_t autogroup_seq_nr;
83979 ++static atomic_unchecked_t autogroup_seq_nr;
83980 +
83981 + static void __init autogroup_init(struct task_struct *init_task)
83982 + {
83983 +@@ -78,7 +78,7 @@ static inline struct autogroup *autogrou
83984 +
83985 + kref_init(&ag->kref);
83986 + init_rwsem(&ag->lock);
83987 +- ag->id = atomic_inc_return(&autogroup_seq_nr);
83988 ++ ag->id = atomic_inc_return_unchecked(&autogroup_seq_nr);
83989 + ag->tg = tg;
83990 + #ifdef CONFIG_RT_GROUP_SCHED
83991 + /*
83992 +diff -urNp linux-3.0.8/kernel/sched.c linux-3.0.8/kernel/sched.c
83993 +--- linux-3.0.8/kernel/sched.c 2011-10-24 08:05:32.000000000 -0400
83994 ++++ linux-3.0.8/kernel/sched.c 2011-10-17 23:17:19.000000000 -0400
83995 +@@ -4227,6 +4227,8 @@ static void __sched __schedule(void)
83996 struct rq *rq;
83997 int cpu;
83998
83999 @@ -69602,47 +65742,16 @@ diff -urNp linux-2.6.32.48/kernel/sched.c linux-2.6.32.48/kernel/sched.c
84000 need_resched:
84001 preempt_disable();
84002 cpu = smp_processor_id();
84003 -@@ -5770,7 +5773,7 @@ EXPORT_SYMBOL(schedule);
84004 - * Look out! "owner" is an entirely speculative pointer
84005 - * access and not reliable.
84006 - */
84007 --int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner)
84008 -+int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner)
84009 - {
84010 - unsigned int cpu;
84011 - struct rq *rq;
84012 -@@ -5784,10 +5787,10 @@ int mutex_spin_on_owner(struct mutex *lo
84013 - * DEBUG_PAGEALLOC could have unmapped it if
84014 - * the mutex owner just released it and exited.
84015 - */
84016 -- if (probe_kernel_address(&owner->cpu, cpu))
84017 -+ if (probe_kernel_address(&task_thread_info(owner)->cpu, cpu))
84018 - return 0;
84019 - #else
84020 -- cpu = owner->cpu;
84021 -+ cpu = task_thread_info(owner)->cpu;
84022 - #endif
84023 -
84024 - /*
84025 -@@ -5816,7 +5819,7 @@ int mutex_spin_on_owner(struct mutex *lo
84026 - /*
84027 - * Is that owner really running on that cpu?
84028 - */
84029 -- if (task_thread_info(rq->curr) != owner || need_resched())
84030 -+ if (rq->curr != owner || need_resched())
84031 - return 0;
84032 -
84033 - cpu_relax();
84034 -@@ -6359,6 +6362,8 @@ int can_nice(const struct task_struct *p
84035 +@@ -4920,6 +4922,8 @@ int can_nice(const struct task_struct *p
84036 /* convert nice value [19,-20] to rlimit style value [1,40] */
84037 int nice_rlim = 20 - nice;
84038
84039 + gr_learn_resource(p, RLIMIT_NICE, nice_rlim, 1);
84040 +
84041 - return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur ||
84042 + return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
84043 capable(CAP_SYS_NICE));
84044 }
84045 -@@ -6392,7 +6397,8 @@ SYSCALL_DEFINE1(nice, int, increment)
84046 +@@ -4953,7 +4957,8 @@ SYSCALL_DEFINE1(nice, int, increment)
84047 if (nice > 19)
84048 nice = 19;
84049
84050 @@ -69652,21 +65761,32 @@ diff -urNp linux-2.6.32.48/kernel/sched.c linux-2.6.32.48/kernel/sched.c
84051 return -EPERM;
84052
84053 retval = security_task_setnice(current, nice);
84054 -@@ -8774,7 +8780,7 @@ static void init_sched_groups_power(int
84055 - long power;
84056 - int weight;
84057 -
84058 -- WARN_ON(!sd || !sd->groups);
84059 -+ BUG_ON(!sd || !sd->groups);
84060 -
84061 - if (cpu != group_first_cpu(sd->groups))
84062 - return;
84063 -diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84064 ---- linux-2.6.32.48/kernel/signal.c 2011-11-12 12:44:30.000000000 -0500
84065 -+++ linux-2.6.32.48/kernel/signal.c 2011-11-12 12:46:47.000000000 -0500
84066 -@@ -41,12 +41,12 @@
84067 +@@ -5097,6 +5102,7 @@ recheck:
84068 + unsigned long rlim_rtprio =
84069 + task_rlimit(p, RLIMIT_RTPRIO);
84070 +
84071 ++ gr_learn_resource(p, RLIMIT_RTPRIO, param->sched_priority, 1);
84072 + /* can't set/change the rt policy */
84073 + if (policy != p->policy && !rlim_rtprio)
84074 + return -EPERM;
84075 +diff -urNp linux-3.0.8/kernel/sched_fair.c linux-3.0.8/kernel/sched_fair.c
84076 +--- linux-3.0.8/kernel/sched_fair.c 2011-07-21 22:17:23.000000000 -0400
84077 ++++ linux-3.0.8/kernel/sched_fair.c 2011-08-23 21:47:56.000000000 -0400
84078 +@@ -4050,7 +4050,7 @@ static void nohz_idle_balance(int this_c
84079 + * run_rebalance_domains is triggered when needed from the scheduler tick.
84080 + * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
84081 + */
84082 +-static void run_rebalance_domains(struct softirq_action *h)
84083 ++static void run_rebalance_domains(void)
84084 + {
84085 + int this_cpu = smp_processor_id();
84086 + struct rq *this_rq = cpu_rq(this_cpu);
84087 +diff -urNp linux-3.0.8/kernel/signal.c linux-3.0.8/kernel/signal.c
84088 +--- linux-3.0.8/kernel/signal.c 2011-07-21 22:17:23.000000000 -0400
84089 ++++ linux-3.0.8/kernel/signal.c 2011-08-23 21:48:14.000000000 -0400
84090 +@@ -45,12 +45,12 @@ static struct kmem_cache *sigqueue_cache
84091
84092 - static struct kmem_cache *sigqueue_cachep;
84093 + int print_fatal_signals __read_mostly;
84094
84095 -static void __user *sig_handler(struct task_struct *t, int sig)
84096 +static __sighandler_t sig_handler(struct task_struct *t, int sig)
84097 @@ -69679,7 +65799,7 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84098 {
84099 /* Is it explicitly or implicitly ignored? */
84100 return handler == SIG_IGN ||
84101 -@@ -56,7 +56,7 @@ static int sig_handler_ignored(void __us
84102 +@@ -60,7 +60,7 @@ static int sig_handler_ignored(void __us
84103 static int sig_task_ignored(struct task_struct *t, int sig,
84104 int from_ancestor_ns)
84105 {
84106 @@ -69688,17 +65808,17 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84107
84108 handler = sig_handler(t, sig);
84109
84110 -@@ -207,6 +207,9 @@ static struct sigqueue *__sigqueue_alloc
84111 - */
84112 - user = get_uid(__task_cred(t)->user);
84113 +@@ -320,6 +320,9 @@ __sigqueue_alloc(int sig, struct task_st
84114 atomic_inc(&user->sigpending);
84115 -+
84116 + rcu_read_unlock();
84117 +
84118 + if (!override_rlimit)
84119 + gr_learn_resource(t, RLIMIT_SIGPENDING, atomic_read(&user->sigpending), 1);
84120 ++
84121 if (override_rlimit ||
84122 atomic_read(&user->sigpending) <=
84123 - t->signal->rlim[RLIMIT_SIGPENDING].rlim_cur)
84124 -@@ -327,7 +330,7 @@ flush_signal_handlers(struct task_struct
84125 + task_rlimit(t, RLIMIT_SIGPENDING)) {
84126 +@@ -444,7 +447,7 @@ flush_signal_handlers(struct task_struct
84127
84128 int unhandled_signal(struct task_struct *tsk, int sig)
84129 {
84130 @@ -69707,7 +65827,7 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84131 if (is_global_init(tsk))
84132 return 1;
84133 if (handler != SIG_IGN && handler != SIG_DFL)
84134 -@@ -627,6 +630,13 @@ static int check_kill_permission(int sig
84135 +@@ -770,6 +773,13 @@ static int check_kill_permission(int sig
84136 }
84137 }
84138
84139 @@ -69721,7 +65841,7 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84140 return security_task_kill(t, info, sig, 0);
84141 }
84142
84143 -@@ -968,7 +978,7 @@ __group_send_sig_info(int sig, struct si
84144 +@@ -1092,7 +1102,7 @@ __group_send_sig_info(int sig, struct si
84145 return send_signal(sig, info, p, 1);
84146 }
84147
84148 @@ -69730,7 +65850,7 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84149 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
84150 {
84151 return send_signal(sig, info, t, 0);
84152 -@@ -1005,6 +1015,7 @@ force_sig_info(int sig, struct siginfo *
84153 +@@ -1129,6 +1139,7 @@ force_sig_info(int sig, struct siginfo *
84154 unsigned long int flags;
84155 int ret, blocked, ignored;
84156 struct k_sigaction *action;
84157 @@ -69738,7 +65858,7 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84158
84159 spin_lock_irqsave(&t->sighand->siglock, flags);
84160 action = &t->sighand->action[sig-1];
84161 -@@ -1019,9 +1030,18 @@ force_sig_info(int sig, struct siginfo *
84162 +@@ -1143,9 +1154,18 @@ force_sig_info(int sig, struct siginfo *
84163 }
84164 if (action->sa.sa_handler == SIG_DFL)
84165 t->signal->flags &= ~SIGNAL_UNKILLABLE;
84166 @@ -69757,9 +65877,9 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84167 return ret;
84168 }
84169
84170 -@@ -1081,8 +1101,11 @@ int group_send_sig_info(int sig, struct
84171 - {
84172 - int ret = check_kill_permission(sig, info, p);
84173 +@@ -1212,8 +1232,11 @@ int group_send_sig_info(int sig, struct
84174 + ret = check_kill_permission(sig, info, p);
84175 + rcu_read_unlock();
84176
84177 - if (!ret && sig)
84178 + if (!ret && sig) {
84179 @@ -69770,7 +65890,7 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84180
84181 return ret;
84182 }
84183 -@@ -1644,6 +1667,8 @@ void ptrace_notify(int exit_code)
84184 +@@ -1839,6 +1862,8 @@ void ptrace_notify(int exit_code)
84185 {
84186 siginfo_t info;
84187
84188 @@ -69779,7 +65899,7 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84189 BUG_ON((exit_code & (0x7f | ~0xffff)) != SIGTRAP);
84190
84191 memset(&info, 0, sizeof info);
84192 -@@ -2275,7 +2300,15 @@ do_send_specific(pid_t tgid, pid_t pid,
84193 +@@ -2639,7 +2664,15 @@ do_send_specific(pid_t tgid, pid_t pid,
84194 int error = -ESRCH;
84195
84196 rcu_read_lock();
84197 @@ -69796,67 +65916,58 @@ diff -urNp linux-2.6.32.48/kernel/signal.c linux-2.6.32.48/kernel/signal.c
84198 if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
84199 error = check_kill_permission(sig, info, p);
84200 /*
84201 -diff -urNp linux-2.6.32.48/kernel/smp.c linux-2.6.32.48/kernel/smp.c
84202 ---- linux-2.6.32.48/kernel/smp.c 2011-11-12 12:44:30.000000000 -0500
84203 -+++ linux-2.6.32.48/kernel/smp.c 2011-11-12 12:46:47.000000000 -0500
84204 -@@ -522,22 +522,22 @@ int smp_call_function(void (*func)(void
84205 +diff -urNp linux-3.0.8/kernel/smp.c linux-3.0.8/kernel/smp.c
84206 +--- linux-3.0.8/kernel/smp.c 2011-07-21 22:17:23.000000000 -0400
84207 ++++ linux-3.0.8/kernel/smp.c 2011-08-23 21:47:56.000000000 -0400
84208 +@@ -580,22 +580,22 @@ int smp_call_function(smp_call_func_t fu
84209 }
84210 EXPORT_SYMBOL(smp_call_function);
84211
84212 -void ipi_call_lock(void)
84213 +void ipi_call_lock(void) __acquires(call_function.lock)
84214 {
84215 - spin_lock(&call_function.lock);
84216 + raw_spin_lock(&call_function.lock);
84217 }
84218
84219 -void ipi_call_unlock(void)
84220 +void ipi_call_unlock(void) __releases(call_function.lock)
84221 {
84222 - spin_unlock(&call_function.lock);
84223 + raw_spin_unlock(&call_function.lock);
84224 }
84225
84226 -void ipi_call_lock_irq(void)
84227 +void ipi_call_lock_irq(void) __acquires(call_function.lock)
84228 {
84229 - spin_lock_irq(&call_function.lock);
84230 + raw_spin_lock_irq(&call_function.lock);
84231 }
84232
84233 -void ipi_call_unlock_irq(void)
84234 +void ipi_call_unlock_irq(void) __releases(call_function.lock)
84235 {
84236 - spin_unlock_irq(&call_function.lock);
84237 + raw_spin_unlock_irq(&call_function.lock);
84238 }
84239 -diff -urNp linux-2.6.32.48/kernel/softirq.c linux-2.6.32.48/kernel/softirq.c
84240 ---- linux-2.6.32.48/kernel/softirq.c 2011-11-12 12:44:30.000000000 -0500
84241 -+++ linux-2.6.32.48/kernel/softirq.c 2011-11-12 12:46:47.000000000 -0500
84242 +diff -urNp linux-3.0.8/kernel/softirq.c linux-3.0.8/kernel/softirq.c
84243 +--- linux-3.0.8/kernel/softirq.c 2011-07-21 22:17:23.000000000 -0400
84244 ++++ linux-3.0.8/kernel/softirq.c 2011-08-23 21:47:56.000000000 -0400
84245 @@ -56,7 +56,7 @@ static struct softirq_action softirq_vec
84246
84247 - static DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
84248 + DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
84249
84250 -char *softirq_to_name[NR_SOFTIRQS] = {
84251 +const char * const softirq_to_name[NR_SOFTIRQS] = {
84252 "HI", "TIMER", "NET_TX", "NET_RX", "BLOCK", "BLOCK_IOPOLL",
84253 - "TASKLET", "SCHED", "HRTIMER", "RCU"
84254 + "TASKLET", "SCHED", "HRTIMER", "RCU"
84255 };
84256 -@@ -206,7 +206,7 @@ EXPORT_SYMBOL(local_bh_enable_ip);
84257 +@@ -235,7 +235,7 @@ restart:
84258 + kstat_incr_softirqs_this_cpu(vec_nr);
84259
84260 - asmlinkage void __do_softirq(void)
84261 - {
84262 -- struct softirq_action *h;
84263 -+ const struct softirq_action *h;
84264 - __u32 pending;
84265 - int max_restart = MAX_SOFTIRQ_RESTART;
84266 - int cpu;
84267 -@@ -233,7 +233,7 @@ restart:
84268 - kstat_incr_softirqs_this_cpu(h - softirq_vec);
84269 -
84270 - trace_softirq_entry(h, softirq_vec);
84271 + trace_softirq_entry(vec_nr);
84272 - h->action(h);
84273 + h->action();
84274 - trace_softirq_exit(h, softirq_vec);
84275 + trace_softirq_exit(vec_nr);
84276 if (unlikely(prev_count != preempt_count())) {
84277 - printk(KERN_ERR "huh, entered softirq %td %s %p"
84278 -@@ -363,9 +363,11 @@ void raise_softirq(unsigned int nr)
84279 + printk(KERN_ERR "huh, entered softirq %u %s %p"
84280 +@@ -385,9 +385,11 @@ void raise_softirq(unsigned int nr)
84281 local_irq_restore(flags);
84282 }
84283
84284 @@ -69870,7 +65981,7 @@ diff -urNp linux-2.6.32.48/kernel/softirq.c linux-2.6.32.48/kernel/softirq.c
84285 }
84286
84287 /*
84288 -@@ -419,7 +421,7 @@ void __tasklet_hi_schedule_first(struct
84289 +@@ -441,7 +443,7 @@ void __tasklet_hi_schedule_first(struct
84290
84291 EXPORT_SYMBOL(__tasklet_hi_schedule_first);
84292
84293 @@ -69879,7 +65990,7 @@ diff -urNp linux-2.6.32.48/kernel/softirq.c linux-2.6.32.48/kernel/softirq.c
84294 {
84295 struct tasklet_struct *list;
84296
84297 -@@ -454,7 +456,7 @@ static void tasklet_action(struct softir
84298 +@@ -476,7 +478,7 @@ static void tasklet_action(struct softir
84299 }
84300 }
84301
84302 @@ -69888,10 +65999,10 @@ diff -urNp linux-2.6.32.48/kernel/softirq.c linux-2.6.32.48/kernel/softirq.c
84303 {
84304 struct tasklet_struct *list;
84305
84306 -diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84307 ---- linux-2.6.32.48/kernel/sys.c 2011-11-12 12:44:30.000000000 -0500
84308 -+++ linux-2.6.32.48/kernel/sys.c 2011-11-12 12:46:47.000000000 -0500
84309 -@@ -133,6 +133,12 @@ static int set_one_prio(struct task_stru
84310 +diff -urNp linux-3.0.8/kernel/sys.c linux-3.0.8/kernel/sys.c
84311 +--- linux-3.0.8/kernel/sys.c 2011-10-25 09:10:33.000000000 -0400
84312 ++++ linux-3.0.8/kernel/sys.c 2011-10-25 09:10:41.000000000 -0400
84313 +@@ -158,6 +158,12 @@ static int set_one_prio(struct task_stru
84314 error = -EACCES;
84315 goto out;
84316 }
84317 @@ -69904,36 +66015,7 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84318 no_nice = security_task_setnice(p, niceval);
84319 if (no_nice) {
84320 error = no_nice;
84321 -@@ -190,10 +196,10 @@ SYSCALL_DEFINE3(setpriority, int, which,
84322 - !(user = find_user(who)))
84323 - goto out_unlock; /* No processes for this user */
84324 -
84325 -- do_each_thread(g, p)
84326 -+ do_each_thread(g, p) {
84327 - if (__task_cred(p)->uid == who)
84328 - error = set_one_prio(p, niceval, error);
84329 -- while_each_thread(g, p);
84330 -+ } while_each_thread(g, p);
84331 - if (who != cred->uid)
84332 - free_uid(user); /* For find_user() */
84333 - break;
84334 -@@ -253,13 +259,13 @@ SYSCALL_DEFINE2(getpriority, int, which,
84335 - !(user = find_user(who)))
84336 - goto out_unlock; /* No processes for this user */
84337 -
84338 -- do_each_thread(g, p)
84339 -+ do_each_thread(g, p) {
84340 - if (__task_cred(p)->uid == who) {
84341 - niceval = 20 - task_nice(p);
84342 - if (niceval > retval)
84343 - retval = niceval;
84344 - }
84345 -- while_each_thread(g, p);
84346 -+ } while_each_thread(g, p);
84347 - if (who != cred->uid)
84348 - free_uid(user); /* for find_user() */
84349 - break;
84350 -@@ -509,6 +515,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, g
84351 +@@ -541,6 +547,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, g
84352 goto error;
84353 }
84354
84355 @@ -69943,18 +66025,18 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84356 if (rgid != (gid_t) -1 ||
84357 (egid != (gid_t) -1 && egid != old->gid))
84358 new->sgid = new->egid;
84359 -@@ -542,6 +551,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
84360 - goto error;
84361 +@@ -570,6 +579,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
84362 + old = current_cred();
84363
84364 retval = -EPERM;
84365 +
84366 + if (gr_check_group_change(gid, gid, gid))
84367 + goto error;
84368 +
84369 - if (capable(CAP_SETGID))
84370 + if (nsown_capable(CAP_SETGID))
84371 new->gid = new->egid = new->sgid = new->fsgid = gid;
84372 else if (gid == old->gid || gid == old->sgid)
84373 -@@ -567,12 +580,19 @@ static int set_user(struct cred *new)
84374 +@@ -595,11 +608,18 @@ static int set_user(struct cred *new)
84375 if (!new_user)
84376 return -EAGAIN;
84377
84378 @@ -69965,8 +66047,7 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84379 + * for programs doing set*uid()+execve() by harmlessly deferring the
84380 + * failure to the execve() stage.
84381 + */
84382 - if (atomic_read(&new_user->processes) >=
84383 - current->signal->rlim[RLIMIT_NPROC].rlim_cur &&
84384 + if (atomic_read(&new_user->processes) >= rlimit(RLIMIT_NPROC) &&
84385 - new_user != INIT_USER) {
84386 - free_uid(new_user);
84387 - return -EAGAIN;
84388 @@ -69978,7 +66059,7 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84389
84390 free_uid(new->user);
84391 new->user = new_user;
84392 -@@ -627,6 +647,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, u
84393 +@@ -650,6 +670,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, u
84394 goto error;
84395 }
84396
84397 @@ -69988,8 +66069,8 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84398 if (new->uid != old->uid) {
84399 retval = set_user(new);
84400 if (retval < 0)
84401 -@@ -675,6 +698,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
84402 - goto error;
84403 +@@ -694,6 +717,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
84404 + old = current_cred();
84405
84406 retval = -EPERM;
84407 +
84408 @@ -69998,10 +66079,10 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84409 + if (gr_check_user_change(uid, uid, uid))
84410 + goto error;
84411 +
84412 - if (capable(CAP_SETUID)) {
84413 + if (nsown_capable(CAP_SETUID)) {
84414 new->suid = new->uid = uid;
84415 if (uid != old->uid) {
84416 -@@ -732,6 +761,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid,
84417 +@@ -748,6 +777,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid,
84418 goto error;
84419 }
84420
84421 @@ -70011,7 +66092,7 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84422 if (ruid != (uid_t) -1) {
84423 new->uid = ruid;
84424 if (ruid != old->uid) {
84425 -@@ -800,6 +832,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid,
84426 +@@ -812,6 +844,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid,
84427 goto error;
84428 }
84429
84430 @@ -70021,27 +66102,67 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84431 if (rgid != (gid_t) -1)
84432 new->gid = rgid;
84433 if (egid != (gid_t) -1)
84434 -@@ -849,6 +884,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
84435 - if (security_task_setuid(uid, (uid_t)-1, (uid_t)-1, LSM_SETID_FS) < 0)
84436 - goto error;
84437 +@@ -858,6 +893,9 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
84438 + old = current_cred();
84439 + old_fsuid = old->fsuid;
84440
84441 + if (gr_check_user_change(-1, -1, uid))
84442 + goto error;
84443 +
84444 if (uid == old->uid || uid == old->euid ||
84445 uid == old->suid || uid == old->fsuid ||
84446 - capable(CAP_SETUID)) {
84447 -@@ -889,6 +927,9 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
84448 + nsown_capable(CAP_SETUID)) {
84449 +@@ -868,6 +906,7 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
84450 + }
84451 + }
84452 +
84453 ++error:
84454 + abort_creds(new);
84455 + return old_fsuid;
84456 +
84457 +@@ -894,12 +933,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
84458 if (gid == old->gid || gid == old->egid ||
84459 gid == old->sgid || gid == old->fsgid ||
84460 - capable(CAP_SETGID)) {
84461 + nsown_capable(CAP_SETGID)) {
84462 + if (gr_check_group_change(-1, -1, gid))
84463 + goto error;
84464 +
84465 if (gid != old_fsgid) {
84466 new->fsgid = gid;
84467 goto change_okay;
84468 -@@ -1454,7 +1495,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
84469 + }
84470 + }
84471 +
84472 ++error:
84473 + abort_creds(new);
84474 + return old_fsgid;
84475 +
84476 +@@ -1205,19 +1248,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_
84477 + return -EFAULT;
84478 +
84479 + down_read(&uts_sem);
84480 +- error = __copy_to_user(&name->sysname, &utsname()->sysname,
84481 ++ error = __copy_to_user(name->sysname, &utsname()->sysname,
84482 + __OLD_UTS_LEN);
84483 + error |= __put_user(0, name->sysname + __OLD_UTS_LEN);
84484 +- error |= __copy_to_user(&name->nodename, &utsname()->nodename,
84485 ++ error |= __copy_to_user(name->nodename, &utsname()->nodename,
84486 + __OLD_UTS_LEN);
84487 + error |= __put_user(0, name->nodename + __OLD_UTS_LEN);
84488 +- error |= __copy_to_user(&name->release, &utsname()->release,
84489 ++ error |= __copy_to_user(name->release, &utsname()->release,
84490 + __OLD_UTS_LEN);
84491 + error |= __put_user(0, name->release + __OLD_UTS_LEN);
84492 +- error |= __copy_to_user(&name->version, &utsname()->version,
84493 ++ error |= __copy_to_user(name->version, &utsname()->version,
84494 + __OLD_UTS_LEN);
84495 + error |= __put_user(0, name->version + __OLD_UTS_LEN);
84496 +- error |= __copy_to_user(&name->machine, &utsname()->machine,
84497 ++ error |= __copy_to_user(name->machine, &utsname()->machine,
84498 + __OLD_UTS_LEN);
84499 + error |= __put_user(0, name->machine + __OLD_UTS_LEN);
84500 + up_read(&uts_sem);
84501 +@@ -1680,7 +1723,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
84502 error = get_dumpable(me->mm);
84503 break;
84504 case PR_SET_DUMPABLE:
84505 @@ -70050,11 +66171,77 @@ diff -urNp linux-2.6.32.48/kernel/sys.c linux-2.6.32.48/kernel/sys.c
84506 error = -EINVAL;
84507 break;
84508 }
84509 -diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84510 ---- linux-2.6.32.48/kernel/sysctl.c 2011-11-12 12:44:30.000000000 -0500
84511 -+++ linux-2.6.32.48/kernel/sysctl.c 2011-11-12 12:46:47.000000000 -0500
84512 -@@ -63,6 +63,13 @@
84513 - static int deprecated_sysctl_warning(struct __sysctl_args *args);
84514 +diff -urNp linux-3.0.8/kernel/sysctl_binary.c linux-3.0.8/kernel/sysctl_binary.c
84515 +--- linux-3.0.8/kernel/sysctl_binary.c 2011-07-21 22:17:23.000000000 -0400
84516 ++++ linux-3.0.8/kernel/sysctl_binary.c 2011-10-06 04:17:55.000000000 -0400
84517 +@@ -989,7 +989,7 @@ static ssize_t bin_intvec(struct file *f
84518 + int i;
84519 +
84520 + set_fs(KERNEL_DS);
84521 +- result = vfs_read(file, buffer, BUFSZ - 1, &pos);
84522 ++ result = vfs_read(file, (char __force_user *)buffer, BUFSZ - 1, &pos);
84523 + set_fs(old_fs);
84524 + if (result < 0)
84525 + goto out_kfree;
84526 +@@ -1034,7 +1034,7 @@ static ssize_t bin_intvec(struct file *f
84527 + }
84528 +
84529 + set_fs(KERNEL_DS);
84530 +- result = vfs_write(file, buffer, str - buffer, &pos);
84531 ++ result = vfs_write(file, (const char __force_user *)buffer, str - buffer, &pos);
84532 + set_fs(old_fs);
84533 + if (result < 0)
84534 + goto out_kfree;
84535 +@@ -1067,7 +1067,7 @@ static ssize_t bin_ulongvec(struct file
84536 + int i;
84537 +
84538 + set_fs(KERNEL_DS);
84539 +- result = vfs_read(file, buffer, BUFSZ - 1, &pos);
84540 ++ result = vfs_read(file, (char __force_user *)buffer, BUFSZ - 1, &pos);
84541 + set_fs(old_fs);
84542 + if (result < 0)
84543 + goto out_kfree;
84544 +@@ -1112,7 +1112,7 @@ static ssize_t bin_ulongvec(struct file
84545 + }
84546 +
84547 + set_fs(KERNEL_DS);
84548 +- result = vfs_write(file, buffer, str - buffer, &pos);
84549 ++ result = vfs_write(file, (const char __force_user *)buffer, str - buffer, &pos);
84550 + set_fs(old_fs);
84551 + if (result < 0)
84552 + goto out_kfree;
84553 +@@ -1138,7 +1138,7 @@ static ssize_t bin_uuid(struct file *fil
84554 + int i;
84555 +
84556 + set_fs(KERNEL_DS);
84557 +- result = vfs_read(file, buf, sizeof(buf) - 1, &pos);
84558 ++ result = vfs_read(file, (char __force_user *)buf, sizeof(buf) - 1, &pos);
84559 + set_fs(old_fs);
84560 + if (result < 0)
84561 + goto out;
84562 +@@ -1185,7 +1185,7 @@ static ssize_t bin_dn_node_address(struc
84563 + __le16 dnaddr;
84564 +
84565 + set_fs(KERNEL_DS);
84566 +- result = vfs_read(file, buf, sizeof(buf) - 1, &pos);
84567 ++ result = vfs_read(file, (char __force_user *)buf, sizeof(buf) - 1, &pos);
84568 + set_fs(old_fs);
84569 + if (result < 0)
84570 + goto out;
84571 +@@ -1233,7 +1233,7 @@ static ssize_t bin_dn_node_address(struc
84572 + le16_to_cpu(dnaddr) & 0x3ff);
84573 +
84574 + set_fs(KERNEL_DS);
84575 +- result = vfs_write(file, buf, len, &pos);
84576 ++ result = vfs_write(file, (const char __force_user *)buf, len, &pos);
84577 + set_fs(old_fs);
84578 + if (result < 0)
84579 + goto out;
84580 +diff -urNp linux-3.0.8/kernel/sysctl.c linux-3.0.8/kernel/sysctl.c
84581 +--- linux-3.0.8/kernel/sysctl.c 2011-07-21 22:17:23.000000000 -0400
84582 ++++ linux-3.0.8/kernel/sysctl.c 2011-08-23 21:48:14.000000000 -0400
84583 +@@ -85,6 +85,13 @@
84584 +
84585
84586 #if defined(CONFIG_SYSCTL)
84587 +#include <linux/grsecurity.h>
84588 @@ -70066,23 +66253,22 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84589 +extern int gr_handle_chroot_sysctl(const int op);
84590
84591 /* External variables not in a header file. */
84592 - extern int C_A_D;
84593 -@@ -168,6 +175,7 @@ static int proc_do_cad_pid(struct ctl_ta
84594 - static int proc_taint(struct ctl_table *table, int write,
84595 - void __user *buffer, size_t *lenp, loff_t *ppos);
84596 + extern int sysctl_overcommit_memory;
84597 +@@ -197,6 +204,7 @@ static int sysrq_sysctl_handler(ctl_tabl
84598 + }
84599 +
84600 #endif
84601 -+extern ctl_table grsecurity_table[];
84602 ++extern struct ctl_table grsecurity_table[];
84603
84604 static struct ctl_table root_table[];
84605 static struct ctl_table_root sysctl_table_root;
84606 -@@ -200,6 +208,21 @@ extern struct ctl_table epoll_table[];
84607 +@@ -226,6 +234,20 @@ extern struct ctl_table epoll_table[];
84608 int sysctl_legacy_va_layout;
84609 #endif
84610
84611 +#ifdef CONFIG_PAX_SOFTMODE
84612 +static ctl_table pax_table[] = {
84613 + {
84614 -+ .ctl_name = CTL_UNNUMBERED,
84615 + .procname = "softmode",
84616 + .data = &pax_softmode,
84617 + .maxlen = sizeof(unsigned int),
84618 @@ -70090,20 +66276,19 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84619 + .proc_handler = &proc_dointvec,
84620 + },
84621 +
84622 -+ { .ctl_name = 0 }
84623 ++ { }
84624 +};
84625 +#endif
84626 +
84627 - extern int prove_locking;
84628 - extern int lock_stat;
84629 + /* The default sysctl tables: */
84630
84631 -@@ -251,6 +274,24 @@ static int max_wakeup_granularity_ns = N
84632 + static struct ctl_table root_table[] = {
84633 +@@ -272,6 +294,22 @@ static int max_extfrag_threshold = 1000;
84634 #endif
84635
84636 static struct ctl_table kern_table[] = {
84637 +#if defined(CONFIG_GRKERNSEC_SYSCTL) || defined(CONFIG_GRKERNSEC_ROFS)
84638 + {
84639 -+ .ctl_name = CTL_UNNUMBERED,
84640 + .procname = "grsecurity",
84641 + .mode = 0500,
84642 + .child = grsecurity_table,
84643 @@ -70112,7 +66297,6 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84644 +
84645 +#ifdef CONFIG_PAX_SOFTMODE
84646 + {
84647 -+ .ctl_name = CTL_UNNUMBERED,
84648 + .procname = "pax",
84649 + .mode = 0500,
84650 + .child = pax_table,
84651 @@ -70120,22 +66304,42 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84652 +#endif
84653 +
84654 {
84655 - .ctl_name = CTL_UNNUMBERED,
84656 .procname = "sched_child_runs_first",
84657 -@@ -567,8 +608,8 @@ static struct ctl_table kern_table[] = {
84658 + .data = &sysctl_sched_child_runs_first,
84659 +@@ -546,7 +584,7 @@ static struct ctl_table kern_table[] = {
84660 .data = &modprobe_path,
84661 .maxlen = KMOD_PATH_LEN,
84662 .mode = 0644,
84663 -- .proc_handler = &proc_dostring,
84664 -- .strategy = &sysctl_string,
84665 -+ .proc_handler = &proc_dostring_modpriv,
84666 -+ .strategy = &sysctl_string_modpriv,
84667 +- .proc_handler = proc_dostring,
84668 ++ .proc_handler = proc_dostring_modpriv,
84669 },
84670 {
84671 - .ctl_name = CTL_UNNUMBERED,
84672 -@@ -1247,6 +1288,13 @@ static struct ctl_table vm_table[] = {
84673 + .procname = "modules_disabled",
84674 +@@ -713,16 +751,20 @@ static struct ctl_table kern_table[] = {
84675 + .extra1 = &zero,
84676 + .extra2 = &one,
84677 + },
84678 ++#endif
84679 + {
84680 + .procname = "kptr_restrict",
84681 + .data = &kptr_restrict,
84682 + .maxlen = sizeof(int),
84683 .mode = 0644,
84684 - .proc_handler = &proc_dointvec
84685 + .proc_handler = proc_dmesg_restrict,
84686 ++#ifdef CONFIG_GRKERNSEC_HIDESYM
84687 ++ .extra1 = &two,
84688 ++#else
84689 + .extra1 = &zero,
84690 ++#endif
84691 + .extra2 = &two,
84692 + },
84693 +-#endif
84694 + {
84695 + .procname = "ngroups_max",
84696 + .data = &ngroups_max,
84697 +@@ -1205,6 +1247,13 @@ static struct ctl_table vm_table[] = {
84698 + .proc_handler = proc_dointvec_minmax,
84699 + .extra1 = &zero,
84700 },
84701 + {
84702 + .procname = "heap_stack_gap",
84703 @@ -70146,29 +66350,13 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84704 + },
84705 #else
84706 {
84707 - .ctl_name = CTL_UNNUMBERED,
84708 -@@ -1803,6 +1851,8 @@ static int do_sysctl_strategy(struct ctl
84709 - return 0;
84710 - }
84711 -
84712 -+static int sysctl_perm_nochk(struct ctl_table_root *root, struct ctl_table *table, int op);
84713 -+
84714 - static int parse_table(int __user *name, int nlen,
84715 - void __user *oldval, size_t __user *oldlenp,
84716 - void __user *newval, size_t newlen,
84717 -@@ -1821,7 +1871,7 @@ repeat:
84718 - if (n == table->ctl_name) {
84719 - int error;
84720 - if (table->child) {
84721 -- if (sysctl_perm(root, table, MAY_EXEC))
84722 -+ if (sysctl_perm_nochk(root, table, MAY_EXEC))
84723 - return -EPERM;
84724 - name++;
84725 - nlen--;
84726 -@@ -1906,6 +1956,33 @@ int sysctl_perm(struct ctl_table_root *r
84727 - int error;
84728 + .procname = "nr_trim_pages",
84729 +@@ -1714,6 +1763,17 @@ static int test_perm(int mode, int op)
84730 + int sysctl_perm(struct ctl_table_root *root, struct ctl_table *table, int op)
84731 + {
84732 int mode;
84733 -
84734 ++ int error;
84735 ++
84736 + if (table->parent != NULL && table->parent->procname != NULL &&
84737 + table->procname != NULL &&
84738 + gr_handle_sysctl_mod(table->parent->procname, table->procname, op))
84739 @@ -70178,28 +66366,10 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84740 + error = gr_handle_sysctl(table, op);
84741 + if (error)
84742 + return error;
84743 -+
84744 -+ error = security_sysctl(table, op & (MAY_READ | MAY_WRITE | MAY_EXEC));
84745 -+ if (error)
84746 -+ return error;
84747 -+
84748 -+ if (root->permissions)
84749 -+ mode = root->permissions(root, current->nsproxy, table);
84750 -+ else
84751 -+ mode = table->mode;
84752 -+
84753 -+ return test_perm(mode, op);
84754 -+}
84755 -+
84756 -+int sysctl_perm_nochk(struct ctl_table_root *root, struct ctl_table *table, int op)
84757 -+{
84758 -+ int error;
84759 -+ int mode;
84760 -+
84761 - error = security_sysctl(table, op & (MAY_READ | MAY_WRITE | MAY_EXEC));
84762 - if (error)
84763 - return error;
84764 -@@ -2335,6 +2412,16 @@ int proc_dostring(struct ctl_table *tabl
84765 +
84766 + if (root->permissions)
84767 + mode = root->permissions(root, current->nsproxy, table);
84768 +@@ -2118,6 +2178,16 @@ int proc_dostring(struct ctl_table *tabl
84769 buffer, lenp, ppos);
84770 }
84771
84772 @@ -70213,19 +66383,32 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84773 + buffer, lenp, ppos);
84774 +}
84775 +
84776 -
84777 - static int do_proc_dointvec_conv(int *negp, unsigned long *lvalp,
84778 - int *valp,
84779 -@@ -2609,7 +2696,7 @@ static int __do_proc_doulongvec_minmax(v
84780 - vleft = table->maxlen / sizeof(unsigned long);
84781 - left = *lenp;
84782 -
84783 -- for (; left && vleft--; i++, min++, max++, first=0) {
84784 -+ for (; left && vleft--; i++, first=0) {
84785 - if (write) {
84786 - while (left) {
84787 - char c;
84788 -@@ -2910,6 +2997,12 @@ int proc_dostring(struct ctl_table *tabl
84789 + static size_t proc_skip_spaces(char **buf)
84790 + {
84791 + size_t ret;
84792 +@@ -2223,6 +2293,8 @@ static int proc_put_long(void __user **b
84793 + len = strlen(tmp);
84794 + if (len > *size)
84795 + len = *size;
84796 ++ if (len > sizeof(tmp))
84797 ++ len = sizeof(tmp);
84798 + if (copy_to_user(*buf, tmp, len))
84799 + return -EFAULT;
84800 + *size -= len;
84801 +@@ -2539,8 +2611,11 @@ static int __do_proc_doulongvec_minmax(v
84802 + *i = val;
84803 + } else {
84804 + val = convdiv * (*i) / convmul;
84805 +- if (!first)
84806 ++ if (!first) {
84807 + err = proc_put_char(&buffer, &left, '\t');
84808 ++ if (err)
84809 ++ break;
84810 ++ }
84811 + err = proc_put_long(&buffer, &left, val, false);
84812 + if (err)
84813 + break;
84814 +@@ -2935,6 +3010,12 @@ int proc_dostring(struct ctl_table *tabl
84815 return -ENOSYS;
84816 }
84817
84818 @@ -70238,38 +66421,7 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84819 int proc_dointvec(struct ctl_table *table, int write,
84820 void __user *buffer, size_t *lenp, loff_t *ppos)
84821 {
84822 -@@ -3038,6 +3131,16 @@ int sysctl_string(struct ctl_table *tabl
84823 - return 1;
84824 - }
84825 -
84826 -+int sysctl_string_modpriv(struct ctl_table *table,
84827 -+ void __user *oldval, size_t __user *oldlenp,
84828 -+ void __user *newval, size_t newlen)
84829 -+{
84830 -+ if (newval && newlen && !capable(CAP_SYS_MODULE))
84831 -+ return -EPERM;
84832 -+
84833 -+ return sysctl_string(table, oldval, oldlenp, newval, newlen);
84834 -+}
84835 -+
84836 - /*
84837 - * This function makes sure that all of the integers in the vector
84838 - * are between the minimum and maximum values given in the arrays
84839 -@@ -3182,6 +3285,13 @@ int sysctl_string(struct ctl_table *tabl
84840 - return -ENOSYS;
84841 - }
84842 -
84843 -+int sysctl_string_modpriv(struct ctl_table *table,
84844 -+ void __user *oldval, size_t __user *oldlenp,
84845 -+ void __user *newval, size_t newlen)
84846 -+{
84847 -+ return -ENOSYS;
84848 -+}
84849 -+
84850 - int sysctl_intvec(struct ctl_table *table,
84851 - void __user *oldval, size_t __user *oldlenp,
84852 - void __user *newval, size_t newlen)
84853 -@@ -3246,6 +3356,7 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
84854 +@@ -2991,6 +3072,7 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
84855 EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
84856 EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
84857 EXPORT_SYMBOL(proc_dostring);
84858 @@ -70277,33 +66429,21 @@ diff -urNp linux-2.6.32.48/kernel/sysctl.c linux-2.6.32.48/kernel/sysctl.c
84859 EXPORT_SYMBOL(proc_doulongvec_minmax);
84860 EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
84861 EXPORT_SYMBOL(register_sysctl_table);
84862 -@@ -3254,5 +3365,6 @@ EXPORT_SYMBOL(sysctl_intvec);
84863 - EXPORT_SYMBOL(sysctl_jiffies);
84864 - EXPORT_SYMBOL(sysctl_ms_jiffies);
84865 - EXPORT_SYMBOL(sysctl_string);
84866 -+EXPORT_SYMBOL(sysctl_string_modpriv);
84867 - EXPORT_SYMBOL(sysctl_data);
84868 - EXPORT_SYMBOL(unregister_sysctl_table);
84869 -diff -urNp linux-2.6.32.48/kernel/sysctl_check.c linux-2.6.32.48/kernel/sysctl_check.c
84870 ---- linux-2.6.32.48/kernel/sysctl_check.c 2011-11-12 12:44:30.000000000 -0500
84871 -+++ linux-2.6.32.48/kernel/sysctl_check.c 2011-11-12 12:46:47.000000000 -0500
84872 -@@ -1489,10 +1489,12 @@ int sysctl_check_table(struct nsproxy *n
84873 +diff -urNp linux-3.0.8/kernel/sysctl_check.c linux-3.0.8/kernel/sysctl_check.c
84874 +--- linux-3.0.8/kernel/sysctl_check.c 2011-07-21 22:17:23.000000000 -0400
84875 ++++ linux-3.0.8/kernel/sysctl_check.c 2011-08-23 21:48:14.000000000 -0400
84876 +@@ -129,6 +129,7 @@ int sysctl_check_table(struct nsproxy *n
84877 + set_fail(&fail, table, "Directory with extra2");
84878 } else {
84879 - if ((table->strategy == sysctl_data) ||
84880 - (table->strategy == sysctl_string) ||
84881 -+ (table->strategy == sysctl_string_modpriv) ||
84882 - (table->strategy == sysctl_intvec) ||
84883 - (table->strategy == sysctl_jiffies) ||
84884 - (table->strategy == sysctl_ms_jiffies) ||
84885 - (table->proc_handler == proc_dostring) ||
84886 + if ((table->proc_handler == proc_dostring) ||
84887 + (table->proc_handler == proc_dostring_modpriv) ||
84888 (table->proc_handler == proc_dointvec) ||
84889 (table->proc_handler == proc_dointvec_minmax) ||
84890 (table->proc_handler == proc_dointvec_jiffies) ||
84891 -diff -urNp linux-2.6.32.48/kernel/taskstats.c linux-2.6.32.48/kernel/taskstats.c
84892 ---- linux-2.6.32.48/kernel/taskstats.c 2011-11-12 12:44:30.000000000 -0500
84893 -+++ linux-2.6.32.48/kernel/taskstats.c 2011-11-12 12:46:47.000000000 -0500
84894 -@@ -26,9 +26,12 @@
84895 +diff -urNp linux-3.0.8/kernel/taskstats.c linux-3.0.8/kernel/taskstats.c
84896 +--- linux-3.0.8/kernel/taskstats.c 2011-07-21 22:17:23.000000000 -0400
84897 ++++ linux-3.0.8/kernel/taskstats.c 2011-08-23 21:48:14.000000000 -0400
84898 +@@ -27,9 +27,12 @@
84899 #include <linux/cgroup.h>
84900 #include <linux/fs.h>
84901 #include <linux/file.h>
84902 @@ -70316,20 +66456,32 @@ diff -urNp linux-2.6.32.48/kernel/taskstats.c linux-2.6.32.48/kernel/taskstats.c
84903 /*
84904 * Maximum length of a cpumask that can be specified in
84905 * the TASKSTATS_CMD_ATTR_REGISTER/DEREGISTER_CPUMASK attribute
84906 -@@ -442,6 +445,9 @@ static int taskstats_user_cmd(struct sk_
84907 - size_t size;
84908 - cpumask_var_t mask;
84909 +@@ -558,6 +561,9 @@ err:
84910
84911 + static int taskstats_user_cmd(struct sk_buff *skb, struct genl_info *info)
84912 + {
84913 + if (gr_is_taskstats_denied(current->pid))
84914 + return -EACCES;
84915 +
84916 - if (!alloc_cpumask_var(&mask, GFP_KERNEL))
84917 - return -ENOMEM;
84918 -
84919 -diff -urNp linux-2.6.32.48/kernel/time/tick-broadcast.c linux-2.6.32.48/kernel/time/tick-broadcast.c
84920 ---- linux-2.6.32.48/kernel/time/tick-broadcast.c 2011-11-12 12:44:30.000000000 -0500
84921 -+++ linux-2.6.32.48/kernel/time/tick-broadcast.c 2011-11-12 12:46:47.000000000 -0500
84922 -@@ -116,7 +116,7 @@ int tick_device_uses_broadcast(struct cl
84923 + if (info->attrs[TASKSTATS_CMD_ATTR_REGISTER_CPUMASK])
84924 + return cmd_attr_register_cpumask(info);
84925 + else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK])
84926 +diff -urNp linux-3.0.8/kernel/time/alarmtimer.c linux-3.0.8/kernel/time/alarmtimer.c
84927 +--- linux-3.0.8/kernel/time/alarmtimer.c 2011-10-24 08:05:30.000000000 -0400
84928 ++++ linux-3.0.8/kernel/time/alarmtimer.c 2011-10-16 21:55:28.000000000 -0400
84929 +@@ -693,7 +693,7 @@ static int __init alarmtimer_init(void)
84930 + {
84931 + int error = 0;
84932 + int i;
84933 +- struct k_clock alarm_clock = {
84934 ++ static struct k_clock alarm_clock = {
84935 + .clock_getres = alarm_clock_getres,
84936 + .clock_get = alarm_clock_get,
84937 + .timer_create = alarm_timer_create,
84938 +diff -urNp linux-3.0.8/kernel/time/tick-broadcast.c linux-3.0.8/kernel/time/tick-broadcast.c
84939 +--- linux-3.0.8/kernel/time/tick-broadcast.c 2011-07-21 22:17:23.000000000 -0400
84940 ++++ linux-3.0.8/kernel/time/tick-broadcast.c 2011-08-23 21:47:56.000000000 -0400
84941 +@@ -115,7 +115,7 @@ int tick_device_uses_broadcast(struct cl
84942 * then clear the broadcast bit.
84943 */
84944 if (!(dev->features & CLOCK_EVT_FEAT_C3STOP)) {
84945 @@ -70338,27 +66490,18 @@ diff -urNp linux-2.6.32.48/kernel/time/tick-broadcast.c linux-2.6.32.48/kernel/t
84946
84947 cpumask_clear_cpu(cpu, tick_get_broadcast_mask());
84948 tick_broadcast_clear_oneshot(cpu);
84949 -diff -urNp linux-2.6.32.48/kernel/time/timekeeping.c linux-2.6.32.48/kernel/time/timekeeping.c
84950 ---- linux-2.6.32.48/kernel/time/timekeeping.c 2011-11-12 12:44:30.000000000 -0500
84951 -+++ linux-2.6.32.48/kernel/time/timekeeping.c 2011-11-12 12:46:47.000000000 -0500
84952 +diff -urNp linux-3.0.8/kernel/time/timekeeping.c linux-3.0.8/kernel/time/timekeeping.c
84953 +--- linux-3.0.8/kernel/time/timekeeping.c 2011-07-21 22:17:23.000000000 -0400
84954 ++++ linux-3.0.8/kernel/time/timekeeping.c 2011-08-23 21:48:14.000000000 -0400
84955 @@ -14,6 +14,7 @@
84956 #include <linux/init.h>
84957 #include <linux/mm.h>
84958 #include <linux/sched.h>
84959 +#include <linux/grsecurity.h>
84960 - #include <linux/sysdev.h>
84961 + #include <linux/syscore_ops.h>
84962 #include <linux/clocksource.h>
84963 #include <linux/jiffies.h>
84964 -@@ -180,7 +181,7 @@ void update_xtime_cache(u64 nsec)
84965 - */
84966 - struct timespec ts = xtime;
84967 - timespec_add_ns(&ts, nsec);
84968 -- ACCESS_ONCE(xtime_cache) = ts;
84969 -+ ACCESS_ONCE_RW(xtime_cache) = ts;
84970 - }
84971 -
84972 - /* must hold xtime_lock */
84973 -@@ -333,6 +334,8 @@ int do_settimeofday(struct timespec *tv)
84974 +@@ -361,6 +362,8 @@ int do_settimeofday(const struct timespe
84975 if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
84976 return -EINVAL;
84977
84978 @@ -70367,9 +66510,9 @@ diff -urNp linux-2.6.32.48/kernel/time/timekeeping.c linux-2.6.32.48/kernel/time
84979 write_seqlock_irqsave(&xtime_lock, flags);
84980
84981 timekeeping_forward_now();
84982 -diff -urNp linux-2.6.32.48/kernel/time/timer_list.c linux-2.6.32.48/kernel/time/timer_list.c
84983 ---- linux-2.6.32.48/kernel/time/timer_list.c 2011-11-12 12:44:30.000000000 -0500
84984 -+++ linux-2.6.32.48/kernel/time/timer_list.c 2011-11-12 12:46:47.000000000 -0500
84985 +diff -urNp linux-3.0.8/kernel/time/timer_list.c linux-3.0.8/kernel/time/timer_list.c
84986 +--- linux-3.0.8/kernel/time/timer_list.c 2011-07-21 22:17:23.000000000 -0400
84987 ++++ linux-3.0.8/kernel/time/timer_list.c 2011-08-23 21:48:14.000000000 -0400
84988 @@ -38,12 +38,16 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base,
84989
84990 static void print_name_offset(struct seq_file *m, void *sym)
84991 @@ -70380,7 +66523,7 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_list.c linux-2.6.32.48/kernel/time/
84992 char symname[KSYM_NAME_LEN];
84993
84994 if (lookup_symbol_name((unsigned long)sym, symname) < 0)
84995 - SEQ_printf(m, "<%p>", sym);
84996 + SEQ_printf(m, "<%pK>", sym);
84997 else
84998 SEQ_printf(m, "%s", symname);
84999 +#endif
85000 @@ -70394,12 +66537,12 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_list.c linux-2.6.32.48/kernel/time/
85001 +#ifdef CONFIG_GRKERNSEC_HIDESYM
85002 + SEQ_printf(m, " .base: %p\n", NULL);
85003 +#else
85004 - SEQ_printf(m, " .base: %p\n", base);
85005 + SEQ_printf(m, " .base: %pK\n", base);
85006 +#endif
85007 SEQ_printf(m, " .index: %d\n",
85008 base->index);
85009 SEQ_printf(m, " .resolution: %Lu nsecs\n",
85010 -@@ -289,7 +297,11 @@ static int __init init_timer_list_procfs
85011 +@@ -293,7 +301,11 @@ static int __init init_timer_list_procfs
85012 {
85013 struct proc_dir_entry *pe;
85014
85015 @@ -70411,9 +66554,9 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_list.c linux-2.6.32.48/kernel/time/
85016 if (!pe)
85017 return -ENOMEM;
85018 return 0;
85019 -diff -urNp linux-2.6.32.48/kernel/time/timer_stats.c linux-2.6.32.48/kernel/time/timer_stats.c
85020 ---- linux-2.6.32.48/kernel/time/timer_stats.c 2009-12-02 22:51:21.000000000 -0500
85021 -+++ linux-2.6.32.48/kernel/time/timer_stats.c 2011-11-12 12:46:47.000000000 -0500
85022 +diff -urNp linux-3.0.8/kernel/time/timer_stats.c linux-3.0.8/kernel/time/timer_stats.c
85023 +--- linux-3.0.8/kernel/time/timer_stats.c 2011-07-21 22:17:23.000000000 -0400
85024 ++++ linux-3.0.8/kernel/time/timer_stats.c 2011-08-23 21:48:14.000000000 -0400
85025 @@ -116,7 +116,7 @@ static ktime_t time_start, time_stop;
85026 static unsigned long nr_entries;
85027 static struct entry entries[MAX_ENTRIES];
85028 @@ -70440,7 +66583,7 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_stats.c linux-2.6.32.48/kernel/time
85029 + atomic_inc_unchecked(&overflow_count);
85030
85031 out_unlock:
85032 - spin_unlock_irqrestore(lock, flags);
85033 + raw_spin_unlock_irqrestore(lock, flags);
85034 @@ -269,12 +269,16 @@ void timer_stats_update_stats(void *time
85035
85036 static void print_name_offset(struct seq_file *m, unsigned long addr)
85037 @@ -70470,7 +66613,7 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_stats.c linux-2.6.32.48/kernel/time
85038
85039 for (i = 0; i < nr_entries; i++) {
85040 entry = entries + i;
85041 -@@ -415,7 +419,11 @@ static int __init init_tstats_procfs(voi
85042 +@@ -417,7 +421,11 @@ static int __init init_tstats_procfs(voi
85043 {
85044 struct proc_dir_entry *pe;
85045
85046 @@ -70482,10 +66625,10 @@ diff -urNp linux-2.6.32.48/kernel/time/timer_stats.c linux-2.6.32.48/kernel/time
85047 if (!pe)
85048 return -ENOMEM;
85049 return 0;
85050 -diff -urNp linux-2.6.32.48/kernel/time.c linux-2.6.32.48/kernel/time.c
85051 ---- linux-2.6.32.48/kernel/time.c 2011-11-12 12:44:30.000000000 -0500
85052 -+++ linux-2.6.32.48/kernel/time.c 2011-11-12 12:46:47.000000000 -0500
85053 -@@ -165,6 +165,11 @@ int do_sys_settimeofday(struct timespec
85054 +diff -urNp linux-3.0.8/kernel/time.c linux-3.0.8/kernel/time.c
85055 +--- linux-3.0.8/kernel/time.c 2011-07-21 22:17:23.000000000 -0400
85056 ++++ linux-3.0.8/kernel/time.c 2011-08-23 21:48:14.000000000 -0400
85057 +@@ -163,6 +163,11 @@ int do_sys_settimeofday(const struct tim
85058 return error;
85059
85060 if (tz) {
85061 @@ -70497,40 +66640,22 @@ diff -urNp linux-2.6.32.48/kernel/time.c linux-2.6.32.48/kernel/time.c
85062 /* SMP safe, global irq locking makes it work. */
85063 sys_tz = *tz;
85064 update_vsyscall_tz();
85065 -@@ -240,7 +245,7 @@ EXPORT_SYMBOL(current_fs_time);
85066 - * Avoid unnecessary multiplications/divisions in the
85067 - * two most common HZ cases:
85068 - */
85069 --unsigned int inline jiffies_to_msecs(const unsigned long j)
85070 -+inline unsigned int jiffies_to_msecs(const unsigned long j)
85071 - {
85072 - #if HZ <= MSEC_PER_SEC && !(MSEC_PER_SEC % HZ)
85073 - return (MSEC_PER_SEC / HZ) * j;
85074 -@@ -256,7 +261,7 @@ unsigned int inline jiffies_to_msecs(con
85075 - }
85076 - EXPORT_SYMBOL(jiffies_to_msecs);
85077 -
85078 --unsigned int inline jiffies_to_usecs(const unsigned long j)
85079 -+inline unsigned int jiffies_to_usecs(const unsigned long j)
85080 - {
85081 - #if HZ <= USEC_PER_SEC && !(USEC_PER_SEC % HZ)
85082 - return (USEC_PER_SEC / HZ) * j;
85083 -diff -urNp linux-2.6.32.48/kernel/timer.c linux-2.6.32.48/kernel/timer.c
85084 ---- linux-2.6.32.48/kernel/timer.c 2011-11-12 12:44:30.000000000 -0500
85085 -+++ linux-2.6.32.48/kernel/timer.c 2011-11-12 12:46:47.000000000 -0500
85086 -@@ -1213,7 +1213,7 @@ void update_process_times(int user_tick)
85087 +diff -urNp linux-3.0.8/kernel/timer.c linux-3.0.8/kernel/timer.c
85088 +--- linux-3.0.8/kernel/timer.c 2011-07-21 22:17:23.000000000 -0400
85089 ++++ linux-3.0.8/kernel/timer.c 2011-08-23 21:47:56.000000000 -0400
85090 +@@ -1304,7 +1304,7 @@ void update_process_times(int user_tick)
85091 /*
85092 * This function runs timers and the timer-tq in bottom half context.
85093 */
85094 -static void run_timer_softirq(struct softirq_action *h)
85095 +static void run_timer_softirq(void)
85096 {
85097 - struct tvec_base *base = __get_cpu_var(tvec_bases);
85098 + struct tvec_base *base = __this_cpu_read(tvec_bases);
85099
85100 -diff -urNp linux-2.6.32.48/kernel/trace/blktrace.c linux-2.6.32.48/kernel/trace/blktrace.c
85101 ---- linux-2.6.32.48/kernel/trace/blktrace.c 2009-12-02 22:51:21.000000000 -0500
85102 -+++ linux-2.6.32.48/kernel/trace/blktrace.c 2011-11-12 12:46:47.000000000 -0500
85103 -@@ -313,7 +313,7 @@ static ssize_t blk_dropped_read(struct f
85104 +diff -urNp linux-3.0.8/kernel/trace/blktrace.c linux-3.0.8/kernel/trace/blktrace.c
85105 +--- linux-3.0.8/kernel/trace/blktrace.c 2011-07-21 22:17:23.000000000 -0400
85106 ++++ linux-3.0.8/kernel/trace/blktrace.c 2011-08-23 21:47:56.000000000 -0400
85107 +@@ -321,7 +321,7 @@ static ssize_t blk_dropped_read(struct f
85108 struct blk_trace *bt = filp->private_data;
85109 char buf[16];
85110
85111 @@ -70539,7 +66664,7 @@ diff -urNp linux-2.6.32.48/kernel/trace/blktrace.c linux-2.6.32.48/kernel/trace/
85112
85113 return simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf));
85114 }
85115 -@@ -376,7 +376,7 @@ static int blk_subbuf_start_callback(str
85116 +@@ -386,7 +386,7 @@ static int blk_subbuf_start_callback(str
85117 return 1;
85118
85119 bt = buf->chan->private_data;
85120 @@ -70548,7 +66673,7 @@ diff -urNp linux-2.6.32.48/kernel/trace/blktrace.c linux-2.6.32.48/kernel/trace/
85121 return 0;
85122 }
85123
85124 -@@ -477,7 +477,7 @@ int do_blk_trace_setup(struct request_qu
85125 +@@ -487,7 +487,7 @@ int do_blk_trace_setup(struct request_qu
85126
85127 bt->dir = dir;
85128 bt->dev = dev;
85129 @@ -70557,12 +66682,12 @@ diff -urNp linux-2.6.32.48/kernel/trace/blktrace.c linux-2.6.32.48/kernel/trace/
85130
85131 ret = -EIO;
85132 bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
85133 -diff -urNp linux-2.6.32.48/kernel/trace/ftrace.c linux-2.6.32.48/kernel/trace/ftrace.c
85134 ---- linux-2.6.32.48/kernel/trace/ftrace.c 2011-11-12 12:44:30.000000000 -0500
85135 -+++ linux-2.6.32.48/kernel/trace/ftrace.c 2011-11-12 12:46:47.000000000 -0500
85136 -@@ -1100,13 +1100,18 @@ ftrace_code_disable(struct module *mod,
85137 -
85138 - ip = rec->ip;
85139 +diff -urNp linux-3.0.8/kernel/trace/ftrace.c linux-3.0.8/kernel/trace/ftrace.c
85140 +--- linux-3.0.8/kernel/trace/ftrace.c 2011-10-24 08:05:32.000000000 -0400
85141 ++++ linux-3.0.8/kernel/trace/ftrace.c 2011-10-17 23:17:19.000000000 -0400
85142 +@@ -1566,12 +1566,17 @@ ftrace_code_disable(struct module *mod,
85143 + if (unlikely(ftrace_disabled))
85144 + return 0;
85145
85146 + ret = ftrace_arch_code_modify_prepare();
85147 + FTRACE_WARN_ON(ret);
85148 @@ -70573,7 +66698,6 @@ diff -urNp linux-2.6.32.48/kernel/trace/ftrace.c linux-2.6.32.48/kernel/trace/ft
85149 + FTRACE_WARN_ON(ftrace_arch_code_modify_post_process());
85150 if (ret) {
85151 ftrace_bug(ret, ip);
85152 - rec->flags |= FTRACE_FL_FAILED;
85153 - return 0;
85154 }
85155 - return 1;
85156 @@ -70581,40 +66705,37 @@ diff -urNp linux-2.6.32.48/kernel/trace/ftrace.c linux-2.6.32.48/kernel/trace/ft
85157 }
85158
85159 /*
85160 -diff -urNp linux-2.6.32.48/kernel/trace/ring_buffer.c linux-2.6.32.48/kernel/trace/ring_buffer.c
85161 ---- linux-2.6.32.48/kernel/trace/ring_buffer.c 2011-11-12 12:44:30.000000000 -0500
85162 -+++ linux-2.6.32.48/kernel/trace/ring_buffer.c 2011-11-12 12:46:47.000000000 -0500
85163 -@@ -606,7 +606,7 @@ static struct list_head *rb_list_head(st
85164 - * the reader page). But if the next page is a header page,
85165 - * its flags will be non zero.
85166 - */
85167 --static int inline
85168 -+static inline int
85169 - rb_is_head_page(struct ring_buffer_per_cpu *cpu_buffer,
85170 - struct buffer_page *page, struct list_head *list)
85171 - {
85172 -diff -urNp linux-2.6.32.48/kernel/trace/trace.c linux-2.6.32.48/kernel/trace/trace.c
85173 ---- linux-2.6.32.48/kernel/trace/trace.c 2011-11-12 12:44:30.000000000 -0500
85174 -+++ linux-2.6.32.48/kernel/trace/trace.c 2011-11-12 12:46:47.000000000 -0500
85175 -@@ -3193,6 +3193,8 @@ static ssize_t tracing_splice_read_pipe(
85176 +@@ -2570,7 +2575,7 @@ static void ftrace_free_entry_rcu(struct
85177 +
85178 + int
85179 + register_ftrace_function_probe(char *glob, struct ftrace_probe_ops *ops,
85180 +- void *data)
85181 ++ void *data)
85182 + {
85183 + struct ftrace_func_probe *entry;
85184 + struct ftrace_page *pg;
85185 +diff -urNp linux-3.0.8/kernel/trace/trace.c linux-3.0.8/kernel/trace/trace.c
85186 +--- linux-3.0.8/kernel/trace/trace.c 2011-07-21 22:17:23.000000000 -0400
85187 ++++ linux-3.0.8/kernel/trace/trace.c 2011-08-23 21:48:14.000000000 -0400
85188 +@@ -3339,6 +3339,8 @@ static ssize_t tracing_splice_read_pipe(
85189 size_t rem;
85190 unsigned int i;
85191
85192 + pax_track_stack();
85193 +
85194 - /* copy the tracer to avoid using a global lock all around */
85195 - mutex_lock(&trace_types_lock);
85196 - if (unlikely(old_tracer != current_trace && current_trace)) {
85197 -@@ -3659,6 +3661,8 @@ tracing_buffers_splice_read(struct file
85198 + if (splice_grow_spd(pipe, &spd))
85199 + return -ENOMEM;
85200 +
85201 +@@ -3822,6 +3824,8 @@ tracing_buffers_splice_read(struct file
85202 int entries, size, i;
85203 size_t ret;
85204
85205 + pax_track_stack();
85206 +
85207 - if (*ppos & (PAGE_SIZE - 1)) {
85208 - WARN_ONCE(1, "Ftrace: previous read must page-align\n");
85209 - return -EINVAL;
85210 -@@ -3816,10 +3820,9 @@ static const struct file_operations trac
85211 + if (splice_grow_spd(pipe, &spd))
85212 + return -ENOMEM;
85213 +
85214 +@@ -3990,10 +3994,9 @@ static const struct file_operations trac
85215 };
85216 #endif
85217
85218 @@ -70626,7 +66747,7 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace.c linux-2.6.32.48/kernel/trace/tra
85219 static int once;
85220
85221 if (d_tracer)
85222 -@@ -3839,10 +3842,9 @@ struct dentry *tracing_init_dentry(void)
85223 +@@ -4013,10 +4016,9 @@ struct dentry *tracing_init_dentry(void)
85224 return d_tracer;
85225 }
85226
85227 @@ -70638,14 +66759,10 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace.c linux-2.6.32.48/kernel/trace/tra
85228 static int once;
85229 struct dentry *d_tracer;
85230
85231 -diff -urNp linux-2.6.32.48/kernel/trace/trace_events.c linux-2.6.32.48/kernel/trace/trace_events.c
85232 ---- linux-2.6.32.48/kernel/trace/trace_events.c 2009-12-02 22:51:21.000000000 -0500
85233 -+++ linux-2.6.32.48/kernel/trace/trace_events.c 2011-11-12 12:46:47.000000000 -0500
85234 -@@ -951,13 +951,10 @@ static LIST_HEAD(ftrace_module_file_list
85235 - * Modules must own their file_operations to keep up with
85236 - * reference counting.
85237 - */
85238 -+
85239 +diff -urNp linux-3.0.8/kernel/trace/trace_events.c linux-3.0.8/kernel/trace/trace_events.c
85240 +--- linux-3.0.8/kernel/trace/trace_events.c 2011-10-24 08:05:21.000000000 -0400
85241 ++++ linux-3.0.8/kernel/trace/trace_events.c 2011-08-23 21:47:56.000000000 -0400
85242 +@@ -1318,10 +1318,6 @@ static LIST_HEAD(ftrace_module_file_list
85243 struct ftrace_module_file_ops {
85244 struct list_head list;
85245 struct module *mod;
85246 @@ -70655,8 +66772,8 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_events.c linux-2.6.32.48/kernel/tr
85247 - struct file_operations filter;
85248 };
85249
85250 - static void remove_subsystem_dir(const char *name)
85251 -@@ -1004,17 +1001,12 @@ trace_create_file_ops(struct module *mod
85252 + static struct ftrace_module_file_ops *
85253 +@@ -1342,17 +1338,12 @@ trace_create_file_ops(struct module *mod
85254
85255 file_ops->mod = mod;
85256
85257 @@ -70680,21 +66797,60 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_events.c linux-2.6.32.48/kernel/tr
85258
85259 list_add(&file_ops->list, &ftrace_module_file_list);
85260
85261 -@@ -1063,8 +1055,8 @@ static void trace_module_add_events(stru
85262 - call->mod = mod;
85263 - list_add(&call->list, &ftrace_events);
85264 - event_create_dir(call, d_events,
85265 -- &file_ops->id, &file_ops->enable,
85266 -- &file_ops->filter, &file_ops->format);
85267 -+ &mod->trace_id, &mod->trace_enable,
85268 -+ &mod->trace_filter, &mod->trace_format);
85269 +@@ -1376,8 +1367,8 @@ static void trace_module_add_events(stru
85270 +
85271 + for_each_event(call, start, end) {
85272 + __trace_add_event_call(*call, mod,
85273 +- &file_ops->id, &file_ops->enable,
85274 +- &file_ops->filter, &file_ops->format);
85275 ++ &mod->trace_id, &mod->trace_enable,
85276 ++ &mod->trace_filter, &mod->trace_format);
85277 }
85278 }
85279
85280 -diff -urNp linux-2.6.32.48/kernel/trace/trace_mmiotrace.c linux-2.6.32.48/kernel/trace/trace_mmiotrace.c
85281 ---- linux-2.6.32.48/kernel/trace/trace_mmiotrace.c 2009-12-02 22:51:21.000000000 -0500
85282 -+++ linux-2.6.32.48/kernel/trace/trace_mmiotrace.c 2011-11-12 12:46:47.000000000 -0500
85283 -@@ -23,7 +23,7 @@ struct header_iter {
85284 +diff -urNp linux-3.0.8/kernel/trace/trace_kprobe.c linux-3.0.8/kernel/trace/trace_kprobe.c
85285 +--- linux-3.0.8/kernel/trace/trace_kprobe.c 2011-07-21 22:17:23.000000000 -0400
85286 ++++ linux-3.0.8/kernel/trace/trace_kprobe.c 2011-10-06 04:17:55.000000000 -0400
85287 +@@ -217,7 +217,7 @@ static __kprobes void FETCH_FUNC_NAME(me
85288 + long ret;
85289 + int maxlen = get_rloc_len(*(u32 *)dest);
85290 + u8 *dst = get_rloc_data(dest);
85291 +- u8 *src = addr;
85292 ++ const u8 __user *src = (const u8 __force_user *)addr;
85293 + mm_segment_t old_fs = get_fs();
85294 + if (!maxlen)
85295 + return;
85296 +@@ -229,7 +229,7 @@ static __kprobes void FETCH_FUNC_NAME(me
85297 + pagefault_disable();
85298 + do
85299 + ret = __copy_from_user_inatomic(dst++, src++, 1);
85300 +- while (dst[-1] && ret == 0 && src - (u8 *)addr < maxlen);
85301 ++ while (dst[-1] && ret == 0 && src - (const u8 __force_user *)addr < maxlen);
85302 + dst[-1] = '\0';
85303 + pagefault_enable();
85304 + set_fs(old_fs);
85305 +@@ -238,7 +238,7 @@ static __kprobes void FETCH_FUNC_NAME(me
85306 + ((u8 *)get_rloc_data(dest))[0] = '\0';
85307 + *(u32 *)dest = make_data_rloc(0, get_rloc_offs(*(u32 *)dest));
85308 + } else
85309 +- *(u32 *)dest = make_data_rloc(src - (u8 *)addr,
85310 ++ *(u32 *)dest = make_data_rloc(src - (const u8 __force_user *)addr,
85311 + get_rloc_offs(*(u32 *)dest));
85312 + }
85313 + /* Return the length of string -- including null terminal byte */
85314 +@@ -252,7 +252,7 @@ static __kprobes void FETCH_FUNC_NAME(me
85315 + set_fs(KERNEL_DS);
85316 + pagefault_disable();
85317 + do {
85318 +- ret = __copy_from_user_inatomic(&c, (u8 *)addr + len, 1);
85319 ++ ret = __copy_from_user_inatomic(&c, (const u8 __force_user *)addr + len, 1);
85320 + len++;
85321 + } while (c && ret == 0 && len < MAX_STRING_SIZE);
85322 + pagefault_enable();
85323 +diff -urNp linux-3.0.8/kernel/trace/trace_mmiotrace.c linux-3.0.8/kernel/trace/trace_mmiotrace.c
85324 +--- linux-3.0.8/kernel/trace/trace_mmiotrace.c 2011-07-21 22:17:23.000000000 -0400
85325 ++++ linux-3.0.8/kernel/trace/trace_mmiotrace.c 2011-08-23 21:47:56.000000000 -0400
85326 +@@ -24,7 +24,7 @@ struct header_iter {
85327 static struct trace_array *mmio_trace_array;
85328 static bool overrun_detected;
85329 static unsigned long prev_overruns;
85330 @@ -70703,7 +66859,7 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_mmiotrace.c linux-2.6.32.48/kernel
85331
85332 static void mmio_reset_data(struct trace_array *tr)
85333 {
85334 -@@ -126,7 +126,7 @@ static void mmio_close(struct trace_iter
85335 +@@ -127,7 +127,7 @@ static void mmio_close(struct trace_iter
85336
85337 static unsigned long count_overruns(struct trace_iterator *iter)
85338 {
85339 @@ -70712,7 +66868,7 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_mmiotrace.c linux-2.6.32.48/kernel
85340 unsigned long over = ring_buffer_overruns(iter->tr->buffer);
85341
85342 if (over > prev_overruns)
85343 -@@ -316,7 +316,7 @@ static void __trace_mmiotrace_rw(struct
85344 +@@ -317,7 +317,7 @@ static void __trace_mmiotrace_rw(struct
85345 event = trace_buffer_lock_reserve(buffer, TRACE_MMIO_RW,
85346 sizeof(*entry), 0, pc);
85347 if (!event) {
85348 @@ -70721,7 +66877,7 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_mmiotrace.c linux-2.6.32.48/kernel
85349 return;
85350 }
85351 entry = ring_buffer_event_data(event);
85352 -@@ -346,7 +346,7 @@ static void __trace_mmiotrace_map(struct
85353 +@@ -347,7 +347,7 @@ static void __trace_mmiotrace_map(struct
85354 event = trace_buffer_lock_reserve(buffer, TRACE_MMIO_MAP,
85355 sizeof(*entry), 0, pc);
85356 if (!event) {
85357 @@ -70730,11 +66886,11 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_mmiotrace.c linux-2.6.32.48/kernel
85358 return;
85359 }
85360 entry = ring_buffer_event_data(event);
85361 -diff -urNp linux-2.6.32.48/kernel/trace/trace_output.c linux-2.6.32.48/kernel/trace/trace_output.c
85362 ---- linux-2.6.32.48/kernel/trace/trace_output.c 2009-12-02 22:51:21.000000000 -0500
85363 -+++ linux-2.6.32.48/kernel/trace/trace_output.c 2011-11-12 12:46:47.000000000 -0500
85364 -@@ -237,7 +237,7 @@ int trace_seq_path(struct trace_seq *s,
85365 - return 0;
85366 +diff -urNp linux-3.0.8/kernel/trace/trace_output.c linux-3.0.8/kernel/trace/trace_output.c
85367 +--- linux-3.0.8/kernel/trace/trace_output.c 2011-07-21 22:17:23.000000000 -0400
85368 ++++ linux-3.0.8/kernel/trace/trace_output.c 2011-08-23 21:47:56.000000000 -0400
85369 +@@ -278,7 +278,7 @@ int trace_seq_path(struct trace_seq *s,
85370 +
85371 p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
85372 if (!IS_ERR(p)) {
85373 - p = mangle_path(s->buffer + s->len, p, "\n");
85374 @@ -70742,9 +66898,9 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_output.c linux-2.6.32.48/kernel/tr
85375 if (p) {
85376 s->len = p - s->buffer;
85377 return 1;
85378 -diff -urNp linux-2.6.32.48/kernel/trace/trace_stack.c linux-2.6.32.48/kernel/trace/trace_stack.c
85379 ---- linux-2.6.32.48/kernel/trace/trace_stack.c 2009-12-02 22:51:21.000000000 -0500
85380 -+++ linux-2.6.32.48/kernel/trace/trace_stack.c 2011-11-12 12:46:47.000000000 -0500
85381 +diff -urNp linux-3.0.8/kernel/trace/trace_stack.c linux-3.0.8/kernel/trace/trace_stack.c
85382 +--- linux-3.0.8/kernel/trace/trace_stack.c 2011-07-21 22:17:23.000000000 -0400
85383 ++++ linux-3.0.8/kernel/trace/trace_stack.c 2011-08-23 21:47:56.000000000 -0400
85384 @@ -50,7 +50,7 @@ static inline void check_stack(void)
85385 return;
85386
85387 @@ -70754,19 +66910,19 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_stack.c linux-2.6.32.48/kernel/tra
85388 return;
85389
85390 local_irq_save(flags);
85391 -diff -urNp linux-2.6.32.48/kernel/trace/trace_workqueue.c linux-2.6.32.48/kernel/trace/trace_workqueue.c
85392 ---- linux-2.6.32.48/kernel/trace/trace_workqueue.c 2009-12-02 22:51:21.000000000 -0500
85393 -+++ linux-2.6.32.48/kernel/trace/trace_workqueue.c 2011-11-12 12:46:47.000000000 -0500
85394 -@@ -21,7 +21,7 @@ struct cpu_workqueue_stats {
85395 +diff -urNp linux-3.0.8/kernel/trace/trace_workqueue.c linux-3.0.8/kernel/trace/trace_workqueue.c
85396 +--- linux-3.0.8/kernel/trace/trace_workqueue.c 2011-07-21 22:17:23.000000000 -0400
85397 ++++ linux-3.0.8/kernel/trace/trace_workqueue.c 2011-08-23 21:47:56.000000000 -0400
85398 +@@ -22,7 +22,7 @@ struct cpu_workqueue_stats {
85399 int cpu;
85400 pid_t pid;
85401 /* Can be inserted from interrupt or user context, need to be atomic */
85402 - atomic_t inserted;
85403 -+ atomic_unchecked_t inserted;
85404 ++ atomic_unchecked_t inserted;
85405 /*
85406 * Don't need to be atomic, works are serialized in a single workqueue thread
85407 * on a single CPU.
85408 -@@ -58,7 +58,7 @@ probe_workqueue_insertion(struct task_st
85409 +@@ -60,7 +60,7 @@ probe_workqueue_insertion(void *ignore,
85410 spin_lock_irqsave(&workqueue_cpu_stat(cpu)->lock, flags);
85411 list_for_each_entry(node, &workqueue_cpu_stat(cpu)->list, list) {
85412 if (node->pid == wq_thread->pid) {
85413 @@ -70775,7 +66931,7 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_workqueue.c linux-2.6.32.48/kernel
85414 goto found;
85415 }
85416 }
85417 -@@ -205,7 +205,7 @@ static int workqueue_stat_show(struct se
85418 +@@ -210,7 +210,7 @@ static int workqueue_stat_show(struct se
85419 tsk = get_pid_task(pid, PIDTYPE_PID);
85420 if (tsk) {
85421 seq_printf(s, "%3d %6d %6u %s\n", cws->cpu,
85422 @@ -70784,21 +66940,10 @@ diff -urNp linux-2.6.32.48/kernel/trace/trace_workqueue.c linux-2.6.32.48/kernel
85423 tsk->comm);
85424 put_task_struct(tsk);
85425 }
85426 -diff -urNp linux-2.6.32.48/kernel/user.c linux-2.6.32.48/kernel/user.c
85427 ---- linux-2.6.32.48/kernel/user.c 2011-11-12 12:44:30.000000000 -0500
85428 -+++ linux-2.6.32.48/kernel/user.c 2011-11-12 12:46:47.000000000 -0500
85429 -@@ -159,6 +159,7 @@ struct user_struct *alloc_uid(struct use
85430 - spin_lock_irq(&uidhash_lock);
85431 - up = uid_hash_find(uid, hashent);
85432 - if (up) {
85433 -+ put_user_ns(ns);
85434 - key_put(new->uid_keyring);
85435 - key_put(new->session_keyring);
85436 - kmem_cache_free(uid_cachep, new);
85437 -diff -urNp linux-2.6.32.48/lib/bitmap.c linux-2.6.32.48/lib/bitmap.c
85438 ---- linux-2.6.32.48/lib/bitmap.c 2009-12-02 22:51:21.000000000 -0500
85439 -+++ linux-2.6.32.48/lib/bitmap.c 2011-11-12 12:46:47.000000000 -0500
85440 -@@ -341,7 +341,7 @@ int __bitmap_parse(const char *buf, unsi
85441 +diff -urNp linux-3.0.8/lib/bitmap.c linux-3.0.8/lib/bitmap.c
85442 +--- linux-3.0.8/lib/bitmap.c 2011-07-21 22:17:23.000000000 -0400
85443 ++++ linux-3.0.8/lib/bitmap.c 2011-10-06 04:17:55.000000000 -0400
85444 +@@ -421,7 +421,7 @@ int __bitmap_parse(const char *buf, unsi
85445 {
85446 int c, old_c, totaldigits, ndigits, nchunks, nbits;
85447 u32 chunk;
85448 @@ -70807,7 +66952,7 @@ diff -urNp linux-2.6.32.48/lib/bitmap.c linux-2.6.32.48/lib/bitmap.c
85449
85450 bitmap_zero(maskp, nmaskbits);
85451
85452 -@@ -426,7 +426,7 @@ int bitmap_parse_user(const char __user
85453 +@@ -506,7 +506,7 @@ int bitmap_parse_user(const char __user
85454 {
85455 if (!access_ok(VERIFY_READ, ubuf, ulen))
85456 return -EFAULT;
85457 @@ -70816,22 +66961,40 @@ diff -urNp linux-2.6.32.48/lib/bitmap.c linux-2.6.32.48/lib/bitmap.c
85458 }
85459 EXPORT_SYMBOL(bitmap_parse_user);
85460
85461 -diff -urNp linux-2.6.32.48/lib/bug.c linux-2.6.32.48/lib/bug.c
85462 ---- linux-2.6.32.48/lib/bug.c 2009-12-02 22:51:21.000000000 -0500
85463 -+++ linux-2.6.32.48/lib/bug.c 2011-11-12 12:46:47.000000000 -0500
85464 -@@ -135,6 +135,8 @@ enum bug_trap_type report_bug(unsigned l
85465 +@@ -596,7 +596,7 @@ static int __bitmap_parselist(const char
85466 + {
85467 + unsigned a, b;
85468 + int c, old_c, totaldigits;
85469 +- const char __user *ubuf = buf;
85470 ++ const char __user *ubuf = (const char __force_user *)buf;
85471 + int exp_digit, in_range;
85472 +
85473 + totaldigits = c = 0;
85474 +@@ -696,7 +696,7 @@ int bitmap_parselist_user(const char __u
85475 + {
85476 + if (!access_ok(VERIFY_READ, ubuf, ulen))
85477 + return -EFAULT;
85478 +- return __bitmap_parselist((const char *)ubuf,
85479 ++ return __bitmap_parselist((const char __force_kernel *)ubuf,
85480 + ulen, 1, maskp, nmaskbits);
85481 + }
85482 + EXPORT_SYMBOL(bitmap_parselist_user);
85483 +diff -urNp linux-3.0.8/lib/bug.c linux-3.0.8/lib/bug.c
85484 +--- linux-3.0.8/lib/bug.c 2011-07-21 22:17:23.000000000 -0400
85485 ++++ linux-3.0.8/lib/bug.c 2011-08-23 21:47:56.000000000 -0400
85486 +@@ -133,6 +133,8 @@ enum bug_trap_type report_bug(unsigned l
85487 return BUG_TRAP_TYPE_NONE;
85488
85489 bug = find_bug(bugaddr);
85490 + if (!bug)
85491 + return BUG_TRAP_TYPE_NONE;
85492
85493 - printk(KERN_EMERG "------------[ cut here ]------------\n");
85494 -
85495 -diff -urNp linux-2.6.32.48/lib/debugobjects.c linux-2.6.32.48/lib/debugobjects.c
85496 ---- linux-2.6.32.48/lib/debugobjects.c 2011-11-12 12:44:30.000000000 -0500
85497 -+++ linux-2.6.32.48/lib/debugobjects.c 2011-11-12 12:46:47.000000000 -0500
85498 -@@ -277,7 +277,7 @@ static void debug_object_is_on_stack(voi
85499 + file = NULL;
85500 + line = 0;
85501 +diff -urNp linux-3.0.8/lib/debugobjects.c linux-3.0.8/lib/debugobjects.c
85502 +--- linux-3.0.8/lib/debugobjects.c 2011-07-21 22:17:23.000000000 -0400
85503 ++++ linux-3.0.8/lib/debugobjects.c 2011-08-23 21:47:56.000000000 -0400
85504 +@@ -284,7 +284,7 @@ static void debug_object_is_on_stack(voi
85505 if (limit > 4)
85506 return;
85507
85508 @@ -70840,10 +67003,10 @@ diff -urNp linux-2.6.32.48/lib/debugobjects.c linux-2.6.32.48/lib/debugobjects.c
85509 if (is_on_stack == onstack)
85510 return;
85511
85512 -diff -urNp linux-2.6.32.48/lib/devres.c linux-2.6.32.48/lib/devres.c
85513 ---- linux-2.6.32.48/lib/devres.c 2009-12-02 22:51:21.000000000 -0500
85514 -+++ linux-2.6.32.48/lib/devres.c 2011-11-12 12:46:47.000000000 -0500
85515 -@@ -80,7 +80,7 @@ void devm_iounmap(struct device *dev, vo
85516 +diff -urNp linux-3.0.8/lib/devres.c linux-3.0.8/lib/devres.c
85517 +--- linux-3.0.8/lib/devres.c 2011-07-21 22:17:23.000000000 -0400
85518 ++++ linux-3.0.8/lib/devres.c 2011-10-06 04:17:55.000000000 -0400
85519 +@@ -81,7 +81,7 @@ void devm_iounmap(struct device *dev, vo
85520 {
85521 iounmap(addr);
85522 WARN_ON(devres_destroy(dev, devm_ioremap_release, devm_ioremap_match,
85523 @@ -70852,7 +67015,7 @@ diff -urNp linux-2.6.32.48/lib/devres.c linux-2.6.32.48/lib/devres.c
85524 }
85525 EXPORT_SYMBOL(devm_iounmap);
85526
85527 -@@ -140,7 +140,7 @@ void devm_ioport_unmap(struct device *de
85528 +@@ -141,7 +141,7 @@ void devm_ioport_unmap(struct device *de
85529 {
85530 ioport_unmap(addr);
85531 WARN_ON(devres_destroy(dev, devm_ioport_map_release,
85532 @@ -70861,10 +67024,10 @@ diff -urNp linux-2.6.32.48/lib/devres.c linux-2.6.32.48/lib/devres.c
85533 }
85534 EXPORT_SYMBOL(devm_ioport_unmap);
85535
85536 -diff -urNp linux-2.6.32.48/lib/dma-debug.c linux-2.6.32.48/lib/dma-debug.c
85537 ---- linux-2.6.32.48/lib/dma-debug.c 2011-11-12 12:44:30.000000000 -0500
85538 -+++ linux-2.6.32.48/lib/dma-debug.c 2011-11-12 12:46:47.000000000 -0500
85539 -@@ -861,7 +861,7 @@ out:
85540 +diff -urNp linux-3.0.8/lib/dma-debug.c linux-3.0.8/lib/dma-debug.c
85541 +--- linux-3.0.8/lib/dma-debug.c 2011-07-21 22:17:23.000000000 -0400
85542 ++++ linux-3.0.8/lib/dma-debug.c 2011-08-23 21:47:56.000000000 -0400
85543 +@@ -870,7 +870,7 @@ out:
85544
85545 static void check_for_stack(struct device *dev, void *addr)
85546 {
85547 @@ -70873,22 +67036,32 @@ diff -urNp linux-2.6.32.48/lib/dma-debug.c linux-2.6.32.48/lib/dma-debug.c
85548 err_printk(dev, NULL, "DMA-API: device driver maps memory from"
85549 "stack [addr=%p]\n", addr);
85550 }
85551 -diff -urNp linux-2.6.32.48/lib/idr.c linux-2.6.32.48/lib/idr.c
85552 ---- linux-2.6.32.48/lib/idr.c 2011-11-12 12:44:30.000000000 -0500
85553 -+++ linux-2.6.32.48/lib/idr.c 2011-11-12 12:46:47.000000000 -0500
85554 -@@ -156,7 +156,7 @@ static int sub_alloc(struct idr *idp, in
85555 - id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1;
85556 -
85557 - /* if already at the top layer, we need to grow */
85558 -- if (id >= 1 << (idp->layers * IDR_BITS)) {
85559 -+ if (id >= (1 << (idp->layers * IDR_BITS))) {
85560 - *starting_id = id;
85561 - return IDR_NEED_TO_GROW;
85562 - }
85563 -diff -urNp linux-2.6.32.48/lib/inflate.c linux-2.6.32.48/lib/inflate.c
85564 ---- linux-2.6.32.48/lib/inflate.c 2009-12-02 22:51:21.000000000 -0500
85565 -+++ linux-2.6.32.48/lib/inflate.c 2011-11-12 12:46:47.000000000 -0500
85566 -@@ -266,7 +266,7 @@ static void free(void *where)
85567 +diff -urNp linux-3.0.8/lib/extable.c linux-3.0.8/lib/extable.c
85568 +--- linux-3.0.8/lib/extable.c 2011-07-21 22:17:23.000000000 -0400
85569 ++++ linux-3.0.8/lib/extable.c 2011-08-23 21:47:56.000000000 -0400
85570 +@@ -13,6 +13,7 @@
85571 + #include <linux/init.h>
85572 + #include <linux/sort.h>
85573 + #include <asm/uaccess.h>
85574 ++#include <asm/pgtable.h>
85575 +
85576 + #ifndef ARCH_HAS_SORT_EXTABLE
85577 + /*
85578 +@@ -36,8 +37,10 @@ static int cmp_ex(const void *a, const v
85579 + void sort_extable(struct exception_table_entry *start,
85580 + struct exception_table_entry *finish)
85581 + {
85582 ++ pax_open_kernel();
85583 + sort(start, finish - start, sizeof(struct exception_table_entry),
85584 + cmp_ex, NULL);
85585 ++ pax_close_kernel();
85586 + }
85587 +
85588 + #ifdef CONFIG_MODULES
85589 +diff -urNp linux-3.0.8/lib/inflate.c linux-3.0.8/lib/inflate.c
85590 +--- linux-3.0.8/lib/inflate.c 2011-07-21 22:17:23.000000000 -0400
85591 ++++ linux-3.0.8/lib/inflate.c 2011-08-23 21:47:56.000000000 -0400
85592 +@@ -269,7 +269,7 @@ static void free(void *where)
85593 malloc_ptr = free_mem_ptr;
85594 }
85595 #else
85596 @@ -70897,64 +67070,21 @@ diff -urNp linux-2.6.32.48/lib/inflate.c linux-2.6.32.48/lib/inflate.c
85597 #define free(a) kfree(a)
85598 #endif
85599
85600 -diff -urNp linux-2.6.32.48/lib/Kconfig.debug linux-2.6.32.48/lib/Kconfig.debug
85601 ---- linux-2.6.32.48/lib/Kconfig.debug 2009-12-02 22:51:21.000000000 -0500
85602 -+++ linux-2.6.32.48/lib/Kconfig.debug 2011-11-12 12:46:47.000000000 -0500
85603 -@@ -905,7 +905,7 @@ config LATENCYTOP
85604 - select STACKTRACE
85605 - select SCHEDSTATS
85606 - select SCHED_DEBUG
85607 -- depends on HAVE_LATENCYTOP_SUPPORT
85608 -+ depends on HAVE_LATENCYTOP_SUPPORT && !GRKERNSEC_HIDESYM
85609 - help
85610 - Enable this option if you want to use the LatencyTOP tool
85611 - to find out which userspace is blocking on what kernel operations.
85612 -diff -urNp linux-2.6.32.48/lib/kobject.c linux-2.6.32.48/lib/kobject.c
85613 ---- linux-2.6.32.48/lib/kobject.c 2009-12-02 22:51:21.000000000 -0500
85614 -+++ linux-2.6.32.48/lib/kobject.c 2011-11-12 12:46:47.000000000 -0500
85615 -@@ -700,7 +700,7 @@ static ssize_t kobj_attr_store(struct ko
85616 - return ret;
85617 - }
85618 -
85619 --struct sysfs_ops kobj_sysfs_ops = {
85620 -+const struct sysfs_ops kobj_sysfs_ops = {
85621 - .show = kobj_attr_show,
85622 - .store = kobj_attr_store,
85623 - };
85624 -@@ -789,7 +789,7 @@ static struct kobj_type kset_ktype = {
85625 - * If the kset was not able to be created, NULL will be returned.
85626 - */
85627 - static struct kset *kset_create(const char *name,
85628 -- struct kset_uevent_ops *uevent_ops,
85629 -+ const struct kset_uevent_ops *uevent_ops,
85630 - struct kobject *parent_kobj)
85631 - {
85632 - struct kset *kset;
85633 -@@ -832,7 +832,7 @@ static struct kset *kset_create(const ch
85634 - * If the kset was not able to be created, NULL will be returned.
85635 - */
85636 - struct kset *kset_create_and_add(const char *name,
85637 -- struct kset_uevent_ops *uevent_ops,
85638 -+ const struct kset_uevent_ops *uevent_ops,
85639 - struct kobject *parent_kobj)
85640 - {
85641 - struct kset *kset;
85642 -diff -urNp linux-2.6.32.48/lib/kobject_uevent.c linux-2.6.32.48/lib/kobject_uevent.c
85643 ---- linux-2.6.32.48/lib/kobject_uevent.c 2011-11-12 12:44:30.000000000 -0500
85644 -+++ linux-2.6.32.48/lib/kobject_uevent.c 2011-11-12 12:46:47.000000000 -0500
85645 -@@ -95,7 +95,7 @@ int kobject_uevent_env(struct kobject *k
85646 - const char *subsystem;
85647 - struct kobject *top_kobj;
85648 - struct kset *kset;
85649 -- struct kset_uevent_ops *uevent_ops;
85650 -+ const struct kset_uevent_ops *uevent_ops;
85651 - u64 seq;
85652 - int i = 0;
85653 - int retval = 0;
85654 -diff -urNp linux-2.6.32.48/lib/kref.c linux-2.6.32.48/lib/kref.c
85655 ---- linux-2.6.32.48/lib/kref.c 2009-12-02 22:51:21.000000000 -0500
85656 -+++ linux-2.6.32.48/lib/kref.c 2011-11-12 12:46:47.000000000 -0500
85657 -@@ -61,7 +61,7 @@ void kref_get(struct kref *kref)
85658 +diff -urNp linux-3.0.8/lib/Kconfig.debug linux-3.0.8/lib/Kconfig.debug
85659 +--- linux-3.0.8/lib/Kconfig.debug 2011-07-21 22:17:23.000000000 -0400
85660 ++++ linux-3.0.8/lib/Kconfig.debug 2011-08-23 21:48:14.000000000 -0400
85661 +@@ -1088,6 +1088,7 @@ config LATENCYTOP
85662 + depends on DEBUG_KERNEL
85663 + depends on STACKTRACE_SUPPORT
85664 + depends on PROC_FS
85665 ++ depends on !GRKERNSEC_HIDESYM
85666 + select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE
85667 + select KALLSYMS
85668 + select KALLSYMS_ALL
85669 +diff -urNp linux-3.0.8/lib/kref.c linux-3.0.8/lib/kref.c
85670 +--- linux-3.0.8/lib/kref.c 2011-07-21 22:17:23.000000000 -0400
85671 ++++ linux-3.0.8/lib/kref.c 2011-08-23 21:47:56.000000000 -0400
85672 +@@ -52,7 +52,7 @@ void kref_get(struct kref *kref)
85673 */
85674 int kref_put(struct kref *kref, void (*release)(struct kref *kref))
85675 {
85676 @@ -70963,45 +67093,21 @@ diff -urNp linux-2.6.32.48/lib/kref.c linux-2.6.32.48/lib/kref.c
85677 WARN_ON(release == (void (*)(struct kref *))kfree);
85678
85679 if (atomic_dec_and_test(&kref->refcount)) {
85680 -diff -urNp linux-2.6.32.48/lib/parser.c linux-2.6.32.48/lib/parser.c
85681 ---- linux-2.6.32.48/lib/parser.c 2009-12-02 22:51:21.000000000 -0500
85682 -+++ linux-2.6.32.48/lib/parser.c 2011-11-12 12:46:47.000000000 -0500
85683 -@@ -126,7 +126,7 @@ static int match_number(substring_t *s,
85684 - char *buf;
85685 - int ret;
85686 -
85687 -- buf = kmalloc(s->to - s->from + 1, GFP_KERNEL);
85688 -+ buf = kmalloc((s->to - s->from) + 1, GFP_KERNEL);
85689 - if (!buf)
85690 - return -ENOMEM;
85691 - memcpy(buf, s->from, s->to - s->from);
85692 -diff -urNp linux-2.6.32.48/lib/radix-tree.c linux-2.6.32.48/lib/radix-tree.c
85693 ---- linux-2.6.32.48/lib/radix-tree.c 2009-12-02 22:51:21.000000000 -0500
85694 -+++ linux-2.6.32.48/lib/radix-tree.c 2011-11-12 12:46:47.000000000 -0500
85695 -@@ -81,7 +81,7 @@ struct radix_tree_preload {
85696 +diff -urNp linux-3.0.8/lib/radix-tree.c linux-3.0.8/lib/radix-tree.c
85697 +--- linux-3.0.8/lib/radix-tree.c 2011-07-21 22:17:23.000000000 -0400
85698 ++++ linux-3.0.8/lib/radix-tree.c 2011-08-23 21:47:56.000000000 -0400
85699 +@@ -80,7 +80,7 @@ struct radix_tree_preload {
85700 int nr;
85701 struct radix_tree_node *nodes[RADIX_TREE_MAX_PATH];
85702 };
85703 -static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { 0, };
85704 +static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads);
85705
85706 - static inline gfp_t root_gfp_mask(struct radix_tree_root *root)
85707 + static inline void *ptr_to_indirect(void *ptr)
85708 {
85709 -diff -urNp linux-2.6.32.48/lib/random32.c linux-2.6.32.48/lib/random32.c
85710 ---- linux-2.6.32.48/lib/random32.c 2009-12-02 22:51:21.000000000 -0500
85711 -+++ linux-2.6.32.48/lib/random32.c 2011-11-12 12:46:47.000000000 -0500
85712 -@@ -61,7 +61,7 @@ static u32 __random32(struct rnd_state *
85713 - */
85714 - static inline u32 __seed(u32 x, u32 m)
85715 - {
85716 -- return (x < m) ? x + m : x;
85717 -+ return (x <= m) ? x + m + 1 : x;
85718 - }
85719 -
85720 - /**
85721 -diff -urNp linux-2.6.32.48/lib/vsprintf.c linux-2.6.32.48/lib/vsprintf.c
85722 ---- linux-2.6.32.48/lib/vsprintf.c 2009-12-02 22:51:21.000000000 -0500
85723 -+++ linux-2.6.32.48/lib/vsprintf.c 2011-11-12 12:46:47.000000000 -0500
85724 +diff -urNp linux-3.0.8/lib/vsprintf.c linux-3.0.8/lib/vsprintf.c
85725 +--- linux-3.0.8/lib/vsprintf.c 2011-07-21 22:17:23.000000000 -0400
85726 ++++ linux-3.0.8/lib/vsprintf.c 2011-08-23 21:48:14.000000000 -0400
85727 @@ -16,6 +16,9 @@
85728 * - scnprintf and vscnprintf
85729 */
85730 @@ -71012,73 +67118,66 @@ diff -urNp linux-2.6.32.48/lib/vsprintf.c linux-2.6.32.48/lib/vsprintf.c
85731 #include <stdarg.h>
85732 #include <linux/module.h>
85733 #include <linux/types.h>
85734 -@@ -546,12 +549,12 @@ static char *number(char *buf, char *end
85735 - return buf;
85736 - }
85737 -
85738 --static char *string(char *buf, char *end, char *s, struct printf_spec spec)
85739 -+static char *string(char *buf, char *end, const char *s, struct printf_spec spec)
85740 - {
85741 - int len, i;
85742 -
85743 - if ((unsigned long)s < PAGE_SIZE)
85744 -- s = "<NULL>";
85745 -+ s = "(null)";
85746 -
85747 - len = strnlen(s, spec.precision);
85748 -
85749 -@@ -581,7 +584,7 @@ static char *symbol_string(char *buf, ch
85750 - unsigned long value = (unsigned long) ptr;
85751 - #ifdef CONFIG_KALLSYMS
85752 +@@ -435,7 +438,7 @@ char *symbol_string(char *buf, char *end
85753 char sym[KSYM_SYMBOL_LEN];
85754 -- if (ext != 'f' && ext != 's')
85755 -+ if (ext != 'f' && ext != 's' && ext != 'a')
85756 + if (ext == 'B')
85757 + sprint_backtrace(sym, value);
85758 +- else if (ext != 'f' && ext != 's')
85759 ++ else if (ext != 'f' && ext != 's' && ext != 'a')
85760 sprint_symbol(sym, value);
85761 else
85762 kallsyms_lookup(value, NULL, NULL, NULL, sym);
85763 -@@ -801,6 +804,8 @@ static char *ip4_addr_string(char *buf,
85764 - * - 'f' For simple symbolic function names without offset
85765 +@@ -799,7 +802,11 @@ char *uuid_string(char *buf, char *end,
85766 + return string(buf, end, uuid, spec);
85767 + }
85768 +
85769 ++#ifdef CONFIG_GRKERNSEC_HIDESYM
85770 ++int kptr_restrict __read_mostly = 2;
85771 ++#else
85772 + int kptr_restrict __read_mostly;
85773 ++#endif
85774 +
85775 + /*
85776 + * Show a '%p' thing. A kernel extension is that the '%p' is followed
85777 +@@ -813,6 +820,8 @@ int kptr_restrict __read_mostly;
85778 * - 'S' For symbolic direct pointers with offset
85779 * - 's' For symbolic direct pointers without offset
85780 + * - 'B' For backtraced symbolic direct pointers with offset
85781 + * - 'A' For symbolic direct pointers with offset approved for use with GRKERNSEC_HIDESYM
85782 + * - 'a' For symbolic direct pointers without offset approved for use with GRKERNSEC_HIDESYM
85783 - * - 'R' For a struct resource pointer, it prints the range of
85784 - * addresses (not the name nor the flags)
85785 + * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
85786 + * - 'r' For raw struct resource, e.g., [mem 0x0-0x1f flags 0x201]
85787 * - 'M' For a 6-byte MAC address, it prints the address in the
85788 -@@ -822,7 +827,7 @@ static char *pointer(const char *fmt, ch
85789 - struct printf_spec spec)
85790 +@@ -857,12 +866,12 @@ char *pointer(const char *fmt, char *buf
85791 {
85792 - if (!ptr)
85793 + if (!ptr && *fmt != 'K') {
85794 + /*
85795 +- * Print (null) with the same width as a pointer so it makes
85796 ++ * Print (nil) with the same width as a pointer so it makes
85797 + * tabular output look nice.
85798 + */
85799 + if (spec.field_width == -1)
85800 + spec.field_width = 2 * sizeof(void *);
85801 - return string(buf, end, "(null)", spec);
85802 + return string(buf, end, "(nil)", spec);
85803 + }
85804
85805 switch (*fmt) {
85806 - case 'F':
85807 -@@ -831,6 +836,14 @@ static char *pointer(const char *fmt, ch
85808 - case 's':
85809 +@@ -872,6 +881,13 @@ char *pointer(const char *fmt, char *buf
85810 /* Fallthrough */
85811 case 'S':
85812 + case 's':
85813 +#ifdef CONFIG_GRKERNSEC_HIDESYM
85814 + break;
85815 +#else
85816 + return symbol_string(buf, end, ptr, spec, *fmt);
85817 +#endif
85818 -+ case 'a':
85819 -+ /* Fallthrough */
85820 + case 'A':
85821 ++ case 'a':
85822 + case 'B':
85823 return symbol_string(buf, end, ptr, spec, *fmt);
85824 case 'R':
85825 - return resource_string(buf, end, ptr, spec);
85826 -@@ -1445,7 +1458,7 @@ do { \
85827 - size_t len;
85828 - if ((unsigned long)save_str > (unsigned long)-PAGE_SIZE
85829 - || (unsigned long)save_str < PAGE_SIZE)
85830 -- save_str = "<NULL>";
85831 -+ save_str = "(null)";
85832 - len = strlen(save_str);
85833 - if (str + len + 1 < end)
85834 - memcpy(str, save_str, len + 1);
85835 -@@ -1555,11 +1568,11 @@ int bstr_printf(char *buf, size_t size,
85836 +@@ -1631,11 +1647,11 @@ int bstr_printf(char *buf, size_t size,
85837 typeof(type) value; \
85838 if (sizeof(type) == 8) { \
85839 args = PTR_ALIGN(args, sizeof(u32)); \
85840 @@ -71093,24 +67192,24 @@ diff -urNp linux-2.6.32.48/lib/vsprintf.c linux-2.6.32.48/lib/vsprintf.c
85841 } \
85842 args += sizeof(type); \
85843 value; \
85844 -@@ -1622,7 +1635,7 @@ int bstr_printf(char *buf, size_t size,
85845 +@@ -1698,7 +1714,7 @@ int bstr_printf(char *buf, size_t size,
85846 + case FORMAT_TYPE_STR: {
85847 const char *str_arg = args;
85848 - size_t len = strlen(str_arg);
85849 - args += len + 1;
85850 + args += strlen(str_arg) + 1;
85851 - str = string(str, end, (char *)str_arg, spec);
85852 + str = string(str, end, str_arg, spec);
85853 break;
85854 }
85855
85856 -diff -urNp linux-2.6.32.48/localversion-grsec linux-2.6.32.48/localversion-grsec
85857 ---- linux-2.6.32.48/localversion-grsec 1969-12-31 19:00:00.000000000 -0500
85858 -+++ linux-2.6.32.48/localversion-grsec 2011-11-12 12:46:47.000000000 -0500
85859 +diff -urNp linux-3.0.8/localversion-grsec linux-3.0.8/localversion-grsec
85860 +--- linux-3.0.8/localversion-grsec 1969-12-31 19:00:00.000000000 -0500
85861 ++++ linux-3.0.8/localversion-grsec 2011-08-23 21:48:14.000000000 -0400
85862 @@ -0,0 +1 @@
85863 +-grsec
85864 -diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85865 ---- linux-2.6.32.48/Makefile 2011-11-12 12:44:28.000000000 -0500
85866 -+++ linux-2.6.32.48/Makefile 2011-11-12 12:46:47.000000000 -0500
85867 -@@ -221,8 +221,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
85868 +diff -urNp linux-3.0.8/Makefile linux-3.0.8/Makefile
85869 +--- linux-3.0.8/Makefile 2011-10-25 09:10:33.000000000 -0400
85870 ++++ linux-3.0.8/Makefile 2011-11-01 05:25:30.000000000 -0400
85871 +@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
85872
85873 HOSTCC = gcc
85874 HOSTCXX = g++
85875 @@ -71118,24 +67217,11 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85876 -HOSTCXXFLAGS = -O2
85877 +HOSTCFLAGS = -Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
85878 +HOSTCFLAGS += $(call cc-option, -Wno-empty-body)
85879 -+HOSTCXXFLAGS = -O2 -fno-delete-null-pointer-checks
85880 ++HOSTCXXFLAGS = -O2 -Wall -W -fno-delete-null-pointer-checks
85881
85882 # Decide whether to build built-in, modular, or both.
85883 # Normally, just do built-in.
85884 -@@ -342,10 +343,12 @@ LINUXINCLUDE := -Iinclude \
85885 - KBUILD_CPPFLAGS := -D__KERNEL__
85886 -
85887 - KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
85888 -+ -W -Wno-unused-parameter -Wno-missing-field-initializers \
85889 - -fno-strict-aliasing -fno-common \
85890 - -Werror-implicit-function-declaration \
85891 - -Wno-format-security \
85892 - -fno-delete-null-pointer-checks
85893 -+KBUILD_CFLAGS += $(call cc-option, -Wno-empty-body)
85894 - KBUILD_AFLAGS := -D__ASSEMBLY__
85895 -
85896 - # Read KERNELRELEASE from include/config/kernel.release (if it exists)
85897 -@@ -376,8 +379,8 @@ export RCS_TAR_IGNORE := --exclude SCCS
85898 +@@ -407,8 +408,8 @@ export RCS_TAR_IGNORE := --exclude SCCS
85899 # Rules shared between *config targets and build targets
85900
85901 # Basic helpers built in scripts/
85902 @@ -71144,23 +67230,16 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85903 +PHONY += scripts_basic gcc-plugins
85904 +scripts_basic: gcc-plugins
85905 $(Q)$(MAKE) $(build)=scripts/basic
85906 + $(Q)rm -f .tmp_quiet_recordmcount
85907
85908 - # To avoid any implicit rule to kick in, define an empty command.
85909 -@@ -403,7 +406,7 @@ endif
85910 - # of make so .config is not included in this case either (for *config).
85911 -
85912 - no-dot-config-targets := clean mrproper distclean \
85913 -- cscope TAGS tags help %docs check% \
85914 -+ cscope gtags TAGS tags help %docs check% \
85915 - include/linux/version.h headers_% \
85916 - kernelrelease kernelversion
85917 -
85918 -@@ -526,6 +529,36 @@ else
85919 +@@ -564,6 +565,38 @@ else
85920 KBUILD_CFLAGS += -O2
85921 endif
85922
85923 +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(HOSTCC)" "$(CC)"), y)
85924 ++ifdef CONFIG_PAX_CONSTIFY_PLUGIN
85925 +CONSTIFY_PLUGIN := -fplugin=$(objtree)/tools/gcc/constify_plugin.so -DCONSTIFY_PLUGIN
85926 ++endif
85927 +ifdef CONFIG_PAX_MEMORY_STACKLEAK
85928 +STACKLEAK_PLUGIN := -fplugin=$(objtree)/tools/gcc/stackleak_plugin.so -fplugin-arg-stackleak_plugin-track-lowest-sp=100
85929 +endif
85930 @@ -71192,7 +67271,7 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85931 include $(srctree)/arch/$(SRCARCH)/Makefile
85932
85933 ifneq ($(CONFIG_FRAME_WARN),0)
85934 -@@ -644,7 +677,7 @@ export mod_strip_cmd
85935 +@@ -708,7 +741,7 @@ export mod_strip_cmd
85936
85937
85938 ifeq ($(KBUILD_EXTMOD),)
85939 @@ -71201,7 +67280,7 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85940
85941 vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
85942 $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
85943 -@@ -865,6 +898,7 @@ vmlinux.o: $(modpost-init) $(vmlinux-mai
85944 +@@ -932,6 +965,7 @@ vmlinux.o: $(modpost-init) $(vmlinux-mai
85945
85946 # The actual objects are generated when descending,
85947 # make sure no implicit rule kicks in
85948 @@ -71209,7 +67288,7 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85949 $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
85950
85951 # Handle descending into subdirectories listed in $(vmlinux-dirs)
85952 -@@ -874,7 +908,7 @@ $(sort $(vmlinux-init) $(vmlinux-main))
85953 +@@ -941,7 +975,7 @@ $(sort $(vmlinux-init) $(vmlinux-main))
85954 # Error messages still appears in the original language
85955
85956 PHONY += $(vmlinux-dirs)
85957 @@ -71217,24 +67296,24 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85958 +$(vmlinux-dirs): gcc-plugins prepare scripts
85959 $(Q)$(MAKE) $(build)=$@
85960
85961 - # Build the kernel release string
85962 -@@ -983,6 +1017,7 @@ prepare0: archprepare FORCE
85963 + # Store (new) KERNELRELASE string in include/config/kernel.release
85964 +@@ -986,6 +1020,7 @@ prepare0: archprepare FORCE
85965 $(Q)$(MAKE) $(build)=. missing-syscalls
85966
85967 # All the preparing..
85968 +prepare: KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS),$(KBUILD_CFLAGS))
85969 prepare: prepare0
85970
85971 - # The asm symlink changes when $(ARCH) changes.
85972 -@@ -1124,6 +1159,7 @@ all: modules
85973 + # Generate some files
85974 +@@ -1087,6 +1122,7 @@ all: modules
85975 # using awk while concatenating to the final file.
85976
85977 PHONY += modules
85978 +modules: KBUILD_CFLAGS += $(GCC_PLUGINS)
85979 - modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
85980 + modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
85981 $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
85982 @$(kecho) ' Building modules, stage 2.';
85983 -@@ -1133,7 +1169,7 @@ modules: $(vmlinux-dirs) $(if $(KBUILD_B
85984 +@@ -1102,7 +1138,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modu
85985
85986 # Target to prepare building external modules
85987 PHONY += modules_prepare
85988 @@ -71243,16 +67322,7 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
85989
85990 # Target to install modules
85991 PHONY += modules_install
85992 -@@ -1198,7 +1234,7 @@ MRPROPER_FILES += .config .config.old in
85993 - include/linux/autoconf.h include/linux/version.h \
85994 - include/linux/utsrelease.h \
85995 - include/linux/bounds.h include/asm*/asm-offsets.h \
85996 -- Module.symvers Module.markers tags TAGS cscope*
85997 -+ Module.symvers Module.markers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
85998 -
85999 - # clean - Delete most, but leave enough to build external modules
86000 - #
86001 -@@ -1242,7 +1278,7 @@ distclean: mrproper
86002 +@@ -1198,7 +1234,7 @@ distclean: mrproper
86003 @find $(srctree) $(RCS_FIND_IGNORE) \
86004 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
86005 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
86006 @@ -71261,15 +67331,7 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
86007 -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
86008 -type f -print | xargs rm -f
86009
86010 -@@ -1289,6 +1325,7 @@ help:
86011 - @echo ' modules_prepare - Set up for building external modules'
86012 - @echo ' tags/TAGS - Generate tags file for editors'
86013 - @echo ' cscope - Generate cscope index'
86014 -+ @echo ' gtags - Generate GNU GLOBAL index'
86015 - @echo ' kernelrelease - Output the release version string'
86016 - @echo ' kernelversion - Output the version stored in Makefile'
86017 - @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
86018 -@@ -1390,6 +1427,7 @@ PHONY += $(module-dirs) modules
86019 +@@ -1359,6 +1395,7 @@ PHONY += $(module-dirs) modules
86020 $(module-dirs): crmodverdir $(objtree)/Module.symvers
86021 $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
86022
86023 @@ -71277,16 +67339,7 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
86024 modules: $(module-dirs)
86025 @$(kecho) ' Building modules, stage 2.';
86026 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
86027 -@@ -1445,7 +1483,7 @@ endif # KBUILD_EXTMOD
86028 - quiet_cmd_tags = GEN $@
86029 - cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@
86030 -
86031 --tags TAGS cscope: FORCE
86032 -+tags TAGS cscope gtags: FORCE
86033 - $(call cmd,tags)
86034 -
86035 - # Scripts to check various things for consistency
86036 -@@ -1510,17 +1548,19 @@ else
86037 +@@ -1485,17 +1522,19 @@ else
86038 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
86039 endif
86040
86041 @@ -71310,7 +67363,7 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
86042 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
86043 %.symtypes: %.c prepare scripts FORCE
86044 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
86045 -@@ -1530,11 +1570,13 @@ endif
86046 +@@ -1505,11 +1544,13 @@ endif
86047 $(cmd_crmodverdir)
86048 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
86049 $(build)=$(build-dir)
86050 @@ -71326,31 +67379,10 @@ diff -urNp linux-2.6.32.48/Makefile linux-2.6.32.48/Makefile
86051 $(cmd_crmodverdir)
86052 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
86053 $(build)=$(build-dir) $(@:.ko=.o)
86054 -diff -urNp linux-2.6.32.48/mm/backing-dev.c linux-2.6.32.48/mm/backing-dev.c
86055 ---- linux-2.6.32.48/mm/backing-dev.c 2009-12-02 22:51:21.000000000 -0500
86056 -+++ linux-2.6.32.48/mm/backing-dev.c 2011-11-12 12:46:47.000000000 -0500
86057 -@@ -272,7 +272,7 @@ static void bdi_task_init(struct backing
86058 - list_add_tail_rcu(&wb->list, &bdi->wb_list);
86059 - spin_unlock(&bdi->wb_lock);
86060 -
86061 -- tsk->flags |= PF_FLUSHER | PF_SWAPWRITE;
86062 -+ tsk->flags |= PF_SWAPWRITE;
86063 - set_freezable();
86064 -
86065 - /*
86066 -@@ -484,7 +484,7 @@ static void bdi_add_to_pending(struct rc
86067 - * Add the default flusher task that gets created for any bdi
86068 - * that has dirty data pending writeout
86069 - */
86070 --void static bdi_add_default_flusher_task(struct backing_dev_info *bdi)
86071 -+static void bdi_add_default_flusher_task(struct backing_dev_info *bdi)
86072 - {
86073 - if (!bdi_cap_writeback_dirty(bdi))
86074 - return;
86075 -diff -urNp linux-2.6.32.48/mm/filemap.c linux-2.6.32.48/mm/filemap.c
86076 ---- linux-2.6.32.48/mm/filemap.c 2011-11-12 12:44:30.000000000 -0500
86077 -+++ linux-2.6.32.48/mm/filemap.c 2011-11-12 12:46:47.000000000 -0500
86078 -@@ -1631,7 +1631,7 @@ int generic_file_mmap(struct file * file
86079 +diff -urNp linux-3.0.8/mm/filemap.c linux-3.0.8/mm/filemap.c
86080 +--- linux-3.0.8/mm/filemap.c 2011-07-21 22:17:23.000000000 -0400
86081 ++++ linux-3.0.8/mm/filemap.c 2011-08-23 21:48:14.000000000 -0400
86082 +@@ -1763,7 +1763,7 @@ int generic_file_mmap(struct file * file
86083 struct address_space *mapping = file->f_mapping;
86084
86085 if (!mapping->a_ops->readpage)
86086 @@ -71359,7 +67391,7 @@ diff -urNp linux-2.6.32.48/mm/filemap.c linux-2.6.32.48/mm/filemap.c
86087 file_accessed(file);
86088 vma->vm_ops = &generic_file_vm_ops;
86089 vma->vm_flags |= VM_CAN_NONLINEAR;
86090 -@@ -2027,6 +2027,7 @@ inline int generic_write_checks(struct f
86091 +@@ -2169,6 +2169,7 @@ inline int generic_write_checks(struct f
86092 *pos = i_size_read(inode);
86093
86094 if (limit != RLIM_INFINITY) {
86095 @@ -71367,10 +67399,10 @@ diff -urNp linux-2.6.32.48/mm/filemap.c linux-2.6.32.48/mm/filemap.c
86096 if (*pos >= limit) {
86097 send_sig(SIGXFSZ, current, 0);
86098 return -EFBIG;
86099 -diff -urNp linux-2.6.32.48/mm/fremap.c linux-2.6.32.48/mm/fremap.c
86100 ---- linux-2.6.32.48/mm/fremap.c 2009-12-02 22:51:21.000000000 -0500
86101 -+++ linux-2.6.32.48/mm/fremap.c 2011-11-12 12:46:47.000000000 -0500
86102 -@@ -153,6 +153,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
86103 +diff -urNp linux-3.0.8/mm/fremap.c linux-3.0.8/mm/fremap.c
86104 +--- linux-3.0.8/mm/fremap.c 2011-07-21 22:17:23.000000000 -0400
86105 ++++ linux-3.0.8/mm/fremap.c 2011-08-23 21:47:56.000000000 -0400
86106 +@@ -156,6 +156,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
86107 retry:
86108 vma = find_vma(mm, start);
86109
86110 @@ -71382,19 +67414,10 @@ diff -urNp linux-2.6.32.48/mm/fremap.c linux-2.6.32.48/mm/fremap.c
86111 /*
86112 * Make sure the vma is shared, that it supports prefaulting,
86113 * and that the remapped range is valid and fully within
86114 -@@ -221,7 +226,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
86115 - /*
86116 - * drop PG_Mlocked flag for over-mapped range
86117 - */
86118 -- unsigned int saved_flags = vma->vm_flags;
86119 -+ unsigned long saved_flags = vma->vm_flags;
86120 - munlock_vma_pages_range(vma, start, start + size);
86121 - vma->vm_flags = saved_flags;
86122 - }
86123 -diff -urNp linux-2.6.32.48/mm/highmem.c linux-2.6.32.48/mm/highmem.c
86124 ---- linux-2.6.32.48/mm/highmem.c 2009-12-02 22:51:21.000000000 -0500
86125 -+++ linux-2.6.32.48/mm/highmem.c 2011-11-12 12:46:47.000000000 -0500
86126 -@@ -116,9 +116,10 @@ static void flush_all_zero_pkmaps(void)
86127 +diff -urNp linux-3.0.8/mm/highmem.c linux-3.0.8/mm/highmem.c
86128 +--- linux-3.0.8/mm/highmem.c 2011-07-21 22:17:23.000000000 -0400
86129 ++++ linux-3.0.8/mm/highmem.c 2011-08-23 21:47:56.000000000 -0400
86130 +@@ -125,9 +125,10 @@ static void flush_all_zero_pkmaps(void)
86131 * So no dangers, even with speculative execution.
86132 */
86133 page = pte_page(pkmap_page_table[i]);
86134 @@ -71406,7 +67429,7 @@ diff -urNp linux-2.6.32.48/mm/highmem.c linux-2.6.32.48/mm/highmem.c
86135 set_page_address(page, NULL);
86136 need_flush = 1;
86137 }
86138 -@@ -177,9 +178,11 @@ start:
86139 +@@ -186,9 +187,11 @@ start:
86140 }
86141 }
86142 vaddr = PKMAP_ADDR(last_pkmap_nr);
86143 @@ -71419,10 +67442,22 @@ diff -urNp linux-2.6.32.48/mm/highmem.c linux-2.6.32.48/mm/highmem.c
86144 pkmap_count[last_pkmap_nr] = 1;
86145 set_page_address(page, (void *)vaddr);
86146
86147 -diff -urNp linux-2.6.32.48/mm/hugetlb.c linux-2.6.32.48/mm/hugetlb.c
86148 ---- linux-2.6.32.48/mm/hugetlb.c 2011-11-12 12:44:30.000000000 -0500
86149 -+++ linux-2.6.32.48/mm/hugetlb.c 2011-11-12 12:46:47.000000000 -0500
86150 -@@ -1933,6 +1933,26 @@ static int unmap_ref_private(struct mm_s
86151 +diff -urNp linux-3.0.8/mm/huge_memory.c linux-3.0.8/mm/huge_memory.c
86152 +--- linux-3.0.8/mm/huge_memory.c 2011-07-21 22:17:23.000000000 -0400
86153 ++++ linux-3.0.8/mm/huge_memory.c 2011-08-23 21:47:56.000000000 -0400
86154 +@@ -702,7 +702,7 @@ out:
86155 + * run pte_offset_map on the pmd, if an huge pmd could
86156 + * materialize from under us from a different thread.
86157 + */
86158 +- if (unlikely(__pte_alloc(mm, vma, pmd, address)))
86159 ++ if (unlikely(pmd_none(*pmd) && __pte_alloc(mm, vma, pmd, address)))
86160 + return VM_FAULT_OOM;
86161 + /* if an huge pmd materialized from under us just retry later */
86162 + if (unlikely(pmd_trans_huge(*pmd)))
86163 +diff -urNp linux-3.0.8/mm/hugetlb.c linux-3.0.8/mm/hugetlb.c
86164 +--- linux-3.0.8/mm/hugetlb.c 2011-07-21 22:17:23.000000000 -0400
86165 ++++ linux-3.0.8/mm/hugetlb.c 2011-08-23 21:47:56.000000000 -0400
86166 +@@ -2339,6 +2339,27 @@ static int unmap_ref_private(struct mm_s
86167 return 1;
86168 }
86169
86170 @@ -71442,17 +67477,18 @@ diff -urNp linux-2.6.32.48/mm/hugetlb.c linux-2.6.32.48/mm/hugetlb.c
86171 + address_m = address + SEGMEXEC_TASK_SIZE;
86172 + ptep_m = huge_pte_offset(mm, address_m & HPAGE_MASK);
86173 + get_page(page_m);
86174 ++ hugepage_add_anon_rmap(page_m, vma_m, address_m);
86175 + set_huge_pte_at(mm, address_m, ptep_m, make_huge_pte(vma_m, page_m, 0));
86176 +}
86177 +#endif
86178 +
86179 - static int hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma,
86180 - unsigned long address, pte_t *ptep, pte_t pte,
86181 - struct page *pagecache_page)
86182 -@@ -2004,6 +2024,11 @@ retry_avoidcopy:
86183 - huge_ptep_clear_flush(vma, address, ptep);
86184 - set_huge_pte_at(mm, address, ptep,
86185 + /*
86186 + * Hugetlb_cow() should be called with page lock of the original hugepage held.
86187 + */
86188 +@@ -2440,6 +2461,11 @@ retry_avoidcopy:
86189 make_huge_pte(vma, new_page, 1));
86190 + page_remove_rmap(old_page);
86191 + hugepage_add_new_anon_rmap(new_page, vma, address);
86192 +
86193 +#ifdef CONFIG_PAX_SEGMEXEC
86194 + pax_mirror_huge_pte(vma, address, new_page);
86195 @@ -71460,8 +67496,8 @@ diff -urNp linux-2.6.32.48/mm/hugetlb.c linux-2.6.32.48/mm/hugetlb.c
86196 +
86197 /* Make the old page be freed below */
86198 new_page = old_page;
86199 - }
86200 -@@ -2135,6 +2160,10 @@ retry:
86201 + mmu_notifier_invalidate_range_end(mm,
86202 +@@ -2591,6 +2617,10 @@ retry:
86203 && (vma->vm_flags & VM_SHARED)));
86204 set_huge_pte_at(mm, address, ptep, new_pte);
86205
86206 @@ -71472,13 +67508,22 @@ diff -urNp linux-2.6.32.48/mm/hugetlb.c linux-2.6.32.48/mm/hugetlb.c
86207 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
86208 /* Optimization, do the COW without a second fault */
86209 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page);
86210 -@@ -2163,6 +2192,28 @@ int hugetlb_fault(struct mm_struct *mm,
86211 +@@ -2620,6 +2650,10 @@ int hugetlb_fault(struct mm_struct *mm,
86212 static DEFINE_MUTEX(hugetlb_instantiation_mutex);
86213 struct hstate *h = hstate_vma(vma);
86214
86215 +#ifdef CONFIG_PAX_SEGMEXEC
86216 + struct vm_area_struct *vma_m;
86217 ++#endif
86218 +
86219 + ptep = huge_pte_offset(mm, address);
86220 + if (ptep) {
86221 + entry = huge_ptep_get(ptep);
86222 +@@ -2631,6 +2665,26 @@ int hugetlb_fault(struct mm_struct *mm,
86223 + VM_FAULT_SET_HINDEX(h - hstates);
86224 + }
86225 +
86226 ++#ifdef CONFIG_PAX_SEGMEXEC
86227 + vma_m = pax_find_mirror_vma(vma);
86228 + if (vma_m) {
86229 + unsigned long address_m;
86230 @@ -71501,21 +67546,21 @@ diff -urNp linux-2.6.32.48/mm/hugetlb.c linux-2.6.32.48/mm/hugetlb.c
86231 ptep = huge_pte_alloc(mm, address, huge_page_size(h));
86232 if (!ptep)
86233 return VM_FAULT_OOM;
86234 -diff -urNp linux-2.6.32.48/mm/internal.h linux-2.6.32.48/mm/internal.h
86235 ---- linux-2.6.32.48/mm/internal.h 2011-11-12 12:44:30.000000000 -0500
86236 -+++ linux-2.6.32.48/mm/internal.h 2011-11-12 12:46:47.000000000 -0500
86237 +diff -urNp linux-3.0.8/mm/internal.h linux-3.0.8/mm/internal.h
86238 +--- linux-3.0.8/mm/internal.h 2011-07-21 22:17:23.000000000 -0400
86239 ++++ linux-3.0.8/mm/internal.h 2011-08-23 21:47:56.000000000 -0400
86240 @@ -49,6 +49,7 @@ extern void putback_lru_page(struct page
86241 * in mm/page_alloc.c
86242 */
86243 extern void __free_pages_bootmem(struct page *page, unsigned int order);
86244 +extern void free_compound_page(struct page *page);
86245 extern void prep_compound_page(struct page *page, unsigned long order);
86246 -
86247 -
86248 -diff -urNp linux-2.6.32.48/mm/Kconfig linux-2.6.32.48/mm/Kconfig
86249 ---- linux-2.6.32.48/mm/Kconfig 2011-11-12 12:44:30.000000000 -0500
86250 -+++ linux-2.6.32.48/mm/Kconfig 2011-11-12 12:46:47.000000000 -0500
86251 -@@ -228,7 +228,7 @@ config KSM
86252 + #ifdef CONFIG_MEMORY_FAILURE
86253 + extern bool is_free_buddy_page(struct page *page);
86254 +diff -urNp linux-3.0.8/mm/Kconfig linux-3.0.8/mm/Kconfig
86255 +--- linux-3.0.8/mm/Kconfig 2011-07-21 22:17:23.000000000 -0400
86256 ++++ linux-3.0.8/mm/Kconfig 2011-08-23 21:48:14.000000000 -0400
86257 +@@ -240,7 +240,7 @@ config KSM
86258 config DEFAULT_MMAP_MIN_ADDR
86259 int "Low address space to protect from user allocation"
86260 depends on MMU
86261 @@ -71524,10 +67569,10 @@ diff -urNp linux-2.6.32.48/mm/Kconfig linux-2.6.32.48/mm/Kconfig
86262 help
86263 This is the portion of low virtual memory which should be protected
86264 from userspace allocation. Keeping a user from writing to low pages
86265 -diff -urNp linux-2.6.32.48/mm/kmemleak.c linux-2.6.32.48/mm/kmemleak.c
86266 ---- linux-2.6.32.48/mm/kmemleak.c 2011-11-12 12:44:30.000000000 -0500
86267 -+++ linux-2.6.32.48/mm/kmemleak.c 2011-11-12 12:46:47.000000000 -0500
86268 -@@ -358,7 +358,7 @@ static void print_unreferenced(struct se
86269 +diff -urNp linux-3.0.8/mm/kmemleak.c linux-3.0.8/mm/kmemleak.c
86270 +--- linux-3.0.8/mm/kmemleak.c 2011-07-21 22:17:23.000000000 -0400
86271 ++++ linux-3.0.8/mm/kmemleak.c 2011-08-23 21:48:14.000000000 -0400
86272 +@@ -357,7 +357,7 @@ static void print_unreferenced(struct se
86273
86274 for (i = 0; i < object->trace_len; i++) {
86275 void *ptr = (void *)object->trace[i];
86276 @@ -71536,19 +67581,10 @@ diff -urNp linux-2.6.32.48/mm/kmemleak.c linux-2.6.32.48/mm/kmemleak.c
86277 }
86278 }
86279
86280 -diff -urNp linux-2.6.32.48/mm/maccess.c linux-2.6.32.48/mm/maccess.c
86281 ---- linux-2.6.32.48/mm/maccess.c 2009-12-02 22:51:21.000000000 -0500
86282 -+++ linux-2.6.32.48/mm/maccess.c 2011-11-12 12:46:47.000000000 -0500
86283 -@@ -14,7 +14,7 @@
86284 - * Safely read from address @src to the buffer at @dst. If a kernel fault
86285 - * happens, handle that and return -EFAULT.
86286 - */
86287 --long probe_kernel_read(void *dst, void *src, size_t size)
86288 -+long probe_kernel_read(void *dst, const void *src, size_t size)
86289 - {
86290 - long ret;
86291 - mm_segment_t old_fs = get_fs();
86292 -@@ -22,7 +22,7 @@ long probe_kernel_read(void *dst, void *
86293 +diff -urNp linux-3.0.8/mm/maccess.c linux-3.0.8/mm/maccess.c
86294 +--- linux-3.0.8/mm/maccess.c 2011-07-21 22:17:23.000000000 -0400
86295 ++++ linux-3.0.8/mm/maccess.c 2011-10-06 04:17:55.000000000 -0400
86296 +@@ -26,7 +26,7 @@ long __probe_kernel_read(void *dst, cons
86297 set_fs(KERNEL_DS);
86298 pagefault_disable();
86299 ret = __copy_from_user_inatomic(dst,
86300 @@ -71557,15 +67593,7 @@ diff -urNp linux-2.6.32.48/mm/maccess.c linux-2.6.32.48/mm/maccess.c
86301 pagefault_enable();
86302 set_fs(old_fs);
86303
86304 -@@ -39,14 +39,14 @@ EXPORT_SYMBOL_GPL(probe_kernel_read);
86305 - * Safely write to address @dst from the buffer at @src. If a kernel fault
86306 - * happens, handle that and return -EFAULT.
86307 - */
86308 --long notrace __weak probe_kernel_write(void *dst, void *src, size_t size)
86309 -+long notrace __weak probe_kernel_write(void *dst, const void *src, size_t size)
86310 - {
86311 - long ret;
86312 - mm_segment_t old_fs = get_fs();
86313 +@@ -53,7 +53,7 @@ long __probe_kernel_write(void *dst, con
86314
86315 set_fs(KERNEL_DS);
86316 pagefault_disable();
86317 @@ -71574,10 +67602,10 @@ diff -urNp linux-2.6.32.48/mm/maccess.c linux-2.6.32.48/mm/maccess.c
86318 pagefault_enable();
86319 set_fs(old_fs);
86320
86321 -diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
86322 ---- linux-2.6.32.48/mm/madvise.c 2009-12-02 22:51:21.000000000 -0500
86323 -+++ linux-2.6.32.48/mm/madvise.c 2011-11-12 12:46:47.000000000 -0500
86324 -@@ -44,6 +44,10 @@ static long madvise_behavior(struct vm_a
86325 +diff -urNp linux-3.0.8/mm/madvise.c linux-3.0.8/mm/madvise.c
86326 +--- linux-3.0.8/mm/madvise.c 2011-07-21 22:17:23.000000000 -0400
86327 ++++ linux-3.0.8/mm/madvise.c 2011-08-23 21:47:56.000000000 -0400
86328 +@@ -45,6 +45,10 @@ static long madvise_behavior(struct vm_a
86329 pgoff_t pgoff;
86330 unsigned long new_flags = vma->vm_flags;
86331
86332 @@ -71588,7 +67616,7 @@ diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
86333 switch (behavior) {
86334 case MADV_NORMAL:
86335 new_flags = new_flags & ~VM_RAND_READ & ~VM_SEQ_READ;
86336 -@@ -103,6 +107,13 @@ success:
86337 +@@ -110,6 +114,13 @@ success:
86338 /*
86339 * vm_flags is protected by the mmap_sem held in write mode.
86340 */
86341 @@ -71602,7 +67630,7 @@ diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
86342 vma->vm_flags = new_flags;
86343
86344 out:
86345 -@@ -161,6 +172,11 @@ static long madvise_dontneed(struct vm_a
86346 +@@ -168,6 +179,11 @@ static long madvise_dontneed(struct vm_a
86347 struct vm_area_struct ** prev,
86348 unsigned long start, unsigned long end)
86349 {
86350 @@ -71614,7 +67642,7 @@ diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
86351 *prev = vma;
86352 if (vma->vm_flags & (VM_LOCKED|VM_HUGETLB|VM_PFNMAP))
86353 return -EINVAL;
86354 -@@ -173,6 +189,21 @@ static long madvise_dontneed(struct vm_a
86355 +@@ -180,6 +196,21 @@ static long madvise_dontneed(struct vm_a
86356 zap_page_range(vma, start, end - start, &details);
86357 } else
86358 zap_page_range(vma, start, end - start, NULL);
86359 @@ -71636,7 +67664,7 @@ diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
86360 return 0;
86361 }
86362
86363 -@@ -359,6 +390,16 @@ SYSCALL_DEFINE3(madvise, unsigned long,
86364 +@@ -376,6 +407,16 @@ SYSCALL_DEFINE3(madvise, unsigned long,
86365 if (end < start)
86366 goto out;
86367
86368 @@ -71653,10 +67681,10 @@ diff -urNp linux-2.6.32.48/mm/madvise.c linux-2.6.32.48/mm/madvise.c
86369 error = 0;
86370 if (end == start)
86371 goto out;
86372 -diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86373 ---- linux-2.6.32.48/mm/memory.c 2011-11-12 12:44:30.000000000 -0500
86374 -+++ linux-2.6.32.48/mm/memory.c 2011-11-12 12:46:47.000000000 -0500
86375 -@@ -187,8 +187,12 @@ static inline void free_pmd_range(struct
86376 +diff -urNp linux-3.0.8/mm/memory.c linux-3.0.8/mm/memory.c
86377 +--- linux-3.0.8/mm/memory.c 2011-10-24 08:05:21.000000000 -0400
86378 ++++ linux-3.0.8/mm/memory.c 2011-08-23 21:47:56.000000000 -0400
86379 +@@ -457,8 +457,12 @@ static inline void free_pmd_range(struct
86380 return;
86381
86382 pmd = pmd_offset(pud, start);
86383 @@ -71669,7 +67697,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86384 }
86385
86386 static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
86387 -@@ -219,9 +223,12 @@ static inline void free_pud_range(struct
86388 +@@ -489,9 +493,12 @@ static inline void free_pud_range(struct
86389 if (end - 1 > ceiling - 1)
86390 return;
86391
86392 @@ -71682,7 +67710,20 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86393 }
86394
86395 /*
86396 -@@ -1251,10 +1258,10 @@ int __get_user_pages(struct task_struct
86397 +@@ -1577,12 +1584,6 @@ no_page_table:
86398 + return page;
86399 + }
86400 +
86401 +-static inline int stack_guard_page(struct vm_area_struct *vma, unsigned long addr)
86402 +-{
86403 +- return stack_guard_page_start(vma, addr) ||
86404 +- stack_guard_page_end(vma, addr+PAGE_SIZE);
86405 +-}
86406 +-
86407 + /**
86408 + * __get_user_pages() - pin user pages in memory
86409 + * @tsk: task_struct of target task
86410 +@@ -1655,10 +1656,10 @@ int __get_user_pages(struct task_struct
86411 (VM_MAYREAD | VM_MAYWRITE) : (VM_READ | VM_WRITE);
86412 i = 0;
86413
86414 @@ -71692,11 +67733,11 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86415
86416 - vma = find_extend_vma(mm, start);
86417 + vma = find_vma(mm, start);
86418 - if (!vma && in_gate_area(tsk, start)) {
86419 + if (!vma && in_gate_area(mm, start)) {
86420 unsigned long pg = start & PAGE_MASK;
86421 - struct vm_area_struct *gate_vma = get_gate_vma(tsk);
86422 -@@ -1306,7 +1313,7 @@ int __get_user_pages(struct task_struct
86423 - continue;
86424 + pgd_t *pgd;
86425 +@@ -1706,7 +1707,7 @@ int __get_user_pages(struct task_struct
86426 + goto next_page;
86427 }
86428
86429 - if (!vma ||
86430 @@ -71704,7 +67745,19 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86431 (vma->vm_flags & (VM_IO | VM_PFNMAP)) ||
86432 !(vm_flags & vma->vm_flags))
86433 return i ? : -EFAULT;
86434 -@@ -1381,7 +1388,7 @@ int __get_user_pages(struct task_struct
86435 +@@ -1733,11 +1734,6 @@ int __get_user_pages(struct task_struct
86436 + int ret;
86437 + unsigned int fault_flags = 0;
86438 +
86439 +- /* For mlock, just skip the stack guard page. */
86440 +- if (foll_flags & FOLL_MLOCK) {
86441 +- if (stack_guard_page(vma, start))
86442 +- goto next_page;
86443 +- }
86444 + if (foll_flags & FOLL_WRITE)
86445 + fault_flags |= FAULT_FLAG_WRITE;
86446 + if (nonblocking)
86447 +@@ -1811,7 +1807,7 @@ next_page:
86448 start += PAGE_SIZE;
86449 nr_pages--;
86450 } while (nr_pages && start < vma->vm_end);
86451 @@ -71712,8 +67765,8 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86452 + }
86453 return i;
86454 }
86455 -
86456 -@@ -1526,6 +1533,10 @@ static int insert_page(struct vm_area_st
86457 + EXPORT_SYMBOL(__get_user_pages);
86458 +@@ -2018,6 +2014,10 @@ static int insert_page(struct vm_area_st
86459 page_add_file_rmap(page);
86460 set_pte_at(mm, addr, pte, mk_pte(page, prot));
86461
86462 @@ -71724,7 +67777,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86463 retval = 0;
86464 pte_unmap_unlock(pte, ptl);
86465 return retval;
86466 -@@ -1560,10 +1571,22 @@ out:
86467 +@@ -2052,10 +2052,22 @@ out:
86468 int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
86469 struct page *page)
86470 {
86471 @@ -71747,7 +67800,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86472 vma->vm_flags |= VM_INSERTPAGE;
86473 return insert_page(vma, addr, page, vma->vm_page_prot);
86474 }
86475 -@@ -1649,6 +1672,7 @@ int vm_insert_mixed(struct vm_area_struc
86476 +@@ -2141,6 +2153,7 @@ int vm_insert_mixed(struct vm_area_struc
86477 unsigned long pfn)
86478 {
86479 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP));
86480 @@ -71755,7 +67808,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86481
86482 if (addr < vma->vm_start || addr >= vma->vm_end)
86483 return -EFAULT;
86484 -@@ -1977,6 +2001,186 @@ static inline void cow_user_page(struct
86485 +@@ -2456,6 +2469,186 @@ static inline void cow_user_page(struct
86486 copy_user_highpage(dst, src, va, vma);
86487 }
86488
86489 @@ -71784,9 +67837,9 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86490 + if (page) {
86491 + update_hiwater_rss(mm);
86492 + if (PageAnon(page))
86493 -+ dec_mm_counter(mm, anon_rss);
86494 ++ dec_mm_counter_fast(mm, MM_ANONPAGES);
86495 + else
86496 -+ dec_mm_counter(mm, file_rss);
86497 ++ dec_mm_counter_fast(mm, MM_FILEPAGES);
86498 + page_remove_rmap(page);
86499 + page_cache_release(page);
86500 + }
86501 @@ -71818,7 +67871,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86502 + BUG_ON(address >= SEGMEXEC_TASK_SIZE);
86503 + address_m = address + SEGMEXEC_TASK_SIZE;
86504 + pmd_m = pmd_offset(pud_offset(pgd_offset(mm, address_m), address_m), address_m);
86505 -+ pte_m = pte_offset_map_nested(pmd_m, address_m);
86506 ++ pte_m = pte_offset_map(pmd_m, address_m);
86507 + ptl_m = pte_lockptr(mm, pmd_m);
86508 + if (ptl != ptl_m) {
86509 + spin_lock_nested(ptl_m, SINGLE_DEPTH_NESTING);
86510 @@ -71829,13 +67882,13 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86511 + entry_m = pfn_pte(page_to_pfn(page_m), vma_m->vm_page_prot);
86512 + page_cache_get(page_m);
86513 + page_add_anon_rmap(page_m, vma_m, address_m);
86514 -+ inc_mm_counter(mm, anon_rss);
86515 ++ inc_mm_counter_fast(mm, MM_ANONPAGES);
86516 + set_pte_at(mm, address_m, pte_m, entry_m);
86517 + update_mmu_cache(vma_m, address_m, entry_m);
86518 +out:
86519 + if (ptl != ptl_m)
86520 + spin_unlock(ptl_m);
86521 -+ pte_unmap_nested(pte_m);
86522 ++ pte_unmap(pte_m);
86523 + unlock_page(page_m);
86524 +}
86525 +
86526 @@ -71857,7 +67910,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86527 + BUG_ON(address >= SEGMEXEC_TASK_SIZE);
86528 + address_m = address + SEGMEXEC_TASK_SIZE;
86529 + pmd_m = pmd_offset(pud_offset(pgd_offset(mm, address_m), address_m), address_m);
86530 -+ pte_m = pte_offset_map_nested(pmd_m, address_m);
86531 ++ pte_m = pte_offset_map(pmd_m, address_m);
86532 + ptl_m = pte_lockptr(mm, pmd_m);
86533 + if (ptl != ptl_m) {
86534 + spin_lock_nested(ptl_m, SINGLE_DEPTH_NESTING);
86535 @@ -71868,13 +67921,13 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86536 + entry_m = pfn_pte(page_to_pfn(page_m), vma_m->vm_page_prot);
86537 + page_cache_get(page_m);
86538 + page_add_file_rmap(page_m);
86539 -+ inc_mm_counter(mm, file_rss);
86540 ++ inc_mm_counter_fast(mm, MM_FILEPAGES);
86541 + set_pte_at(mm, address_m, pte_m, entry_m);
86542 + update_mmu_cache(vma_m, address_m, entry_m);
86543 +out:
86544 + if (ptl != ptl_m)
86545 + spin_unlock(ptl_m);
86546 -+ pte_unmap_nested(pte_m);
86547 ++ pte_unmap(pte_m);
86548 +}
86549 +
86550 +static void pax_mirror_pfn_pte(struct vm_area_struct *vma, unsigned long address, unsigned long pfn_m, spinlock_t *ptl)
86551 @@ -71893,7 +67946,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86552 + BUG_ON(address >= SEGMEXEC_TASK_SIZE);
86553 + address_m = address + SEGMEXEC_TASK_SIZE;
86554 + pmd_m = pmd_offset(pud_offset(pgd_offset(mm, address_m), address_m), address_m);
86555 -+ pte_m = pte_offset_map_nested(pmd_m, address_m);
86556 ++ pte_m = pte_offset_map(pmd_m, address_m);
86557 + ptl_m = pte_lockptr(mm, pmd_m);
86558 + if (ptl != ptl_m) {
86559 + spin_lock_nested(ptl_m, SINGLE_DEPTH_NESTING);
86560 @@ -71906,7 +67959,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86561 +out:
86562 + if (ptl != ptl_m)
86563 + spin_unlock(ptl_m);
86564 -+ pte_unmap_nested(pte_m);
86565 ++ pte_unmap(pte_m);
86566 +}
86567 +
86568 +static void pax_mirror_pte(struct vm_area_struct *vma, unsigned long address, pte_t *pte, pmd_t *pmd, spinlock_t *ptl)
86569 @@ -71942,7 +67995,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86570 /*
86571 * This routine handles present pages, when users try to write
86572 * to a shared page. It is done by copying the page to a new address
86573 -@@ -2156,6 +2360,12 @@ gotten:
86574 +@@ -2667,6 +2860,12 @@ gotten:
86575 */
86576 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
86577 if (likely(pte_same(*page_table, orig_pte))) {
86578 @@ -71954,8 +68007,8 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86579 +
86580 if (old_page) {
86581 if (!PageAnon(old_page)) {
86582 - dec_mm_counter(mm, file_rss);
86583 -@@ -2207,6 +2417,10 @@ gotten:
86584 + dec_mm_counter_fast(mm, MM_FILEPAGES);
86585 +@@ -2718,6 +2917,10 @@ gotten:
86586 page_remove_rmap(old_page);
86587 }
86588
86589 @@ -71966,7 +68019,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86590 /* Free the old page.. */
86591 new_page = old_page;
86592 ret |= VM_FAULT_WRITE;
86593 -@@ -2606,6 +2820,11 @@ static int do_swap_page(struct mm_struct
86594 +@@ -2997,6 +3200,11 @@ static int do_swap_page(struct mm_struct
86595 swap_free(entry);
86596 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
86597 try_to_free_swap(page);
86598 @@ -71976,12 +68029,12 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86599 +#endif
86600 +
86601 unlock_page(page);
86602 -
86603 - if (flags & FAULT_FLAG_WRITE) {
86604 -@@ -2617,6 +2836,11 @@ static int do_swap_page(struct mm_struct
86605 + if (swapcache) {
86606 + /*
86607 +@@ -3020,6 +3228,11 @@ static int do_swap_page(struct mm_struct
86608
86609 /* No need to invalidate - it was non-present before */
86610 - update_mmu_cache(vma, address, pte);
86611 + update_mmu_cache(vma, address, page_table);
86612 +
86613 +#ifdef CONFIG_PAX_SEGMEXEC
86614 + pax_mirror_anon_pte(vma, address, page, ptl);
86615 @@ -71990,7 +68043,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86616 unlock:
86617 pte_unmap_unlock(page_table, ptl);
86618 out:
86619 -@@ -2632,40 +2856,6 @@ out_release:
86620 +@@ -3039,40 +3252,6 @@ out_release:
86621 }
86622
86623 /*
86624 @@ -72013,7 +68066,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86625 - if (prev && prev->vm_end == address)
86626 - return prev->vm_flags & VM_GROWSDOWN ? 0 : -ENOMEM;
86627 -
86628 -- expand_stack(vma, address - PAGE_SIZE);
86629 +- expand_downwards(vma, address - PAGE_SIZE);
86630 - }
86631 - if ((vma->vm_flags & VM_GROWSUP) && address + PAGE_SIZE == vma->vm_end) {
86632 - struct vm_area_struct *next = vma->vm_next;
86633 @@ -72031,7 +68084,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86634 * We enter with non-exclusive mmap_sem (to exclude vma changes,
86635 * but allow concurrent faults), and pte mapped but not yet locked.
86636 * We return with mmap_sem still held, but pte unmapped and unlocked.
86637 -@@ -2674,27 +2864,23 @@ static int do_anonymous_page(struct mm_s
86638 +@@ -3081,27 +3260,23 @@ static int do_anonymous_page(struct mm_s
86639 unsigned long address, pte_t *page_table, pmd_t *pmd,
86640 unsigned int flags)
86641 {
86642 @@ -72064,7 +68117,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86643 if (unlikely(anon_vma_prepare(vma)))
86644 goto oom;
86645 page = alloc_zeroed_user_highpage_movable(vma, address);
86646 -@@ -2713,6 +2899,11 @@ static int do_anonymous_page(struct mm_s
86647 +@@ -3120,6 +3295,11 @@ static int do_anonymous_page(struct mm_s
86648 if (!pte_none(*page_table))
86649 goto release;
86650
86651 @@ -72073,13 +68126,13 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86652 + BUG_ON(!trylock_page(page));
86653 +#endif
86654 +
86655 - inc_mm_counter(mm, anon_rss);
86656 + inc_mm_counter_fast(mm, MM_ANONPAGES);
86657 page_add_new_anon_rmap(page, vma, address);
86658 setpte:
86659 -@@ -2720,6 +2911,12 @@ setpte:
86660 +@@ -3127,6 +3307,12 @@ setpte:
86661
86662 /* No need to invalidate - it was non-present before */
86663 - update_mmu_cache(vma, address, entry);
86664 + update_mmu_cache(vma, address, page_table);
86665 +
86666 +#ifdef CONFIG_PAX_SEGMEXEC
86667 + if (page)
86668 @@ -72089,7 +68142,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86669 unlock:
86670 pte_unmap_unlock(page_table, ptl);
86671 return 0;
86672 -@@ -2862,6 +3059,12 @@ static int __do_fault(struct mm_struct *
86673 +@@ -3264,6 +3450,12 @@ static int __do_fault(struct mm_struct *
86674 */
86675 /* Only go through if we didn't race with anybody else... */
86676 if (likely(pte_same(*page_table, orig_pte))) {
86677 @@ -72102,10 +68155,10 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86678 flush_icache_page(vma, page);
86679 entry = mk_pte(page, vma->vm_page_prot);
86680 if (flags & FAULT_FLAG_WRITE)
86681 -@@ -2881,6 +3084,14 @@ static int __do_fault(struct mm_struct *
86682 +@@ -3283,6 +3475,14 @@ static int __do_fault(struct mm_struct *
86683
86684 /* no need to invalidate: a not-present page won't be cached */
86685 - update_mmu_cache(vma, address, entry);
86686 + update_mmu_cache(vma, address, page_table);
86687 +
86688 +#ifdef CONFIG_PAX_SEGMEXEC
86689 + if (anon)
86690 @@ -72117,9 +68170,9 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86691 } else {
86692 if (charged)
86693 mem_cgroup_uncharge_page(page);
86694 -@@ -3028,6 +3239,12 @@ static inline int handle_pte_fault(struc
86695 +@@ -3430,6 +3630,12 @@ int handle_pte_fault(struct mm_struct *m
86696 if (flags & FAULT_FLAG_WRITE)
86697 - flush_tlb_page(vma, address);
86698 + flush_tlb_fix_spurious_fault(vma, address);
86699 }
86700 +
86701 +#ifdef CONFIG_PAX_SEGMEXEC
86702 @@ -72130,7 +68183,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86703 unlock:
86704 pte_unmap_unlock(pte, ptl);
86705 return 0;
86706 -@@ -3044,6 +3261,10 @@ int handle_mm_fault(struct mm_struct *mm
86707 +@@ -3446,6 +3652,10 @@ int handle_mm_fault(struct mm_struct *mm
86708 pmd_t *pmd;
86709 pte_t *pte;
86710
86711 @@ -72141,7 +68194,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86712 __set_current_state(TASK_RUNNING);
86713
86714 count_vm_event(PGFAULT);
86715 -@@ -3051,6 +3272,34 @@ int handle_mm_fault(struct mm_struct *mm
86716 +@@ -3457,6 +3667,34 @@ int handle_mm_fault(struct mm_struct *mm
86717 if (unlikely(is_vm_hugetlb_page(vma)))
86718 return hugetlb_fault(mm, vma, address, flags);
86719
86720 @@ -72167,7 +68220,7 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86721 + pmd_m = pmd_alloc(mm, pud_m, address_m);
86722 + if (!pmd_m)
86723 + return VM_FAULT_OOM;
86724 -+ if (!pmd_present(*pmd_m) && __pte_alloc(mm, pmd_m, address_m))
86725 ++ if (!pmd_present(*pmd_m) && __pte_alloc(mm, vma_m, pmd_m, address_m))
86726 + return VM_FAULT_OOM;
86727 + pax_unmap_mirror_pte(vma_m, address_m, pmd_m);
86728 + }
86729 @@ -72176,7 +68229,16 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86730 pgd = pgd_offset(mm, address);
86731 pud = pud_alloc(mm, pgd, address);
86732 if (!pud)
86733 -@@ -3148,7 +3397,7 @@ static int __init gate_vma_init(void)
86734 +@@ -3486,7 +3724,7 @@ int handle_mm_fault(struct mm_struct *mm
86735 + * run pte_offset_map on the pmd, if an huge pmd could
86736 + * materialize from under us from a different thread.
86737 + */
86738 +- if (unlikely(pmd_none(*pmd)) && __pte_alloc(mm, vma, pmd, address))
86739 ++ if (unlikely(pmd_none(*pmd) && __pte_alloc(mm, vma, pmd, address)))
86740 + return VM_FAULT_OOM;
86741 + /* if an huge pmd materialized from under us just retry later */
86742 + if (unlikely(pmd_trans_huge(*pmd)))
86743 +@@ -3590,7 +3828,7 @@ static int __init gate_vma_init(void)
86744 gate_vma.vm_start = FIXADDR_USER_START;
86745 gate_vma.vm_end = FIXADDR_USER_END;
86746 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
86747 @@ -72185,19 +68247,19 @@ diff -urNp linux-2.6.32.48/mm/memory.c linux-2.6.32.48/mm/memory.c
86748 /*
86749 * Make sure the vDSO gets into every core dump.
86750 * Dumping its contents makes post-mortem fully interpretable later
86751 -diff -urNp linux-2.6.32.48/mm/memory-failure.c linux-2.6.32.48/mm/memory-failure.c
86752 ---- linux-2.6.32.48/mm/memory-failure.c 2011-11-12 12:44:30.000000000 -0500
86753 -+++ linux-2.6.32.48/mm/memory-failure.c 2011-11-12 12:46:47.000000000 -0500
86754 -@@ -46,7 +46,7 @@ int sysctl_memory_failure_early_kill __r
86755 +diff -urNp linux-3.0.8/mm/memory-failure.c linux-3.0.8/mm/memory-failure.c
86756 +--- linux-3.0.8/mm/memory-failure.c 2011-07-21 22:17:23.000000000 -0400
86757 ++++ linux-3.0.8/mm/memory-failure.c 2011-10-06 04:17:55.000000000 -0400
86758 +@@ -59,7 +59,7 @@ int sysctl_memory_failure_early_kill __r
86759
86760 int sysctl_memory_failure_recovery __read_mostly = 1;
86761
86762 -atomic_long_t mce_bad_pages __read_mostly = ATOMIC_LONG_INIT(0);
86763 +atomic_long_unchecked_t mce_bad_pages __read_mostly = ATOMIC_LONG_INIT(0);
86764
86765 - /*
86766 - * Send all the processes who have the page mapped an ``action optional''
86767 -@@ -64,7 +64,7 @@ static int kill_proc_ao(struct task_stru
86768 + #if defined(CONFIG_HWPOISON_INJECT) || defined(CONFIG_HWPOISON_INJECT_MODULE)
86769 +
86770 +@@ -200,7 +200,7 @@ static int kill_proc_ao(struct task_stru
86771 si.si_signo = SIGBUS;
86772 si.si_errno = 0;
86773 si.si_code = BUS_MCEERR_AO;
86774 @@ -72206,47 +68268,101 @@ diff -urNp linux-2.6.32.48/mm/memory-failure.c linux-2.6.32.48/mm/memory-failure
86775 #ifdef __ARCH_SI_TRAPNO
86776 si.si_trapno = trapno;
86777 #endif
86778 -@@ -745,7 +745,7 @@ int __memory_failure(unsigned long pfn,
86779 - return 0;
86780 +@@ -1008,7 +1008,7 @@ int __memory_failure(unsigned long pfn,
86781 }
86782
86783 -- atomic_long_add(1, &mce_bad_pages);
86784 -+ atomic_long_add_unchecked(1, &mce_bad_pages);
86785 + nr_pages = 1 << compound_trans_order(hpage);
86786 +- atomic_long_add(nr_pages, &mce_bad_pages);
86787 ++ atomic_long_add_unchecked(nr_pages, &mce_bad_pages);
86788
86789 /*
86790 * We need/can do nothing about count=0 pages.
86791 -diff -urNp linux-2.6.32.48/mm/mempolicy.c linux-2.6.32.48/mm/mempolicy.c
86792 ---- linux-2.6.32.48/mm/mempolicy.c 2011-11-12 12:44:30.000000000 -0500
86793 -+++ linux-2.6.32.48/mm/mempolicy.c 2011-11-12 12:46:47.000000000 -0500
86794 -@@ -573,6 +573,10 @@ static int mbind_range(struct vm_area_st
86795 - struct vm_area_struct *next;
86796 - int err;
86797 +@@ -1038,7 +1038,7 @@ int __memory_failure(unsigned long pfn,
86798 + if (!PageHWPoison(hpage)
86799 + || (hwpoison_filter(p) && TestClearPageHWPoison(p))
86800 + || (p != hpage && TestSetPageHWPoison(hpage))) {
86801 +- atomic_long_sub(nr_pages, &mce_bad_pages);
86802 ++ atomic_long_sub_unchecked(nr_pages, &mce_bad_pages);
86803 + return 0;
86804 + }
86805 + set_page_hwpoison_huge_page(hpage);
86806 +@@ -1096,7 +1096,7 @@ int __memory_failure(unsigned long pfn,
86807 + }
86808 + if (hwpoison_filter(p)) {
86809 + if (TestClearPageHWPoison(p))
86810 +- atomic_long_sub(nr_pages, &mce_bad_pages);
86811 ++ atomic_long_sub_unchecked(nr_pages, &mce_bad_pages);
86812 + unlock_page(hpage);
86813 + put_page(hpage);
86814 + return 0;
86815 +@@ -1222,7 +1222,7 @@ int unpoison_memory(unsigned long pfn)
86816 + return 0;
86817 + }
86818 + if (TestClearPageHWPoison(p))
86819 +- atomic_long_sub(nr_pages, &mce_bad_pages);
86820 ++ atomic_long_sub_unchecked(nr_pages, &mce_bad_pages);
86821 + pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn);
86822 + return 0;
86823 + }
86824 +@@ -1236,7 +1236,7 @@ int unpoison_memory(unsigned long pfn)
86825 + */
86826 + if (TestClearPageHWPoison(page)) {
86827 + pr_info("MCE: Software-unpoisoned page %#lx\n", pfn);
86828 +- atomic_long_sub(nr_pages, &mce_bad_pages);
86829 ++ atomic_long_sub_unchecked(nr_pages, &mce_bad_pages);
86830 + freeit = 1;
86831 + if (PageHuge(page))
86832 + clear_page_hwpoison_huge_page(page);
86833 +@@ -1349,7 +1349,7 @@ static int soft_offline_huge_page(struct
86834 + }
86835 + done:
86836 + if (!PageHWPoison(hpage))
86837 +- atomic_long_add(1 << compound_trans_order(hpage), &mce_bad_pages);
86838 ++ atomic_long_add_unchecked(1 << compound_trans_order(hpage), &mce_bad_pages);
86839 + set_page_hwpoison_huge_page(hpage);
86840 + dequeue_hwpoisoned_huge_page(hpage);
86841 + /* keep elevated page count for bad page */
86842 +@@ -1480,7 +1480,7 @@ int soft_offline_page(struct page *page,
86843 + return ret;
86844 +
86845 + done:
86846 +- atomic_long_add(1, &mce_bad_pages);
86847 ++ atomic_long_add_unchecked(1, &mce_bad_pages);
86848 + SetPageHWPoison(page);
86849 + /* keep elevated page count for bad page */
86850 + return ret;
86851 +diff -urNp linux-3.0.8/mm/mempolicy.c linux-3.0.8/mm/mempolicy.c
86852 +--- linux-3.0.8/mm/mempolicy.c 2011-07-21 22:17:23.000000000 -0400
86853 ++++ linux-3.0.8/mm/mempolicy.c 2011-08-23 21:48:14.000000000 -0400
86854 +@@ -639,6 +639,10 @@ static int mbind_range(struct mm_struct
86855 + unsigned long vmstart;
86856 + unsigned long vmend;
86857
86858 +#ifdef CONFIG_PAX_SEGMEXEC
86859 + struct vm_area_struct *vma_m;
86860 +#endif
86861 +
86862 - err = 0;
86863 - for (; vma && vma->vm_start < end; vma = next) {
86864 - next = vma->vm_next;
86865 -@@ -584,6 +588,16 @@ static int mbind_range(struct vm_area_st
86866 - err = policy_vma(vma, new);
86867 + vma = find_vma_prev(mm, start, &prev);
86868 + if (!vma || vma->vm_start > start)
86869 + return -EFAULT;
86870 +@@ -669,6 +673,16 @@ static int mbind_range(struct mm_struct
86871 + err = policy_vma(vma, new_pol);
86872 if (err)
86873 - break;
86874 + goto out;
86875 +
86876 +#ifdef CONFIG_PAX_SEGMEXEC
86877 + vma_m = pax_find_mirror_vma(vma);
86878 + if (vma_m) {
86879 -+ err = policy_vma(vma_m, new);
86880 ++ err = policy_vma(vma_m, new_pol);
86881 + if (err)
86882 -+ break;
86883 ++ goto out;
86884 + }
86885 +#endif
86886 +
86887 }
86888 - return err;
86889 - }
86890 -@@ -1002,6 +1016,17 @@ static long do_mbind(unsigned long start
86891 +
86892 + out:
86893 +@@ -1102,6 +1116,17 @@ static long do_mbind(unsigned long start
86894
86895 if (end < start)
86896 return -EINVAL;
86897 @@ -72264,9 +68380,9 @@ diff -urNp linux-2.6.32.48/mm/mempolicy.c linux-2.6.32.48/mm/mempolicy.c
86898 if (end == start)
86899 return 0;
86900
86901 -@@ -1207,6 +1232,14 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pi
86902 +@@ -1320,6 +1345,14 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pi
86903 if (!mm)
86904 - return -EINVAL;
86905 + goto out;
86906
86907 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
86908 + if (mm != current->mm &&
86909 @@ -72279,7 +68395,7 @@ diff -urNp linux-2.6.32.48/mm/mempolicy.c linux-2.6.32.48/mm/mempolicy.c
86910 /*
86911 * Check if this process has the right to modify the specified
86912 * process. The right exists if the process has administrative
86913 -@@ -1216,8 +1249,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pi
86914 +@@ -1329,8 +1362,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pi
86915 rcu_read_lock();
86916 tcred = __task_cred(task);
86917 if (cred->euid != tcred->suid && cred->euid != tcred->uid &&
86918 @@ -72289,19 +68405,10 @@ diff -urNp linux-2.6.32.48/mm/mempolicy.c linux-2.6.32.48/mm/mempolicy.c
86919 rcu_read_unlock();
86920 err = -EPERM;
86921 goto out;
86922 -@@ -2396,7 +2428,7 @@ int show_numa_map(struct seq_file *m, vo
86923 -
86924 - if (file) {
86925 - seq_printf(m, " file=");
86926 -- seq_path(m, &file->f_path, "\n\t= ");
86927 -+ seq_path(m, &file->f_path, "\n\t\\= ");
86928 - } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
86929 - seq_printf(m, " heap");
86930 - } else if (vma->vm_start <= mm->start_stack &&
86931 -diff -urNp linux-2.6.32.48/mm/migrate.c linux-2.6.32.48/mm/migrate.c
86932 ---- linux-2.6.32.48/mm/migrate.c 2011-11-12 12:44:30.000000000 -0500
86933 -+++ linux-2.6.32.48/mm/migrate.c 2011-11-12 12:46:47.000000000 -0500
86934 -@@ -916,6 +916,8 @@ static int do_pages_move(struct mm_struc
86935 +diff -urNp linux-3.0.8/mm/migrate.c linux-3.0.8/mm/migrate.c
86936 +--- linux-3.0.8/mm/migrate.c 2011-10-25 09:10:33.000000000 -0400
86937 ++++ linux-3.0.8/mm/migrate.c 2011-10-25 09:10:41.000000000 -0400
86938 +@@ -1124,6 +1124,8 @@ static int do_pages_move(struct mm_struc
86939 unsigned long chunk_start;
86940 int err;
86941
86942 @@ -72310,7 +68417,7 @@ diff -urNp linux-2.6.32.48/mm/migrate.c linux-2.6.32.48/mm/migrate.c
86943 task_nodes = cpuset_mems_allowed(task);
86944
86945 err = -ENOMEM;
86946 -@@ -1106,6 +1108,14 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid,
86947 +@@ -1308,6 +1310,14 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid,
86948 if (!mm)
86949 return -EINVAL;
86950
86951 @@ -72325,7 +68432,7 @@ diff -urNp linux-2.6.32.48/mm/migrate.c linux-2.6.32.48/mm/migrate.c
86952 /*
86953 * Check if this process has the right to modify the specified
86954 * process. The right exists if the process has administrative
86955 -@@ -1115,8 +1125,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid,
86956 +@@ -1317,8 +1327,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid,
86957 rcu_read_lock();
86958 tcred = __task_cred(task);
86959 if (cred->euid != tcred->suid && cred->euid != tcred->uid &&
86960 @@ -72335,9 +68442,9 @@ diff -urNp linux-2.6.32.48/mm/migrate.c linux-2.6.32.48/mm/migrate.c
86961 rcu_read_unlock();
86962 err = -EPERM;
86963 goto out;
86964 -diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
86965 ---- linux-2.6.32.48/mm/mlock.c 2011-11-12 12:44:30.000000000 -0500
86966 -+++ linux-2.6.32.48/mm/mlock.c 2011-11-12 12:46:47.000000000 -0500
86967 +diff -urNp linux-3.0.8/mm/mlock.c linux-3.0.8/mm/mlock.c
86968 +--- linux-3.0.8/mm/mlock.c 2011-07-21 22:17:23.000000000 -0400
86969 ++++ linux-3.0.8/mm/mlock.c 2011-08-23 21:48:14.000000000 -0400
86970 @@ -13,6 +13,7 @@
86971 #include <linux/pagemap.h>
86972 #include <linux/mempolicy.h>
86973 @@ -72346,43 +68453,7 @@ diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
86974 #include <linux/sched.h>
86975 #include <linux/module.h>
86976 #include <linux/rmap.h>
86977 -@@ -138,13 +139,6 @@ void munlock_vma_page(struct page *page)
86978 - }
86979 - }
86980 -
86981 --static inline int stack_guard_page(struct vm_area_struct *vma, unsigned long addr)
86982 --{
86983 -- return (vma->vm_flags & VM_GROWSDOWN) &&
86984 -- (vma->vm_start == addr) &&
86985 -- !vma_stack_continue(vma->vm_prev, addr);
86986 --}
86987 --
86988 - /**
86989 - * __mlock_vma_pages_range() - mlock a range of pages in the vma.
86990 - * @vma: target vma
86991 -@@ -177,12 +171,6 @@ static long __mlock_vma_pages_range(stru
86992 - if (vma->vm_flags & VM_WRITE)
86993 - gup_flags |= FOLL_WRITE;
86994 -
86995 -- /* We don't try to access the guard page of a stack vma */
86996 -- if (stack_guard_page(vma, start)) {
86997 -- addr += PAGE_SIZE;
86998 -- nr_pages--;
86999 -- }
87000 --
87001 - while (nr_pages > 0) {
87002 - int i;
87003 -
87004 -@@ -440,7 +428,7 @@ static int do_mlock(unsigned long start,
87005 - {
87006 - unsigned long nstart, end, tmp;
87007 - struct vm_area_struct * vma, * prev;
87008 -- int error;
87009 -+ int error = -EINVAL;
87010 -
87011 - len = PAGE_ALIGN(len);
87012 - end = start + len;
87013 -@@ -448,6 +436,9 @@ static int do_mlock(unsigned long start,
87014 +@@ -377,6 +378,9 @@ static int do_mlock(unsigned long start,
87015 return -EINVAL;
87016 if (end == start)
87017 return 0;
87018 @@ -72392,9 +68463,9 @@ diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
87019 vma = find_vma_prev(current->mm, start, &prev);
87020 if (!vma || vma->vm_start > start)
87021 return -ENOMEM;
87022 -@@ -458,6 +449,11 @@ static int do_mlock(unsigned long start,
87023 +@@ -387,6 +391,11 @@ static int do_mlock(unsigned long start,
87024 for (nstart = start ; ; ) {
87025 - unsigned int newflags;
87026 + vm_flags_t newflags;
87027
87028 +#ifdef CONFIG_PAX_SEGMEXEC
87029 + if ((current->mm->pax_flags & MF_PAX_SEGMEXEC) && (vma->vm_start >= SEGMEXEC_TASK_SIZE))
87030 @@ -72404,7 +68475,7 @@ diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
87031 /* Here we know that vma->vm_start <= nstart < vma->vm_end. */
87032
87033 newflags = vma->vm_flags | VM_LOCKED;
87034 -@@ -507,6 +503,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, st
87035 +@@ -492,6 +501,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, st
87036 lock_limit >>= PAGE_SHIFT;
87037
87038 /* check against resource limits */
87039 @@ -72412,7 +68483,7 @@ diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
87040 if ((locked <= lock_limit) || capable(CAP_IPC_LOCK))
87041 error = do_mlock(start, len, 1);
87042 up_write(&current->mm->mmap_sem);
87043 -@@ -528,17 +525,23 @@ SYSCALL_DEFINE2(munlock, unsigned long,
87044 +@@ -515,17 +525,23 @@ SYSCALL_DEFINE2(munlock, unsigned long,
87045 static int do_mlockall(int flags)
87046 {
87047 struct vm_area_struct * vma, * prev = NULL;
87048 @@ -72428,19 +68499,18 @@ diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
87049 goto out;
87050
87051 for (vma = current->mm->mmap; vma ; vma = prev->vm_next) {
87052 -- unsigned int newflags;
87053 -+ unsigned long newflags;
87054 -+
87055 + vm_flags_t newflags;
87056 +
87057 +#ifdef CONFIG_PAX_SEGMEXEC
87058 + if ((current->mm->pax_flags & MF_PAX_SEGMEXEC) && (vma->vm_start >= SEGMEXEC_TASK_SIZE))
87059 + break;
87060 +#endif
87061 -
87062 ++
87063 + BUG_ON(vma->vm_end > TASK_SIZE);
87064 newflags = vma->vm_flags | VM_LOCKED;
87065 if (!(flags & MCL_CURRENT))
87066 newflags &= ~VM_LOCKED;
87067 -@@ -570,6 +573,7 @@ SYSCALL_DEFINE1(mlockall, int, flags)
87068 +@@ -557,6 +573,7 @@ SYSCALL_DEFINE1(mlockall, int, flags)
87069 lock_limit >>= PAGE_SHIFT;
87070
87071 ret = -ENOMEM;
87072 @@ -72448,10 +68518,10 @@ diff -urNp linux-2.6.32.48/mm/mlock.c linux-2.6.32.48/mm/mlock.c
87073 if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
87074 capable(CAP_IPC_LOCK))
87075 ret = do_mlockall(flags);
87076 -diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87077 ---- linux-2.6.32.48/mm/mmap.c 2011-11-12 12:44:30.000000000 -0500
87078 -+++ linux-2.6.32.48/mm/mmap.c 2011-11-12 12:55:30.000000000 -0500
87079 -@@ -45,6 +45,16 @@
87080 +diff -urNp linux-3.0.8/mm/mmap.c linux-3.0.8/mm/mmap.c
87081 +--- linux-3.0.8/mm/mmap.c 2011-07-21 22:17:23.000000000 -0400
87082 ++++ linux-3.0.8/mm/mmap.c 2011-08-23 21:48:14.000000000 -0400
87083 +@@ -46,6 +46,16 @@
87084 #define arch_rebalance_pgtables(addr, len) (addr)
87085 #endif
87086
87087 @@ -72468,7 +68538,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87088 static void unmap_region(struct mm_struct *mm,
87089 struct vm_area_struct *vma, struct vm_area_struct *prev,
87090 unsigned long start, unsigned long end);
87091 -@@ -70,22 +80,32 @@ static void unmap_region(struct mm_struc
87092 +@@ -71,22 +81,32 @@ static void unmap_region(struct mm_struc
87093 * x: (no) no x: (no) yes x: (no) yes x: (yes) yes
87094 *
87095 */
87096 @@ -72478,7 +68548,8 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87097 __S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111
87098 };
87099
87100 - pgprot_t vm_get_page_prot(unsigned long vm_flags)
87101 +-pgprot_t vm_get_page_prot(unsigned long vm_flags)
87102 ++pgprot_t vm_get_page_prot(vm_flags_t vm_flags)
87103 {
87104 - return __pgprot(pgprot_val(protection_map[vm_flags &
87105 + pgprot_t prot = __pgprot(pgprot_val(protection_map[vm_flags &
87106 @@ -72486,7 +68557,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87107 pgprot_val(arch_vm_get_page_prot(vm_flags)));
87108 +
87109 +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_X86_32)
87110 -+ if (!nx_enabled &&
87111 ++ if (!(__supported_pte_mask & _PAGE_NX) &&
87112 + (vm_flags & (VM_PAGEEXEC | VM_EXEC)) == VM_PAGEEXEC &&
87113 + (vm_flags & (VM_READ | VM_WRITE)))
87114 + prot = __pgprot(pte_val(pte_exprotect(__pte(pgprot_val(prot)))));
87115 @@ -72496,14 +68567,14 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87116 }
87117 EXPORT_SYMBOL(vm_get_page_prot);
87118
87119 - int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */
87120 - int sysctl_overcommit_ratio = 50; /* default is 50% */
87121 + int sysctl_overcommit_memory __read_mostly = OVERCOMMIT_GUESS; /* heuristic overcommit */
87122 + int sysctl_overcommit_ratio __read_mostly = 50; /* default is 50% */
87123 int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
87124 +unsigned long sysctl_heap_stack_gap __read_mostly = 64*1024;
87125 - struct percpu_counter vm_committed_as;
87126 -
87127 /*
87128 -@@ -231,6 +251,7 @@ static struct vm_area_struct *remove_vma
87129 + * Make sure vm_committed_as in one cacheline and not cacheline shared with
87130 + * other variables. It can be updated by several CPUs frequently.
87131 +@@ -236,6 +256,7 @@ static struct vm_area_struct *remove_vma
87132 struct vm_area_struct *next = vma->vm_next;
87133
87134 might_sleep();
87135 @@ -72511,15 +68582,15 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87136 if (vma->vm_ops && vma->vm_ops->close)
87137 vma->vm_ops->close(vma);
87138 if (vma->vm_file) {
87139 -@@ -267,6 +288,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
87140 +@@ -280,6 +301,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
87141 * not page aligned -Ram Gupta
87142 */
87143 - rlim = current->signal->rlim[RLIMIT_DATA].rlim_cur;
87144 + rlim = rlimit(RLIMIT_DATA);
87145 + gr_learn_resource(current, RLIMIT_DATA, (brk - mm->start_brk) + (mm->end_data - mm->start_data), 1);
87146 if (rlim < RLIM_INFINITY && (brk - mm->start_brk) +
87147 (mm->end_data - mm->start_data) > rlim)
87148 goto out;
87149 -@@ -704,6 +726,12 @@ static int
87150 +@@ -697,6 +719,12 @@ static int
87151 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
87152 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
87153 {
87154 @@ -72530,9 +68601,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87155 +#endif
87156 +
87157 if (is_mergeable_vma(vma, file, vm_flags) &&
87158 - is_mergeable_anon_vma(anon_vma, vma->anon_vma)) {
87159 + is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
87160 if (vma->vm_pgoff == vm_pgoff)
87161 -@@ -723,6 +751,12 @@ static int
87162 +@@ -716,6 +744,12 @@ static int
87163 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
87164 struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
87165 {
87166 @@ -72543,9 +68614,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87167 +#endif
87168 +
87169 if (is_mergeable_vma(vma, file, vm_flags) &&
87170 - is_mergeable_anon_vma(anon_vma, vma->anon_vma)) {
87171 + is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
87172 pgoff_t vm_pglen;
87173 -@@ -765,12 +799,19 @@ can_vma_merge_after(struct vm_area_struc
87174 +@@ -758,13 +792,20 @@ can_vma_merge_after(struct vm_area_struc
87175 struct vm_area_struct *vma_merge(struct mm_struct *mm,
87176 struct vm_area_struct *prev, unsigned long addr,
87177 unsigned long end, unsigned long vm_flags,
87178 @@ -72555,6 +68626,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87179 {
87180 pgoff_t pglen = (end - addr) >> PAGE_SHIFT;
87181 struct vm_area_struct *area, *next;
87182 + int err;
87183
87184 +#ifdef CONFIG_PAX_SEGMEXEC
87185 + unsigned long addr_m = addr + SEGMEXEC_TASK_SIZE, end_m = end + SEGMEXEC_TASK_SIZE;
87186 @@ -72566,7 +68638,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87187 /*
87188 * We later require that vma->vm_flags == vm_flags,
87189 * so this tests vma->vm_flags & VM_SPECIAL, too.
87190 -@@ -786,6 +827,15 @@ struct vm_area_struct *vma_merge(struct
87191 +@@ -780,6 +821,15 @@ struct vm_area_struct *vma_merge(struct
87192 if (next && next->vm_end == end) /* cases 6, 7, 8 */
87193 next = next->vm_next;
87194
87195 @@ -72582,63 +68654,63 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87196 /*
87197 * Can it merge with the predecessor?
87198 */
87199 -@@ -805,9 +855,24 @@ struct vm_area_struct *vma_merge(struct
87200 +@@ -799,9 +849,24 @@ struct vm_area_struct *vma_merge(struct
87201 /* cases 1, 6 */
87202 - vma_adjust(prev, prev->vm_start,
87203 + err = vma_adjust(prev, prev->vm_start,
87204 next->vm_end, prev->vm_pgoff, NULL);
87205 - } else /* cases 2, 5, 7 */
87206 +
87207 +#ifdef CONFIG_PAX_SEGMEXEC
87208 -+ if (prev_m)
87209 -+ vma_adjust(prev_m, prev_m->vm_start,
87210 ++ if (!err && prev_m)
87211 ++ err = vma_adjust(prev_m, prev_m->vm_start,
87212 + next_m->vm_end, prev_m->vm_pgoff, NULL);
87213 +#endif
87214 +
87215 + } else { /* cases 2, 5, 7 */
87216 - vma_adjust(prev, prev->vm_start,
87217 + err = vma_adjust(prev, prev->vm_start,
87218 end, prev->vm_pgoff, NULL);
87219 +
87220 +#ifdef CONFIG_PAX_SEGMEXEC
87221 -+ if (prev_m)
87222 -+ vma_adjust(prev_m, prev_m->vm_start,
87223 -+ end_m, prev_m->vm_pgoff, NULL);
87224 ++ if (!err && prev_m)
87225 ++ err = vma_adjust(prev_m, prev_m->vm_start,
87226 ++ end_m, prev_m->vm_pgoff, NULL);
87227 +#endif
87228 +
87229 + }
87230 - return prev;
87231 - }
87232 -
87233 -@@ -818,12 +883,27 @@ struct vm_area_struct *vma_merge(struct
87234 + if (err)
87235 + return NULL;
87236 + khugepaged_enter_vma_merge(prev);
87237 +@@ -815,12 +880,27 @@ struct vm_area_struct *vma_merge(struct
87238 mpol_equal(policy, vma_policy(next)) &&
87239 can_vma_merge_before(next, vm_flags,
87240 anon_vma, file, pgoff+pglen)) {
87241 - if (prev && addr < prev->vm_end) /* case 4 */
87242 + if (prev && addr < prev->vm_end) { /* case 4 */
87243 - vma_adjust(prev, prev->vm_start,
87244 + err = vma_adjust(prev, prev->vm_start,
87245 addr, prev->vm_pgoff, NULL);
87246 - else /* cases 3, 8 */
87247 +
87248 +#ifdef CONFIG_PAX_SEGMEXEC
87249 -+ if (prev_m)
87250 -+ vma_adjust(prev_m, prev_m->vm_start,
87251 -+ addr_m, prev_m->vm_pgoff, NULL);
87252 ++ if (!err && prev_m)
87253 ++ err = vma_adjust(prev_m, prev_m->vm_start,
87254 ++ addr_m, prev_m->vm_pgoff, NULL);
87255 +#endif
87256 +
87257 + } else { /* cases 3, 8 */
87258 - vma_adjust(area, addr, next->vm_end,
87259 + err = vma_adjust(area, addr, next->vm_end,
87260 next->vm_pgoff - pglen, NULL);
87261 +
87262 +#ifdef CONFIG_PAX_SEGMEXEC
87263 -+ if (area_m)
87264 -+ vma_adjust(area_m, addr_m, next_m->vm_end,
87265 -+ next_m->vm_pgoff - pglen, NULL);
87266 ++ if (!err && area_m)
87267 ++ err = vma_adjust(area_m, addr_m, next_m->vm_end,
87268 ++ next_m->vm_pgoff - pglen, NULL);
87269 +#endif
87270 +
87271 + }
87272 - return area;
87273 - }
87274 -
87275 -@@ -898,14 +978,11 @@ none:
87276 + if (err)
87277 + return NULL;
87278 + khugepaged_enter_vma_merge(area);
87279 +@@ -929,14 +1009,11 @@ none:
87280 void vm_stat_account(struct mm_struct *mm, unsigned long flags,
87281 struct file *file, long pages)
87282 {
87283 @@ -72654,7 +68726,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87284 mm->stack_vm += pages;
87285 if (flags & (VM_RESERVED|VM_IO))
87286 mm->reserved_vm += pages;
87287 -@@ -932,7 +1009,7 @@ unsigned long do_mmap_pgoff(struct file
87288 +@@ -963,7 +1040,7 @@ unsigned long do_mmap_pgoff(struct file
87289 * (the exception is when the underlying filesystem is noexec
87290 * mounted, in which case we dont add PROT_EXEC.)
87291 */
87292 @@ -72663,7 +68735,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87293 if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
87294 prot |= PROT_EXEC;
87295
87296 -@@ -958,7 +1035,7 @@ unsigned long do_mmap_pgoff(struct file
87297 +@@ -989,7 +1066,7 @@ unsigned long do_mmap_pgoff(struct file
87298 /* Obtain the address to map to. we verify (or select) it and ensure
87299 * that it represents a valid section of the address space.
87300 */
87301 @@ -72672,7 +68744,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87302 if (addr & ~PAGE_MASK)
87303 return addr;
87304
87305 -@@ -969,6 +1046,36 @@ unsigned long do_mmap_pgoff(struct file
87306 +@@ -1000,6 +1077,36 @@ unsigned long do_mmap_pgoff(struct file
87307 vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
87308 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
87309
87310 @@ -72709,15 +68781,15 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87311 if (flags & MAP_LOCKED)
87312 if (!can_do_mlock())
87313 return -EPERM;
87314 -@@ -980,6 +1087,7 @@ unsigned long do_mmap_pgoff(struct file
87315 +@@ -1011,6 +1118,7 @@ unsigned long do_mmap_pgoff(struct file
87316 locked += mm->locked_vm;
87317 - lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
87318 + lock_limit = rlimit(RLIMIT_MEMLOCK);
87319 lock_limit >>= PAGE_SHIFT;
87320 + gr_learn_resource(current, RLIMIT_MEMLOCK, locked << PAGE_SHIFT, 1);
87321 if (locked > lock_limit && !capable(CAP_IPC_LOCK))
87322 return -EAGAIN;
87323 }
87324 -@@ -1053,6 +1161,9 @@ unsigned long do_mmap_pgoff(struct file
87325 +@@ -1081,6 +1189,9 @@ unsigned long do_mmap_pgoff(struct file
87326 if (error)
87327 return error;
87328
87329 @@ -72727,12 +68799,8 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87330 return mmap_region(file, addr, len, flags, vm_flags, pgoff);
87331 }
87332 EXPORT_SYMBOL(do_mmap_pgoff);
87333 -@@ -1065,10 +1176,10 @@ EXPORT_SYMBOL(do_mmap_pgoff);
87334 - */
87335 - int vma_wants_writenotify(struct vm_area_struct *vma)
87336 - {
87337 -- unsigned int vm_flags = vma->vm_flags;
87338 -+ unsigned long vm_flags = vma->vm_flags;
87339 +@@ -1161,7 +1272,7 @@ int vma_wants_writenotify(struct vm_area
87340 + vm_flags_t vm_flags = vma->vm_flags;
87341
87342 /* If it was private or non-writable, the write bit is already clear */
87343 - if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED)))
87344 @@ -72740,7 +68808,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87345 return 0;
87346
87347 /* The backer wishes to know when pages are first written to? */
87348 -@@ -1117,14 +1228,24 @@ unsigned long mmap_region(struct file *f
87349 +@@ -1210,14 +1321,24 @@ unsigned long mmap_region(struct file *f
87350 unsigned long charged = 0;
87351 struct inode *inode = file ? file->f_path.dentry->d_inode : NULL;
87352
87353 @@ -72767,7 +68835,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87354 }
87355
87356 /* Check against address space limit. */
87357 -@@ -1173,6 +1294,16 @@ munmap_back:
87358 +@@ -1266,6 +1387,16 @@ munmap_back:
87359 goto unacct_error;
87360 }
87361
87362 @@ -72784,7 +68852,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87363 vma->vm_mm = mm;
87364 vma->vm_start = addr;
87365 vma->vm_end = addr + len;
87366 -@@ -1195,6 +1326,19 @@ munmap_back:
87367 +@@ -1289,6 +1420,19 @@ munmap_back:
87368 error = file->f_op->mmap(file, vma);
87369 if (error)
87370 goto unmap_and_free_vma;
87371 @@ -72804,27 +68872,27 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87372 if (vm_flags & VM_EXECUTABLE)
87373 added_exe_file_vma(mm);
87374
87375 -@@ -1218,6 +1362,11 @@ munmap_back:
87376 +@@ -1324,6 +1468,11 @@ munmap_back:
87377 vma_link(mm, vma, prev, rb_link, rb_parent);
87378 file = vma->vm_file;
87379
87380 +#ifdef CONFIG_PAX_SEGMEXEC
87381 + if (vma_m)
87382 -+ pax_mirror_vma(vma_m, vma);
87383 ++ BUG_ON(pax_mirror_vma(vma_m, vma));
87384 +#endif
87385 +
87386 /* Once vma denies write, undo our temporary denial count */
87387 if (correct_wcount)
87388 atomic_inc(&inode->i_writecount);
87389 -@@ -1226,6 +1375,7 @@ out:
87390 +@@ -1332,6 +1481,7 @@ out:
87391
87392 mm->total_vm += len >> PAGE_SHIFT;
87393 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
87394 + track_exec_limit(mm, addr, addr + len, vm_flags);
87395 if (vm_flags & VM_LOCKED) {
87396 - /*
87397 - * makes pages present; downgrades, drops, reacquires mmap_sem
87398 -@@ -1248,6 +1398,12 @@ unmap_and_free_vma:
87399 + if (!mlock_vma_pages_range(vma, addr, addr + len))
87400 + mm->locked_vm += (len >> PAGE_SHIFT);
87401 +@@ -1349,6 +1499,12 @@ unmap_and_free_vma:
87402 unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
87403 charged = 0;
87404 free_vma:
87405 @@ -72837,7 +68905,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87406 kmem_cache_free(vm_area_cachep, vma);
87407 unacct_error:
87408 if (charged)
87409 -@@ -1255,6 +1411,44 @@ unacct_error:
87410 +@@ -1356,6 +1512,44 @@ unacct_error:
87411 return error;
87412 }
87413
87414 @@ -72882,7 +68950,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87415 /* Get an address range which is currently unmapped.
87416 * For shmat() with addr=0.
87417 *
87418 -@@ -1281,18 +1475,23 @@ arch_get_unmapped_area(struct file *filp
87419 +@@ -1382,18 +1576,23 @@ arch_get_unmapped_area(struct file *filp
87420 if (flags & MAP_FIXED)
87421 return addr;
87422
87423 @@ -72913,7 +68981,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87424 }
87425
87426 full_search:
87427 -@@ -1303,34 +1502,40 @@ full_search:
87428 +@@ -1404,34 +1603,40 @@ full_search:
87429 * Start a new search - just in case we missed
87430 * some holes.
87431 */
87432 @@ -72965,7 +69033,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87433 mm->free_area_cache = addr;
87434 mm->cached_hole_size = ~0UL;
87435 }
87436 -@@ -1348,7 +1553,7 @@ arch_get_unmapped_area_topdown(struct fi
87437 +@@ -1449,7 +1654,7 @@ arch_get_unmapped_area_topdown(struct fi
87438 {
87439 struct vm_area_struct *vma;
87440 struct mm_struct *mm = current->mm;
87441 @@ -72974,7 +69042,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87442
87443 /* requested length too big for entire address space */
87444 if (len > TASK_SIZE)
87445 -@@ -1357,13 +1562,18 @@ arch_get_unmapped_area_topdown(struct fi
87446 +@@ -1458,13 +1663,18 @@ arch_get_unmapped_area_topdown(struct fi
87447 if (flags & MAP_FIXED)
87448 return addr;
87449
87450 @@ -72997,7 +69065,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87451 }
87452
87453 /* check if free_area_cache is useful for us */
87454 -@@ -1378,7 +1588,7 @@ arch_get_unmapped_area_topdown(struct fi
87455 +@@ -1479,7 +1689,7 @@ arch_get_unmapped_area_topdown(struct fi
87456 /* make sure it can fit in the remaining address space */
87457 if (addr > len) {
87458 vma = find_vma(mm, addr-len);
87459 @@ -73006,7 +69074,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87460 /* remember the address as a hint for next time */
87461 return (mm->free_area_cache = addr-len);
87462 }
87463 -@@ -1395,7 +1605,7 @@ arch_get_unmapped_area_topdown(struct fi
87464 +@@ -1496,7 +1706,7 @@ arch_get_unmapped_area_topdown(struct fi
87465 * return with success:
87466 */
87467 vma = find_vma(mm, addr);
87468 @@ -73015,7 +69083,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87469 /* remember the address as a hint for next time */
87470 return (mm->free_area_cache = addr);
87471
87472 -@@ -1404,8 +1614,8 @@ arch_get_unmapped_area_topdown(struct fi
87473 +@@ -1505,8 +1715,8 @@ arch_get_unmapped_area_topdown(struct fi
87474 mm->cached_hole_size = vma->vm_start - addr;
87475
87476 /* try just below the current vma->vm_start */
87477 @@ -73026,7 +69094,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87478
87479 bottomup:
87480 /*
87481 -@@ -1414,13 +1624,21 @@ bottomup:
87482 +@@ -1515,13 +1725,21 @@ bottomup:
87483 * can happen with large stack limits and large mmap()
87484 * allocations.
87485 */
87486 @@ -73050,7 +69118,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87487 mm->cached_hole_size = ~0UL;
87488
87489 return addr;
87490 -@@ -1429,6 +1647,12 @@ bottomup:
87491 +@@ -1530,6 +1748,12 @@ bottomup:
87492
87493 void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
87494 {
87495 @@ -73063,7 +69131,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87496 /*
87497 * Is this a new hole at the highest possible address?
87498 */
87499 -@@ -1436,8 +1660,10 @@ void arch_unmap_area_topdown(struct mm_s
87500 +@@ -1537,8 +1761,10 @@ void arch_unmap_area_topdown(struct mm_s
87501 mm->free_area_cache = addr;
87502
87503 /* dont allow allocations above current base */
87504 @@ -73075,7 +69143,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87505 }
87506
87507 unsigned long
87508 -@@ -1545,6 +1771,27 @@ out:
87509 +@@ -1646,6 +1872,28 @@ out:
87510 return prev ? prev->vm_next : vma;
87511 }
87512
87513 @@ -73094,7 +69162,8 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87514 + BUG_ON(!vma_m || vma_m->vm_mirror != vma);
87515 + BUG_ON(vma->vm_file != vma_m->vm_file);
87516 + BUG_ON(vma->vm_end - vma->vm_start != vma_m->vm_end - vma_m->vm_start);
87517 -+ BUG_ON(vma->vm_pgoff != vma_m->vm_pgoff || vma->anon_vma != vma_m->anon_vma);
87518 ++ BUG_ON(vma->vm_pgoff != vma_m->vm_pgoff);
87519 ++ BUG_ON(vma->anon_vma != vma_m->anon_vma && vma->anon_vma->root != vma_m->anon_vma->root);
87520 + BUG_ON((vma->vm_flags ^ vma_m->vm_flags) & ~(VM_WRITE | VM_MAYWRITE | VM_ACCOUNT | VM_LOCKED | VM_RESERVED));
87521 + return vma_m;
87522 +}
87523 @@ -73103,23 +69172,23 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87524 /*
87525 * Verify that the stack growth is acceptable and
87526 * update accounting. This is shared with both the
87527 -@@ -1561,6 +1808,7 @@ static int acct_stack_growth(struct vm_a
87528 +@@ -1662,6 +1910,7 @@ static int acct_stack_growth(struct vm_a
87529 return -ENOMEM;
87530
87531 /* Stack limit test */
87532 + gr_learn_resource(current, RLIMIT_STACK, size, 1);
87533 - if (size > rlim[RLIMIT_STACK].rlim_cur)
87534 + if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
87535 return -ENOMEM;
87536
87537 -@@ -1570,6 +1818,7 @@ static int acct_stack_growth(struct vm_a
87538 - unsigned long limit;
87539 +@@ -1672,6 +1921,7 @@ static int acct_stack_growth(struct vm_a
87540 locked = mm->locked_vm + grow;
87541 - limit = rlim[RLIMIT_MEMLOCK].rlim_cur >> PAGE_SHIFT;
87542 + limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
87543 + limit >>= PAGE_SHIFT;
87544 + gr_learn_resource(current, RLIMIT_MEMLOCK, locked << PAGE_SHIFT, 1);
87545 if (locked > limit && !capable(CAP_IPC_LOCK))
87546 return -ENOMEM;
87547 }
87548 -@@ -1600,37 +1849,48 @@ static int acct_stack_growth(struct vm_a
87549 +@@ -1702,37 +1952,48 @@ static int acct_stack_growth(struct vm_a
87550 * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
87551 * vma is the last one with address > vma->vm_end. Have to extend vma.
87552 */
87553 @@ -73149,9 +69218,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87554 + locknext = vma->vm_next && (vma->vm_next->vm_flags & VM_GROWSDOWN);
87555 + if (locknext && anon_vma_prepare(vma->vm_next))
87556 + return -ENOMEM;
87557 - anon_vma_lock(vma);
87558 + vma_lock_anon_vma(vma);
87559 + if (locknext)
87560 -+ anon_vma_lock(vma->vm_next);
87561 ++ vma_lock_anon_vma(vma->vm_next);
87562
87563 /*
87564 * vma->vm_start/vm_end cannot change under us because the caller
87565 @@ -73164,7 +69233,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87566 - if (address < PAGE_ALIGN(address+4))
87567 - address = PAGE_ALIGN(address+4);
87568 - else {
87569 -- anon_vma_unlock(vma);
87570 +- vma_unlock_anon_vma(vma);
87571 - return -ENOMEM;
87572 - }
87573 error = 0;
87574 @@ -73177,16 +69246,16 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87575 unsigned long size, grow;
87576
87577 size = address - vma->vm_start;
87578 -@@ -1643,6 +1903,8 @@ int expand_upwards(struct vm_area_struct
87579 - vma->vm_end = address;
87580 +@@ -1747,6 +2008,8 @@ int expand_upwards(struct vm_area_struct
87581 + }
87582 }
87583 }
87584 + if (locknext)
87585 -+ anon_vma_unlock(vma->vm_next);
87586 - anon_vma_unlock(vma);
87587 ++ vma_unlock_anon_vma(vma->vm_next);
87588 + vma_unlock_anon_vma(vma);
87589 + khugepaged_enter_vma_merge(vma);
87590 return error;
87591 - }
87592 -@@ -1655,6 +1917,8 @@ static int expand_downwards(struct vm_ar
87593 +@@ -1760,6 +2023,8 @@ int expand_downwards(struct vm_area_stru
87594 unsigned long address)
87595 {
87596 int error;
87597 @@ -73195,7 +69264,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87598
87599 /*
87600 * We must make sure the anon_vma is allocated
87601 -@@ -1668,6 +1932,15 @@ static int expand_downwards(struct vm_ar
87602 +@@ -1773,6 +2038,15 @@ int expand_downwards(struct vm_area_stru
87603 if (error)
87604 return error;
87605
87606 @@ -73206,12 +69275,12 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87607 + if (lockprev && anon_vma_prepare(prev))
87608 + return -ENOMEM;
87609 + if (lockprev)
87610 -+ anon_vma_lock(prev);
87611 ++ vma_lock_anon_vma(prev);
87612 +
87613 - anon_vma_lock(vma);
87614 + vma_lock_anon_vma(vma);
87615
87616 /*
87617 -@@ -1677,9 +1950,17 @@ static int expand_downwards(struct vm_ar
87618 +@@ -1782,9 +2056,17 @@ int expand_downwards(struct vm_area_stru
87619 */
87620
87621 /* Somebody else might have raced and expanded it already */
87622 @@ -73230,7 +69299,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87623 size = vma->vm_end - address;
87624 grow = (vma->vm_start - address) >> PAGE_SHIFT;
87625
87626 -@@ -1689,10 +1970,22 @@ static int expand_downwards(struct vm_ar
87627 +@@ -1794,11 +2076,22 @@ int expand_downwards(struct vm_area_stru
87628 if (!error) {
87629 vma->vm_start = address;
87630 vma->vm_pgoff -= grow;
87631 @@ -73243,17 +69312,17 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87632 + }
87633 +#endif
87634 +
87635 -+
87636 + perf_event_mmap(vma);
87637 }
87638 }
87639 }
87640 - anon_vma_unlock(vma);
87641 + vma_unlock_anon_vma(vma);
87642 + if (lockprev)
87643 -+ anon_vma_unlock(prev);
87644 ++ vma_unlock_anon_vma(prev);
87645 + khugepaged_enter_vma_merge(vma);
87646 return error;
87647 }
87648 -
87649 -@@ -1768,6 +2061,13 @@ static void remove_vma_list(struct mm_st
87650 +@@ -1868,6 +2161,13 @@ static void remove_vma_list(struct mm_st
87651 do {
87652 long nrpages = vma_pages(vma);
87653
87654 @@ -73267,7 +69336,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87655 mm->total_vm -= nrpages;
87656 vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
87657 vma = remove_vma(vma);
87658 -@@ -1813,6 +2113,16 @@ detach_vmas_to_be_unmapped(struct mm_str
87659 +@@ -1913,6 +2213,16 @@ detach_vmas_to_be_unmapped(struct mm_str
87660 insertion_point = (prev ? &prev->vm_next : &mm->mmap);
87661 vma->vm_prev = NULL;
87662 do {
87663 @@ -73284,9 +69353,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87664 rb_erase(&vma->vm_rb, &mm->mm_rb);
87665 mm->map_count--;
87666 tail_vma = vma;
87667 -@@ -1840,10 +2150,25 @@ int split_vma(struct mm_struct * mm, str
87668 - struct mempolicy *pol;
87669 +@@ -1941,14 +2251,33 @@ static int __split_vma(struct mm_struct
87670 struct vm_area_struct *new;
87671 + int err = -ENOMEM;
87672
87673 +#ifdef CONFIG_PAX_SEGMEXEC
87674 + struct vm_area_struct *vma_m, *new_m = NULL;
87675 @@ -73299,27 +69368,18 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87676
87677 +#ifdef CONFIG_PAX_SEGMEXEC
87678 + vma_m = pax_find_mirror_vma(vma);
87679 -+
87680 -+ if (mm->pax_flags & MF_PAX_SEGMEXEC) {
87681 -+ BUG_ON(vma->vm_end > SEGMEXEC_TASK_SIZE);
87682 -+ if (mm->map_count >= sysctl_max_map_count-1)
87683 -+ return -ENOMEM;
87684 -+ } else
87685 +#endif
87686 +
87687 - if (mm->map_count >= sysctl_max_map_count)
87688 - return -ENOMEM;
87689 -
87690 -@@ -1851,6 +2176,16 @@ int split_vma(struct mm_struct * mm, str
87691 + new = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
87692 if (!new)
87693 - return -ENOMEM;
87694 + goto out_err;
87695
87696 +#ifdef CONFIG_PAX_SEGMEXEC
87697 + if (vma_m) {
87698 + new_m = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
87699 + if (!new_m) {
87700 + kmem_cache_free(vm_area_cachep, new);
87701 -+ return -ENOMEM;
87702 ++ goto out_err;
87703 + }
87704 + }
87705 +#endif
87706 @@ -73327,13 +69387,14 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87707 /* most fields are the same, copy all, and then fixup */
87708 *new = *vma;
87709
87710 -@@ -1861,8 +2196,29 @@ int split_vma(struct mm_struct * mm, str
87711 +@@ -1961,6 +2290,22 @@ static int __split_vma(struct mm_struct
87712 new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
87713 }
87714
87715 +#ifdef CONFIG_PAX_SEGMEXEC
87716 + if (vma_m) {
87717 + *new_m = *vma_m;
87718 ++ INIT_LIST_HEAD(&new_m->anon_vma_chain);
87719 + new_m->vm_mirror = new;
87720 + new->vm_mirror = new_m;
87721 +
87722 @@ -73348,21 +69409,16 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87723 +
87724 pol = mpol_dup(vma_policy(vma));
87725 if (IS_ERR(pol)) {
87726 -+
87727 -+#ifdef CONFIG_PAX_SEGMEXEC
87728 -+ if (new_m)
87729 -+ kmem_cache_free(vm_area_cachep, new_m);
87730 -+#endif
87731 -+
87732 - kmem_cache_free(vm_area_cachep, new);
87733 - return PTR_ERR(pol);
87734 - }
87735 -@@ -1883,6 +2239,28 @@ int split_vma(struct mm_struct * mm, str
87736 + err = PTR_ERR(pol);
87737 +@@ -1986,6 +2331,42 @@ static int __split_vma(struct mm_struct
87738 else
87739 - vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
87740 + err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
87741
87742 +#ifdef CONFIG_PAX_SEGMEXEC
87743 -+ if (vma_m) {
87744 ++ if (!err && vma_m) {
87745 ++ if (anon_vma_clone(new_m, vma_m))
87746 ++ goto out_free_mpol;
87747 ++
87748 + mpol_get(pol);
87749 + vma_set_policy(new_m, pol);
87750 +
87751 @@ -73376,23 +69432,70 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87752 + new_m->vm_ops->open(new_m);
87753 +
87754 + if (new_below)
87755 -+ vma_adjust(vma_m, addr_m, vma_m->vm_end, vma_m->vm_pgoff +
87756 ++ err = vma_adjust(vma_m, addr_m, vma_m->vm_end, vma_m->vm_pgoff +
87757 + ((addr_m - new_m->vm_start) >> PAGE_SHIFT), new_m);
87758 + else
87759 -+ vma_adjust(vma_m, vma_m->vm_start, addr_m, vma_m->vm_pgoff, new_m);
87760 ++ err = vma_adjust(vma_m, vma_m->vm_start, addr_m, vma_m->vm_pgoff, new_m);
87761 ++
87762 ++ if (err) {
87763 ++ if (new_m->vm_ops && new_m->vm_ops->close)
87764 ++ new_m->vm_ops->close(new_m);
87765 ++ if (new_m->vm_file) {
87766 ++ if (vma_m->vm_flags & VM_EXECUTABLE)
87767 ++ removed_exe_file_vma(mm);
87768 ++ fput(new_m->vm_file);
87769 ++ }
87770 ++ mpol_put(pol);
87771 ++ }
87772 + }
87773 +#endif
87774 +
87775 - return 0;
87776 - }
87777 + /* Success. */
87778 + if (!err)
87779 + return 0;
87780 +@@ -1998,10 +2379,18 @@ static int __split_vma(struct mm_struct
87781 + removed_exe_file_vma(mm);
87782 + fput(new->vm_file);
87783 + }
87784 +- unlink_anon_vmas(new);
87785 + out_free_mpol:
87786 + mpol_put(pol);
87787 + out_free_vma:
87788 ++
87789 ++#ifdef CONFIG_PAX_SEGMEXEC
87790 ++ if (new_m) {
87791 ++ unlink_anon_vmas(new_m);
87792 ++ kmem_cache_free(vm_area_cachep, new_m);
87793 ++ }
87794 ++#endif
87795 ++
87796 ++ unlink_anon_vmas(new);
87797 + kmem_cache_free(vm_area_cachep, new);
87798 + out_err:
87799 + return err;
87800 +@@ -2014,6 +2403,15 @@ static int __split_vma(struct mm_struct
87801 + int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
87802 + unsigned long addr, int new_below)
87803 + {
87804 ++
87805 ++#ifdef CONFIG_PAX_SEGMEXEC
87806 ++ if (mm->pax_flags & MF_PAX_SEGMEXEC) {
87807 ++ BUG_ON(vma->vm_end > SEGMEXEC_TASK_SIZE);
87808 ++ if (mm->map_count >= sysctl_max_map_count-1)
87809 ++ return -ENOMEM;
87810 ++ } else
87811 ++#endif
87812 ++
87813 + if (mm->map_count >= sysctl_max_map_count)
87814 + return -ENOMEM;
87815
87816 -@@ -1891,11 +2269,30 @@ int split_vma(struct mm_struct * mm, str
87817 +@@ -2025,11 +2423,30 @@ int split_vma(struct mm_struct *mm, stru
87818 * work. This now handles partial unmappings.
87819 * Jeremy Fitzhardinge <jeremy@××××.org>
87820 */
87821 +#ifdef CONFIG_PAX_SEGMEXEC
87822 -+int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
87823 -+{
87824 + int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
87825 + {
87826 + int ret = __do_munmap(mm, start, len);
87827 + if (ret || !(mm->pax_flags & MF_PAX_SEGMEXEC))
87828 + return ret;
87829 @@ -73402,9 +69505,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87830 +
87831 +int __do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
87832 +#else
87833 - int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
87834 ++int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
87835 +#endif
87836 - {
87837 ++{
87838 unsigned long end;
87839 struct vm_area_struct *vma, *prev, *last;
87840
87841 @@ -73417,7 +69520,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87842 if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
87843 return -EINVAL;
87844
87845 -@@ -1959,6 +2356,8 @@ int do_munmap(struct mm_struct *mm, unsi
87846 +@@ -2104,6 +2521,8 @@ int do_munmap(struct mm_struct *mm, unsi
87847 /* Fix up all other VM information */
87848 remove_vma_list(mm, vma);
87849
87850 @@ -73426,7 +69529,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87851 return 0;
87852 }
87853
87854 -@@ -1971,22 +2370,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a
87855 +@@ -2116,22 +2535,18 @@ SYSCALL_DEFINE2(munmap, unsigned long, a
87856
87857 profile_munmap(addr);
87858
87859 @@ -73455,7 +69558,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87860 /*
87861 * this is really a simplified "do_mmap". it only handles
87862 * anonymous maps. eventually we may be able to do some
87863 -@@ -2000,6 +2395,7 @@ unsigned long do_brk(unsigned long addr,
87864 +@@ -2145,6 +2560,7 @@ unsigned long do_brk(unsigned long addr,
87865 struct rb_node ** rb_link, * rb_parent;
87866 pgoff_t pgoff = addr >> PAGE_SHIFT;
87867 int error;
87868 @@ -73463,7 +69566,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87869
87870 len = PAGE_ALIGN(len);
87871 if (!len)
87872 -@@ -2011,16 +2407,30 @@ unsigned long do_brk(unsigned long addr,
87873 +@@ -2156,16 +2572,30 @@ unsigned long do_brk(unsigned long addr,
87874
87875 flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
87876
87877 @@ -73493,9 +69596,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87878 - locked = len >> PAGE_SHIFT;
87879 + locked = charged;
87880 locked += mm->locked_vm;
87881 - lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
87882 + lock_limit = rlimit(RLIMIT_MEMLOCK);
87883 lock_limit >>= PAGE_SHIFT;
87884 -@@ -2037,22 +2447,22 @@ unsigned long do_brk(unsigned long addr,
87885 +@@ -2182,22 +2612,22 @@ unsigned long do_brk(unsigned long addr,
87886 /*
87887 * Clear old maps. this also does some error checking for us
87888 */
87889 @@ -73522,7 +69625,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87890 return -ENOMEM;
87891
87892 /* Can we just expand an old private anonymous mapping? */
87893 -@@ -2066,7 +2476,7 @@ unsigned long do_brk(unsigned long addr,
87894 +@@ -2211,7 +2641,7 @@ unsigned long do_brk(unsigned long addr,
87895 */
87896 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
87897 if (!vma) {
87898 @@ -73531,10 +69634,10 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87899 return -ENOMEM;
87900 }
87901
87902 -@@ -2078,11 +2488,12 @@ unsigned long do_brk(unsigned long addr,
87903 - vma->vm_page_prot = vm_get_page_prot(flags);
87904 +@@ -2225,11 +2655,12 @@ unsigned long do_brk(unsigned long addr,
87905 vma_link(mm, vma, prev, rb_link, rb_parent);
87906 out:
87907 + perf_event_mmap(vma);
87908 - mm->total_vm += len >> PAGE_SHIFT;
87909 + mm->total_vm += charged;
87910 if (flags & VM_LOCKED) {
87911 @@ -73546,7 +69649,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87912 return addr;
87913 }
87914
87915 -@@ -2129,8 +2540,10 @@ void exit_mmap(struct mm_struct *mm)
87916 +@@ -2276,8 +2707,10 @@ void exit_mmap(struct mm_struct *mm)
87917 * Walk the list again, actually closing and freeing it,
87918 * with preemption enabled, without holding any MM locks.
87919 */
87920 @@ -73558,7 +69661,7 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87921
87922 BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);
87923 }
87924 -@@ -2144,6 +2557,10 @@ int insert_vm_struct(struct mm_struct *
87925 +@@ -2291,6 +2724,13 @@ int insert_vm_struct(struct mm_struct *
87926 struct vm_area_struct * __vma, * prev;
87927 struct rb_node ** rb_link, * rb_parent;
87928
87929 @@ -73566,10 +69669,13 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87930 + struct vm_area_struct *vma_m = NULL;
87931 +#endif
87932 +
87933 ++ if (security_file_mmap(NULL, 0, 0, 0, vma->vm_start, 1))
87934 ++ return -EPERM;
87935 ++
87936 /*
87937 * The vm_pgoff of a purely anonymous vma should be irrelevant
87938 * until its first write fault, when page's anon_vma and index
87939 -@@ -2166,7 +2583,22 @@ int insert_vm_struct(struct mm_struct *
87940 +@@ -2313,7 +2753,22 @@ int insert_vm_struct(struct mm_struct *
87941 if ((vma->vm_flags & VM_ACCOUNT) &&
87942 security_vm_enough_memory_mm(mm, vma_pages(vma)))
87943 return -ENOMEM;
87944 @@ -73586,13 +69692,13 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87945 +
87946 +#ifdef CONFIG_PAX_SEGMEXEC
87947 + if (vma_m)
87948 -+ pax_mirror_vma(vma_m, vma);
87949 ++ BUG_ON(pax_mirror_vma(vma_m, vma));
87950 +#endif
87951 +
87952 return 0;
87953 }
87954
87955 -@@ -2184,6 +2616,8 @@ struct vm_area_struct *copy_vma(struct v
87956 +@@ -2331,6 +2786,8 @@ struct vm_area_struct *copy_vma(struct v
87957 struct rb_node **rb_link, *rb_parent;
87958 struct mempolicy *pol;
87959
87960 @@ -73601,12 +69707,12 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87961 /*
87962 * If anonymous vma has not yet been faulted, update new pgoff
87963 * to match new location, to increase its chance of merging.
87964 -@@ -2227,6 +2661,35 @@ struct vm_area_struct *copy_vma(struct v
87965 - return new_vma;
87966 +@@ -2381,6 +2838,39 @@ struct vm_area_struct *copy_vma(struct v
87967 + return NULL;
87968 }
87969
87970 +#ifdef CONFIG_PAX_SEGMEXEC
87971 -+void pax_mirror_vma(struct vm_area_struct *vma_m, struct vm_area_struct *vma)
87972 ++long pax_mirror_vma(struct vm_area_struct *vma_m, struct vm_area_struct *vma)
87973 +{
87974 + struct vm_area_struct *prev_m;
87975 + struct rb_node **rb_link_m, *rb_parent_m;
87976 @@ -73616,6 +69722,9 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87977 + BUG_ON(vma->vm_mirror || vma_m->vm_mirror);
87978 + BUG_ON(!mpol_equal(vma_policy(vma), vma_policy(vma_m)));
87979 + *vma_m = *vma;
87980 ++ INIT_LIST_HEAD(&vma_m->anon_vma_chain);
87981 ++ if (anon_vma_clone(vma_m, vma))
87982 ++ return -ENOMEM;
87983 + pol_m = vma_policy(vma_m);
87984 + mpol_get(pol_m);
87985 + vma_set_policy(vma_m, pol_m);
87986 @@ -73631,22 +69740,23 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
87987 + vma_link(vma->vm_mm, vma_m, prev_m, rb_link_m, rb_parent_m);
87988 + vma_m->vm_mirror = vma;
87989 + vma->vm_mirror = vma_m;
87990 ++ return 0;
87991 +}
87992 +#endif
87993 +
87994 /*
87995 * Return true if the calling process may expand its vm space by the passed
87996 * number of pages
87997 -@@ -2237,7 +2700,7 @@ int may_expand_vm(struct mm_struct *mm,
87998 +@@ -2391,7 +2881,7 @@ int may_expand_vm(struct mm_struct *mm,
87999 unsigned long lim;
88000
88001 - lim = current->signal->rlim[RLIMIT_AS].rlim_cur >> PAGE_SHIFT;
88002 + lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
88003 -
88004 + gr_learn_resource(current, RLIMIT_AS, (cur + npages) << PAGE_SHIFT, 1);
88005 if (cur + npages > lim)
88006 return 0;
88007 return 1;
88008 -@@ -2307,6 +2770,22 @@ int install_special_mapping(struct mm_st
88009 +@@ -2462,6 +2952,22 @@ int install_special_mapping(struct mm_st
88010 vma->vm_start = addr;
88011 vma->vm_end = addr + len;
88012
88013 @@ -73669,10 +69779,10 @@ diff -urNp linux-2.6.32.48/mm/mmap.c linux-2.6.32.48/mm/mmap.c
88014 vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND;
88015 vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
88016
88017 -diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88018 ---- linux-2.6.32.48/mm/mprotect.c 2011-11-12 12:44:30.000000000 -0500
88019 -+++ linux-2.6.32.48/mm/mprotect.c 2011-11-12 12:46:47.000000000 -0500
88020 -@@ -24,10 +24,16 @@
88021 +diff -urNp linux-3.0.8/mm/mprotect.c linux-3.0.8/mm/mprotect.c
88022 +--- linux-3.0.8/mm/mprotect.c 2011-07-21 22:17:23.000000000 -0400
88023 ++++ linux-3.0.8/mm/mprotect.c 2011-08-23 21:48:14.000000000 -0400
88024 +@@ -23,10 +23,16 @@
88025 #include <linux/mmu_notifier.h>
88026 #include <linux/migrate.h>
88027 #include <linux/perf_event.h>
88028 @@ -73689,7 +69799,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88029
88030 #ifndef pgprot_modify
88031 static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
88032 -@@ -132,6 +138,48 @@ static void change_protection(struct vm_
88033 +@@ -141,6 +147,48 @@ static void change_protection(struct vm_
88034 flush_tlb_range(vma, start, end);
88035 }
88036
88037 @@ -73699,7 +69809,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88038 +{
88039 + unsigned long oldlimit, newlimit = 0UL;
88040 +
88041 -+ if (!(mm->pax_flags & MF_PAX_PAGEEXEC) || nx_enabled)
88042 ++ if (!(mm->pax_flags & MF_PAX_PAGEEXEC) || (__supported_pte_mask & _PAGE_NX))
88043 + return;
88044 +
88045 + spin_lock(&mm->page_table_lock);
88046 @@ -73738,7 +69848,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88047 int
88048 mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
88049 unsigned long start, unsigned long end, unsigned long newflags)
88050 -@@ -144,11 +192,29 @@ mprotect_fixup(struct vm_area_struct *vm
88051 +@@ -153,11 +201,29 @@ mprotect_fixup(struct vm_area_struct *vm
88052 int error;
88053 int dirty_accountable = 0;
88054
88055 @@ -73768,7 +69878,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88056 /*
88057 * If we make a private mapping writable we increase our commit;
88058 * but (without finer accounting) cannot reduce our commit if we
88059 -@@ -165,6 +231,38 @@ mprotect_fixup(struct vm_area_struct *vm
88060 +@@ -174,6 +240,42 @@ mprotect_fixup(struct vm_area_struct *vm
88061 }
88062 }
88063
88064 @@ -73799,7 +69909,11 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88065 + goto fail;
88066 + }
88067 + vma->vm_flags = newflags;
88068 -+ pax_mirror_vma(vma_m, vma);
88069 ++ error = pax_mirror_vma(vma_m, vma);
88070 ++ if (error) {
88071 ++ vma->vm_flags = oldflags;
88072 ++ goto fail;
88073 ++ }
88074 + }
88075 + }
88076 +#endif
88077 @@ -73807,7 +69921,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88078 /*
88079 * First try to merge with previous and/or next vma.
88080 */
88081 -@@ -195,9 +293,21 @@ success:
88082 +@@ -204,9 +306,21 @@ success:
88083 * vm_flags and vm_page_prot are protected by the mmap_sem
88084 * held in write mode.
88085 */
88086 @@ -73830,7 +69944,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88087
88088 if (vma_wants_writenotify(vma)) {
88089 vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED);
88090 -@@ -239,6 +349,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88091 +@@ -248,6 +362,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88092 end = start + len;
88093 if (end <= start)
88094 return -ENOMEM;
88095 @@ -73848,7 +69962,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88096 if (!arch_validate_prot(prot))
88097 return -EINVAL;
88098
88099 -@@ -246,7 +367,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88100 +@@ -255,7 +380,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88101 /*
88102 * Does the application expect PROT_READ to imply PROT_EXEC:
88103 */
88104 @@ -73857,7 +69971,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88105 prot |= PROT_EXEC;
88106
88107 vm_flags = calc_vm_prot_bits(prot);
88108 -@@ -278,6 +399,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88109 +@@ -287,6 +412,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88110 if (start > vma->vm_start)
88111 prev = vma;
88112
88113 @@ -73869,7 +69983,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88114 for (nstart = start ; ; ) {
88115 unsigned long newflags;
88116
88117 -@@ -287,6 +413,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88118 +@@ -296,6 +426,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88119
88120 /* newflags >> 4 shift VM_MAY% in place of VM_% */
88121 if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) {
88122 @@ -73884,7 +69998,7 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88123 error = -EACCES;
88124 goto out;
88125 }
88126 -@@ -301,6 +435,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88127 +@@ -310,6 +448,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long,
88128 error = mprotect_fixup(vma, &prev, nstart, tmp, newflags);
88129 if (error)
88130 goto out;
88131 @@ -73894,23 +70008,23 @@ diff -urNp linux-2.6.32.48/mm/mprotect.c linux-2.6.32.48/mm/mprotect.c
88132 nstart = tmp;
88133
88134 if (nstart < prev->vm_end)
88135 -diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
88136 ---- linux-2.6.32.48/mm/mremap.c 2011-11-12 12:44:30.000000000 -0500
88137 -+++ linux-2.6.32.48/mm/mremap.c 2011-11-12 12:46:47.000000000 -0500
88138 -@@ -112,6 +112,12 @@ static void move_ptes(struct vm_area_str
88139 +diff -urNp linux-3.0.8/mm/mremap.c linux-3.0.8/mm/mremap.c
88140 +--- linux-3.0.8/mm/mremap.c 2011-07-21 22:17:23.000000000 -0400
88141 ++++ linux-3.0.8/mm/mremap.c 2011-08-23 21:47:56.000000000 -0400
88142 +@@ -113,6 +113,12 @@ static void move_ptes(struct vm_area_str
88143 continue;
88144 pte = ptep_clear_flush(vma, old_addr, old_pte);
88145 pte = move_pte(pte, new_vma->vm_page_prot, old_addr, new_addr);
88146 +
88147 +#ifdef CONFIG_ARCH_TRACK_EXEC_LIMIT
88148 -+ if (!nx_enabled && (new_vma->vm_flags & (VM_PAGEEXEC | VM_EXEC)) == VM_PAGEEXEC)
88149 ++ if (!(__supported_pte_mask & _PAGE_NX) && (new_vma->vm_flags & (VM_PAGEEXEC | VM_EXEC)) == VM_PAGEEXEC)
88150 + pte = pte_exprotect(pte);
88151 +#endif
88152 +
88153 set_pte_at(mm, new_addr, new_pte, pte);
88154 }
88155
88156 -@@ -271,6 +277,11 @@ static struct vm_area_struct *vma_to_res
88157 +@@ -272,6 +278,11 @@ static struct vm_area_struct *vma_to_res
88158 if (is_vm_hugetlb_page(vma))
88159 goto Einval;
88160
88161 @@ -73922,7 +70036,7 @@ diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
88162 /* We can't remap across vm area boundaries */
88163 if (old_len > vma->vm_end - addr)
88164 goto Efault;
88165 -@@ -327,20 +338,25 @@ static unsigned long mremap_to(unsigned
88166 +@@ -328,20 +339,25 @@ static unsigned long mremap_to(unsigned
88167 unsigned long ret = -EINVAL;
88168 unsigned long charged = 0;
88169 unsigned long map_flags;
88170 @@ -73953,7 +70067,7 @@ diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
88171 goto out;
88172
88173 ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1);
88174 -@@ -412,6 +428,7 @@ unsigned long do_mremap(unsigned long ad
88175 +@@ -413,6 +429,7 @@ unsigned long do_mremap(unsigned long ad
88176 struct vm_area_struct *vma;
88177 unsigned long ret = -EINVAL;
88178 unsigned long charged = 0;
88179 @@ -73961,7 +70075,7 @@ diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
88180
88181 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
88182 goto out;
88183 -@@ -430,6 +447,17 @@ unsigned long do_mremap(unsigned long ad
88184 +@@ -431,6 +448,17 @@ unsigned long do_mremap(unsigned long ad
88185 if (!new_len)
88186 goto out;
88187
88188 @@ -73979,7 +70093,7 @@ diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
88189 if (flags & MREMAP_FIXED) {
88190 if (flags & MREMAP_MAYMOVE)
88191 ret = mremap_to(addr, old_len, new_addr, new_len);
88192 -@@ -476,6 +504,7 @@ unsigned long do_mremap(unsigned long ad
88193 +@@ -480,6 +508,7 @@ unsigned long do_mremap(unsigned long ad
88194 addr + new_len);
88195 }
88196 ret = addr;
88197 @@ -73987,7 +70101,7 @@ diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
88198 goto out;
88199 }
88200 }
88201 -@@ -502,7 +531,13 @@ unsigned long do_mremap(unsigned long ad
88202 +@@ -506,7 +535,13 @@ unsigned long do_mremap(unsigned long ad
88203 ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1);
88204 if (ret)
88205 goto out;
88206 @@ -74001,10 +70115,46 @@ diff -urNp linux-2.6.32.48/mm/mremap.c linux-2.6.32.48/mm/mremap.c
88207 }
88208 out:
88209 if (ret & ~PAGE_MASK)
88210 -diff -urNp linux-2.6.32.48/mm/nommu.c linux-2.6.32.48/mm/nommu.c
88211 ---- linux-2.6.32.48/mm/nommu.c 2011-11-12 12:44:30.000000000 -0500
88212 -+++ linux-2.6.32.48/mm/nommu.c 2011-11-12 12:46:47.000000000 -0500
88213 -@@ -67,7 +67,6 @@ int sysctl_overcommit_memory = OVERCOMMI
88214 +diff -urNp linux-3.0.8/mm/nobootmem.c linux-3.0.8/mm/nobootmem.c
88215 +--- linux-3.0.8/mm/nobootmem.c 2011-07-21 22:17:23.000000000 -0400
88216 ++++ linux-3.0.8/mm/nobootmem.c 2011-08-23 21:47:56.000000000 -0400
88217 +@@ -110,19 +110,30 @@ static void __init __free_pages_memory(u
88218 + unsigned long __init free_all_memory_core_early(int nodeid)
88219 + {
88220 + int i;
88221 +- u64 start, end;
88222 ++ u64 start, end, startrange, endrange;
88223 + unsigned long count = 0;
88224 +- struct range *range = NULL;
88225 ++ struct range *range = NULL, rangerange = { 0, 0 };
88226 + int nr_range;
88227 +
88228 + nr_range = get_free_all_memory_range(&range, nodeid);
88229 ++ startrange = __pa(range) >> PAGE_SHIFT;
88230 ++ endrange = (__pa(range + nr_range) - 1) >> PAGE_SHIFT;
88231 +
88232 + for (i = 0; i < nr_range; i++) {
88233 + start = range[i].start;
88234 + end = range[i].end;
88235 ++ if (start <= endrange && startrange < end) {
88236 ++ BUG_ON(rangerange.start | rangerange.end);
88237 ++ rangerange = range[i];
88238 ++ continue;
88239 ++ }
88240 + count += end - start;
88241 + __free_pages_memory(start, end);
88242 + }
88243 ++ start = rangerange.start;
88244 ++ end = rangerange.end;
88245 ++ count += end - start;
88246 ++ __free_pages_memory(start, end);
88247 +
88248 + return count;
88249 + }
88250 +diff -urNp linux-3.0.8/mm/nommu.c linux-3.0.8/mm/nommu.c
88251 +--- linux-3.0.8/mm/nommu.c 2011-07-21 22:17:23.000000000 -0400
88252 ++++ linux-3.0.8/mm/nommu.c 2011-08-23 21:47:56.000000000 -0400
88253 +@@ -63,7 +63,6 @@ int sysctl_overcommit_memory = OVERCOMMI
88254 int sysctl_overcommit_ratio = 50; /* default is 50% */
88255 int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
88256 int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
88257 @@ -74012,7 +70162,7 @@ diff -urNp linux-2.6.32.48/mm/nommu.c linux-2.6.32.48/mm/nommu.c
88258
88259 atomic_long_t mmap_pages_allocated;
88260
88261 -@@ -761,15 +760,6 @@ struct vm_area_struct *find_vma(struct m
88262 +@@ -826,15 +825,6 @@ struct vm_area_struct *find_vma(struct m
88263 EXPORT_SYMBOL(find_vma);
88264
88265 /*
88266 @@ -74028,10 +70178,18 @@ diff -urNp linux-2.6.32.48/mm/nommu.c linux-2.6.32.48/mm/nommu.c
88267 * expand a stack to a given address
88268 * - not supported under NOMMU conditions
88269 */
88270 -diff -urNp linux-2.6.32.48/mm/page_alloc.c linux-2.6.32.48/mm/page_alloc.c
88271 ---- linux-2.6.32.48/mm/page_alloc.c 2011-11-12 12:44:30.000000000 -0500
88272 -+++ linux-2.6.32.48/mm/page_alloc.c 2011-11-12 12:46:47.000000000 -0500
88273 -@@ -289,7 +289,7 @@ out:
88274 +@@ -1554,6 +1544,7 @@ int split_vma(struct mm_struct *mm, stru
88275 +
88276 + /* most fields are the same, copy all, and then fixup */
88277 + *new = *vma;
88278 ++ INIT_LIST_HEAD(&new->anon_vma_chain);
88279 + *region = *vma->vm_region;
88280 + new->vm_region = region;
88281 +
88282 +diff -urNp linux-3.0.8/mm/page_alloc.c linux-3.0.8/mm/page_alloc.c
88283 +--- linux-3.0.8/mm/page_alloc.c 2011-10-24 08:05:30.000000000 -0400
88284 ++++ linux-3.0.8/mm/page_alloc.c 2011-10-25 09:15:11.000000000 -0400
88285 +@@ -340,7 +340,7 @@ out:
88286 * This usage means that zero-order pages may not be compound.
88287 */
88288
88289 @@ -74040,18 +70198,18 @@ diff -urNp linux-2.6.32.48/mm/page_alloc.c linux-2.6.32.48/mm/page_alloc.c
88290 {
88291 __free_pages_ok(page, compound_order(page));
88292 }
88293 -@@ -587,6 +587,10 @@ static void __free_pages_ok(struct page
88294 +@@ -653,6 +653,10 @@ static bool free_pages_prepare(struct pa
88295 + int i;
88296 int bad = 0;
88297 - int wasMlocked = __TestClearPageMlocked(page);
88298
88299 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
88300 + unsigned long index = 1UL << order;
88301 +#endif
88302 +
88303 + trace_mm_page_free_direct(page, order);
88304 kmemcheck_free_shadow(page, order);
88305
88306 - for (i = 0 ; i < (1 << order) ; ++i)
88307 -@@ -599,6 +603,12 @@ static void __free_pages_ok(struct page
88308 +@@ -668,6 +672,12 @@ static bool free_pages_prepare(struct pa
88309 debug_check_no_obj_freed(page_address(page),
88310 PAGE_SIZE << order);
88311 }
88312 @@ -74064,7 +70222,7 @@ diff -urNp linux-2.6.32.48/mm/page_alloc.c linux-2.6.32.48/mm/page_alloc.c
88313 arch_free_page(page, order);
88314 kernel_map_pages(page, 1 << order, 0);
88315
88316 -@@ -702,8 +712,10 @@ static int prep_new_page(struct page *pa
88317 +@@ -783,8 +793,10 @@ static int prep_new_page(struct page *pa
88318 arch_alloc_page(page, order);
88319 kernel_map_pages(page, 1 << order, 1);
88320
88321 @@ -74075,40 +70233,33 @@ diff -urNp linux-2.6.32.48/mm/page_alloc.c linux-2.6.32.48/mm/page_alloc.c
88322
88323 if (order && (gfp_flags & __GFP_COMP))
88324 prep_compound_page(page, order);
88325 -@@ -1097,6 +1109,11 @@ static void free_hot_cold_page(struct pa
88326 - debug_check_no_locks_freed(page_address(page), PAGE_SIZE);
88327 - debug_check_no_obj_freed(page_address(page), PAGE_SIZE);
88328 - }
88329 -+
88330 -+#ifdef CONFIG_PAX_MEMORY_SANITIZE
88331 -+ sanitize_highpage(page);
88332 -+#endif
88333 -+
88334 - arch_free_page(page, 0);
88335 - kernel_map_pages(page, 1, 0);
88336 -
88337 -@@ -2179,6 +2196,8 @@ void show_free_areas(void)
88338 +@@ -2557,6 +2569,8 @@ void show_free_areas(unsigned int filter
88339 int cpu;
88340 struct zone *zone;
88341
88342 + pax_track_stack();
88343 +
88344 for_each_populated_zone(zone) {
88345 - show_node(zone);
88346 - printk("%s per-cpu:\n", zone->name);
88347 -@@ -3736,7 +3755,7 @@ static void __init setup_usemap(struct p
88348 - zone->pageblock_flags = alloc_bootmem_node(pgdat, usemapsize);
88349 - }
88350 - #else
88351 --static void inline setup_usemap(struct pglist_data *pgdat,
88352 -+static inline void setup_usemap(struct pglist_data *pgdat,
88353 - struct zone *zone, unsigned long zonesize) {}
88354 - #endif /* CONFIG_SPARSEMEM */
88355 -
88356 -diff -urNp linux-2.6.32.48/mm/percpu.c linux-2.6.32.48/mm/percpu.c
88357 ---- linux-2.6.32.48/mm/percpu.c 2011-11-12 12:44:30.000000000 -0500
88358 -+++ linux-2.6.32.48/mm/percpu.c 2011-11-12 12:46:47.000000000 -0500
88359 -@@ -115,7 +115,7 @@ static unsigned int pcpu_first_unit_cpu
88360 + if (skip_free_areas_node(filter, zone_to_nid(zone)))
88361 + continue;
88362 +@@ -3368,7 +3382,13 @@ static int pageblock_is_reserved(unsigne
88363 + unsigned long pfn;
88364 +
88365 + for (pfn = start_pfn; pfn < end_pfn; pfn++) {
88366 ++#ifdef CONFIG_X86_32
88367 ++ /* boot failures in VMware 8 on 32bit vanilla since
88368 ++ this change */
88369 ++ if (!pfn_valid(pfn) || PageReserved(pfn_to_page(pfn)))
88370 ++#else
88371 + if (!pfn_valid_within(pfn) || PageReserved(pfn_to_page(pfn)))
88372 ++#endif
88373 + return 1;
88374 + }
88375 + return 0;
88376 +diff -urNp linux-3.0.8/mm/percpu.c linux-3.0.8/mm/percpu.c
88377 +--- linux-3.0.8/mm/percpu.c 2011-07-21 22:17:23.000000000 -0400
88378 ++++ linux-3.0.8/mm/percpu.c 2011-08-23 21:47:56.000000000 -0400
88379 +@@ -121,7 +121,7 @@ static unsigned int pcpu_first_unit_cpu
88380 static unsigned int pcpu_last_unit_cpu __read_mostly;
88381
88382 /* the address of the first chunk which starts with the kernel static area */
88383 @@ -74117,10 +70268,34 @@ diff -urNp linux-2.6.32.48/mm/percpu.c linux-2.6.32.48/mm/percpu.c
88384 EXPORT_SYMBOL_GPL(pcpu_base_addr);
88385
88386 static const int *pcpu_unit_map __read_mostly; /* cpu -> unit */
88387 -diff -urNp linux-2.6.32.48/mm/rmap.c linux-2.6.32.48/mm/rmap.c
88388 ---- linux-2.6.32.48/mm/rmap.c 2009-12-02 22:51:21.000000000 -0500
88389 -+++ linux-2.6.32.48/mm/rmap.c 2011-11-12 12:46:47.000000000 -0500
88390 -@@ -121,6 +121,17 @@ int anon_vma_prepare(struct vm_area_stru
88391 +diff -urNp linux-3.0.8/mm/rmap.c linux-3.0.8/mm/rmap.c
88392 +--- linux-3.0.8/mm/rmap.c 2011-07-21 22:17:23.000000000 -0400
88393 ++++ linux-3.0.8/mm/rmap.c 2011-08-23 21:47:56.000000000 -0400
88394 +@@ -153,6 +153,10 @@ int anon_vma_prepare(struct vm_area_stru
88395 + struct anon_vma *anon_vma = vma->anon_vma;
88396 + struct anon_vma_chain *avc;
88397 +
88398 ++#ifdef CONFIG_PAX_SEGMEXEC
88399 ++ struct anon_vma_chain *avc_m = NULL;
88400 ++#endif
88401 ++
88402 + might_sleep();
88403 + if (unlikely(!anon_vma)) {
88404 + struct mm_struct *mm = vma->vm_mm;
88405 +@@ -162,6 +166,12 @@ int anon_vma_prepare(struct vm_area_stru
88406 + if (!avc)
88407 + goto out_enomem;
88408 +
88409 ++#ifdef CONFIG_PAX_SEGMEXEC
88410 ++ avc_m = anon_vma_chain_alloc(GFP_KERNEL);
88411 ++ if (!avc_m)
88412 ++ goto out_enomem_free_avc;
88413 ++#endif
88414 ++
88415 + anon_vma = find_mergeable_anon_vma(vma);
88416 + allocated = NULL;
88417 + if (!anon_vma) {
88418 +@@ -175,6 +185,21 @@ int anon_vma_prepare(struct vm_area_stru
88419 /* page_table_lock to protect against threads */
88420 spin_lock(&mm->page_table_lock);
88421 if (likely(!vma->anon_vma)) {
88422 @@ -74131,26 +70306,73 @@ diff -urNp linux-2.6.32.48/mm/rmap.c linux-2.6.32.48/mm/rmap.c
88423 + if (vma_m) {
88424 + BUG_ON(vma_m->anon_vma);
88425 + vma_m->anon_vma = anon_vma;
88426 -+ list_add_tail(&vma_m->anon_vma_node, &anon_vma->head);
88427 ++ avc_m->anon_vma = anon_vma;
88428 ++ avc_m->vma = vma;
88429 ++ list_add(&avc_m->same_vma, &vma_m->anon_vma_chain);
88430 ++ list_add(&avc_m->same_anon_vma, &anon_vma->head);
88431 ++ avc_m = NULL;
88432 + }
88433 +#endif
88434 +
88435 vma->anon_vma = anon_vma;
88436 - list_add_tail(&vma->anon_vma_node, &anon_vma->head);
88437 - allocated = NULL;
88438 -diff -urNp linux-2.6.32.48/mm/shmem.c linux-2.6.32.48/mm/shmem.c
88439 ---- linux-2.6.32.48/mm/shmem.c 2011-11-12 12:44:30.000000000 -0500
88440 -+++ linux-2.6.32.48/mm/shmem.c 2011-11-12 12:46:47.000000000 -0500
88441 + avc->anon_vma = anon_vma;
88442 + avc->vma = vma;
88443 +@@ -188,12 +213,24 @@ int anon_vma_prepare(struct vm_area_stru
88444 +
88445 + if (unlikely(allocated))
88446 + put_anon_vma(allocated);
88447 ++
88448 ++#ifdef CONFIG_PAX_SEGMEXEC
88449 ++ if (unlikely(avc_m))
88450 ++ anon_vma_chain_free(avc_m);
88451 ++#endif
88452 ++
88453 + if (unlikely(avc))
88454 + anon_vma_chain_free(avc);
88455 + }
88456 + return 0;
88457 +
88458 + out_enomem_free_avc:
88459 ++
88460 ++#ifdef CONFIG_PAX_SEGMEXEC
88461 ++ if (avc_m)
88462 ++ anon_vma_chain_free(avc_m);
88463 ++#endif
88464 ++
88465 + anon_vma_chain_free(avc);
88466 + out_enomem:
88467 + return -ENOMEM;
88468 +@@ -244,7 +281,7 @@ static void anon_vma_chain_link(struct v
88469 + * Attach the anon_vmas from src to dst.
88470 + * Returns 0 on success, -ENOMEM on failure.
88471 + */
88472 +-int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)
88473 ++int anon_vma_clone(struct vm_area_struct *dst, const struct vm_area_struct *src)
88474 + {
88475 + struct anon_vma_chain *avc, *pavc;
88476 + struct anon_vma *root = NULL;
88477 +@@ -277,7 +314,7 @@ int anon_vma_clone(struct vm_area_struct
88478 + * the corresponding VMA in the parent process is attached to.
88479 + * Returns 0 on success, non-zero on failure.
88480 + */
88481 +-int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma)
88482 ++int anon_vma_fork(struct vm_area_struct *vma, const struct vm_area_struct *pvma)
88483 + {
88484 + struct anon_vma_chain *avc;
88485 + struct anon_vma *anon_vma;
88486 +diff -urNp linux-3.0.8/mm/shmem.c linux-3.0.8/mm/shmem.c
88487 +--- linux-3.0.8/mm/shmem.c 2011-07-21 22:17:23.000000000 -0400
88488 ++++ linux-3.0.8/mm/shmem.c 2011-08-23 21:48:14.000000000 -0400
88489 @@ -31,7 +31,7 @@
88490 + #include <linux/percpu_counter.h>
88491 #include <linux/swap.h>
88492 - #include <linux/ima.h>
88493
88494 -static struct vfsmount *shm_mnt;
88495 +struct vfsmount *shm_mnt;
88496
88497 #ifdef CONFIG_SHMEM
88498 /*
88499 -@@ -1061,6 +1061,8 @@ static int shmem_writepage(struct page *
88500 +@@ -1101,6 +1101,8 @@ static int shmem_writepage(struct page *
88501 goto unlock;
88502 }
88503 entry = shmem_swp_entry(info, index, NULL);
88504 @@ -74159,7 +70381,7 @@ diff -urNp linux-2.6.32.48/mm/shmem.c linux-2.6.32.48/mm/shmem.c
88505 if (entry->val) {
88506 /*
88507 * The more uptodate page coming down from a stacked
88508 -@@ -1144,6 +1146,8 @@ static struct page *shmem_swapin(swp_ent
88509 +@@ -1172,6 +1174,8 @@ static struct page *shmem_swapin(swp_ent
88510 struct vm_area_struct pvma;
88511 struct page *page;
88512
88513 @@ -74168,16 +70390,7 @@ diff -urNp linux-2.6.32.48/mm/shmem.c linux-2.6.32.48/mm/shmem.c
88514 spol = mpol_cond_copy(&mpol,
88515 mpol_shared_policy_lookup(&info->policy, idx));
88516
88517 -@@ -1962,7 +1966,7 @@ static int shmem_symlink(struct inode *d
88518 -
88519 - info = SHMEM_I(inode);
88520 - inode->i_size = len-1;
88521 -- if (len <= (char *)inode - (char *)info) {
88522 -+ if (len <= (char *)inode - (char *)info && len <= 64) {
88523 - /* do it inline */
88524 - memcpy(info, symname, len);
88525 - inode->i_op = &shmem_symlink_inline_operations;
88526 -@@ -2310,8 +2314,7 @@ int shmem_fill_super(struct super_block
88527 +@@ -2568,8 +2572,7 @@ int shmem_fill_super(struct super_block
88528 int err = -ENOMEM;
88529
88530 /* Round up to L1_CACHE_BYTES to resist false sharing */
88531 @@ -74187,10 +70400,10 @@ diff -urNp linux-2.6.32.48/mm/shmem.c linux-2.6.32.48/mm/shmem.c
88532 if (!sbinfo)
88533 return -ENOMEM;
88534
88535 -diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88536 ---- linux-2.6.32.48/mm/slab.c 2011-11-12 12:44:30.000000000 -0500
88537 -+++ linux-2.6.32.48/mm/slab.c 2011-11-12 12:46:47.000000000 -0500
88538 -@@ -174,7 +174,7 @@
88539 +diff -urNp linux-3.0.8/mm/slab.c linux-3.0.8/mm/slab.c
88540 +--- linux-3.0.8/mm/slab.c 2011-07-21 22:17:23.000000000 -0400
88541 ++++ linux-3.0.8/mm/slab.c 2011-08-23 21:48:14.000000000 -0400
88542 +@@ -151,7 +151,7 @@
88543
88544 /* Legal flag mask for kmem_cache_create(). */
88545 #if DEBUG
88546 @@ -74199,7 +70412,7 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88547 SLAB_POISON | SLAB_HWCACHE_ALIGN | \
88548 SLAB_CACHE_DMA | \
88549 SLAB_STORE_USER | \
88550 -@@ -182,7 +182,7 @@
88551 +@@ -159,7 +159,7 @@
88552 SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD | \
88553 SLAB_DEBUG_OBJECTS | SLAB_NOLEAKTRACE | SLAB_NOTRACK)
88554 #else
88555 @@ -74208,16 +70421,16 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88556 SLAB_CACHE_DMA | \
88557 SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \
88558 SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD | \
88559 -@@ -308,7 +308,7 @@ struct kmem_list3 {
88560 +@@ -288,7 +288,7 @@ struct kmem_list3 {
88561 * Need this for bootstrapping a per node allocator.
88562 */
88563 #define NUM_INIT_LISTS (3 * MAX_NUMNODES)
88564 --struct kmem_list3 __initdata initkmem_list3[NUM_INIT_LISTS];
88565 -+struct kmem_list3 initkmem_list3[NUM_INIT_LISTS];
88566 +-static struct kmem_list3 __initdata initkmem_list3[NUM_INIT_LISTS];
88567 ++static struct kmem_list3 initkmem_list3[NUM_INIT_LISTS];
88568 #define CACHE_CACHE 0
88569 #define SIZE_AC MAX_NUMNODES
88570 #define SIZE_L3 (2 * MAX_NUMNODES)
88571 -@@ -409,10 +409,10 @@ static void kmem_list3_init(struct kmem_
88572 +@@ -389,10 +389,10 @@ static void kmem_list3_init(struct kmem_
88573 if ((x)->max_freeable < i) \
88574 (x)->max_freeable = i; \
88575 } while (0)
88576 @@ -74232,7 +70445,7 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88577 #else
88578 #define STATS_INC_ACTIVE(x) do { } while (0)
88579 #define STATS_DEC_ACTIVE(x) do { } while (0)
88580 -@@ -558,7 +558,7 @@ static inline void *index_to_obj(struct
88581 +@@ -538,7 +538,7 @@ static inline void *index_to_obj(struct
88582 * reciprocal_divide(offset, cache->reciprocal_buffer_size)
88583 */
88584 static inline unsigned int obj_to_index(const struct kmem_cache *cache,
88585 @@ -74241,7 +70454,16 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88586 {
88587 u32 offset = (obj - slab->s_mem);
88588 return reciprocal_divide(offset, cache->reciprocal_buffer_size);
88589 -@@ -1453,7 +1453,7 @@ void __init kmem_cache_init(void)
88590 +@@ -564,7 +564,7 @@ struct cache_names {
88591 + static struct cache_names __initdata cache_names[] = {
88592 + #define CACHE(x) { .name = "size-" #x, .name_dma = "size-" #x "(DMA)" },
88593 + #include <linux/kmalloc_sizes.h>
88594 +- {NULL,}
88595 ++ {NULL}
88596 + #undef CACHE
88597 + };
88598 +
88599 +@@ -1530,7 +1530,7 @@ void __init kmem_cache_init(void)
88600 sizes[INDEX_AC].cs_cachep = kmem_cache_create(names[INDEX_AC].name,
88601 sizes[INDEX_AC].cs_size,
88602 ARCH_KMALLOC_MINALIGN,
88603 @@ -74250,7 +70472,7 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88604 NULL);
88605
88606 if (INDEX_AC != INDEX_L3) {
88607 -@@ -1461,7 +1461,7 @@ void __init kmem_cache_init(void)
88608 +@@ -1538,7 +1538,7 @@ void __init kmem_cache_init(void)
88609 kmem_cache_create(names[INDEX_L3].name,
88610 sizes[INDEX_L3].cs_size,
88611 ARCH_KMALLOC_MINALIGN,
88612 @@ -74259,7 +70481,7 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88613 NULL);
88614 }
88615
88616 -@@ -1479,7 +1479,7 @@ void __init kmem_cache_init(void)
88617 +@@ -1556,7 +1556,7 @@ void __init kmem_cache_init(void)
88618 sizes->cs_cachep = kmem_cache_create(names->name,
88619 sizes->cs_size,
88620 ARCH_KMALLOC_MINALIGN,
88621 @@ -74268,7 +70490,7 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88622 NULL);
88623 }
88624 #ifdef CONFIG_ZONE_DMA
88625 -@@ -4211,10 +4211,10 @@ static int s_show(struct seq_file *m, vo
88626 +@@ -4272,10 +4272,10 @@ static int s_show(struct seq_file *m, vo
88627 }
88628 /* cpu stats */
88629 {
88630 @@ -74283,7 +70505,7 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88631
88632 seq_printf(m, " : cpustat %6lu %6lu %6lu %6lu",
88633 allochit, allocmiss, freehit, freemiss);
88634 -@@ -4471,15 +4471,66 @@ static const struct file_operations proc
88635 +@@ -4532,15 +4532,66 @@ static const struct file_operations proc
88636
88637 static int __init slab_proc_init(void)
88638 {
88639 @@ -74352,9 +70574,9 @@ diff -urNp linux-2.6.32.48/mm/slab.c linux-2.6.32.48/mm/slab.c
88640 /**
88641 * ksize - get the actual amount of memory allocated for a given object
88642 * @objp: Pointer to the object
88643 -diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88644 ---- linux-2.6.32.48/mm/slob.c 2009-12-02 22:51:21.000000000 -0500
88645 -+++ linux-2.6.32.48/mm/slob.c 2011-11-12 12:46:47.000000000 -0500
88646 +diff -urNp linux-3.0.8/mm/slob.c linux-3.0.8/mm/slob.c
88647 +--- linux-3.0.8/mm/slob.c 2011-07-21 22:17:23.000000000 -0400
88648 ++++ linux-3.0.8/mm/slob.c 2011-08-23 21:47:56.000000000 -0400
88649 @@ -29,7 +29,7 @@
88650 * If kmalloc is asked for objects of PAGE_SIZE or larger, it calls
88651 * alloc_pages() directly, allocating compound pages so the page order
88652 @@ -74372,7 +70594,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88653 #include <linux/slab.h>
88654 #include <linux/mm.h>
88655 #include <linux/swap.h> /* struct reclaim_state */
88656 -@@ -100,7 +101,8 @@ struct slob_page {
88657 +@@ -102,7 +103,8 @@ struct slob_page {
88658 unsigned long flags; /* mandatory */
88659 atomic_t _count; /* mandatory */
88660 slobidx_t units; /* free units left in page */
88661 @@ -74382,7 +70604,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88662 slob_t *free; /* first free slob_t in page */
88663 struct list_head list; /* linked list of free pages */
88664 };
88665 -@@ -133,7 +135,7 @@ static LIST_HEAD(free_slob_large);
88666 +@@ -135,7 +137,7 @@ static LIST_HEAD(free_slob_large);
88667 */
88668 static inline int is_slob_page(struct slob_page *sp)
88669 {
88670 @@ -74391,7 +70613,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88671 }
88672
88673 static inline void set_slob_page(struct slob_page *sp)
88674 -@@ -148,7 +150,7 @@ static inline void clear_slob_page(struc
88675 +@@ -150,7 +152,7 @@ static inline void clear_slob_page(struc
88676
88677 static inline struct slob_page *slob_page(const void *addr)
88678 {
88679 @@ -74400,7 +70622,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88680 }
88681
88682 /*
88683 -@@ -208,7 +210,7 @@ static void set_slob(slob_t *s, slobidx_
88684 +@@ -210,7 +212,7 @@ static void set_slob(slob_t *s, slobidx_
88685 /*
88686 * Return the size of a slob block.
88687 */
88688 @@ -74409,7 +70631,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88689 {
88690 if (s->units > 0)
88691 return s->units;
88692 -@@ -218,7 +220,7 @@ static slobidx_t slob_units(slob_t *s)
88693 +@@ -220,7 +222,7 @@ static slobidx_t slob_units(slob_t *s)
88694 /*
88695 * Return the next free slob block pointer after this one.
88696 */
88697 @@ -74418,7 +70640,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88698 {
88699 slob_t *base = (slob_t *)((unsigned long)s & PAGE_MASK);
88700 slobidx_t next;
88701 -@@ -233,7 +235,7 @@ static slob_t *slob_next(slob_t *s)
88702 +@@ -235,7 +237,7 @@ static slob_t *slob_next(slob_t *s)
88703 /*
88704 * Returns true if s is the last free block in its page.
88705 */
88706 @@ -74427,7 +70649,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88707 {
88708 return !((unsigned long)slob_next(s) & ~PAGE_MASK);
88709 }
88710 -@@ -252,6 +254,7 @@ static void *slob_new_pages(gfp_t gfp, i
88711 +@@ -254,6 +256,7 @@ static void *slob_new_pages(gfp_t gfp, i
88712 if (!page)
88713 return NULL;
88714
88715 @@ -74435,7 +70657,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88716 return page_address(page);
88717 }
88718
88719 -@@ -368,11 +371,11 @@ static void *slob_alloc(size_t size, gfp
88720 +@@ -370,11 +373,11 @@ static void *slob_alloc(size_t size, gfp
88721 if (!b)
88722 return NULL;
88723 sp = slob_page(b);
88724 @@ -74448,9 +70670,9 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88725 INIT_LIST_HEAD(&sp->list);
88726 set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE));
88727 set_slob_page_free(sp, slob_list);
88728 -@@ -475,10 +478,9 @@ out:
88729 - #define ARCH_SLAB_MINALIGN __alignof__(unsigned long)
88730 - #endif
88731 +@@ -476,10 +479,9 @@ out:
88732 + * End of slob allocator proper. Begin kmem_cache_alloc and kmalloc frontend.
88733 + */
88734
88735 -void *__kmalloc_node(size_t size, gfp_t gfp, int node)
88736 +static void *__kmalloc_node_align(size_t size, gfp_t gfp, int node, int align)
88737 @@ -74461,7 +70683,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88738 void *ret;
88739
88740 lockdep_trace_alloc(gfp);
88741 -@@ -491,7 +493,10 @@ void *__kmalloc_node(size_t size, gfp_t
88742 +@@ -492,7 +494,10 @@ void *__kmalloc_node(size_t size, gfp_t
88743
88744 if (!m)
88745 return NULL;
88746 @@ -74473,9 +70695,9 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88747 ret = (void *)m + align;
88748
88749 trace_kmalloc_node(_RET_IP_, ret,
88750 -@@ -501,16 +506,25 @@ void *__kmalloc_node(size_t size, gfp_t
88751 -
88752 - ret = slob_new_pages(gfp | __GFP_COMP, get_order(size), node);
88753 +@@ -504,16 +509,25 @@ void *__kmalloc_node(size_t size, gfp_t
88754 + gfp |= __GFP_COMP;
88755 + ret = slob_new_pages(gfp, order, node);
88756 if (ret) {
88757 - struct page *page;
88758 - page = virt_to_page(ret);
88759 @@ -74503,7 +70725,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88760 return ret;
88761 }
88762 EXPORT_SYMBOL(__kmalloc_node);
88763 -@@ -528,13 +542,88 @@ void kfree(const void *block)
88764 +@@ -531,13 +545,88 @@ void kfree(const void *block)
88765 sp = slob_page(block);
88766 if (is_slob_page(sp)) {
88767 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
88768 @@ -74595,7 +70817,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88769 /* can't use ksize for kmem_cache_alloc memory, only kmalloc */
88770 size_t ksize(const void *block)
88771 {
88772 -@@ -547,10 +636,10 @@ size_t ksize(const void *block)
88773 +@@ -550,10 +639,10 @@ size_t ksize(const void *block)
88774 sp = slob_page(block);
88775 if (is_slob_page(sp)) {
88776 int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
88777 @@ -74609,7 +70831,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88778 }
88779 EXPORT_SYMBOL(ksize);
88780
88781 -@@ -566,8 +655,13 @@ struct kmem_cache *kmem_cache_create(con
88782 +@@ -569,8 +658,13 @@ struct kmem_cache *kmem_cache_create(con
88783 {
88784 struct kmem_cache *c;
88785
88786 @@ -74623,7 +70845,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88787
88788 if (c) {
88789 c->name = name;
88790 -@@ -605,17 +699,25 @@ void *kmem_cache_alloc_node(struct kmem_
88791 +@@ -608,17 +702,25 @@ void *kmem_cache_alloc_node(struct kmem_
88792 {
88793 void *b;
88794
88795 @@ -74649,7 +70871,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88796
88797 if (c->ctor)
88798 c->ctor(b);
88799 -@@ -627,10 +729,16 @@ EXPORT_SYMBOL(kmem_cache_alloc_node);
88800 +@@ -630,10 +732,16 @@ EXPORT_SYMBOL(kmem_cache_alloc_node);
88801
88802 static void __kmem_cache_free(void *b, int size)
88803 {
88804 @@ -74668,7 +70890,7 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88805 }
88806
88807 static void kmem_rcu_free(struct rcu_head *head)
88808 -@@ -643,18 +751,32 @@ static void kmem_rcu_free(struct rcu_hea
88809 +@@ -646,17 +754,31 @@ static void kmem_rcu_free(struct rcu_hea
88810
88811 void kmem_cache_free(struct kmem_cache *c, void *b)
88812 {
88813 @@ -74685,9 +70907,8 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88814 if (unlikely(c->flags & SLAB_DESTROY_BY_RCU)) {
88815 struct slob_rcu *slob_rcu;
88816 - slob_rcu = b + (c->size - sizeof(struct slob_rcu));
88817 -+ slob_rcu = b + (size - sizeof(struct slob_rcu));
88818 - INIT_RCU_HEAD(&slob_rcu->head);
88819 - slob_rcu->size = c->size;
88820 ++ slob_rcu = b + (size - sizeof(struct slob_rcu));
88821 + slob_rcu->size = size;
88822 call_rcu(&slob_rcu->head, kmem_rcu_free);
88823 } else {
88824 @@ -74704,19 +70925,19 @@ diff -urNp linux-2.6.32.48/mm/slob.c linux-2.6.32.48/mm/slob.c
88825 }
88826 EXPORT_SYMBOL(kmem_cache_free);
88827
88828 -diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88829 ---- linux-2.6.32.48/mm/slub.c 2009-12-02 22:51:21.000000000 -0500
88830 -+++ linux-2.6.32.48/mm/slub.c 2011-11-12 12:46:47.000000000 -0500
88831 -@@ -201,7 +201,7 @@ struct track {
88832 +diff -urNp linux-3.0.8/mm/slub.c linux-3.0.8/mm/slub.c
88833 +--- linux-3.0.8/mm/slub.c 2011-07-21 22:17:23.000000000 -0400
88834 ++++ linux-3.0.8/mm/slub.c 2011-09-25 22:15:40.000000000 -0400
88835 +@@ -200,7 +200,7 @@ struct track {
88836
88837 enum track_item { TRACK_ALLOC, TRACK_FREE };
88838
88839 --#ifdef CONFIG_SLUB_DEBUG
88840 -+#if defined(CONFIG_SLUB_DEBUG) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
88841 +-#ifdef CONFIG_SYSFS
88842 ++#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
88843 static int sysfs_slab_add(struct kmem_cache *);
88844 static int sysfs_slab_alias(struct kmem_cache *, const char *);
88845 static void sysfs_slab_remove(struct kmem_cache *);
88846 -@@ -410,7 +410,7 @@ static void print_track(const char *s, s
88847 +@@ -442,7 +442,7 @@ static void print_track(const char *s, s
88848 if (!t->addr)
88849 return;
88850
88851 @@ -74725,7 +70946,7 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88852 s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
88853 }
88854
88855 -@@ -1893,6 +1893,8 @@ void kmem_cache_free(struct kmem_cache *
88856 +@@ -2137,6 +2137,8 @@ void kmem_cache_free(struct kmem_cache *
88857
88858 page = virt_to_head_page(x);
88859
88860 @@ -74734,7 +70955,7 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88861 slab_free(s, page, x, _RET_IP_);
88862
88863 trace_kmem_cache_free(_RET_IP_, x);
88864 -@@ -1937,7 +1939,7 @@ static int slub_min_objects;
88865 +@@ -2170,7 +2172,7 @@ static int slub_min_objects;
88866 * Merge control. If this is set then no merging of slab caches will occur.
88867 * (Could be removed. This was introduced to pacify the merge skeptics.)
88868 */
88869 @@ -74743,7 +70964,7 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88870
88871 /*
88872 * Calculate the order of allocation given an slab object size.
88873 -@@ -2493,7 +2495,7 @@ static int kmem_cache_open(struct kmem_c
88874 +@@ -2594,7 +2596,7 @@ static int kmem_cache_open(struct kmem_c
88875 * list to avoid pounding the page allocator excessively.
88876 */
88877 set_min_partial(s, ilog2(s->size));
88878 @@ -74752,7 +70973,7 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88879 #ifdef CONFIG_NUMA
88880 s->remote_node_defrag_ratio = 1000;
88881 #endif
88882 -@@ -2630,8 +2632,7 @@ static inline int kmem_cache_close(struc
88883 +@@ -2699,8 +2701,7 @@ static inline int kmem_cache_close(struc
88884 void kmem_cache_destroy(struct kmem_cache *s)
88885 {
88886 down_write(&slub_lock);
88887 @@ -74760,24 +70981,9 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88888 - if (!s->refcount) {
88889 + if (atomic_dec_and_test(&s->refcount)) {
88890 list_del(&s->list);
88891 - up_write(&slub_lock);
88892 if (kmem_cache_close(s)) {
88893 -@@ -2691,12 +2692,10 @@ static int __init setup_slub_nomerge(cha
88894 - __setup("slub_nomerge", setup_slub_nomerge);
88895 -
88896 - static struct kmem_cache *create_kmalloc_cache(struct kmem_cache *s,
88897 -- const char *name, int size, gfp_t gfp_flags)
88898 -+ const char *name, int size, gfp_t gfp_flags, unsigned int flags)
88899 - {
88900 -- unsigned int flags = 0;
88901 --
88902 - if (gfp_flags & SLUB_DMA)
88903 -- flags = SLAB_CACHE_DMA;
88904 -+ flags |= SLAB_CACHE_DMA;
88905 -
88906 - /*
88907 - * This function is called with IRQs disabled during early-boot on
88908 -@@ -2915,6 +2914,46 @@ void *__kmalloc_node(size_t size, gfp_t
88909 + printk(KERN_ERR "SLUB %s: %s called for cache that "
88910 +@@ -2910,6 +2911,46 @@ void *__kmalloc_node(size_t size, gfp_t
88911 EXPORT_SYMBOL(__kmalloc_node);
88912 #endif
88913
88914 @@ -74798,9 +71004,9 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88915 + if (!virt_addr_valid(ptr))
88916 + return;
88917 +
88918 -+ page = get_object_page(ptr);
88919 ++ page = virt_to_head_page(ptr);
88920 +
88921 -+ if (!page) {
88922 ++ if (!PageSlab(page)) {
88923 + if (object_is_on_stack(ptr, n) == -1)
88924 + goto report;
88925 + return;
88926 @@ -74824,40 +71030,37 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88927 size_t ksize(const void *object)
88928 {
88929 struct page *page;
88930 -@@ -3185,8 +3224,8 @@ void __init kmem_cache_init(void)
88931 - * kmem_cache_open for slab_state == DOWN.
88932 - */
88933 - create_kmalloc_cache(&kmalloc_caches[0], "kmem_cache_node",
88934 -- sizeof(struct kmem_cache_node), GFP_NOWAIT);
88935 -- kmalloc_caches[0].refcount = -1;
88936 -+ sizeof(struct kmem_cache_node), GFP_NOWAIT, 0);
88937 -+ atomic_set(&kmalloc_caches[0].refcount, -1);
88938 - caches++;
88939 -
88940 - hotplug_memory_notifier(slab_memory_callback, SLAB_CALLBACK_PRI);
88941 -@@ -3198,18 +3237,18 @@ void __init kmem_cache_init(void)
88942 +@@ -3154,7 +3195,7 @@ static void __init kmem_cache_bootstrap_
88943 + int node;
88944 +
88945 + list_add(&s->list, &slab_caches);
88946 +- s->refcount = -1;
88947 ++ atomic_set(&s->refcount, -1);
88948 +
88949 + for_each_node_state(node, N_NORMAL_MEMORY) {
88950 + struct kmem_cache_node *n = get_node(s, node);
88951 +@@ -3271,17 +3312,17 @@ void __init kmem_cache_init(void)
88952 +
88953 /* Caches that are not of the two-to-the-power-of size */
88954 if (KMALLOC_MIN_SIZE <= 32) {
88955 - create_kmalloc_cache(&kmalloc_caches[1],
88956 -- "kmalloc-96", 96, GFP_NOWAIT);
88957 -+ "kmalloc-96", 96, GFP_NOWAIT, SLAB_USERCOPY);
88958 +- kmalloc_caches[1] = create_kmalloc_cache("kmalloc-96", 96, 0);
88959 ++ kmalloc_caches[1] = create_kmalloc_cache("kmalloc-96", 96, SLAB_USERCOPY);
88960 caches++;
88961 }
88962 +
88963 if (KMALLOC_MIN_SIZE <= 64) {
88964 - create_kmalloc_cache(&kmalloc_caches[2],
88965 -- "kmalloc-192", 192, GFP_NOWAIT);
88966 -+ "kmalloc-192", 192, GFP_NOWAIT, SLAB_USERCOPY);
88967 +- kmalloc_caches[2] = create_kmalloc_cache("kmalloc-192", 192, 0);
88968 ++ kmalloc_caches[2] = create_kmalloc_cache("kmalloc-192", 192, SLAB_USERCOPY);
88969 caches++;
88970 }
88971
88972 for (i = KMALLOC_SHIFT_LOW; i < SLUB_PAGE_SHIFT; i++) {
88973 - create_kmalloc_cache(&kmalloc_caches[i],
88974 -- "kmalloc", 1 << i, GFP_NOWAIT);
88975 -+ "kmalloc", 1 << i, GFP_NOWAIT, SLAB_USERCOPY);
88976 +- kmalloc_caches[i] = create_kmalloc_cache("kmalloc", 1 << i, 0);
88977 ++ kmalloc_caches[i] = create_kmalloc_cache("kmalloc", 1 << i, SLAB_USERCOPY);
88978 caches++;
88979 }
88980
88981 -@@ -3293,7 +3332,7 @@ static int slab_unmergeable(struct kmem_
88982 +@@ -3349,7 +3390,7 @@ static int slab_unmergeable(struct kmem_
88983 /*
88984 * We may have set a slab to be unmergeable during bootstrap.
88985 */
88986 @@ -74866,25 +71069,49 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
88987 return 1;
88988
88989 return 0;
88990 -@@ -3353,7 +3392,7 @@ struct kmem_cache *kmem_cache_create(con
88991 +@@ -3408,7 +3449,7 @@ struct kmem_cache *kmem_cache_create(con
88992 + down_write(&slub_lock);
88993 + s = find_mergeable(size, align, flags, name, ctor);
88994 if (s) {
88995 - int cpu;
88996 -
88997 - s->refcount++;
88998 + atomic_inc(&s->refcount);
88999 /*
89000 * Adjust the object sizes so that we clear
89001 * the complete object on kzalloc.
89002 -@@ -3372,7 +3411,7 @@ struct kmem_cache *kmem_cache_create(con
89003 +@@ -3417,7 +3458,7 @@ struct kmem_cache *kmem_cache_create(con
89004 + s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *)));
89005
89006 if (sysfs_slab_alias(s, name)) {
89007 - down_write(&slub_lock);
89008 - s->refcount--;
89009 + atomic_dec(&s->refcount);
89010 - up_write(&slub_lock);
89011 goto err;
89012 }
89013 -@@ -4101,7 +4140,7 @@ SLAB_ATTR_RO(ctor);
89014 + up_write(&slub_lock);
89015 +@@ -3545,7 +3586,7 @@ void *__kmalloc_node_track_caller(size_t
89016 + }
89017 + #endif
89018 +
89019 +-#ifdef CONFIG_SYSFS
89020 ++#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
89021 + static int count_inuse(struct page *page)
89022 + {
89023 + return page->inuse;
89024 +@@ -3935,12 +3976,12 @@ static void resiliency_test(void)
89025 + validate_slab_cache(kmalloc_caches[9]);
89026 + }
89027 + #else
89028 +-#ifdef CONFIG_SYSFS
89029 ++#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
89030 + static void resiliency_test(void) {};
89031 + #endif
89032 + #endif
89033 +
89034 +-#ifdef CONFIG_SYSFS
89035 ++#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
89036 + enum slab_stat_type {
89037 + SL_ALL, /* All slabs */
89038 + SL_PARTIAL, /* Only partially allocated slabs */
89039 +@@ -4150,7 +4191,7 @@ SLAB_ATTR_RO(ctor);
89040
89041 static ssize_t aliases_show(struct kmem_cache *s, char *buf)
89042 {
89043 @@ -74893,33 +71120,15 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
89044 }
89045 SLAB_ATTR_RO(aliases);
89046
89047 -@@ -4503,7 +4542,7 @@ static void kmem_cache_release(struct ko
89048 - kfree(s);
89049 - }
89050 -
89051 --static struct sysfs_ops slab_sysfs_ops = {
89052 -+static const struct sysfs_ops slab_sysfs_ops = {
89053 - .show = slab_attr_show,
89054 - .store = slab_attr_store,
89055 - };
89056 -@@ -4522,7 +4561,7 @@ static int uevent_filter(struct kset *ks
89057 - return 0;
89058 - }
89059 -
89060 --static struct kset_uevent_ops slab_uevent_ops = {
89061 -+static const struct kset_uevent_ops slab_uevent_ops = {
89062 - .filter = uevent_filter,
89063 - };
89064 -
89065 -@@ -4564,6 +4603,7 @@ static char *create_unique_id(struct kme
89066 +@@ -4662,6 +4703,7 @@ static char *create_unique_id(struct kme
89067 return name;
89068 }
89069
89070 -+#if defined(CONFIG_SLUB_DEBUG) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
89071 ++#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
89072 static int sysfs_slab_add(struct kmem_cache *s)
89073 {
89074 int err;
89075 -@@ -4619,6 +4659,7 @@ static void sysfs_slab_remove(struct kme
89076 +@@ -4724,6 +4766,7 @@ static void sysfs_slab_remove(struct kme
89077 kobject_del(&s->kobj);
89078 kobject_put(&s->kobj);
89079 }
89080 @@ -74927,15 +71136,15 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
89081
89082 /*
89083 * Need to buffer aliases during bootup until sysfs becomes
89084 -@@ -4632,6 +4673,7 @@ struct saved_alias {
89085 +@@ -4737,6 +4780,7 @@ struct saved_alias {
89086
89087 static struct saved_alias *alias_list;
89088
89089 -+#if defined(CONFIG_SLUB_DEBUG) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
89090 ++#if defined(CONFIG_SYSFS) && !defined(CONFIG_GRKERNSEC_PROC_ADD)
89091 static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
89092 {
89093 struct saved_alias *al;
89094 -@@ -4654,6 +4696,7 @@ static int sysfs_slab_alias(struct kmem_
89095 +@@ -4759,6 +4803,7 @@ static int sysfs_slab_alias(struct kmem_
89096 alias_list = al;
89097 return 0;
89098 }
89099 @@ -74943,7 +71152,7 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
89100
89101 static int __init slab_sysfs_init(void)
89102 {
89103 -@@ -4785,7 +4828,13 @@ static const struct file_operations proc
89104 +@@ -4894,7 +4939,13 @@ static const struct file_operations proc
89105
89106 static int __init slab_proc_init(void)
89107 {
89108 @@ -74958,30 +71167,96 @@ diff -urNp linux-2.6.32.48/mm/slub.c linux-2.6.32.48/mm/slub.c
89109 return 0;
89110 }
89111 module_init(slab_proc_init);
89112 -diff -urNp linux-2.6.32.48/mm/swap.c linux-2.6.32.48/mm/swap.c
89113 ---- linux-2.6.32.48/mm/swap.c 2009-12-02 22:51:21.000000000 -0500
89114 -+++ linux-2.6.32.48/mm/swap.c 2011-11-12 12:46:47.000000000 -0500
89115 -@@ -30,6 +30,7 @@
89116 - #include <linux/notifier.h>
89117 +diff -urNp linux-3.0.8/mm/swap.c linux-3.0.8/mm/swap.c
89118 +--- linux-3.0.8/mm/swap.c 2011-07-21 22:17:23.000000000 -0400
89119 ++++ linux-3.0.8/mm/swap.c 2011-08-23 21:47:56.000000000 -0400
89120 +@@ -31,6 +31,7 @@
89121 #include <linux/backing-dev.h>
89122 #include <linux/memcontrol.h>
89123 + #include <linux/gfp.h>
89124 +#include <linux/hugetlb.h>
89125
89126 #include "internal.h"
89127
89128 -@@ -65,6 +66,8 @@ static void put_compound_page(struct pag
89129 - compound_page_dtor *dtor;
89130 +@@ -71,6 +72,8 @@ static void __put_compound_page(struct p
89131 +
89132 + __page_cache_release(page);
89133 + dtor = get_compound_page_dtor(page);
89134 ++ if (!PageHuge(page))
89135 ++ BUG_ON(dtor != free_compound_page);
89136 + (*dtor)(page);
89137 + }
89138
89139 - dtor = get_compound_page_dtor(page);
89140 -+ if (!PageHuge(page))
89141 -+ BUG_ON(dtor != free_compound_page);
89142 - (*dtor)(page);
89143 +diff -urNp linux-3.0.8/mm/swapfile.c linux-3.0.8/mm/swapfile.c
89144 +--- linux-3.0.8/mm/swapfile.c 2011-07-21 22:17:23.000000000 -0400
89145 ++++ linux-3.0.8/mm/swapfile.c 2011-08-23 21:47:56.000000000 -0400
89146 +@@ -62,7 +62,7 @@ static DEFINE_MUTEX(swapon_mutex);
89147 +
89148 + static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
89149 + /* Activity counter to indicate that a swapon or swapoff has occurred */
89150 +-static atomic_t proc_poll_event = ATOMIC_INIT(0);
89151 ++static atomic_unchecked_t proc_poll_event = ATOMIC_INIT(0);
89152 +
89153 + static inline unsigned char swap_count(unsigned char ent)
89154 + {
89155 +@@ -1671,7 +1671,7 @@ SYSCALL_DEFINE1(swapoff, const char __us
89156 }
89157 + filp_close(swap_file, NULL);
89158 + err = 0;
89159 +- atomic_inc(&proc_poll_event);
89160 ++ atomic_inc_unchecked(&proc_poll_event);
89161 + wake_up_interruptible(&proc_poll_wait);
89162 +
89163 + out_dput:
89164 +@@ -1692,8 +1692,8 @@ static unsigned swaps_poll(struct file *
89165 +
89166 + poll_wait(file, &proc_poll_wait, wait);
89167 +
89168 +- if (s->event != atomic_read(&proc_poll_event)) {
89169 +- s->event = atomic_read(&proc_poll_event);
89170 ++ if (s->event != atomic_read_unchecked(&proc_poll_event)) {
89171 ++ s->event = atomic_read_unchecked(&proc_poll_event);
89172 + return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
89173 + }
89174 +
89175 +@@ -1799,7 +1799,7 @@ static int swaps_open(struct inode *inod
89176 + }
89177 +
89178 + s->seq.private = s;
89179 +- s->event = atomic_read(&proc_poll_event);
89180 ++ s->event = atomic_read_unchecked(&proc_poll_event);
89181 + return ret;
89182 }
89183 -diff -urNp linux-2.6.32.48/mm/util.c linux-2.6.32.48/mm/util.c
89184 ---- linux-2.6.32.48/mm/util.c 2011-11-12 12:44:30.000000000 -0500
89185 -+++ linux-2.6.32.48/mm/util.c 2011-11-12 12:46:47.000000000 -0500
89186 -@@ -228,6 +228,12 @@ EXPORT_SYMBOL(strndup_user);
89187 +
89188 +@@ -2133,7 +2133,7 @@ SYSCALL_DEFINE2(swapon, const char __use
89189 + (p->flags & SWP_DISCARDABLE) ? "D" : "");
89190 +
89191 + mutex_unlock(&swapon_mutex);
89192 +- atomic_inc(&proc_poll_event);
89193 ++ atomic_inc_unchecked(&proc_poll_event);
89194 + wake_up_interruptible(&proc_poll_wait);
89195 +
89196 + if (S_ISREG(inode->i_mode))
89197 +diff -urNp linux-3.0.8/mm/util.c linux-3.0.8/mm/util.c
89198 +--- linux-3.0.8/mm/util.c 2011-07-21 22:17:23.000000000 -0400
89199 ++++ linux-3.0.8/mm/util.c 2011-08-23 21:47:56.000000000 -0400
89200 +@@ -114,6 +114,7 @@ EXPORT_SYMBOL(memdup_user);
89201 + * allocated buffer. Use this if you don't want to free the buffer immediately
89202 + * like, for example, with RCU.
89203 + */
89204 ++#undef __krealloc
89205 + void *__krealloc(const void *p, size_t new_size, gfp_t flags)
89206 + {
89207 + void *ret;
89208 +@@ -147,6 +148,7 @@ EXPORT_SYMBOL(__krealloc);
89209 + * behaves exactly like kmalloc(). If @size is 0 and @p is not a
89210 + * %NULL pointer, the object pointed to is freed.
89211 + */
89212 ++#undef krealloc
89213 + void *krealloc(const void *p, size_t new_size, gfp_t flags)
89214 + {
89215 + void *ret;
89216 +@@ -243,6 +245,12 @@ void __vma_link_list(struct mm_struct *m
89217 void arch_pick_mmap_layout(struct mm_struct *mm)
89218 {
89219 mm->mmap_base = TASK_UNMAPPED_BASE;
89220 @@ -74994,10 +71269,10 @@ diff -urNp linux-2.6.32.48/mm/util.c linux-2.6.32.48/mm/util.c
89221 mm->get_unmapped_area = arch_get_unmapped_area;
89222 mm->unmap_area = arch_unmap_area;
89223 }
89224 -diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89225 ---- linux-2.6.32.48/mm/vmalloc.c 2011-11-12 12:44:30.000000000 -0500
89226 -+++ linux-2.6.32.48/mm/vmalloc.c 2011-11-12 12:46:47.000000000 -0500
89227 -@@ -40,8 +40,19 @@ static void vunmap_pte_range(pmd_t *pmd,
89228 +diff -urNp linux-3.0.8/mm/vmalloc.c linux-3.0.8/mm/vmalloc.c
89229 +--- linux-3.0.8/mm/vmalloc.c 2011-10-24 08:05:30.000000000 -0400
89230 ++++ linux-3.0.8/mm/vmalloc.c 2011-10-16 21:55:28.000000000 -0400
89231 +@@ -39,8 +39,19 @@ static void vunmap_pte_range(pmd_t *pmd,
89232
89233 pte = pte_offset_kernel(pmd, addr);
89234 do {
89235 @@ -75019,7 +71294,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89236 } while (pte++, addr += PAGE_SIZE, addr != end);
89237 }
89238
89239 -@@ -92,6 +103,7 @@ static int vmap_pte_range(pmd_t *pmd, un
89240 +@@ -91,6 +102,7 @@ static int vmap_pte_range(pmd_t *pmd, un
89241 unsigned long end, pgprot_t prot, struct page **pages, int *nr)
89242 {
89243 pte_t *pte;
89244 @@ -75027,7 +71302,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89245
89246 /*
89247 * nr is a running index into the array which helps higher level
89248 -@@ -101,17 +113,32 @@ static int vmap_pte_range(pmd_t *pmd, un
89249 +@@ -100,17 +112,30 @@ static int vmap_pte_range(pmd_t *pmd, un
89250 pte = pte_alloc_kernel(pmd, addr);
89251 if (!pte)
89252 return -ENOMEM;
89253 @@ -75041,9 +71316,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89254 - if (WARN_ON(!page))
89255 - return -ENOMEM;
89256 +#if defined(CONFIG_MODULES) && defined(CONFIG_X86_32) && defined(CONFIG_PAX_KERNEXEC)
89257 -+ if (!(pgprot_val(prot) & _PAGE_NX))
89258 -+ BUG_ON(!pte_exec(*pte) || pte_pfn(*pte) != __pa(addr) >> PAGE_SHIFT);
89259 -+ else
89260 ++ if (pgprot_val(prot) & _PAGE_NX)
89261 +#endif
89262 +
89263 + if (WARN_ON(!pte_none(*pte))) {
89264 @@ -75065,7 +71338,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89265 }
89266
89267 static int vmap_pmd_range(pud_t *pud, unsigned long addr,
89268 -@@ -192,11 +219,20 @@ int is_vmalloc_or_module_addr(const void
89269 +@@ -191,11 +216,20 @@ int is_vmalloc_or_module_addr(const void
89270 * and fall back on vmalloc() if that fails. Others
89271 * just put it in the vmalloc space.
89272 */
89273 @@ -75087,7 +71360,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89274 return is_vmalloc_addr(x);
89275 }
89276
89277 -@@ -217,8 +253,14 @@ struct page *vmalloc_to_page(const void
89278 +@@ -216,8 +250,14 @@ struct page *vmalloc_to_page(const void
89279
89280 if (!pgd_none(*pgd)) {
89281 pud_t *pud = pud_offset(pgd, addr);
89282 @@ -75102,25 +71375,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89283 if (!pmd_none(*pmd)) {
89284 pte_t *ptep, pte;
89285
89286 -@@ -292,13 +334,13 @@ static void __insert_vmap_area(struct vm
89287 - struct rb_node *tmp;
89288 -
89289 - while (*p) {
89290 -- struct vmap_area *tmp;
89291 -+ struct vmap_area *varea;
89292 -
89293 - parent = *p;
89294 -- tmp = rb_entry(parent, struct vmap_area, rb_node);
89295 -- if (va->va_start < tmp->va_end)
89296 -+ varea = rb_entry(parent, struct vmap_area, rb_node);
89297 -+ if (va->va_start < varea->va_end)
89298 - p = &(*p)->rb_left;
89299 -- else if (va->va_end > tmp->va_start)
89300 -+ else if (va->va_end > varea->va_start)
89301 - p = &(*p)->rb_right;
89302 - else
89303 - BUG();
89304 -@@ -1233,6 +1275,16 @@ static struct vm_struct *__get_vm_area_n
89305 +@@ -1297,6 +1337,16 @@ static struct vm_struct *__get_vm_area_n
89306 struct vm_struct *area;
89307
89308 BUG_ON(in_interrupt());
89309 @@ -75137,7 +71392,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89310 if (flags & VM_IOREMAP) {
89311 int bit = fls(size);
89312
89313 -@@ -1458,6 +1510,11 @@ void *vmap(struct page **pages, unsigned
89314 +@@ -1515,6 +1565,11 @@ void *vmap(struct page **pages, unsigned
89315 if (count > totalram_pages)
89316 return NULL;
89317
89318 @@ -75149,7 +71404,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89319 area = get_vm_area_caller((count << PAGE_SHIFT), flags,
89320 __builtin_return_address(0));
89321 if (!area)
89322 -@@ -1568,6 +1625,13 @@ static void *__vmalloc_node(unsigned lon
89323 +@@ -1616,6 +1671,13 @@ void *__vmalloc_node_range(unsigned long
89324 if (!size || (size >> PAGE_SHIFT) > totalram_pages)
89325 return NULL;
89326
89327 @@ -75160,26 +71415,34 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89328 + else
89329 +#endif
89330 +
89331 - area = __get_vm_area_node(size, align, VM_ALLOC, VMALLOC_START,
89332 - VMALLOC_END, node, gfp_mask, caller);
89333 + area = __get_vm_area_node(size, align, VM_ALLOC, start, end, node,
89334 + gfp_mask, caller);
89335
89336 -@@ -1586,6 +1650,7 @@ static void *__vmalloc_node(unsigned lon
89337 - return addr;
89338 +@@ -1655,6 +1717,7 @@ static void *__vmalloc_node(unsigned lon
89339 + gfp_mask, prot, node, caller);
89340 }
89341
89342 +#undef __vmalloc
89343 void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
89344 {
89345 return __vmalloc_node(size, 1, gfp_mask, prot, -1,
89346 -@@ -1602,6 +1667,7 @@ EXPORT_SYMBOL(__vmalloc);
89347 +@@ -1678,6 +1741,7 @@ static inline void *__vmalloc_node_flags
89348 * For tight control over page level allocator and protection flags
89349 * use __vmalloc() instead.
89350 */
89351 +#undef vmalloc
89352 void *vmalloc(unsigned long size)
89353 {
89354 - return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL,
89355 -@@ -1616,6 +1682,7 @@ EXPORT_SYMBOL(vmalloc);
89356 + return __vmalloc_node_flags(size, -1, GFP_KERNEL | __GFP_HIGHMEM);
89357 +@@ -1694,6 +1758,7 @@ EXPORT_SYMBOL(vmalloc);
89358 + * For tight control over page level allocator and protection flags
89359 + * use __vmalloc() instead.
89360 + */
89361 ++#undef vzalloc
89362 + void *vzalloc(unsigned long size)
89363 + {
89364 + return __vmalloc_node_flags(size, -1,
89365 +@@ -1708,6 +1773,7 @@ EXPORT_SYMBOL(vzalloc);
89366 * The resulting memory area is zeroed so it can be mapped to userspace
89367 * without leaking data.
89368 */
89369 @@ -75187,7 +71450,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89370 void *vmalloc_user(unsigned long size)
89371 {
89372 struct vm_struct *area;
89373 -@@ -1643,6 +1710,7 @@ EXPORT_SYMBOL(vmalloc_user);
89374 +@@ -1735,6 +1801,7 @@ EXPORT_SYMBOL(vmalloc_user);
89375 * For tight control over page level allocator and protection flags
89376 * use __vmalloc() instead.
89377 */
89378 @@ -75195,7 +71458,15 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89379 void *vmalloc_node(unsigned long size, int node)
89380 {
89381 return __vmalloc_node(size, 1, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL,
89382 -@@ -1665,10 +1733,10 @@ EXPORT_SYMBOL(vmalloc_node);
89383 +@@ -1754,6 +1821,7 @@ EXPORT_SYMBOL(vmalloc_node);
89384 + * For tight control over page level allocator and protection flags
89385 + * use __vmalloc_node() instead.
89386 + */
89387 ++#undef vzalloc_node
89388 + void *vzalloc_node(unsigned long size, int node)
89389 + {
89390 + return __vmalloc_node_flags(size, node,
89391 +@@ -1776,10 +1844,10 @@ EXPORT_SYMBOL(vzalloc_node);
89392 * For tight control over page level allocator and protection flags
89393 * use __vmalloc() instead.
89394 */
89395 @@ -75208,7 +71479,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89396 -1, __builtin_return_address(0));
89397 }
89398
89399 -@@ -1687,6 +1755,7 @@ void *vmalloc_exec(unsigned long size)
89400 +@@ -1798,6 +1866,7 @@ void *vmalloc_exec(unsigned long size)
89401 * Allocate enough 32bit PA addressable pages to cover @size from the
89402 * page level allocator and map them into contiguous kernel virtual space.
89403 */
89404 @@ -75216,7 +71487,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89405 void *vmalloc_32(unsigned long size)
89406 {
89407 return __vmalloc_node(size, 1, GFP_VMALLOC32, PAGE_KERNEL,
89408 -@@ -1701,6 +1770,7 @@ EXPORT_SYMBOL(vmalloc_32);
89409 +@@ -1812,6 +1881,7 @@ EXPORT_SYMBOL(vmalloc_32);
89410 * The resulting memory area is 32bit addressable and zeroed so it can be
89411 * mapped to userspace without leaking data.
89412 */
89413 @@ -75224,7 +71495,7 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89414 void *vmalloc_32_user(unsigned long size)
89415 {
89416 struct vm_struct *area;
89417 -@@ -1965,6 +2035,8 @@ int remap_vmalloc_range(struct vm_area_s
89418 +@@ -2074,6 +2144,8 @@ int remap_vmalloc_range(struct vm_area_s
89419 unsigned long uaddr = vma->vm_start;
89420 unsigned long usize = vma->vm_end - vma->vm_start;
89421
89422 @@ -75233,10 +71504,10 @@ diff -urNp linux-2.6.32.48/mm/vmalloc.c linux-2.6.32.48/mm/vmalloc.c
89423 if ((PAGE_SIZE-1) & (unsigned long)addr)
89424 return -EINVAL;
89425
89426 -diff -urNp linux-2.6.32.48/mm/vmstat.c linux-2.6.32.48/mm/vmstat.c
89427 ---- linux-2.6.32.48/mm/vmstat.c 2011-11-12 12:44:30.000000000 -0500
89428 -+++ linux-2.6.32.48/mm/vmstat.c 2011-11-12 12:46:47.000000000 -0500
89429 -@@ -74,7 +74,7 @@ void vm_events_fold_cpu(int cpu)
89430 +diff -urNp linux-3.0.8/mm/vmstat.c linux-3.0.8/mm/vmstat.c
89431 +--- linux-3.0.8/mm/vmstat.c 2011-07-21 22:17:23.000000000 -0400
89432 ++++ linux-3.0.8/mm/vmstat.c 2011-08-23 21:48:14.000000000 -0400
89433 +@@ -78,7 +78,7 @@ void vm_events_fold_cpu(int cpu)
89434 *
89435 * vm_stat contains the global counters
89436 */
89437 @@ -75245,7 +71516,7 @@ diff -urNp linux-2.6.32.48/mm/vmstat.c linux-2.6.32.48/mm/vmstat.c
89438 EXPORT_SYMBOL(vm_stat);
89439
89440 #ifdef CONFIG_SMP
89441 -@@ -324,7 +324,7 @@ void refresh_cpu_vm_stats(int cpu)
89442 +@@ -454,7 +454,7 @@ void refresh_cpu_vm_stats(int cpu)
89443 v = p->vm_stat_diff[i];
89444 p->vm_stat_diff[i] = 0;
89445 local_irq_restore(flags);
89446 @@ -75254,7 +71525,7 @@ diff -urNp linux-2.6.32.48/mm/vmstat.c linux-2.6.32.48/mm/vmstat.c
89447 global_diff[i] += v;
89448 #ifdef CONFIG_NUMA
89449 /* 3 seconds idle till flush */
89450 -@@ -362,7 +362,7 @@ void refresh_cpu_vm_stats(int cpu)
89451 +@@ -492,7 +492,7 @@ void refresh_cpu_vm_stats(int cpu)
89452
89453 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
89454 if (global_diff[i])
89455 @@ -75263,7 +71534,7 @@ diff -urNp linux-2.6.32.48/mm/vmstat.c linux-2.6.32.48/mm/vmstat.c
89456 }
89457
89458 #endif
89459 -@@ -953,10 +953,20 @@ static int __init setup_vmstat(void)
89460 +@@ -1207,10 +1207,20 @@ static int __init setup_vmstat(void)
89461 start_cpu_timer(cpu);
89462 #endif
89463 #ifdef CONFIG_PROC_FS
89464 @@ -75288,10 +71559,10 @@ diff -urNp linux-2.6.32.48/mm/vmstat.c linux-2.6.32.48/mm/vmstat.c
89465 #endif
89466 return 0;
89467 }
89468 -diff -urNp linux-2.6.32.48/net/8021q/vlan.c linux-2.6.32.48/net/8021q/vlan.c
89469 ---- linux-2.6.32.48/net/8021q/vlan.c 2009-12-02 22:51:21.000000000 -0500
89470 -+++ linux-2.6.32.48/net/8021q/vlan.c 2011-11-12 12:46:47.000000000 -0500
89471 -@@ -622,8 +622,7 @@ static int vlan_ioctl_handler(struct net
89472 +diff -urNp linux-3.0.8/net/8021q/vlan.c linux-3.0.8/net/8021q/vlan.c
89473 +--- linux-3.0.8/net/8021q/vlan.c 2011-07-21 22:17:23.000000000 -0400
89474 ++++ linux-3.0.8/net/8021q/vlan.c 2011-08-23 21:47:56.000000000 -0400
89475 +@@ -591,8 +591,7 @@ static int vlan_ioctl_handler(struct net
89476 err = -EPERM;
89477 if (!capable(CAP_NET_ADMIN))
89478 break;
89479 @@ -75301,10 +71572,10 @@ diff -urNp linux-2.6.32.48/net/8021q/vlan.c linux-2.6.32.48/net/8021q/vlan.c
89480 struct vlan_net *vn;
89481
89482 vn = net_generic(net, vlan_net_id);
89483 -diff -urNp linux-2.6.32.48/net/9p/trans_fd.c linux-2.6.32.48/net/9p/trans_fd.c
89484 ---- linux-2.6.32.48/net/9p/trans_fd.c 2011-11-12 12:44:30.000000000 -0500
89485 -+++ linux-2.6.32.48/net/9p/trans_fd.c 2011-11-12 12:46:47.000000000 -0500
89486 -@@ -419,7 +419,7 @@ static int p9_fd_write(struct p9_client
89487 +diff -urNp linux-3.0.8/net/9p/trans_fd.c linux-3.0.8/net/9p/trans_fd.c
89488 +--- linux-3.0.8/net/9p/trans_fd.c 2011-07-21 22:17:23.000000000 -0400
89489 ++++ linux-3.0.8/net/9p/trans_fd.c 2011-10-06 04:17:55.000000000 -0400
89490 +@@ -423,7 +423,7 @@ static int p9_fd_write(struct p9_client
89491 oldfs = get_fs();
89492 set_fs(get_ds());
89493 /* The cast to a user pointer is valid due to the set_fs() */
89494 @@ -75313,48 +71584,69 @@ diff -urNp linux-2.6.32.48/net/9p/trans_fd.c linux-2.6.32.48/net/9p/trans_fd.c
89495 set_fs(oldfs);
89496
89497 if (ret <= 0 && ret != -ERESTARTSYS && ret != -EAGAIN)
89498 -diff -urNp linux-2.6.32.48/net/atm/atm_misc.c linux-2.6.32.48/net/atm/atm_misc.c
89499 ---- linux-2.6.32.48/net/atm/atm_misc.c 2009-12-02 22:51:21.000000000 -0500
89500 -+++ linux-2.6.32.48/net/atm/atm_misc.c 2011-11-12 12:46:47.000000000 -0500
89501 -@@ -19,7 +19,7 @@ int atm_charge(struct atm_vcc *vcc,int t
89502 +diff -urNp linux-3.0.8/net/9p/trans_virtio.c linux-3.0.8/net/9p/trans_virtio.c
89503 +--- linux-3.0.8/net/9p/trans_virtio.c 2011-10-24 08:05:30.000000000 -0400
89504 ++++ linux-3.0.8/net/9p/trans_virtio.c 2011-10-16 21:55:28.000000000 -0400
89505 +@@ -327,7 +327,7 @@ req_retry_pinned:
89506 + } else {
89507 + char *pbuf;
89508 + if (req->tc->pubuf)
89509 +- pbuf = (__force char *) req->tc->pubuf;
89510 ++ pbuf = (char __force_kernel *) req->tc->pubuf;
89511 + else
89512 + pbuf = req->tc->pkbuf;
89513 + outp = pack_sg_list(chan->sg, out, VIRTQUEUE_NUM, pbuf,
89514 +@@ -357,7 +357,7 @@ req_retry_pinned:
89515 + } else {
89516 + char *pbuf;
89517 + if (req->tc->pubuf)
89518 +- pbuf = (__force char *) req->tc->pubuf;
89519 ++ pbuf = (char __force_kernel *) req->tc->pubuf;
89520 + else
89521 + pbuf = req->tc->pkbuf;
89522 +
89523 +diff -urNp linux-3.0.8/net/atm/atm_misc.c linux-3.0.8/net/atm/atm_misc.c
89524 +--- linux-3.0.8/net/atm/atm_misc.c 2011-07-21 22:17:23.000000000 -0400
89525 ++++ linux-3.0.8/net/atm/atm_misc.c 2011-08-23 21:47:56.000000000 -0400
89526 +@@ -17,7 +17,7 @@ int atm_charge(struct atm_vcc *vcc, int
89527 if (atomic_read(&sk_atm(vcc)->sk_rmem_alloc) <= sk_atm(vcc)->sk_rcvbuf)
89528 return 1;
89529 - atm_return(vcc,truesize);
89530 + atm_return(vcc, truesize);
89531 - atomic_inc(&vcc->stats->rx_drop);
89532 + atomic_inc_unchecked(&vcc->stats->rx_drop);
89533 return 0;
89534 }
89535 -
89536 -@@ -41,7 +41,7 @@ struct sk_buff *atm_alloc_charge(struct
89537 + EXPORT_SYMBOL(atm_charge);
89538 +@@ -39,7 +39,7 @@ struct sk_buff *atm_alloc_charge(struct
89539 }
89540 }
89541 - atm_return(vcc,guess);
89542 + atm_return(vcc, guess);
89543 - atomic_inc(&vcc->stats->rx_drop);
89544 + atomic_inc_unchecked(&vcc->stats->rx_drop);
89545 return NULL;
89546 }
89547 + EXPORT_SYMBOL(atm_alloc_charge);
89548 +@@ -86,7 +86,7 @@ EXPORT_SYMBOL(atm_pcr_goal);
89549
89550 -@@ -88,7 +88,7 @@ int atm_pcr_goal(const struct atm_trafpr
89551 -
89552 - void sonet_copy_stats(struct k_sonet_stats *from,struct sonet_stats *to)
89553 + void sonet_copy_stats(struct k_sonet_stats *from, struct sonet_stats *to)
89554 {
89555 -#define __HANDLE_ITEM(i) to->i = atomic_read(&from->i)
89556 +#define __HANDLE_ITEM(i) to->i = atomic_read_unchecked(&from->i)
89557 __SONET_ITEMS
89558 #undef __HANDLE_ITEM
89559 }
89560 -@@ -96,7 +96,7 @@ void sonet_copy_stats(struct k_sonet_sta
89561 +@@ -94,7 +94,7 @@ EXPORT_SYMBOL(sonet_copy_stats);
89562
89563 - void sonet_subtract_stats(struct k_sonet_stats *from,struct sonet_stats *to)
89564 + void sonet_subtract_stats(struct k_sonet_stats *from, struct sonet_stats *to)
89565 {
89566 --#define __HANDLE_ITEM(i) atomic_sub(to->i,&from->i)
89567 +-#define __HANDLE_ITEM(i) atomic_sub(to->i, &from->i)
89568 +#define __HANDLE_ITEM(i) atomic_sub_unchecked(to->i,&from->i)
89569 __SONET_ITEMS
89570 #undef __HANDLE_ITEM
89571 }
89572 -diff -urNp linux-2.6.32.48/net/atm/lec.h linux-2.6.32.48/net/atm/lec.h
89573 ---- linux-2.6.32.48/net/atm/lec.h 2009-12-02 22:51:21.000000000 -0500
89574 -+++ linux-2.6.32.48/net/atm/lec.h 2011-11-12 12:46:47.000000000 -0500
89575 +diff -urNp linux-3.0.8/net/atm/lec.h linux-3.0.8/net/atm/lec.h
89576 +--- linux-3.0.8/net/atm/lec.h 2011-07-21 22:17:23.000000000 -0400
89577 ++++ linux-3.0.8/net/atm/lec.h 2011-08-23 21:47:56.000000000 -0400
89578 @@ -48,7 +48,7 @@ struct lane2_ops {
89579 const u8 *tlvs, u32 sizeoftlvs);
89580 void (*associate_indicator) (struct net_device *dev, const u8 *mac_addr,
89581 @@ -75364,9 +71656,9 @@ diff -urNp linux-2.6.32.48/net/atm/lec.h linux-2.6.32.48/net/atm/lec.h
89582
89583 /*
89584 * ATM LAN Emulation supports both LLC & Dix Ethernet EtherType
89585 -diff -urNp linux-2.6.32.48/net/atm/mpc.h linux-2.6.32.48/net/atm/mpc.h
89586 ---- linux-2.6.32.48/net/atm/mpc.h 2009-12-02 22:51:21.000000000 -0500
89587 -+++ linux-2.6.32.48/net/atm/mpc.h 2011-11-12 12:46:47.000000000 -0500
89588 +diff -urNp linux-3.0.8/net/atm/mpc.h linux-3.0.8/net/atm/mpc.h
89589 +--- linux-3.0.8/net/atm/mpc.h 2011-07-21 22:17:23.000000000 -0400
89590 ++++ linux-3.0.8/net/atm/mpc.h 2011-08-23 21:47:56.000000000 -0400
89591 @@ -33,7 +33,7 @@ struct mpoa_client {
89592 struct mpc_parameters parameters; /* parameters for this client */
89593
89594 @@ -75376,10 +71668,10 @@ diff -urNp linux-2.6.32.48/net/atm/mpc.h linux-2.6.32.48/net/atm/mpc.h
89595 };
89596
89597
89598 -diff -urNp linux-2.6.32.48/net/atm/mpoa_caches.c linux-2.6.32.48/net/atm/mpoa_caches.c
89599 ---- linux-2.6.32.48/net/atm/mpoa_caches.c 2009-12-02 22:51:21.000000000 -0500
89600 -+++ linux-2.6.32.48/net/atm/mpoa_caches.c 2011-11-12 12:46:47.000000000 -0500
89601 -@@ -498,6 +498,8 @@ static void clear_expired(struct mpoa_cl
89602 +diff -urNp linux-3.0.8/net/atm/mpoa_caches.c linux-3.0.8/net/atm/mpoa_caches.c
89603 +--- linux-3.0.8/net/atm/mpoa_caches.c 2011-07-21 22:17:23.000000000 -0400
89604 ++++ linux-3.0.8/net/atm/mpoa_caches.c 2011-08-23 21:48:14.000000000 -0400
89605 +@@ -255,6 +255,8 @@ static void check_resolving_entries(stru
89606 struct timeval now;
89607 struct k_message msg;
89608
89609 @@ -75387,52 +71679,27 @@ diff -urNp linux-2.6.32.48/net/atm/mpoa_caches.c linux-2.6.32.48/net/atm/mpoa_ca
89610 +
89611 do_gettimeofday(&now);
89612
89613 - write_lock_irq(&client->egress_lock);
89614 -diff -urNp linux-2.6.32.48/net/atm/proc.c linux-2.6.32.48/net/atm/proc.c
89615 ---- linux-2.6.32.48/net/atm/proc.c 2009-12-02 22:51:21.000000000 -0500
89616 -+++ linux-2.6.32.48/net/atm/proc.c 2011-11-12 12:46:47.000000000 -0500
89617 -@@ -43,9 +43,9 @@ static void add_stats(struct seq_file *s
89618 + read_lock_bh(&client->ingress_lock);
89619 +diff -urNp linux-3.0.8/net/atm/proc.c linux-3.0.8/net/atm/proc.c
89620 +--- linux-3.0.8/net/atm/proc.c 2011-07-21 22:17:23.000000000 -0400
89621 ++++ linux-3.0.8/net/atm/proc.c 2011-08-23 21:47:56.000000000 -0400
89622 +@@ -45,9 +45,9 @@ static void add_stats(struct seq_file *s
89623 const struct k_atm_aal_stats *stats)
89624 {
89625 seq_printf(seq, "%s ( %d %d %d %d %d )", aal,
89626 -- atomic_read(&stats->tx),atomic_read(&stats->tx_err),
89627 -- atomic_read(&stats->rx),atomic_read(&stats->rx_err),
89628 -- atomic_read(&stats->rx_drop));
89629 -+ atomic_read_unchecked(&stats->tx),atomic_read_unchecked(&stats->tx_err),
89630 -+ atomic_read_unchecked(&stats->rx),atomic_read_unchecked(&stats->rx_err),
89631 -+ atomic_read_unchecked(&stats->rx_drop));
89632 +- atomic_read(&stats->tx), atomic_read(&stats->tx_err),
89633 +- atomic_read(&stats->rx), atomic_read(&stats->rx_err),
89634 +- atomic_read(&stats->rx_drop));
89635 ++ atomic_read_unchecked(&stats->tx),atomic_read_unchecked(&stats->tx_err),
89636 ++ atomic_read_unchecked(&stats->rx),atomic_read_unchecked(&stats->rx_err),
89637 ++ atomic_read_unchecked(&stats->rx_drop));
89638 }
89639
89640 static void atm_dev_info(struct seq_file *seq, const struct atm_dev *dev)
89641 -@@ -188,7 +188,12 @@ static void vcc_info(struct seq_file *se
89642 - {
89643 - struct sock *sk = sk_atm(vcc);
89644 -
89645 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
89646 -+ seq_printf(seq, "%p ", NULL);
89647 -+#else
89648 - seq_printf(seq, "%p ", vcc);
89649 -+#endif
89650 -+
89651 - if (!vcc->dev)
89652 - seq_printf(seq, "Unassigned ");
89653 - else
89654 -@@ -214,7 +219,11 @@ static void svc_info(struct seq_file *se
89655 - {
89656 - if (!vcc->dev)
89657 - seq_printf(seq, sizeof(void *) == 4 ?
89658 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
89659 -+ "N/A@%p%10s" : "N/A@%p%2s", NULL, "");
89660 -+#else
89661 - "N/A@%p%10s" : "N/A@%p%2s", vcc, "");
89662 -+#endif
89663 - else
89664 - seq_printf(seq, "%3d %3d %5d ",
89665 - vcc->dev->number, vcc->vpi, vcc->vci);
89666 -diff -urNp linux-2.6.32.48/net/atm/resources.c linux-2.6.32.48/net/atm/resources.c
89667 ---- linux-2.6.32.48/net/atm/resources.c 2009-12-02 22:51:21.000000000 -0500
89668 -+++ linux-2.6.32.48/net/atm/resources.c 2011-11-12 12:46:47.000000000 -0500
89669 -@@ -161,7 +161,7 @@ void atm_dev_deregister(struct atm_dev *
89670 +diff -urNp linux-3.0.8/net/atm/resources.c linux-3.0.8/net/atm/resources.c
89671 +--- linux-3.0.8/net/atm/resources.c 2011-07-21 22:17:23.000000000 -0400
89672 ++++ linux-3.0.8/net/atm/resources.c 2011-08-23 21:47:56.000000000 -0400
89673 +@@ -160,7 +160,7 @@ EXPORT_SYMBOL(atm_dev_deregister);
89674 static void copy_aal_stats(struct k_atm_aal_stats *from,
89675 struct atm_aal_stats *to)
89676 {
89677 @@ -75441,7 +71708,7 @@ diff -urNp linux-2.6.32.48/net/atm/resources.c linux-2.6.32.48/net/atm/resources
89678 __AAL_STAT_ITEMS
89679 #undef __HANDLE_ITEM
89680 }
89681 -@@ -170,7 +170,7 @@ static void copy_aal_stats(struct k_atm_
89682 +@@ -168,7 +168,7 @@ static void copy_aal_stats(struct k_atm_
89683 static void subtract_aal_stats(struct k_atm_aal_stats *from,
89684 struct atm_aal_stats *to)
89685 {
89686 @@ -75450,77 +71717,328 @@ diff -urNp linux-2.6.32.48/net/atm/resources.c linux-2.6.32.48/net/atm/resources
89687 __AAL_STAT_ITEMS
89688 #undef __HANDLE_ITEM
89689 }
89690 -diff -urNp linux-2.6.32.48/net/bridge/br_private.h linux-2.6.32.48/net/bridge/br_private.h
89691 ---- linux-2.6.32.48/net/bridge/br_private.h 2011-11-12 12:44:30.000000000 -0500
89692 -+++ linux-2.6.32.48/net/bridge/br_private.h 2011-11-12 12:46:51.000000000 -0500
89693 -@@ -255,7 +255,7 @@ extern void br_ifinfo_notify(int event,
89694 +diff -urNp linux-3.0.8/net/batman-adv/hard-interface.c linux-3.0.8/net/batman-adv/hard-interface.c
89695 +--- linux-3.0.8/net/batman-adv/hard-interface.c 2011-07-21 22:17:23.000000000 -0400
89696 ++++ linux-3.0.8/net/batman-adv/hard-interface.c 2011-08-23 21:47:56.000000000 -0400
89697 +@@ -351,8 +351,8 @@ int hardif_enable_interface(struct hard_
89698 + hard_iface->batman_adv_ptype.dev = hard_iface->net_dev;
89699 + dev_add_pack(&hard_iface->batman_adv_ptype);
89700 +
89701 +- atomic_set(&hard_iface->seqno, 1);
89702 +- atomic_set(&hard_iface->frag_seqno, 1);
89703 ++ atomic_set_unchecked(&hard_iface->seqno, 1);
89704 ++ atomic_set_unchecked(&hard_iface->frag_seqno, 1);
89705 + bat_info(hard_iface->soft_iface, "Adding interface: %s\n",
89706 + hard_iface->net_dev->name);
89707 +
89708 +diff -urNp linux-3.0.8/net/batman-adv/routing.c linux-3.0.8/net/batman-adv/routing.c
89709 +--- linux-3.0.8/net/batman-adv/routing.c 2011-07-21 22:17:23.000000000 -0400
89710 ++++ linux-3.0.8/net/batman-adv/routing.c 2011-08-23 21:47:56.000000000 -0400
89711 +@@ -627,7 +627,7 @@ void receive_bat_packet(struct ethhdr *e
89712 + return;
89713
89714 - #ifdef CONFIG_SYSFS
89715 - /* br_sysfs_if.c */
89716 --extern struct sysfs_ops brport_sysfs_ops;
89717 -+extern const struct sysfs_ops brport_sysfs_ops;
89718 - extern int br_sysfs_addif(struct net_bridge_port *p);
89719 -
89720 - /* br_sysfs_br.c */
89721 -diff -urNp linux-2.6.32.48/net/bridge/br_stp_if.c linux-2.6.32.48/net/bridge/br_stp_if.c
89722 ---- linux-2.6.32.48/net/bridge/br_stp_if.c 2009-12-02 22:51:21.000000000 -0500
89723 -+++ linux-2.6.32.48/net/bridge/br_stp_if.c 2011-11-12 12:46:51.000000000 -0500
89724 -@@ -146,7 +146,7 @@ static void br_stp_stop(struct net_bridg
89725 - char *envp[] = { NULL };
89726 -
89727 - if (br->stp_enabled == BR_USER_STP) {
89728 -- r = call_usermodehelper(BR_STP_PROG, argv, envp, 1);
89729 -+ r = call_usermodehelper(BR_STP_PROG, argv, envp, UMH_WAIT_PROC);
89730 - printk(KERN_INFO "%s: userspace STP stopped, return code %d\n",
89731 - br->dev->name, r);
89732 -
89733 -diff -urNp linux-2.6.32.48/net/bridge/br_sysfs_if.c linux-2.6.32.48/net/bridge/br_sysfs_if.c
89734 ---- linux-2.6.32.48/net/bridge/br_sysfs_if.c 2009-12-02 22:51:21.000000000 -0500
89735 -+++ linux-2.6.32.48/net/bridge/br_sysfs_if.c 2011-11-12 12:46:51.000000000 -0500
89736 -@@ -220,7 +220,7 @@ static ssize_t brport_store(struct kobje
89737 - return ret;
89738 - }
89739 + /* could be changed by schedule_own_packet() */
89740 +- if_incoming_seqno = atomic_read(&if_incoming->seqno);
89741 ++ if_incoming_seqno = atomic_read_unchecked(&if_incoming->seqno);
89742
89743 --struct sysfs_ops brport_sysfs_ops = {
89744 -+const struct sysfs_ops brport_sysfs_ops = {
89745 - .show = brport_show,
89746 - .store = brport_store,
89747 - };
89748 -diff -urNp linux-2.6.32.48/net/bridge/netfilter/ebtables.c linux-2.6.32.48/net/bridge/netfilter/ebtables.c
89749 ---- linux-2.6.32.48/net/bridge/netfilter/ebtables.c 2011-11-12 12:44:30.000000000 -0500
89750 -+++ linux-2.6.32.48/net/bridge/netfilter/ebtables.c 2011-11-12 12:46:51.000000000 -0500
89751 -@@ -1337,6 +1337,8 @@ static int copy_everything_to_user(struc
89752 - unsigned int entries_size, nentries;
89753 - char *entries;
89754 + has_directlink_flag = (batman_packet->flags & DIRECTLINK ? 1 : 0);
89755 +
89756 +diff -urNp linux-3.0.8/net/batman-adv/send.c linux-3.0.8/net/batman-adv/send.c
89757 +--- linux-3.0.8/net/batman-adv/send.c 2011-07-21 22:17:23.000000000 -0400
89758 ++++ linux-3.0.8/net/batman-adv/send.c 2011-08-23 21:47:56.000000000 -0400
89759 +@@ -279,7 +279,7 @@ void schedule_own_packet(struct hard_ifa
89760 +
89761 + /* change sequence number to network order */
89762 + batman_packet->seqno =
89763 +- htonl((uint32_t)atomic_read(&hard_iface->seqno));
89764 ++ htonl((uint32_t)atomic_read_unchecked(&hard_iface->seqno));
89765 +
89766 + if (vis_server == VIS_TYPE_SERVER_SYNC)
89767 + batman_packet->flags |= VIS_SERVER;
89768 +@@ -293,7 +293,7 @@ void schedule_own_packet(struct hard_ifa
89769 + else
89770 + batman_packet->gw_flags = 0;
89771 +
89772 +- atomic_inc(&hard_iface->seqno);
89773 ++ atomic_inc_unchecked(&hard_iface->seqno);
89774 +
89775 + slide_own_bcast_window(hard_iface);
89776 + send_time = own_send_time(bat_priv);
89777 +diff -urNp linux-3.0.8/net/batman-adv/soft-interface.c linux-3.0.8/net/batman-adv/soft-interface.c
89778 +--- linux-3.0.8/net/batman-adv/soft-interface.c 2011-07-21 22:17:23.000000000 -0400
89779 ++++ linux-3.0.8/net/batman-adv/soft-interface.c 2011-08-23 21:47:56.000000000 -0400
89780 +@@ -628,7 +628,7 @@ int interface_tx(struct sk_buff *skb, st
89781 +
89782 + /* set broadcast sequence number */
89783 + bcast_packet->seqno =
89784 +- htonl(atomic_inc_return(&bat_priv->bcast_seqno));
89785 ++ htonl(atomic_inc_return_unchecked(&bat_priv->bcast_seqno));
89786 +
89787 + add_bcast_packet_to_list(bat_priv, skb);
89788 +
89789 +@@ -830,7 +830,7 @@ struct net_device *softif_create(char *n
89790 + atomic_set(&bat_priv->batman_queue_left, BATMAN_QUEUE_LEN);
89791 +
89792 + atomic_set(&bat_priv->mesh_state, MESH_INACTIVE);
89793 +- atomic_set(&bat_priv->bcast_seqno, 1);
89794 ++ atomic_set_unchecked(&bat_priv->bcast_seqno, 1);
89795 + atomic_set(&bat_priv->tt_local_changed, 0);
89796 +
89797 + bat_priv->primary_if = NULL;
89798 +diff -urNp linux-3.0.8/net/batman-adv/types.h linux-3.0.8/net/batman-adv/types.h
89799 +--- linux-3.0.8/net/batman-adv/types.h 2011-07-21 22:17:23.000000000 -0400
89800 ++++ linux-3.0.8/net/batman-adv/types.h 2011-08-23 21:47:56.000000000 -0400
89801 +@@ -38,8 +38,8 @@ struct hard_iface {
89802 + int16_t if_num;
89803 + char if_status;
89804 + struct net_device *net_dev;
89805 +- atomic_t seqno;
89806 +- atomic_t frag_seqno;
89807 ++ atomic_unchecked_t seqno;
89808 ++ atomic_unchecked_t frag_seqno;
89809 + unsigned char *packet_buff;
89810 + int packet_len;
89811 + struct kobject *hardif_obj;
89812 +@@ -142,7 +142,7 @@ struct bat_priv {
89813 + atomic_t orig_interval; /* uint */
89814 + atomic_t hop_penalty; /* uint */
89815 + atomic_t log_level; /* uint */
89816 +- atomic_t bcast_seqno;
89817 ++ atomic_unchecked_t bcast_seqno;
89818 + atomic_t bcast_queue_left;
89819 + atomic_t batman_queue_left;
89820 + char num_ifaces;
89821 +diff -urNp linux-3.0.8/net/batman-adv/unicast.c linux-3.0.8/net/batman-adv/unicast.c
89822 +--- linux-3.0.8/net/batman-adv/unicast.c 2011-07-21 22:17:23.000000000 -0400
89823 ++++ linux-3.0.8/net/batman-adv/unicast.c 2011-08-23 21:47:56.000000000 -0400
89824 +@@ -265,7 +265,7 @@ int frag_send_skb(struct sk_buff *skb, s
89825 + frag1->flags = UNI_FRAG_HEAD | large_tail;
89826 + frag2->flags = large_tail;
89827 +
89828 +- seqno = atomic_add_return(2, &hard_iface->frag_seqno);
89829 ++ seqno = atomic_add_return_unchecked(2, &hard_iface->frag_seqno);
89830 + frag1->seqno = htons(seqno - 1);
89831 + frag2->seqno = htons(seqno);
89832 +
89833 +diff -urNp linux-3.0.8/net/bridge/br_multicast.c linux-3.0.8/net/bridge/br_multicast.c
89834 +--- linux-3.0.8/net/bridge/br_multicast.c 2011-10-24 08:05:30.000000000 -0400
89835 ++++ linux-3.0.8/net/bridge/br_multicast.c 2011-10-16 21:55:28.000000000 -0400
89836 +@@ -1485,7 +1485,7 @@ static int br_multicast_ipv6_rcv(struct
89837 + nexthdr = ip6h->nexthdr;
89838 + offset = ipv6_skip_exthdr(skb, sizeof(*ip6h), &nexthdr);
89839 +
89840 +- if (offset < 0 || nexthdr != IPPROTO_ICMPV6)
89841 ++ if (nexthdr != IPPROTO_ICMPV6)
89842 + return 0;
89843 +
89844 + /* Okay, we found ICMPv6 header */
89845 +diff -urNp linux-3.0.8/net/bridge/netfilter/ebtables.c linux-3.0.8/net/bridge/netfilter/ebtables.c
89846 +--- linux-3.0.8/net/bridge/netfilter/ebtables.c 2011-07-21 22:17:23.000000000 -0400
89847 ++++ linux-3.0.8/net/bridge/netfilter/ebtables.c 2011-08-23 21:48:14.000000000 -0400
89848 +@@ -1512,7 +1512,7 @@ static int do_ebt_get_ctl(struct sock *s
89849 + tmp.valid_hooks = t->table->valid_hooks;
89850 + }
89851 + mutex_unlock(&ebt_mutex);
89852 +- if (copy_to_user(user, &tmp, *len) != 0){
89853 ++ if (*len > sizeof(tmp) || copy_to_user(user, &tmp, *len) != 0){
89854 + BUGPRINT("c2u Didn't work\n");
89855 + ret = -EFAULT;
89856 + break;
89857 +@@ -1780,6 +1780,8 @@ static int compat_copy_everything_to_use
89858 + int ret;
89859 + void __user *pos;
89860
89861 + pax_track_stack();
89862 +
89863 + memset(&tinfo, 0, sizeof(tinfo));
89864 +
89865 if (cmd == EBT_SO_GET_ENTRIES) {
89866 - entries_size = t->private->entries_size;
89867 - nentries = t->private->nentries;
89868 -diff -urNp linux-2.6.32.48/net/can/bcm.c linux-2.6.32.48/net/can/bcm.c
89869 ---- linux-2.6.32.48/net/can/bcm.c 2011-11-12 12:44:30.000000000 -0500
89870 -+++ linux-2.6.32.48/net/can/bcm.c 2011-11-12 12:46:51.000000000 -0500
89871 -@@ -164,9 +164,15 @@ static int bcm_proc_show(struct seq_file
89872 - struct bcm_sock *bo = bcm_sk(sk);
89873 - struct bcm_op *op;
89874 +diff -urNp linux-3.0.8/net/caif/caif_socket.c linux-3.0.8/net/caif/caif_socket.c
89875 +--- linux-3.0.8/net/caif/caif_socket.c 2011-07-21 22:17:23.000000000 -0400
89876 ++++ linux-3.0.8/net/caif/caif_socket.c 2011-08-23 21:47:56.000000000 -0400
89877 +@@ -48,19 +48,20 @@ static struct dentry *debugfsdir;
89878 + #ifdef CONFIG_DEBUG_FS
89879 + struct debug_fs_counter {
89880 + atomic_t caif_nr_socks;
89881 +- atomic_t caif_sock_create;
89882 +- atomic_t num_connect_req;
89883 +- atomic_t num_connect_resp;
89884 +- atomic_t num_connect_fail_resp;
89885 +- atomic_t num_disconnect;
89886 +- atomic_t num_remote_shutdown_ind;
89887 +- atomic_t num_tx_flow_off_ind;
89888 +- atomic_t num_tx_flow_on_ind;
89889 +- atomic_t num_rx_flow_off;
89890 +- atomic_t num_rx_flow_on;
89891 ++ atomic_unchecked_t caif_sock_create;
89892 ++ atomic_unchecked_t num_connect_req;
89893 ++ atomic_unchecked_t num_connect_resp;
89894 ++ atomic_unchecked_t num_connect_fail_resp;
89895 ++ atomic_unchecked_t num_disconnect;
89896 ++ atomic_unchecked_t num_remote_shutdown_ind;
89897 ++ atomic_unchecked_t num_tx_flow_off_ind;
89898 ++ atomic_unchecked_t num_tx_flow_on_ind;
89899 ++ atomic_unchecked_t num_rx_flow_off;
89900 ++ atomic_unchecked_t num_rx_flow_on;
89901 + };
89902 + static struct debug_fs_counter cnt;
89903 + #define dbfs_atomic_inc(v) atomic_inc_return(v)
89904 ++#define dbfs_atomic_inc_unchecked(v) atomic_inc_return_unchecked(v)
89905 + #define dbfs_atomic_dec(v) atomic_dec_return(v)
89906 + #else
89907 + #define dbfs_atomic_inc(v) 0
89908 +@@ -161,7 +162,7 @@ static int caif_queue_rcv_skb(struct soc
89909 + atomic_read(&cf_sk->sk.sk_rmem_alloc),
89910 + sk_rcvbuf_lowwater(cf_sk));
89911 + set_rx_flow_off(cf_sk);
89912 +- dbfs_atomic_inc(&cnt.num_rx_flow_off);
89913 ++ dbfs_atomic_inc_unchecked(&cnt.num_rx_flow_off);
89914 + caif_flow_ctrl(sk, CAIF_MODEMCMD_FLOW_OFF_REQ);
89915 + }
89916 +
89917 +@@ -172,7 +173,7 @@ static int caif_queue_rcv_skb(struct soc
89918 + set_rx_flow_off(cf_sk);
89919 + if (net_ratelimit())
89920 + pr_debug("sending flow OFF due to rmem_schedule\n");
89921 +- dbfs_atomic_inc(&cnt.num_rx_flow_off);
89922 ++ dbfs_atomic_inc_unchecked(&cnt.num_rx_flow_off);
89923 + caif_flow_ctrl(sk, CAIF_MODEMCMD_FLOW_OFF_REQ);
89924 + }
89925 + skb->dev = NULL;
89926 +@@ -233,14 +234,14 @@ static void caif_ctrl_cb(struct cflayer
89927 + switch (flow) {
89928 + case CAIF_CTRLCMD_FLOW_ON_IND:
89929 + /* OK from modem to start sending again */
89930 +- dbfs_atomic_inc(&cnt.num_tx_flow_on_ind);
89931 ++ dbfs_atomic_inc_unchecked(&cnt.num_tx_flow_on_ind);
89932 + set_tx_flow_on(cf_sk);
89933 + cf_sk->sk.sk_state_change(&cf_sk->sk);
89934 + break;
89935
89936 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
89937 -+ seq_printf(m, ">>> socket %p", NULL);
89938 -+ seq_printf(m, " / sk %p", NULL);
89939 -+ seq_printf(m, " / bo %p", NULL);
89940 -+#else
89941 - seq_printf(m, ">>> socket %p", sk->sk_socket);
89942 - seq_printf(m, " / sk %p", sk);
89943 - seq_printf(m, " / bo %p", bo);
89944 -+#endif
89945 - seq_printf(m, " / dropped %lu", bo->dropped_usr_msgs);
89946 - seq_printf(m, " / bound %s", bcm_proc_getifname(ifname, bo->ifindex));
89947 - seq_printf(m, " <<<\n");
89948 -diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
89949 ---- linux-2.6.32.48/net/compat.c 2011-11-12 12:44:30.000000000 -0500
89950 -+++ linux-2.6.32.48/net/compat.c 2011-11-12 12:46:51.000000000 -0500
89951 -@@ -69,9 +69,9 @@ int get_compat_msghdr(struct msghdr *kms
89952 + case CAIF_CTRLCMD_FLOW_OFF_IND:
89953 + /* Modem asks us to shut up */
89954 +- dbfs_atomic_inc(&cnt.num_tx_flow_off_ind);
89955 ++ dbfs_atomic_inc_unchecked(&cnt.num_tx_flow_off_ind);
89956 + set_tx_flow_off(cf_sk);
89957 + cf_sk->sk.sk_state_change(&cf_sk->sk);
89958 + break;
89959 +@@ -249,7 +250,7 @@ static void caif_ctrl_cb(struct cflayer
89960 + /* We're now connected */
89961 + caif_client_register_refcnt(&cf_sk->layer,
89962 + cfsk_hold, cfsk_put);
89963 +- dbfs_atomic_inc(&cnt.num_connect_resp);
89964 ++ dbfs_atomic_inc_unchecked(&cnt.num_connect_resp);
89965 + cf_sk->sk.sk_state = CAIF_CONNECTED;
89966 + set_tx_flow_on(cf_sk);
89967 + cf_sk->sk.sk_state_change(&cf_sk->sk);
89968 +@@ -263,7 +264,7 @@ static void caif_ctrl_cb(struct cflayer
89969 +
89970 + case CAIF_CTRLCMD_INIT_FAIL_RSP:
89971 + /* Connect request failed */
89972 +- dbfs_atomic_inc(&cnt.num_connect_fail_resp);
89973 ++ dbfs_atomic_inc_unchecked(&cnt.num_connect_fail_resp);
89974 + cf_sk->sk.sk_err = ECONNREFUSED;
89975 + cf_sk->sk.sk_state = CAIF_DISCONNECTED;
89976 + cf_sk->sk.sk_shutdown = SHUTDOWN_MASK;
89977 +@@ -277,7 +278,7 @@ static void caif_ctrl_cb(struct cflayer
89978 +
89979 + case CAIF_CTRLCMD_REMOTE_SHUTDOWN_IND:
89980 + /* Modem has closed this connection, or device is down. */
89981 +- dbfs_atomic_inc(&cnt.num_remote_shutdown_ind);
89982 ++ dbfs_atomic_inc_unchecked(&cnt.num_remote_shutdown_ind);
89983 + cf_sk->sk.sk_shutdown = SHUTDOWN_MASK;
89984 + cf_sk->sk.sk_err = ECONNRESET;
89985 + set_rx_flow_on(cf_sk);
89986 +@@ -297,7 +298,7 @@ static void caif_check_flow_release(stru
89987 + return;
89988 +
89989 + if (atomic_read(&sk->sk_rmem_alloc) <= sk_rcvbuf_lowwater(cf_sk)) {
89990 +- dbfs_atomic_inc(&cnt.num_rx_flow_on);
89991 ++ dbfs_atomic_inc_unchecked(&cnt.num_rx_flow_on);
89992 + set_rx_flow_on(cf_sk);
89993 + caif_flow_ctrl(sk, CAIF_MODEMCMD_FLOW_ON_REQ);
89994 + }
89995 +@@ -854,7 +855,7 @@ static int caif_connect(struct socket *s
89996 + /*ifindex = id of the interface.*/
89997 + cf_sk->conn_req.ifindex = cf_sk->sk.sk_bound_dev_if;
89998 +
89999 +- dbfs_atomic_inc(&cnt.num_connect_req);
90000 ++ dbfs_atomic_inc_unchecked(&cnt.num_connect_req);
90001 + cf_sk->layer.receive = caif_sktrecv_cb;
90002 +
90003 + err = caif_connect_client(sock_net(sk), &cf_sk->conn_req,
90004 +@@ -943,7 +944,7 @@ static int caif_release(struct socket *s
90005 + spin_unlock_bh(&sk->sk_receive_queue.lock);
90006 + sock->sk = NULL;
90007 +
90008 +- dbfs_atomic_inc(&cnt.num_disconnect);
90009 ++ dbfs_atomic_inc_unchecked(&cnt.num_disconnect);
90010 +
90011 + WARN_ON(IS_ERR(cf_sk->debugfs_socket_dir));
90012 + if (cf_sk->debugfs_socket_dir != NULL)
90013 +@@ -1122,7 +1123,7 @@ static int caif_create(struct net *net,
90014 + cf_sk->conn_req.protocol = protocol;
90015 + /* Increase the number of sockets created. */
90016 + dbfs_atomic_inc(&cnt.caif_nr_socks);
90017 +- num = dbfs_atomic_inc(&cnt.caif_sock_create);
90018 ++ num = dbfs_atomic_inc_unchecked(&cnt.caif_sock_create);
90019 + #ifdef CONFIG_DEBUG_FS
90020 + if (!IS_ERR(debugfsdir)) {
90021 +
90022 +diff -urNp linux-3.0.8/net/caif/cfctrl.c linux-3.0.8/net/caif/cfctrl.c
90023 +--- linux-3.0.8/net/caif/cfctrl.c 2011-07-21 22:17:23.000000000 -0400
90024 ++++ linux-3.0.8/net/caif/cfctrl.c 2011-08-23 21:48:14.000000000 -0400
90025 +@@ -9,6 +9,7 @@
90026 + #include <linux/stddef.h>
90027 + #include <linux/spinlock.h>
90028 + #include <linux/slab.h>
90029 ++#include <linux/sched.h>
90030 + #include <net/caif/caif_layer.h>
90031 + #include <net/caif/cfpkt.h>
90032 + #include <net/caif/cfctrl.h>
90033 +@@ -45,8 +46,8 @@ struct cflayer *cfctrl_create(void)
90034 + dev_info.id = 0xff;
90035 + memset(this, 0, sizeof(*this));
90036 + cfsrvl_init(&this->serv, 0, &dev_info, false);
90037 +- atomic_set(&this->req_seq_no, 1);
90038 +- atomic_set(&this->rsp_seq_no, 1);
90039 ++ atomic_set_unchecked(&this->req_seq_no, 1);
90040 ++ atomic_set_unchecked(&this->rsp_seq_no, 1);
90041 + this->serv.layer.receive = cfctrl_recv;
90042 + sprintf(this->serv.layer.name, "ctrl");
90043 + this->serv.layer.ctrlcmd = cfctrl_ctrlcmd;
90044 +@@ -132,8 +133,8 @@ static void cfctrl_insert_req(struct cfc
90045 + struct cfctrl_request_info *req)
90046 + {
90047 + spin_lock_bh(&ctrl->info_list_lock);
90048 +- atomic_inc(&ctrl->req_seq_no);
90049 +- req->sequence_no = atomic_read(&ctrl->req_seq_no);
90050 ++ atomic_inc_unchecked(&ctrl->req_seq_no);
90051 ++ req->sequence_no = atomic_read_unchecked(&ctrl->req_seq_no);
90052 + list_add_tail(&req->list, &ctrl->list);
90053 + spin_unlock_bh(&ctrl->info_list_lock);
90054 + }
90055 +@@ -151,7 +152,7 @@ static struct cfctrl_request_info *cfctr
90056 + if (p != first)
90057 + pr_warn("Requests are not received in order\n");
90058 +
90059 +- atomic_set(&ctrl->rsp_seq_no,
90060 ++ atomic_set_unchecked(&ctrl->rsp_seq_no,
90061 + p->sequence_no);
90062 + list_del(&p->list);
90063 + goto out;
90064 +@@ -364,6 +365,7 @@ static int cfctrl_recv(struct cflayer *l
90065 + struct cfctrl *cfctrl = container_obj(layer);
90066 + struct cfctrl_request_info rsp, *req;
90067 +
90068 ++ pax_track_stack();
90069 +
90070 + cfpkt_extr_head(pkt, &cmdrsp, 1);
90071 + cmd = cmdrsp & CFCTRL_CMD_MASK;
90072 +diff -urNp linux-3.0.8/net/compat.c linux-3.0.8/net/compat.c
90073 +--- linux-3.0.8/net/compat.c 2011-07-21 22:17:23.000000000 -0400
90074 ++++ linux-3.0.8/net/compat.c 2011-10-06 04:17:55.000000000 -0400
90075 +@@ -70,9 +70,9 @@ int get_compat_msghdr(struct msghdr *kms
90076 __get_user(kmsg->msg_controllen, &umsg->msg_controllen) ||
90077 __get_user(kmsg->msg_flags, &umsg->msg_flags))
90078 return -EFAULT;
90079 @@ -75533,7 +72051,16 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90080 return 0;
90081 }
90082
90083 -@@ -94,7 +94,7 @@ int verify_compat_iovec(struct msghdr *k
90084 +@@ -84,7 +84,7 @@ int verify_compat_iovec(struct msghdr *k
90085 +
90086 + if (kern_msg->msg_namelen) {
90087 + if (mode == VERIFY_READ) {
90088 +- int err = move_addr_to_kernel(kern_msg->msg_name,
90089 ++ int err = move_addr_to_kernel((void __force_user *)kern_msg->msg_name,
90090 + kern_msg->msg_namelen,
90091 + kern_address);
90092 + if (err < 0)
90093 +@@ -95,7 +95,7 @@ int verify_compat_iovec(struct msghdr *k
90094 kern_msg->msg_name = NULL;
90095
90096 tot_len = iov_from_user_compat_to_kern(kern_iov,
90097 @@ -75542,7 +72069,7 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90098 kern_msg->msg_iovlen);
90099 if (tot_len >= 0)
90100 kern_msg->msg_iov = kern_iov;
90101 -@@ -114,20 +114,20 @@ int verify_compat_iovec(struct msghdr *k
90102 +@@ -115,20 +115,20 @@ int verify_compat_iovec(struct msghdr *k
90103
90104 #define CMSG_COMPAT_FIRSTHDR(msg) \
90105 (((msg)->msg_controllen) >= sizeof(struct compat_cmsghdr) ? \
90106 @@ -75566,7 +72093,7 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90107 msg->msg_controllen)
90108 return NULL;
90109 return (struct compat_cmsghdr __user *)ptr;
90110 -@@ -219,7 +219,7 @@ int put_cmsg_compat(struct msghdr *kmsg,
90111 +@@ -220,7 +220,7 @@ int put_cmsg_compat(struct msghdr *kmsg,
90112 {
90113 struct compat_timeval ctv;
90114 struct compat_timespec cts[3];
90115 @@ -75575,7 +72102,7 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90116 struct compat_cmsghdr cmhdr;
90117 int cmlen;
90118
90119 -@@ -271,7 +271,7 @@ int put_cmsg_compat(struct msghdr *kmsg,
90120 +@@ -272,7 +272,7 @@ int put_cmsg_compat(struct msghdr *kmsg,
90121
90122 void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm)
90123 {
90124 @@ -75584,7 +72111,16 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90125 int fdmax = (kmsg->msg_controllen - sizeof(struct compat_cmsghdr)) / sizeof(int);
90126 int fdnum = scm->fp->count;
90127 struct file **fp = scm->fp->fp;
90128 -@@ -433,7 +433,7 @@ static int do_get_sock_timeout(struct so
90129 +@@ -369,7 +369,7 @@ static int do_set_sock_timeout(struct so
90130 + return -EFAULT;
90131 + old_fs = get_fs();
90132 + set_fs(KERNEL_DS);
90133 +- err = sock_setsockopt(sock, level, optname, (char *)&ktime, sizeof(ktime));
90134 ++ err = sock_setsockopt(sock, level, optname, (char __force_user *)&ktime, sizeof(ktime));
90135 + set_fs(old_fs);
90136 +
90137 + return err;
90138 +@@ -430,7 +430,7 @@ static int do_get_sock_timeout(struct so
90139 len = sizeof(ktime);
90140 old_fs = get_fs();
90141 set_fs(KERNEL_DS);
90142 @@ -75593,7 +72129,7 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90143 set_fs(old_fs);
90144
90145 if (!err) {
90146 -@@ -570,7 +570,7 @@ int compat_mc_setsockopt(struct sock *so
90147 +@@ -565,7 +565,7 @@ int compat_mc_setsockopt(struct sock *so
90148 case MCAST_JOIN_GROUP:
90149 case MCAST_LEAVE_GROUP:
90150 {
90151 @@ -75602,7 +72138,7 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90152 struct group_req __user *kgr =
90153 compat_alloc_user_space(sizeof(struct group_req));
90154 u32 interface;
90155 -@@ -591,7 +591,7 @@ int compat_mc_setsockopt(struct sock *so
90156 +@@ -586,7 +586,7 @@ int compat_mc_setsockopt(struct sock *so
90157 case MCAST_BLOCK_SOURCE:
90158 case MCAST_UNBLOCK_SOURCE:
90159 {
90160 @@ -75611,7 +72147,7 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90161 struct group_source_req __user *kgsr = compat_alloc_user_space(
90162 sizeof(struct group_source_req));
90163 u32 interface;
90164 -@@ -612,7 +612,7 @@ int compat_mc_setsockopt(struct sock *so
90165 +@@ -607,7 +607,7 @@ int compat_mc_setsockopt(struct sock *so
90166 }
90167 case MCAST_MSFILTER:
90168 {
90169 @@ -75620,10 +72156,31 @@ diff -urNp linux-2.6.32.48/net/compat.c linux-2.6.32.48/net/compat.c
90170 struct group_filter __user *kgf;
90171 u32 interface, fmode, numsrc;
90172
90173 -diff -urNp linux-2.6.32.48/net/core/dev.c linux-2.6.32.48/net/core/dev.c
90174 ---- linux-2.6.32.48/net/core/dev.c 2011-11-12 12:44:30.000000000 -0500
90175 -+++ linux-2.6.32.48/net/core/dev.c 2011-11-12 12:46:51.000000000 -0500
90176 -@@ -1047,10 +1047,14 @@ void dev_load(struct net *net, const cha
90177 +@@ -645,7 +645,7 @@ int compat_mc_getsockopt(struct sock *so
90178 + char __user *optval, int __user *optlen,
90179 + int (*getsockopt)(struct sock *, int, int, char __user *, int __user *))
90180 + {
90181 +- struct compat_group_filter __user *gf32 = (void *)optval;
90182 ++ struct compat_group_filter __user *gf32 = (void __user *)optval;
90183 + struct group_filter __user *kgf;
90184 + int __user *koptlen;
90185 + u32 interface, fmode, numsrc;
90186 +diff -urNp linux-3.0.8/net/core/datagram.c linux-3.0.8/net/core/datagram.c
90187 +--- linux-3.0.8/net/core/datagram.c 2011-07-21 22:17:23.000000000 -0400
90188 ++++ linux-3.0.8/net/core/datagram.c 2011-08-23 21:47:56.000000000 -0400
90189 +@@ -285,7 +285,7 @@ int skb_kill_datagram(struct sock *sk, s
90190 + }
90191 +
90192 + kfree_skb(skb);
90193 +- atomic_inc(&sk->sk_drops);
90194 ++ atomic_inc_unchecked(&sk->sk_drops);
90195 + sk_mem_reclaim_partial(sk);
90196 +
90197 + return err;
90198 +diff -urNp linux-3.0.8/net/core/dev.c linux-3.0.8/net/core/dev.c
90199 +--- linux-3.0.8/net/core/dev.c 2011-07-21 22:17:23.000000000 -0400
90200 ++++ linux-3.0.8/net/core/dev.c 2011-08-23 21:48:14.000000000 -0400
90201 +@@ -1125,10 +1125,14 @@ void dev_load(struct net *net, const cha
90202 if (no_module && capable(CAP_NET_ADMIN))
90203 no_module = request_module("netdev-%s", name);
90204 if (no_module && capable(CAP_SYS_MODULE)) {
90205 @@ -75638,7 +72195,7 @@ diff -urNp linux-2.6.32.48/net/core/dev.c linux-2.6.32.48/net/core/dev.c
90206 }
90207 }
90208 EXPORT_SYMBOL(dev_load);
90209 -@@ -1654,7 +1658,7 @@ static inline int illegal_highdma(struct
90210 +@@ -1959,7 +1963,7 @@ static int illegal_highdma(struct net_de
90211
90212 struct dev_gso_cb {
90213 void (*destructor)(struct sk_buff *skb);
90214 @@ -75647,7 +72204,7 @@ diff -urNp linux-2.6.32.48/net/core/dev.c linux-2.6.32.48/net/core/dev.c
90215
90216 #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
90217
90218 -@@ -2063,7 +2067,7 @@ int netif_rx_ni(struct sk_buff *skb)
90219 +@@ -2912,7 +2916,7 @@ int netif_rx_ni(struct sk_buff *skb)
90220 }
90221 EXPORT_SYMBOL(netif_rx_ni);
90222
90223 @@ -75656,82 +72213,80 @@ diff -urNp linux-2.6.32.48/net/core/dev.c linux-2.6.32.48/net/core/dev.c
90224 {
90225 struct softnet_data *sd = &__get_cpu_var(softnet_data);
90226
90227 -@@ -2826,7 +2830,7 @@ void netif_napi_del(struct napi_struct *
90228 +@@ -3761,7 +3765,7 @@ void netif_napi_del(struct napi_struct *
90229 + }
90230 EXPORT_SYMBOL(netif_napi_del);
90231
90232 -
90233 -static void net_rx_action(struct softirq_action *h)
90234 +static void net_rx_action(void)
90235 {
90236 - struct list_head *list = &__get_cpu_var(softnet_data).poll_list;
90237 + struct softnet_data *sd = &__get_cpu_var(softnet_data);
90238 unsigned long time_limit = jiffies + 2;
90239 -diff -urNp linux-2.6.32.48/net/core/flow.c linux-2.6.32.48/net/core/flow.c
90240 ---- linux-2.6.32.48/net/core/flow.c 2009-12-02 22:51:21.000000000 -0500
90241 -+++ linux-2.6.32.48/net/core/flow.c 2011-11-12 12:46:51.000000000 -0500
90242 -@@ -35,11 +35,11 @@ struct flow_cache_entry {
90243 - atomic_t *object_ref;
90244 +diff -urNp linux-3.0.8/net/core/flow.c linux-3.0.8/net/core/flow.c
90245 +--- linux-3.0.8/net/core/flow.c 2011-07-21 22:17:23.000000000 -0400
90246 ++++ linux-3.0.8/net/core/flow.c 2011-08-23 21:47:56.000000000 -0400
90247 +@@ -60,7 +60,7 @@ struct flow_cache {
90248 + struct timer_list rnd_timer;
90249 };
90250
90251 -atomic_t flow_cache_genid = ATOMIC_INIT(0);
90252 +atomic_unchecked_t flow_cache_genid = ATOMIC_INIT(0);
90253 + EXPORT_SYMBOL(flow_cache_genid);
90254 + static struct flow_cache flow_cache_global;
90255 + static struct kmem_cache *flow_cachep __read_mostly;
90256 +@@ -85,7 +85,7 @@ static void flow_cache_new_hashrnd(unsig
90257
90258 - static u32 flow_hash_shift;
90259 - #define flow_hash_size (1 << flow_hash_shift)
90260 --static DEFINE_PER_CPU(struct flow_cache_entry **, flow_tables) = { NULL };
90261 -+static DEFINE_PER_CPU(struct flow_cache_entry **, flow_tables);
90262 -
90263 - #define flow_table(cpu) (per_cpu(flow_tables, cpu))
90264 -
90265 -@@ -52,7 +52,7 @@ struct flow_percpu_info {
90266 - u32 hash_rnd;
90267 - int count;
90268 - };
90269 --static DEFINE_PER_CPU(struct flow_percpu_info, flow_hash_info) = { 0 };
90270 -+static DEFINE_PER_CPU(struct flow_percpu_info, flow_hash_info);
90271 -
90272 - #define flow_hash_rnd_recalc(cpu) \
90273 - (per_cpu(flow_hash_info, cpu).hash_rnd_recalc)
90274 -@@ -69,7 +69,7 @@ struct flow_flush_info {
90275 - atomic_t cpuleft;
90276 - struct completion completion;
90277 - };
90278 --static DEFINE_PER_CPU(struct tasklet_struct, flow_flush_tasklets) = { NULL };
90279 -+static DEFINE_PER_CPU(struct tasklet_struct, flow_flush_tasklets);
90280 -
90281 - #define flow_flush_tasklet(cpu) (&per_cpu(flow_flush_tasklets, cpu))
90282 -
90283 -@@ -190,7 +190,7 @@ void *flow_cache_lookup(struct net *net,
90284 - if (fle->family == family &&
90285 - fle->dir == dir &&
90286 - flow_key_compare(key, &fle->key) == 0) {
90287 -- if (fle->genid == atomic_read(&flow_cache_genid)) {
90288 -+ if (fle->genid == atomic_read_unchecked(&flow_cache_genid)) {
90289 - void *ret = fle->object;
90290 -
90291 - if (ret)
90292 -@@ -228,7 +228,7 @@ nocache:
90293 - err = resolver(net, key, family, dir, &obj, &obj_ref);
90294 -
90295 - if (fle && !err) {
90296 -- fle->genid = atomic_read(&flow_cache_genid);
90297 -+ fle->genid = atomic_read_unchecked(&flow_cache_genid);
90298 -
90299 - if (fle->object)
90300 - atomic_dec(fle->object_ref);
90301 -@@ -258,7 +258,7 @@ static void flow_cache_flush_tasklet(uns
90302 -
90303 - fle = flow_table(cpu)[i];
90304 - for (; fle; fle = fle->next) {
90305 -- unsigned genid = atomic_read(&flow_cache_genid);
90306 -+ unsigned genid = atomic_read_unchecked(&flow_cache_genid);
90307 -
90308 - if (!fle->object || fle->genid == genid)
90309 - continue;
90310 -diff -urNp linux-2.6.32.48/net/core/rtnetlink.c linux-2.6.32.48/net/core/rtnetlink.c
90311 ---- linux-2.6.32.48/net/core/rtnetlink.c 2011-11-12 12:44:30.000000000 -0500
90312 -+++ linux-2.6.32.48/net/core/rtnetlink.c 2011-11-12 12:46:51.000000000 -0500
90313 -@@ -57,7 +57,7 @@ struct rtnl_link
90314 + static int flow_entry_valid(struct flow_cache_entry *fle)
90315 {
90316 +- if (atomic_read(&flow_cache_genid) != fle->genid)
90317 ++ if (atomic_read_unchecked(&flow_cache_genid) != fle->genid)
90318 + return 0;
90319 + if (fle->object && !fle->object->ops->check(fle->object))
90320 + return 0;
90321 +@@ -253,7 +253,7 @@ flow_cache_lookup(struct net *net, const
90322 + hlist_add_head(&fle->u.hlist, &fcp->hash_table[hash]);
90323 + fcp->hash_count++;
90324 + }
90325 +- } else if (likely(fle->genid == atomic_read(&flow_cache_genid))) {
90326 ++ } else if (likely(fle->genid == atomic_read_unchecked(&flow_cache_genid))) {
90327 + flo = fle->object;
90328 + if (!flo)
90329 + goto ret_object;
90330 +@@ -274,7 +274,7 @@ nocache:
90331 + }
90332 + flo = resolver(net, key, family, dir, flo, ctx);
90333 + if (fle) {
90334 +- fle->genid = atomic_read(&flow_cache_genid);
90335 ++ fle->genid = atomic_read_unchecked(&flow_cache_genid);
90336 + if (!IS_ERR(flo))
90337 + fle->object = flo;
90338 + else
90339 +diff -urNp linux-3.0.8/net/core/iovec.c linux-3.0.8/net/core/iovec.c
90340 +--- linux-3.0.8/net/core/iovec.c 2011-07-21 22:17:23.000000000 -0400
90341 ++++ linux-3.0.8/net/core/iovec.c 2011-10-06 04:17:55.000000000 -0400
90342 +@@ -42,7 +42,7 @@ int verify_iovec(struct msghdr *m, struc
90343 + if (m->msg_namelen) {
90344 + if (mode == VERIFY_READ) {
90345 + void __user *namep;
90346 +- namep = (void __user __force *) m->msg_name;
90347 ++ namep = (void __force_user *) m->msg_name;
90348 + err = move_addr_to_kernel(namep, m->msg_namelen,
90349 + address);
90350 + if (err < 0)
90351 +@@ -54,7 +54,7 @@ int verify_iovec(struct msghdr *m, struc
90352 + }
90353 +
90354 + size = m->msg_iovlen * sizeof(struct iovec);
90355 +- if (copy_from_user(iov, (void __user __force *) m->msg_iov, size))
90356 ++ if (copy_from_user(iov, (void __force_user *) m->msg_iov, size))
90357 + return -EFAULT;
90358 +
90359 + m->msg_iov = iov;
90360 +diff -urNp linux-3.0.8/net/core/rtnetlink.c linux-3.0.8/net/core/rtnetlink.c
90361 +--- linux-3.0.8/net/core/rtnetlink.c 2011-07-21 22:17:23.000000000 -0400
90362 ++++ linux-3.0.8/net/core/rtnetlink.c 2011-08-23 21:47:56.000000000 -0400
90363 +@@ -56,7 +56,7 @@
90364 + struct rtnl_link {
90365 rtnl_doit_func doit;
90366 rtnl_dumpit_func dumpit;
90367 -};
90368 @@ -75739,10 +72294,10 @@ diff -urNp linux-2.6.32.48/net/core/rtnetlink.c linux-2.6.32.48/net/core/rtnetli
90369
90370 static DEFINE_MUTEX(rtnl_mutex);
90371
90372 -diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
90373 ---- linux-2.6.32.48/net/core/scm.c 2011-11-12 12:44:30.000000000 -0500
90374 -+++ linux-2.6.32.48/net/core/scm.c 2011-11-12 12:46:51.000000000 -0500
90375 -@@ -191,7 +191,7 @@ error:
90376 +diff -urNp linux-3.0.8/net/core/scm.c linux-3.0.8/net/core/scm.c
90377 +--- linux-3.0.8/net/core/scm.c 2011-10-24 08:05:30.000000000 -0400
90378 ++++ linux-3.0.8/net/core/scm.c 2011-10-16 21:55:28.000000000 -0400
90379 +@@ -218,7 +218,7 @@ EXPORT_SYMBOL(__scm_send);
90380 int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
90381 {
90382 struct cmsghdr __user *cm
90383 @@ -75751,7 +72306,7 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
90384 struct cmsghdr cmhdr;
90385 int cmlen = CMSG_LEN(len);
90386 int err;
90387 -@@ -214,7 +214,7 @@ int put_cmsg(struct msghdr * msg, int le
90388 +@@ -241,7 +241,7 @@ int put_cmsg(struct msghdr * msg, int le
90389 err = -EFAULT;
90390 if (copy_to_user(cm, &cmhdr, sizeof cmhdr))
90391 goto out;
90392 @@ -75760,7 +72315,7 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
90393 goto out;
90394 cmlen = CMSG_SPACE(len);
90395 if (msg->msg_controllen < cmlen)
90396 -@@ -229,7 +229,7 @@ out:
90397 +@@ -257,7 +257,7 @@ EXPORT_SYMBOL(put_cmsg);
90398 void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
90399 {
90400 struct cmsghdr __user *cm
90401 @@ -75769,7 +72324,7 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
90402
90403 int fdmax = 0;
90404 int fdnum = scm->fp->count;
90405 -@@ -249,7 +249,7 @@ void scm_detach_fds(struct msghdr *msg,
90406 +@@ -277,7 +277,7 @@ void scm_detach_fds(struct msghdr *msg,
90407 if (fdnum < fdmax)
90408 fdmax = fdnum;
90409
90410 @@ -75778,59 +72333,94 @@ diff -urNp linux-2.6.32.48/net/core/scm.c linux-2.6.32.48/net/core/scm.c
90411 i++, cmfptr++)
90412 {
90413 int new_fd;
90414 -diff -urNp linux-2.6.32.48/net/core/secure_seq.c linux-2.6.32.48/net/core/secure_seq.c
90415 ---- linux-2.6.32.48/net/core/secure_seq.c 2011-11-12 12:44:30.000000000 -0500
90416 -+++ linux-2.6.32.48/net/core/secure_seq.c 2011-11-12 12:46:51.000000000 -0500
90417 -@@ -57,7 +57,7 @@ __u32 secure_tcpv6_sequence_number(__be3
90418 - EXPORT_SYMBOL(secure_tcpv6_sequence_number);
90419 -
90420 - u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
90421 -- __be16 dport)
90422 -+ __be16 dport)
90423 - {
90424 - u32 secret[MD5_MESSAGE_BYTES / 4];
90425 - u32 hash[MD5_DIGEST_WORDS];
90426 -@@ -71,7 +71,6 @@ u32 secure_ipv6_port_ephemeral(const __b
90427 - secret[i] = net_secret[i];
90428 -
90429 - md5_transform(hash, secret);
90430 --
90431 - return hash[0];
90432 - }
90433 - #endif
90434 -diff -urNp linux-2.6.32.48/net/core/skbuff.c linux-2.6.32.48/net/core/skbuff.c
90435 ---- linux-2.6.32.48/net/core/skbuff.c 2011-11-12 12:44:30.000000000 -0500
90436 -+++ linux-2.6.32.48/net/core/skbuff.c 2011-11-12 12:46:51.000000000 -0500
90437 -@@ -1544,6 +1544,8 @@ int skb_splice_bits(struct sk_buff *skb,
90438 - struct sk_buff *frag_iter;
90439 +diff -urNp linux-3.0.8/net/core/skbuff.c linux-3.0.8/net/core/skbuff.c
90440 +--- linux-3.0.8/net/core/skbuff.c 2011-07-21 22:17:23.000000000 -0400
90441 ++++ linux-3.0.8/net/core/skbuff.c 2011-08-23 21:48:14.000000000 -0400
90442 +@@ -1543,6 +1543,8 @@ int skb_splice_bits(struct sk_buff *skb,
90443 struct sock *sk = skb->sk;
90444 + int ret = 0;
90445
90446 + pax_track_stack();
90447 +
90448 - /*
90449 - * __skb_splice_bits() only fails if the output has no room left,
90450 - * so no point in going over the frag_list for the error case.
90451 -diff -urNp linux-2.6.32.48/net/core/sock.c linux-2.6.32.48/net/core/sock.c
90452 ---- linux-2.6.32.48/net/core/sock.c 2011-11-12 12:44:30.000000000 -0500
90453 -+++ linux-2.6.32.48/net/core/sock.c 2011-11-12 12:46:51.000000000 -0500
90454 -@@ -864,11 +864,15 @@ int sock_getsockopt(struct socket *sock,
90455 - break;
90456 + if (splice_grow_spd(pipe, &spd))
90457 + return -ENOMEM;
90458
90459 - case SO_PEERCRED:
90460 -+ {
90461 -+ struct ucred peercred;
90462 - if (len > sizeof(sk->sk_peercred))
90463 - len = sizeof(sk->sk_peercred);
90464 -- if (copy_to_user(optval, &sk->sk_peercred, len))
90465 -+ peercred = sk->sk_peercred;
90466 -+ if (copy_to_user(optval, &peercred, len))
90467 +diff -urNp linux-3.0.8/net/core/sock.c linux-3.0.8/net/core/sock.c
90468 +--- linux-3.0.8/net/core/sock.c 2011-07-21 22:17:23.000000000 -0400
90469 ++++ linux-3.0.8/net/core/sock.c 2011-08-23 21:48:14.000000000 -0400
90470 +@@ -291,7 +291,7 @@ int sock_queue_rcv_skb(struct sock *sk,
90471 + */
90472 + if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
90473 + (unsigned)sk->sk_rcvbuf) {
90474 +- atomic_inc(&sk->sk_drops);
90475 ++ atomic_inc_unchecked(&sk->sk_drops);
90476 + return -ENOMEM;
90477 + }
90478 +
90479 +@@ -300,7 +300,7 @@ int sock_queue_rcv_skb(struct sock *sk,
90480 + return err;
90481 +
90482 + if (!sk_rmem_schedule(sk, skb->truesize)) {
90483 +- atomic_inc(&sk->sk_drops);
90484 ++ atomic_inc_unchecked(&sk->sk_drops);
90485 + return -ENOBUFS;
90486 + }
90487 +
90488 +@@ -320,7 +320,7 @@ int sock_queue_rcv_skb(struct sock *sk,
90489 + skb_dst_force(skb);
90490 +
90491 + spin_lock_irqsave(&list->lock, flags);
90492 +- skb->dropcount = atomic_read(&sk->sk_drops);
90493 ++ skb->dropcount = atomic_read_unchecked(&sk->sk_drops);
90494 + __skb_queue_tail(list, skb);
90495 + spin_unlock_irqrestore(&list->lock, flags);
90496 +
90497 +@@ -340,7 +340,7 @@ int sk_receive_skb(struct sock *sk, stru
90498 + skb->dev = NULL;
90499 +
90500 + if (sk_rcvqueues_full(sk, skb)) {
90501 +- atomic_inc(&sk->sk_drops);
90502 ++ atomic_inc_unchecked(&sk->sk_drops);
90503 + goto discard_and_relse;
90504 + }
90505 + if (nested)
90506 +@@ -358,7 +358,7 @@ int sk_receive_skb(struct sock *sk, stru
90507 + mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
90508 + } else if (sk_add_backlog(sk, skb)) {
90509 + bh_unlock_sock(sk);
90510 +- atomic_inc(&sk->sk_drops);
90511 ++ atomic_inc_unchecked(&sk->sk_drops);
90512 + goto discard_and_relse;
90513 + }
90514 +
90515 +@@ -921,7 +921,7 @@ int sock_getsockopt(struct socket *sock,
90516 + if (len > sizeof(peercred))
90517 + len = sizeof(peercred);
90518 + cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred);
90519 +- if (copy_to_user(optval, &peercred, len))
90520 ++ if (len > sizeof(peercred) || copy_to_user(optval, &peercred, len))
90521 return -EFAULT;
90522 goto lenout;
90523 -+ }
90524 + }
90525 +@@ -934,7 +934,7 @@ int sock_getsockopt(struct socket *sock,
90526 + return -ENOTCONN;
90527 + if (lv < len)
90528 + return -EINVAL;
90529 +- if (copy_to_user(optval, address, len))
90530 ++ if (len > sizeof(address) || copy_to_user(optval, address, len))
90531 + return -EFAULT;
90532 + goto lenout;
90533 + }
90534 +@@ -967,7 +967,7 @@ int sock_getsockopt(struct socket *sock,
90535
90536 - case SO_PEERNAME:
90537 - {
90538 -@@ -1892,7 +1896,7 @@ void sock_init_data(struct socket *sock,
90539 + if (len > lv)
90540 + len = lv;
90541 +- if (copy_to_user(optval, &v, len))
90542 ++ if (len > sizeof(v) || copy_to_user(optval, &v, len))
90543 + return -EFAULT;
90544 + lenout:
90545 + if (put_user(len, optlen))
90546 +@@ -2023,7 +2023,7 @@ void sock_init_data(struct socket *sock,
90547 */
90548 smp_wmb();
90549 atomic_set(&sk->sk_refcnt, 1);
90550 @@ -75839,10 +72429,10 @@ diff -urNp linux-2.6.32.48/net/core/sock.c linux-2.6.32.48/net/core/sock.c
90551 }
90552 EXPORT_SYMBOL(sock_init_data);
90553
90554 -diff -urNp linux-2.6.32.48/net/decnet/sysctl_net_decnet.c linux-2.6.32.48/net/decnet/sysctl_net_decnet.c
90555 ---- linux-2.6.32.48/net/decnet/sysctl_net_decnet.c 2009-12-02 22:51:21.000000000 -0500
90556 -+++ linux-2.6.32.48/net/decnet/sysctl_net_decnet.c 2011-11-12 12:46:51.000000000 -0500
90557 -@@ -206,7 +206,7 @@ static int dn_node_address_handler(ctl_t
90558 +diff -urNp linux-3.0.8/net/decnet/sysctl_net_decnet.c linux-3.0.8/net/decnet/sysctl_net_decnet.c
90559 +--- linux-3.0.8/net/decnet/sysctl_net_decnet.c 2011-07-21 22:17:23.000000000 -0400
90560 ++++ linux-3.0.8/net/decnet/sysctl_net_decnet.c 2011-08-23 21:47:56.000000000 -0400
90561 +@@ -173,7 +173,7 @@ static int dn_node_address_handler(ctl_t
90562
90563 if (len > *lenp) len = *lenp;
90564
90565 @@ -75851,7 +72441,7 @@ diff -urNp linux-2.6.32.48/net/decnet/sysctl_net_decnet.c linux-2.6.32.48/net/de
90566 return -EFAULT;
90567
90568 *lenp = len;
90569 -@@ -327,7 +327,7 @@ static int dn_def_dev_handler(ctl_table
90570 +@@ -236,7 +236,7 @@ static int dn_def_dev_handler(ctl_table
90571
90572 if (len > *lenp) len = *lenp;
90573
90574 @@ -75860,9 +72450,9 @@ diff -urNp linux-2.6.32.48/net/decnet/sysctl_net_decnet.c linux-2.6.32.48/net/de
90575 return -EFAULT;
90576
90577 *lenp = len;
90578 -diff -urNp linux-2.6.32.48/net/econet/Kconfig linux-2.6.32.48/net/econet/Kconfig
90579 ---- linux-2.6.32.48/net/econet/Kconfig 2009-12-02 22:51:21.000000000 -0500
90580 -+++ linux-2.6.32.48/net/econet/Kconfig 2011-11-12 12:46:51.000000000 -0500
90581 +diff -urNp linux-3.0.8/net/econet/Kconfig linux-3.0.8/net/econet/Kconfig
90582 +--- linux-3.0.8/net/econet/Kconfig 2011-07-21 22:17:23.000000000 -0400
90583 ++++ linux-3.0.8/net/econet/Kconfig 2011-08-23 21:48:14.000000000 -0400
90584 @@ -4,7 +4,7 @@
90585
90586 config ECONET
90587 @@ -75872,37 +72462,53 @@ diff -urNp linux-2.6.32.48/net/econet/Kconfig linux-2.6.32.48/net/econet/Kconfig
90588 ---help---
90589 Econet is a fairly old and slow networking protocol mainly used by
90590 Acorn computers to access file and print servers. It uses native
90591 -diff -urNp linux-2.6.32.48/net/ieee802154/dgram.c linux-2.6.32.48/net/ieee802154/dgram.c
90592 ---- linux-2.6.32.48/net/ieee802154/dgram.c 2009-12-02 22:51:21.000000000 -0500
90593 -+++ linux-2.6.32.48/net/ieee802154/dgram.c 2011-11-12 12:46:51.000000000 -0500
90594 -@@ -318,7 +318,7 @@ out:
90595 - static int dgram_rcv_skb(struct sock *sk, struct sk_buff *skb)
90596 - {
90597 - if (sock_queue_rcv_skb(sk, skb) < 0) {
90598 -- atomic_inc(&sk->sk_drops);
90599 -+ atomic_inc_unchecked(&sk->sk_drops);
90600 - kfree_skb(skb);
90601 - return NET_RX_DROP;
90602 - }
90603 -diff -urNp linux-2.6.32.48/net/ieee802154/raw.c linux-2.6.32.48/net/ieee802154/raw.c
90604 ---- linux-2.6.32.48/net/ieee802154/raw.c 2009-12-02 22:51:21.000000000 -0500
90605 -+++ linux-2.6.32.48/net/ieee802154/raw.c 2011-11-12 12:46:51.000000000 -0500
90606 -@@ -206,7 +206,7 @@ out:
90607 - static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
90608 - {
90609 - if (sock_queue_rcv_skb(sk, skb) < 0) {
90610 -- atomic_inc(&sk->sk_drops);
90611 -+ atomic_inc_unchecked(&sk->sk_drops);
90612 - kfree_skb(skb);
90613 - return NET_RX_DROP;
90614 - }
90615 -diff -urNp linux-2.6.32.48/net/ipv4/inet_diag.c linux-2.6.32.48/net/ipv4/inet_diag.c
90616 ---- linux-2.6.32.48/net/ipv4/inet_diag.c 2011-11-12 12:44:30.000000000 -0500
90617 -+++ linux-2.6.32.48/net/ipv4/inet_diag.c 2011-11-12 12:46:51.000000000 -0500
90618 -@@ -113,8 +113,13 @@ static int inet_csk_diag_fill(struct soc
90619 +diff -urNp linux-3.0.8/net/ipv4/fib_frontend.c linux-3.0.8/net/ipv4/fib_frontend.c
90620 +--- linux-3.0.8/net/ipv4/fib_frontend.c 2011-07-21 22:17:23.000000000 -0400
90621 ++++ linux-3.0.8/net/ipv4/fib_frontend.c 2011-08-23 21:47:56.000000000 -0400
90622 +@@ -970,12 +970,12 @@ static int fib_inetaddr_event(struct not
90623 + #ifdef CONFIG_IP_ROUTE_MULTIPATH
90624 + fib_sync_up(dev);
90625 + #endif
90626 +- atomic_inc(&net->ipv4.dev_addr_genid);
90627 ++ atomic_inc_unchecked(&net->ipv4.dev_addr_genid);
90628 + rt_cache_flush(dev_net(dev), -1);
90629 + break;
90630 + case NETDEV_DOWN:
90631 + fib_del_ifaddr(ifa, NULL);
90632 +- atomic_inc(&net->ipv4.dev_addr_genid);
90633 ++ atomic_inc_unchecked(&net->ipv4.dev_addr_genid);
90634 + if (ifa->ifa_dev->ifa_list == NULL) {
90635 + /* Last address was deleted from this interface.
90636 + * Disable IP.
90637 +@@ -1011,7 +1011,7 @@ static int fib_netdev_event(struct notif
90638 + #ifdef CONFIG_IP_ROUTE_MULTIPATH
90639 + fib_sync_up(dev);
90640 + #endif
90641 +- atomic_inc(&net->ipv4.dev_addr_genid);
90642 ++ atomic_inc_unchecked(&net->ipv4.dev_addr_genid);
90643 + rt_cache_flush(dev_net(dev), -1);
90644 + break;
90645 + case NETDEV_DOWN:
90646 +diff -urNp linux-3.0.8/net/ipv4/fib_semantics.c linux-3.0.8/net/ipv4/fib_semantics.c
90647 +--- linux-3.0.8/net/ipv4/fib_semantics.c 2011-07-21 22:17:23.000000000 -0400
90648 ++++ linux-3.0.8/net/ipv4/fib_semantics.c 2011-08-23 21:47:56.000000000 -0400
90649 +@@ -691,7 +691,7 @@ __be32 fib_info_update_nh_saddr(struct n
90650 + nh->nh_saddr = inet_select_addr(nh->nh_dev,
90651 + nh->nh_gw,
90652 + nh->nh_parent->fib_scope);
90653 +- nh->nh_saddr_genid = atomic_read(&net->ipv4.dev_addr_genid);
90654 ++ nh->nh_saddr_genid = atomic_read_unchecked(&net->ipv4.dev_addr_genid);
90655 +
90656 + return nh->nh_saddr;
90657 + }
90658 +diff -urNp linux-3.0.8/net/ipv4/inet_diag.c linux-3.0.8/net/ipv4/inet_diag.c
90659 +--- linux-3.0.8/net/ipv4/inet_diag.c 2011-07-21 22:17:23.000000000 -0400
90660 ++++ linux-3.0.8/net/ipv4/inet_diag.c 2011-08-23 21:48:14.000000000 -0400
90661 +@@ -114,8 +114,14 @@ static int inet_csk_diag_fill(struct soc
90662 r->idiag_retrans = 0;
90663
90664 r->id.idiag_if = sk->sk_bound_dev_if;
90665 ++
90666 +#ifdef CONFIG_GRKERNSEC_HIDESYM
90667 + r->id.idiag_cookie[0] = 0;
90668 + r->id.idiag_cookie[1] = 0;
90669 @@ -75911,9 +72517,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/inet_diag.c linux-2.6.32.48/net/ipv4/inet_di
90670 r->id.idiag_cookie[1] = (u32)(((unsigned long)sk >> 31) >> 1);
90671 +#endif
90672
90673 - r->id.idiag_sport = inet->sport;
90674 - r->id.idiag_dport = inet->dport;
90675 -@@ -200,8 +205,15 @@ static int inet_twsk_diag_fill(struct in
90676 + r->id.idiag_sport = inet->inet_sport;
90677 + r->id.idiag_dport = inet->inet_dport;
90678 +@@ -201,8 +207,15 @@ static int inet_twsk_diag_fill(struct in
90679 r->idiag_family = tw->tw_family;
90680 r->idiag_retrans = 0;
90681 r->id.idiag_if = tw->tw_bound_dev_if;
90682 @@ -75929,7 +72535,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/inet_diag.c linux-2.6.32.48/net/ipv4/inet_di
90683 r->id.idiag_sport = tw->tw_sport;
90684 r->id.idiag_dport = tw->tw_dport;
90685 r->id.idiag_src[0] = tw->tw_rcv_saddr;
90686 -@@ -284,12 +296,14 @@ static int inet_diag_get_exact(struct sk
90687 +@@ -285,12 +298,14 @@ static int inet_diag_get_exact(struct sk
90688 if (sk == NULL)
90689 goto unlock;
90690
90691 @@ -75944,7 +72550,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/inet_diag.c linux-2.6.32.48/net/ipv4/inet_di
90692
90693 err = -ENOMEM;
90694 rep = alloc_skb(NLMSG_SPACE((sizeof(struct inet_diag_msg) +
90695 -@@ -579,8 +593,14 @@ static int inet_diag_fill_req(struct sk_
90696 +@@ -580,8 +595,14 @@ static int inet_diag_fill_req(struct sk_
90697 r->idiag_retrans = req->retrans;
90698
90699 r->id.idiag_if = sk->sk_bound_dev_if;
90700 @@ -75959,9 +72565,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/inet_diag.c linux-2.6.32.48/net/ipv4/inet_di
90701
90702 tmo = req->expires - jiffies;
90703 if (tmo < 0)
90704 -diff -urNp linux-2.6.32.48/net/ipv4/inet_hashtables.c linux-2.6.32.48/net/ipv4/inet_hashtables.c
90705 ---- linux-2.6.32.48/net/ipv4/inet_hashtables.c 2011-11-12 12:44:30.000000000 -0500
90706 -+++ linux-2.6.32.48/net/ipv4/inet_hashtables.c 2011-11-12 12:46:51.000000000 -0500
90707 +diff -urNp linux-3.0.8/net/ipv4/inet_hashtables.c linux-3.0.8/net/ipv4/inet_hashtables.c
90708 +--- linux-3.0.8/net/ipv4/inet_hashtables.c 2011-10-24 08:05:21.000000000 -0400
90709 ++++ linux-3.0.8/net/ipv4/inet_hashtables.c 2011-08-23 21:55:24.000000000 -0400
90710 @@ -18,12 +18,15 @@
90711 #include <linux/sched.h>
90712 #include <linux/slab.h>
90713 @@ -75978,40 +72584,42 @@ diff -urNp linux-2.6.32.48/net/ipv4/inet_hashtables.c linux-2.6.32.48/net/ipv4/i
90714 /*
90715 * Allocate and initialize a new local port bind bucket.
90716 * The bindhash mutex for snum's hash chain must be held here.
90717 -@@ -491,6 +494,8 @@ ok:
90718 - }
90719 +@@ -530,6 +533,8 @@ ok:
90720 + twrefcnt += inet_twsk_bind_unhash(tw, hinfo);
90721 spin_unlock(&head->lock);
90722
90723 + gr_update_task_in_ip_table(current, inet_sk(sk));
90724 +
90725 if (tw) {
90726 inet_twsk_deschedule(tw, death_row);
90727 - inet_twsk_put(tw);
90728 -diff -urNp linux-2.6.32.48/net/ipv4/inetpeer.c linux-2.6.32.48/net/ipv4/inetpeer.c
90729 ---- linux-2.6.32.48/net/ipv4/inetpeer.c 2011-11-12 12:44:30.000000000 -0500
90730 -+++ linux-2.6.32.48/net/ipv4/inetpeer.c 2011-11-12 12:46:51.000000000 -0500
90731 -@@ -367,6 +367,8 @@ struct inet_peer *inet_getpeer(__be32 da
90732 - struct inet_peer *p, *n;
90733 - struct inet_peer **stack[PEER_MAXDEPTH], ***stackptr;
90734 + while (twrefcnt) {
90735 +diff -urNp linux-3.0.8/net/ipv4/inetpeer.c linux-3.0.8/net/ipv4/inetpeer.c
90736 +--- linux-3.0.8/net/ipv4/inetpeer.c 2011-10-24 08:05:21.000000000 -0400
90737 ++++ linux-3.0.8/net/ipv4/inetpeer.c 2011-08-23 21:48:14.000000000 -0400
90738 +@@ -481,6 +481,8 @@ struct inet_peer *inet_getpeer(struct in
90739 + unsigned int sequence;
90740 + int invalidated, newrefcnt = 0;
90741
90742 + pax_track_stack();
90743 +
90744 - /* Look up for the address quickly. */
90745 - read_lock_bh(&peer_pool_lock);
90746 - p = lookup(daddr, NULL);
90747 -@@ -390,7 +392,7 @@ struct inet_peer *inet_getpeer(__be32 da
90748 - return NULL;
90749 - n->v4daddr = daddr;
90750 - atomic_set(&n->refcnt, 1);
90751 -- atomic_set(&n->rid, 0);
90752 -+ atomic_set_unchecked(&n->rid, 0);
90753 - n->ip_id_count = secure_ip_id(daddr);
90754 - n->tcp_ts_stamp = 0;
90755 -
90756 -diff -urNp linux-2.6.32.48/net/ipv4/ipconfig.c linux-2.6.32.48/net/ipv4/ipconfig.c
90757 ---- linux-2.6.32.48/net/ipv4/ipconfig.c 2009-12-02 22:51:21.000000000 -0500
90758 -+++ linux-2.6.32.48/net/ipv4/ipconfig.c 2011-11-12 12:46:51.000000000 -0500
90759 -@@ -295,7 +295,7 @@ static int __init ic_devinet_ioctl(unsig
90760 + /* Look up for the address quickly, lockless.
90761 + * Because of a concurrent writer, we might not find an existing entry.
90762 + */
90763 +@@ -517,8 +519,8 @@ found: /* The existing node has been fo
90764 + if (p) {
90765 + p->daddr = *daddr;
90766 + atomic_set(&p->refcnt, 1);
90767 +- atomic_set(&p->rid, 0);
90768 +- atomic_set(&p->ip_id_count, secure_ip_id(daddr->addr.a4));
90769 ++ atomic_set_unchecked(&p->rid, 0);
90770 ++ atomic_set_unchecked(&p->ip_id_count, secure_ip_id(daddr->addr.a4));
90771 + p->tcp_ts_stamp = 0;
90772 + p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW;
90773 + p->rate_tokens = 0;
90774 +diff -urNp linux-3.0.8/net/ipv4/ipconfig.c linux-3.0.8/net/ipv4/ipconfig.c
90775 +--- linux-3.0.8/net/ipv4/ipconfig.c 2011-07-21 22:17:23.000000000 -0400
90776 ++++ linux-3.0.8/net/ipv4/ipconfig.c 2011-10-06 04:17:55.000000000 -0400
90777 +@@ -313,7 +313,7 @@ static int __init ic_devinet_ioctl(unsig
90778
90779 mm_segment_t oldfs = get_fs();
90780 set_fs(get_ds());
90781 @@ -76020,7 +72628,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/ipconfig.c linux-2.6.32.48/net/ipv4/ipconfig
90782 set_fs(oldfs);
90783 return res;
90784 }
90785 -@@ -306,7 +306,7 @@ static int __init ic_dev_ioctl(unsigned
90786 +@@ -324,7 +324,7 @@ static int __init ic_dev_ioctl(unsigned
90787
90788 mm_segment_t oldfs = get_fs();
90789 set_fs(get_ds());
90790 @@ -76029,7 +72637,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/ipconfig.c linux-2.6.32.48/net/ipv4/ipconfig
90791 set_fs(oldfs);
90792 return res;
90793 }
90794 -@@ -317,7 +317,7 @@ static int __init ic_route_ioctl(unsigne
90795 +@@ -335,7 +335,7 @@ static int __init ic_route_ioctl(unsigne
90796
90797 mm_segment_t oldfs = get_fs();
90798 set_fs(get_ds());
90799 @@ -76038,10 +72646,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/ipconfig.c linux-2.6.32.48/net/ipv4/ipconfig
90800 set_fs(oldfs);
90801 return res;
90802 }
90803 -diff -urNp linux-2.6.32.48/net/ipv4/ip_fragment.c linux-2.6.32.48/net/ipv4/ip_fragment.c
90804 ---- linux-2.6.32.48/net/ipv4/ip_fragment.c 2009-12-02 22:51:21.000000000 -0500
90805 -+++ linux-2.6.32.48/net/ipv4/ip_fragment.c 2011-11-12 12:46:51.000000000 -0500
90806 -@@ -255,7 +255,7 @@ static inline int ip_frag_too_far(struct
90807 +diff -urNp linux-3.0.8/net/ipv4/ip_fragment.c linux-3.0.8/net/ipv4/ip_fragment.c
90808 +--- linux-3.0.8/net/ipv4/ip_fragment.c 2011-07-21 22:17:23.000000000 -0400
90809 ++++ linux-3.0.8/net/ipv4/ip_fragment.c 2011-08-23 21:47:56.000000000 -0400
90810 +@@ -315,7 +315,7 @@ static inline int ip_frag_too_far(struct
90811 return 0;
90812
90813 start = qp->rid;
90814 @@ -76050,10 +72658,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/ip_fragment.c linux-2.6.32.48/net/ipv4/ip_fr
90815 qp->rid = end;
90816
90817 rc = qp->q.fragments && (end - start) > max;
90818 -diff -urNp linux-2.6.32.48/net/ipv4/ip_sockglue.c linux-2.6.32.48/net/ipv4/ip_sockglue.c
90819 ---- linux-2.6.32.48/net/ipv4/ip_sockglue.c 2009-12-02 22:51:21.000000000 -0500
90820 -+++ linux-2.6.32.48/net/ipv4/ip_sockglue.c 2011-11-12 12:46:51.000000000 -0500
90821 -@@ -1015,6 +1015,8 @@ static int do_ip_getsockopt(struct sock
90822 +diff -urNp linux-3.0.8/net/ipv4/ip_sockglue.c linux-3.0.8/net/ipv4/ip_sockglue.c
90823 +--- linux-3.0.8/net/ipv4/ip_sockglue.c 2011-07-21 22:17:23.000000000 -0400
90824 ++++ linux-3.0.8/net/ipv4/ip_sockglue.c 2011-10-06 04:17:55.000000000 -0400
90825 +@@ -1073,6 +1073,8 @@ static int do_ip_getsockopt(struct sock
90826 int val;
90827 int len;
90828
90829 @@ -76062,7 +72670,17 @@ diff -urNp linux-2.6.32.48/net/ipv4/ip_sockglue.c linux-2.6.32.48/net/ipv4/ip_so
90830 if (level != SOL_IP)
90831 return -EOPNOTSUPP;
90832
90833 -@@ -1173,7 +1175,7 @@ static int do_ip_getsockopt(struct sock
90834 +@@ -1110,7 +1112,8 @@ static int do_ip_getsockopt(struct sock
90835 + len = min_t(unsigned int, len, opt->optlen);
90836 + if (put_user(len, optlen))
90837 + return -EFAULT;
90838 +- if (copy_to_user(optval, opt->__data, len))
90839 ++ if ((len > (sizeof(optbuf) - sizeof(struct ip_options))) ||
90840 ++ copy_to_user(optval, opt->__data, len))
90841 + return -EFAULT;
90842 + return 0;
90843 + }
90844 +@@ -1238,7 +1241,7 @@ static int do_ip_getsockopt(struct sock
90845 if (sk->sk_type != SOCK_STREAM)
90846 return -ENOPROTOOPT;
90847
90848 @@ -76071,55 +72689,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/ip_sockglue.c linux-2.6.32.48/net/ipv4/ip_so
90849 msg.msg_controllen = len;
90850 msg.msg_flags = 0;
90851
90852 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c
90853 ---- linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c 2011-11-12 12:44:30.000000000 -0500
90854 -+++ linux-2.6.32.48/net/ipv4/netfilter/arp_tables.c 2011-11-12 12:46:51.000000000 -0500
90855 -@@ -934,6 +934,7 @@ static int get_info(struct net *net, voi
90856 - private = &tmp;
90857 - }
90858 - #endif
90859 -+ memset(&info, 0, sizeof(info));
90860 - info.valid_hooks = t->valid_hooks;
90861 - memcpy(info.hook_entry, private->hook_entry,
90862 - sizeof(info.hook_entry));
90863 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c
90864 ---- linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c 2009-12-02 22:51:21.000000000 -0500
90865 -+++ linux-2.6.32.48/net/ipv4/netfilter/ip_queue.c 2011-11-12 12:46:51.000000000 -0500
90866 -@@ -286,6 +286,9 @@ ipq_mangle_ipv4(ipq_verdict_msg_t *v, st
90867 -
90868 - if (v->data_len < sizeof(*user_iph))
90869 - return 0;
90870 -+ if (v->data_len > 65535)
90871 -+ return -EMSGSIZE;
90872 -+
90873 - diff = v->data_len - e->skb->len;
90874 - if (diff < 0) {
90875 - if (pskb_trim(e->skb, v->data_len))
90876 -@@ -409,7 +412,8 @@ ipq_dev_drop(int ifindex)
90877 - static inline void
90878 - __ipq_rcv_skb(struct sk_buff *skb)
90879 - {
90880 -- int status, type, pid, flags, nlmsglen, skblen;
90881 -+ int status, type, pid, flags;
90882 -+ unsigned int nlmsglen, skblen;
90883 - struct nlmsghdr *nlh;
90884 -
90885 - skblen = skb->len;
90886 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c
90887 ---- linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c 2011-11-12 12:44:30.000000000 -0500
90888 -+++ linux-2.6.32.48/net/ipv4/netfilter/ip_tables.c 2011-11-12 12:46:51.000000000 -0500
90889 -@@ -1141,6 +1141,7 @@ static int get_info(struct net *net, voi
90890 - private = &tmp;
90891 - }
90892 - #endif
90893 -+ memset(&info, 0, sizeof(info));
90894 - info.valid_hooks = t->valid_hooks;
90895 - memcpy(info.hook_entry, private->hook_entry,
90896 - sizeof(info.hook_entry));
90897 -diff -urNp linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c
90898 ---- linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c 2009-12-02 22:51:21.000000000 -0500
90899 -+++ linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-11-12 12:46:51.000000000 -0500
90900 -@@ -397,7 +397,7 @@ static unsigned char asn1_octets_decode(
90901 +diff -urNp linux-3.0.8/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-3.0.8/net/ipv4/netfilter/nf_nat_snmp_basic.c
90902 +--- linux-3.0.8/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-07-21 22:17:23.000000000 -0400
90903 ++++ linux-3.0.8/net/ipv4/netfilter/nf_nat_snmp_basic.c 2011-08-23 21:47:56.000000000 -0400
90904 +@@ -399,7 +399,7 @@ static unsigned char asn1_octets_decode(
90905
90906 *len = 0;
90907
90908 @@ -76127,20 +72700,23 @@ diff -urNp linux-2.6.32.48/net/ipv4/netfilter/nf_nat_snmp_basic.c linux-2.6.32.4
90909 + *octets = kmalloc((eoc - ctx->pointer), GFP_ATOMIC);
90910 if (*octets == NULL) {
90911 if (net_ratelimit())
90912 - printk("OOM in bsalg (%d)\n", __LINE__);
90913 -diff -urNp linux-2.6.32.48/net/ipv4/raw.c linux-2.6.32.48/net/ipv4/raw.c
90914 ---- linux-2.6.32.48/net/ipv4/raw.c 2009-12-02 22:51:21.000000000 -0500
90915 -+++ linux-2.6.32.48/net/ipv4/raw.c 2011-11-12 12:46:51.000000000 -0500
90916 -@@ -292,7 +292,7 @@ static int raw_rcv_skb(struct sock * sk,
90917 - /* Charge it to the socket. */
90918 -
90919 - if (sock_queue_rcv_skb(sk, skb) < 0) {
90920 -- atomic_inc(&sk->sk_drops);
90921 -+ atomic_inc_unchecked(&sk->sk_drops);
90922 - kfree_skb(skb);
90923 - return NET_RX_DROP;
90924 - }
90925 -@@ -303,7 +303,7 @@ static int raw_rcv_skb(struct sock * sk,
90926 + pr_notice("OOM in bsalg (%d)\n", __LINE__);
90927 +diff -urNp linux-3.0.8/net/ipv4/ping.c linux-3.0.8/net/ipv4/ping.c
90928 +--- linux-3.0.8/net/ipv4/ping.c 2011-07-21 22:17:23.000000000 -0400
90929 ++++ linux-3.0.8/net/ipv4/ping.c 2011-08-23 21:47:56.000000000 -0400
90930 +@@ -837,7 +837,7 @@ static void ping_format_sock(struct sock
90931 + sk_rmem_alloc_get(sp),
90932 + 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
90933 + atomic_read(&sp->sk_refcnt), sp,
90934 +- atomic_read(&sp->sk_drops), len);
90935 ++ atomic_read_unchecked(&sp->sk_drops), len);
90936 + }
90937 +
90938 + static int ping_seq_show(struct seq_file *seq, void *v)
90939 +diff -urNp linux-3.0.8/net/ipv4/raw.c linux-3.0.8/net/ipv4/raw.c
90940 +--- linux-3.0.8/net/ipv4/raw.c 2011-07-21 22:17:23.000000000 -0400
90941 ++++ linux-3.0.8/net/ipv4/raw.c 2011-08-23 21:48:14.000000000 -0400
90942 +@@ -302,7 +302,7 @@ static int raw_rcv_skb(struct sock * sk,
90943 int raw_rcv(struct sock *sk, struct sk_buff *skb)
90944 {
90945 if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) {
90946 @@ -76149,21 +72725,18 @@ diff -urNp linux-2.6.32.48/net/ipv4/raw.c linux-2.6.32.48/net/ipv4/raw.c
90947 kfree_skb(skb);
90948 return NET_RX_DROP;
90949 }
90950 -@@ -724,16 +724,23 @@ static int raw_init(struct sock *sk)
90951 +@@ -736,16 +736,20 @@ static int raw_init(struct sock *sk)
90952
90953 static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen)
90954 {
90955 + struct icmp_filter filter;
90956 +
90957 -+ if (optlen < 0)
90958 -+ return -EINVAL;
90959 if (optlen > sizeof(struct icmp_filter))
90960 optlen = sizeof(struct icmp_filter);
90961 - if (copy_from_user(&raw_sk(sk)->filter, optval, optlen))
90962 + if (copy_from_user(&filter, optval, optlen))
90963 return -EFAULT;
90964 + raw_sk(sk)->filter = filter;
90965 -+
90966 return 0;
90967 }
90968
90969 @@ -76174,7 +72747,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/raw.c linux-2.6.32.48/net/ipv4/raw.c
90970
90971 if (get_user(len, optlen))
90972 goto out;
90973 -@@ -743,8 +750,9 @@ static int raw_geticmpfilter(struct sock
90974 +@@ -755,8 +759,9 @@ static int raw_geticmpfilter(struct sock
90975 if (len > sizeof(struct icmp_filter))
90976 len = sizeof(struct icmp_filter);
90977 ret = -EFAULT;
90978 @@ -76186,7 +72759,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/raw.c linux-2.6.32.48/net/ipv4/raw.c
90979 goto out;
90980 ret = 0;
90981 out: return ret;
90982 -@@ -954,7 +962,13 @@ static void raw_sock_seq_show(struct seq
90983 +@@ -984,7 +989,13 @@ static void raw_sock_seq_show(struct seq
90984 sk_wmem_alloc_get(sp),
90985 sk_rmem_alloc_get(sp),
90986 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
90987 @@ -76201,10 +72774,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/raw.c linux-2.6.32.48/net/ipv4/raw.c
90988 }
90989
90990 static int raw_seq_show(struct seq_file *seq, void *v)
90991 -diff -urNp linux-2.6.32.48/net/ipv4/route.c linux-2.6.32.48/net/ipv4/route.c
90992 ---- linux-2.6.32.48/net/ipv4/route.c 2011-11-12 12:44:30.000000000 -0500
90993 -+++ linux-2.6.32.48/net/ipv4/route.c 2011-11-12 12:46:51.000000000 -0500
90994 -@@ -269,7 +269,7 @@ static inline unsigned int rt_hash(__be3
90995 +diff -urNp linux-3.0.8/net/ipv4/route.c linux-3.0.8/net/ipv4/route.c
90996 +--- linux-3.0.8/net/ipv4/route.c 2011-10-24 08:05:30.000000000 -0400
90997 ++++ linux-3.0.8/net/ipv4/route.c 2011-10-16 21:55:28.000000000 -0400
90998 +@@ -304,7 +304,7 @@ static inline unsigned int rt_hash(__be3
90999
91000 static inline int rt_genid(struct net *net)
91001 {
91002 @@ -76213,7 +72786,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/route.c linux-2.6.32.48/net/ipv4/route.c
91003 }
91004
91005 #ifdef CONFIG_PROC_FS
91006 -@@ -889,7 +889,7 @@ static void rt_cache_invalidate(struct n
91007 +@@ -832,7 +832,7 @@ static void rt_cache_invalidate(struct n
91008 unsigned char shuffle;
91009
91010 get_random_bytes(&shuffle, sizeof(shuffle));
91011 @@ -76222,28 +72795,28 @@ diff -urNp linux-2.6.32.48/net/ipv4/route.c linux-2.6.32.48/net/ipv4/route.c
91012 }
91013
91014 /*
91015 -@@ -3357,7 +3357,7 @@ static __net_initdata struct pernet_oper
91016 -
91017 - static __net_init int rt_secret_timer_init(struct net *net)
91018 - {
91019 -- atomic_set(&net->ipv4.rt_genid,
91020 -+ atomic_set_unchecked(&net->ipv4.rt_genid,
91021 - (int) ((num_physpages ^ (num_physpages>>8)) ^
91022 - (jiffies ^ (jiffies >> 7))));
91023 -
91024 -diff -urNp linux-2.6.32.48/net/ipv4/tcp.c linux-2.6.32.48/net/ipv4/tcp.c
91025 ---- linux-2.6.32.48/net/ipv4/tcp.c 2011-11-12 12:44:30.000000000 -0500
91026 -+++ linux-2.6.32.48/net/ipv4/tcp.c 2011-11-12 12:46:51.000000000 -0500
91027 -@@ -2085,6 +2085,8 @@ static int do_tcp_setsockopt(struct sock
91028 +@@ -2832,7 +2832,7 @@ static int rt_fill_info(struct net *net,
91029 + error = rt->dst.error;
91030 + if (peer) {
91031 + inet_peer_refcheck(rt->peer);
91032 +- id = atomic_read(&peer->ip_id_count) & 0xffff;
91033 ++ id = atomic_read_unchecked(&peer->ip_id_count) & 0xffff;
91034 + if (peer->tcp_ts_stamp) {
91035 + ts = peer->tcp_ts;
91036 + tsage = get_seconds() - peer->tcp_ts_stamp;
91037 +diff -urNp linux-3.0.8/net/ipv4/tcp.c linux-3.0.8/net/ipv4/tcp.c
91038 +--- linux-3.0.8/net/ipv4/tcp.c 2011-07-21 22:17:23.000000000 -0400
91039 ++++ linux-3.0.8/net/ipv4/tcp.c 2011-08-23 21:48:14.000000000 -0400
91040 +@@ -2122,6 +2122,8 @@ static int do_tcp_setsockopt(struct sock
91041 int val;
91042 int err = 0;
91043
91044 + pax_track_stack();
91045 +
91046 - /* This is a string value all the others are int's */
91047 - if (optname == TCP_CONGESTION) {
91048 - char name[TCP_CA_NAME_MAX];
91049 -@@ -2355,6 +2357,8 @@ static int do_tcp_getsockopt(struct sock
91050 + /* These are data/string values, all the others are ints */
91051 + switch (optname) {
91052 + case TCP_CONGESTION: {
91053 +@@ -2501,6 +2503,8 @@ static int do_tcp_getsockopt(struct sock
91054 struct tcp_sock *tp = tcp_sk(sk);
91055 int val, len;
91056
91057 @@ -76252,12 +72825,12 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp.c linux-2.6.32.48/net/ipv4/tcp.c
91058 if (get_user(len, optlen))
91059 return -EFAULT;
91060
91061 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4.c
91062 ---- linux-2.6.32.48/net/ipv4/tcp_ipv4.c 2011-11-12 12:44:30.000000000 -0500
91063 -+++ linux-2.6.32.48/net/ipv4/tcp_ipv4.c 2011-11-12 12:46:51.000000000 -0500
91064 -@@ -85,6 +85,9 @@
91065 - int sysctl_tcp_tw_reuse __read_mostly;
91066 +diff -urNp linux-3.0.8/net/ipv4/tcp_ipv4.c linux-3.0.8/net/ipv4/tcp_ipv4.c
91067 +--- linux-3.0.8/net/ipv4/tcp_ipv4.c 2011-10-24 08:05:21.000000000 -0400
91068 ++++ linux-3.0.8/net/ipv4/tcp_ipv4.c 2011-08-23 21:48:14.000000000 -0400
91069 +@@ -87,6 +87,9 @@ int sysctl_tcp_tw_reuse __read_mostly;
91070 int sysctl_tcp_low_latency __read_mostly;
91071 + EXPORT_SYMBOL(sysctl_tcp_low_latency);
91072
91073 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
91074 +extern int grsec_enable_blackhole;
91075 @@ -76265,7 +72838,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91076
91077 #ifdef CONFIG_TCP_MD5SIG
91078 static struct tcp_md5sig_key *tcp_v4_md5_do_lookup(struct sock *sk,
91079 -@@ -1543,6 +1546,9 @@ int tcp_v4_do_rcv(struct sock *sk, struc
91080 +@@ -1607,6 +1610,9 @@ int tcp_v4_do_rcv(struct sock *sk, struc
91081 return 0;
91082
91083 reset:
91084 @@ -76275,7 +72848,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91085 tcp_v4_send_reset(rsk, skb);
91086 discard:
91087 kfree_skb(skb);
91088 -@@ -1604,12 +1610,20 @@ int tcp_v4_rcv(struct sk_buff *skb)
91089 +@@ -1669,12 +1675,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
91090 TCP_SKB_CB(skb)->sacked = 0;
91091
91092 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
91093 @@ -76285,8 +72858,8 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91094 + ret = 1;
91095 +#endif
91096 goto no_tcp_socket;
91097 +-
91098 + }
91099 -
91100 process:
91101 - if (sk->sk_state == TCP_TIME_WAIT)
91102 + if (sk->sk_state == TCP_TIME_WAIT) {
91103 @@ -76296,9 +72869,9 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91104 goto do_time_wait;
91105 + }
91106
91107 - if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb))
91108 - goto discard_and_relse;
91109 -@@ -1651,6 +1665,10 @@ no_tcp_socket:
91110 + if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
91111 + NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
91112 +@@ -1724,6 +1737,10 @@ no_tcp_socket:
91113 bad_packet:
91114 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
91115 } else {
91116 @@ -76309,7 +72882,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91117 tcp_v4_send_reset(NULL, skb);
91118 }
91119
91120 -@@ -2238,7 +2256,11 @@ static void get_openreq4(struct sock *sk
91121 +@@ -2388,7 +2405,11 @@ static void get_openreq4(struct sock *sk
91122 0, /* non standard timer */
91123 0, /* open_requests have no inode */
91124 atomic_read(&sk->sk_refcnt),
91125 @@ -76321,7 +72894,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91126 len);
91127 }
91128
91129 -@@ -2280,7 +2302,12 @@ static void get_tcp4_sock(struct sock *s
91130 +@@ -2438,7 +2459,12 @@ static void get_tcp4_sock(struct sock *s
91131 sock_i_uid(sk),
91132 icsk->icsk_probes_out,
91133 sock_i_ino(sk),
91134 @@ -76335,8 +72908,8 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91135 jiffies_to_clock_t(icsk->icsk_rto),
91136 jiffies_to_clock_t(icsk->icsk_ack.ato),
91137 (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong,
91138 -@@ -2308,7 +2335,13 @@ static void get_timewait4_sock(struct in
91139 - " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %p%n",
91140 +@@ -2466,7 +2492,13 @@ static void get_timewait4_sock(struct in
91141 + " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n",
91142 i, src, srcp, dest, destp, tw->tw_substate, 0, 0,
91143 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
91144 - atomic_read(&tw->tw_refcnt), tw, len);
91145 @@ -76350,10 +72923,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_ipv4.c linux-2.6.32.48/net/ipv4/tcp_ipv4
91146 }
91147
91148 #define TMPSZ 150
91149 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_minisocks.c linux-2.6.32.48/net/ipv4/tcp_minisocks.c
91150 ---- linux-2.6.32.48/net/ipv4/tcp_minisocks.c 2009-12-02 22:51:21.000000000 -0500
91151 -+++ linux-2.6.32.48/net/ipv4/tcp_minisocks.c 2011-11-12 12:46:51.000000000 -0500
91152 -@@ -26,6 +26,10 @@
91153 +diff -urNp linux-3.0.8/net/ipv4/tcp_minisocks.c linux-3.0.8/net/ipv4/tcp_minisocks.c
91154 +--- linux-3.0.8/net/ipv4/tcp_minisocks.c 2011-07-21 22:17:23.000000000 -0400
91155 ++++ linux-3.0.8/net/ipv4/tcp_minisocks.c 2011-08-23 21:48:14.000000000 -0400
91156 +@@ -27,6 +27,10 @@
91157 #include <net/inet_common.h>
91158 #include <net/xfrm.h>
91159
91160 @@ -76361,10 +72934,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_minisocks.c linux-2.6.32.48/net/ipv4/tcp
91161 +extern int grsec_enable_blackhole;
91162 +#endif
91163 +
91164 - #ifdef CONFIG_SYSCTL
91165 - #define SYNC_INIT 0 /* let the user enable it */
91166 - #else
91167 -@@ -672,6 +676,10 @@ listen_overflow:
91168 + int sysctl_tcp_syncookies __read_mostly = 1;
91169 + EXPORT_SYMBOL(sysctl_tcp_syncookies);
91170 +
91171 +@@ -745,6 +749,10 @@ listen_overflow:
91172
91173 embryonic_reset:
91174 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_EMBRYONICRSTS);
91175 @@ -76375,22 +72948,22 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_minisocks.c linux-2.6.32.48/net/ipv4/tcp
91176 if (!(flg & TCP_FLAG_RST))
91177 req->rsk_ops->send_reset(sk, skb);
91178
91179 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_output.c linux-2.6.32.48/net/ipv4/tcp_output.c
91180 ---- linux-2.6.32.48/net/ipv4/tcp_output.c 2011-11-12 12:44:30.000000000 -0500
91181 -+++ linux-2.6.32.48/net/ipv4/tcp_output.c 2011-11-12 12:46:51.000000000 -0500
91182 -@@ -2234,6 +2234,8 @@ struct sk_buff *tcp_make_synack(struct s
91183 - __u8 *md5_hash_location;
91184 +diff -urNp linux-3.0.8/net/ipv4/tcp_output.c linux-3.0.8/net/ipv4/tcp_output.c
91185 +--- linux-3.0.8/net/ipv4/tcp_output.c 2011-07-21 22:17:23.000000000 -0400
91186 ++++ linux-3.0.8/net/ipv4/tcp_output.c 2011-08-23 21:48:14.000000000 -0400
91187 +@@ -2421,6 +2421,8 @@ struct sk_buff *tcp_make_synack(struct s
91188 int mss;
91189 + int s_data_desired = 0;
91190
91191 + pax_track_stack();
91192 +
91193 - skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15, 1, GFP_ATOMIC);
91194 - if (skb == NULL)
91195 - return NULL;
91196 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_probe.c linux-2.6.32.48/net/ipv4/tcp_probe.c
91197 ---- linux-2.6.32.48/net/ipv4/tcp_probe.c 2009-12-02 22:51:21.000000000 -0500
91198 -+++ linux-2.6.32.48/net/ipv4/tcp_probe.c 2011-11-12 12:46:51.000000000 -0500
91199 -@@ -200,7 +200,7 @@ static ssize_t tcpprobe_read(struct file
91200 + if (cvp != NULL && cvp->s_data_constant && cvp->s_data_desired)
91201 + s_data_desired = cvp->s_data_desired;
91202 + skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15 + s_data_desired, 1, GFP_ATOMIC);
91203 +diff -urNp linux-3.0.8/net/ipv4/tcp_probe.c linux-3.0.8/net/ipv4/tcp_probe.c
91204 +--- linux-3.0.8/net/ipv4/tcp_probe.c 2011-07-21 22:17:23.000000000 -0400
91205 ++++ linux-3.0.8/net/ipv4/tcp_probe.c 2011-08-23 21:47:56.000000000 -0400
91206 +@@ -202,7 +202,7 @@ static ssize_t tcpprobe_read(struct file
91207 if (cnt + width >= len)
91208 break;
91209
91210 @@ -76399,11 +72972,11 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_probe.c linux-2.6.32.48/net/ipv4/tcp_pro
91211 return -EFAULT;
91212 cnt += width;
91213 }
91214 -diff -urNp linux-2.6.32.48/net/ipv4/tcp_timer.c linux-2.6.32.48/net/ipv4/tcp_timer.c
91215 ---- linux-2.6.32.48/net/ipv4/tcp_timer.c 2011-11-12 12:44:30.000000000 -0500
91216 -+++ linux-2.6.32.48/net/ipv4/tcp_timer.c 2011-11-12 12:46:51.000000000 -0500
91217 -@@ -21,6 +21,10 @@
91218 - #include <linux/module.h>
91219 +diff -urNp linux-3.0.8/net/ipv4/tcp_timer.c linux-3.0.8/net/ipv4/tcp_timer.c
91220 +--- linux-3.0.8/net/ipv4/tcp_timer.c 2011-07-21 22:17:23.000000000 -0400
91221 ++++ linux-3.0.8/net/ipv4/tcp_timer.c 2011-08-23 21:48:14.000000000 -0400
91222 +@@ -22,6 +22,10 @@
91223 + #include <linux/gfp.h>
91224 #include <net/tcp.h>
91225
91226 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
91227 @@ -76413,7 +72986,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_timer.c linux-2.6.32.48/net/ipv4/tcp_tim
91228 int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
91229 int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES;
91230 int sysctl_tcp_keepalive_time __read_mostly = TCP_KEEPALIVE_TIME;
91231 -@@ -164,6 +168,13 @@ static int tcp_write_timeout(struct sock
91232 +@@ -199,6 +203,13 @@ static int tcp_write_timeout(struct sock
91233 }
91234 }
91235
91236 @@ -76424,12 +72997,12 @@ diff -urNp linux-2.6.32.48/net/ipv4/tcp_timer.c linux-2.6.32.48/net/ipv4/tcp_tim
91237 + retry_until = grsec_lastack_retries;
91238 +#endif
91239 +
91240 - if (retransmits_timed_out(sk, retry_until)) {
91241 + if (retransmits_timed_out(sk, retry_until,
91242 + syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
91243 /* Has it gone just too far? */
91244 - tcp_write_err(sk);
91245 -diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91246 ---- linux-2.6.32.48/net/ipv4/udp.c 2011-11-12 12:44:30.000000000 -0500
91247 -+++ linux-2.6.32.48/net/ipv4/udp.c 2011-11-12 12:46:51.000000000 -0500
91248 +diff -urNp linux-3.0.8/net/ipv4/udp.c linux-3.0.8/net/ipv4/udp.c
91249 +--- linux-3.0.8/net/ipv4/udp.c 2011-07-21 22:17:23.000000000 -0400
91250 ++++ linux-3.0.8/net/ipv4/udp.c 2011-08-23 21:48:14.000000000 -0400
91251 @@ -86,6 +86,7 @@
91252 #include <linux/types.h>
91253 #include <linux/fcntl.h>
91254 @@ -76438,7 +73011,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91255 #include <linux/socket.h>
91256 #include <linux/sockios.h>
91257 #include <linux/igmp.h>
91258 -@@ -106,6 +107,10 @@
91259 +@@ -107,6 +108,10 @@
91260 #include <net/xfrm.h>
91261 #include "udp_impl.h"
91262
91263 @@ -76446,10 +73019,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91264 +extern int grsec_enable_blackhole;
91265 +#endif
91266 +
91267 - struct udp_table udp_table;
91268 + struct udp_table udp_table __read_mostly;
91269 EXPORT_SYMBOL(udp_table);
91270
91271 -@@ -371,6 +376,9 @@ found:
91272 +@@ -564,6 +569,9 @@ found:
91273 return s;
91274 }
91275
91276 @@ -76459,7 +73032,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91277 /*
91278 * This routine is called by the ICMP module when it gets some
91279 * sort of error condition. If err < 0 then the socket should
91280 -@@ -639,9 +647,18 @@ int udp_sendmsg(struct kiocb *iocb, stru
91281 +@@ -855,9 +863,18 @@ int udp_sendmsg(struct kiocb *iocb, stru
91282 dport = usin->sin_port;
91283 if (dport == 0)
91284 return -EINVAL;
91285 @@ -76475,10 +73048,19 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91286 + if (err)
91287 + return err;
91288 +
91289 - daddr = inet->daddr;
91290 - dport = inet->dport;
91291 + daddr = inet->inet_daddr;
91292 + dport = inet->inet_dport;
91293 /* Open fast path for connected socket.
91294 -@@ -945,6 +962,10 @@ try_again:
91295 +@@ -1098,7 +1115,7 @@ static unsigned int first_packet_length(
91296 + udp_lib_checksum_complete(skb)) {
91297 + UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
91298 + IS_UDPLITE(sk));
91299 +- atomic_inc(&sk->sk_drops);
91300 ++ atomic_inc_unchecked(&sk->sk_drops);
91301 + __skb_unlink(skb, rcvq);
91302 + __skb_queue_tail(&list_kill, skb);
91303 + }
91304 +@@ -1184,6 +1201,10 @@ try_again:
91305 if (!skb)
91306 goto out;
91307
91308 @@ -76487,18 +73069,27 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91309 + goto out_free;
91310 +
91311 ulen = skb->len - sizeof(struct udphdr);
91312 - copied = len;
91313 - if (copied > ulen)
91314 -@@ -1068,7 +1089,7 @@ static int __udp_queue_rcv_skb(struct so
91315 - if (rc == -ENOMEM) {
91316 - UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
91317 - is_udplite);
91318 + if (len > ulen)
91319 + len = ulen;
91320 +@@ -1483,7 +1504,7 @@ int udp_queue_rcv_skb(struct sock *sk, s
91321 +
91322 + drop:
91323 + UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
91324 +- atomic_inc(&sk->sk_drops);
91325 ++ atomic_inc_unchecked(&sk->sk_drops);
91326 + kfree_skb(skb);
91327 + return -1;
91328 + }
91329 +@@ -1502,7 +1523,7 @@ static void flush_stack(struct sock **st
91330 + skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
91331 +
91332 + if (!skb1) {
91333 - atomic_inc(&sk->sk_drops);
91334 + atomic_inc_unchecked(&sk->sk_drops);
91335 - }
91336 - goto drop;
91337 - }
91338 -@@ -1338,6 +1359,9 @@ int __udp4_lib_rcv(struct sk_buff *skb,
91339 + UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
91340 + IS_UDPLITE(sk));
91341 + UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
91342 +@@ -1671,6 +1692,9 @@ int __udp4_lib_rcv(struct sk_buff *skb,
91343 goto csum_error;
91344
91345 UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
91346 @@ -76508,7 +73099,7 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91347 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
91348
91349 /*
91350 -@@ -1758,8 +1782,13 @@ static void udp4_format_sock(struct sock
91351 +@@ -2098,8 +2122,13 @@ static void udp4_format_sock(struct sock
91352 sk_wmem_alloc_get(sp),
91353 sk_rmem_alloc_get(sp),
91354 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
91355 @@ -76524,10 +73115,10 @@ diff -urNp linux-2.6.32.48/net/ipv4/udp.c linux-2.6.32.48/net/ipv4/udp.c
91356 }
91357
91358 int udp4_seq_show(struct seq_file *seq, void *v)
91359 -diff -urNp linux-2.6.32.48/net/ipv6/addrconf.c linux-2.6.32.48/net/ipv6/addrconf.c
91360 ---- linux-2.6.32.48/net/ipv6/addrconf.c 2011-11-12 12:44:30.000000000 -0500
91361 -+++ linux-2.6.32.48/net/ipv6/addrconf.c 2011-11-12 12:46:51.000000000 -0500
91362 -@@ -2053,7 +2053,7 @@ int addrconf_set_dstaddr(struct net *net
91363 +diff -urNp linux-3.0.8/net/ipv6/addrconf.c linux-3.0.8/net/ipv6/addrconf.c
91364 +--- linux-3.0.8/net/ipv6/addrconf.c 2011-07-21 22:17:23.000000000 -0400
91365 ++++ linux-3.0.8/net/ipv6/addrconf.c 2011-10-06 04:17:55.000000000 -0400
91366 +@@ -2072,7 +2072,7 @@ int addrconf_set_dstaddr(struct net *net
91367 p.iph.ihl = 5;
91368 p.iph.protocol = IPPROTO_IPV6;
91369 p.iph.ttl = 64;
91370 @@ -76536,10 +73127,10 @@ diff -urNp linux-2.6.32.48/net/ipv6/addrconf.c linux-2.6.32.48/net/ipv6/addrconf
91371
91372 if (ops->ndo_do_ioctl) {
91373 mm_segment_t oldfs = get_fs();
91374 -diff -urNp linux-2.6.32.48/net/ipv6/inet6_connection_sock.c linux-2.6.32.48/net/ipv6/inet6_connection_sock.c
91375 ---- linux-2.6.32.48/net/ipv6/inet6_connection_sock.c 2009-12-02 22:51:21.000000000 -0500
91376 -+++ linux-2.6.32.48/net/ipv6/inet6_connection_sock.c 2011-11-12 12:46:51.000000000 -0500
91377 -@@ -152,7 +152,7 @@ void __inet6_csk_dst_store(struct sock *
91378 +diff -urNp linux-3.0.8/net/ipv6/inet6_connection_sock.c linux-3.0.8/net/ipv6/inet6_connection_sock.c
91379 +--- linux-3.0.8/net/ipv6/inet6_connection_sock.c 2011-07-21 22:17:23.000000000 -0400
91380 ++++ linux-3.0.8/net/ipv6/inet6_connection_sock.c 2011-08-23 21:47:56.000000000 -0400
91381 +@@ -178,7 +178,7 @@ void __inet6_csk_dst_store(struct sock *
91382 #ifdef CONFIG_XFRM
91383 {
91384 struct rt6_info *rt = (struct rt6_info *)dst;
91385 @@ -76548,31 +73139,19 @@ diff -urNp linux-2.6.32.48/net/ipv6/inet6_connection_sock.c linux-2.6.32.48/net/
91386 }
91387 #endif
91388 }
91389 -@@ -167,7 +167,7 @@ struct dst_entry *__inet6_csk_dst_check(
91390 +@@ -193,7 +193,7 @@ struct dst_entry *__inet6_csk_dst_check(
91391 #ifdef CONFIG_XFRM
91392 if (dst) {
91393 struct rt6_info *rt = (struct rt6_info *)dst;
91394 - if (rt->rt6i_flow_cache_genid != atomic_read(&flow_cache_genid)) {
91395 + if (rt->rt6i_flow_cache_genid != atomic_read_unchecked(&flow_cache_genid)) {
91396 - sk->sk_dst_cache = NULL;
91397 - dst_release(dst);
91398 + __sk_dst_reset(sk);
91399 dst = NULL;
91400 -diff -urNp linux-2.6.32.48/net/ipv6/inet6_hashtables.c linux-2.6.32.48/net/ipv6/inet6_hashtables.c
91401 ---- linux-2.6.32.48/net/ipv6/inet6_hashtables.c 2011-11-12 12:44:30.000000000 -0500
91402 -+++ linux-2.6.32.48/net/ipv6/inet6_hashtables.c 2011-11-12 12:46:51.000000000 -0500
91403 -@@ -119,7 +119,7 @@ out:
91404 - }
91405 - EXPORT_SYMBOL(__inet6_lookup_established);
91406 -
91407 --static int inline compute_score(struct sock *sk, struct net *net,
91408 -+static inline int compute_score(struct sock *sk, struct net *net,
91409 - const unsigned short hnum,
91410 - const struct in6_addr *daddr,
91411 - const int dif)
91412 -diff -urNp linux-2.6.32.48/net/ipv6/ipv6_sockglue.c linux-2.6.32.48/net/ipv6/ipv6_sockglue.c
91413 ---- linux-2.6.32.48/net/ipv6/ipv6_sockglue.c 2009-12-02 22:51:21.000000000 -0500
91414 -+++ linux-2.6.32.48/net/ipv6/ipv6_sockglue.c 2011-11-12 12:46:53.000000000 -0500
91415 -@@ -130,6 +130,8 @@ static int do_ipv6_setsockopt(struct soc
91416 + }
91417 +diff -urNp linux-3.0.8/net/ipv6/ipv6_sockglue.c linux-3.0.8/net/ipv6/ipv6_sockglue.c
91418 +--- linux-3.0.8/net/ipv6/ipv6_sockglue.c 2011-10-24 08:05:30.000000000 -0400
91419 ++++ linux-3.0.8/net/ipv6/ipv6_sockglue.c 2011-10-16 21:55:28.000000000 -0400
91420 +@@ -129,6 +129,8 @@ static int do_ipv6_setsockopt(struct soc
91421 int val, valbool;
91422 int retv = -ENOPROTOOPT;
91423
91424 @@ -76581,7 +73160,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/ipv6_sockglue.c linux-2.6.32.48/net/ipv6/ipv
91425 if (optval == NULL)
91426 val=0;
91427 else {
91428 -@@ -881,6 +883,8 @@ static int do_ipv6_getsockopt(struct soc
91429 +@@ -919,6 +921,8 @@ static int do_ipv6_getsockopt(struct soc
91430 int len;
91431 int val;
91432
91433 @@ -76590,69 +73169,27 @@ diff -urNp linux-2.6.32.48/net/ipv6/ipv6_sockglue.c linux-2.6.32.48/net/ipv6/ipv
91434 if (ip6_mroute_opt(optname))
91435 return ip6_mroute_getsockopt(sk, optname, optval, optlen);
91436
91437 -@@ -922,7 +926,7 @@ static int do_ipv6_getsockopt(struct soc
91438 +@@ -960,7 +964,7 @@ static int do_ipv6_getsockopt(struct soc
91439 if (sk->sk_type != SOCK_STREAM)
91440 return -ENOPROTOOPT;
91441
91442 - msg.msg_control = optval;
91443 + msg.msg_control = (void __force_kernel *)optval;
91444 msg.msg_controllen = len;
91445 - msg.msg_flags = 0;
91446 -
91447 -diff -urNp linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c
91448 ---- linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c 2009-12-02 22:51:21.000000000 -0500
91449 -+++ linux-2.6.32.48/net/ipv6/netfilter/ip6_queue.c 2011-11-12 12:46:53.000000000 -0500
91450 -@@ -287,6 +287,9 @@ ipq_mangle_ipv6(ipq_verdict_msg_t *v, st
91451 + msg.msg_flags = flags;
91452
91453 - if (v->data_len < sizeof(*user_iph))
91454 - return 0;
91455 -+ if (v->data_len > 65535)
91456 -+ return -EMSGSIZE;
91457 -+
91458 - diff = v->data_len - e->skb->len;
91459 - if (diff < 0) {
91460 - if (pskb_trim(e->skb, v->data_len))
91461 -@@ -411,7 +414,8 @@ ipq_dev_drop(int ifindex)
91462 - static inline void
91463 - __ipq_rcv_skb(struct sk_buff *skb)
91464 - {
91465 -- int status, type, pid, flags, nlmsglen, skblen;
91466 -+ int status, type, pid, flags;
91467 -+ unsigned int nlmsglen, skblen;
91468 - struct nlmsghdr *nlh;
91469 -
91470 - skblen = skb->len;
91471 -diff -urNp linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c
91472 ---- linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c 2011-11-12 12:44:30.000000000 -0500
91473 -+++ linux-2.6.32.48/net/ipv6/netfilter/ip6_tables.c 2011-11-12 12:46:53.000000000 -0500
91474 -@@ -1173,6 +1173,7 @@ static int get_info(struct net *net, voi
91475 - private = &tmp;
91476 - }
91477 - #endif
91478 -+ memset(&info, 0, sizeof(info));
91479 - info.valid_hooks = t->valid_hooks;
91480 - memcpy(info.hook_entry, private->hook_entry,
91481 - sizeof(info.hook_entry));
91482 -diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91483 ---- linux-2.6.32.48/net/ipv6/raw.c 2009-12-02 22:51:21.000000000 -0500
91484 -+++ linux-2.6.32.48/net/ipv6/raw.c 2011-11-12 12:46:53.000000000 -0500
91485 -@@ -375,14 +375,14 @@ static inline int rawv6_rcv_skb(struct s
91486 - {
91487 - if ((raw6_sk(sk)->checksum || sk->sk_filter) &&
91488 +diff -urNp linux-3.0.8/net/ipv6/raw.c linux-3.0.8/net/ipv6/raw.c
91489 +--- linux-3.0.8/net/ipv6/raw.c 2011-07-21 22:17:23.000000000 -0400
91490 ++++ linux-3.0.8/net/ipv6/raw.c 2011-08-23 21:48:14.000000000 -0400
91491 +@@ -376,7 +376,7 @@ static inline int rawv6_rcv_skb(struct s
91492 + {
91493 + if ((raw6_sk(sk)->checksum || rcu_dereference_raw(sk->sk_filter)) &&
91494 skb_checksum_complete(skb)) {
91495 - atomic_inc(&sk->sk_drops);
91496 + atomic_inc_unchecked(&sk->sk_drops);
91497 kfree_skb(skb);
91498 return NET_RX_DROP;
91499 }
91500 -
91501 - /* Charge it to the socket. */
91502 - if (sock_queue_rcv_skb(sk,skb)<0) {
91503 -- atomic_inc(&sk->sk_drops);
91504 -+ atomic_inc_unchecked(&sk->sk_drops);
91505 - kfree_skb(skb);
91506 - return NET_RX_DROP;
91507 - }
91508 @@ -403,7 +403,7 @@ int rawv6_rcv(struct sock *sk, struct sk
91509 struct raw6_sock *rp = raw6_sk(sk);
91510
91511 @@ -76671,25 +73208,16 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91512 kfree_skb(skb);
91513 return NET_RX_DROP;
91514 }
91515 -@@ -518,7 +518,7 @@ csum_copy_err:
91516 - as some normal condition.
91517 - */
91518 - err = (flags&MSG_DONTWAIT) ? -EAGAIN : -EHOSTUNREACH;
91519 -- atomic_inc(&sk->sk_drops);
91520 -+ atomic_inc_unchecked(&sk->sk_drops);
91521 - goto out;
91522 - }
91523 -
91524 -@@ -600,7 +600,7 @@ out:
91525 +@@ -601,7 +601,7 @@ out:
91526 return err;
91527 }
91528
91529 -static int rawv6_send_hdrinc(struct sock *sk, void *from, int length,
91530 +static int rawv6_send_hdrinc(struct sock *sk, void *from, unsigned int length,
91531 - struct flowi *fl, struct rt6_info *rt,
91532 + struct flowi6 *fl6, struct dst_entry **dstp,
91533 unsigned int flags)
91534 {
91535 -@@ -738,6 +738,8 @@ static int rawv6_sendmsg(struct kiocb *i
91536 +@@ -742,6 +742,8 @@ static int rawv6_sendmsg(struct kiocb *i
91537 u16 proto;
91538 int err;
91539
91540 @@ -76698,7 +73226,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91541 /* Rough check on arithmetic overflow,
91542 better check is made in ip6_append_data().
91543 */
91544 -@@ -916,12 +918,17 @@ do_confirm:
91545 +@@ -909,12 +911,15 @@ do_confirm:
91546 static int rawv6_seticmpfilter(struct sock *sk, int level, int optname,
91547 char __user *optval, int optlen)
91548 {
91549 @@ -76706,8 +73234,6 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91550 +
91551 switch (optname) {
91552 case ICMPV6_FILTER:
91553 -+ if (optlen < 0)
91554 -+ return -EINVAL;
91555 if (optlen > sizeof(struct icmp6_filter))
91556 optlen = sizeof(struct icmp6_filter);
91557 - if (copy_from_user(&raw6_sk(sk)->filter, optval, optlen))
91558 @@ -76717,7 +73243,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91559 return 0;
91560 default:
91561 return -ENOPROTOOPT;
91562 -@@ -934,6 +941,7 @@ static int rawv6_geticmpfilter(struct so
91563 +@@ -927,6 +932,7 @@ static int rawv6_geticmpfilter(struct so
91564 char __user *optval, int __user *optlen)
91565 {
91566 int len;
91567 @@ -76725,7 +73251,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91568
91569 switch (optname) {
91570 case ICMPV6_FILTER:
91571 -@@ -945,7 +953,8 @@ static int rawv6_geticmpfilter(struct so
91572 +@@ -938,7 +944,8 @@ static int rawv6_geticmpfilter(struct so
91573 len = sizeof(struct icmp6_filter);
91574 if (put_user(len, optlen))
91575 return -EFAULT;
91576 @@ -76735,7 +73261,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91577 return -EFAULT;
91578 return 0;
91579 default:
91580 -@@ -1241,7 +1250,13 @@ static void raw6_sock_seq_show(struct se
91581 +@@ -1252,7 +1259,13 @@ static void raw6_sock_seq_show(struct se
91582 0, 0L, 0,
91583 sock_i_uid(sp), 0,
91584 sock_i_ino(sp),
91585 @@ -76750,10 +73276,10 @@ diff -urNp linux-2.6.32.48/net/ipv6/raw.c linux-2.6.32.48/net/ipv6/raw.c
91586 }
91587
91588 static int raw6_seq_show(struct seq_file *seq, void *v)
91589 -diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6.c
91590 ---- linux-2.6.32.48/net/ipv6/tcp_ipv6.c 2011-11-12 12:44:30.000000000 -0500
91591 -+++ linux-2.6.32.48/net/ipv6/tcp_ipv6.c 2011-11-12 12:46:53.000000000 -0500
91592 -@@ -89,6 +89,10 @@ static struct tcp_md5sig_key *tcp_v6_md5
91593 +diff -urNp linux-3.0.8/net/ipv6/tcp_ipv6.c linux-3.0.8/net/ipv6/tcp_ipv6.c
91594 +--- linux-3.0.8/net/ipv6/tcp_ipv6.c 2011-10-24 08:05:21.000000000 -0400
91595 ++++ linux-3.0.8/net/ipv6/tcp_ipv6.c 2011-08-23 21:48:14.000000000 -0400
91596 +@@ -93,6 +93,10 @@ static struct tcp_md5sig_key *tcp_v6_md5
91597 }
91598 #endif
91599
91600 @@ -76764,7 +73290,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
91601 static void tcp_v6_hash(struct sock *sk)
91602 {
91603 if (sk->sk_state != TCP_CLOSE) {
91604 -@@ -1579,6 +1583,9 @@ static int tcp_v6_do_rcv(struct sock *sk
91605 +@@ -1662,6 +1666,9 @@ static int tcp_v6_do_rcv(struct sock *sk
91606 return 0;
91607
91608 reset:
91609 @@ -76774,7 +73300,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
91610 tcp_v6_send_reset(sk, skb);
91611 discard:
91612 if (opt_skb)
91613 -@@ -1656,12 +1663,20 @@ static int tcp_v6_rcv(struct sk_buff *sk
91614 +@@ -1741,12 +1748,20 @@ static int tcp_v6_rcv(struct sk_buff *sk
91615 TCP_SKB_CB(skb)->sacked = 0;
91616
91617 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
91618 @@ -76795,9 +73321,9 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
91619 goto do_time_wait;
91620 + }
91621
91622 - if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb))
91623 - goto discard_and_relse;
91624 -@@ -1701,6 +1716,10 @@ no_tcp_socket:
91625 + if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
91626 + NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
91627 +@@ -1794,6 +1809,10 @@ no_tcp_socket:
91628 bad_packet:
91629 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
91630 } else {
91631 @@ -76808,7 +73334,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
91632 tcp_v6_send_reset(NULL, skb);
91633 }
91634
91635 -@@ -1916,7 +1935,13 @@ static void get_openreq6(struct seq_file
91636 +@@ -2054,7 +2073,13 @@ static void get_openreq6(struct seq_file
91637 uid,
91638 0, /* non standard timer */
91639 0, /* open_requests have no inode */
91640 @@ -76823,7 +73349,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
91641 }
91642
91643 static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
91644 -@@ -1966,7 +1991,12 @@ static void get_tcp6_sock(struct seq_fil
91645 +@@ -2104,7 +2129,12 @@ static void get_tcp6_sock(struct seq_fil
91646 sock_i_uid(sp),
91647 icsk->icsk_probes_out,
91648 sock_i_ino(sp),
91649 @@ -76837,7 +73363,7 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
91650 jiffies_to_clock_t(icsk->icsk_rto),
91651 jiffies_to_clock_t(icsk->icsk_ack.ato),
91652 (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong,
91653 -@@ -2001,7 +2031,13 @@ static void get_timewait6_sock(struct se
91654 +@@ -2139,7 +2169,13 @@ static void get_timewait6_sock(struct se
91655 dest->s6_addr32[2], dest->s6_addr32[3], destp,
91656 tw->tw_substate, 0, 0,
91657 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
91658 @@ -76852,10 +73378,10 @@ diff -urNp linux-2.6.32.48/net/ipv6/tcp_ipv6.c linux-2.6.32.48/net/ipv6/tcp_ipv6
91659 }
91660
91661 static int tcp6_seq_show(struct seq_file *seq, void *v)
91662 -diff -urNp linux-2.6.32.48/net/ipv6/udp.c linux-2.6.32.48/net/ipv6/udp.c
91663 ---- linux-2.6.32.48/net/ipv6/udp.c 2011-11-12 12:44:30.000000000 -0500
91664 -+++ linux-2.6.32.48/net/ipv6/udp.c 2011-11-12 12:46:53.000000000 -0500
91665 -@@ -49,6 +49,10 @@
91666 +diff -urNp linux-3.0.8/net/ipv6/udp.c linux-3.0.8/net/ipv6/udp.c
91667 +--- linux-3.0.8/net/ipv6/udp.c 2011-10-24 08:05:32.000000000 -0400
91668 ++++ linux-3.0.8/net/ipv6/udp.c 2011-10-17 23:17:19.000000000 -0400
91669 +@@ -50,6 +50,10 @@
91670 #include <linux/seq_file.h>
91671 #include "udp_impl.h"
91672
91673 @@ -76866,26 +73392,44 @@ diff -urNp linux-2.6.32.48/net/ipv6/udp.c linux-2.6.32.48/net/ipv6/udp.c
91674 int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
91675 {
91676 const struct in6_addr *sk_rcv_saddr6 = &inet6_sk(sk)->rcv_saddr;
91677 -@@ -391,7 +395,7 @@ int udpv6_queue_rcv_skb(struct sock * sk
91678 - if (rc == -ENOMEM) {
91679 - UDP6_INC_STATS_BH(sock_net(sk),
91680 - UDP_MIB_RCVBUFERRORS, is_udplite);
91681 -- atomic_inc(&sk->sk_drops);
91682 -+ atomic_inc_unchecked(&sk->sk_drops);
91683 +@@ -548,7 +552,7 @@ int udpv6_queue_rcv_skb(struct sock * sk
91684 +
91685 + return 0;
91686 + drop:
91687 +- atomic_inc(&sk->sk_drops);
91688 ++ atomic_inc_unchecked(&sk->sk_drops);
91689 + drop_no_sk_drops_inc:
91690 + UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
91691 + kfree_skb(skb);
91692 +@@ -624,7 +628,7 @@ static void flush_stack(struct sock **st
91693 + continue;
91694 }
91695 - goto drop;
91696 - }
91697 -@@ -590,6 +594,9 @@ int __udp6_lib_rcv(struct sk_buff *skb,
91698 + drop:
91699 +- atomic_inc(&sk->sk_drops);
91700 ++ atomic_inc_unchecked(&sk->sk_drops);
91701 + UDP6_INC_STATS_BH(sock_net(sk),
91702 + UDP_MIB_RCVBUFERRORS, IS_UDPLITE(sk));
91703 + UDP6_INC_STATS_BH(sock_net(sk),
91704 +@@ -779,6 +783,9 @@ int __udp6_lib_rcv(struct sk_buff *skb,
91705 UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS,
91706 proto == IPPROTO_UDPLITE);
91707
91708 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
91709 + if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK))
91710 +#endif
91711 - icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0, dev);
91712 + icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0);
91713
91714 kfree_skb(skb);
91715 -@@ -1209,8 +1216,13 @@ static void udp6_sock_seq_show(struct se
91716 +@@ -795,7 +802,7 @@ int __udp6_lib_rcv(struct sk_buff *skb,
91717 + if (!sock_owned_by_user(sk))
91718 + udpv6_queue_rcv_skb(sk, skb);
91719 + else if (sk_add_backlog(sk, skb)) {
91720 +- atomic_inc(&sk->sk_drops);
91721 ++ atomic_inc_unchecked(&sk->sk_drops);
91722 + bh_unlock_sock(sk);
91723 + sock_put(sk);
91724 + goto discard;
91725 +@@ -1408,8 +1415,13 @@ static void udp6_sock_seq_show(struct se
91726 0, 0L, 0,
91727 sock_i_uid(sp), 0,
91728 sock_i_ino(sp),
91729 @@ -76901,10 +73445,10 @@ diff -urNp linux-2.6.32.48/net/ipv6/udp.c linux-2.6.32.48/net/ipv6/udp.c
91730 }
91731
91732 int udp6_seq_show(struct seq_file *seq, void *v)
91733 -diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c
91734 ---- linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c 2009-12-02 22:51:21.000000000 -0500
91735 -+++ linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c 2011-11-12 12:46:53.000000000 -0500
91736 -@@ -280,16 +280,16 @@ static int ircomm_tty_block_til_ready(st
91737 +diff -urNp linux-3.0.8/net/irda/ircomm/ircomm_tty.c linux-3.0.8/net/irda/ircomm/ircomm_tty.c
91738 +--- linux-3.0.8/net/irda/ircomm/ircomm_tty.c 2011-07-21 22:17:23.000000000 -0400
91739 ++++ linux-3.0.8/net/irda/ircomm/ircomm_tty.c 2011-08-23 21:47:56.000000000 -0400
91740 +@@ -282,16 +282,16 @@ static int ircomm_tty_block_til_ready(st
91741 add_wait_queue(&self->open_wait, &wait);
91742
91743 IRDA_DEBUG(2, "%s(%d):block_til_ready before block on %s open_count=%d\n",
91744 @@ -76924,7 +73468,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91745
91746 while (1) {
91747 if (tty->termios->c_cflag & CBAUD) {
91748 -@@ -329,7 +329,7 @@ static int ircomm_tty_block_til_ready(st
91749 +@@ -331,7 +331,7 @@ static int ircomm_tty_block_til_ready(st
91750 }
91751
91752 IRDA_DEBUG(1, "%s(%d):block_til_ready blocking on %s open_count=%d\n",
91753 @@ -76933,7 +73477,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91754
91755 schedule();
91756 }
91757 -@@ -340,13 +340,13 @@ static int ircomm_tty_block_til_ready(st
91758 +@@ -342,13 +342,13 @@ static int ircomm_tty_block_til_ready(st
91759 if (extra_count) {
91760 /* ++ is not atomic, so this should be protected - Jean II */
91761 spin_lock_irqsave(&self->spinlock, flags);
91762 @@ -76950,7 +73494,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91763
91764 if (!retval)
91765 self->flags |= ASYNC_NORMAL_ACTIVE;
91766 -@@ -415,14 +415,14 @@ static int ircomm_tty_open(struct tty_st
91767 +@@ -417,14 +417,14 @@ static int ircomm_tty_open(struct tty_st
91768 }
91769 /* ++ is not atomic, so this should be protected - Jean II */
91770 spin_lock_irqsave(&self->spinlock, flags);
91771 @@ -76967,7 +73511,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91772
91773 /* Not really used by us, but lets do it anyway */
91774 self->tty->low_latency = (self->flags & ASYNC_LOW_LATENCY) ? 1 : 0;
91775 -@@ -511,7 +511,7 @@ static void ircomm_tty_close(struct tty_
91776 +@@ -510,7 +510,7 @@ static void ircomm_tty_close(struct tty_
91777 return;
91778 }
91779
91780 @@ -76976,7 +73520,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91781 /*
91782 * Uh, oh. tty->count is 1, which means that the tty
91783 * structure will be freed. state->count should always
91784 -@@ -521,16 +521,16 @@ static void ircomm_tty_close(struct tty_
91785 +@@ -520,16 +520,16 @@ static void ircomm_tty_close(struct tty_
91786 */
91787 IRDA_DEBUG(0, "%s(), bad serial port count; "
91788 "tty->count is 1, state->count is %d\n", __func__ ,
91789 @@ -76999,7 +73543,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91790 spin_unlock_irqrestore(&self->spinlock, flags);
91791
91792 IRDA_DEBUG(0, "%s(), open count > 0\n", __func__ );
91793 -@@ -562,7 +562,7 @@ static void ircomm_tty_close(struct tty_
91794 +@@ -561,7 +561,7 @@ static void ircomm_tty_close(struct tty_
91795 tty->closing = 0;
91796 self->tty = NULL;
91797
91798 @@ -77008,7 +73552,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91799 if (self->close_delay)
91800 schedule_timeout_interruptible(self->close_delay);
91801 wake_up_interruptible(&self->open_wait);
91802 -@@ -1017,7 +1017,7 @@ static void ircomm_tty_hangup(struct tty
91803 +@@ -1013,7 +1013,7 @@ static void ircomm_tty_hangup(struct tty
91804 spin_lock_irqsave(&self->spinlock, flags);
91805 self->flags &= ~ASYNC_NORMAL_ACTIVE;
91806 self->tty = NULL;
91807 @@ -77017,7 +73561,7 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91808 spin_unlock_irqrestore(&self->spinlock, flags);
91809
91810 wake_up_interruptible(&self->open_wait);
91811 -@@ -1369,7 +1369,7 @@ static void ircomm_tty_line_info(struct
91812 +@@ -1360,7 +1360,7 @@ static void ircomm_tty_line_info(struct
91813 seq_putc(m, '\n');
91814
91815 seq_printf(m, "Role: %s\n", self->client ? "client" : "server");
91816 @@ -77026,10 +73570,10 @@ diff -urNp linux-2.6.32.48/net/irda/ircomm/ircomm_tty.c linux-2.6.32.48/net/irda
91817 seq_printf(m, "Max data size: %d\n", self->max_data_size);
91818 seq_printf(m, "Max header size: %d\n", self->max_header_size);
91819
91820 -diff -urNp linux-2.6.32.48/net/iucv/af_iucv.c linux-2.6.32.48/net/iucv/af_iucv.c
91821 ---- linux-2.6.32.48/net/iucv/af_iucv.c 2009-12-02 22:51:21.000000000 -0500
91822 -+++ linux-2.6.32.48/net/iucv/af_iucv.c 2011-11-12 12:46:53.000000000 -0500
91823 -@@ -651,10 +651,10 @@ static int iucv_sock_autobind(struct soc
91824 +diff -urNp linux-3.0.8/net/iucv/af_iucv.c linux-3.0.8/net/iucv/af_iucv.c
91825 +--- linux-3.0.8/net/iucv/af_iucv.c 2011-07-21 22:17:23.000000000 -0400
91826 ++++ linux-3.0.8/net/iucv/af_iucv.c 2011-08-23 21:47:56.000000000 -0400
91827 +@@ -648,10 +648,10 @@ static int iucv_sock_autobind(struct soc
91828
91829 write_lock_bh(&iucv_sk_list.lock);
91830
91831 @@ -77042,10 +73586,10 @@ diff -urNp linux-2.6.32.48/net/iucv/af_iucv.c linux-2.6.32.48/net/iucv/af_iucv.c
91832 }
91833
91834 write_unlock_bh(&iucv_sk_list.lock);
91835 -diff -urNp linux-2.6.32.48/net/key/af_key.c linux-2.6.32.48/net/key/af_key.c
91836 ---- linux-2.6.32.48/net/key/af_key.c 2009-12-02 22:51:21.000000000 -0500
91837 -+++ linux-2.6.32.48/net/key/af_key.c 2011-11-12 12:46:53.000000000 -0500
91838 -@@ -2489,6 +2489,8 @@ static int pfkey_migrate(struct sock *sk
91839 +diff -urNp linux-3.0.8/net/key/af_key.c linux-3.0.8/net/key/af_key.c
91840 +--- linux-3.0.8/net/key/af_key.c 2011-07-21 22:17:23.000000000 -0400
91841 ++++ linux-3.0.8/net/key/af_key.c 2011-08-23 21:48:14.000000000 -0400
91842 +@@ -2481,6 +2481,8 @@ static int pfkey_migrate(struct sock *sk
91843 struct xfrm_migrate m[XFRM_MAX_DEPTH];
91844 struct xfrm_kmaddress k;
91845
91846 @@ -77054,22 +73598,23 @@ diff -urNp linux-2.6.32.48/net/key/af_key.c linux-2.6.32.48/net/key/af_key.c
91847 if (!present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC - 1],
91848 ext_hdrs[SADB_EXT_ADDRESS_DST - 1]) ||
91849 !ext_hdrs[SADB_X_EXT_POLICY - 1]) {
91850 -@@ -3660,7 +3662,11 @@ static int pfkey_seq_show(struct seq_fil
91851 - seq_printf(f ,"sk RefCnt Rmem Wmem User Inode\n");
91852 - else
91853 - seq_printf(f ,"%p %-6d %-6u %-6u %-6u %-6lu\n",
91854 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
91855 -+ NULL,
91856 -+#else
91857 - s,
91858 -+#endif
91859 - atomic_read(&s->sk_refcnt),
91860 - sk_rmem_alloc_get(s),
91861 - sk_wmem_alloc_get(s),
91862 -diff -urNp linux-2.6.32.48/net/lapb/lapb_iface.c linux-2.6.32.48/net/lapb/lapb_iface.c
91863 ---- linux-2.6.32.48/net/lapb/lapb_iface.c 2009-12-02 22:51:21.000000000 -0500
91864 -+++ linux-2.6.32.48/net/lapb/lapb_iface.c 2011-11-12 12:46:53.000000000 -0500
91865 -@@ -157,7 +157,7 @@ int lapb_register(struct net_device *dev
91866 +@@ -3016,10 +3018,10 @@ static int pfkey_send_policy_notify(stru
91867 + static u32 get_acqseq(void)
91868 + {
91869 + u32 res;
91870 +- static atomic_t acqseq;
91871 ++ static atomic_unchecked_t acqseq;
91872 +
91873 + do {
91874 +- res = atomic_inc_return(&acqseq);
91875 ++ res = atomic_inc_return_unchecked(&acqseq);
91876 + } while (!res);
91877 + return res;
91878 + }
91879 +diff -urNp linux-3.0.8/net/lapb/lapb_iface.c linux-3.0.8/net/lapb/lapb_iface.c
91880 +--- linux-3.0.8/net/lapb/lapb_iface.c 2011-07-21 22:17:23.000000000 -0400
91881 ++++ linux-3.0.8/net/lapb/lapb_iface.c 2011-08-23 21:47:56.000000000 -0400
91882 +@@ -158,7 +158,7 @@ int lapb_register(struct net_device *dev
91883 goto out;
91884
91885 lapb->dev = dev;
91886 @@ -77078,7 +73623,7 @@ diff -urNp linux-2.6.32.48/net/lapb/lapb_iface.c linux-2.6.32.48/net/lapb/lapb_i
91887
91888 __lapb_insert_cb(lapb);
91889
91890 -@@ -379,32 +379,32 @@ int lapb_data_received(struct net_device
91891 +@@ -380,32 +380,32 @@ int lapb_data_received(struct net_device
91892
91893 void lapb_connect_confirmation(struct lapb_cb *lapb, int reason)
91894 {
91895 @@ -77121,7 +73666,7 @@ diff -urNp linux-2.6.32.48/net/lapb/lapb_iface.c linux-2.6.32.48/net/lapb/lapb_i
91896
91897 kfree_skb(skb);
91898 return NET_RX_SUCCESS; /* For now; must be != NET_RX_DROP */
91899 -@@ -414,8 +414,8 @@ int lapb_data_transmit(struct lapb_cb *l
91900 +@@ -415,8 +415,8 @@ int lapb_data_transmit(struct lapb_cb *l
91901 {
91902 int used = 0;
91903
91904 @@ -77132,71 +73677,39 @@ diff -urNp linux-2.6.32.48/net/lapb/lapb_iface.c linux-2.6.32.48/net/lapb/lapb_i
91905 used = 1;
91906 }
91907
91908 -diff -urNp linux-2.6.32.48/net/mac80211/cfg.c linux-2.6.32.48/net/mac80211/cfg.c
91909 ---- linux-2.6.32.48/net/mac80211/cfg.c 2011-11-12 12:44:30.000000000 -0500
91910 -+++ linux-2.6.32.48/net/mac80211/cfg.c 2011-11-12 12:46:53.000000000 -0500
91911 -@@ -1369,7 +1369,7 @@ static int ieee80211_set_bitrate_mask(st
91912 - return err;
91913 - }
91914 +diff -urNp linux-3.0.8/net/mac80211/debugfs_sta.c linux-3.0.8/net/mac80211/debugfs_sta.c
91915 +--- linux-3.0.8/net/mac80211/debugfs_sta.c 2011-07-21 22:17:23.000000000 -0400
91916 ++++ linux-3.0.8/net/mac80211/debugfs_sta.c 2011-08-23 21:48:14.000000000 -0400
91917 +@@ -140,6 +140,8 @@ static ssize_t sta_agg_status_read(struc
91918 + struct tid_ampdu_rx *tid_rx;
91919 + struct tid_ampdu_tx *tid_tx;
91920
91921 --struct cfg80211_ops mac80211_config_ops = {
91922 -+const struct cfg80211_ops mac80211_config_ops = {
91923 - .add_virtual_intf = ieee80211_add_iface,
91924 - .del_virtual_intf = ieee80211_del_iface,
91925 - .change_virtual_intf = ieee80211_change_iface,
91926 -diff -urNp linux-2.6.32.48/net/mac80211/cfg.h linux-2.6.32.48/net/mac80211/cfg.h
91927 ---- linux-2.6.32.48/net/mac80211/cfg.h 2009-12-02 22:51:21.000000000 -0500
91928 -+++ linux-2.6.32.48/net/mac80211/cfg.h 2011-11-12 12:46:53.000000000 -0500
91929 -@@ -4,6 +4,6 @@
91930 - #ifndef __CFG_H
91931 - #define __CFG_H
91932 -
91933 --extern struct cfg80211_ops mac80211_config_ops;
91934 -+extern const struct cfg80211_ops mac80211_config_ops;
91935 -
91936 - #endif /* __CFG_H */
91937 -diff -urNp linux-2.6.32.48/net/mac80211/debugfs_key.c linux-2.6.32.48/net/mac80211/debugfs_key.c
91938 ---- linux-2.6.32.48/net/mac80211/debugfs_key.c 2009-12-02 22:51:21.000000000 -0500
91939 -+++ linux-2.6.32.48/net/mac80211/debugfs_key.c 2011-11-12 12:46:53.000000000 -0500
91940 -@@ -211,9 +211,13 @@ static ssize_t key_key_read(struct file
91941 - size_t count, loff_t *ppos)
91942 - {
91943 - struct ieee80211_key *key = file->private_data;
91944 -- int i, res, bufsize = 2 * key->conf.keylen + 2;
91945 -+ int i, bufsize = 2 * key->conf.keylen + 2;
91946 - char *buf = kmalloc(bufsize, GFP_KERNEL);
91947 - char *p = buf;
91948 -+ ssize_t res;
91949 -+
91950 -+ if (buf == NULL)
91951 -+ return -ENOMEM;
91952 ++ pax_track_stack();
91953 ++
91954 + rcu_read_lock();
91955
91956 - for (i = 0; i < key->conf.keylen; i++)
91957 - p += scnprintf(p, bufsize + buf - p, "%02x", key->conf.key[i]);
91958 -diff -urNp linux-2.6.32.48/net/mac80211/debugfs_sta.c linux-2.6.32.48/net/mac80211/debugfs_sta.c
91959 ---- linux-2.6.32.48/net/mac80211/debugfs_sta.c 2009-12-02 22:51:21.000000000 -0500
91960 -+++ linux-2.6.32.48/net/mac80211/debugfs_sta.c 2011-11-12 12:46:53.000000000 -0500
91961 -@@ -124,6 +124,8 @@ static ssize_t sta_agg_status_read(struc
91962 - int i;
91963 + p += scnprintf(p, sizeof(buf) + buf - p, "next dialog_token: %#02x\n",
91964 +@@ -240,6 +242,8 @@ static ssize_t sta_ht_capa_read(struct f
91965 struct sta_info *sta = file->private_data;
91966 + struct ieee80211_sta_ht_cap *htc = &sta->sta.ht_cap;
91967
91968 + pax_track_stack();
91969 +
91970 - spin_lock_bh(&sta->lock);
91971 - p += scnprintf(p, sizeof(buf)+buf-p, "next dialog_token is %#02x\n",
91972 - sta->ampdu_mlme.dialog_token_allocator + 1);
91973 -diff -urNp linux-2.6.32.48/net/mac80211/ieee80211_i.h linux-2.6.32.48/net/mac80211/ieee80211_i.h
91974 ---- linux-2.6.32.48/net/mac80211/ieee80211_i.h 2011-11-12 12:44:30.000000000 -0500
91975 -+++ linux-2.6.32.48/net/mac80211/ieee80211_i.h 2011-11-12 12:46:53.000000000 -0500
91976 -@@ -25,6 +25,7 @@
91977 - #include <linux/etherdevice.h>
91978 + p += scnprintf(p, sizeof(buf) + buf - p, "ht %ssupported\n",
91979 + htc->ht_supported ? "" : "not ");
91980 + if (htc->ht_supported) {
91981 +diff -urNp linux-3.0.8/net/mac80211/ieee80211_i.h linux-3.0.8/net/mac80211/ieee80211_i.h
91982 +--- linux-3.0.8/net/mac80211/ieee80211_i.h 2011-07-21 22:17:23.000000000 -0400
91983 ++++ linux-3.0.8/net/mac80211/ieee80211_i.h 2011-08-23 21:47:56.000000000 -0400
91984 +@@ -27,6 +27,7 @@
91985 + #include <net/ieee80211_radiotap.h>
91986 #include <net/cfg80211.h>
91987 #include <net/mac80211.h>
91988 +#include <asm/local.h>
91989 #include "key.h"
91990 #include "sta_info.h"
91991
91992 -@@ -635,7 +636,7 @@ struct ieee80211_local {
91993 +@@ -721,7 +722,7 @@ struct ieee80211_local {
91994 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
91995 spinlock_t queue_stop_reason_lock;
91996
91997 @@ -77204,11 +73717,11 @@ diff -urNp linux-2.6.32.48/net/mac80211/ieee80211_i.h linux-2.6.32.48/net/mac802
91998 + local_t open_count;
91999 int monitors, cooked_mntrs;
92000 /* number of interfaces with corresponding FIF_ flags */
92001 - int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll;
92002 -diff -urNp linux-2.6.32.48/net/mac80211/iface.c linux-2.6.32.48/net/mac80211/iface.c
92003 ---- linux-2.6.32.48/net/mac80211/iface.c 2011-11-12 12:44:30.000000000 -0500
92004 -+++ linux-2.6.32.48/net/mac80211/iface.c 2011-11-12 12:46:53.000000000 -0500
92005 -@@ -166,7 +166,7 @@ static int ieee80211_open(struct net_dev
92006 + int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
92007 +diff -urNp linux-3.0.8/net/mac80211/iface.c linux-3.0.8/net/mac80211/iface.c
92008 +--- linux-3.0.8/net/mac80211/iface.c 2011-10-24 08:05:21.000000000 -0400
92009 ++++ linux-3.0.8/net/mac80211/iface.c 2011-08-23 21:47:56.000000000 -0400
92010 +@@ -211,7 +211,7 @@ static int ieee80211_do_open(struct net_
92011 break;
92012 }
92013
92014 @@ -77217,55 +73730,55 @@ diff -urNp linux-2.6.32.48/net/mac80211/iface.c linux-2.6.32.48/net/mac80211/ifa
92015 res = drv_start(local);
92016 if (res)
92017 goto err_del_bss;
92018 -@@ -196,7 +196,7 @@ static int ieee80211_open(struct net_dev
92019 - * Validate the MAC address for this device.
92020 - */
92021 - if (!is_valid_ether_addr(dev->dev_addr)) {
92022 -- if (!local->open_count)
92023 -+ if (!local_read(&local->open_count))
92024 - drv_stop(local);
92025 - return -EADDRNOTAVAIL;
92026 - }
92027 -@@ -292,7 +292,7 @@ static int ieee80211_open(struct net_dev
92028 +@@ -235,7 +235,7 @@ static int ieee80211_do_open(struct net_
92029 + memcpy(dev->perm_addr, dev->dev_addr, ETH_ALEN);
92030 +
92031 + if (!is_valid_ether_addr(dev->dev_addr)) {
92032 +- if (!local->open_count)
92033 ++ if (!local_read(&local->open_count))
92034 + drv_stop(local);
92035 + return -EADDRNOTAVAIL;
92036 + }
92037 +@@ -327,7 +327,7 @@ static int ieee80211_do_open(struct net_
92038 + mutex_unlock(&local->mtx);
92039
92040 - hw_reconf_flags |= __ieee80211_recalc_idle(local);
92041 + if (coming_up)
92042 +- local->open_count++;
92043 ++ local_inc(&local->open_count);
92044
92045 -- local->open_count++;
92046 -+ local_inc(&local->open_count);
92047 if (hw_reconf_flags) {
92048 ieee80211_hw_config(local, hw_reconf_flags);
92049 - /*
92050 -@@ -320,7 +320,7 @@ static int ieee80211_open(struct net_dev
92051 +@@ -347,7 +347,7 @@ static int ieee80211_do_open(struct net_
92052 err_del_interface:
92053 - drv_remove_interface(local, &conf);
92054 + drv_remove_interface(local, &sdata->vif);
92055 err_stop:
92056 - if (!local->open_count)
92057 + if (!local_read(&local->open_count))
92058 drv_stop(local);
92059 err_del_bss:
92060 sdata->bss = NULL;
92061 -@@ -420,7 +420,7 @@ static int ieee80211_stop(struct net_dev
92062 - WARN_ON(!list_empty(&sdata->u.ap.vlans));
92063 +@@ -475,7 +475,7 @@ static void ieee80211_do_stop(struct iee
92064 }
92065
92066 -- local->open_count--;
92067 -+ local_dec(&local->open_count);
92068 + if (going_down)
92069 +- local->open_count--;
92070 ++ local_dec(&local->open_count);
92071
92072 switch (sdata->vif.type) {
92073 case NL80211_IFTYPE_AP_VLAN:
92074 -@@ -526,7 +526,7 @@ static int ieee80211_stop(struct net_dev
92075 +@@ -534,7 +534,7 @@ static void ieee80211_do_stop(struct iee
92076
92077 ieee80211_recalc_ps(local, -1);
92078
92079 - if (local->open_count == 0) {
92080 + if (local_read(&local->open_count) == 0) {
92081 + if (local->ops->napi_poll)
92082 + napi_disable(&local->napi);
92083 ieee80211_clear_tx_pending(local);
92084 - ieee80211_stop_device(local);
92085 -
92086 -diff -urNp linux-2.6.32.48/net/mac80211/main.c linux-2.6.32.48/net/mac80211/main.c
92087 ---- linux-2.6.32.48/net/mac80211/main.c 2011-11-12 12:44:30.000000000 -0500
92088 -+++ linux-2.6.32.48/net/mac80211/main.c 2011-11-12 12:46:53.000000000 -0500
92089 -@@ -145,7 +145,7 @@ int ieee80211_hw_config(struct ieee80211
92090 +diff -urNp linux-3.0.8/net/mac80211/main.c linux-3.0.8/net/mac80211/main.c
92091 +--- linux-3.0.8/net/mac80211/main.c 2011-07-21 22:17:23.000000000 -0400
92092 ++++ linux-3.0.8/net/mac80211/main.c 2011-08-23 21:47:56.000000000 -0400
92093 +@@ -209,7 +209,7 @@ int ieee80211_hw_config(struct ieee80211
92094 local->hw.conf.power_level = power;
92095 }
92096
92097 @@ -77274,22 +73787,31 @@ diff -urNp linux-2.6.32.48/net/mac80211/main.c linux-2.6.32.48/net/mac80211/main
92098 ret = drv_config(local, changed);
92099 /*
92100 * Goal:
92101 -diff -urNp linux-2.6.32.48/net/mac80211/mlme.c linux-2.6.32.48/net/mac80211/mlme.c
92102 ---- linux-2.6.32.48/net/mac80211/mlme.c 2011-11-12 12:44:30.000000000 -0500
92103 -+++ linux-2.6.32.48/net/mac80211/mlme.c 2011-11-12 12:46:53.000000000 -0500
92104 -@@ -1438,6 +1438,8 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee
92105 - bool have_higher_than_11mbit = false, newsta = false;
92106 +diff -urNp linux-3.0.8/net/mac80211/mlme.c linux-3.0.8/net/mac80211/mlme.c
92107 +--- linux-3.0.8/net/mac80211/mlme.c 2011-10-24 08:05:21.000000000 -0400
92108 ++++ linux-3.0.8/net/mac80211/mlme.c 2011-08-23 21:48:14.000000000 -0400
92109 +@@ -1444,6 +1444,8 @@ static bool ieee80211_assoc_success(stru
92110 + bool have_higher_than_11mbit = false;
92111 u16 ap_ht_cap_flags;
92112
92113 + pax_track_stack();
92114 +
92115 - /*
92116 - * AssocResp and ReassocResp have identical structure, so process both
92117 - * of them in this function.
92118 -diff -urNp linux-2.6.32.48/net/mac80211/pm.c linux-2.6.32.48/net/mac80211/pm.c
92119 ---- linux-2.6.32.48/net/mac80211/pm.c 2009-12-02 22:51:21.000000000 -0500
92120 -+++ linux-2.6.32.48/net/mac80211/pm.c 2011-11-12 12:46:53.000000000 -0500
92121 -@@ -107,7 +107,7 @@ int __ieee80211_suspend(struct ieee80211
92122 + /* AssocResp and ReassocResp have identical structure */
92123 +
92124 + aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
92125 +diff -urNp linux-3.0.8/net/mac80211/pm.c linux-3.0.8/net/mac80211/pm.c
92126 +--- linux-3.0.8/net/mac80211/pm.c 2011-07-21 22:17:23.000000000 -0400
92127 ++++ linux-3.0.8/net/mac80211/pm.c 2011-08-23 21:47:56.000000000 -0400
92128 +@@ -47,7 +47,7 @@ int __ieee80211_suspend(struct ieee80211
92129 + cancel_work_sync(&local->dynamic_ps_enable_work);
92130 + del_timer_sync(&local->dynamic_ps_timer);
92131 +
92132 +- local->wowlan = wowlan && local->open_count;
92133 ++ local->wowlan = wowlan && local_read(&local->open_count);
92134 + if (local->wowlan) {
92135 + int err = drv_suspend(local, wowlan);
92136 + if (err) {
92137 +@@ -111,7 +111,7 @@ int __ieee80211_suspend(struct ieee80211
92138 }
92139
92140 /* stop hardware - this must stop RX */
92141 @@ -77297,36 +73819,36 @@ diff -urNp linux-2.6.32.48/net/mac80211/pm.c linux-2.6.32.48/net/mac80211/pm.c
92142 + if (local_read(&local->open_count))
92143 ieee80211_stop_device(local);
92144
92145 - local->suspended = true;
92146 -diff -urNp linux-2.6.32.48/net/mac80211/rate.c linux-2.6.32.48/net/mac80211/rate.c
92147 ---- linux-2.6.32.48/net/mac80211/rate.c 2009-12-02 22:51:21.000000000 -0500
92148 -+++ linux-2.6.32.48/net/mac80211/rate.c 2011-11-12 12:46:53.000000000 -0500
92149 -@@ -287,7 +287,7 @@ int ieee80211_init_rate_ctrl_alg(struct
92150 - struct rate_control_ref *ref, *old;
92151 + suspend:
92152 +diff -urNp linux-3.0.8/net/mac80211/rate.c linux-3.0.8/net/mac80211/rate.c
92153 +--- linux-3.0.8/net/mac80211/rate.c 2011-07-21 22:17:23.000000000 -0400
92154 ++++ linux-3.0.8/net/mac80211/rate.c 2011-08-23 21:47:56.000000000 -0400
92155 +@@ -371,7 +371,7 @@ int ieee80211_init_rate_ctrl_alg(struct
92156
92157 ASSERT_RTNL();
92158 +
92159 - if (local->open_count)
92160 + if (local_read(&local->open_count))
92161 return -EBUSY;
92162
92163 - ref = rate_control_alloc(name, local);
92164 -diff -urNp linux-2.6.32.48/net/mac80211/tx.c linux-2.6.32.48/net/mac80211/tx.c
92165 ---- linux-2.6.32.48/net/mac80211/tx.c 2011-11-12 12:44:30.000000000 -0500
92166 -+++ linux-2.6.32.48/net/mac80211/tx.c 2011-11-12 12:46:53.000000000 -0500
92167 -@@ -173,7 +173,7 @@ static __le16 ieee80211_duration(struct
92168 - return cpu_to_le16(dur);
92169 - }
92170 + if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) {
92171 +diff -urNp linux-3.0.8/net/mac80211/rc80211_pid_debugfs.c linux-3.0.8/net/mac80211/rc80211_pid_debugfs.c
92172 +--- linux-3.0.8/net/mac80211/rc80211_pid_debugfs.c 2011-07-21 22:17:23.000000000 -0400
92173 ++++ linux-3.0.8/net/mac80211/rc80211_pid_debugfs.c 2011-08-23 21:47:56.000000000 -0400
92174 +@@ -192,7 +192,7 @@ static ssize_t rate_control_pid_events_r
92175
92176 --static int inline is_ieee80211_device(struct ieee80211_local *local,
92177 -+static inline int is_ieee80211_device(struct ieee80211_local *local,
92178 - struct net_device *dev)
92179 - {
92180 - return local == wdev_priv(dev->ieee80211_ptr);
92181 -diff -urNp linux-2.6.32.48/net/mac80211/util.c linux-2.6.32.48/net/mac80211/util.c
92182 ---- linux-2.6.32.48/net/mac80211/util.c 2011-11-12 12:44:30.000000000 -0500
92183 -+++ linux-2.6.32.48/net/mac80211/util.c 2011-11-12 12:46:53.000000000 -0500
92184 -@@ -1042,7 +1042,7 @@ int ieee80211_reconfig(struct ieee80211_
92185 - local->resuming = true;
92186 + spin_unlock_irqrestore(&events->lock, status);
92187 +
92188 +- if (copy_to_user(buf, pb, p))
92189 ++ if (p > sizeof(pb) || copy_to_user(buf, pb, p))
92190 + return -EFAULT;
92191 +
92192 + return p;
92193 +diff -urNp linux-3.0.8/net/mac80211/util.c linux-3.0.8/net/mac80211/util.c
92194 +--- linux-3.0.8/net/mac80211/util.c 2011-07-21 22:17:23.000000000 -0400
92195 ++++ linux-3.0.8/net/mac80211/util.c 2011-08-23 21:47:56.000000000 -0400
92196 +@@ -1147,7 +1147,7 @@ int ieee80211_reconfig(struct ieee80211_
92197 + #endif
92198
92199 /* restart hardware */
92200 - if (local->open_count) {
92201 @@ -77334,62 +73856,28 @@ diff -urNp linux-2.6.32.48/net/mac80211/util.c linux-2.6.32.48/net/mac80211/util
92202 /*
92203 * Upon resume hardware can sometimes be goofy due to
92204 * various platform / driver / bus issues, so restarting
92205 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c
92206 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c 2009-12-02 22:51:21.000000000 -0500
92207 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_app.c 2011-11-12 12:46:53.000000000 -0500
92208 -@@ -564,7 +564,7 @@ static const struct file_operations ip_v
92209 - .open = ip_vs_app_open,
92210 - .read = seq_read,
92211 - .llseek = seq_lseek,
92212 -- .release = seq_release,
92213 -+ .release = seq_release_net,
92214 - };
92215 - #endif
92216 -
92217 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c
92218 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c 2011-11-12 12:44:30.000000000 -0500
92219 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c 2011-11-12 12:46:53.000000000 -0500
92220 -@@ -453,10 +453,10 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, s
92221 - /* if the connection is not template and is created
92222 - * by sync, preserve the activity flag.
92223 - */
92224 -- cp->flags |= atomic_read(&dest->conn_flags) &
92225 -+ cp->flags |= atomic_read_unchecked(&dest->conn_flags) &
92226 - (~IP_VS_CONN_F_INACTIVE);
92227 - else
92228 -- cp->flags |= atomic_read(&dest->conn_flags);
92229 -+ cp->flags |= atomic_read_unchecked(&dest->conn_flags);
92230 - cp->dest = dest;
92231 -
92232 - IP_VS_DBG_BUF(7, "Bind-dest %s c:%s:%d v:%s:%d "
92233 -@@ -723,7 +723,7 @@ ip_vs_conn_new(int af, int proto, const
92234 +diff -urNp linux-3.0.8/net/netfilter/ipvs/ip_vs_conn.c linux-3.0.8/net/netfilter/ipvs/ip_vs_conn.c
92235 +--- linux-3.0.8/net/netfilter/ipvs/ip_vs_conn.c 2011-07-21 22:17:23.000000000 -0400
92236 ++++ linux-3.0.8/net/netfilter/ipvs/ip_vs_conn.c 2011-08-23 21:47:56.000000000 -0400
92237 +@@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, s
92238 + /* Increase the refcnt counter of the dest */
92239 + atomic_inc(&dest->refcnt);
92240 +
92241 +- conn_flags = atomic_read(&dest->conn_flags);
92242 ++ conn_flags = atomic_read_unchecked(&dest->conn_flags);
92243 + if (cp->protocol != IPPROTO_UDP)
92244 + conn_flags &= ~IP_VS_CONN_F_ONE_PACKET;
92245 + /* Bind with the destination and its corresponding transmitter */
92246 +@@ -869,7 +869,7 @@ ip_vs_conn_new(const struct ip_vs_conn_p
92247 atomic_set(&cp->refcnt, 1);
92248
92249 atomic_set(&cp->n_control, 0);
92250 - atomic_set(&cp->in_pkts, 0);
92251 + atomic_set_unchecked(&cp->in_pkts, 0);
92252
92253 - atomic_inc(&ip_vs_conn_count);
92254 + atomic_inc(&ipvs->conn_count);
92255 if (flags & IP_VS_CONN_F_NO_CPORT)
92256 -@@ -871,7 +871,7 @@ static const struct file_operations ip_v
92257 - .open = ip_vs_conn_open,
92258 - .read = seq_read,
92259 - .llseek = seq_lseek,
92260 -- .release = seq_release,
92261 -+ .release = seq_release_net,
92262 - };
92263 -
92264 - static const char *ip_vs_origin_name(unsigned flags)
92265 -@@ -934,7 +934,7 @@ static const struct file_operations ip_v
92266 - .open = ip_vs_conn_sync_open,
92267 - .read = seq_read,
92268 - .llseek = seq_lseek,
92269 -- .release = seq_release,
92270 -+ .release = seq_release_net,
92271 - };
92272 -
92273 - #endif
92274 -@@ -961,7 +961,7 @@ static inline int todrop_entry(struct ip
92275 +@@ -1149,7 +1149,7 @@ static inline int todrop_entry(struct ip
92276
92277 /* Don't drop the entry if its number of incoming packets is not
92278 located in [0, 8] */
92279 @@ -77398,11 +73886,11 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_conn.c linux-2.6.32.48/net/n
92280 if (i > 8 || i < 0) return 0;
92281
92282 if (!todrop_rate[i]) return 0;
92283 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c
92284 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c 2009-12-02 22:51:21.000000000 -0500
92285 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c 2011-11-12 12:46:53.000000000 -0500
92286 -@@ -485,7 +485,7 @@ int ip_vs_leave(struct ip_vs_service *sv
92287 - ret = cp->packet_xmit(skb, cp, pp);
92288 +diff -urNp linux-3.0.8/net/netfilter/ipvs/ip_vs_core.c linux-3.0.8/net/netfilter/ipvs/ip_vs_core.c
92289 +--- linux-3.0.8/net/netfilter/ipvs/ip_vs_core.c 2011-07-21 22:17:23.000000000 -0400
92290 ++++ linux-3.0.8/net/netfilter/ipvs/ip_vs_core.c 2011-08-23 21:47:56.000000000 -0400
92291 +@@ -563,7 +563,7 @@ int ip_vs_leave(struct ip_vs_service *sv
92292 + ret = cp->packet_xmit(skb, cp, pd->pp);
92293 /* do not touch skb anymore */
92294
92295 - atomic_inc(&cp->in_pkts);
92296 @@ -77410,28 +73898,28 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_core.c linux-2.6.32.48/net/n
92297 ip_vs_conn_put(cp);
92298 return ret;
92299 }
92300 -@@ -1357,7 +1357,7 @@ ip_vs_in(unsigned int hooknum, struct sk
92301 - * Sync connection if it is about to close to
92302 - * encorage the standby servers to update the connections timeout
92303 - */
92304 -- pkts = atomic_add_return(1, &cp->in_pkts);
92305 -+ pkts = atomic_add_return_unchecked(1, &cp->in_pkts);
92306 - if (af == AF_INET &&
92307 - (ip_vs_sync_state & IP_VS_STATE_MASTER) &&
92308 - (((cp->protocol != IPPROTO_TCP ||
92309 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c
92310 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-12 12:44:30.000000000 -0500
92311 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c 2011-11-12 12:46:53.000000000 -0500
92312 -@@ -792,7 +792,7 @@ __ip_vs_update_dest(struct ip_vs_service
92313 - ip_vs_rs_hash(dest);
92314 - write_unlock_bh(&__ip_vs_rs_lock);
92315 +@@ -1613,7 +1613,7 @@ ip_vs_in(unsigned int hooknum, struct sk
92316 + if (cp->flags & IP_VS_CONN_F_ONE_PACKET)
92317 + pkts = sysctl_sync_threshold(ipvs);
92318 + else
92319 +- pkts = atomic_add_return(1, &cp->in_pkts);
92320 ++ pkts = atomic_add_return_unchecked(1, &cp->in_pkts);
92321 +
92322 + if ((ipvs->sync_state & IP_VS_STATE_MASTER) &&
92323 + cp->protocol == IPPROTO_SCTP) {
92324 +diff -urNp linux-3.0.8/net/netfilter/ipvs/ip_vs_ctl.c linux-3.0.8/net/netfilter/ipvs/ip_vs_ctl.c
92325 +--- linux-3.0.8/net/netfilter/ipvs/ip_vs_ctl.c 2011-10-24 08:05:21.000000000 -0400
92326 ++++ linux-3.0.8/net/netfilter/ipvs/ip_vs_ctl.c 2011-08-23 21:48:14.000000000 -0400
92327 +@@ -782,7 +782,7 @@ __ip_vs_update_dest(struct ip_vs_service
92328 + ip_vs_rs_hash(ipvs, dest);
92329 + write_unlock_bh(&ipvs->rs_lock);
92330 }
92331 - atomic_set(&dest->conn_flags, conn_flags);
92332 + atomic_set_unchecked(&dest->conn_flags, conn_flags);
92333
92334 /* bind the service */
92335 if (!dest->svc) {
92336 -@@ -1888,7 +1888,7 @@ static int ip_vs_info_seq_show(struct se
92337 +@@ -2027,7 +2027,7 @@ static int ip_vs_info_seq_show(struct se
92338 " %-7s %-6d %-10d %-10d\n",
92339 &dest->addr.in6,
92340 ntohs(dest->port),
92341 @@ -77440,7 +73928,7 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.48/net/ne
92342 atomic_read(&dest->weight),
92343 atomic_read(&dest->activeconns),
92344 atomic_read(&dest->inactconns));
92345 -@@ -1899,7 +1899,7 @@ static int ip_vs_info_seq_show(struct se
92346 +@@ -2038,7 +2038,7 @@ static int ip_vs_info_seq_show(struct se
92347 "%-7s %-6d %-10d %-10d\n",
92348 ntohl(dest->addr.ip),
92349 ntohs(dest->port),
92350 @@ -77449,25 +73937,16 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.48/net/ne
92351 atomic_read(&dest->weight),
92352 atomic_read(&dest->activeconns),
92353 atomic_read(&dest->inactconns));
92354 -@@ -1927,7 +1927,7 @@ static const struct file_operations ip_v
92355 - .open = ip_vs_info_open,
92356 - .read = seq_read,
92357 - .llseek = seq_lseek,
92358 -- .release = seq_release_private,
92359 -+ .release = seq_release_net,
92360 - };
92361 +@@ -2284,6 +2284,8 @@ do_ip_vs_set_ctl(struct sock *sk, int cm
92362 + struct ip_vs_dest_user *udest_compat;
92363 + struct ip_vs_dest_user_kern udest;
92364
92365 - #endif
92366 -@@ -1976,7 +1976,7 @@ static const struct file_operations ip_v
92367 - .open = ip_vs_stats_seq_open,
92368 - .read = seq_read,
92369 - .llseek = seq_lseek,
92370 -- .release = single_release,
92371 -+ .release = single_release_net,
92372 - };
92373 ++ pax_track_stack();
92374 ++
92375 + if (!capable(CAP_NET_ADMIN))
92376 + return -EPERM;
92377
92378 - #endif
92379 -@@ -2292,7 +2292,7 @@ __ip_vs_get_dest_entries(const struct ip
92380 +@@ -2498,7 +2500,7 @@ __ip_vs_get_dest_entries(struct net *net
92381
92382 entry.addr = dest->addr.ip;
92383 entry.port = dest->port;
92384 @@ -77476,16 +73955,7 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.48/net/ne
92385 entry.weight = atomic_read(&dest->weight);
92386 entry.u_threshold = dest->u_threshold;
92387 entry.l_threshold = dest->l_threshold;
92388 -@@ -2353,6 +2353,8 @@ do_ip_vs_get_ctl(struct sock *sk, int cm
92389 - unsigned char arg[128];
92390 - int ret = 0;
92391 -
92392 -+ pax_track_stack();
92393 -+
92394 - if (!capable(CAP_NET_ADMIN))
92395 - return -EPERM;
92396 -
92397 -@@ -2802,7 +2804,7 @@ static int ip_vs_genl_fill_dest(struct s
92398 +@@ -3026,7 +3028,7 @@ static int ip_vs_genl_fill_dest(struct s
92399 NLA_PUT_U16(skb, IPVS_DEST_ATTR_PORT, dest->port);
92400
92401 NLA_PUT_U32(skb, IPVS_DEST_ATTR_FWD_METHOD,
92402 @@ -77494,22 +73964,31 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_ctl.c linux-2.6.32.48/net/ne
92403 NLA_PUT_U32(skb, IPVS_DEST_ATTR_WEIGHT, atomic_read(&dest->weight));
92404 NLA_PUT_U32(skb, IPVS_DEST_ATTR_U_THRESH, dest->u_threshold);
92405 NLA_PUT_U32(skb, IPVS_DEST_ATTR_L_THRESH, dest->l_threshold);
92406 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c
92407 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c 2009-12-02 22:51:21.000000000 -0500
92408 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_sync.c 2011-11-12 12:46:53.000000000 -0500
92409 -@@ -438,7 +438,7 @@ static void ip_vs_process_message(const
92410 -
92411 - if (opt)
92412 - memcpy(&cp->in_seq, opt, sizeof(*opt));
92413 -- atomic_set(&cp->in_pkts, sysctl_ip_vs_sync_threshold[0]);
92414 -+ atomic_set_unchecked(&cp->in_pkts, sysctl_ip_vs_sync_threshold[0]);
92415 - cp->state = state;
92416 - cp->old_state = cp->state;
92417 - /*
92418 -diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c
92419 ---- linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c 2009-12-02 22:51:21.000000000 -0500
92420 -+++ linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c 2011-11-12 12:46:53.000000000 -0500
92421 -@@ -875,7 +875,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, str
92422 +diff -urNp linux-3.0.8/net/netfilter/ipvs/ip_vs_sync.c linux-3.0.8/net/netfilter/ipvs/ip_vs_sync.c
92423 +--- linux-3.0.8/net/netfilter/ipvs/ip_vs_sync.c 2011-07-21 22:17:23.000000000 -0400
92424 ++++ linux-3.0.8/net/netfilter/ipvs/ip_vs_sync.c 2011-08-23 21:47:56.000000000 -0400
92425 +@@ -648,7 +648,7 @@ control:
92426 + * i.e only increment in_pkts for Templates.
92427 + */
92428 + if (cp->flags & IP_VS_CONN_F_TEMPLATE) {
92429 +- int pkts = atomic_add_return(1, &cp->in_pkts);
92430 ++ int pkts = atomic_add_return_unchecked(1, &cp->in_pkts);
92431 +
92432 + if (pkts % sysctl_sync_period(ipvs) != 1)
92433 + return;
92434 +@@ -794,7 +794,7 @@ static void ip_vs_proc_conn(struct net *
92435 +
92436 + if (opt)
92437 + memcpy(&cp->in_seq, opt, sizeof(*opt));
92438 +- atomic_set(&cp->in_pkts, sysctl_sync_threshold(ipvs));
92439 ++ atomic_set_unchecked(&cp->in_pkts, sysctl_sync_threshold(ipvs));
92440 + cp->state = state;
92441 + cp->old_state = cp->state;
92442 + /*
92443 +diff -urNp linux-3.0.8/net/netfilter/ipvs/ip_vs_xmit.c linux-3.0.8/net/netfilter/ipvs/ip_vs_xmit.c
92444 +--- linux-3.0.8/net/netfilter/ipvs/ip_vs_xmit.c 2011-07-21 22:17:23.000000000 -0400
92445 ++++ linux-3.0.8/net/netfilter/ipvs/ip_vs_xmit.c 2011-08-23 21:47:56.000000000 -0400
92446 +@@ -1151,7 +1151,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, str
92447 else
92448 rc = NF_ACCEPT;
92449 /* do not touch skb anymore */
92450 @@ -77518,7 +73997,7 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c linux-2.6.32.48/net/n
92451 goto out;
92452 }
92453
92454 -@@ -949,7 +949,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb,
92455 +@@ -1272,7 +1272,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb,
92456 else
92457 rc = NF_ACCEPT;
92458 /* do not touch skb anymore */
92459 @@ -77527,10 +74006,10 @@ diff -urNp linux-2.6.32.48/net/netfilter/ipvs/ip_vs_xmit.c linux-2.6.32.48/net/n
92460 goto out;
92461 }
92462
92463 -diff -urNp linux-2.6.32.48/net/netfilter/Kconfig linux-2.6.32.48/net/netfilter/Kconfig
92464 ---- linux-2.6.32.48/net/netfilter/Kconfig 2009-12-02 22:51:21.000000000 -0500
92465 -+++ linux-2.6.32.48/net/netfilter/Kconfig 2011-11-12 12:46:53.000000000 -0500
92466 -@@ -635,6 +635,16 @@ config NETFILTER_XT_MATCH_ESP
92467 +diff -urNp linux-3.0.8/net/netfilter/Kconfig linux-3.0.8/net/netfilter/Kconfig
92468 +--- linux-3.0.8/net/netfilter/Kconfig 2011-07-21 22:17:23.000000000 -0400
92469 ++++ linux-3.0.8/net/netfilter/Kconfig 2011-08-23 21:48:14.000000000 -0400
92470 +@@ -781,6 +781,16 @@ config NETFILTER_XT_MATCH_ESP
92471
92472 To compile it as a module, choose M here. If unsure, say N.
92473
92474 @@ -77542,47 +74021,35 @@ diff -urNp linux-2.6.32.48/net/netfilter/Kconfig linux-2.6.32.48/net/netfilter/K
92475 + The gradm match allows to match on grsecurity RBAC being enabled.
92476 + It is useful when iptables rules are applied early on bootup to
92477 + prevent connections to the machine (except from a trusted host)
92478 -+ while the RBAC system is disabled.
92479 ++ while the RBAC system is disabled.
92480 +
92481 config NETFILTER_XT_MATCH_HASHLIMIT
92482 tristate '"hashlimit" match support'
92483 depends on (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n)
92484 -diff -urNp linux-2.6.32.48/net/netfilter/Makefile linux-2.6.32.48/net/netfilter/Makefile
92485 ---- linux-2.6.32.48/net/netfilter/Makefile 2009-12-02 22:51:21.000000000 -0500
92486 -+++ linux-2.6.32.48/net/netfilter/Makefile 2011-11-12 12:46:53.000000000 -0500
92487 -@@ -68,6 +68,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_CONNTRAC
92488 - obj-$(CONFIG_NETFILTER_XT_MATCH_DCCP) += xt_dccp.o
92489 +diff -urNp linux-3.0.8/net/netfilter/Makefile linux-3.0.8/net/netfilter/Makefile
92490 +--- linux-3.0.8/net/netfilter/Makefile 2011-07-21 22:17:23.000000000 -0400
92491 ++++ linux-3.0.8/net/netfilter/Makefile 2011-08-23 21:48:14.000000000 -0400
92492 +@@ -81,6 +81,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DCCP) +=
92493 + obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o
92494 obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o
92495 obj-$(CONFIG_NETFILTER_XT_MATCH_ESP) += xt_esp.o
92496 +obj-$(CONFIG_NETFILTER_XT_MATCH_GRADM) += xt_gradm.o
92497 obj-$(CONFIG_NETFILTER_XT_MATCH_HASHLIMIT) += xt_hashlimit.o
92498 obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
92499 obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
92500 -diff -urNp linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c
92501 ---- linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c 2011-11-12 12:44:30.000000000 -0500
92502 -+++ linux-2.6.32.48/net/netfilter/nf_conntrack_netlink.c 2011-11-12 12:46:53.000000000 -0500
92503 -@@ -706,7 +706,7 @@ ctnetlink_parse_tuple_proto(struct nlatt
92504 - static int
92505 - ctnetlink_parse_tuple(const struct nlattr * const cda[],
92506 - struct nf_conntrack_tuple *tuple,
92507 -- enum ctattr_tuple type, u_int8_t l3num)
92508 -+ enum ctattr_type type, u_int8_t l3num)
92509 - {
92510 - struct nlattr *tb[CTA_TUPLE_MAX+1];
92511 - int err;
92512 -diff -urNp linux-2.6.32.48/net/netfilter/nfnetlink_log.c linux-2.6.32.48/net/netfilter/nfnetlink_log.c
92513 ---- linux-2.6.32.48/net/netfilter/nfnetlink_log.c 2009-12-02 22:51:21.000000000 -0500
92514 -+++ linux-2.6.32.48/net/netfilter/nfnetlink_log.c 2011-11-12 12:46:53.000000000 -0500
92515 -@@ -68,7 +68,7 @@ struct nfulnl_instance {
92516 +diff -urNp linux-3.0.8/net/netfilter/nfnetlink_log.c linux-3.0.8/net/netfilter/nfnetlink_log.c
92517 +--- linux-3.0.8/net/netfilter/nfnetlink_log.c 2011-07-21 22:17:23.000000000 -0400
92518 ++++ linux-3.0.8/net/netfilter/nfnetlink_log.c 2011-08-23 21:47:56.000000000 -0400
92519 +@@ -70,7 +70,7 @@ struct nfulnl_instance {
92520 };
92521
92522 - static DEFINE_RWLOCK(instances_lock);
92523 + static DEFINE_SPINLOCK(instances_lock);
92524 -static atomic_t global_seq;
92525 +static atomic_unchecked_t global_seq;
92526
92527 #define INSTANCE_BUCKETS 16
92528 static struct hlist_head instance_table[INSTANCE_BUCKETS];
92529 -@@ -493,7 +493,7 @@ __build_packet_message(struct nfulnl_ins
92530 +@@ -505,7 +505,7 @@ __build_packet_message(struct nfulnl_ins
92531 /* global sequence number */
92532 if (inst->flags & NFULNL_CFG_F_SEQ_GLOBAL)
92533 NLA_PUT_BE32(inst->skb, NFULA_SEQ_GLOBAL,
92534 @@ -77591,9 +74058,39 @@ diff -urNp linux-2.6.32.48/net/netfilter/nfnetlink_log.c linux-2.6.32.48/net/net
92535
92536 if (data_len) {
92537 struct nlattr *nla;
92538 -diff -urNp linux-2.6.32.48/net/netfilter/xt_gradm.c linux-2.6.32.48/net/netfilter/xt_gradm.c
92539 ---- linux-2.6.32.48/net/netfilter/xt_gradm.c 1969-12-31 19:00:00.000000000 -0500
92540 -+++ linux-2.6.32.48/net/netfilter/xt_gradm.c 2011-11-12 12:46:53.000000000 -0500
92541 +diff -urNp linux-3.0.8/net/netfilter/nfnetlink_queue.c linux-3.0.8/net/netfilter/nfnetlink_queue.c
92542 +--- linux-3.0.8/net/netfilter/nfnetlink_queue.c 2011-07-21 22:17:23.000000000 -0400
92543 ++++ linux-3.0.8/net/netfilter/nfnetlink_queue.c 2011-08-23 21:47:56.000000000 -0400
92544 +@@ -58,7 +58,7 @@ struct nfqnl_instance {
92545 + */
92546 + spinlock_t lock;
92547 + unsigned int queue_total;
92548 +- atomic_t id_sequence; /* 'sequence' of pkt ids */
92549 ++ atomic_unchecked_t id_sequence; /* 'sequence' of pkt ids */
92550 + struct list_head queue_list; /* packets in queue */
92551 + };
92552 +
92553 +@@ -272,7 +272,7 @@ nfqnl_build_packet_message(struct nfqnl_
92554 + nfmsg->version = NFNETLINK_V0;
92555 + nfmsg->res_id = htons(queue->queue_num);
92556 +
92557 +- entry->id = atomic_inc_return(&queue->id_sequence);
92558 ++ entry->id = atomic_inc_return_unchecked(&queue->id_sequence);
92559 + pmsg.packet_id = htonl(entry->id);
92560 + pmsg.hw_protocol = entskb->protocol;
92561 + pmsg.hook = entry->hook;
92562 +@@ -870,7 +870,7 @@ static int seq_show(struct seq_file *s,
92563 + inst->peer_pid, inst->queue_total,
92564 + inst->copy_mode, inst->copy_range,
92565 + inst->queue_dropped, inst->queue_user_dropped,
92566 +- atomic_read(&inst->id_sequence), 1);
92567 ++ atomic_read_unchecked(&inst->id_sequence), 1);
92568 + }
92569 +
92570 + static const struct seq_operations nfqnl_seq_ops = {
92571 +diff -urNp linux-3.0.8/net/netfilter/xt_gradm.c linux-3.0.8/net/netfilter/xt_gradm.c
92572 +--- linux-3.0.8/net/netfilter/xt_gradm.c 1969-12-31 19:00:00.000000000 -0500
92573 ++++ linux-3.0.8/net/netfilter/xt_gradm.c 2011-08-23 21:48:14.000000000 -0400
92574 @@ -0,0 +1,51 @@
92575 +/*
92576 + * gradm match for netfilter
92577 @@ -77611,7 +74108,7 @@ diff -urNp linux-2.6.32.48/net/netfilter/xt_gradm.c linux-2.6.32.48/net/netfilte
92578 +#include <linux/netfilter/xt_gradm.h>
92579 +
92580 +static bool
92581 -+gradm_mt(const struct sk_buff *skb, const struct xt_match_param *par)
92582 ++gradm_mt(const struct sk_buff *skb, struct xt_action_param *par)
92583 +{
92584 + const struct xt_gradm_mtinfo *info = par->matchinfo;
92585 + bool retval = false;
92586 @@ -77646,10 +74143,43 @@ diff -urNp linux-2.6.32.48/net/netfilter/xt_gradm.c linux-2.6.32.48/net/netfilte
92587 +MODULE_LICENSE("GPL");
92588 +MODULE_ALIAS("ipt_gradm");
92589 +MODULE_ALIAS("ip6t_gradm");
92590 -diff -urNp linux-2.6.32.48/net/netlink/af_netlink.c linux-2.6.32.48/net/netlink/af_netlink.c
92591 ---- linux-2.6.32.48/net/netlink/af_netlink.c 2011-11-12 12:44:30.000000000 -0500
92592 -+++ linux-2.6.32.48/net/netlink/af_netlink.c 2011-11-12 12:46:53.000000000 -0500
92593 -@@ -733,7 +733,7 @@ static void netlink_overrun(struct sock
92594 +diff -urNp linux-3.0.8/net/netfilter/xt_statistic.c linux-3.0.8/net/netfilter/xt_statistic.c
92595 +--- linux-3.0.8/net/netfilter/xt_statistic.c 2011-07-21 22:17:23.000000000 -0400
92596 ++++ linux-3.0.8/net/netfilter/xt_statistic.c 2011-08-23 21:47:56.000000000 -0400
92597 +@@ -18,7 +18,7 @@
92598 + #include <linux/netfilter/x_tables.h>
92599 +
92600 + struct xt_statistic_priv {
92601 +- atomic_t count;
92602 ++ atomic_unchecked_t count;
92603 + } ____cacheline_aligned_in_smp;
92604 +
92605 + MODULE_LICENSE("GPL");
92606 +@@ -41,9 +41,9 @@ statistic_mt(const struct sk_buff *skb,
92607 + break;
92608 + case XT_STATISTIC_MODE_NTH:
92609 + do {
92610 +- oval = atomic_read(&info->master->count);
92611 ++ oval = atomic_read_unchecked(&info->master->count);
92612 + nval = (oval == info->u.nth.every) ? 0 : oval + 1;
92613 +- } while (atomic_cmpxchg(&info->master->count, oval, nval) != oval);
92614 ++ } while (atomic_cmpxchg_unchecked(&info->master->count, oval, nval) != oval);
92615 + if (nval == 0)
92616 + ret = !ret;
92617 + break;
92618 +@@ -63,7 +63,7 @@ static int statistic_mt_check(const stru
92619 + info->master = kzalloc(sizeof(*info->master), GFP_KERNEL);
92620 + if (info->master == NULL)
92621 + return -ENOMEM;
92622 +- atomic_set(&info->master->count, info->u.nth.count);
92623 ++ atomic_set_unchecked(&info->master->count, info->u.nth.count);
92624 +
92625 + return 0;
92626 + }
92627 +diff -urNp linux-3.0.8/net/netlink/af_netlink.c linux-3.0.8/net/netlink/af_netlink.c
92628 +--- linux-3.0.8/net/netlink/af_netlink.c 2011-07-21 22:17:23.000000000 -0400
92629 ++++ linux-3.0.8/net/netlink/af_netlink.c 2011-08-23 21:47:56.000000000 -0400
92630 +@@ -742,7 +742,7 @@ static void netlink_overrun(struct sock
92631 sk->sk_error_report(sk);
92632 }
92633 }
92634 @@ -77658,35 +74188,19 @@ diff -urNp linux-2.6.32.48/net/netlink/af_netlink.c linux-2.6.32.48/net/netlink/
92635 }
92636
92637 static struct sock *netlink_getsockbypid(struct sock *ssk, u32 pid)
92638 -@@ -1964,15 +1964,23 @@ static int netlink_seq_show(struct seq_f
92639 - struct netlink_sock *nlk = nlk_sk(s);
92640 -
92641 - seq_printf(seq, "%p %-3d %-6d %08x %-8d %-8d %p %-8d %-8d\n",
92642 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
92643 -+ NULL,
92644 -+#else
92645 - s,
92646 -+#endif
92647 - s->sk_protocol,
92648 - nlk->pid,
92649 - nlk->groups ? (u32)nlk->groups[0] : 0,
92650 - sk_rmem_alloc_get(s),
92651 +@@ -1994,7 +1994,7 @@ static int netlink_seq_show(struct seq_f
92652 sk_wmem_alloc_get(s),
92653 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
92654 -+ NULL,
92655 -+#else
92656 nlk->cb,
92657 -+#endif
92658 atomic_read(&s->sk_refcnt),
92659 -- atomic_read(&s->sk_drops)
92660 -+ atomic_read_unchecked(&s->sk_drops)
92661 +- atomic_read(&s->sk_drops),
92662 ++ atomic_read_unchecked(&s->sk_drops),
92663 + sock_i_ino(s)
92664 );
92665
92666 - }
92667 -diff -urNp linux-2.6.32.48/net/netrom/af_netrom.c linux-2.6.32.48/net/netrom/af_netrom.c
92668 ---- linux-2.6.32.48/net/netrom/af_netrom.c 2009-12-02 22:51:21.000000000 -0500
92669 -+++ linux-2.6.32.48/net/netrom/af_netrom.c 2011-11-12 12:46:53.000000000 -0500
92670 -@@ -838,6 +838,7 @@ static int nr_getname(struct socket *soc
92671 +diff -urNp linux-3.0.8/net/netrom/af_netrom.c linux-3.0.8/net/netrom/af_netrom.c
92672 +--- linux-3.0.8/net/netrom/af_netrom.c 2011-07-21 22:17:23.000000000 -0400
92673 ++++ linux-3.0.8/net/netrom/af_netrom.c 2011-08-23 21:48:14.000000000 -0400
92674 +@@ -839,6 +839,7 @@ static int nr_getname(struct socket *soc
92675 struct sock *sk = sock->sk;
92676 struct nr_sock *nr = nr_sk(sk);
92677
92678 @@ -77694,7 +74208,7 @@ diff -urNp linux-2.6.32.48/net/netrom/af_netrom.c linux-2.6.32.48/net/netrom/af_
92679 lock_sock(sk);
92680 if (peer != 0) {
92681 if (sk->sk_state != TCP_ESTABLISHED) {
92682 -@@ -852,7 +853,6 @@ static int nr_getname(struct socket *soc
92683 +@@ -853,7 +854,6 @@ static int nr_getname(struct socket *soc
92684 *uaddr_len = sizeof(struct full_sockaddr_ax25);
92685 } else {
92686 sax->fsa_ax25.sax25_family = AF_NETROM;
92687 @@ -77702,24 +74216,47 @@ diff -urNp linux-2.6.32.48/net/netrom/af_netrom.c linux-2.6.32.48/net/netrom/af_
92688 sax->fsa_ax25.sax25_call = nr->source_addr;
92689 *uaddr_len = sizeof(struct sockaddr_ax25);
92690 }
92691 -diff -urNp linux-2.6.32.48/net/packet/af_packet.c linux-2.6.32.48/net/packet/af_packet.c
92692 ---- linux-2.6.32.48/net/packet/af_packet.c 2011-11-12 12:44:30.000000000 -0500
92693 -+++ linux-2.6.32.48/net/packet/af_packet.c 2011-11-12 12:46:53.000000000 -0500
92694 -@@ -2429,7 +2429,11 @@ static int packet_seq_show(struct seq_fi
92695 +diff -urNp linux-3.0.8/net/packet/af_packet.c linux-3.0.8/net/packet/af_packet.c
92696 +--- linux-3.0.8/net/packet/af_packet.c 2011-07-21 22:17:23.000000000 -0400
92697 ++++ linux-3.0.8/net/packet/af_packet.c 2011-08-23 21:47:56.000000000 -0400
92698 +@@ -647,14 +647,14 @@ static int packet_rcv(struct sk_buff *sk
92699 +
92700 + spin_lock(&sk->sk_receive_queue.lock);
92701 + po->stats.tp_packets++;
92702 +- skb->dropcount = atomic_read(&sk->sk_drops);
92703 ++ skb->dropcount = atomic_read_unchecked(&sk->sk_drops);
92704 + __skb_queue_tail(&sk->sk_receive_queue, skb);
92705 + spin_unlock(&sk->sk_receive_queue.lock);
92706 + sk->sk_data_ready(sk, skb->len);
92707 + return 0;
92708
92709 - seq_printf(seq,
92710 - "%p %-6d %-4d %04x %-5d %1d %-6u %-6u %-6lu\n",
92711 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
92712 -+ NULL,
92713 -+#else
92714 - s,
92715 -+#endif
92716 - atomic_read(&s->sk_refcnt),
92717 - s->sk_type,
92718 - ntohs(po->num),
92719 -diff -urNp linux-2.6.32.48/net/phonet/af_phonet.c linux-2.6.32.48/net/phonet/af_phonet.c
92720 ---- linux-2.6.32.48/net/phonet/af_phonet.c 2011-11-12 12:44:30.000000000 -0500
92721 -+++ linux-2.6.32.48/net/phonet/af_phonet.c 2011-11-12 12:46:53.000000000 -0500
92722 + drop_n_acct:
92723 +- po->stats.tp_drops = atomic_inc_return(&sk->sk_drops);
92724 ++ po->stats.tp_drops = atomic_inc_return_unchecked(&sk->sk_drops);
92725 +
92726 + drop_n_restore:
92727 + if (skb_head != skb->data && skb_shared(skb)) {
92728 +@@ -2168,7 +2168,7 @@ static int packet_getsockopt(struct sock
92729 + case PACKET_HDRLEN:
92730 + if (len > sizeof(int))
92731 + len = sizeof(int);
92732 +- if (copy_from_user(&val, optval, len))
92733 ++ if (len > sizeof(val) || copy_from_user(&val, optval, len))
92734 + return -EFAULT;
92735 + switch (val) {
92736 + case TPACKET_V1:
92737 +@@ -2206,7 +2206,7 @@ static int packet_getsockopt(struct sock
92738 +
92739 + if (put_user(len, optlen))
92740 + return -EFAULT;
92741 +- if (copy_to_user(optval, data, len))
92742 ++ if (len > sizeof(st) || copy_to_user(optval, data, len))
92743 + return -EFAULT;
92744 + return 0;
92745 + }
92746 +diff -urNp linux-3.0.8/net/phonet/af_phonet.c linux-3.0.8/net/phonet/af_phonet.c
92747 +--- linux-3.0.8/net/phonet/af_phonet.c 2011-07-21 22:17:23.000000000 -0400
92748 ++++ linux-3.0.8/net/phonet/af_phonet.c 2011-08-23 21:48:14.000000000 -0400
92749 @@ -41,7 +41,7 @@ static struct phonet_protocol *phonet_pr
92750 {
92751 struct phonet_protocol *pp;
92752 @@ -77728,8 +74265,8 @@ diff -urNp linux-2.6.32.48/net/phonet/af_phonet.c linux-2.6.32.48/net/phonet/af_
92753 + if (protocol < 0 || protocol >= PHONET_NPROTO)
92754 return NULL;
92755
92756 - spin_lock(&proto_tab_lock);
92757 -@@ -402,7 +402,7 @@ int __init_or_module phonet_proto_regist
92758 + rcu_read_lock();
92759 +@@ -469,7 +469,7 @@ int __init_or_module phonet_proto_regist
92760 {
92761 int err = 0;
92762
92763 @@ -77738,22 +74275,10 @@ diff -urNp linux-2.6.32.48/net/phonet/af_phonet.c linux-2.6.32.48/net/phonet/af_
92764 return -EINVAL;
92765
92766 err = proto_register(pp->prot, 1);
92767 -diff -urNp linux-2.6.32.48/net/phonet/datagram.c linux-2.6.32.48/net/phonet/datagram.c
92768 ---- linux-2.6.32.48/net/phonet/datagram.c 2009-12-02 22:51:21.000000000 -0500
92769 -+++ linux-2.6.32.48/net/phonet/datagram.c 2011-11-12 12:46:53.000000000 -0500
92770 -@@ -162,7 +162,7 @@ static int pn_backlog_rcv(struct sock *s
92771 - if (err < 0) {
92772 - kfree_skb(skb);
92773 - if (err == -ENOMEM)
92774 -- atomic_inc(&sk->sk_drops);
92775 -+ atomic_inc_unchecked(&sk->sk_drops);
92776 - }
92777 - return err ? NET_RX_DROP : NET_RX_SUCCESS;
92778 - }
92779 -diff -urNp linux-2.6.32.48/net/phonet/pep.c linux-2.6.32.48/net/phonet/pep.c
92780 ---- linux-2.6.32.48/net/phonet/pep.c 2011-11-12 12:44:30.000000000 -0500
92781 -+++ linux-2.6.32.48/net/phonet/pep.c 2011-11-12 12:46:53.000000000 -0500
92782 -@@ -348,7 +348,7 @@ static int pipe_do_rcv(struct sock *sk,
92783 +diff -urNp linux-3.0.8/net/phonet/pep.c linux-3.0.8/net/phonet/pep.c
92784 +--- linux-3.0.8/net/phonet/pep.c 2011-07-21 22:17:23.000000000 -0400
92785 ++++ linux-3.0.8/net/phonet/pep.c 2011-08-23 21:47:56.000000000 -0400
92786 +@@ -387,7 +387,7 @@ static int pipe_do_rcv(struct sock *sk,
92787
92788 case PNS_PEP_CTRL_REQ:
92789 if (skb_queue_len(&pn->ctrlreq_queue) >= PNPIPE_CTRLREQ_MAX) {
92790 @@ -77762,13 +74287,7 @@ diff -urNp linux-2.6.32.48/net/phonet/pep.c linux-2.6.32.48/net/phonet/pep.c
92791 break;
92792 }
92793 __skb_pull(skb, 4);
92794 -@@ -362,12 +362,12 @@ static int pipe_do_rcv(struct sock *sk,
92795 - if (!err)
92796 - return 0;
92797 - if (err == -ENOMEM)
92798 -- atomic_inc(&sk->sk_drops);
92799 -+ atomic_inc_unchecked(&sk->sk_drops);
92800 - break;
92801 +@@ -408,7 +408,7 @@ static int pipe_do_rcv(struct sock *sk,
92802 }
92803
92804 if (pn->rx_credits == 0) {
92805 @@ -77777,11 +74296,20 @@ diff -urNp linux-2.6.32.48/net/phonet/pep.c linux-2.6.32.48/net/phonet/pep.c
92806 err = -ENOBUFS;
92807 break;
92808 }
92809 -diff -urNp linux-2.6.32.48/net/phonet/socket.c linux-2.6.32.48/net/phonet/socket.c
92810 ---- linux-2.6.32.48/net/phonet/socket.c 2009-12-02 22:51:21.000000000 -0500
92811 -+++ linux-2.6.32.48/net/phonet/socket.c 2011-11-12 12:46:53.000000000 -0500
92812 -@@ -482,8 +482,13 @@ static int pn_sock_seq_show(struct seq_f
92813 - sk->sk_state,
92814 +@@ -556,7 +556,7 @@ static int pipe_handler_do_rcv(struct so
92815 + }
92816 +
92817 + if (pn->rx_credits == 0) {
92818 +- atomic_inc(&sk->sk_drops);
92819 ++ atomic_inc_unchecked(&sk->sk_drops);
92820 + err = NET_RX_DROP;
92821 + break;
92822 + }
92823 +diff -urNp linux-3.0.8/net/phonet/socket.c linux-3.0.8/net/phonet/socket.c
92824 +--- linux-3.0.8/net/phonet/socket.c 2011-07-21 22:17:23.000000000 -0400
92825 ++++ linux-3.0.8/net/phonet/socket.c 2011-08-23 21:48:14.000000000 -0400
92826 +@@ -612,8 +612,13 @@ static int pn_sock_seq_show(struct seq_f
92827 + pn->resource, sk->sk_state,
92828 sk_wmem_alloc_get(sk), sk_rmem_alloc_get(sk),
92829 sock_i_uid(sk), sock_i_ino(sk),
92830 - atomic_read(&sk->sk_refcnt), sk,
92831 @@ -77796,9 +74324,9 @@ diff -urNp linux-2.6.32.48/net/phonet/socket.c linux-2.6.32.48/net/phonet/socket
92832 }
92833 seq_printf(seq, "%*s\n", 127 - len, "");
92834 return 0;
92835 -diff -urNp linux-2.6.32.48/net/rds/cong.c linux-2.6.32.48/net/rds/cong.c
92836 ---- linux-2.6.32.48/net/rds/cong.c 2009-12-02 22:51:21.000000000 -0500
92837 -+++ linux-2.6.32.48/net/rds/cong.c 2011-11-12 12:46:53.000000000 -0500
92838 +diff -urNp linux-3.0.8/net/rds/cong.c linux-3.0.8/net/rds/cong.c
92839 +--- linux-3.0.8/net/rds/cong.c 2011-07-21 22:17:23.000000000 -0400
92840 ++++ linux-3.0.8/net/rds/cong.c 2011-08-23 21:47:56.000000000 -0400
92841 @@ -77,7 +77,7 @@
92842 * finds that the saved generation number is smaller than the global generation
92843 * number, it wakes up the process.
92844 @@ -77826,10 +74354,79 @@ diff -urNp linux-2.6.32.48/net/rds/cong.c linux-2.6.32.48/net/rds/cong.c
92845
92846 if (likely(*recent == gen))
92847 return 0;
92848 -diff -urNp linux-2.6.32.48/net/rds/iw_rdma.c linux-2.6.32.48/net/rds/iw_rdma.c
92849 ---- linux-2.6.32.48/net/rds/iw_rdma.c 2009-12-02 22:51:21.000000000 -0500
92850 -+++ linux-2.6.32.48/net/rds/iw_rdma.c 2011-11-12 12:46:53.000000000 -0500
92851 -@@ -181,6 +181,8 @@ int rds_iw_update_cm_id(struct rds_iw_de
92852 +diff -urNp linux-3.0.8/net/rds/ib_cm.c linux-3.0.8/net/rds/ib_cm.c
92853 +--- linux-3.0.8/net/rds/ib_cm.c 2011-07-21 22:17:23.000000000 -0400
92854 ++++ linux-3.0.8/net/rds/ib_cm.c 2011-08-23 21:47:56.000000000 -0400
92855 +@@ -720,7 +720,7 @@ void rds_ib_conn_shutdown(struct rds_con
92856 + /* Clear the ACK state */
92857 + clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
92858 + #ifdef KERNEL_HAS_ATOMIC64
92859 +- atomic64_set(&ic->i_ack_next, 0);
92860 ++ atomic64_set_unchecked(&ic->i_ack_next, 0);
92861 + #else
92862 + ic->i_ack_next = 0;
92863 + #endif
92864 +diff -urNp linux-3.0.8/net/rds/ib.h linux-3.0.8/net/rds/ib.h
92865 +--- linux-3.0.8/net/rds/ib.h 2011-07-21 22:17:23.000000000 -0400
92866 ++++ linux-3.0.8/net/rds/ib.h 2011-08-23 21:47:56.000000000 -0400
92867 +@@ -127,7 +127,7 @@ struct rds_ib_connection {
92868 + /* sending acks */
92869 + unsigned long i_ack_flags;
92870 + #ifdef KERNEL_HAS_ATOMIC64
92871 +- atomic64_t i_ack_next; /* next ACK to send */
92872 ++ atomic64_unchecked_t i_ack_next; /* next ACK to send */
92873 + #else
92874 + spinlock_t i_ack_lock; /* protect i_ack_next */
92875 + u64 i_ack_next; /* next ACK to send */
92876 +diff -urNp linux-3.0.8/net/rds/ib_recv.c linux-3.0.8/net/rds/ib_recv.c
92877 +--- linux-3.0.8/net/rds/ib_recv.c 2011-07-21 22:17:23.000000000 -0400
92878 ++++ linux-3.0.8/net/rds/ib_recv.c 2011-08-23 21:47:56.000000000 -0400
92879 +@@ -592,7 +592,7 @@ static u64 rds_ib_get_ack(struct rds_ib_
92880 + static void rds_ib_set_ack(struct rds_ib_connection *ic, u64 seq,
92881 + int ack_required)
92882 + {
92883 +- atomic64_set(&ic->i_ack_next, seq);
92884 ++ atomic64_set_unchecked(&ic->i_ack_next, seq);
92885 + if (ack_required) {
92886 + smp_mb__before_clear_bit();
92887 + set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
92888 +@@ -604,7 +604,7 @@ static u64 rds_ib_get_ack(struct rds_ib_
92889 + clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
92890 + smp_mb__after_clear_bit();
92891 +
92892 +- return atomic64_read(&ic->i_ack_next);
92893 ++ return atomic64_read_unchecked(&ic->i_ack_next);
92894 + }
92895 + #endif
92896 +
92897 +diff -urNp linux-3.0.8/net/rds/iw_cm.c linux-3.0.8/net/rds/iw_cm.c
92898 +--- linux-3.0.8/net/rds/iw_cm.c 2011-07-21 22:17:23.000000000 -0400
92899 ++++ linux-3.0.8/net/rds/iw_cm.c 2011-08-23 21:47:56.000000000 -0400
92900 +@@ -664,7 +664,7 @@ void rds_iw_conn_shutdown(struct rds_con
92901 + /* Clear the ACK state */
92902 + clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
92903 + #ifdef KERNEL_HAS_ATOMIC64
92904 +- atomic64_set(&ic->i_ack_next, 0);
92905 ++ atomic64_set_unchecked(&ic->i_ack_next, 0);
92906 + #else
92907 + ic->i_ack_next = 0;
92908 + #endif
92909 +diff -urNp linux-3.0.8/net/rds/iw.h linux-3.0.8/net/rds/iw.h
92910 +--- linux-3.0.8/net/rds/iw.h 2011-07-21 22:17:23.000000000 -0400
92911 ++++ linux-3.0.8/net/rds/iw.h 2011-08-23 21:47:56.000000000 -0400
92912 +@@ -133,7 +133,7 @@ struct rds_iw_connection {
92913 + /* sending acks */
92914 + unsigned long i_ack_flags;
92915 + #ifdef KERNEL_HAS_ATOMIC64
92916 +- atomic64_t i_ack_next; /* next ACK to send */
92917 ++ atomic64_unchecked_t i_ack_next; /* next ACK to send */
92918 + #else
92919 + spinlock_t i_ack_lock; /* protect i_ack_next */
92920 + u64 i_ack_next; /* next ACK to send */
92921 +diff -urNp linux-3.0.8/net/rds/iw_rdma.c linux-3.0.8/net/rds/iw_rdma.c
92922 +--- linux-3.0.8/net/rds/iw_rdma.c 2011-07-21 22:17:23.000000000 -0400
92923 ++++ linux-3.0.8/net/rds/iw_rdma.c 2011-08-23 21:48:14.000000000 -0400
92924 +@@ -182,6 +182,8 @@ int rds_iw_update_cm_id(struct rds_iw_de
92925 struct rdma_cm_id *pcm_id;
92926 int rc;
92927
92928 @@ -77838,22 +74435,31 @@ diff -urNp linux-2.6.32.48/net/rds/iw_rdma.c linux-2.6.32.48/net/rds/iw_rdma.c
92929 src_addr = (struct sockaddr_in *)&cm_id->route.addr.src_addr;
92930 dst_addr = (struct sockaddr_in *)&cm_id->route.addr.dst_addr;
92931
92932 -diff -urNp linux-2.6.32.48/net/rds/Kconfig linux-2.6.32.48/net/rds/Kconfig
92933 ---- linux-2.6.32.48/net/rds/Kconfig 2009-12-02 22:51:21.000000000 -0500
92934 -+++ linux-2.6.32.48/net/rds/Kconfig 2011-11-12 12:46:53.000000000 -0500
92935 -@@ -1,7 +1,7 @@
92936 +diff -urNp linux-3.0.8/net/rds/iw_recv.c linux-3.0.8/net/rds/iw_recv.c
92937 +--- linux-3.0.8/net/rds/iw_recv.c 2011-07-21 22:17:23.000000000 -0400
92938 ++++ linux-3.0.8/net/rds/iw_recv.c 2011-08-23 21:47:56.000000000 -0400
92939 +@@ -427,7 +427,7 @@ static u64 rds_iw_get_ack(struct rds_iw_
92940 + static void rds_iw_set_ack(struct rds_iw_connection *ic, u64 seq,
92941 + int ack_required)
92942 + {
92943 +- atomic64_set(&ic->i_ack_next, seq);
92944 ++ atomic64_set_unchecked(&ic->i_ack_next, seq);
92945 + if (ack_required) {
92946 + smp_mb__before_clear_bit();
92947 + set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
92948 +@@ -439,7 +439,7 @@ static u64 rds_iw_get_ack(struct rds_iw_
92949 + clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
92950 + smp_mb__after_clear_bit();
92951 +
92952 +- return atomic64_read(&ic->i_ack_next);
92953 ++ return atomic64_read_unchecked(&ic->i_ack_next);
92954 + }
92955 + #endif
92956
92957 - config RDS
92958 - tristate "The RDS Protocol (EXPERIMENTAL)"
92959 -- depends on INET && EXPERIMENTAL
92960 -+ depends on INET && EXPERIMENTAL && BROKEN
92961 - ---help---
92962 - The RDS (Reliable Datagram Sockets) protocol provides reliable,
92963 - sequenced delivery of datagrams over Infiniband, iWARP,
92964 -diff -urNp linux-2.6.32.48/net/rds/tcp.c linux-2.6.32.48/net/rds/tcp.c
92965 ---- linux-2.6.32.48/net/rds/tcp.c 2009-12-02 22:51:21.000000000 -0500
92966 -+++ linux-2.6.32.48/net/rds/tcp.c 2011-11-12 12:46:53.000000000 -0500
92967 -@@ -57,7 +57,7 @@ void rds_tcp_nonagle(struct socket *sock
92968 +diff -urNp linux-3.0.8/net/rds/tcp.c linux-3.0.8/net/rds/tcp.c
92969 +--- linux-3.0.8/net/rds/tcp.c 2011-07-21 22:17:23.000000000 -0400
92970 ++++ linux-3.0.8/net/rds/tcp.c 2011-10-06 04:17:55.000000000 -0400
92971 +@@ -58,7 +58,7 @@ void rds_tcp_nonagle(struct socket *sock
92972 int val = 1;
92973
92974 set_fs(KERNEL_DS);
92975 @@ -77862,9 +74468,9 @@ diff -urNp linux-2.6.32.48/net/rds/tcp.c linux-2.6.32.48/net/rds/tcp.c
92976 sizeof(val));
92977 set_fs(oldfs);
92978 }
92979 -diff -urNp linux-2.6.32.48/net/rds/tcp_send.c linux-2.6.32.48/net/rds/tcp_send.c
92980 ---- linux-2.6.32.48/net/rds/tcp_send.c 2009-12-02 22:51:21.000000000 -0500
92981 -+++ linux-2.6.32.48/net/rds/tcp_send.c 2011-11-12 12:46:53.000000000 -0500
92982 +diff -urNp linux-3.0.8/net/rds/tcp_send.c linux-3.0.8/net/rds/tcp_send.c
92983 +--- linux-3.0.8/net/rds/tcp_send.c 2011-07-21 22:17:23.000000000 -0400
92984 ++++ linux-3.0.8/net/rds/tcp_send.c 2011-10-06 04:17:55.000000000 -0400
92985 @@ -43,7 +43,7 @@ static void rds_tcp_cork(struct socket *
92986
92987 oldfs = get_fs();
92988 @@ -77874,10 +74480,10 @@ diff -urNp linux-2.6.32.48/net/rds/tcp_send.c linux-2.6.32.48/net/rds/tcp_send.c
92989 sizeof(val));
92990 set_fs(oldfs);
92991 }
92992 -diff -urNp linux-2.6.32.48/net/rxrpc/af_rxrpc.c linux-2.6.32.48/net/rxrpc/af_rxrpc.c
92993 ---- linux-2.6.32.48/net/rxrpc/af_rxrpc.c 2009-12-02 22:51:21.000000000 -0500
92994 -+++ linux-2.6.32.48/net/rxrpc/af_rxrpc.c 2011-11-12 12:46:53.000000000 -0500
92995 -@@ -38,7 +38,7 @@ static const struct proto_ops rxrpc_rpc_
92996 +diff -urNp linux-3.0.8/net/rxrpc/af_rxrpc.c linux-3.0.8/net/rxrpc/af_rxrpc.c
92997 +--- linux-3.0.8/net/rxrpc/af_rxrpc.c 2011-07-21 22:17:23.000000000 -0400
92998 ++++ linux-3.0.8/net/rxrpc/af_rxrpc.c 2011-08-23 21:47:56.000000000 -0400
92999 +@@ -39,7 +39,7 @@ static const struct proto_ops rxrpc_rpc_
93000 __be32 rxrpc_epoch;
93001
93002 /* current debugging ID */
93003 @@ -77886,10 +74492,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/af_rxrpc.c linux-2.6.32.48/net/rxrpc/af_rxr
93004
93005 /* count of skbs currently in use */
93006 atomic_t rxrpc_n_skbs;
93007 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93008 ---- linux-2.6.32.48/net/rxrpc/ar-ack.c 2009-12-02 22:51:21.000000000 -0500
93009 -+++ linux-2.6.32.48/net/rxrpc/ar-ack.c 2011-11-12 12:46:53.000000000 -0500
93010 -@@ -174,7 +174,7 @@ static void rxrpc_resend(struct rxrpc_ca
93011 +diff -urNp linux-3.0.8/net/rxrpc/ar-ack.c linux-3.0.8/net/rxrpc/ar-ack.c
93012 +--- linux-3.0.8/net/rxrpc/ar-ack.c 2011-07-21 22:17:23.000000000 -0400
93013 ++++ linux-3.0.8/net/rxrpc/ar-ack.c 2011-08-23 21:48:14.000000000 -0400
93014 +@@ -175,7 +175,7 @@ static void rxrpc_resend(struct rxrpc_ca
93015
93016 _enter("{%d,%d,%d,%d},",
93017 call->acks_hard, call->acks_unacked,
93018 @@ -77898,7 +74504,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93019 CIRC_CNT(call->acks_head, call->acks_tail, call->acks_winsz));
93020
93021 stop = 0;
93022 -@@ -198,7 +198,7 @@ static void rxrpc_resend(struct rxrpc_ca
93023 +@@ -199,7 +199,7 @@ static void rxrpc_resend(struct rxrpc_ca
93024
93025 /* each Tx packet has a new serial number */
93026 sp->hdr.serial =
93027 @@ -77907,7 +74513,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93028
93029 hdr = (struct rxrpc_header *) txb->head;
93030 hdr->serial = sp->hdr.serial;
93031 -@@ -401,7 +401,7 @@ static void rxrpc_rotate_tx_window(struc
93032 +@@ -403,7 +403,7 @@ static void rxrpc_rotate_tx_window(struc
93033 */
93034 static void rxrpc_clear_tx_window(struct rxrpc_call *call)
93035 {
93036 @@ -77916,7 +74522,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93037 }
93038
93039 /*
93040 -@@ -627,7 +627,7 @@ process_further:
93041 +@@ -629,7 +629,7 @@ process_further:
93042
93043 latest = ntohl(sp->hdr.serial);
93044 hard = ntohl(ack.firstPacket);
93045 @@ -77925,7 +74531,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93046
93047 _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
93048 latest,
93049 -@@ -840,6 +840,8 @@ void rxrpc_process_call(struct work_stru
93050 +@@ -842,6 +842,8 @@ void rxrpc_process_call(struct work_stru
93051 u32 abort_code = RX_PROTOCOL_ERROR;
93052 u8 *acks = NULL;
93053
93054 @@ -77934,7 +74540,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93055 //printk("\n--------------------\n");
93056 _enter("{%d,%s,%lx} [%lu]",
93057 call->debug_id, rxrpc_call_states[call->state], call->events,
93058 -@@ -1159,7 +1161,7 @@ void rxrpc_process_call(struct work_stru
93059 +@@ -1161,7 +1163,7 @@ void rxrpc_process_call(struct work_stru
93060 goto maybe_reschedule;
93061
93062 send_ACK_with_skew:
93063 @@ -77943,7 +74549,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93064 ntohl(ack.serial));
93065 send_ACK:
93066 mtu = call->conn->trans->peer->if_mtu;
93067 -@@ -1171,7 +1173,7 @@ send_ACK:
93068 +@@ -1173,7 +1175,7 @@ send_ACK:
93069 ackinfo.rxMTU = htonl(5692);
93070 ackinfo.jumbo_max = htonl(4);
93071
93072 @@ -77952,7 +74558,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93073 _proto("Tx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
93074 ntohl(hdr.serial),
93075 ntohs(ack.maxSkew),
93076 -@@ -1189,7 +1191,7 @@ send_ACK:
93077 +@@ -1191,7 +1193,7 @@ send_ACK:
93078 send_message:
93079 _debug("send message");
93080
93081 @@ -77961,10 +74567,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-ack.c linux-2.6.32.48/net/rxrpc/ar-ack.c
93082 _proto("Tx %s %%%u", rxrpc_pkts[hdr.type], ntohl(hdr.serial));
93083 send_message_2:
93084
93085 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-call.c linux-2.6.32.48/net/rxrpc/ar-call.c
93086 ---- linux-2.6.32.48/net/rxrpc/ar-call.c 2009-12-02 22:51:21.000000000 -0500
93087 -+++ linux-2.6.32.48/net/rxrpc/ar-call.c 2011-11-12 12:46:53.000000000 -0500
93088 -@@ -82,7 +82,7 @@ static struct rxrpc_call *rxrpc_alloc_ca
93089 +diff -urNp linux-3.0.8/net/rxrpc/ar-call.c linux-3.0.8/net/rxrpc/ar-call.c
93090 +--- linux-3.0.8/net/rxrpc/ar-call.c 2011-07-21 22:17:23.000000000 -0400
93091 ++++ linux-3.0.8/net/rxrpc/ar-call.c 2011-08-23 21:47:56.000000000 -0400
93092 +@@ -83,7 +83,7 @@ static struct rxrpc_call *rxrpc_alloc_ca
93093 spin_lock_init(&call->lock);
93094 rwlock_init(&call->state_lock);
93095 atomic_set(&call->usage, 1);
93096 @@ -77973,10 +74579,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-call.c linux-2.6.32.48/net/rxrpc/ar-call
93097 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST;
93098
93099 memset(&call->sock_node, 0xed, sizeof(call->sock_node));
93100 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-connection.c linux-2.6.32.48/net/rxrpc/ar-connection.c
93101 ---- linux-2.6.32.48/net/rxrpc/ar-connection.c 2009-12-02 22:51:21.000000000 -0500
93102 -+++ linux-2.6.32.48/net/rxrpc/ar-connection.c 2011-11-12 12:46:53.000000000 -0500
93103 -@@ -205,7 +205,7 @@ static struct rxrpc_connection *rxrpc_al
93104 +diff -urNp linux-3.0.8/net/rxrpc/ar-connection.c linux-3.0.8/net/rxrpc/ar-connection.c
93105 +--- linux-3.0.8/net/rxrpc/ar-connection.c 2011-07-21 22:17:23.000000000 -0400
93106 ++++ linux-3.0.8/net/rxrpc/ar-connection.c 2011-08-23 21:47:56.000000000 -0400
93107 +@@ -206,7 +206,7 @@ static struct rxrpc_connection *rxrpc_al
93108 rwlock_init(&conn->lock);
93109 spin_lock_init(&conn->state_lock);
93110 atomic_set(&conn->usage, 1);
93111 @@ -77985,9 +74591,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-connection.c linux-2.6.32.48/net/rxrpc/a
93112 conn->avail_calls = RXRPC_MAXCALLS;
93113 conn->size_align = 4;
93114 conn->header_size = sizeof(struct rxrpc_header);
93115 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-connevent.c linux-2.6.32.48/net/rxrpc/ar-connevent.c
93116 ---- linux-2.6.32.48/net/rxrpc/ar-connevent.c 2009-12-02 22:51:21.000000000 -0500
93117 -+++ linux-2.6.32.48/net/rxrpc/ar-connevent.c 2011-11-12 12:46:53.000000000 -0500
93118 +diff -urNp linux-3.0.8/net/rxrpc/ar-connevent.c linux-3.0.8/net/rxrpc/ar-connevent.c
93119 +--- linux-3.0.8/net/rxrpc/ar-connevent.c 2011-07-21 22:17:23.000000000 -0400
93120 ++++ linux-3.0.8/net/rxrpc/ar-connevent.c 2011-08-23 21:47:56.000000000 -0400
93121 @@ -109,7 +109,7 @@ static int rxrpc_abort_connection(struct
93122
93123 len = iov[0].iov_len + iov[1].iov_len;
93124 @@ -77997,10 +74603,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-connevent.c linux-2.6.32.48/net/rxrpc/ar
93125 _proto("Tx CONN ABORT %%%u { %d }", ntohl(hdr.serial), abort_code);
93126
93127 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
93128 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-input.c linux-2.6.32.48/net/rxrpc/ar-input.c
93129 ---- linux-2.6.32.48/net/rxrpc/ar-input.c 2009-12-02 22:51:21.000000000 -0500
93130 -+++ linux-2.6.32.48/net/rxrpc/ar-input.c 2011-11-12 12:46:53.000000000 -0500
93131 -@@ -339,9 +339,9 @@ void rxrpc_fast_process_packet(struct rx
93132 +diff -urNp linux-3.0.8/net/rxrpc/ar-input.c linux-3.0.8/net/rxrpc/ar-input.c
93133 +--- linux-3.0.8/net/rxrpc/ar-input.c 2011-07-21 22:17:23.000000000 -0400
93134 ++++ linux-3.0.8/net/rxrpc/ar-input.c 2011-08-23 21:47:56.000000000 -0400
93135 +@@ -340,9 +340,9 @@ void rxrpc_fast_process_packet(struct rx
93136 /* track the latest serial number on this connection for ACK packet
93137 * information */
93138 serial = ntohl(sp->hdr.serial);
93139 @@ -78012,9 +74618,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-input.c linux-2.6.32.48/net/rxrpc/ar-inp
93140 serial);
93141
93142 /* request ACK generation for any ACK or DATA packet that requests
93143 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-internal.h linux-2.6.32.48/net/rxrpc/ar-internal.h
93144 ---- linux-2.6.32.48/net/rxrpc/ar-internal.h 2009-12-02 22:51:21.000000000 -0500
93145 -+++ linux-2.6.32.48/net/rxrpc/ar-internal.h 2011-11-12 12:46:53.000000000 -0500
93146 +diff -urNp linux-3.0.8/net/rxrpc/ar-internal.h linux-3.0.8/net/rxrpc/ar-internal.h
93147 +--- linux-3.0.8/net/rxrpc/ar-internal.h 2011-07-21 22:17:23.000000000 -0400
93148 ++++ linux-3.0.8/net/rxrpc/ar-internal.h 2011-08-23 21:47:56.000000000 -0400
93149 @@ -272,8 +272,8 @@ struct rxrpc_connection {
93150 int error; /* error code for local abort */
93151 int debug_id; /* debug ID for printks */
93152 @@ -78044,40 +74650,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-internal.h linux-2.6.32.48/net/rxrpc/ar-
93153 extern struct workqueue_struct *rxrpc_workqueue;
93154
93155 /*
93156 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-key.c linux-2.6.32.48/net/rxrpc/ar-key.c
93157 ---- linux-2.6.32.48/net/rxrpc/ar-key.c 2009-12-02 22:51:21.000000000 -0500
93158 -+++ linux-2.6.32.48/net/rxrpc/ar-key.c 2011-11-12 12:46:53.000000000 -0500
93159 -@@ -88,11 +88,11 @@ static int rxrpc_instantiate_xdr_rxkad(s
93160 - return ret;
93161 -
93162 - plen -= sizeof(*token);
93163 -- token = kmalloc(sizeof(*token), GFP_KERNEL);
93164 -+ token = kzalloc(sizeof(*token), GFP_KERNEL);
93165 - if (!token)
93166 - return -ENOMEM;
93167 -
93168 -- token->kad = kmalloc(plen, GFP_KERNEL);
93169 -+ token->kad = kzalloc(plen, GFP_KERNEL);
93170 - if (!token->kad) {
93171 - kfree(token);
93172 - return -ENOMEM;
93173 -@@ -730,10 +730,10 @@ static int rxrpc_instantiate(struct key
93174 - goto error;
93175 -
93176 - ret = -ENOMEM;
93177 -- token = kmalloc(sizeof(*token), GFP_KERNEL);
93178 -+ token = kzalloc(sizeof(*token), GFP_KERNEL);
93179 - if (!token)
93180 - goto error;
93181 -- token->kad = kmalloc(plen, GFP_KERNEL);
93182 -+ token->kad = kzalloc(plen, GFP_KERNEL);
93183 - if (!token->kad)
93184 - goto error_free;
93185 -
93186 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-local.c linux-2.6.32.48/net/rxrpc/ar-local.c
93187 ---- linux-2.6.32.48/net/rxrpc/ar-local.c 2009-12-02 22:51:21.000000000 -0500
93188 -+++ linux-2.6.32.48/net/rxrpc/ar-local.c 2011-11-12 12:46:53.000000000 -0500
93189 -@@ -44,7 +44,7 @@ struct rxrpc_local *rxrpc_alloc_local(st
93190 +diff -urNp linux-3.0.8/net/rxrpc/ar-local.c linux-3.0.8/net/rxrpc/ar-local.c
93191 +--- linux-3.0.8/net/rxrpc/ar-local.c 2011-07-21 22:17:23.000000000 -0400
93192 ++++ linux-3.0.8/net/rxrpc/ar-local.c 2011-08-23 21:47:56.000000000 -0400
93193 +@@ -45,7 +45,7 @@ struct rxrpc_local *rxrpc_alloc_local(st
93194 spin_lock_init(&local->lock);
93195 rwlock_init(&local->services_lock);
93196 atomic_set(&local->usage, 1);
93197 @@ -78086,10 +74662,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-local.c linux-2.6.32.48/net/rxrpc/ar-loc
93198 memcpy(&local->srx, srx, sizeof(*srx));
93199 }
93200
93201 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-output.c linux-2.6.32.48/net/rxrpc/ar-output.c
93202 ---- linux-2.6.32.48/net/rxrpc/ar-output.c 2009-12-02 22:51:21.000000000 -0500
93203 -+++ linux-2.6.32.48/net/rxrpc/ar-output.c 2011-11-12 12:46:53.000000000 -0500
93204 -@@ -680,9 +680,9 @@ static int rxrpc_send_data(struct kiocb
93205 +diff -urNp linux-3.0.8/net/rxrpc/ar-output.c linux-3.0.8/net/rxrpc/ar-output.c
93206 +--- linux-3.0.8/net/rxrpc/ar-output.c 2011-07-21 22:17:23.000000000 -0400
93207 ++++ linux-3.0.8/net/rxrpc/ar-output.c 2011-08-23 21:47:56.000000000 -0400
93208 +@@ -681,9 +681,9 @@ static int rxrpc_send_data(struct kiocb
93209 sp->hdr.cid = call->cid;
93210 sp->hdr.callNumber = call->call_id;
93211 sp->hdr.seq =
93212 @@ -78101,10 +74677,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-output.c linux-2.6.32.48/net/rxrpc/ar-ou
93213 sp->hdr.type = RXRPC_PACKET_TYPE_DATA;
93214 sp->hdr.userStatus = 0;
93215 sp->hdr.securityIndex = conn->security_ix;
93216 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-peer.c linux-2.6.32.48/net/rxrpc/ar-peer.c
93217 ---- linux-2.6.32.48/net/rxrpc/ar-peer.c 2009-12-02 22:51:21.000000000 -0500
93218 -+++ linux-2.6.32.48/net/rxrpc/ar-peer.c 2011-11-12 12:46:53.000000000 -0500
93219 -@@ -86,7 +86,7 @@ static struct rxrpc_peer *rxrpc_alloc_pe
93220 +diff -urNp linux-3.0.8/net/rxrpc/ar-peer.c linux-3.0.8/net/rxrpc/ar-peer.c
93221 +--- linux-3.0.8/net/rxrpc/ar-peer.c 2011-07-21 22:17:23.000000000 -0400
93222 ++++ linux-3.0.8/net/rxrpc/ar-peer.c 2011-08-23 21:47:56.000000000 -0400
93223 +@@ -72,7 +72,7 @@ static struct rxrpc_peer *rxrpc_alloc_pe
93224 INIT_LIST_HEAD(&peer->error_targets);
93225 spin_lock_init(&peer->lock);
93226 atomic_set(&peer->usage, 1);
93227 @@ -78113,9 +74689,9 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-peer.c linux-2.6.32.48/net/rxrpc/ar-peer
93228 memcpy(&peer->srx, srx, sizeof(*srx));
93229
93230 rxrpc_assess_MTU_size(peer);
93231 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-proc.c linux-2.6.32.48/net/rxrpc/ar-proc.c
93232 ---- linux-2.6.32.48/net/rxrpc/ar-proc.c 2009-12-02 22:51:21.000000000 -0500
93233 -+++ linux-2.6.32.48/net/rxrpc/ar-proc.c 2011-11-12 12:46:53.000000000 -0500
93234 +diff -urNp linux-3.0.8/net/rxrpc/ar-proc.c linux-3.0.8/net/rxrpc/ar-proc.c
93235 +--- linux-3.0.8/net/rxrpc/ar-proc.c 2011-07-21 22:17:23.000000000 -0400
93236 ++++ linux-3.0.8/net/rxrpc/ar-proc.c 2011-08-23 21:47:56.000000000 -0400
93237 @@ -164,8 +164,8 @@ static int rxrpc_connection_seq_show(str
93238 atomic_read(&conn->usage),
93239 rxrpc_conn_states[conn->state],
93240 @@ -78127,10 +74703,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-proc.c linux-2.6.32.48/net/rxrpc/ar-proc
93241
93242 return 0;
93243 }
93244 -diff -urNp linux-2.6.32.48/net/rxrpc/ar-transport.c linux-2.6.32.48/net/rxrpc/ar-transport.c
93245 ---- linux-2.6.32.48/net/rxrpc/ar-transport.c 2009-12-02 22:51:21.000000000 -0500
93246 -+++ linux-2.6.32.48/net/rxrpc/ar-transport.c 2011-11-12 12:46:53.000000000 -0500
93247 -@@ -46,7 +46,7 @@ static struct rxrpc_transport *rxrpc_all
93248 +diff -urNp linux-3.0.8/net/rxrpc/ar-transport.c linux-3.0.8/net/rxrpc/ar-transport.c
93249 +--- linux-3.0.8/net/rxrpc/ar-transport.c 2011-07-21 22:17:23.000000000 -0400
93250 ++++ linux-3.0.8/net/rxrpc/ar-transport.c 2011-08-23 21:47:56.000000000 -0400
93251 +@@ -47,7 +47,7 @@ static struct rxrpc_transport *rxrpc_all
93252 spin_lock_init(&trans->client_lock);
93253 rwlock_init(&trans->conn_lock);
93254 atomic_set(&trans->usage, 1);
93255 @@ -78139,10 +74715,10 @@ diff -urNp linux-2.6.32.48/net/rxrpc/ar-transport.c linux-2.6.32.48/net/rxrpc/ar
93256
93257 if (peer->srx.transport.family == AF_INET) {
93258 switch (peer->srx.transport_type) {
93259 -diff -urNp linux-2.6.32.48/net/rxrpc/rxkad.c linux-2.6.32.48/net/rxrpc/rxkad.c
93260 ---- linux-2.6.32.48/net/rxrpc/rxkad.c 2009-12-02 22:51:21.000000000 -0500
93261 -+++ linux-2.6.32.48/net/rxrpc/rxkad.c 2011-11-12 12:46:53.000000000 -0500
93262 -@@ -210,6 +210,8 @@ static int rxkad_secure_packet_encrypt(c
93263 +diff -urNp linux-3.0.8/net/rxrpc/rxkad.c linux-3.0.8/net/rxrpc/rxkad.c
93264 +--- linux-3.0.8/net/rxrpc/rxkad.c 2011-07-21 22:17:23.000000000 -0400
93265 ++++ linux-3.0.8/net/rxrpc/rxkad.c 2011-08-23 21:48:14.000000000 -0400
93266 +@@ -211,6 +211,8 @@ static int rxkad_secure_packet_encrypt(c
93267 u16 check;
93268 int nsg;
93269
93270 @@ -78151,7 +74727,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/rxkad.c linux-2.6.32.48/net/rxrpc/rxkad.c
93271 sp = rxrpc_skb(skb);
93272
93273 _enter("");
93274 -@@ -337,6 +339,8 @@ static int rxkad_verify_packet_auth(cons
93275 +@@ -338,6 +340,8 @@ static int rxkad_verify_packet_auth(cons
93276 u16 check;
93277 int nsg;
93278
93279 @@ -78160,7 +74736,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/rxkad.c linux-2.6.32.48/net/rxrpc/rxkad.c
93280 _enter("");
93281
93282 sp = rxrpc_skb(skb);
93283 -@@ -609,7 +613,7 @@ static int rxkad_issue_challenge(struct
93284 +@@ -610,7 +614,7 @@ static int rxkad_issue_challenge(struct
93285
93286 len = iov[0].iov_len + iov[1].iov_len;
93287
93288 @@ -78169,7 +74745,7 @@ diff -urNp linux-2.6.32.48/net/rxrpc/rxkad.c linux-2.6.32.48/net/rxrpc/rxkad.c
93289 _proto("Tx CHALLENGE %%%u", ntohl(hdr.serial));
93290
93291 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
93292 -@@ -659,7 +663,7 @@ static int rxkad_send_response(struct rx
93293 +@@ -660,7 +664,7 @@ static int rxkad_send_response(struct rx
93294
93295 len = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len;
93296
93297 @@ -78178,83 +74754,53 @@ diff -urNp linux-2.6.32.48/net/rxrpc/rxkad.c linux-2.6.32.48/net/rxrpc/rxkad.c
93298 _proto("Tx RESPONSE %%%u", ntohl(hdr->serial));
93299
93300 ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
93301 -diff -urNp linux-2.6.32.48/net/sctp/proc.c linux-2.6.32.48/net/sctp/proc.c
93302 ---- linux-2.6.32.48/net/sctp/proc.c 2009-12-02 22:51:21.000000000 -0500
93303 -+++ linux-2.6.32.48/net/sctp/proc.c 2011-11-12 12:46:53.000000000 -0500
93304 -@@ -213,7 +213,12 @@ static int sctp_eps_seq_show(struct seq_
93305 - sctp_for_each_hentry(epb, node, &head->chain) {
93306 - ep = sctp_ep(epb);
93307 - sk = epb->sk;
93308 -- seq_printf(seq, "%8p %8p %-3d %-3d %-4d %-5d %5d %5lu ", ep, sk,
93309 -+ seq_printf(seq, "%8p %8p %-3d %-3d %-4d %-5d %5d %5lu ",
93310 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
93311 -+ NULL, NULL,
93312 -+#else
93313 -+ ep, sk,
93314 -+#endif
93315 - sctp_sk(sk)->type, sk->sk_state, hash,
93316 - epb->bind_addr.port,
93317 - sock_i_uid(sk), sock_i_ino(sk));
93318 -@@ -320,7 +325,12 @@ static int sctp_assocs_seq_show(struct s
93319 +diff -urNp linux-3.0.8/net/sctp/proc.c linux-3.0.8/net/sctp/proc.c
93320 +--- linux-3.0.8/net/sctp/proc.c 2011-07-21 22:17:23.000000000 -0400
93321 ++++ linux-3.0.8/net/sctp/proc.c 2011-08-23 21:48:14.000000000 -0400
93322 +@@ -318,7 +318,8 @@ static int sctp_assocs_seq_show(struct s
93323 seq_printf(seq,
93324 - "%8p %8p %-3d %-3d %-2d %-4d "
93325 + "%8pK %8pK %-3d %-3d %-2d %-4d "
93326 "%4d %8d %8d %7d %5lu %-5d %5d ",
93327 - assoc, sk, sctp_sk(sk)->type, sk->sk_state,
93328 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
93329 -+ NULL, NULL,
93330 -+#else
93331 + assoc, sk,
93332 -+#endif
93333 + sctp_sk(sk)->type, sk->sk_state,
93334 assoc->state, hash,
93335 assoc->assoc_id,
93336 assoc->sndbuf_used,
93337 -diff -urNp linux-2.6.32.48/net/sctp/socket.c linux-2.6.32.48/net/sctp/socket.c
93338 ---- linux-2.6.32.48/net/sctp/socket.c 2009-12-02 22:51:21.000000000 -0500
93339 -+++ linux-2.6.32.48/net/sctp/socket.c 2011-11-12 12:46:53.000000000 -0500
93340 -@@ -5802,7 +5802,6 @@ pp_found:
93341 - */
93342 - int reuse = sk->sk_reuse;
93343 - struct sock *sk2;
93344 -- struct hlist_node *node;
93345 -
93346 - SCTP_DEBUG_PRINTK("sctp_get_port() found a possible match\n");
93347 - if (pp->fastreuse && sk->sk_reuse &&
93348 -diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93349 ---- linux-2.6.32.48/net/socket.c 2011-11-12 12:44:30.000000000 -0500
93350 -+++ linux-2.6.32.48/net/socket.c 2011-11-12 12:46:53.000000000 -0500
93351 -@@ -87,6 +87,7 @@
93352 - #include <linux/wireless.h>
93353 +diff -urNp linux-3.0.8/net/sctp/socket.c linux-3.0.8/net/sctp/socket.c
93354 +--- linux-3.0.8/net/sctp/socket.c 2011-07-21 22:17:23.000000000 -0400
93355 ++++ linux-3.0.8/net/sctp/socket.c 2011-08-23 21:47:56.000000000 -0400
93356 +@@ -4452,7 +4452,7 @@ static int sctp_getsockopt_peer_addrs(st
93357 + addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
93358 + if (space_left < addrlen)
93359 + return -ENOMEM;
93360 +- if (copy_to_user(to, &temp, addrlen))
93361 ++ if (addrlen > sizeof(temp) || copy_to_user(to, &temp, addrlen))
93362 + return -EFAULT;
93363 + to += addrlen;
93364 + cnt++;
93365 +diff -urNp linux-3.0.8/net/socket.c linux-3.0.8/net/socket.c
93366 +--- linux-3.0.8/net/socket.c 2011-10-24 08:05:30.000000000 -0400
93367 ++++ linux-3.0.8/net/socket.c 2011-10-16 21:55:28.000000000 -0400
93368 +@@ -88,6 +88,7 @@
93369 #include <linux/nsproxy.h>
93370 #include <linux/magic.h>
93371 + #include <linux/slab.h>
93372 +#include <linux/in.h>
93373
93374 #include <asm/uaccess.h>
93375 #include <asm/unistd.h>
93376 -@@ -97,6 +98,21 @@
93377 - #include <net/sock.h>
93378 - #include <linux/netfilter.h>
93379 +@@ -105,6 +106,8 @@
93380 + #include <linux/sockios.h>
93381 + #include <linux/atalk.h>
93382
93383 -+extern void gr_attach_curr_ip(const struct sock *sk);
93384 -+extern int gr_handle_sock_all(const int family, const int type,
93385 -+ const int protocol);
93386 -+extern int gr_handle_sock_server(const struct sockaddr *sck);
93387 -+extern int gr_handle_sock_server_other(const struct sock *sck);
93388 -+extern int gr_handle_sock_client(const struct sockaddr *sck);
93389 -+extern int gr_search_connect(struct socket * sock,
93390 -+ struct sockaddr_in * addr);
93391 -+extern int gr_search_bind(struct socket * sock,
93392 -+ struct sockaddr_in * addr);
93393 -+extern int gr_search_listen(struct socket * sock);
93394 -+extern int gr_search_accept(struct socket * sock);
93395 -+extern int gr_search_socket(const int domain, const int type,
93396 -+ const int protocol);
93397 ++#include <linux/grsock.h>
93398 +
93399 static int sock_no_open(struct inode *irrelevant, struct file *dontcare);
93400 static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
93401 unsigned long nr_segs, loff_t pos);
93402 -@@ -298,7 +314,7 @@ static int sockfs_get_sb(struct file_sys
93403 - mnt);
93404 +@@ -321,7 +324,7 @@ static struct dentry *sockfs_mount(struc
93405 + &sockfs_dentry_operations, SOCKFS_MAGIC);
93406 }
93407
93408 -static struct vfsmount *sock_mnt __read_mostly;
93409 @@ -78262,7 +74808,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93410
93411 static struct file_system_type sock_fs_type = {
93412 .name = "sockfs",
93413 -@@ -1154,6 +1170,8 @@ static int __sock_create(struct net *net
93414 +@@ -1187,6 +1190,8 @@ int __sock_create(struct net *net, int f
93415 return -EAFNOSUPPORT;
93416 if (type < 0 || type >= SOCK_MAX)
93417 return -EINVAL;
93418 @@ -78271,7 +74817,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93419
93420 /* Compatibility.
93421
93422 -@@ -1283,6 +1301,16 @@ SYSCALL_DEFINE3(socket, int, family, int
93423 +@@ -1319,6 +1324,16 @@ SYSCALL_DEFINE3(socket, int, family, int
93424 if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
93425 flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
93426
93427 @@ -78288,7 +74834,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93428 retval = sock_create(family, type, protocol, &sock);
93429 if (retval < 0)
93430 goto out;
93431 -@@ -1415,6 +1443,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
93432 +@@ -1431,6 +1446,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
93433 if (sock) {
93434 err = move_addr_to_kernel(umyaddr, addrlen, (struct sockaddr *)&address);
93435 if (err >= 0) {
93436 @@ -78303,7 +74849,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93437 err = security_socket_bind(sock,
93438 (struct sockaddr *)&address,
93439 addrlen);
93440 -@@ -1423,6 +1459,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
93441 +@@ -1439,6 +1462,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct so
93442 (struct sockaddr *)
93443 &address, addrlen);
93444 }
93445 @@ -78311,7 +74857,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93446 fput_light(sock->file, fput_needed);
93447 }
93448 return err;
93449 -@@ -1446,10 +1483,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, ba
93450 +@@ -1462,10 +1486,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, ba
93451 if ((unsigned)backlog > somaxconn)
93452 backlog = somaxconn;
93453
93454 @@ -78332,7 +74878,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93455 fput_light(sock->file, fput_needed);
93456 }
93457 return err;
93458 -@@ -1492,6 +1539,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct
93459 +@@ -1509,6 +1543,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct
93460 newsock->type = sock->type;
93461 newsock->ops = sock->ops;
93462
93463 @@ -78351,7 +74897,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93464 /*
93465 * We don't need try_module_get here, as the listening socket (sock)
93466 * has the protocol module (sock->ops->owner) held.
93467 -@@ -1534,6 +1593,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct
93468 +@@ -1547,6 +1593,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct
93469 fd_install(newfd, newfile);
93470 err = newfd;
93471
93472 @@ -78360,7 +74906,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93473 out_put:
93474 fput_light(sock->file, fput_needed);
93475 out:
93476 -@@ -1571,6 +1632,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct
93477 +@@ -1579,6 +1627,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct
93478 int, addrlen)
93479 {
93480 struct socket *sock;
93481 @@ -78368,7 +74914,7 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93482 struct sockaddr_storage address;
93483 int err, fput_needed;
93484
93485 -@@ -1581,6 +1643,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct
93486 +@@ -1589,6 +1638,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct
93487 if (err < 0)
93488 goto out_put;
93489
93490 @@ -78386,44 +74932,154 @@ diff -urNp linux-2.6.32.48/net/socket.c linux-2.6.32.48/net/socket.c
93491 err =
93492 security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
93493 if (err)
93494 -@@ -1882,6 +1955,8 @@ SYSCALL_DEFINE3(sendmsg, int, fd, struct
93495 +@@ -1890,6 +1950,8 @@ static int __sys_sendmsg(struct socket *
93496 + unsigned char *ctl_buf = ctl;
93497 int err, ctl_len, iov_size, total_len;
93498 - int fput_needed;
93499
93500 + pax_track_stack();
93501 +
93502 err = -EFAULT;
93503 if (MSG_CMSG_COMPAT & flags) {
93504 - if (get_compat_msghdr(&msg_sys, msg_compat))
93505 -@@ -2022,7 +2097,7 @@ SYSCALL_DEFINE3(recvmsg, int, fd, struct
93506 + if (get_compat_msghdr(msg_sys, msg_compat))
93507 +@@ -1950,7 +2012,7 @@ static int __sys_sendmsg(struct socket *
93508 + * checking falls down on this.
93509 + */
93510 + if (copy_from_user(ctl_buf,
93511 +- (void __user __force *)msg_sys->msg_control,
93512 ++ (void __force_user *)msg_sys->msg_control,
93513 + ctl_len))
93514 + goto out_freectl;
93515 + msg_sys->msg_control = ctl_buf;
93516 +@@ -2120,7 +2182,7 @@ static int __sys_recvmsg(struct socket *
93517 * kernel msghdr to use the kernel address space)
93518 */
93519
93520 -- uaddr = (__force void __user *)msg_sys.msg_name;
93521 -+ uaddr = (void __force_user *)msg_sys.msg_name;
93522 +- uaddr = (__force void __user *)msg_sys->msg_name;
93523 ++ uaddr = (void __force_user *)msg_sys->msg_name;
93524 uaddr_len = COMPAT_NAMELEN(msg);
93525 if (MSG_CMSG_COMPAT & flags) {
93526 - err = verify_compat_iovec(&msg_sys, iov,
93527 -diff -urNp linux-2.6.32.48/net/sunrpc/sched.c linux-2.6.32.48/net/sunrpc/sched.c
93528 ---- linux-2.6.32.48/net/sunrpc/sched.c 2011-11-12 12:44:30.000000000 -0500
93529 -+++ linux-2.6.32.48/net/sunrpc/sched.c 2011-11-12 12:46:53.000000000 -0500
93530 -@@ -234,10 +234,10 @@ static int rpc_wait_bit_killable(void *w
93531 + err = verify_compat_iovec(msg_sys, iov,
93532 +@@ -2748,7 +2810,7 @@ static int ethtool_ioctl(struct net *net
93533 + }
93534 +
93535 + ifr = compat_alloc_user_space(buf_size);
93536 +- rxnfc = (void *)ifr + ALIGN(sizeof(struct ifreq), 8);
93537 ++ rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8);
93538 +
93539 + if (copy_in_user(&ifr->ifr_name, &ifr32->ifr_name, IFNAMSIZ))
93540 + return -EFAULT;
93541 +@@ -2772,12 +2834,12 @@ static int ethtool_ioctl(struct net *net
93542 + offsetof(struct ethtool_rxnfc, fs.ring_cookie));
93543 +
93544 + if (copy_in_user(rxnfc, compat_rxnfc,
93545 +- (void *)(&rxnfc->fs.m_ext + 1) -
93546 +- (void *)rxnfc) ||
93547 ++ (void __user *)(&rxnfc->fs.m_ext + 1) -
93548 ++ (void __user *)rxnfc) ||
93549 + copy_in_user(&rxnfc->fs.ring_cookie,
93550 + &compat_rxnfc->fs.ring_cookie,
93551 +- (void *)(&rxnfc->fs.location + 1) -
93552 +- (void *)&rxnfc->fs.ring_cookie) ||
93553 ++ (void __user *)(&rxnfc->fs.location + 1) -
93554 ++ (void __user *)&rxnfc->fs.ring_cookie) ||
93555 + copy_in_user(&rxnfc->rule_cnt, &compat_rxnfc->rule_cnt,
93556 + sizeof(rxnfc->rule_cnt)))
93557 + return -EFAULT;
93558 +@@ -2789,12 +2851,12 @@ static int ethtool_ioctl(struct net *net
93559 +
93560 + if (convert_out) {
93561 + if (copy_in_user(compat_rxnfc, rxnfc,
93562 +- (const void *)(&rxnfc->fs.m_ext + 1) -
93563 +- (const void *)rxnfc) ||
93564 ++ (const void __user *)(&rxnfc->fs.m_ext + 1) -
93565 ++ (const void __user *)rxnfc) ||
93566 + copy_in_user(&compat_rxnfc->fs.ring_cookie,
93567 + &rxnfc->fs.ring_cookie,
93568 +- (const void *)(&rxnfc->fs.location + 1) -
93569 +- (const void *)&rxnfc->fs.ring_cookie) ||
93570 ++ (const void __user *)(&rxnfc->fs.location + 1) -
93571 ++ (const void __user *)&rxnfc->fs.ring_cookie) ||
93572 + copy_in_user(&compat_rxnfc->rule_cnt, &rxnfc->rule_cnt,
93573 + sizeof(rxnfc->rule_cnt)))
93574 + return -EFAULT;
93575 +@@ -2864,7 +2926,7 @@ static int bond_ioctl(struct net *net, u
93576 + old_fs = get_fs();
93577 + set_fs(KERNEL_DS);
93578 + err = dev_ioctl(net, cmd,
93579 +- (struct ifreq __user __force *) &kifr);
93580 ++ (struct ifreq __force_user *) &kifr);
93581 + set_fs(old_fs);
93582 +
93583 + return err;
93584 +@@ -2973,7 +3035,7 @@ static int compat_sioc_ifmap(struct net
93585 +
93586 + old_fs = get_fs();
93587 + set_fs(KERNEL_DS);
93588 +- err = dev_ioctl(net, cmd, (void __user __force *)&ifr);
93589 ++ err = dev_ioctl(net, cmd, (void __force_user *)&ifr);
93590 + set_fs(old_fs);
93591 +
93592 + if (cmd == SIOCGIFMAP && !err) {
93593 +@@ -3078,7 +3140,7 @@ static int routing_ioctl(struct net *net
93594 + ret |= __get_user(rtdev, &(ur4->rt_dev));
93595 + if (rtdev) {
93596 + ret |= copy_from_user(devname, compat_ptr(rtdev), 15);
93597 +- r4.rt_dev = (char __user __force *)devname;
93598 ++ r4.rt_dev = (char __force_user *)devname;
93599 + devname[15] = 0;
93600 + } else
93601 + r4.rt_dev = NULL;
93602 +@@ -3318,8 +3380,8 @@ int kernel_getsockopt(struct socket *soc
93603 + int __user *uoptlen;
93604 + int err;
93605 +
93606 +- uoptval = (char __user __force *) optval;
93607 +- uoptlen = (int __user __force *) optlen;
93608 ++ uoptval = (char __force_user *) optval;
93609 ++ uoptlen = (int __force_user *) optlen;
93610 +
93611 + set_fs(KERNEL_DS);
93612 + if (level == SOL_SOCKET)
93613 +@@ -3339,7 +3401,7 @@ int kernel_setsockopt(struct socket *soc
93614 + char __user *uoptval;
93615 + int err;
93616 +
93617 +- uoptval = (char __user __force *) optval;
93618 ++ uoptval = (char __force_user *) optval;
93619 +
93620 + set_fs(KERNEL_DS);
93621 + if (level == SOL_SOCKET)
93622 +diff -urNp linux-3.0.8/net/sunrpc/sched.c linux-3.0.8/net/sunrpc/sched.c
93623 +--- linux-3.0.8/net/sunrpc/sched.c 2011-07-21 22:17:23.000000000 -0400
93624 ++++ linux-3.0.8/net/sunrpc/sched.c 2011-08-23 21:47:56.000000000 -0400
93625 +@@ -234,9 +234,9 @@ static int rpc_wait_bit_killable(void *w
93626 #ifdef RPC_DEBUG
93627 static void rpc_task_set_debuginfo(struct rpc_task *task)
93628 {
93629 - static atomic_t rpc_pid;
93630 + static atomic_unchecked_t rpc_pid;
93631
93632 - task->tk_magic = RPC_TASK_MAGIC_ID;
93633 - task->tk_pid = atomic_inc_return(&rpc_pid);
93634 + task->tk_pid = atomic_inc_return_unchecked(&rpc_pid);
93635 }
93636 #else
93637 static inline void rpc_task_set_debuginfo(struct rpc_task *task)
93638 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c
93639 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c 2009-12-02 22:51:21.000000000 -0500
93640 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c 2011-11-12 12:46:53.000000000 -0500
93641 -@@ -59,15 +59,15 @@ unsigned int svcrdma_max_req_size = RPCR
93642 +diff -urNp linux-3.0.8/net/sunrpc/svcsock.c linux-3.0.8/net/sunrpc/svcsock.c
93643 +--- linux-3.0.8/net/sunrpc/svcsock.c 2011-07-21 22:17:23.000000000 -0400
93644 ++++ linux-3.0.8/net/sunrpc/svcsock.c 2011-10-06 04:17:55.000000000 -0400
93645 +@@ -392,7 +392,7 @@ static int svc_partial_recvfrom(struct s
93646 + int buflen, unsigned int base)
93647 + {
93648 + size_t save_iovlen;
93649 +- void __user *save_iovbase;
93650 ++ void *save_iovbase;
93651 + unsigned int i;
93652 + int ret;
93653 +
93654 +diff -urNp linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma.c linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma.c
93655 +--- linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma.c 2011-07-21 22:17:23.000000000 -0400
93656 ++++ linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma.c 2011-08-23 21:47:56.000000000 -0400
93657 +@@ -61,15 +61,15 @@ unsigned int svcrdma_max_req_size = RPCR
93658 static unsigned int min_max_inline = 4096;
93659 static unsigned int max_max_inline = 65536;
93660
93661 @@ -78448,7 +75104,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93662
93663 /* Temporary NFS request map and context caches */
93664 struct kmem_cache *svc_rdma_map_cachep;
93665 -@@ -105,7 +105,7 @@ static int read_reset_stat(ctl_table *ta
93666 +@@ -109,7 +109,7 @@ static int read_reset_stat(ctl_table *ta
93667 len -= *ppos;
93668 if (len > *lenp)
93669 len = *lenp;
93670 @@ -78457,14 +75113,14 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93671 return -EFAULT;
93672 *lenp = len;
93673 *ppos += len;
93674 -@@ -149,63 +149,63 @@ static ctl_table svcrdma_parm_table[] =
93675 +@@ -150,63 +150,63 @@ static ctl_table svcrdma_parm_table[] =
93676 {
93677 .procname = "rdma_stat_read",
93678 .data = &rdma_stat_read,
93679 - .maxlen = sizeof(atomic_t),
93680 + .maxlen = sizeof(atomic_unchecked_t),
93681 .mode = 0644,
93682 - .proc_handler = &read_reset_stat,
93683 + .proc_handler = read_reset_stat,
93684 },
93685 {
93686 .procname = "rdma_stat_recv",
93687 @@ -78472,7 +75128,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93688 - .maxlen = sizeof(atomic_t),
93689 + .maxlen = sizeof(atomic_unchecked_t),
93690 .mode = 0644,
93691 - .proc_handler = &read_reset_stat,
93692 + .proc_handler = read_reset_stat,
93693 },
93694 {
93695 .procname = "rdma_stat_write",
93696 @@ -78480,7 +75136,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93697 - .maxlen = sizeof(atomic_t),
93698 + .maxlen = sizeof(atomic_unchecked_t),
93699 .mode = 0644,
93700 - .proc_handler = &read_reset_stat,
93701 + .proc_handler = read_reset_stat,
93702 },
93703 {
93704 .procname = "rdma_stat_sq_starve",
93705 @@ -78488,7 +75144,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93706 - .maxlen = sizeof(atomic_t),
93707 + .maxlen = sizeof(atomic_unchecked_t),
93708 .mode = 0644,
93709 - .proc_handler = &read_reset_stat,
93710 + .proc_handler = read_reset_stat,
93711 },
93712 {
93713 .procname = "rdma_stat_rq_starve",
93714 @@ -78496,7 +75152,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93715 - .maxlen = sizeof(atomic_t),
93716 + .maxlen = sizeof(atomic_unchecked_t),
93717 .mode = 0644,
93718 - .proc_handler = &read_reset_stat,
93719 + .proc_handler = read_reset_stat,
93720 },
93721 {
93722 .procname = "rdma_stat_rq_poll",
93723 @@ -78504,7 +75160,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93724 - .maxlen = sizeof(atomic_t),
93725 + .maxlen = sizeof(atomic_unchecked_t),
93726 .mode = 0644,
93727 - .proc_handler = &read_reset_stat,
93728 + .proc_handler = read_reset_stat,
93729 },
93730 {
93731 .procname = "rdma_stat_rq_prod",
93732 @@ -78512,7 +75168,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93733 - .maxlen = sizeof(atomic_t),
93734 + .maxlen = sizeof(atomic_unchecked_t),
93735 .mode = 0644,
93736 - .proc_handler = &read_reset_stat,
93737 + .proc_handler = read_reset_stat,
93738 },
93739 {
93740 .procname = "rdma_stat_sq_poll",
93741 @@ -78520,7 +75176,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93742 - .maxlen = sizeof(atomic_t),
93743 + .maxlen = sizeof(atomic_unchecked_t),
93744 .mode = 0644,
93745 - .proc_handler = &read_reset_stat,
93746 + .proc_handler = read_reset_stat,
93747 },
93748 {
93749 .procname = "rdma_stat_sq_prod",
93750 @@ -78528,12 +75184,12 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma.c linux-2.6.32.48/net/su
93751 - .maxlen = sizeof(atomic_t),
93752 + .maxlen = sizeof(atomic_unchecked_t),
93753 .mode = 0644,
93754 - .proc_handler = &read_reset_stat,
93755 + .proc_handler = read_reset_stat,
93756 },
93757 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
93758 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2009-12-02 22:51:21.000000000 -0500
93759 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-11-12 12:46:53.000000000 -0500
93760 -@@ -495,7 +495,7 @@ next_sge:
93761 +diff -urNp linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
93762 +--- linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-07-21 22:17:23.000000000 -0400
93763 ++++ linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c 2011-08-23 21:47:56.000000000 -0400
93764 +@@ -499,7 +499,7 @@ next_sge:
93765 svc_rdma_put_context(ctxt, 0);
93766 goto out;
93767 }
93768 @@ -78542,7 +75198,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-2.6.32.
93769
93770 if (read_wr.num_sge < chl_map->ch[ch_no].count) {
93771 chl_map->ch[ch_no].count -= read_wr.num_sge;
93772 -@@ -606,7 +606,7 @@ int svc_rdma_recvfrom(struct svc_rqst *r
93773 +@@ -609,7 +609,7 @@ int svc_rdma_recvfrom(struct svc_rqst *r
93774 dto_q);
93775 list_del_init(&ctxt->dto_q);
93776 } else {
93777 @@ -78551,7 +75207,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-2.6.32.
93778 clear_bit(XPT_DATA, &xprt->xpt_flags);
93779 ctxt = NULL;
93780 }
93781 -@@ -626,7 +626,7 @@ int svc_rdma_recvfrom(struct svc_rqst *r
93782 +@@ -629,7 +629,7 @@ int svc_rdma_recvfrom(struct svc_rqst *r
93783 dprintk("svcrdma: processing ctxt=%p on xprt=%p, rqstp=%p, status=%d\n",
93784 ctxt, rdma_xprt, rqstp, ctxt->wc_status);
93785 BUG_ON(ctxt->wc_status != IB_WC_SUCCESS);
93786 @@ -78560,10 +75216,10 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c linux-2.6.32.
93787
93788 /* Build up the XDR from the receive buffers. */
93789 rdma_build_arg_xdr(rqstp, ctxt, ctxt->byte_len);
93790 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c
93791 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2009-12-02 22:51:21.000000000 -0500
93792 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-11-12 12:46:53.000000000 -0500
93793 -@@ -328,7 +328,7 @@ static int send_write(struct svcxprt_rdm
93794 +diff -urNp linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_sendto.c
93795 +--- linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-07-21 22:17:23.000000000 -0400
93796 ++++ linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_sendto.c 2011-08-23 21:47:56.000000000 -0400
93797 +@@ -362,7 +362,7 @@ static int send_write(struct svcxprt_rdm
93798 write_wr.wr.rdma.remote_addr = to;
93799
93800 /* Post It */
93801 @@ -78572,10 +75228,10 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_sendto.c linux-2.6.32.48
93802 if (svc_rdma_send(xprt, &write_wr))
93803 goto err;
93804 return 0;
93805 -diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c
93806 ---- linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c 2009-12-02 22:51:21.000000000 -0500
93807 -+++ linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-11-12 12:46:53.000000000 -0500
93808 -@@ -292,7 +292,7 @@ static void rq_cq_reap(struct svcxprt_rd
93809 +diff -urNp linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_transport.c
93810 +--- linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-07-21 22:17:23.000000000 -0400
93811 ++++ linux-3.0.8/net/sunrpc/xprtrdma/svc_rdma_transport.c 2011-08-23 21:47:56.000000000 -0400
93812 +@@ -298,7 +298,7 @@ static void rq_cq_reap(struct svcxprt_rd
93813 return;
93814
93815 ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
93816 @@ -78584,7 +75240,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32
93817
93818 while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
93819 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
93820 -@@ -314,7 +314,7 @@ static void rq_cq_reap(struct svcxprt_rd
93821 +@@ -320,7 +320,7 @@ static void rq_cq_reap(struct svcxprt_rd
93822 }
93823
93824 if (ctxt)
93825 @@ -78593,7 +75249,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32
93826
93827 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
93828 /*
93829 -@@ -386,7 +386,7 @@ static void sq_cq_reap(struct svcxprt_rd
93830 +@@ -392,7 +392,7 @@ static void sq_cq_reap(struct svcxprt_rd
93831 return;
93832
93833 ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
93834 @@ -78602,7 +75258,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32
93835 while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) {
93836 if (wc.status != IB_WC_SUCCESS)
93837 /* Close the transport */
93838 -@@ -404,7 +404,7 @@ static void sq_cq_reap(struct svcxprt_rd
93839 +@@ -410,7 +410,7 @@ static void sq_cq_reap(struct svcxprt_rd
93840 }
93841
93842 if (ctxt)
93843 @@ -78611,7 +75267,7 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32
93844 }
93845
93846 static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
93847 -@@ -1260,7 +1260,7 @@ int svc_rdma_send(struct svcxprt_rdma *x
93848 +@@ -1272,7 +1272,7 @@ int svc_rdma_send(struct svcxprt_rdma *x
93849 spin_lock_bh(&xprt->sc_lock);
93850 if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) {
93851 spin_unlock_bh(&xprt->sc_lock);
93852 @@ -78620,9 +75276,9 @@ diff -urNp linux-2.6.32.48/net/sunrpc/xprtrdma/svc_rdma_transport.c linux-2.6.32
93853
93854 /* See if we can opportunistically reap SQ WR to make room */
93855 sq_cq_reap(xprt);
93856 -diff -urNp linux-2.6.32.48/net/sysctl_net.c linux-2.6.32.48/net/sysctl_net.c
93857 ---- linux-2.6.32.48/net/sysctl_net.c 2009-12-02 22:51:21.000000000 -0500
93858 -+++ linux-2.6.32.48/net/sysctl_net.c 2011-11-12 12:46:53.000000000 -0500
93859 +diff -urNp linux-3.0.8/net/sysctl_net.c linux-3.0.8/net/sysctl_net.c
93860 +--- linux-3.0.8/net/sysctl_net.c 2011-07-21 22:17:23.000000000 -0400
93861 ++++ linux-3.0.8/net/sysctl_net.c 2011-08-23 21:48:14.000000000 -0400
93862 @@ -46,7 +46,7 @@ static int net_ctl_permissions(struct ct
93863 struct ctl_table *table)
93864 {
93865 @@ -78632,10 +75288,19 @@ diff -urNp linux-2.6.32.48/net/sysctl_net.c linux-2.6.32.48/net/sysctl_net.c
93866 int mode = (table->mode >> 6) & 7;
93867 return (mode << 6) | (mode << 3) | mode;
93868 }
93869 -diff -urNp linux-2.6.32.48/net/tipc/link.c linux-2.6.32.48/net/tipc/link.c
93870 ---- linux-2.6.32.48/net/tipc/link.c 2009-12-02 22:51:21.000000000 -0500
93871 -+++ linux-2.6.32.48/net/tipc/link.c 2011-11-12 12:46:53.000000000 -0500
93872 -@@ -1418,7 +1418,7 @@ again:
93873 +diff -urNp linux-3.0.8/net/tipc/link.c linux-3.0.8/net/tipc/link.c
93874 +--- linux-3.0.8/net/tipc/link.c 2011-07-21 22:17:23.000000000 -0400
93875 ++++ linux-3.0.8/net/tipc/link.c 2011-10-06 04:17:55.000000000 -0400
93876 +@@ -1170,7 +1170,7 @@ static int link_send_sections_long(struc
93877 + struct tipc_msg fragm_hdr;
93878 + struct sk_buff *buf, *buf_chain, *prev;
93879 + u32 fragm_crs, fragm_rest, hsz, sect_rest;
93880 +- const unchar *sect_crs;
93881 ++ const unchar __user *sect_crs;
93882 + int curr_sect;
93883 + u32 fragm_no;
93884 +
93885 +@@ -1214,7 +1214,7 @@ again:
93886
93887 if (!sect_rest) {
93888 sect_rest = msg_sect[++curr_sect].iov_len;
93889 @@ -78644,7 +75309,7 @@ diff -urNp linux-2.6.32.48/net/tipc/link.c linux-2.6.32.48/net/tipc/link.c
93890 }
93891
93892 if (sect_rest < fragm_rest)
93893 -@@ -1437,7 +1437,7 @@ error:
93894 +@@ -1233,7 +1233,7 @@ error:
93895 }
93896 } else
93897 skb_copy_to_linear_data_offset(buf, fragm_crs,
93898 @@ -78653,10 +75318,22 @@ diff -urNp linux-2.6.32.48/net/tipc/link.c linux-2.6.32.48/net/tipc/link.c
93899 sect_crs += sz;
93900 sect_rest -= sz;
93901 fragm_crs += sz;
93902 -diff -urNp linux-2.6.32.48/net/tipc/subscr.c linux-2.6.32.48/net/tipc/subscr.c
93903 ---- linux-2.6.32.48/net/tipc/subscr.c 2009-12-02 22:51:21.000000000 -0500
93904 -+++ linux-2.6.32.48/net/tipc/subscr.c 2011-11-12 12:46:53.000000000 -0500
93905 -@@ -104,7 +104,7 @@ static void subscr_send_event(struct sub
93906 +diff -urNp linux-3.0.8/net/tipc/msg.c linux-3.0.8/net/tipc/msg.c
93907 +--- linux-3.0.8/net/tipc/msg.c 2011-07-21 22:17:23.000000000 -0400
93908 ++++ linux-3.0.8/net/tipc/msg.c 2011-10-06 04:17:55.000000000 -0400
93909 +@@ -101,7 +101,7 @@ int tipc_msg_build(struct tipc_msg *hdr,
93910 + msg_sect[cnt].iov_len);
93911 + else
93912 + skb_copy_to_linear_data_offset(*buf, pos,
93913 +- msg_sect[cnt].iov_base,
93914 ++ (const void __force_kernel *)msg_sect[cnt].iov_base,
93915 + msg_sect[cnt].iov_len);
93916 + pos += msg_sect[cnt].iov_len;
93917 + }
93918 +diff -urNp linux-3.0.8/net/tipc/subscr.c linux-3.0.8/net/tipc/subscr.c
93919 +--- linux-3.0.8/net/tipc/subscr.c 2011-07-21 22:17:23.000000000 -0400
93920 ++++ linux-3.0.8/net/tipc/subscr.c 2011-10-06 04:17:55.000000000 -0400
93921 +@@ -101,7 +101,7 @@ static void subscr_send_event(struct sub
93922 {
93923 struct iovec msg_sect;
93924
93925 @@ -78665,10 +75342,10 @@ diff -urNp linux-2.6.32.48/net/tipc/subscr.c linux-2.6.32.48/net/tipc/subscr.c
93926 msg_sect.iov_len = sizeof(struct tipc_event);
93927
93928 sub->evt.event = htohl(event, sub->swap);
93929 -diff -urNp linux-2.6.32.48/net/unix/af_unix.c linux-2.6.32.48/net/unix/af_unix.c
93930 ---- linux-2.6.32.48/net/unix/af_unix.c 2011-11-12 12:44:30.000000000 -0500
93931 -+++ linux-2.6.32.48/net/unix/af_unix.c 2011-11-12 12:46:53.000000000 -0500
93932 -@@ -745,6 +745,12 @@ static struct sock *unix_find_other(stru
93933 +diff -urNp linux-3.0.8/net/unix/af_unix.c linux-3.0.8/net/unix/af_unix.c
93934 +--- linux-3.0.8/net/unix/af_unix.c 2011-07-21 22:17:23.000000000 -0400
93935 ++++ linux-3.0.8/net/unix/af_unix.c 2011-08-23 21:48:14.000000000 -0400
93936 +@@ -767,6 +767,12 @@ static struct sock *unix_find_other(stru
93937 err = -ECONNREFUSED;
93938 if (!S_ISSOCK(inode->i_mode))
93939 goto put_fail;
93940 @@ -78678,15 +75355,15 @@ diff -urNp linux-2.6.32.48/net/unix/af_unix.c linux-2.6.32.48/net/unix/af_unix.c
93941 + goto put_fail;
93942 + }
93943 +
93944 - u = unix_find_socket_byinode(net, inode);
93945 + u = unix_find_socket_byinode(inode);
93946 if (!u)
93947 goto put_fail;
93948 -@@ -765,6 +771,13 @@ static struct sock *unix_find_other(stru
93949 +@@ -787,6 +793,13 @@ static struct sock *unix_find_other(stru
93950 if (u) {
93951 struct dentry *dentry;
93952 dentry = unix_sk(u)->dentry;
93953 +
93954 -+ if (!gr_handle_chroot_unix(u->sk_peercred.pid)) {
93955 ++ if (!gr_handle_chroot_unix(pid_vnr(u->sk_peer_pid))) {
93956 + err = -EPERM;
93957 + sock_put(u);
93958 + goto fail;
93959 @@ -78695,7 +75372,7 @@ diff -urNp linux-2.6.32.48/net/unix/af_unix.c linux-2.6.32.48/net/unix/af_unix.c
93960 if (dentry)
93961 touch_atime(unix_sk(u)->mnt, dentry);
93962 } else
93963 -@@ -850,11 +863,18 @@ static int unix_bind(struct socket *sock
93964 +@@ -872,11 +885,18 @@ static int unix_bind(struct socket *sock
93965 err = security_path_mknod(&nd.path, dentry, mode, 0);
93966 if (err)
93967 goto out_mknod_drop_write;
93968 @@ -78714,21 +75391,9 @@ diff -urNp linux-2.6.32.48/net/unix/af_unix.c linux-2.6.32.48/net/unix/af_unix.c
93969 mutex_unlock(&nd.path.dentry->d_inode->i_mutex);
93970 dput(nd.path.dentry);
93971 nd.path.dentry = dentry;
93972 -@@ -2211,7 +2231,11 @@ static int unix_seq_show(struct seq_file
93973 - unix_state_lock(s);
93974 -
93975 - seq_printf(seq, "%p: %08X %08X %08X %04X %02X %5lu",
93976 -+#ifdef CONFIG_GRKERNSEC_HIDESYM
93977 -+ NULL,
93978 -+#else
93979 - s,
93980 -+#endif
93981 - atomic_read(&s->sk_refcnt),
93982 - 0,
93983 - s->sk_state == TCP_LISTEN ? __SO_ACCEPTCON : 0,
93984 -diff -urNp linux-2.6.32.48/net/wireless/core.h linux-2.6.32.48/net/wireless/core.h
93985 ---- linux-2.6.32.48/net/wireless/core.h 2011-11-12 12:44:30.000000000 -0500
93986 -+++ linux-2.6.32.48/net/wireless/core.h 2011-11-12 12:46:53.000000000 -0500
93987 +diff -urNp linux-3.0.8/net/wireless/core.h linux-3.0.8/net/wireless/core.h
93988 +--- linux-3.0.8/net/wireless/core.h 2011-07-21 22:17:23.000000000 -0400
93989 ++++ linux-3.0.8/net/wireless/core.h 2011-08-23 21:47:56.000000000 -0400
93990 @@ -27,7 +27,7 @@ struct cfg80211_registered_device {
93991 struct mutex mtx;
93992
93993 @@ -78738,10 +75403,10 @@ diff -urNp linux-2.6.32.48/net/wireless/core.h linux-2.6.32.48/net/wireless/core
93994 struct rfkill *rfkill;
93995 struct work_struct rfkill_sync;
93996
93997 -diff -urNp linux-2.6.32.48/net/wireless/wext.c linux-2.6.32.48/net/wireless/wext.c
93998 ---- linux-2.6.32.48/net/wireless/wext.c 2011-11-12 12:44:30.000000000 -0500
93999 -+++ linux-2.6.32.48/net/wireless/wext.c 2011-11-12 12:46:53.000000000 -0500
94000 -@@ -816,8 +816,7 @@ static int ioctl_standard_iw_point(struc
94001 +diff -urNp linux-3.0.8/net/wireless/wext-core.c linux-3.0.8/net/wireless/wext-core.c
94002 +--- linux-3.0.8/net/wireless/wext-core.c 2011-07-21 22:17:23.000000000 -0400
94003 ++++ linux-3.0.8/net/wireless/wext-core.c 2011-08-23 21:47:56.000000000 -0400
94004 +@@ -746,8 +746,7 @@ static int ioctl_standard_iw_point(struc
94005 */
94006
94007 /* Support for very large requests */
94008 @@ -78751,7 +75416,7 @@ diff -urNp linux-2.6.32.48/net/wireless/wext.c linux-2.6.32.48/net/wireless/wext
94009 /* Allow userspace to GET more than max so
94010 * we can support any size GET requests.
94011 * There is still a limit : -ENOMEM.
94012 -@@ -854,22 +853,6 @@ static int ioctl_standard_iw_point(struc
94013 +@@ -784,22 +783,6 @@ static int ioctl_standard_iw_point(struc
94014 }
94015 }
94016
94017 @@ -78774,10 +75439,19 @@ diff -urNp linux-2.6.32.48/net/wireless/wext.c linux-2.6.32.48/net/wireless/wext
94018 err = handler(dev, info, (union iwreq_data *) iwp, extra);
94019
94020 iwp->length += essid_compat;
94021 -diff -urNp linux-2.6.32.48/net/xfrm/xfrm_policy.c linux-2.6.32.48/net/xfrm/xfrm_policy.c
94022 ---- linux-2.6.32.48/net/xfrm/xfrm_policy.c 2009-12-02 22:51:21.000000000 -0500
94023 -+++ linux-2.6.32.48/net/xfrm/xfrm_policy.c 2011-11-12 12:46:53.000000000 -0500
94024 -@@ -586,7 +586,7 @@ int xfrm_policy_insert(int dir, struct x
94025 +diff -urNp linux-3.0.8/net/xfrm/xfrm_policy.c linux-3.0.8/net/xfrm/xfrm_policy.c
94026 +--- linux-3.0.8/net/xfrm/xfrm_policy.c 2011-07-21 22:17:23.000000000 -0400
94027 ++++ linux-3.0.8/net/xfrm/xfrm_policy.c 2011-08-23 21:47:56.000000000 -0400
94028 +@@ -299,7 +299,7 @@ static void xfrm_policy_kill(struct xfrm
94029 + {
94030 + policy->walk.dead = 1;
94031 +
94032 +- atomic_inc(&policy->genid);
94033 ++ atomic_inc_unchecked(&policy->genid);
94034 +
94035 + if (del_timer(&policy->timer))
94036 + xfrm_pol_put(policy);
94037 +@@ -583,7 +583,7 @@ int xfrm_policy_insert(int dir, struct x
94038 hlist_add_head(&policy->bydst, chain);
94039 xfrm_pol_hold(policy);
94040 net->xfrm.policy_count[dir]++;
94041 @@ -78786,91 +75460,64 @@ diff -urNp linux-2.6.32.48/net/xfrm/xfrm_policy.c linux-2.6.32.48/net/xfrm/xfrm_
94042 if (delpol)
94043 __xfrm_policy_unlink(delpol, dir);
94044 policy->index = delpol ? delpol->index : xfrm_gen_index(net, dir);
94045 -@@ -669,7 +669,7 @@ struct xfrm_policy *xfrm_policy_bysel_ct
94046 - write_unlock_bh(&xfrm_policy_lock);
94047 -
94048 - if (ret && delete) {
94049 -- atomic_inc(&flow_cache_genid);
94050 -+ atomic_inc_unchecked(&flow_cache_genid);
94051 - xfrm_policy_kill(ret);
94052 - }
94053 - return ret;
94054 -@@ -710,7 +710,7 @@ struct xfrm_policy *xfrm_policy_byid(str
94055 - write_unlock_bh(&xfrm_policy_lock);
94056 -
94057 - if (ret && delete) {
94058 -- atomic_inc(&flow_cache_genid);
94059 -+ atomic_inc_unchecked(&flow_cache_genid);
94060 - xfrm_policy_kill(ret);
94061 - }
94062 - return ret;
94063 -@@ -824,7 +824,7 @@ int xfrm_policy_flush(struct net *net, u
94064 - }
94065 -
94066 - }
94067 -- atomic_inc(&flow_cache_genid);
94068 -+ atomic_inc_unchecked(&flow_cache_genid);
94069 - out:
94070 - write_unlock_bh(&xfrm_policy_lock);
94071 - return err;
94072 -@@ -1088,7 +1088,7 @@ int xfrm_policy_delete(struct xfrm_polic
94073 - write_unlock_bh(&xfrm_policy_lock);
94074 - if (pol) {
94075 - if (dir < XFRM_POLICY_MAX)
94076 -- atomic_inc(&flow_cache_genid);
94077 -+ atomic_inc_unchecked(&flow_cache_genid);
94078 - xfrm_policy_kill(pol);
94079 - return 0;
94080 - }
94081 -@@ -1477,7 +1477,7 @@ free_dst:
94082 +@@ -1528,7 +1528,7 @@ free_dst:
94083 goto out;
94084 }
94085
94086 -static int inline
94087 +static inline int
94088 - xfrm_dst_alloc_copy(void **target, void *src, int size)
94089 + xfrm_dst_alloc_copy(void **target, const void *src, int size)
94090 {
94091 if (!*target) {
94092 -@@ -1489,7 +1489,7 @@ xfrm_dst_alloc_copy(void **target, void
94093 +@@ -1540,7 +1540,7 @@ xfrm_dst_alloc_copy(void **target, const
94094 return 0;
94095 }
94096
94097 -static int inline
94098 +static inline int
94099 - xfrm_dst_update_parent(struct dst_entry *dst, struct xfrm_selector *sel)
94100 + xfrm_dst_update_parent(struct dst_entry *dst, const struct xfrm_selector *sel)
94101 {
94102 #ifdef CONFIG_XFRM_SUB_POLICY
94103 -@@ -1501,7 +1501,7 @@ xfrm_dst_update_parent(struct dst_entry
94104 +@@ -1552,7 +1552,7 @@ xfrm_dst_update_parent(struct dst_entry
94105 #endif
94106 }
94107
94108 -static int inline
94109 +static inline int
94110 - xfrm_dst_update_origin(struct dst_entry *dst, struct flowi *fl)
94111 + xfrm_dst_update_origin(struct dst_entry *dst, const struct flowi *fl)
94112 {
94113 #ifdef CONFIG_XFRM_SUB_POLICY
94114 -@@ -1537,7 +1537,7 @@ int __xfrm_lookup(struct net *net, struc
94115 - u8 dir = policy_to_flow_dir(XFRM_POLICY_OUT);
94116 -
94117 - restart:
94118 -- genid = atomic_read(&flow_cache_genid);
94119 -+ genid = atomic_read_unchecked(&flow_cache_genid);
94120 - policy = NULL;
94121 - for (pi = 0; pi < ARRAY_SIZE(pols); pi++)
94122 - pols[pi] = NULL;
94123 -@@ -1680,7 +1680,7 @@ restart:
94124 - goto error;
94125 - }
94126 - if (nx == -EAGAIN ||
94127 -- genid != atomic_read(&flow_cache_genid)) {
94128 -+ genid != atomic_read_unchecked(&flow_cache_genid)) {
94129 - xfrm_pols_put(pols, npols);
94130 - goto restart;
94131 - }
94132 -diff -urNp linux-2.6.32.48/net/xfrm/xfrm_user.c linux-2.6.32.48/net/xfrm/xfrm_user.c
94133 ---- linux-2.6.32.48/net/xfrm/xfrm_user.c 2009-12-02 22:51:21.000000000 -0500
94134 -+++ linux-2.6.32.48/net/xfrm/xfrm_user.c 2011-11-12 12:46:53.000000000 -0500
94135 -@@ -1169,6 +1169,8 @@ static int copy_to_user_tmpl(struct xfrm
94136 +@@ -1646,7 +1646,7 @@ xfrm_resolve_and_create_bundle(struct xf
94137 +
94138 + xdst->num_pols = num_pols;
94139 + memcpy(xdst->pols, pols, sizeof(struct xfrm_policy*) * num_pols);
94140 +- xdst->policy_genid = atomic_read(&pols[0]->genid);
94141 ++ xdst->policy_genid = atomic_read_unchecked(&pols[0]->genid);
94142 +
94143 + return xdst;
94144 + }
94145 +@@ -2333,7 +2333,7 @@ static int xfrm_bundle_ok(struct xfrm_ds
94146 + if (xdst->xfrm_genid != dst->xfrm->genid)
94147 + return 0;
94148 + if (xdst->num_pols > 0 &&
94149 +- xdst->policy_genid != atomic_read(&xdst->pols[0]->genid))
94150 ++ xdst->policy_genid != atomic_read_unchecked(&xdst->pols[0]->genid))
94151 + return 0;
94152 +
94153 + mtu = dst_mtu(dst->child);
94154 +@@ -2861,7 +2861,7 @@ static int xfrm_policy_migrate(struct xf
94155 + sizeof(pol->xfrm_vec[i].saddr));
94156 + pol->xfrm_vec[i].encap_family = mp->new_family;
94157 + /* flush bundles */
94158 +- atomic_inc(&pol->genid);
94159 ++ atomic_inc_unchecked(&pol->genid);
94160 + }
94161 + }
94162 +
94163 +diff -urNp linux-3.0.8/net/xfrm/xfrm_user.c linux-3.0.8/net/xfrm/xfrm_user.c
94164 +--- linux-3.0.8/net/xfrm/xfrm_user.c 2011-07-21 22:17:23.000000000 -0400
94165 ++++ linux-3.0.8/net/xfrm/xfrm_user.c 2011-08-23 21:48:14.000000000 -0400
94166 +@@ -1394,6 +1394,8 @@ static int copy_to_user_tmpl(struct xfrm
94167 struct xfrm_user_tmpl vec[XFRM_MAX_DEPTH];
94168 int i;
94169
94170 @@ -78879,7 +75526,7 @@ diff -urNp linux-2.6.32.48/net/xfrm/xfrm_user.c linux-2.6.32.48/net/xfrm/xfrm_us
94171 if (xp->xfrm_nr == 0)
94172 return 0;
94173
94174 -@@ -1784,6 +1786,8 @@ static int xfrm_do_migrate(struct sk_buf
94175 +@@ -2062,6 +2064,8 @@ static int xfrm_do_migrate(struct sk_buf
94176 int err;
94177 int n = 0;
94178
94179 @@ -78888,52 +75535,44 @@ diff -urNp linux-2.6.32.48/net/xfrm/xfrm_user.c linux-2.6.32.48/net/xfrm/xfrm_us
94180 if (attrs[XFRMA_MIGRATE] == NULL)
94181 return -EINVAL;
94182
94183 -diff -urNp linux-2.6.32.48/samples/kobject/kset-example.c linux-2.6.32.48/samples/kobject/kset-example.c
94184 ---- linux-2.6.32.48/samples/kobject/kset-example.c 2009-12-02 22:51:21.000000000 -0500
94185 -+++ linux-2.6.32.48/samples/kobject/kset-example.c 2011-11-12 12:46:53.000000000 -0500
94186 -@@ -87,7 +87,7 @@ static ssize_t foo_attr_store(struct kob
94187 - }
94188 -
94189 - /* Our custom sysfs_ops that we will associate with our ktype later on */
94190 --static struct sysfs_ops foo_sysfs_ops = {
94191 -+static const struct sysfs_ops foo_sysfs_ops = {
94192 - .show = foo_attr_show,
94193 - .store = foo_attr_store,
94194 - };
94195 -diff -urNp linux-2.6.32.48/scripts/basic/fixdep.c linux-2.6.32.48/scripts/basic/fixdep.c
94196 ---- linux-2.6.32.48/scripts/basic/fixdep.c 2009-12-02 22:51:21.000000000 -0500
94197 -+++ linux-2.6.32.48/scripts/basic/fixdep.c 2011-11-12 12:46:53.000000000 -0500
94198 -@@ -162,7 +162,7 @@ static void grow_config(int len)
94199 +diff -urNp linux-3.0.8/scripts/basic/fixdep.c linux-3.0.8/scripts/basic/fixdep.c
94200 +--- linux-3.0.8/scripts/basic/fixdep.c 2011-07-21 22:17:23.000000000 -0400
94201 ++++ linux-3.0.8/scripts/basic/fixdep.c 2011-10-06 04:17:55.000000000 -0400
94202 +@@ -161,7 +161,7 @@ static unsigned int strhash(const char *
94203 /*
94204 * Lookup a value in the configuration string.
94205 */
94206 --static int is_defined_config(const char * name, int len)
94207 -+static int is_defined_config(const char * name, unsigned int len)
94208 +-static int is_defined_config(const char *name, int len, unsigned int hash)
94209 ++static int is_defined_config(const char *name, unsigned int len, unsigned int hash)
94210 {
94211 - const char * pconfig;
94212 - const char * plast = str_config + len_config - len;
94213 -@@ -199,7 +199,7 @@ static void clear_config(void)
94214 + struct item *aux;
94215 +
94216 +@@ -211,10 +211,10 @@ static void clear_config(void)
94217 /*
94218 * Record the use of a CONFIG_* word.
94219 */
94220 --static void use_config(char *m, int slen)
94221 -+static void use_config(char *m, unsigned int slen)
94222 +-static void use_config(const char *m, int slen)
94223 ++static void use_config(const char *m, unsigned int slen)
94224 {
94225 - char s[PATH_MAX];
94226 - char *p;
94227 -@@ -222,9 +222,9 @@ static void use_config(char *m, int slen
94228 + unsigned int hash = strhash(m, slen);
94229 +- int c, i;
94230 ++ unsigned int c, i;
94231
94232 - static void parse_config_file(char *map, size_t len)
94233 + if (is_defined_config(m, slen, hash))
94234 + return;
94235 +@@ -235,9 +235,9 @@ static void use_config(const char *m, in
94236 +
94237 + static void parse_config_file(const char *map, size_t len)
94238 {
94239 -- int *end = (int *) (map + len);
94240 -+ unsigned int *end = (unsigned int *) (map + len);
94241 +- const int *end = (const int *) (map + len);
94242 ++ const unsigned int *end = (const unsigned int *) (map + len);
94243 /* start at +1, so that p can never be < map */
94244 -- int *m = (int *) map + 1;
94245 -+ unsigned int *m = (unsigned int *) map + 1;
94246 - char *p, *q;
94247 +- const int *m = (const int *) map + 1;
94248 ++ const unsigned int *m = (const unsigned int *) map + 1;
94249 + const char *p, *q;
94250
94251 for (; m < end; m++) {
94252 -@@ -371,7 +371,7 @@ static void print_deps(void)
94253 +@@ -405,7 +405,7 @@ static void print_deps(void)
94254 static void traps(void)
94255 {
94256 static char test[] __attribute__((aligned(sizeof(int)))) = "CONF";
94257 @@ -78942,16 +75581,25 @@ diff -urNp linux-2.6.32.48/scripts/basic/fixdep.c linux-2.6.32.48/scripts/basic/
94258
94259 if (*p != INT_CONF) {
94260 fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianess? %#x\n",
94261 -diff -urNp linux-2.6.32.48/scripts/gcc-plugin.sh linux-2.6.32.48/scripts/gcc-plugin.sh
94262 ---- linux-2.6.32.48/scripts/gcc-plugin.sh 1969-12-31 19:00:00.000000000 -0500
94263 -+++ linux-2.6.32.48/scripts/gcc-plugin.sh 2011-11-12 12:46:53.000000000 -0500
94264 +diff -urNp linux-3.0.8/scripts/gcc-plugin.sh linux-3.0.8/scripts/gcc-plugin.sh
94265 +--- linux-3.0.8/scripts/gcc-plugin.sh 1969-12-31 19:00:00.000000000 -0500
94266 ++++ linux-3.0.8/scripts/gcc-plugin.sh 2011-09-14 09:08:05.000000000 -0400
94267 @@ -0,0 +1,2 @@
94268 +#!/bin/sh
94269 +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"
94270 -diff -urNp linux-2.6.32.48/scripts/Makefile.build linux-2.6.32.48/scripts/Makefile.build
94271 ---- linux-2.6.32.48/scripts/Makefile.build 2009-12-02 22:51:21.000000000 -0500
94272 -+++ linux-2.6.32.48/scripts/Makefile.build 2011-11-12 12:46:53.000000000 -0500
94273 -@@ -59,7 +59,7 @@ endif
94274 +diff -urNp linux-3.0.8/scripts/Makefile.build linux-3.0.8/scripts/Makefile.build
94275 +--- linux-3.0.8/scripts/Makefile.build 2011-07-21 22:17:23.000000000 -0400
94276 ++++ linux-3.0.8/scripts/Makefile.build 2011-11-01 05:23:50.000000000 -0400
94277 +@@ -62,7 +62,7 @@ endif
94278 + ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS
94279 + warning- := $(empty)
94280 +
94281 +-warning-1 := -Wextra -Wunused -Wno-unused-parameter
94282 ++warning-1 := -Wextra -Wunused -Wno-unused-parameter -Wno-missing-field-initializers
94283 + warning-1 += -Wmissing-declarations
94284 + warning-1 += -Wmissing-format-attribute
94285 + warning-1 += -Wmissing-prototypes
94286 +@@ -109,7 +109,7 @@ endif
94287 endif
94288
94289 # Do not include host rules unless needed
94290 @@ -78960,9 +75608,9 @@ diff -urNp linux-2.6.32.48/scripts/Makefile.build linux-2.6.32.48/scripts/Makefi
94291 include scripts/Makefile.host
94292 endif
94293
94294 -diff -urNp linux-2.6.32.48/scripts/Makefile.clean linux-2.6.32.48/scripts/Makefile.clean
94295 ---- linux-2.6.32.48/scripts/Makefile.clean 2009-12-02 22:51:21.000000000 -0500
94296 -+++ linux-2.6.32.48/scripts/Makefile.clean 2011-11-12 12:46:53.000000000 -0500
94297 +diff -urNp linux-3.0.8/scripts/Makefile.clean linux-3.0.8/scripts/Makefile.clean
94298 +--- linux-3.0.8/scripts/Makefile.clean 2011-07-21 22:17:23.000000000 -0400
94299 ++++ linux-3.0.8/scripts/Makefile.clean 2011-08-23 21:47:56.000000000 -0400
94300 @@ -43,7 +43,8 @@ subdir-ymn := $(addprefix $(obj)/,$(subd
94301 __clean-files := $(extra-y) $(always) \
94302 $(targets) $(clean-files) \
94303 @@ -78971,11 +75619,11 @@ diff -urNp linux-2.6.32.48/scripts/Makefile.clean linux-2.6.32.48/scripts/Makefi
94304 + $(hostprogs-y) $(hostprogs-m) $(hostprogs-) \
94305 + $(hostlibs-y) $(hostlibs-m) $(hostlibs-)
94306
94307 - # as clean-files is given relative to the current directory, this adds
94308 - # a $(obj) prefix, except for absolute paths
94309 -diff -urNp linux-2.6.32.48/scripts/Makefile.host linux-2.6.32.48/scripts/Makefile.host
94310 ---- linux-2.6.32.48/scripts/Makefile.host 2009-12-02 22:51:21.000000000 -0500
94311 -+++ linux-2.6.32.48/scripts/Makefile.host 2011-11-12 12:46:53.000000000 -0500
94312 + __clean-files := $(filter-out $(no-clean-files), $(__clean-files))
94313 +
94314 +diff -urNp linux-3.0.8/scripts/Makefile.host linux-3.0.8/scripts/Makefile.host
94315 +--- linux-3.0.8/scripts/Makefile.host 2011-07-21 22:17:23.000000000 -0400
94316 ++++ linux-3.0.8/scripts/Makefile.host 2011-08-23 21:47:56.000000000 -0400
94317 @@ -31,6 +31,7 @@
94318 # Note: Shared libraries consisting of C++ files are not supported
94319
94320 @@ -78992,9 +75640,9 @@ diff -urNp linux-2.6.32.48/scripts/Makefile.host linux-2.6.32.48/scripts/Makefil
94321 # Remove .so files from "xxx-objs"
94322 host-cobjs := $(filter-out %.so,$(host-cobjs))
94323
94324 -diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/file2alias.c
94325 ---- linux-2.6.32.48/scripts/mod/file2alias.c 2009-12-02 22:51:21.000000000 -0500
94326 -+++ linux-2.6.32.48/scripts/mod/file2alias.c 2011-11-12 12:46:53.000000000 -0500
94327 +diff -urNp linux-3.0.8/scripts/mod/file2alias.c linux-3.0.8/scripts/mod/file2alias.c
94328 +--- linux-3.0.8/scripts/mod/file2alias.c 2011-07-21 22:17:23.000000000 -0400
94329 ++++ linux-3.0.8/scripts/mod/file2alias.c 2011-10-06 04:17:55.000000000 -0400
94330 @@ -72,7 +72,7 @@ static void device_id_check(const char *
94331 unsigned long size, unsigned long id_size,
94332 void *symval)
94333 @@ -79011,18 +75659,18 @@ diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/
94334 - unsigned int bcdDevice_initial, int bcdDevice_initial_digits,
94335 + unsigned int bcdDevice_initial, unsigned int bcdDevice_initial_digits,
94336 unsigned char range_lo, unsigned char range_hi,
94337 - struct module *mod)
94338 + unsigned char max, struct module *mod)
94339 {
94340 -@@ -151,7 +151,7 @@ static void do_usb_entry_multi(struct us
94341 +@@ -203,7 +203,7 @@ static void do_usb_entry_multi(struct us
94342 {
94343 unsigned int devlo, devhi;
94344 - unsigned char chi, clo;
94345 + unsigned char chi, clo, max;
94346 - int ndigits;
94347 + unsigned int ndigits;
94348
94349 id->match_flags = TO_NATIVE(id->match_flags);
94350 id->idVendor = TO_NATIVE(id->idVendor);
94351 -@@ -368,7 +368,7 @@ static void do_pnp_device_entry(void *sy
94352 +@@ -437,7 +437,7 @@ static void do_pnp_device_entry(void *sy
94353 for (i = 0; i < count; i++) {
94354 const char *id = (char *)devs[i].id;
94355 char acpi_id[sizeof(devs[0].id)];
94356 @@ -79031,7 +75679,7 @@ diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/
94357
94358 buf_printf(&mod->dev_table_buf,
94359 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
94360 -@@ -398,7 +398,7 @@ static void do_pnp_card_entries(void *sy
94361 +@@ -467,7 +467,7 @@ static void do_pnp_card_entries(void *sy
94362
94363 for (j = 0; j < PNP_MAX_DEVICES; j++) {
94364 const char *id = (char *)card->devs[j].id;
94365 @@ -79040,7 +75688,7 @@ diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/
94366 int dup = 0;
94367
94368 if (!id[0])
94369 -@@ -424,7 +424,7 @@ static void do_pnp_card_entries(void *sy
94370 +@@ -493,7 +493,7 @@ static void do_pnp_card_entries(void *sy
94371 /* add an individual alias for every device entry */
94372 if (!dup) {
94373 char acpi_id[sizeof(card->devs[0].id)];
94374 @@ -79049,7 +75697,7 @@ diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/
94375
94376 buf_printf(&mod->dev_table_buf,
94377 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
94378 -@@ -699,7 +699,7 @@ static void dmi_ascii_filter(char *d, co
94379 +@@ -786,7 +786,7 @@ static void dmi_ascii_filter(char *d, co
94380 static int do_dmi_entry(const char *filename, struct dmi_system_id *id,
94381 char *alias)
94382 {
94383 @@ -79058,21 +75706,21 @@ diff -urNp linux-2.6.32.48/scripts/mod/file2alias.c linux-2.6.32.48/scripts/mod/
94384
94385 sprintf(alias, "dmi*");
94386
94387 -diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/modpost.c
94388 ---- linux-2.6.32.48/scripts/mod/modpost.c 2011-11-12 12:44:30.000000000 -0500
94389 -+++ linux-2.6.32.48/scripts/mod/modpost.c 2011-11-12 12:46:53.000000000 -0500
94390 -@@ -835,6 +835,7 @@ enum mismatch {
94391 - INIT_TO_EXIT,
94392 - EXIT_TO_INIT,
94393 +diff -urNp linux-3.0.8/scripts/mod/modpost.c linux-3.0.8/scripts/mod/modpost.c
94394 +--- linux-3.0.8/scripts/mod/modpost.c 2011-07-21 22:17:23.000000000 -0400
94395 ++++ linux-3.0.8/scripts/mod/modpost.c 2011-08-23 21:47:56.000000000 -0400
94396 +@@ -892,6 +892,7 @@ enum mismatch {
94397 + ANY_INIT_TO_ANY_EXIT,
94398 + ANY_EXIT_TO_ANY_INIT,
94399 EXPORT_TO_INIT_EXIT,
94400 + DATA_TO_TEXT
94401 };
94402
94403 struct sectioncheck {
94404 -@@ -920,6 +921,12 @@ const struct sectioncheck sectioncheck[]
94405 - .fromsec = { "__ksymtab*", NULL },
94406 +@@ -1000,6 +1001,12 @@ const struct sectioncheck sectioncheck[]
94407 .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL },
94408 - .mismatch = EXPORT_TO_INIT_EXIT
94409 + .mismatch = EXPORT_TO_INIT_EXIT,
94410 + .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
94411 +},
94412 +/* Do not reference code from writable data */
94413 +{
94414 @@ -79082,7 +75730,7 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/mod
94415 }
94416 };
94417
94418 -@@ -1024,10 +1031,10 @@ static Elf_Sym *find_elf_symbol(struct e
94419 +@@ -1122,10 +1129,10 @@ static Elf_Sym *find_elf_symbol(struct e
94420 continue;
94421 if (ELF_ST_TYPE(sym->st_info) == STT_SECTION)
94422 continue;
94423 @@ -79095,10 +75743,10 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/mod
94424 if (d < 0)
94425 d = addr - sym->st_value;
94426 if (d < distance) {
94427 -@@ -1268,6 +1275,14 @@ static void report_sec_mismatch(const ch
94428 - "Fix this by removing the %sannotation of %s "
94429 - "or drop the export.\n",
94430 - tosym, sec2annotation(tosec), sec2annotation(tosec), tosym);
94431 +@@ -1404,6 +1411,14 @@ static void report_sec_mismatch(const ch
94432 + tosym, prl_to, prl_to, tosym);
94433 + free(prl_to);
94434 + break;
94435 + case DATA_TO_TEXT:
94436 +/*
94437 + fprintf(stderr,
94438 @@ -79107,10 +75755,10 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/mod
94439 + fromsym, to, sec2annotation(tosec), tosym, to_p);
94440 +*/
94441 + break;
94442 - case NO_MISMATCH:
94443 - /* To get warnings on missing members */
94444 - break;
94445 -@@ -1495,7 +1510,7 @@ static void section_rel(const char *modn
94446 + }
94447 + fprintf(stderr, "\n");
94448 + }
94449 +@@ -1629,7 +1644,7 @@ static void section_rel(const char *modn
94450 static void check_sec_ref(struct module *mod, const char *modname,
94451 struct elf_info *elf)
94452 {
94453 @@ -79119,7 +75767,7 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/mod
94454 Elf_Shdr *sechdrs = elf->sechdrs;
94455
94456 /* Walk through all sections */
94457 -@@ -1651,7 +1666,7 @@ void __attribute__((format(printf, 2, 3)
94458 +@@ -1727,7 +1742,7 @@ void __attribute__((format(printf, 2, 3)
94459 va_end(ap);
94460 }
94461
94462 @@ -79128,7 +75776,7 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/mod
94463 {
94464 if (buf->size - buf->pos < len) {
94465 buf->size += len + SZ;
94466 -@@ -1863,7 +1878,7 @@ static void write_if_changed(struct buff
94467 +@@ -1939,7 +1954,7 @@ static void write_if_changed(struct buff
94468 if (fstat(fileno(file), &st) < 0)
94469 goto close_write;
94470
94471 @@ -79137,9 +75785,9 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.c linux-2.6.32.48/scripts/mod/mod
94472 goto close_write;
94473
94474 tmp = NOFAIL(malloc(b->pos));
94475 -diff -urNp linux-2.6.32.48/scripts/mod/modpost.h linux-2.6.32.48/scripts/mod/modpost.h
94476 ---- linux-2.6.32.48/scripts/mod/modpost.h 2009-12-02 22:51:21.000000000 -0500
94477 -+++ linux-2.6.32.48/scripts/mod/modpost.h 2011-11-12 12:46:53.000000000 -0500
94478 +diff -urNp linux-3.0.8/scripts/mod/modpost.h linux-3.0.8/scripts/mod/modpost.h
94479 +--- linux-3.0.8/scripts/mod/modpost.h 2011-07-21 22:17:23.000000000 -0400
94480 ++++ linux-3.0.8/scripts/mod/modpost.h 2011-08-23 21:47:56.000000000 -0400
94481 @@ -92,15 +92,15 @@ void *do_nofail(void *ptr, const char *e
94482
94483 struct buffer {
94484 @@ -79159,10 +75807,10 @@ diff -urNp linux-2.6.32.48/scripts/mod/modpost.h linux-2.6.32.48/scripts/mod/mod
94485
94486 struct module {
94487 struct module *next;
94488 -diff -urNp linux-2.6.32.48/scripts/mod/sumversion.c linux-2.6.32.48/scripts/mod/sumversion.c
94489 ---- linux-2.6.32.48/scripts/mod/sumversion.c 2009-12-02 22:51:21.000000000 -0500
94490 -+++ linux-2.6.32.48/scripts/mod/sumversion.c 2011-11-12 12:46:53.000000000 -0500
94491 -@@ -455,7 +455,7 @@ static void write_version(const char *fi
94492 +diff -urNp linux-3.0.8/scripts/mod/sumversion.c linux-3.0.8/scripts/mod/sumversion.c
94493 +--- linux-3.0.8/scripts/mod/sumversion.c 2011-07-21 22:17:23.000000000 -0400
94494 ++++ linux-3.0.8/scripts/mod/sumversion.c 2011-08-23 21:47:56.000000000 -0400
94495 +@@ -470,7 +470,7 @@ static void write_version(const char *fi
94496 goto out;
94497 }
94498
94499 @@ -79171,21 +75819,9 @@ diff -urNp linux-2.6.32.48/scripts/mod/sumversion.c linux-2.6.32.48/scripts/mod/
94500 warn("writing sum in %s failed: %s\n",
94501 filename, strerror(errno));
94502 goto out;
94503 -diff -urNp linux-2.6.32.48/scripts/package/mkspec linux-2.6.32.48/scripts/package/mkspec
94504 ---- linux-2.6.32.48/scripts/package/mkspec 2009-12-02 22:51:21.000000000 -0500
94505 -+++ linux-2.6.32.48/scripts/package/mkspec 2011-11-12 12:46:53.000000000 -0500
94506 -@@ -70,7 +70,7 @@ echo 'mkdir -p $RPM_BUILD_ROOT/boot $RPM
94507 - echo 'mkdir -p $RPM_BUILD_ROOT/lib/firmware'
94508 - echo "%endif"
94509 -
94510 --echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{_smp_mflags} KBUILD_SRC= modules_install'
94511 -+echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{?_smp_mflags} KBUILD_SRC= modules_install'
94512 - echo "%ifarch ia64"
94513 - echo 'cp $KBUILD_IMAGE $RPM_BUILD_ROOT'"/boot/efi/vmlinuz-$KERNELRELEASE"
94514 - echo 'ln -s '"efi/vmlinuz-$KERNELRELEASE" '$RPM_BUILD_ROOT'"/boot/"
94515 -diff -urNp linux-2.6.32.48/scripts/pnmtologo.c linux-2.6.32.48/scripts/pnmtologo.c
94516 ---- linux-2.6.32.48/scripts/pnmtologo.c 2009-12-02 22:51:21.000000000 -0500
94517 -+++ linux-2.6.32.48/scripts/pnmtologo.c 2011-11-12 12:46:53.000000000 -0500
94518 +diff -urNp linux-3.0.8/scripts/pnmtologo.c linux-3.0.8/scripts/pnmtologo.c
94519 +--- linux-3.0.8/scripts/pnmtologo.c 2011-07-21 22:17:23.000000000 -0400
94520 ++++ linux-3.0.8/scripts/pnmtologo.c 2011-08-23 21:47:56.000000000 -0400
94521 @@ -237,14 +237,14 @@ static void write_header(void)
94522 fprintf(out, " * Linux logo %s\n", logoname);
94523 fputs(" */\n\n", out);
94524 @@ -79212,76 +75848,39 @@ diff -urNp linux-2.6.32.48/scripts/pnmtologo.c linux-2.6.32.48/scripts/pnmtologo
94525 logoname);
94526 write_hex_cnt = 0;
94527 for (i = 0; i < logo_clutsize; i++) {
94528 -diff -urNp linux-2.6.32.48/scripts/tags.sh linux-2.6.32.48/scripts/tags.sh
94529 ---- linux-2.6.32.48/scripts/tags.sh 2009-12-02 22:51:21.000000000 -0500
94530 -+++ linux-2.6.32.48/scripts/tags.sh 2011-11-12 12:46:53.000000000 -0500
94531 -@@ -93,6 +93,11 @@ docscope()
94532 - cscope -b -f cscope.out
94533 +diff -urNp linux-3.0.8/security/apparmor/lsm.c linux-3.0.8/security/apparmor/lsm.c
94534 +--- linux-3.0.8/security/apparmor/lsm.c 2011-10-24 08:05:21.000000000 -0400
94535 ++++ linux-3.0.8/security/apparmor/lsm.c 2011-08-23 21:48:14.000000000 -0400
94536 +@@ -621,7 +621,7 @@ static int apparmor_task_setrlimit(struc
94537 + return error;
94538 }
94539
94540 -+dogtags()
94541 -+{
94542 -+ all_sources | gtags -f -
94543 -+}
94544 -+
94545 - exuberant()
94546 - {
94547 - all_sources | xargs $1 -a \
94548 -@@ -164,6 +169,10 @@ case "$1" in
94549 - docscope
94550 - ;;
94551 +-static struct security_operations apparmor_ops = {
94552 ++static struct security_operations apparmor_ops __read_only = {
94553 + .name = "apparmor",
94554
94555 -+ "gtags")
94556 -+ dogtags
94557 -+ ;;
94558 -+
94559 - "tags")
94560 - rm -f tags
94561 - xtags ctags
94562 -diff -urNp linux-2.6.32.48/security/capability.c linux-2.6.32.48/security/capability.c
94563 ---- linux-2.6.32.48/security/capability.c 2009-12-02 22:51:21.000000000 -0500
94564 -+++ linux-2.6.32.48/security/capability.c 2011-11-12 12:46:53.000000000 -0500
94565 -@@ -890,7 +890,7 @@ static void cap_audit_rule_free(void *ls
94566 - }
94567 - #endif /* CONFIG_AUDIT */
94568 -
94569 --struct security_operations default_security_ops = {
94570 -+struct security_operations default_security_ops __read_only = {
94571 - .name = "default",
94572 - };
94573 -
94574 -diff -urNp linux-2.6.32.48/security/commoncap.c linux-2.6.32.48/security/commoncap.c
94575 ---- linux-2.6.32.48/security/commoncap.c 2009-12-02 22:51:21.000000000 -0500
94576 -+++ linux-2.6.32.48/security/commoncap.c 2011-11-12 12:46:53.000000000 -0500
94577 -@@ -27,7 +27,7 @@
94578 - #include <linux/sched.h>
94579 + .ptrace_access_check = apparmor_ptrace_access_check,
94580 +diff -urNp linux-3.0.8/security/commoncap.c linux-3.0.8/security/commoncap.c
94581 +--- linux-3.0.8/security/commoncap.c 2011-07-21 22:17:23.000000000 -0400
94582 ++++ linux-3.0.8/security/commoncap.c 2011-08-23 21:48:14.000000000 -0400
94583 +@@ -28,6 +28,7 @@
94584 #include <linux/prctl.h>
94585 #include <linux/securebits.h>
94586 --
94587 + #include <linux/user_namespace.h>
94588 +#include <net/sock.h>
94589 +
94590 /*
94591 * If a non-root user executes a setuid-root binary in
94592 - * !secure(SECURE_NOROOT) mode, then we raise capabilities.
94593 -@@ -50,9 +50,18 @@ static void warn_setuid_and_fcaps_mixed(
94594 - }
94595 - }
94596 +@@ -58,7 +59,7 @@ int cap_netlink_send(struct sock *sk, st
94597
94598 -+#ifdef CONFIG_NET
94599 -+extern kernel_cap_t gr_cap_rtnetlink(struct sock *sk);
94600 -+#endif
94601 -+
94602 - int cap_netlink_send(struct sock *sk, struct sk_buff *skb)
94603 + int cap_netlink_recv(struct sk_buff *skb, int cap)
94604 {
94605 -+#ifdef CONFIG_NET
94606 -+ NETLINK_CB(skb).eff_cap = gr_cap_rtnetlink(sk);
94607 -+#else
94608 - NETLINK_CB(skb).eff_cap = current_cap();
94609 -+#endif
94610 -+
94611 +- if (!cap_raised(current_cap(), cap))
94612 ++ if (!cap_raised(current_cap(), cap) || !gr_is_capable(cap))
94613 + return -EPERM;
94614 return 0;
94615 }
94616 -
94617 -@@ -582,6 +591,9 @@ int cap_bprm_secureexec(struct linux_bin
94618 +@@ -575,6 +576,9 @@ int cap_bprm_secureexec(struct linux_bin
94619 {
94620 const struct cred *cred = current_cred();
94621
94622 @@ -79291,10 +75890,10 @@ diff -urNp linux-2.6.32.48/security/commoncap.c linux-2.6.32.48/security/commonc
94623 if (cred->uid != 0) {
94624 if (bprm->cap_effective)
94625 return 1;
94626 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima_api.c linux-2.6.32.48/security/integrity/ima/ima_api.c
94627 ---- linux-2.6.32.48/security/integrity/ima/ima_api.c 2009-12-02 22:51:21.000000000 -0500
94628 -+++ linux-2.6.32.48/security/integrity/ima/ima_api.c 2011-11-12 12:46:53.000000000 -0500
94629 -@@ -74,7 +74,7 @@ void ima_add_violation(struct inode *ino
94630 +diff -urNp linux-3.0.8/security/integrity/ima/ima_api.c linux-3.0.8/security/integrity/ima/ima_api.c
94631 +--- linux-3.0.8/security/integrity/ima/ima_api.c 2011-07-21 22:17:23.000000000 -0400
94632 ++++ linux-3.0.8/security/integrity/ima/ima_api.c 2011-08-23 21:47:56.000000000 -0400
94633 +@@ -75,7 +75,7 @@ void ima_add_violation(struct inode *ino
94634 int result;
94635
94636 /* can overflow, only indicator */
94637 @@ -79303,10 +75902,10 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima_api.c linux-2.6.32.48/secu
94638
94639 entry = kmalloc(sizeof(*entry), GFP_KERNEL);
94640 if (!entry) {
94641 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima_fs.c linux-2.6.32.48/security/integrity/ima/ima_fs.c
94642 ---- linux-2.6.32.48/security/integrity/ima/ima_fs.c 2009-12-02 22:51:21.000000000 -0500
94643 -+++ linux-2.6.32.48/security/integrity/ima/ima_fs.c 2011-11-12 12:46:53.000000000 -0500
94644 -@@ -27,12 +27,12 @@
94645 +diff -urNp linux-3.0.8/security/integrity/ima/ima_fs.c linux-3.0.8/security/integrity/ima/ima_fs.c
94646 +--- linux-3.0.8/security/integrity/ima/ima_fs.c 2011-07-21 22:17:23.000000000 -0400
94647 ++++ linux-3.0.8/security/integrity/ima/ima_fs.c 2011-08-23 21:47:56.000000000 -0400
94648 +@@ -28,12 +28,12 @@
94649 static int valid_policy = 1;
94650 #define TMPBUFLEN 12
94651 static ssize_t ima_show_htable_value(char __user *buf, size_t count,
94652 @@ -79321,10 +75920,10 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima_fs.c linux-2.6.32.48/secur
94653 return simple_read_from_buffer(buf, count, ppos, tmpbuf, len);
94654 }
94655
94656 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima.h linux-2.6.32.48/security/integrity/ima/ima.h
94657 ---- linux-2.6.32.48/security/integrity/ima/ima.h 2009-12-02 22:51:21.000000000 -0500
94658 -+++ linux-2.6.32.48/security/integrity/ima/ima.h 2011-11-12 12:46:53.000000000 -0500
94659 -@@ -84,8 +84,8 @@ void ima_add_violation(struct inode *ino
94660 +diff -urNp linux-3.0.8/security/integrity/ima/ima.h linux-3.0.8/security/integrity/ima/ima.h
94661 +--- linux-3.0.8/security/integrity/ima/ima.h 2011-07-21 22:17:23.000000000 -0400
94662 ++++ linux-3.0.8/security/integrity/ima/ima.h 2011-08-23 21:47:56.000000000 -0400
94663 +@@ -85,8 +85,8 @@ void ima_add_violation(struct inode *ino
94664 extern spinlock_t ima_queue_lock;
94665
94666 struct ima_h_table {
94667 @@ -79335,10 +75934,10 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima.h linux-2.6.32.48/security
94668 struct hlist_head queue[IMA_MEASURE_HTABLE_SIZE];
94669 };
94670 extern struct ima_h_table ima_htable;
94671 -diff -urNp linux-2.6.32.48/security/integrity/ima/ima_queue.c linux-2.6.32.48/security/integrity/ima/ima_queue.c
94672 ---- linux-2.6.32.48/security/integrity/ima/ima_queue.c 2009-12-02 22:51:21.000000000 -0500
94673 -+++ linux-2.6.32.48/security/integrity/ima/ima_queue.c 2011-11-12 12:46:53.000000000 -0500
94674 -@@ -78,7 +78,7 @@ static int ima_add_digest_entry(struct i
94675 +diff -urNp linux-3.0.8/security/integrity/ima/ima_queue.c linux-3.0.8/security/integrity/ima/ima_queue.c
94676 +--- linux-3.0.8/security/integrity/ima/ima_queue.c 2011-07-21 22:17:23.000000000 -0400
94677 ++++ linux-3.0.8/security/integrity/ima/ima_queue.c 2011-08-23 21:47:56.000000000 -0400
94678 +@@ -79,7 +79,7 @@ static int ima_add_digest_entry(struct i
94679 INIT_LIST_HEAD(&qe->later);
94680 list_add_tail_rcu(&qe->later, &ima_measurements);
94681
94682 @@ -79347,10 +75946,10 @@ diff -urNp linux-2.6.32.48/security/integrity/ima/ima_queue.c linux-2.6.32.48/se
94683 key = ima_hash_key(entry->digest);
94684 hlist_add_head_rcu(&qe->hnext, &ima_htable.queue[key]);
94685 return 0;
94686 -diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
94687 ---- linux-2.6.32.48/security/Kconfig 2009-12-02 22:51:21.000000000 -0500
94688 -+++ linux-2.6.32.48/security/Kconfig 2011-11-12 12:46:53.000000000 -0500
94689 -@@ -4,6 +4,559 @@
94690 +diff -urNp linux-3.0.8/security/Kconfig linux-3.0.8/security/Kconfig
94691 +--- linux-3.0.8/security/Kconfig 2011-07-21 22:17:23.000000000 -0400
94692 ++++ linux-3.0.8/security/Kconfig 2011-10-06 04:19:25.000000000 -0400
94693 +@@ -4,6 +4,558 @@
94694
94695 menu "Security options"
94696
94697 @@ -79600,7 +76199,7 @@ diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
94698 + default n
94699 + help
94700 + The current implementation of PAX_MPROTECT denies RWX allocations/mprotects
94701 -+ by sending the proper error code to the application. For some broken
94702 ++ by sending the proper error code to the application. For some broken
94703 + userland, this can cause problems with Python or other applications. The
94704 + current implementation however allows for applications like clamav to
94705 + detect if JIT compilation/execution is allowed and to fall back gracefully
94706 @@ -79611,7 +76210,7 @@ diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
94707 + completely on certain binaries reduces the security benefit of PaX,
94708 + so this option is provided for those environments to revert to the old
94709 + behavior.
94710 -+
94711 ++
94712 +config PAX_ELFRELOCS
94713 + bool "Allow ELF text relocations (read help)"
94714 + depends on PAX_MPROTECT
94715 @@ -79824,7 +76423,7 @@ diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
94716 + the bug) but traces of earlier system calls on the kernel stack
94717 + cannot leak anymore.
94718 +
94719 -+ The tradeoff is performance impact, on a single CPU system kernel
94720 ++ The tradeoff is performance impact: on a single CPU system kernel
94721 + compilation sees a 1% slowdown, other systems and workloads may vary
94722 + and you are advised to test this feature on your expected workload
94723 + before deploying it.
94724 @@ -79895,10 +76494,9 @@ diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
94725 + accessors. Though the whitelist of regions will be reduced over
94726 + time, it notably protects important data structures like task structs.
94727 +
94728 -+
94729 -+ If frame pointers are enabled on x86, this option will also
94730 -+ restrict copies into and out of the kernel stack to local variables
94731 -+ within a single frame.
94732 ++ If frame pointers are enabled on x86, this option will also restrict
94733 ++ copies into and out of the kernel stack to local variables within a
94734 ++ single frame.
94735 +
94736 + Since this has a negligible performance impact, you should enable
94737 + this feature.
94738 @@ -79910,19 +76508,70 @@ diff -urNp linux-2.6.32.48/security/Kconfig linux-2.6.32.48/security/Kconfig
94739 config KEYS
94740 bool "Enable access key retention support"
94741 help
94742 -@@ -146,7 +699,7 @@ config INTEL_TXT
94743 +@@ -167,7 +719,7 @@ config INTEL_TXT
94744 config LSM_MMAP_MIN_ADDR
94745 int "Low address space for LSM to protect from user allocation"
94746 depends on SECURITY && SECURITY_SELINUX
94747 -- default 65536
94748 -+ default 32768
94749 +- default 32768 if ARM
94750 ++ default 32768 if ALPHA || ARM || PARISC || SPARC32
94751 + default 65536
94752 help
94753 This is the portion of low virtual memory which should be protected
94754 - from userspace allocation. Keeping a user from writing to low pages
94755 -diff -urNp linux-2.6.32.48/security/keys/keyring.c linux-2.6.32.48/security/keys/keyring.c
94756 ---- linux-2.6.32.48/security/keys/keyring.c 2011-11-12 12:44:30.000000000 -0500
94757 -+++ linux-2.6.32.48/security/keys/keyring.c 2011-11-12 12:46:53.000000000 -0500
94758 -@@ -214,15 +214,15 @@ static long keyring_read(const struct ke
94759 +diff -urNp linux-3.0.8/security/keys/compat.c linux-3.0.8/security/keys/compat.c
94760 +--- linux-3.0.8/security/keys/compat.c 2011-07-21 22:17:23.000000000 -0400
94761 ++++ linux-3.0.8/security/keys/compat.c 2011-10-06 04:17:55.000000000 -0400
94762 +@@ -44,7 +44,7 @@ long compat_keyctl_instantiate_key_iov(
94763 + if (ret == 0)
94764 + goto no_payload_free;
94765 +
94766 +- ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid);
94767 ++ ret = keyctl_instantiate_key_common(id, (const struct iovec __force_user *)iov, ioc, ret, ringid);
94768 +
94769 + if (iov != iovstack)
94770 + kfree(iov);
94771 +diff -urNp linux-3.0.8/security/keys/keyctl.c linux-3.0.8/security/keys/keyctl.c
94772 +--- linux-3.0.8/security/keys/keyctl.c 2011-07-21 22:17:23.000000000 -0400
94773 ++++ linux-3.0.8/security/keys/keyctl.c 2011-10-06 04:17:55.000000000 -0400
94774 +@@ -921,7 +921,7 @@ static int keyctl_change_reqkey_auth(str
94775 + /*
94776 + * Copy the iovec data from userspace
94777 + */
94778 +-static long copy_from_user_iovec(void *buffer, const struct iovec *iov,
94779 ++static long copy_from_user_iovec(void *buffer, const struct iovec __user *iov,
94780 + unsigned ioc)
94781 + {
94782 + for (; ioc > 0; ioc--) {
94783 +@@ -943,7 +943,7 @@ static long copy_from_user_iovec(void *b
94784 + * If successful, 0 will be returned.
94785 + */
94786 + long keyctl_instantiate_key_common(key_serial_t id,
94787 +- const struct iovec *payload_iov,
94788 ++ const struct iovec __user *payload_iov,
94789 + unsigned ioc,
94790 + size_t plen,
94791 + key_serial_t ringid)
94792 +@@ -1038,7 +1038,7 @@ long keyctl_instantiate_key(key_serial_t
94793 + [0].iov_len = plen
94794 + };
94795 +
94796 +- return keyctl_instantiate_key_common(id, iov, 1, plen, ringid);
94797 ++ return keyctl_instantiate_key_common(id, (const struct iovec __force_user *)iov, 1, plen, ringid);
94798 + }
94799 +
94800 + return keyctl_instantiate_key_common(id, NULL, 0, 0, ringid);
94801 +@@ -1071,7 +1071,7 @@ long keyctl_instantiate_key_iov(key_seri
94802 + if (ret == 0)
94803 + goto no_payload_free;
94804 +
94805 +- ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid);
94806 ++ ret = keyctl_instantiate_key_common(id, (const struct iovec __force_user *)iov, ioc, ret, ringid);
94807 +
94808 + if (iov != iovstack)
94809 + kfree(iov);
94810 +diff -urNp linux-3.0.8/security/keys/keyring.c linux-3.0.8/security/keys/keyring.c
94811 +--- linux-3.0.8/security/keys/keyring.c 2011-07-21 22:17:23.000000000 -0400
94812 ++++ linux-3.0.8/security/keys/keyring.c 2011-08-23 21:47:56.000000000 -0400
94813 +@@ -215,15 +215,15 @@ static long keyring_read(const struct ke
94814 ret = -EFAULT;
94815
94816 for (loop = 0; loop < klist->nkeys; loop++) {
94817 @@ -79941,9 +76590,9 @@ diff -urNp linux-2.6.32.48/security/keys/keyring.c linux-2.6.32.48/security/keys
94818 goto error;
94819
94820 buflen -= tmp;
94821 -diff -urNp linux-2.6.32.48/security/min_addr.c linux-2.6.32.48/security/min_addr.c
94822 ---- linux-2.6.32.48/security/min_addr.c 2011-11-12 12:44:30.000000000 -0500
94823 -+++ linux-2.6.32.48/security/min_addr.c 2011-11-12 12:46:53.000000000 -0500
94824 +diff -urNp linux-3.0.8/security/min_addr.c linux-3.0.8/security/min_addr.c
94825 +--- linux-3.0.8/security/min_addr.c 2011-07-21 22:17:23.000000000 -0400
94826 ++++ linux-3.0.8/security/min_addr.c 2011-08-23 21:48:14.000000000 -0400
94827 @@ -14,6 +14,7 @@ unsigned long dac_mmap_min_addr = CONFIG
94828 */
94829 static void update_mmap_min_addr(void)
94830 @@ -79960,52 +76609,42 @@ diff -urNp linux-2.6.32.48/security/min_addr.c linux-2.6.32.48/security/min_addr
94831 }
94832
94833 /*
94834 -diff -urNp linux-2.6.32.48/security/root_plug.c linux-2.6.32.48/security/root_plug.c
94835 ---- linux-2.6.32.48/security/root_plug.c 2009-12-02 22:51:21.000000000 -0500
94836 -+++ linux-2.6.32.48/security/root_plug.c 2011-11-12 12:46:53.000000000 -0500
94837 -@@ -70,7 +70,7 @@ static int rootplug_bprm_check_security
94838 - return 0;
94839 - }
94840 -
94841 --static struct security_operations rootplug_security_ops = {
94842 -+static struct security_operations rootplug_security_ops __read_only = {
94843 - .bprm_check_security = rootplug_bprm_check_security,
94844 +diff -urNp linux-3.0.8/security/security.c linux-3.0.8/security/security.c
94845 +--- linux-3.0.8/security/security.c 2011-07-21 22:17:23.000000000 -0400
94846 ++++ linux-3.0.8/security/security.c 2011-08-23 21:48:14.000000000 -0400
94847 +@@ -25,8 +25,8 @@ static __initdata char chosen_lsm[SECURI
94848 + /* things that live in capability.c */
94849 + extern void __init security_fixup_ops(struct security_operations *ops);
94850 +
94851 +-static struct security_operations *security_ops;
94852 +-static struct security_operations default_security_ops = {
94853 ++static struct security_operations *security_ops __read_only;
94854 ++static struct security_operations default_security_ops __read_only = {
94855 + .name = "default",
94856 };
94857
94858 -diff -urNp linux-2.6.32.48/security/security.c linux-2.6.32.48/security/security.c
94859 ---- linux-2.6.32.48/security/security.c 2009-12-02 22:51:21.000000000 -0500
94860 -+++ linux-2.6.32.48/security/security.c 2011-11-12 12:46:53.000000000 -0500
94861 -@@ -24,7 +24,7 @@ static __initdata char chosen_lsm[SECURI
94862 - extern struct security_operations default_security_ops;
94863 - extern void security_fixup_ops(struct security_operations *ops);
94864 -
94865 --struct security_operations *security_ops; /* Initialized to NULL */
94866 -+struct security_operations *security_ops __read_only; /* Initialized to NULL */
94867 +@@ -67,7 +67,9 @@ int __init security_init(void)
94868
94869 - static inline int verify(struct security_operations *ops)
94870 + void reset_security_ops(void)
94871 {
94872 -@@ -106,7 +106,7 @@ int __init security_module_enable(struct
94873 - * If there is already a security module registered with the kernel,
94874 - * an error will be returned. Otherwise %0 is returned on success.
94875 - */
94876 --int register_security(struct security_operations *ops)
94877 -+int __init register_security(struct security_operations *ops)
94878 - {
94879 - if (verify(ops)) {
94880 - printk(KERN_DEBUG "%s could not verify "
94881 -diff -urNp linux-2.6.32.48/security/selinux/hooks.c linux-2.6.32.48/security/selinux/hooks.c
94882 ---- linux-2.6.32.48/security/selinux/hooks.c 2011-11-12 12:44:30.000000000 -0500
94883 -+++ linux-2.6.32.48/security/selinux/hooks.c 2011-11-12 12:46:53.000000000 -0500
94884 -@@ -131,7 +131,7 @@ int selinux_enabled = 1;
94885 - * Minimal support for a secondary security module,
94886 - * just to allow the use of the capability module.
94887 - */
94888 --static struct security_operations *secondary_ops;
94889 -+static struct security_operations *secondary_ops __read_only;
94890 ++ pax_open_kernel();
94891 + security_ops = &default_security_ops;
94892 ++ pax_close_kernel();
94893 + }
94894 +
94895 + /* Save user chosen LSM */
94896 +diff -urNp linux-3.0.8/security/selinux/hooks.c linux-3.0.8/security/selinux/hooks.c
94897 +--- linux-3.0.8/security/selinux/hooks.c 2011-07-21 22:17:23.000000000 -0400
94898 ++++ linux-3.0.8/security/selinux/hooks.c 2011-08-23 21:48:14.000000000 -0400
94899 +@@ -93,7 +93,6 @@
94900 + #define NUM_SEL_MNT_OPTS 5
94901
94902 - /* Lists of inode and superblock security structures initialized
94903 - before the policy was loaded. */
94904 -@@ -5457,7 +5457,7 @@ static int selinux_key_getsecurity(struc
94905 + extern int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm);
94906 +-extern struct security_operations *security_ops;
94907 +
94908 + /* SECMARK reference count */
94909 + atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
94910 +@@ -5454,7 +5453,7 @@ static int selinux_key_getsecurity(struc
94911
94912 #endif
94913
94914 @@ -80014,19 +76653,9 @@ diff -urNp linux-2.6.32.48/security/selinux/hooks.c linux-2.6.32.48/security/sel
94915 .name = "selinux",
94916
94917 .ptrace_access_check = selinux_ptrace_access_check,
94918 -@@ -5841,7 +5841,9 @@ int selinux_disable(void)
94919 - avc_disable();
94920 -
94921 - /* Reset security_ops to the secondary module, dummy or capability. */
94922 -+ pax_open_kernel();
94923 - security_ops = secondary_ops;
94924 -+ pax_close_kernel();
94925 -
94926 - /* Unregister netfilter hooks. */
94927 - selinux_nf_ip_exit();
94928 -diff -urNp linux-2.6.32.48/security/selinux/include/xfrm.h linux-2.6.32.48/security/selinux/include/xfrm.h
94929 ---- linux-2.6.32.48/security/selinux/include/xfrm.h 2009-12-02 22:51:21.000000000 -0500
94930 -+++ linux-2.6.32.48/security/selinux/include/xfrm.h 2011-11-12 12:46:53.000000000 -0500
94931 +diff -urNp linux-3.0.8/security/selinux/include/xfrm.h linux-3.0.8/security/selinux/include/xfrm.h
94932 +--- linux-3.0.8/security/selinux/include/xfrm.h 2011-07-21 22:17:23.000000000 -0400
94933 ++++ linux-3.0.8/security/selinux/include/xfrm.h 2011-08-23 21:47:56.000000000 -0400
94934 @@ -48,7 +48,7 @@ int selinux_xfrm_decode_session(struct s
94935
94936 static inline void selinux_xfrm_notify_policyload(void)
94937 @@ -80036,10 +76665,10 @@ diff -urNp linux-2.6.32.48/security/selinux/include/xfrm.h linux-2.6.32.48/secur
94938 }
94939 #else
94940 static inline int selinux_xfrm_enabled(void)
94941 -diff -urNp linux-2.6.32.48/security/selinux/ss/services.c linux-2.6.32.48/security/selinux/ss/services.c
94942 ---- linux-2.6.32.48/security/selinux/ss/services.c 2009-12-02 22:51:21.000000000 -0500
94943 -+++ linux-2.6.32.48/security/selinux/ss/services.c 2011-11-12 12:46:53.000000000 -0500
94944 -@@ -1715,6 +1715,8 @@ int security_load_policy(void *data, siz
94945 +diff -urNp linux-3.0.8/security/selinux/ss/services.c linux-3.0.8/security/selinux/ss/services.c
94946 +--- linux-3.0.8/security/selinux/ss/services.c 2011-07-21 22:17:23.000000000 -0400
94947 ++++ linux-3.0.8/security/selinux/ss/services.c 2011-08-23 21:48:14.000000000 -0400
94948 +@@ -1814,6 +1814,8 @@ int security_load_policy(void *data, siz
94949 int rc = 0;
94950 struct policy_file file = { data, len }, *fp = &file;
94951
94952 @@ -80047,11 +76676,11 @@ diff -urNp linux-2.6.32.48/security/selinux/ss/services.c linux-2.6.32.48/securi
94953 +
94954 if (!ss_initialized) {
94955 avtab_cache_init();
94956 - if (policydb_read(&policydb, fp)) {
94957 -diff -urNp linux-2.6.32.48/security/smack/smack_lsm.c linux-2.6.32.48/security/smack/smack_lsm.c
94958 ---- linux-2.6.32.48/security/smack/smack_lsm.c 2009-12-02 22:51:21.000000000 -0500
94959 -+++ linux-2.6.32.48/security/smack/smack_lsm.c 2011-11-12 12:46:53.000000000 -0500
94960 -@@ -3073,7 +3073,7 @@ static int smack_inode_getsecctx(struct
94961 + rc = policydb_read(&policydb, fp);
94962 +diff -urNp linux-3.0.8/security/smack/smack_lsm.c linux-3.0.8/security/smack/smack_lsm.c
94963 +--- linux-3.0.8/security/smack/smack_lsm.c 2011-07-21 22:17:23.000000000 -0400
94964 ++++ linux-3.0.8/security/smack/smack_lsm.c 2011-08-23 21:47:56.000000000 -0400
94965 +@@ -3392,7 +3392,7 @@ static int smack_inode_getsecctx(struct
94966 return 0;
94967 }
94968
94969 @@ -80060,10 +76689,10 @@ diff -urNp linux-2.6.32.48/security/smack/smack_lsm.c linux-2.6.32.48/security/s
94970 .name = "smack",
94971
94972 .ptrace_access_check = smack_ptrace_access_check,
94973 -diff -urNp linux-2.6.32.48/security/tomoyo/tomoyo.c linux-2.6.32.48/security/tomoyo/tomoyo.c
94974 ---- linux-2.6.32.48/security/tomoyo/tomoyo.c 2009-12-02 22:51:21.000000000 -0500
94975 -+++ linux-2.6.32.48/security/tomoyo/tomoyo.c 2011-11-12 12:46:53.000000000 -0500
94976 -@@ -275,7 +275,7 @@ static int tomoyo_dentry_open(struct fil
94977 +diff -urNp linux-3.0.8/security/tomoyo/tomoyo.c linux-3.0.8/security/tomoyo/tomoyo.c
94978 +--- linux-3.0.8/security/tomoyo/tomoyo.c 2011-07-21 22:17:23.000000000 -0400
94979 ++++ linux-3.0.8/security/tomoyo/tomoyo.c 2011-08-23 21:47:56.000000000 -0400
94980 +@@ -240,7 +240,7 @@ static int tomoyo_sb_pivotroot(struct pa
94981 * tomoyo_security_ops is a "struct security_operations" which is used for
94982 * registering TOMOYO.
94983 */
94984 @@ -80072,10 +76701,10 @@ diff -urNp linux-2.6.32.48/security/tomoyo/tomoyo.c linux-2.6.32.48/security/tom
94985 .name = "tomoyo",
94986 .cred_alloc_blank = tomoyo_cred_alloc_blank,
94987 .cred_prepare = tomoyo_cred_prepare,
94988 -diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.c linux-2.6.32.48/sound/aoa/codecs/onyx.c
94989 ---- linux-2.6.32.48/sound/aoa/codecs/onyx.c 2009-12-02 22:51:21.000000000 -0500
94990 -+++ linux-2.6.32.48/sound/aoa/codecs/onyx.c 2011-11-12 12:46:53.000000000 -0500
94991 -@@ -53,7 +53,7 @@ struct onyx {
94992 +diff -urNp linux-3.0.8/sound/aoa/codecs/onyx.c linux-3.0.8/sound/aoa/codecs/onyx.c
94993 +--- linux-3.0.8/sound/aoa/codecs/onyx.c 2011-07-21 22:17:23.000000000 -0400
94994 ++++ linux-3.0.8/sound/aoa/codecs/onyx.c 2011-08-23 21:47:56.000000000 -0400
94995 +@@ -54,7 +54,7 @@ struct onyx {
94996 spdif_locked:1,
94997 analog_locked:1,
94998 original_mute:2;
94999 @@ -80084,7 +76713,7 @@ diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.c linux-2.6.32.48/sound/aoa/cod
95000 struct codec_info *codec_info;
95001
95002 /* mutex serializes concurrent access to the device
95003 -@@ -752,7 +752,7 @@ static int onyx_open(struct codec_info_i
95004 +@@ -753,7 +753,7 @@ static int onyx_open(struct codec_info_i
95005 struct onyx *onyx = cii->codec_data;
95006
95007 mutex_lock(&onyx->mutex);
95008 @@ -80093,7 +76722,7 @@ diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.c linux-2.6.32.48/sound/aoa/cod
95009 mutex_unlock(&onyx->mutex);
95010
95011 return 0;
95012 -@@ -764,8 +764,7 @@ static int onyx_close(struct codec_info_
95013 +@@ -765,8 +765,7 @@ static int onyx_close(struct codec_info_
95014 struct onyx *onyx = cii->codec_data;
95015
95016 mutex_lock(&onyx->mutex);
95017 @@ -80103,9 +76732,9 @@ diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.c linux-2.6.32.48/sound/aoa/cod
95018 onyx->spdif_locked = onyx->analog_locked = 0;
95019 mutex_unlock(&onyx->mutex);
95020
95021 -diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.h linux-2.6.32.48/sound/aoa/codecs/onyx.h
95022 ---- linux-2.6.32.48/sound/aoa/codecs/onyx.h 2009-12-02 22:51:21.000000000 -0500
95023 -+++ linux-2.6.32.48/sound/aoa/codecs/onyx.h 2011-11-12 12:46:53.000000000 -0500
95024 +diff -urNp linux-3.0.8/sound/aoa/codecs/onyx.h linux-3.0.8/sound/aoa/codecs/onyx.h
95025 +--- linux-3.0.8/sound/aoa/codecs/onyx.h 2011-07-21 22:17:23.000000000 -0400
95026 ++++ linux-3.0.8/sound/aoa/codecs/onyx.h 2011-08-23 21:47:56.000000000 -0400
95027 @@ -11,6 +11,7 @@
95028 #include <linux/i2c.h>
95029 #include <asm/pmac_low_i2c.h>
95030 @@ -80114,10 +76743,45 @@ diff -urNp linux-2.6.32.48/sound/aoa/codecs/onyx.h linux-2.6.32.48/sound/aoa/cod
95031
95032 /* PCM3052 register definitions */
95033
95034 -diff -urNp linux-2.6.32.48/sound/core/oss/pcm_oss.c linux-2.6.32.48/sound/core/oss/pcm_oss.c
95035 ---- linux-2.6.32.48/sound/core/oss/pcm_oss.c 2009-12-02 22:51:21.000000000 -0500
95036 -+++ linux-2.6.32.48/sound/core/oss/pcm_oss.c 2011-11-12 12:46:53.000000000 -0500
95037 -@@ -1395,7 +1395,7 @@ static ssize_t snd_pcm_oss_write1(struct
95038 +diff -urNp linux-3.0.8/sound/core/oss/pcm_oss.c linux-3.0.8/sound/core/oss/pcm_oss.c
95039 +--- linux-3.0.8/sound/core/oss/pcm_oss.c 2011-07-21 22:17:23.000000000 -0400
95040 ++++ linux-3.0.8/sound/core/oss/pcm_oss.c 2011-10-06 04:17:55.000000000 -0400
95041 +@@ -1189,10 +1189,10 @@ snd_pcm_sframes_t snd_pcm_oss_write3(str
95042 + if (in_kernel) {
95043 + mm_segment_t fs;
95044 + fs = snd_enter_user();
95045 +- ret = snd_pcm_lib_write(substream, (void __force __user *)ptr, frames);
95046 ++ ret = snd_pcm_lib_write(substream, (void __force_user *)ptr, frames);
95047 + snd_leave_user(fs);
95048 + } else {
95049 +- ret = snd_pcm_lib_write(substream, (void __force __user *)ptr, frames);
95050 ++ ret = snd_pcm_lib_write(substream, (void __force_user *)ptr, frames);
95051 + }
95052 + if (ret != -EPIPE && ret != -ESTRPIPE)
95053 + break;
95054 +@@ -1234,10 +1234,10 @@ snd_pcm_sframes_t snd_pcm_oss_read3(stru
95055 + if (in_kernel) {
95056 + mm_segment_t fs;
95057 + fs = snd_enter_user();
95058 +- ret = snd_pcm_lib_read(substream, (void __force __user *)ptr, frames);
95059 ++ ret = snd_pcm_lib_read(substream, (void __force_user *)ptr, frames);
95060 + snd_leave_user(fs);
95061 + } else {
95062 +- ret = snd_pcm_lib_read(substream, (void __force __user *)ptr, frames);
95063 ++ ret = snd_pcm_lib_read(substream, (void __force_user *)ptr, frames);
95064 + }
95065 + if (ret == -EPIPE) {
95066 + if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) {
95067 +@@ -1337,7 +1337,7 @@ static ssize_t snd_pcm_oss_write2(struct
95068 + struct snd_pcm_plugin_channel *channels;
95069 + size_t oss_frame_bytes = (runtime->oss.plugin_first->src_width * runtime->oss.plugin_first->src_format.channels) / 8;
95070 + if (!in_kernel) {
95071 +- if (copy_from_user(runtime->oss.buffer, (const char __force __user *)buf, bytes))
95072 ++ if (copy_from_user(runtime->oss.buffer, (const char __force_user *)buf, bytes))
95073 + return -EFAULT;
95074 + buf = runtime->oss.buffer;
95075 + }
95076 +@@ -1407,7 +1407,7 @@ static ssize_t snd_pcm_oss_write1(struct
95077 }
95078 } else {
95079 tmp = snd_pcm_oss_write2(substream,
95080 @@ -80126,7 +76790,16 @@ diff -urNp linux-2.6.32.48/sound/core/oss/pcm_oss.c linux-2.6.32.48/sound/core/o
95081 runtime->oss.period_bytes, 0);
95082 if (tmp <= 0)
95083 goto err;
95084 -@@ -1483,7 +1483,7 @@ static ssize_t snd_pcm_oss_read1(struct
95085 +@@ -1433,7 +1433,7 @@ static ssize_t snd_pcm_oss_read2(struct
95086 + struct snd_pcm_runtime *runtime = substream->runtime;
95087 + snd_pcm_sframes_t frames, frames1;
95088 + #ifdef CONFIG_SND_PCM_OSS_PLUGINS
95089 +- char __user *final_dst = (char __force __user *)buf;
95090 ++ char __user *final_dst = (char __force_user *)buf;
95091 + if (runtime->oss.plugin_first) {
95092 + struct snd_pcm_plugin_channel *channels;
95093 + size_t oss_frame_bytes = (runtime->oss.plugin_last->dst_width * runtime->oss.plugin_last->dst_format.channels) / 8;
95094 +@@ -1495,7 +1495,7 @@ static ssize_t snd_pcm_oss_read1(struct
95095 xfer += tmp;
95096 runtime->oss.buffer_used -= tmp;
95097 } else {
95098 @@ -80135,10 +76808,19 @@ diff -urNp linux-2.6.32.48/sound/core/oss/pcm_oss.c linux-2.6.32.48/sound/core/o
95099 runtime->oss.period_bytes, 0);
95100 if (tmp <= 0)
95101 goto err;
95102 -diff -urNp linux-2.6.32.48/sound/core/pcm_compat.c linux-2.6.32.48/sound/core/pcm_compat.c
95103 ---- linux-2.6.32.48/sound/core/pcm_compat.c 2011-11-12 12:44:30.000000000 -0500
95104 -+++ linux-2.6.32.48/sound/core/pcm_compat.c 2011-11-12 12:46:53.000000000 -0500
95105 -@@ -30,7 +30,7 @@ static int snd_pcm_ioctl_delay_compat(st
95106 +@@ -1663,7 +1663,7 @@ static int snd_pcm_oss_sync(struct snd_p
95107 + size1);
95108 + size1 /= runtime->channels; /* frames */
95109 + fs = snd_enter_user();
95110 +- snd_pcm_lib_write(substream, (void __force __user *)runtime->oss.buffer, size1);
95111 ++ snd_pcm_lib_write(substream, (void __force_user *)runtime->oss.buffer, size1);
95112 + snd_leave_user(fs);
95113 + }
95114 + } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) {
95115 +diff -urNp linux-3.0.8/sound/core/pcm_compat.c linux-3.0.8/sound/core/pcm_compat.c
95116 +--- linux-3.0.8/sound/core/pcm_compat.c 2011-10-24 08:05:21.000000000 -0400
95117 ++++ linux-3.0.8/sound/core/pcm_compat.c 2011-10-06 04:17:55.000000000 -0400
95118 +@@ -31,7 +31,7 @@ static int snd_pcm_ioctl_delay_compat(st
95119 int err;
95120
95121 fs = snd_enter_user();
95122 @@ -80147,10 +76829,10 @@ diff -urNp linux-2.6.32.48/sound/core/pcm_compat.c linux-2.6.32.48/sound/core/pc
95123 snd_leave_user(fs);
95124 if (err < 0)
95125 return err;
95126 -diff -urNp linux-2.6.32.48/sound/core/pcm_native.c linux-2.6.32.48/sound/core/pcm_native.c
95127 ---- linux-2.6.32.48/sound/core/pcm_native.c 2011-11-12 12:44:30.000000000 -0500
95128 -+++ linux-2.6.32.48/sound/core/pcm_native.c 2011-11-12 12:46:53.000000000 -0500
95129 -@@ -2747,11 +2747,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_
95130 +diff -urNp linux-3.0.8/sound/core/pcm_native.c linux-3.0.8/sound/core/pcm_native.c
95131 +--- linux-3.0.8/sound/core/pcm_native.c 2011-07-21 22:17:23.000000000 -0400
95132 ++++ linux-3.0.8/sound/core/pcm_native.c 2011-10-06 04:17:55.000000000 -0400
95133 +@@ -2770,11 +2770,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_
95134 switch (substream->stream) {
95135 case SNDRV_PCM_STREAM_PLAYBACK:
95136 result = snd_pcm_playback_ioctl1(NULL, substream, cmd,
95137 @@ -80164,9 +76846,9 @@ diff -urNp linux-2.6.32.48/sound/core/pcm_native.c linux-2.6.32.48/sound/core/pc
95138 break;
95139 default:
95140 result = -EINVAL;
95141 -diff -urNp linux-2.6.32.48/sound/core/seq/seq_device.c linux-2.6.32.48/sound/core/seq/seq_device.c
95142 ---- linux-2.6.32.48/sound/core/seq/seq_device.c 2009-12-02 22:51:21.000000000 -0500
95143 -+++ linux-2.6.32.48/sound/core/seq/seq_device.c 2011-11-12 12:46:53.000000000 -0500
95144 +diff -urNp linux-3.0.8/sound/core/seq/seq_device.c linux-3.0.8/sound/core/seq/seq_device.c
95145 +--- linux-3.0.8/sound/core/seq/seq_device.c 2011-07-21 22:17:23.000000000 -0400
95146 ++++ linux-3.0.8/sound/core/seq/seq_device.c 2011-08-23 21:47:56.000000000 -0400
95147 @@ -63,7 +63,7 @@ struct ops_list {
95148 int argsize; /* argument size */
95149
95150 @@ -80203,10 +76885,10 @@ diff -urNp linux-2.6.32.48/sound/core/seq/seq_device.c linux-2.6.32.48/sound/cor
95151 dev->status = SNDRV_SEQ_DEVICE_FREE;
95152 dev->driver_data = NULL;
95153 ops->num_init_devices--;
95154 -diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/mts64.c
95155 ---- linux-2.6.32.48/sound/drivers/mts64.c 2009-12-02 22:51:21.000000000 -0500
95156 -+++ linux-2.6.32.48/sound/drivers/mts64.c 2011-11-12 12:46:53.000000000 -0500
95157 -@@ -27,6 +27,7 @@
95158 +diff -urNp linux-3.0.8/sound/drivers/mts64.c linux-3.0.8/sound/drivers/mts64.c
95159 +--- linux-3.0.8/sound/drivers/mts64.c 2011-07-21 22:17:23.000000000 -0400
95160 ++++ linux-3.0.8/sound/drivers/mts64.c 2011-08-23 21:47:56.000000000 -0400
95161 +@@ -28,6 +28,7 @@
95162 #include <sound/initval.h>
95163 #include <sound/rawmidi.h>
95164 #include <sound/control.h>
95165 @@ -80214,7 +76896,7 @@ diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/m
95166
95167 #define CARD_NAME "Miditerminal 4140"
95168 #define DRIVER_NAME "MTS64"
95169 -@@ -65,7 +66,7 @@ struct mts64 {
95170 +@@ -66,7 +67,7 @@ struct mts64 {
95171 struct pardevice *pardev;
95172 int pardev_claimed;
95173
95174 @@ -80223,7 +76905,7 @@ diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/m
95175 int current_midi_output_port;
95176 int current_midi_input_port;
95177 u8 mode[MTS64_NUM_INPUT_PORTS];
95178 -@@ -695,7 +696,7 @@ static int snd_mts64_rawmidi_open(struct
95179 +@@ -696,7 +697,7 @@ static int snd_mts64_rawmidi_open(struct
95180 {
95181 struct mts64 *mts = substream->rmidi->private_data;
95182
95183 @@ -80232,7 +76914,7 @@ diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/m
95184 /* We don't need a spinlock here, because this is just called
95185 if the device has not been opened before.
95186 So there aren't any IRQs from the device */
95187 -@@ -703,7 +704,7 @@ static int snd_mts64_rawmidi_open(struct
95188 +@@ -704,7 +705,7 @@ static int snd_mts64_rawmidi_open(struct
95189
95190 msleep(50);
95191 }
95192 @@ -80241,7 +76923,7 @@ diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/m
95193
95194 return 0;
95195 }
95196 -@@ -713,8 +714,7 @@ static int snd_mts64_rawmidi_close(struc
95197 +@@ -714,8 +715,7 @@ static int snd_mts64_rawmidi_close(struc
95198 struct mts64 *mts = substream->rmidi->private_data;
95199 unsigned long flags;
95200
95201 @@ -80251,7 +76933,7 @@ diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/m
95202 /* We need the spinlock_irqsave here because we can still
95203 have IRQs at this point */
95204 spin_lock_irqsave(&mts->lock, flags);
95205 -@@ -723,8 +723,8 @@ static int snd_mts64_rawmidi_close(struc
95206 +@@ -724,8 +724,8 @@ static int snd_mts64_rawmidi_close(struc
95207
95208 msleep(500);
95209
95210 @@ -80262,10 +76944,10 @@ diff -urNp linux-2.6.32.48/sound/drivers/mts64.c linux-2.6.32.48/sound/drivers/m
95211
95212 return 0;
95213 }
95214 -diff -urNp linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c
95215 ---- linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c 2009-12-02 22:51:21.000000000 -0500
95216 -+++ linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c 2011-11-12 12:46:53.000000000 -0500
95217 -@@ -27,7 +27,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@
95218 +diff -urNp linux-3.0.8/sound/drivers/opl4/opl4_lib.c linux-3.0.8/sound/drivers/opl4/opl4_lib.c
95219 +--- linux-3.0.8/sound/drivers/opl4/opl4_lib.c 2011-07-21 22:17:23.000000000 -0400
95220 ++++ linux-3.0.8/sound/drivers/opl4/opl4_lib.c 2011-08-23 21:47:56.000000000 -0400
95221 +@@ -28,7 +28,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@
95222 MODULE_DESCRIPTION("OPL4 driver");
95223 MODULE_LICENSE("GPL");
95224
95225 @@ -80274,10 +76956,10 @@ diff -urNp linux-2.6.32.48/sound/drivers/opl4/opl4_lib.c linux-2.6.32.48/sound/d
95226 {
95227 int timeout = 10;
95228 while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0)
95229 -diff -urNp linux-2.6.32.48/sound/drivers/portman2x4.c linux-2.6.32.48/sound/drivers/portman2x4.c
95230 ---- linux-2.6.32.48/sound/drivers/portman2x4.c 2009-12-02 22:51:21.000000000 -0500
95231 -+++ linux-2.6.32.48/sound/drivers/portman2x4.c 2011-11-12 12:46:53.000000000 -0500
95232 -@@ -46,6 +46,7 @@
95233 +diff -urNp linux-3.0.8/sound/drivers/portman2x4.c linux-3.0.8/sound/drivers/portman2x4.c
95234 +--- linux-3.0.8/sound/drivers/portman2x4.c 2011-07-21 22:17:23.000000000 -0400
95235 ++++ linux-3.0.8/sound/drivers/portman2x4.c 2011-08-23 21:47:56.000000000 -0400
95236 +@@ -47,6 +47,7 @@
95237 #include <sound/initval.h>
95238 #include <sound/rawmidi.h>
95239 #include <sound/control.h>
95240 @@ -80285,7 +76967,7 @@ diff -urNp linux-2.6.32.48/sound/drivers/portman2x4.c linux-2.6.32.48/sound/driv
95241
95242 #define CARD_NAME "Portman 2x4"
95243 #define DRIVER_NAME "portman"
95244 -@@ -83,7 +84,7 @@ struct portman {
95245 +@@ -84,7 +85,7 @@ struct portman {
95246 struct pardevice *pardev;
95247 int pardev_claimed;
95248
95249 @@ -80294,10 +76976,86 @@ diff -urNp linux-2.6.32.48/sound/drivers/portman2x4.c linux-2.6.32.48/sound/driv
95250 int mode[PORTMAN_NUM_INPUT_PORTS];
95251 struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS];
95252 };
95253 -diff -urNp linux-2.6.32.48/sound/isa/cmi8330.c linux-2.6.32.48/sound/isa/cmi8330.c
95254 ---- linux-2.6.32.48/sound/isa/cmi8330.c 2009-12-02 22:51:21.000000000 -0500
95255 -+++ linux-2.6.32.48/sound/isa/cmi8330.c 2011-11-12 12:46:53.000000000 -0500
95256 -@@ -173,7 +173,7 @@ struct snd_cmi8330 {
95257 +diff -urNp linux-3.0.8/sound/firewire/amdtp.c linux-3.0.8/sound/firewire/amdtp.c
95258 +--- linux-3.0.8/sound/firewire/amdtp.c 2011-07-21 22:17:23.000000000 -0400
95259 ++++ linux-3.0.8/sound/firewire/amdtp.c 2011-08-23 21:47:56.000000000 -0400
95260 +@@ -371,7 +371,7 @@ static void queue_out_packet(struct amdt
95261 + ptr = s->pcm_buffer_pointer + data_blocks;
95262 + if (ptr >= pcm->runtime->buffer_size)
95263 + ptr -= pcm->runtime->buffer_size;
95264 +- ACCESS_ONCE(s->pcm_buffer_pointer) = ptr;
95265 ++ ACCESS_ONCE_RW(s->pcm_buffer_pointer) = ptr;
95266 +
95267 + s->pcm_period_pointer += data_blocks;
95268 + if (s->pcm_period_pointer >= pcm->runtime->period_size) {
95269 +@@ -511,7 +511,7 @@ EXPORT_SYMBOL(amdtp_out_stream_start);
95270 + */
95271 + void amdtp_out_stream_update(struct amdtp_out_stream *s)
95272 + {
95273 +- ACCESS_ONCE(s->source_node_id_field) =
95274 ++ ACCESS_ONCE_RW(s->source_node_id_field) =
95275 + (fw_parent_device(s->unit)->card->node_id & 0x3f) << 24;
95276 + }
95277 + EXPORT_SYMBOL(amdtp_out_stream_update);
95278 +diff -urNp linux-3.0.8/sound/firewire/amdtp.h linux-3.0.8/sound/firewire/amdtp.h
95279 +--- linux-3.0.8/sound/firewire/amdtp.h 2011-07-21 22:17:23.000000000 -0400
95280 ++++ linux-3.0.8/sound/firewire/amdtp.h 2011-08-23 21:47:56.000000000 -0400
95281 +@@ -146,7 +146,7 @@ static inline void amdtp_out_stream_pcm_
95282 + static inline void amdtp_out_stream_pcm_trigger(struct amdtp_out_stream *s,
95283 + struct snd_pcm_substream *pcm)
95284 + {
95285 +- ACCESS_ONCE(s->pcm) = pcm;
95286 ++ ACCESS_ONCE_RW(s->pcm) = pcm;
95287 + }
95288 +
95289 + /**
95290 +diff -urNp linux-3.0.8/sound/firewire/isight.c linux-3.0.8/sound/firewire/isight.c
95291 +--- linux-3.0.8/sound/firewire/isight.c 2011-07-21 22:17:23.000000000 -0400
95292 ++++ linux-3.0.8/sound/firewire/isight.c 2011-08-23 21:47:56.000000000 -0400
95293 +@@ -97,7 +97,7 @@ static void isight_update_pointers(struc
95294 + ptr += count;
95295 + if (ptr >= runtime->buffer_size)
95296 + ptr -= runtime->buffer_size;
95297 +- ACCESS_ONCE(isight->buffer_pointer) = ptr;
95298 ++ ACCESS_ONCE_RW(isight->buffer_pointer) = ptr;
95299 +
95300 + isight->period_counter += count;
95301 + if (isight->period_counter >= runtime->period_size) {
95302 +@@ -308,7 +308,7 @@ static int isight_hw_params(struct snd_p
95303 + if (err < 0)
95304 + return err;
95305 +
95306 +- ACCESS_ONCE(isight->pcm_active) = true;
95307 ++ ACCESS_ONCE_RW(isight->pcm_active) = true;
95308 +
95309 + return 0;
95310 + }
95311 +@@ -341,7 +341,7 @@ static int isight_hw_free(struct snd_pcm
95312 + {
95313 + struct isight *isight = substream->private_data;
95314 +
95315 +- ACCESS_ONCE(isight->pcm_active) = false;
95316 ++ ACCESS_ONCE_RW(isight->pcm_active) = false;
95317 +
95318 + mutex_lock(&isight->mutex);
95319 + isight_stop_streaming(isight);
95320 +@@ -434,10 +434,10 @@ static int isight_trigger(struct snd_pcm
95321 +
95322 + switch (cmd) {
95323 + case SNDRV_PCM_TRIGGER_START:
95324 +- ACCESS_ONCE(isight->pcm_running) = true;
95325 ++ ACCESS_ONCE_RW(isight->pcm_running) = true;
95326 + break;
95327 + case SNDRV_PCM_TRIGGER_STOP:
95328 +- ACCESS_ONCE(isight->pcm_running) = false;
95329 ++ ACCESS_ONCE_RW(isight->pcm_running) = false;
95330 + break;
95331 + default:
95332 + return -EINVAL;
95333 +diff -urNp linux-3.0.8/sound/isa/cmi8330.c linux-3.0.8/sound/isa/cmi8330.c
95334 +--- linux-3.0.8/sound/isa/cmi8330.c 2011-07-21 22:17:23.000000000 -0400
95335 ++++ linux-3.0.8/sound/isa/cmi8330.c 2011-08-23 21:47:56.000000000 -0400
95336 +@@ -172,7 +172,7 @@ struct snd_cmi8330 {
95337
95338 struct snd_pcm *pcm;
95339 struct snd_cmi8330_stream {
95340 @@ -80306,9 +77064,9 @@ diff -urNp linux-2.6.32.48/sound/isa/cmi8330.c linux-2.6.32.48/sound/isa/cmi8330
95341 snd_pcm_open_callback_t open;
95342 void *private_data; /* sb or wss */
95343 } streams[2];
95344 -diff -urNp linux-2.6.32.48/sound/oss/sb_audio.c linux-2.6.32.48/sound/oss/sb_audio.c
95345 ---- linux-2.6.32.48/sound/oss/sb_audio.c 2009-12-02 22:51:21.000000000 -0500
95346 -+++ linux-2.6.32.48/sound/oss/sb_audio.c 2011-11-12 12:46:53.000000000 -0500
95347 +diff -urNp linux-3.0.8/sound/oss/sb_audio.c linux-3.0.8/sound/oss/sb_audio.c
95348 +--- linux-3.0.8/sound/oss/sb_audio.c 2011-07-21 22:17:23.000000000 -0400
95349 ++++ linux-3.0.8/sound/oss/sb_audio.c 2011-08-23 21:47:56.000000000 -0400
95350 @@ -901,7 +901,7 @@ sb16_copy_from_user(int dev,
95351 buf16 = (signed short *)(localbuf + localoffs);
95352 while (c)
95353 @@ -80318,10 +77076,10 @@ diff -urNp linux-2.6.32.48/sound/oss/sb_audio.c linux-2.6.32.48/sound/oss/sb_aud
95354 if (copy_from_user(lbuf8,
95355 userbuf+useroffs + p,
95356 locallen))
95357 -diff -urNp linux-2.6.32.48/sound/oss/swarm_cs4297a.c linux-2.6.32.48/sound/oss/swarm_cs4297a.c
95358 ---- linux-2.6.32.48/sound/oss/swarm_cs4297a.c 2009-12-02 22:51:21.000000000 -0500
95359 -+++ linux-2.6.32.48/sound/oss/swarm_cs4297a.c 2011-11-12 12:46:53.000000000 -0500
95360 -@@ -2577,7 +2577,6 @@ static int __init cs4297a_init(void)
95361 +diff -urNp linux-3.0.8/sound/oss/swarm_cs4297a.c linux-3.0.8/sound/oss/swarm_cs4297a.c
95362 +--- linux-3.0.8/sound/oss/swarm_cs4297a.c 2011-07-21 22:17:23.000000000 -0400
95363 ++++ linux-3.0.8/sound/oss/swarm_cs4297a.c 2011-08-23 21:47:56.000000000 -0400
95364 +@@ -2606,7 +2606,6 @@ static int __init cs4297a_init(void)
95365 {
95366 struct cs4297a_state *s;
95367 u32 pwr, id;
95368 @@ -80329,7 +77087,7 @@ diff -urNp linux-2.6.32.48/sound/oss/swarm_cs4297a.c linux-2.6.32.48/sound/oss/s
95369 int rval;
95370 #ifndef CONFIG_BCM_CS4297A_CSWARM
95371 u64 cfg;
95372 -@@ -2667,22 +2666,23 @@ static int __init cs4297a_init(void)
95373 +@@ -2696,22 +2695,23 @@ static int __init cs4297a_init(void)
95374 if (!rval) {
95375 char *sb1250_duart_present;
95376
95377 @@ -80355,313 +77113,10 @@ diff -urNp linux-2.6.32.48/sound/oss/swarm_cs4297a.c linux-2.6.32.48/sound/oss/s
95378
95379 list_add(&s->list, &cs4297a_devs);
95380
95381 -diff -urNp linux-2.6.32.48/sound/pci/ac97/ac97_codec.c linux-2.6.32.48/sound/pci/ac97/ac97_codec.c
95382 ---- linux-2.6.32.48/sound/pci/ac97/ac97_codec.c 2009-12-02 22:51:21.000000000 -0500
95383 -+++ linux-2.6.32.48/sound/pci/ac97/ac97_codec.c 2011-11-12 12:46:53.000000000 -0500
95384 -@@ -1952,7 +1952,7 @@ static int snd_ac97_dev_disconnect(struc
95385 - }
95386 -
95387 - /* build_ops to do nothing */
95388 --static struct snd_ac97_build_ops null_build_ops;
95389 -+static const struct snd_ac97_build_ops null_build_ops;
95390 -
95391 - #ifdef CONFIG_SND_AC97_POWER_SAVE
95392 - static void do_update_power(struct work_struct *work)
95393 -diff -urNp linux-2.6.32.48/sound/pci/ac97/ac97_patch.c linux-2.6.32.48/sound/pci/ac97/ac97_patch.c
95394 ---- linux-2.6.32.48/sound/pci/ac97/ac97_patch.c 2011-11-12 12:44:30.000000000 -0500
95395 -+++ linux-2.6.32.48/sound/pci/ac97/ac97_patch.c 2011-11-12 12:46:53.000000000 -0500
95396 -@@ -371,7 +371,7 @@ static int patch_yamaha_ymf743_build_spd
95397 - return 0;
95398 - }
95399 -
95400 --static struct snd_ac97_build_ops patch_yamaha_ymf743_ops = {
95401 -+static const struct snd_ac97_build_ops patch_yamaha_ymf743_ops = {
95402 - .build_spdif = patch_yamaha_ymf743_build_spdif,
95403 - .build_3d = patch_yamaha_ymf7x3_3d,
95404 - };
95405 -@@ -455,7 +455,7 @@ static int patch_yamaha_ymf753_post_spdi
95406 - return 0;
95407 - }
95408 -
95409 --static struct snd_ac97_build_ops patch_yamaha_ymf753_ops = {
95410 -+static const struct snd_ac97_build_ops patch_yamaha_ymf753_ops = {
95411 - .build_3d = patch_yamaha_ymf7x3_3d,
95412 - .build_post_spdif = patch_yamaha_ymf753_post_spdif
95413 - };
95414 -@@ -502,7 +502,7 @@ static int patch_wolfson_wm9703_specific
95415 - return 0;
95416 - }
95417 -
95418 --static struct snd_ac97_build_ops patch_wolfson_wm9703_ops = {
95419 -+static const struct snd_ac97_build_ops patch_wolfson_wm9703_ops = {
95420 - .build_specific = patch_wolfson_wm9703_specific,
95421 - };
95422 -
95423 -@@ -533,7 +533,7 @@ static int patch_wolfson_wm9704_specific
95424 - return 0;
95425 - }
95426 -
95427 --static struct snd_ac97_build_ops patch_wolfson_wm9704_ops = {
95428 -+static const struct snd_ac97_build_ops patch_wolfson_wm9704_ops = {
95429 - .build_specific = patch_wolfson_wm9704_specific,
95430 - };
95431 -
95432 -@@ -555,7 +555,7 @@ static int patch_wolfson_wm9705_specific
95433 - return 0;
95434 - }
95435 -
95436 --static struct snd_ac97_build_ops patch_wolfson_wm9705_ops = {
95437 -+static const struct snd_ac97_build_ops patch_wolfson_wm9705_ops = {
95438 - .build_specific = patch_wolfson_wm9705_specific,
95439 - };
95440 -
95441 -@@ -692,7 +692,7 @@ static int patch_wolfson_wm9711_specific
95442 - return 0;
95443 - }
95444 -
95445 --static struct snd_ac97_build_ops patch_wolfson_wm9711_ops = {
95446 -+static const struct snd_ac97_build_ops patch_wolfson_wm9711_ops = {
95447 - .build_specific = patch_wolfson_wm9711_specific,
95448 - };
95449 -
95450 -@@ -886,7 +886,7 @@ static void patch_wolfson_wm9713_resume
95451 - }
95452 - #endif
95453 -
95454 --static struct snd_ac97_build_ops patch_wolfson_wm9713_ops = {
95455 -+static const struct snd_ac97_build_ops patch_wolfson_wm9713_ops = {
95456 - .build_specific = patch_wolfson_wm9713_specific,
95457 - .build_3d = patch_wolfson_wm9713_3d,
95458 - #ifdef CONFIG_PM
95459 -@@ -991,7 +991,7 @@ static int patch_sigmatel_stac97xx_speci
95460 - return 0;
95461 - }
95462 -
95463 --static struct snd_ac97_build_ops patch_sigmatel_stac9700_ops = {
95464 -+static const struct snd_ac97_build_ops patch_sigmatel_stac9700_ops = {
95465 - .build_3d = patch_sigmatel_stac9700_3d,
95466 - .build_specific = patch_sigmatel_stac97xx_specific
95467 - };
95468 -@@ -1038,7 +1038,7 @@ static int patch_sigmatel_stac9708_speci
95469 - return patch_sigmatel_stac97xx_specific(ac97);
95470 - }
95471 -
95472 --static struct snd_ac97_build_ops patch_sigmatel_stac9708_ops = {
95473 -+static const struct snd_ac97_build_ops patch_sigmatel_stac9708_ops = {
95474 - .build_3d = patch_sigmatel_stac9708_3d,
95475 - .build_specific = patch_sigmatel_stac9708_specific
95476 - };
95477 -@@ -1267,7 +1267,7 @@ static int patch_sigmatel_stac9758_speci
95478 - return 0;
95479 - }
95480 -
95481 --static struct snd_ac97_build_ops patch_sigmatel_stac9758_ops = {
95482 -+static const struct snd_ac97_build_ops patch_sigmatel_stac9758_ops = {
95483 - .build_3d = patch_sigmatel_stac9700_3d,
95484 - .build_specific = patch_sigmatel_stac9758_specific
95485 - };
95486 -@@ -1342,7 +1342,7 @@ static int patch_cirrus_build_spdif(stru
95487 - return 0;
95488 - }
95489 -
95490 --static struct snd_ac97_build_ops patch_cirrus_ops = {
95491 -+static const struct snd_ac97_build_ops patch_cirrus_ops = {
95492 - .build_spdif = patch_cirrus_build_spdif
95493 - };
95494 -
95495 -@@ -1399,7 +1399,7 @@ static int patch_conexant_build_spdif(st
95496 - return 0;
95497 - }
95498 -
95499 --static struct snd_ac97_build_ops patch_conexant_ops = {
95500 -+static const struct snd_ac97_build_ops patch_conexant_ops = {
95501 - .build_spdif = patch_conexant_build_spdif
95502 - };
95503 -
95504 -@@ -1575,7 +1575,7 @@ static void patch_ad1881_chained(struct
95505 - }
95506 - }
95507 -
95508 --static struct snd_ac97_build_ops patch_ad1881_build_ops = {
95509 -+static const struct snd_ac97_build_ops patch_ad1881_build_ops = {
95510 - #ifdef CONFIG_PM
95511 - .resume = ad18xx_resume
95512 - #endif
95513 -@@ -1662,7 +1662,7 @@ static int patch_ad1885_specific(struct
95514 - return 0;
95515 - }
95516 -
95517 --static struct snd_ac97_build_ops patch_ad1885_build_ops = {
95518 -+static const struct snd_ac97_build_ops patch_ad1885_build_ops = {
95519 - .build_specific = &patch_ad1885_specific,
95520 - #ifdef CONFIG_PM
95521 - .resume = ad18xx_resume
95522 -@@ -1689,7 +1689,7 @@ static int patch_ad1886_specific(struct
95523 - return 0;
95524 - }
95525 -
95526 --static struct snd_ac97_build_ops patch_ad1886_build_ops = {
95527 -+static const struct snd_ac97_build_ops patch_ad1886_build_ops = {
95528 - .build_specific = &patch_ad1886_specific,
95529 - #ifdef CONFIG_PM
95530 - .resume = ad18xx_resume
95531 -@@ -1896,7 +1896,7 @@ static int patch_ad1981a_specific(struct
95532 - ARRAY_SIZE(snd_ac97_ad1981x_jack_sense));
95533 - }
95534 -
95535 --static struct snd_ac97_build_ops patch_ad1981a_build_ops = {
95536 -+static const struct snd_ac97_build_ops patch_ad1981a_build_ops = {
95537 - .build_post_spdif = patch_ad198x_post_spdif,
95538 - .build_specific = patch_ad1981a_specific,
95539 - #ifdef CONFIG_PM
95540 -@@ -1952,7 +1952,7 @@ static int patch_ad1981b_specific(struct
95541 - ARRAY_SIZE(snd_ac97_ad1981x_jack_sense));
95542 - }
95543 -
95544 --static struct snd_ac97_build_ops patch_ad1981b_build_ops = {
95545 -+static const struct snd_ac97_build_ops patch_ad1981b_build_ops = {
95546 - .build_post_spdif = patch_ad198x_post_spdif,
95547 - .build_specific = patch_ad1981b_specific,
95548 - #ifdef CONFIG_PM
95549 -@@ -2091,7 +2091,7 @@ static int patch_ad1888_specific(struct
95550 - return patch_build_controls(ac97, snd_ac97_ad1888_controls, ARRAY_SIZE(snd_ac97_ad1888_controls));
95551 - }
95552 -
95553 --static struct snd_ac97_build_ops patch_ad1888_build_ops = {
95554 -+static const struct snd_ac97_build_ops patch_ad1888_build_ops = {
95555 - .build_post_spdif = patch_ad198x_post_spdif,
95556 - .build_specific = patch_ad1888_specific,
95557 - #ifdef CONFIG_PM
95558 -@@ -2140,7 +2140,7 @@ static int patch_ad1980_specific(struct
95559 - return patch_build_controls(ac97, &snd_ac97_ad198x_2cmic, 1);
95560 - }
95561 -
95562 --static struct snd_ac97_build_ops patch_ad1980_build_ops = {
95563 -+static const struct snd_ac97_build_ops patch_ad1980_build_ops = {
95564 - .build_post_spdif = patch_ad198x_post_spdif,
95565 - .build_specific = patch_ad1980_specific,
95566 - #ifdef CONFIG_PM
95567 -@@ -2255,7 +2255,7 @@ static int patch_ad1985_specific(struct
95568 - ARRAY_SIZE(snd_ac97_ad1985_controls));
95569 - }
95570 -
95571 --static struct snd_ac97_build_ops patch_ad1985_build_ops = {
95572 -+static const struct snd_ac97_build_ops patch_ad1985_build_ops = {
95573 - .build_post_spdif = patch_ad198x_post_spdif,
95574 - .build_specific = patch_ad1985_specific,
95575 - #ifdef CONFIG_PM
95576 -@@ -2547,7 +2547,7 @@ static int patch_ad1986_specific(struct
95577 - ARRAY_SIZE(snd_ac97_ad1985_controls));
95578 - }
95579 -
95580 --static struct snd_ac97_build_ops patch_ad1986_build_ops = {
95581 -+static const struct snd_ac97_build_ops patch_ad1986_build_ops = {
95582 - .build_post_spdif = patch_ad198x_post_spdif,
95583 - .build_specific = patch_ad1986_specific,
95584 - #ifdef CONFIG_PM
95585 -@@ -2652,7 +2652,7 @@ static int patch_alc650_specific(struct
95586 - return 0;
95587 - }
95588 -
95589 --static struct snd_ac97_build_ops patch_alc650_ops = {
95590 -+static const struct snd_ac97_build_ops patch_alc650_ops = {
95591 - .build_specific = patch_alc650_specific,
95592 - .update_jacks = alc650_update_jacks
95593 - };
95594 -@@ -2804,7 +2804,7 @@ static int patch_alc655_specific(struct
95595 - return 0;
95596 - }
95597 -
95598 --static struct snd_ac97_build_ops patch_alc655_ops = {
95599 -+static const struct snd_ac97_build_ops patch_alc655_ops = {
95600 - .build_specific = patch_alc655_specific,
95601 - .update_jacks = alc655_update_jacks
95602 - };
95603 -@@ -2916,7 +2916,7 @@ static int patch_alc850_specific(struct
95604 - return 0;
95605 - }
95606 -
95607 --static struct snd_ac97_build_ops patch_alc850_ops = {
95608 -+static const struct snd_ac97_build_ops patch_alc850_ops = {
95609 - .build_specific = patch_alc850_specific,
95610 - .update_jacks = alc850_update_jacks
95611 - };
95612 -@@ -2978,7 +2978,7 @@ static int patch_cm9738_specific(struct
95613 - return patch_build_controls(ac97, snd_ac97_cm9738_controls, ARRAY_SIZE(snd_ac97_cm9738_controls));
95614 - }
95615 -
95616 --static struct snd_ac97_build_ops patch_cm9738_ops = {
95617 -+static const struct snd_ac97_build_ops patch_cm9738_ops = {
95618 - .build_specific = patch_cm9738_specific,
95619 - .update_jacks = cm9738_update_jacks
95620 - };
95621 -@@ -3069,7 +3069,7 @@ static int patch_cm9739_post_spdif(struc
95622 - return patch_build_controls(ac97, snd_ac97_cm9739_controls_spdif, ARRAY_SIZE(snd_ac97_cm9739_controls_spdif));
95623 - }
95624 -
95625 --static struct snd_ac97_build_ops patch_cm9739_ops = {
95626 -+static const struct snd_ac97_build_ops patch_cm9739_ops = {
95627 - .build_specific = patch_cm9739_specific,
95628 - .build_post_spdif = patch_cm9739_post_spdif,
95629 - .update_jacks = cm9739_update_jacks
95630 -@@ -3243,7 +3243,7 @@ static int patch_cm9761_specific(struct
95631 - return patch_build_controls(ac97, snd_ac97_cm9761_controls, ARRAY_SIZE(snd_ac97_cm9761_controls));
95632 - }
95633 -
95634 --static struct snd_ac97_build_ops patch_cm9761_ops = {
95635 -+static const struct snd_ac97_build_ops patch_cm9761_ops = {
95636 - .build_specific = patch_cm9761_specific,
95637 - .build_post_spdif = patch_cm9761_post_spdif,
95638 - .update_jacks = cm9761_update_jacks
95639 -@@ -3339,7 +3339,7 @@ static int patch_cm9780_specific(struct
95640 - return patch_build_controls(ac97, cm9780_controls, ARRAY_SIZE(cm9780_controls));
95641 - }
95642 -
95643 --static struct snd_ac97_build_ops patch_cm9780_ops = {
95644 -+static const struct snd_ac97_build_ops patch_cm9780_ops = {
95645 - .build_specific = patch_cm9780_specific,
95646 - .build_post_spdif = patch_cm9761_post_spdif /* identical with CM9761 */
95647 - };
95648 -@@ -3459,7 +3459,7 @@ static int patch_vt1616_specific(struct
95649 - return 0;
95650 - }
95651 -
95652 --static struct snd_ac97_build_ops patch_vt1616_ops = {
95653 -+static const struct snd_ac97_build_ops patch_vt1616_ops = {
95654 - .build_specific = patch_vt1616_specific
95655 - };
95656 -
95657 -@@ -3813,7 +3813,7 @@ static int patch_it2646_specific(struct
95658 - return 0;
95659 - }
95660 -
95661 --static struct snd_ac97_build_ops patch_it2646_ops = {
95662 -+static const struct snd_ac97_build_ops patch_it2646_ops = {
95663 - .build_specific = patch_it2646_specific,
95664 - .update_jacks = it2646_update_jacks
95665 - };
95666 -@@ -3847,7 +3847,7 @@ static int patch_si3036_specific(struct
95667 - return 0;
95668 - }
95669 -
95670 --static struct snd_ac97_build_ops patch_si3036_ops = {
95671 -+static const struct snd_ac97_build_ops patch_si3036_ops = {
95672 - .build_specific = patch_si3036_specific,
95673 - };
95674 -
95675 -@@ -3914,7 +3914,7 @@ static int patch_ucb1400_specific(struct
95676 - return 0;
95677 - }
95678 -
95679 --static struct snd_ac97_build_ops patch_ucb1400_ops = {
95680 -+static const struct snd_ac97_build_ops patch_ucb1400_ops = {
95681 - .build_specific = patch_ucb1400_specific,
95682 - };
95683 -
95684 -diff -urNp linux-2.6.32.48/sound/pci/hda/hda_codec.h linux-2.6.32.48/sound/pci/hda/hda_codec.h
95685 ---- linux-2.6.32.48/sound/pci/hda/hda_codec.h 2009-12-02 22:51:21.000000000 -0500
95686 -+++ linux-2.6.32.48/sound/pci/hda/hda_codec.h 2011-11-12 12:46:53.000000000 -0500
95687 -@@ -580,7 +580,7 @@ struct hda_bus_ops {
95688 +diff -urNp linux-3.0.8/sound/pci/hda/hda_codec.h linux-3.0.8/sound/pci/hda/hda_codec.h
95689 +--- linux-3.0.8/sound/pci/hda/hda_codec.h 2011-07-21 22:17:23.000000000 -0400
95690 ++++ linux-3.0.8/sound/pci/hda/hda_codec.h 2011-08-23 21:47:56.000000000 -0400
95691 +@@ -615,7 +615,7 @@ struct hda_bus_ops {
95692 /* notify power-up/down from codec to controller */
95693 void (*pm_notify)(struct hda_bus *bus);
95694 #endif
95695 @@ -80670,15 +77125,15 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/hda_codec.h linux-2.6.32.48/sound/pci/h
95696
95697 /* template to pass to the bus constructor */
95698 struct hda_bus_template {
95699 -@@ -675,6 +675,7 @@ struct hda_codec_ops {
95700 - int (*check_power_status)(struct hda_codec *codec, hda_nid_t nid);
95701 +@@ -713,6 +713,7 @@ struct hda_codec_ops {
95702 #endif
95703 + void (*reboot_notify)(struct hda_codec *codec);
95704 };
95705 +typedef struct hda_codec_ops __no_const hda_codec_ops_no_const;
95706
95707 /* record for amp information cache */
95708 struct hda_cache_head {
95709 -@@ -705,7 +706,7 @@ struct hda_pcm_ops {
95710 +@@ -743,7 +744,7 @@ struct hda_pcm_ops {
95711 struct snd_pcm_substream *substream);
95712 int (*cleanup)(struct hda_pcm_stream *info, struct hda_codec *codec,
95713 struct snd_pcm_substream *substream);
95714 @@ -80687,7 +77142,7 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/hda_codec.h linux-2.6.32.48/sound/pci/h
95715
95716 /* PCM information for each substream */
95717 struct hda_pcm_stream {
95718 -@@ -760,7 +761,7 @@ struct hda_codec {
95719 +@@ -801,7 +802,7 @@ struct hda_codec {
95720 const char *modelname; /* model name for preset */
95721
95722 /* set by patch */
95723 @@ -80696,90 +77151,9 @@ diff -urNp linux-2.6.32.48/sound/pci/hda/hda_codec.h linux-2.6.32.48/sound/pci/h
95724
95725 /* PCM to create, set by patch_ops.build_pcms callback */
95726 unsigned int num_pcms;
95727 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c
95728 ---- linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c 2009-12-02 22:51:21.000000000 -0500
95729 -+++ linux-2.6.32.48/sound/pci/hda/patch_atihdmi.c 2011-11-12 12:46:53.000000000 -0500
95730 -@@ -177,7 +177,7 @@ static int patch_atihdmi(struct hda_code
95731 - */
95732 - spec->multiout.dig_out_nid = CVT_NID;
95733 -
95734 -- codec->patch_ops = atihdmi_patch_ops;
95735 -+ memcpy((void *)&codec->patch_ops, &atihdmi_patch_ops, sizeof(atihdmi_patch_ops));
95736 -
95737 - return 0;
95738 - }
95739 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c
95740 ---- linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c 2011-11-12 12:44:30.000000000 -0500
95741 -+++ linux-2.6.32.48/sound/pci/hda/patch_intelhdmi.c 2011-11-12 12:46:53.000000000 -0500
95742 -@@ -511,10 +511,10 @@ static void hdmi_non_intrinsic_event(str
95743 - cp_ready);
95744 -
95745 - /* TODO */
95746 -- if (cp_state)
95747 -- ;
95748 -- if (cp_ready)
95749 -- ;
95750 -+ if (cp_state) {
95751 -+ }
95752 -+ if (cp_ready) {
95753 -+ }
95754 - }
95755 -
95756 -
95757 -@@ -656,7 +656,7 @@ static int do_patch_intel_hdmi(struct hd
95758 - spec->multiout.dig_out_nid = cvt_nid;
95759 -
95760 - codec->spec = spec;
95761 -- codec->patch_ops = intel_hdmi_patch_ops;
95762 -+ memcpy((void *)&codec->patch_ops, &intel_hdmi_patch_ops, sizeof(intel_hdmi_patch_ops));
95763 -
95764 - snd_hda_eld_proc_new(codec, &spec->sink_eld);
95765 -
95766 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c
95767 ---- linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c 2009-12-02 22:51:21.000000000 -0500
95768 -+++ linux-2.6.32.48/sound/pci/hda/patch_nvhdmi.c 2011-11-12 12:46:53.000000000 -0500
95769 -@@ -367,7 +367,7 @@ static int patch_nvhdmi_8ch(struct hda_c
95770 - spec->multiout.max_channels = 8;
95771 - spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
95772 -
95773 -- codec->patch_ops = nvhdmi_patch_ops_8ch;
95774 -+ memcpy((void *)&codec->patch_ops, &nvhdmi_patch_ops_8ch, sizeof(nvhdmi_patch_ops_8ch));
95775 -
95776 - return 0;
95777 - }
95778 -@@ -386,7 +386,7 @@ static int patch_nvhdmi_2ch(struct hda_c
95779 - spec->multiout.max_channels = 2;
95780 - spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
95781 -
95782 -- codec->patch_ops = nvhdmi_patch_ops_2ch;
95783 -+ memcpy((void *)&codec->patch_ops, &nvhdmi_patch_ops_2ch, sizeof(nvhdmi_patch_ops_2ch));
95784 -
95785 - return 0;
95786 - }
95787 -diff -urNp linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c
95788 ---- linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c 2011-11-12 12:44:30.000000000 -0500
95789 -+++ linux-2.6.32.48/sound/pci/hda/patch_sigmatel.c 2011-11-12 12:46:53.000000000 -0500
95790 -@@ -5220,7 +5220,7 @@ again:
95791 - snd_hda_codec_write_cache(codec, nid, 0,
95792 - AC_VERB_SET_CONNECT_SEL, num_dacs);
95793 -
95794 -- codec->patch_ops = stac92xx_patch_ops;
95795 -+ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
95796 -
95797 - codec->proc_widget_hook = stac92hd_proc_hook;
95798 -
95799 -@@ -5294,7 +5294,7 @@ static int patch_stac92hd71bxx(struct hd
95800 - return -ENOMEM;
95801 -
95802 - codec->spec = spec;
95803 -- codec->patch_ops = stac92xx_patch_ops;
95804 -+ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
95805 - spec->num_pins = STAC92HD71BXX_NUM_PINS;
95806 - switch (codec->vendor_id) {
95807 - case 0x111d76b6:
95808 -diff -urNp linux-2.6.32.48/sound/pci/ice1712/ice1712.h linux-2.6.32.48/sound/pci/ice1712/ice1712.h
95809 ---- linux-2.6.32.48/sound/pci/ice1712/ice1712.h 2009-12-02 22:51:21.000000000 -0500
95810 -+++ linux-2.6.32.48/sound/pci/ice1712/ice1712.h 2011-11-12 12:46:53.000000000 -0500
95811 +diff -urNp linux-3.0.8/sound/pci/ice1712/ice1712.h linux-3.0.8/sound/pci/ice1712/ice1712.h
95812 +--- linux-3.0.8/sound/pci/ice1712/ice1712.h 2011-07-21 22:17:23.000000000 -0400
95813 ++++ linux-3.0.8/sound/pci/ice1712/ice1712.h 2011-08-23 21:47:56.000000000 -0400
95814 @@ -269,7 +269,7 @@ struct snd_ak4xxx_private {
95815 unsigned int mask_flags; /* total mask bits */
95816 struct snd_akm4xxx_ops {
95817 @@ -80798,21 +77172,9 @@ diff -urNp linux-2.6.32.48/sound/pci/ice1712/ice1712.h linux-2.6.32.48/sound/pci
95818 };
95819
95820
95821 -diff -urNp linux-2.6.32.48/sound/pci/intel8x0m.c linux-2.6.32.48/sound/pci/intel8x0m.c
95822 ---- linux-2.6.32.48/sound/pci/intel8x0m.c 2009-12-02 22:51:21.000000000 -0500
95823 -+++ linux-2.6.32.48/sound/pci/intel8x0m.c 2011-11-12 12:46:53.000000000 -0500
95824 -@@ -1264,7 +1264,7 @@ static struct shortname_table {
95825 - { 0x5455, "ALi M5455" },
95826 - { 0x746d, "AMD AMD8111" },
95827 - #endif
95828 -- { 0 },
95829 -+ { 0, },
95830 - };
95831 -
95832 - static int __devinit snd_intel8x0m_probe(struct pci_dev *pci,
95833 -diff -urNp linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c
95834 ---- linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c 2009-12-02 22:51:21.000000000 -0500
95835 -+++ linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c 2011-11-12 12:46:53.000000000 -0500
95836 +diff -urNp linux-3.0.8/sound/pci/ymfpci/ymfpci_main.c linux-3.0.8/sound/pci/ymfpci/ymfpci_main.c
95837 +--- linux-3.0.8/sound/pci/ymfpci/ymfpci_main.c 2011-07-21 22:17:23.000000000 -0400
95838 ++++ linux-3.0.8/sound/pci/ymfpci/ymfpci_main.c 2011-08-23 21:47:56.000000000 -0400
95839 @@ -202,8 +202,8 @@ static void snd_ymfpci_hw_stop(struct sn
95840 if ((snd_ymfpci_readl(chip, YDSXGR_STATUS) & 2) == 0)
95841 break;
95842 @@ -80844,7 +77206,7 @@ diff -urNp linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c linux-2.6.32.48/sound/
95843 wake_up(&chip->interrupt_sleep);
95844 }
95845 }
95846 -@@ -2369,7 +2369,7 @@ int __devinit snd_ymfpci_create(struct s
95847 +@@ -2363,7 +2363,7 @@ int __devinit snd_ymfpci_create(struct s
95848 spin_lock_init(&chip->reg_lock);
95849 spin_lock_init(&chip->voice_lock);
95850 init_waitqueue_head(&chip->interrupt_sleep);
95851 @@ -80853,10 +77215,10 @@ diff -urNp linux-2.6.32.48/sound/pci/ymfpci/ymfpci_main.c linux-2.6.32.48/sound/
95852 chip->card = card;
95853 chip->pci = pci;
95854 chip->irq = -1;
95855 -diff -urNp linux-2.6.32.48/sound/soc/soc-core.c linux-2.6.32.48/sound/soc/soc-core.c
95856 ---- linux-2.6.32.48/sound/soc/soc-core.c 2009-12-02 22:51:21.000000000 -0500
95857 -+++ linux-2.6.32.48/sound/soc/soc-core.c 2011-11-12 12:46:53.000000000 -0500
95858 -@@ -609,7 +609,7 @@ static int soc_pcm_trigger(struct snd_pc
95859 +diff -urNp linux-3.0.8/sound/soc/soc-core.c linux-3.0.8/sound/soc/soc-core.c
95860 +--- linux-3.0.8/sound/soc/soc-core.c 2011-10-24 08:05:21.000000000 -0400
95861 ++++ linux-3.0.8/sound/soc/soc-core.c 2011-08-23 21:47:56.000000000 -0400
95862 +@@ -1021,7 +1021,7 @@ static snd_pcm_uframes_t soc_pcm_pointer
95863 }
95864
95865 /* ASoC PCM operations */
95866 @@ -80865,73 +77227,37 @@ diff -urNp linux-2.6.32.48/sound/soc/soc-core.c linux-2.6.32.48/sound/soc/soc-co
95867 .open = soc_pcm_open,
95868 .close = soc_codec_close,
95869 .hw_params = soc_pcm_hw_params,
95870 -diff -urNp linux-2.6.32.48/sound/usb/usbaudio.c linux-2.6.32.48/sound/usb/usbaudio.c
95871 ---- linux-2.6.32.48/sound/usb/usbaudio.c 2011-11-12 12:44:30.000000000 -0500
95872 -+++ linux-2.6.32.48/sound/usb/usbaudio.c 2011-11-12 12:46:53.000000000 -0500
95873 -@@ -963,12 +963,12 @@ static int snd_usb_pcm_playback_trigger(
95874 - switch (cmd) {
95875 - case SNDRV_PCM_TRIGGER_START:
95876 - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
95877 -- subs->ops.prepare = prepare_playback_urb;
95878 -+ *(void **)&subs->ops.prepare = prepare_playback_urb;
95879 - return 0;
95880 - case SNDRV_PCM_TRIGGER_STOP:
95881 - return deactivate_urbs(subs, 0, 0);
95882 - case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
95883 -- subs->ops.prepare = prepare_nodata_playback_urb;
95884 -+ *(void **)&subs->ops.prepare = prepare_nodata_playback_urb;
95885 - return 0;
95886 - default:
95887 - return -EINVAL;
95888 -@@ -985,15 +985,15 @@ static int snd_usb_pcm_capture_trigger(s
95889 +@@ -2128,6 +2128,7 @@ static int soc_new_pcm(struct snd_soc_pc
95890 + rtd->pcm = pcm;
95891 + pcm->private_data = rtd;
95892 + if (platform->driver->ops) {
95893 ++ /* this whole logic is broken... */
95894 + soc_pcm_ops.mmap = platform->driver->ops->mmap;
95895 + soc_pcm_ops.pointer = platform->driver->ops->pointer;
95896 + soc_pcm_ops.ioctl = platform->driver->ops->ioctl;
95897 +diff -urNp linux-3.0.8/sound/usb/card.h linux-3.0.8/sound/usb/card.h
95898 +--- linux-3.0.8/sound/usb/card.h 2011-07-21 22:17:23.000000000 -0400
95899 ++++ linux-3.0.8/sound/usb/card.h 2011-08-23 21:47:56.000000000 -0400
95900 +@@ -44,6 +44,7 @@ struct snd_urb_ops {
95901 + int (*prepare_sync)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u);
95902 + int (*retire_sync)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u);
95903 + };
95904 ++typedef struct snd_urb_ops __no_const snd_urb_ops_no_const;
95905
95906 - switch (cmd) {
95907 - case SNDRV_PCM_TRIGGER_START:
95908 -- subs->ops.retire = retire_capture_urb;
95909 -+ *(void **)&subs->ops.retire = retire_capture_urb;
95910 - return start_urbs(subs, substream->runtime);
95911 - case SNDRV_PCM_TRIGGER_STOP:
95912 - return deactivate_urbs(subs, 0, 0);
95913 - case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
95914 -- subs->ops.retire = retire_paused_capture_urb;
95915 -+ *(void **)&subs->ops.retire = retire_paused_capture_urb;
95916 - return 0;
95917 - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
95918 -- subs->ops.retire = retire_capture_urb;
95919 -+ *(void **)&subs->ops.retire = retire_capture_urb;
95920 - return 0;
95921 - default:
95922 - return -EINVAL;
95923 -@@ -1542,7 +1542,7 @@ static int snd_usb_pcm_prepare(struct sn
95924 - /* for playback, submit the URBs now; otherwise, the first hwptr_done
95925 - * updates for all URBs would happen at the same time when starting */
95926 - if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK) {
95927 -- subs->ops.prepare = prepare_nodata_playback_urb;
95928 -+ *(void **)&subs->ops.prepare = prepare_nodata_playback_urb;
95929 - return start_urbs(subs, runtime);
95930 - } else
95931 - return 0;
95932 -@@ -2228,14 +2228,14 @@ static void init_substream(struct snd_us
95933 - subs->direction = stream;
95934 - subs->dev = as->chip->dev;
95935 - if (snd_usb_get_speed(subs->dev) == USB_SPEED_FULL) {
95936 -- subs->ops = audio_urb_ops[stream];
95937 -+ memcpy((void *)&subs->ops, &audio_urb_ops[stream], sizeof(subs->ops));
95938 - } else {
95939 -- subs->ops = audio_urb_ops_high_speed[stream];
95940 -+ memcpy((void *)&subs->ops, &audio_urb_ops_high_speed[stream], sizeof(subs->ops));
95941 - switch (as->chip->usb_id) {
95942 - case USB_ID(0x041e, 0x3f02): /* E-Mu 0202 USB */
95943 - case USB_ID(0x041e, 0x3f04): /* E-Mu 0404 USB */
95944 - case USB_ID(0x041e, 0x3f0a): /* E-Mu Tracker Pre */
95945 -- subs->ops.retire_sync = retire_playback_sync_urb_hs_emu;
95946 -+ *(void **)&subs->ops.retire_sync = retire_playback_sync_urb_hs_emu;
95947 - break;
95948 - }
95949 - }
95950 -diff -urNp linux-2.6.32.48/tools/gcc/checker_plugin.c linux-2.6.32.48/tools/gcc/checker_plugin.c
95951 ---- linux-2.6.32.48/tools/gcc/checker_plugin.c 1969-12-31 19:00:00.000000000 -0500
95952 -+++ linux-2.6.32.48/tools/gcc/checker_plugin.c 2011-11-12 12:46:53.000000000 -0500
95953 + struct snd_usb_substream {
95954 + struct snd_usb_stream *stream;
95955 +@@ -93,7 +94,7 @@ struct snd_usb_substream {
95956 + struct snd_pcm_hw_constraint_list rate_list; /* limited rates */
95957 + spinlock_t lock;
95958 +
95959 +- struct snd_urb_ops ops; /* callbacks (must be filled at init) */
95960 ++ snd_urb_ops_no_const ops; /* callbacks (must be filled at init) */
95961 + };
95962 +
95963 + struct snd_usb_stream {
95964 +diff -urNp linux-3.0.8/tools/gcc/checker_plugin.c linux-3.0.8/tools/gcc/checker_plugin.c
95965 +--- linux-3.0.8/tools/gcc/checker_plugin.c 1969-12-31 19:00:00.000000000 -0500
95966 ++++ linux-3.0.8/tools/gcc/checker_plugin.c 2011-10-06 04:17:55.000000000 -0400
95967 @@ -0,0 +1,169 @@
95968 +/*
95969 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
95970 @@ -81102,9 +77428,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/checker_plugin.c linux-2.6.32.48/tools/gcc/
95971 +
95972 + return 0;
95973 +}
95974 -diff -urNp linux-2.6.32.48/tools/gcc/constify_plugin.c linux-2.6.32.48/tools/gcc/constify_plugin.c
95975 ---- linux-2.6.32.48/tools/gcc/constify_plugin.c 1969-12-31 19:00:00.000000000 -0500
95976 -+++ linux-2.6.32.48/tools/gcc/constify_plugin.c 2011-11-12 12:46:53.000000000 -0500
95977 +diff -urNp linux-3.0.8/tools/gcc/constify_plugin.c linux-3.0.8/tools/gcc/constify_plugin.c
95978 +--- linux-3.0.8/tools/gcc/constify_plugin.c 1969-12-31 19:00:00.000000000 -0500
95979 ++++ linux-3.0.8/tools/gcc/constify_plugin.c 2011-08-30 18:23:52.000000000 -0400
95980 @@ -0,0 +1,293 @@
95981 +/*
95982 + * Copyright 2011 by Emese Revfy <re.emese@×××××.com>
95983 @@ -81399,9 +77725,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/constify_plugin.c linux-2.6.32.48/tools/gcc
95984 +
95985 + return 0;
95986 +}
95987 -diff -urNp linux-2.6.32.48/tools/gcc/kallocstat_plugin.c linux-2.6.32.48/tools/gcc/kallocstat_plugin.c
95988 ---- linux-2.6.32.48/tools/gcc/kallocstat_plugin.c 1969-12-31 19:00:00.000000000 -0500
95989 -+++ linux-2.6.32.48/tools/gcc/kallocstat_plugin.c 2011-11-12 12:46:53.000000000 -0500
95990 +diff -urNp linux-3.0.8/tools/gcc/kallocstat_plugin.c linux-3.0.8/tools/gcc/kallocstat_plugin.c
95991 +--- linux-3.0.8/tools/gcc/kallocstat_plugin.c 1969-12-31 19:00:00.000000000 -0500
95992 ++++ linux-3.0.8/tools/gcc/kallocstat_plugin.c 2011-10-06 04:17:55.000000000 -0400
95993 @@ -0,0 +1,165 @@
95994 +/*
95995 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
95996 @@ -81568,9 +77894,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/kallocstat_plugin.c linux-2.6.32.48/tools/g
95997 +
95998 + return 0;
95999 +}
96000 -diff -urNp linux-2.6.32.48/tools/gcc/kernexec_plugin.c linux-2.6.32.48/tools/gcc/kernexec_plugin.c
96001 ---- linux-2.6.32.48/tools/gcc/kernexec_plugin.c 1969-12-31 19:00:00.000000000 -0500
96002 -+++ linux-2.6.32.48/tools/gcc/kernexec_plugin.c 2011-11-12 12:46:53.000000000 -0500
96003 +diff -urNp linux-3.0.8/tools/gcc/kernexec_plugin.c linux-3.0.8/tools/gcc/kernexec_plugin.c
96004 +--- linux-3.0.8/tools/gcc/kernexec_plugin.c 1969-12-31 19:00:00.000000000 -0500
96005 ++++ linux-3.0.8/tools/gcc/kernexec_plugin.c 2011-10-06 04:17:55.000000000 -0400
96006 @@ -0,0 +1,273 @@
96007 +/*
96008 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
96009 @@ -81845,9 +78171,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/kernexec_plugin.c linux-2.6.32.48/tools/gcc
96010 +
96011 + return 0;
96012 +}
96013 -diff -urNp linux-2.6.32.48/tools/gcc/Makefile linux-2.6.32.48/tools/gcc/Makefile
96014 ---- linux-2.6.32.48/tools/gcc/Makefile 1969-12-31 19:00:00.000000000 -0500
96015 -+++ linux-2.6.32.48/tools/gcc/Makefile 2011-11-12 12:46:53.000000000 -0500
96016 +diff -urNp linux-3.0.8/tools/gcc/Makefile linux-3.0.8/tools/gcc/Makefile
96017 +--- linux-3.0.8/tools/gcc/Makefile 1969-12-31 19:00:00.000000000 -0500
96018 ++++ linux-3.0.8/tools/gcc/Makefile 2011-10-06 04:17:55.000000000 -0400
96019 @@ -0,0 +1,21 @@
96020 +#CC := gcc
96021 +#PLUGIN_SOURCE_FILES := pax_plugin.c
96022 @@ -81870,9 +78196,9 @@ diff -urNp linux-2.6.32.48/tools/gcc/Makefile linux-2.6.32.48/tools/gcc/Makefile
96023 +kallocstat_plugin-objs := kallocstat_plugin.o
96024 +kernexec_plugin-objs := kernexec_plugin.o
96025 +checker_plugin-objs := checker_plugin.o
96026 -diff -urNp linux-2.6.32.48/tools/gcc/stackleak_plugin.c linux-2.6.32.48/tools/gcc/stackleak_plugin.c
96027 ---- linux-2.6.32.48/tools/gcc/stackleak_plugin.c 1969-12-31 19:00:00.000000000 -0500
96028 -+++ linux-2.6.32.48/tools/gcc/stackleak_plugin.c 2011-11-12 12:46:53.000000000 -0500
96029 +diff -urNp linux-3.0.8/tools/gcc/stackleak_plugin.c linux-3.0.8/tools/gcc/stackleak_plugin.c
96030 +--- linux-3.0.8/tools/gcc/stackleak_plugin.c 1969-12-31 19:00:00.000000000 -0500
96031 ++++ linux-3.0.8/tools/gcc/stackleak_plugin.c 2011-09-17 00:53:44.000000000 -0400
96032 @@ -0,0 +1,251 @@
96033 +/*
96034 + * Copyright 2011 by the PaX Team <pageexec@××××××××.hu>
96035 @@ -82125,10 +78451,21 @@ diff -urNp linux-2.6.32.48/tools/gcc/stackleak_plugin.c linux-2.6.32.48/tools/gc
96036 +
96037 + return 0;
96038 +}
96039 -diff -urNp linux-2.6.32.48/usr/gen_init_cpio.c linux-2.6.32.48/usr/gen_init_cpio.c
96040 ---- linux-2.6.32.48/usr/gen_init_cpio.c 2009-12-02 22:51:21.000000000 -0500
96041 -+++ linux-2.6.32.48/usr/gen_init_cpio.c 2011-11-12 12:46:53.000000000 -0500
96042 -@@ -299,7 +299,7 @@ static int cpio_mkfile(const char *name,
96043 +diff -urNp linux-3.0.8/tools/perf/util/include/asm/alternative-asm.h linux-3.0.8/tools/perf/util/include/asm/alternative-asm.h
96044 +--- linux-3.0.8/tools/perf/util/include/asm/alternative-asm.h 2011-07-21 22:17:23.000000000 -0400
96045 ++++ linux-3.0.8/tools/perf/util/include/asm/alternative-asm.h 2011-10-20 04:46:01.000000000 -0400
96046 +@@ -5,4 +5,7 @@
96047 +
96048 + #define altinstruction_entry #
96049 +
96050 ++ .macro pax_force_retaddr rip=0
96051 ++ .endm
96052 ++
96053 + #endif
96054 +diff -urNp linux-3.0.8/usr/gen_init_cpio.c linux-3.0.8/usr/gen_init_cpio.c
96055 +--- linux-3.0.8/usr/gen_init_cpio.c 2011-07-21 22:17:23.000000000 -0400
96056 ++++ linux-3.0.8/usr/gen_init_cpio.c 2011-08-23 21:47:56.000000000 -0400
96057 +@@ -303,7 +303,7 @@ static int cpio_mkfile(const char *name,
96058 int retval;
96059 int rc = -1;
96060 int namesize;
96061 @@ -82137,7 +78474,7 @@ diff -urNp linux-2.6.32.48/usr/gen_init_cpio.c linux-2.6.32.48/usr/gen_init_cpio
96062
96063 mode |= S_IFREG;
96064
96065 -@@ -383,9 +383,10 @@ static char *cpio_replace_env(char *new_
96066 +@@ -392,9 +392,10 @@ static char *cpio_replace_env(char *new_
96067 *env_var = *expanded = '\0';
96068 strncat(env_var, start + 2, end - start - 2);
96069 strncat(expanded, new_location, start - new_location);
96070 @@ -82150,37 +78487,61 @@ diff -urNp linux-2.6.32.48/usr/gen_init_cpio.c linux-2.6.32.48/usr/gen_init_cpio
96071 } else
96072 break;
96073 }
96074 -diff -urNp linux-2.6.32.48/virt/kvm/kvm_main.c linux-2.6.32.48/virt/kvm/kvm_main.c
96075 ---- linux-2.6.32.48/virt/kvm/kvm_main.c 2011-11-12 12:44:30.000000000 -0500
96076 -+++ linux-2.6.32.48/virt/kvm/kvm_main.c 2011-11-12 12:46:53.000000000 -0500
96077 -@@ -2494,7 +2494,7 @@ asmlinkage void kvm_handle_fault_on_rebo
96078 - if (kvm_rebooting)
96079 - /* spin while reset goes on */
96080 - while (true)
96081 -- ;
96082 -+ cpu_relax();
96083 - /* Fault while not rebooting. We want the trace. */
96084 - BUG();
96085 - }
96086 -@@ -2714,7 +2714,7 @@ static void kvm_sched_out(struct preempt
96087 +diff -urNp linux-3.0.8/virt/kvm/kvm_main.c linux-3.0.8/virt/kvm/kvm_main.c
96088 +--- linux-3.0.8/virt/kvm/kvm_main.c 2011-07-21 22:17:23.000000000 -0400
96089 ++++ linux-3.0.8/virt/kvm/kvm_main.c 2011-08-23 21:47:56.000000000 -0400
96090 +@@ -73,7 +73,7 @@ LIST_HEAD(vm_list);
96091 +
96092 + static cpumask_var_t cpus_hardware_enabled;
96093 + static int kvm_usage_count = 0;
96094 +-static atomic_t hardware_enable_failed;
96095 ++static atomic_unchecked_t hardware_enable_failed;
96096 +
96097 + struct kmem_cache *kvm_vcpu_cache;
96098 + EXPORT_SYMBOL_GPL(kvm_vcpu_cache);
96099 +@@ -2176,7 +2176,7 @@ static void hardware_enable_nolock(void
96100 +
96101 + if (r) {
96102 + cpumask_clear_cpu(cpu, cpus_hardware_enabled);
96103 +- atomic_inc(&hardware_enable_failed);
96104 ++ atomic_inc_unchecked(&hardware_enable_failed);
96105 + printk(KERN_INFO "kvm: enabling virtualization on "
96106 + "CPU%d failed\n", cpu);
96107 + }
96108 +@@ -2230,10 +2230,10 @@ static int hardware_enable_all(void)
96109 +
96110 + kvm_usage_count++;
96111 + if (kvm_usage_count == 1) {
96112 +- atomic_set(&hardware_enable_failed, 0);
96113 ++ atomic_set_unchecked(&hardware_enable_failed, 0);
96114 + on_each_cpu(hardware_enable_nolock, NULL, 1);
96115 +
96116 +- if (atomic_read(&hardware_enable_failed)) {
96117 ++ if (atomic_read_unchecked(&hardware_enable_failed)) {
96118 + hardware_disable_all_nolock();
96119 + r = -EBUSY;
96120 + }
96121 +@@ -2498,7 +2498,7 @@ static void kvm_sched_out(struct preempt
96122 kvm_arch_vcpu_put(vcpu);
96123 }
96124
96125 --int kvm_init(void *opaque, unsigned int vcpu_size,
96126 -+int kvm_init(const void *opaque, unsigned int vcpu_size,
96127 +-int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
96128 ++int kvm_init(const void *opaque, unsigned vcpu_size, unsigned vcpu_align,
96129 struct module *module)
96130 {
96131 int r;
96132 -@@ -2767,15 +2767,17 @@ int kvm_init(void *opaque, unsigned int
96133 - /* A kmem cache lets us meet the alignment requirements of fx_save. */
96134 - kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size,
96135 - __alignof__(struct kvm_vcpu),
96136 +@@ -2561,7 +2561,7 @@ int kvm_init(void *opaque, unsigned vcpu
96137 + if (!vcpu_align)
96138 + vcpu_align = __alignof__(struct kvm_vcpu);
96139 + kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
96140 - 0, NULL);
96141 + SLAB_USERCOPY, NULL);
96142 if (!kvm_vcpu_cache) {
96143 r = -ENOMEM;
96144 - goto out_free_5;
96145 - }
96146 + goto out_free_3;
96147 +@@ -2571,9 +2571,11 @@ int kvm_init(void *opaque, unsigned vcpu
96148 + if (r)
96149 + goto out_free;
96150
96151 - kvm_chardev_ops.owner = module;
96152 - kvm_vm_fops.owner = module;
96153
96154 diff --git a/3.0.8/4421_grsec-remove-localversion-grsec.patch b/3.0.8/4421_grsec-remove-localversion-grsec.patch
96155 new file mode 100644
96156 index 0000000..31cf878
96157 --- /dev/null
96158 +++ b/3.0.8/4421_grsec-remove-localversion-grsec.patch
96159 @@ -0,0 +1,9 @@
96160 +From: Kerin Millar <kerframil@×××××.com>
96161 +
96162 +Remove grsecurity's localversion-grsec file as it is inconsistent with
96163 +Gentoo's kernel practices and naming scheme.
96164 +
96165 +--- a/localversion-grsec 2008-02-24 14:26:59.000000000 +0000
96166 ++++ b/localversion-grsec 1970-01-01 01:00:00.000000000 +0100
96167 +@@ -1 +0,0 @@
96168 +--grsec
96169
96170 diff --git a/3.0.8/4422_grsec-mute-warnings.patch b/3.0.8/4422_grsec-mute-warnings.patch
96171 new file mode 100644
96172 index 0000000..fbca0bb
96173 --- /dev/null
96174 +++ b/3.0.8/4422_grsec-mute-warnings.patch
96175 @@ -0,0 +1,42 @@
96176 +From: Anthony G. Basile <blueness@g.o>
96177 +Updated patch for 2.6.38.6
96178 +
96179 +The credits/description from the original version of this patch remain accurate
96180 +and are included below.
96181 +
96182 +---
96183 +From: Jory A. Pratt <anarchy@g.o>
96184 +Updated patch for kernel 2.6.32
96185 +
96186 +The credits/description from the original version of this patch remain accurate
96187 +and are included below.
96188 +
96189 +---
96190 +From: Gordon Malm <gengor@g.o>
96191 +
96192 +Updated patch for kernel series 2.6.24.
96193 +
96194 +The credits/description from the original version of this patch remain accurate
96195 +and are included below.
96196 +
96197 +---
96198 +From: Alexander Gabert <gaberta@××××××××.de>
96199 +
96200 +This patch removes the warnings introduced by grsec patch 2.1.9 and later.
96201 +It removes the -W options added by the patch and restores the original
96202 +warning flags of vanilla kernel versions.
96203 +
96204 +Acked-by: Christian Heim <phreak@g.o>
96205 +---
96206 +
96207 +--- a/Makefile 2011-06-06 00:47:21.000000000 -0400
96208 ++++ b/Makefile 2011-06-06 00:49:13.000000000 -0400
96209 +@@ -245,7 +245,7 @@
96210 +
96211 + HOSTCC = gcc
96212 + HOSTCXX = g++
96213 +-HOSTCFLAGS = -Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
96214 ++HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-empty-body -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
96215 + HOSTCFLAGS += $(call cc-option, -Wno-empty-body)
96216 + HOSTCXXFLAGS = -O2 -fno-delete-null-pointer-checks
96217 +
96218
96219 diff --git a/3.0.8/4423_grsec-remove-protected-paths.patch b/3.0.8/4423_grsec-remove-protected-paths.patch
96220 new file mode 100644
96221 index 0000000..4afb3e2
96222 --- /dev/null
96223 +++ b/3.0.8/4423_grsec-remove-protected-paths.patch
96224 @@ -0,0 +1,19 @@
96225 +From: Anthony G. Basile <blueness@g.o>
96226 +
96227 +We don't want GRSEC's Makefile to change permissions on paths in
96228 +the filesystem.
96229 +
96230 +diff -Naur a/grsecurity/Makefile b/grsecurity/Makefile
96231 +--- a/grsecurity/Makefile 2011-10-19 20:42:50.000000000 -0400
96232 ++++ b/grsecurity/Makefile 2011-10-19 20:45:08.000000000 -0400
96233 +@@ -27,10 +27,4 @@
96234 + ifdef CONFIG_GRKERNSEC_HIDESYM
96235 + extra-y := grsec_hidesym.o
96236 + $(obj)/grsec_hidesym.o:
96237 +- @-chmod -f 500 /boot
96238 +- @-chmod -f 500 /lib/modules
96239 +- @-chmod -f 500 /lib64/modules
96240 +- @-chmod -f 500 /lib32/modules
96241 +- @-chmod -f 700 .
96242 +- @echo ' grsec: protected kernel image paths'
96243 + endif
96244
96245 diff --git a/3.0.8/4425_grsec-pax-without-grsec.patch b/3.0.8/4425_grsec-pax-without-grsec.patch
96246 new file mode 100644
96247 index 0000000..41be0d0
96248 --- /dev/null
96249 +++ b/3.0.8/4425_grsec-pax-without-grsec.patch
96250 @@ -0,0 +1,88 @@
96251 +From: Anthony G. Basile <blueness@g.o>
96252 +
96253 +With grsecurity-2.2.2-2.6.32.38-201104171745, the functions pax_report_leak_to_user and
96254 +pax_report_overflow_from_user in fs/exec.c were consolidated into pax_report_usercopy.
96255 +This patch has been updated to reflect that change.
96256 +--
96257 +From: Jory Pratt <anarchy@g.o>
96258 +Updated patch for kernel 2.6.32
96259 +
96260 +The credits/description from the original version of this patch remain accurate
96261 +and are included below.
96262 +--
96263 +From: Gordon Malm <gengor@g.o>
96264 +
96265 +Allow PaX options to be selected without first selecting CONFIG_GRKERNSEC.
96266 +
96267 +This patch has been updated to keep current with newer kernel versions.
96268 +The original version of this patch contained no credits/description.
96269 +
96270 +diff -Naur a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
96271 +--- a/arch/x86/mm/fault.c 2011-04-17 19:05:03.000000000 -0400
96272 ++++ a/arch/x86/mm/fault.c 2011-04-17 19:20:30.000000000 -0400
96273 +@@ -647,10 +647,12 @@
96274 +
96275 + #ifdef CONFIG_PAX_KERNEXEC
96276 + if (init_mm.start_code <= address && address < init_mm.end_code) {
96277 ++#ifdef CONFIG_GRKERNSEC
96278 + if (current->signal->curr_ip)
96279 + printk(KERN_ERR "PAX: From %pI4: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n",
96280 + &current->signal->curr_ip, current->comm, task_pid_nr(current), current_uid(), current_euid());
96281 + else
96282 ++#endif
96283 + printk(KERN_ERR "PAX: %s:%d, uid/euid: %u/%u, attempted to modify kernel code\n",
96284 + current->comm, task_pid_nr(current), current_uid(), current_euid());
96285 + }
96286 +diff -Naur a/fs/exec.c b/fs/exec.c
96287 +--- a/fs/exec.c 2011-04-17 19:05:03.000000000 -0400
96288 ++++ b/fs/exec.c 2011-04-17 19:20:30.000000000 -0400
96289 +@@ -1958,9 +1958,11 @@
96290 + }
96291 + up_read(&mm->mmap_sem);
96292 + }
96293 ++#ifdef CONFIG_GRKERNSEC
96294 + if (tsk->signal->curr_ip)
96295 + printk(KERN_ERR "PAX: From %pI4: execution attempt in: %s, %08lx-%08lx %08lx\n", &tsk->signal->curr_ip, path_fault, start, end, offset);
96296 + else
96297 ++#endif
96298 + printk(KERN_ERR "PAX: execution attempt in: %s, %08lx-%08lx %08lx\n", path_fault, start, end, offset);
96299 + printk(KERN_ERR "PAX: terminating task: %s(%s):%d, uid/euid: %u/%u, "
96300 + "PC: %p, SP: %p\n", path_exec, tsk->comm, task_pid_nr(tsk),
96301 +@@ -1975,10 +1977,12 @@
96302 + #ifdef CONFIG_PAX_REFCOUNT
96303 + void pax_report_refcount_overflow(struct pt_regs *regs)
96304 + {
96305 ++#ifdef CONFIG_GRKERNSEC
96306 + if (current->signal->curr_ip)
96307 + printk(KERN_ERR "PAX: From %pI4: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n",
96308 + &current->signal->curr_ip, current->comm, task_pid_nr(current), current_uid(), current_euid());
96309 + else
96310 ++#endif
96311 + printk(KERN_ERR "PAX: refcount overflow detected in: %s:%d, uid/euid: %u/%u\n",
96312 + current->comm, task_pid_nr(current), current_uid(), current_euid());
96313 + print_symbol(KERN_ERR "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs));
96314 +@@ -2038,10 +2042,12 @@
96315 +
96316 + NORET_TYPE void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type)
96317 + {
96318 ++#ifdef CONFIG_GRKERNSEC
96319 + if (current->signal->curr_ip)
96320 + printk(KERN_ERR "PAX: From %pI4: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
96321 + &current->signal->curr_ip, to ? "leak" : "overwrite", to ? "from" : "to", ptr, type ? : "unknown", len);
96322 + else
96323 ++#endif
96324 + printk(KERN_ERR "PAX: kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n",
96325 + to ? "leak" : "overwrite", to ? "from" : "to", ptr, type ? : "unknown", len);
96326 + dump_stack();
96327 +diff -Naur a/security/Kconfig b/security/Kconfig
96328 +--- a/security/Kconfig 2011-04-17 19:05:03.000000000 -0400
96329 ++++ b/security/Kconfig 2011-04-17 19:20:30.000000000 -0400
96330 +@@ -29,7 +29,7 @@
96331 +
96332 + config PAX
96333 + bool "Enable various PaX features"
96334 +- depends on GRKERNSEC && (ALPHA || ARM || AVR32 || IA64 || MIPS || PARISC || PPC || SPARC || X86)
96335 ++ depends on (ALPHA || ARM || AVR32 || IA64 || MIPS || PARISC || PPC || SPARC || X86)
96336 + help
96337 + This allows you to enable various PaX features. PaX adds
96338 + intrusion prevention mechanisms to the kernel that reduce
96339
96340 diff --git a/3.0.8/4430_grsec-kconfig-default-gids.patch b/3.0.8/4430_grsec-kconfig-default-gids.patch
96341 new file mode 100644
96342 index 0000000..6a448bf
96343 --- /dev/null
96344 +++ b/3.0.8/4430_grsec-kconfig-default-gids.patch
96345 @@ -0,0 +1,77 @@
96346 +From: Kerin Millar <kerframil@×××××.com>
96347 +
96348 +grsecurity contains a number of options which allow certain protections
96349 +to be applied to or exempted from members of a given group. However, the
96350 +default GIDs specified in the upstream patch are entirely arbitrary and
96351 +there is no telling which (if any) groups the GIDs will correlate with
96352 +on an end-user's system. Because some users don't pay a great deal of
96353 +attention to the finer points of kernel configuration, it is probably
96354 +wise to specify some reasonable defaults so as to stop careless users
96355 +from shooting themselves in the foot.
96356 +
96357 +diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-hardened-r44/grsecurity/Kconfig
96358 +--- linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig 2011-04-17 18:15:55.000000000 -0400
96359 ++++ linux-2.6.32-hardened-r44/grsecurity/Kconfig 2011-04-17 18:37:33.000000000 -0400
96360 +@@ -433,7 +433,7 @@
96361 + config GRKERNSEC_PROC_GID
96362 + int "GID for special group"
96363 + depends on GRKERNSEC_PROC_USERGROUP
96364 +- default 1001
96365 ++ default 10
96366 +
96367 + config GRKERNSEC_PROC_ADD
96368 + bool "Additional restrictions"
96369 +@@ -657,7 +657,7 @@
96370 + config GRKERNSEC_AUDIT_GID
96371 + int "GID for auditing"
96372 + depends on GRKERNSEC_AUDIT_GROUP
96373 +- default 1007
96374 ++ default 100
96375 +
96376 + config GRKERNSEC_EXECLOG
96377 + bool "Exec logging"
96378 +@@ -835,7 +835,7 @@
96379 + config GRKERNSEC_TPE_GID
96380 + int "GID for untrusted users"
96381 + depends on GRKERNSEC_TPE && !GRKERNSEC_TPE_INVERT
96382 +- default 1005
96383 ++ default 100
96384 + help
96385 + Setting this GID determines what group TPE restrictions will be
96386 + *enabled* for. If the sysctl option is enabled, a sysctl option
96387 +@@ -844,7 +844,7 @@
96388 + config GRKERNSEC_TPE_GID
96389 + int "GID for trusted users"
96390 + depends on GRKERNSEC_TPE && GRKERNSEC_TPE_INVERT
96391 +- default 1005
96392 ++ default 10
96393 + help
96394 + Setting this GID determines what group TPE restrictions will be
96395 + *disabled* for. If the sysctl option is enabled, a sysctl option
96396 +@@ -917,7 +917,7 @@
96397 + config GRKERNSEC_SOCKET_ALL_GID
96398 + int "GID to deny all sockets for"
96399 + depends on GRKERNSEC_SOCKET_ALL
96400 +- default 1004
96401 ++ default 65534
96402 + help
96403 + Here you can choose the GID to disable socket access for. Remember to
96404 + add the users you want socket access disabled for to the GID
96405 +@@ -938,7 +938,7 @@
96406 + config GRKERNSEC_SOCKET_CLIENT_GID
96407 + int "GID to deny client sockets for"
96408 + depends on GRKERNSEC_SOCKET_CLIENT
96409 +- default 1003
96410 ++ default 65534
96411 + help
96412 + Here you can choose the GID to disable client socket access for.
96413 + Remember to add the users you want client socket access disabled for to
96414 +@@ -956,7 +956,7 @@
96415 + config GRKERNSEC_SOCKET_SERVER_GID
96416 + int "GID to deny server sockets for"
96417 + depends on GRKERNSEC_SOCKET_SERVER
96418 +- default 1002
96419 ++ default 65534
96420 + help
96421 + Here you can choose the GID to disable server socket access for.
96422 + Remember to add the users you want server socket access disabled for to
96423
96424 diff --git a/3.0.8/4435_grsec-kconfig-gentoo.patch b/3.0.8/4435_grsec-kconfig-gentoo.patch
96425 new file mode 100644
96426 index 0000000..1bc9742
96427 --- /dev/null
96428 +++ b/3.0.8/4435_grsec-kconfig-gentoo.patch
96429 @@ -0,0 +1,315 @@
96430 +From: Anthony G. Basile <blueness@g.o>
96431 +From: Gordon Malm <gengor@g.o>
96432 +From: Jory A. Pratt <anarchy@g.o>
96433 +From: Kerin Millar <kerframil@×××××.com>
96434 +
96435 +Add Hardened Gentoo [server/workstation] predefined grsecurity
96436 +levels. They're designed to provide a comparitively high level of
96437 +security while remaining generally suitable for as great a majority
96438 +of the userbase as possible (particularly new users).
96439 +
96440 +Make Hardened Gentoo [workstation] predefined grsecurity level the
96441 +default. The Hardened Gentoo [server] level is more restrictive
96442 +and conflicts with some software and thus would be less suitable.
96443 +
96444 +The original version of this patch was conceived and created by:
96445 +Ned Ludd <solar@g.o>
96446 +
96447 +diff -Naur a/grsecurity/Kconfig b/grsecurity/Kconfig
96448 +--- a/grsecurity/Kconfig 2011-04-17 19:25:54.000000000 -0400
96449 ++++ b/grsecurity/Kconfig 2011-04-17 19:27:46.000000000 -0400
96450 +@@ -18,7 +18,7 @@
96451 + choice
96452 + prompt "Security Level"
96453 + depends on GRKERNSEC
96454 +- default GRKERNSEC_CUSTOM
96455 ++ default GRKERNSEC_HARDENED_WORKSTATION
96456 +
96457 + config GRKERNSEC_LOW
96458 + bool "Low"
96459 +@@ -191,6 +191,258 @@
96460 + - Restricted sysfs/debugfs
96461 + - Active kernel exploit response
96462 +
96463 ++config GRKERNSEC_HARDENED_SERVER
96464 ++ bool "Hardened Gentoo [server]"
96465 ++ select GRKERNSEC_LINK
96466 ++ select GRKERNSEC_FIFO
96467 ++ select GRKERNSEC_DMESG
96468 ++ select GRKERNSEC_FORKFAIL
96469 ++ select GRKERNSEC_TIME
96470 ++ select GRKERNSEC_SIGNAL
96471 ++ select GRKERNSEC_CHROOT
96472 ++ select GRKERNSEC_CHROOT_SHMAT
96473 ++ select GRKERNSEC_CHROOT_UNIX
96474 ++ select GRKERNSEC_CHROOT_MOUNT
96475 ++ select GRKERNSEC_CHROOT_FCHDIR
96476 ++ select GRKERNSEC_CHROOT_PIVOT
96477 ++ select GRKERNSEC_CHROOT_DOUBLE
96478 ++ select GRKERNSEC_CHROOT_CHDIR
96479 ++ select GRKERNSEC_CHROOT_MKNOD
96480 ++ select GRKERNSEC_CHROOT_CAPS
96481 ++ select GRKERNSEC_CHROOT_SYSCTL
96482 ++ select GRKERNSEC_CHROOT_FINDTASK
96483 ++ select GRKERNSEC_PROC
96484 ++ select GRKERNSEC_PROC_MEMMAP if (PAX_NOEXEC || PAX_ASLR)
96485 ++ select GRKERNSEC_HIDESYM
96486 ++ select GRKERNSEC_BRUTE
96487 ++ select GRKERNSEC_PROC_USERGROUP
96488 ++ select GRKERNSEC_KMEM
96489 ++ select GRKERNSEC_RESLOG
96490 ++ select GRKERNSEC_RANDNET
96491 ++ select GRKERNSEC_PROC_ADD
96492 ++ select GRKERNSEC_CHROOT_CHMOD
96493 ++ select GRKERNSEC_CHROOT_NICE
96494 ++ select GRKERNSEC_AUDIT_MOUNT
96495 ++ select GRKERNSEC_MODHARDEN if (MODULES)
96496 ++ select GRKERNSEC_HARDEN_PTRACE
96497 ++ select GRKERNSEC_VM86 if (X86_32)
96498 ++ select GRKERNSEC_IO if (X86)
96499 ++ select GRKERNSEC_PROC_IPADDR
96500 ++ select GRKERNSEC_RWXMAP_LOG
96501 ++ select GRKERNSEC_SYSCTL
96502 ++ select GRKERNSEC_SYSCTL_ON
96503 ++ select PAX
96504 ++ select PAX_RANDUSTACK
96505 ++ select PAX_ASLR
96506 ++ select PAX_RANDMMAP
96507 ++ select PAX_NOEXEC
96508 ++ select PAX_MPROTECT
96509 ++ select PAX_EI_PAX
96510 ++ select PAX_PT_PAX_FLAGS
96511 ++ select PAX_HAVE_ACL_FLAGS
96512 ++ select PAX_KERNEXEC if ((PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN)
96513 ++ select PAX_MEMORY_UDEREF if (X86 && !XEN)
96514 ++ select PAX_RANDKSTACK if (X86_TSC && !X86_64)
96515 ++ select PAX_SEGMEXEC if (X86_32)
96516 ++ select PAX_PAGEEXEC
96517 ++ select PAX_EMUPLT if (ALPHA || PARISC || SPARC32 || SPARC64)
96518 ++ select PAX_EMUTRAMP if (PARISC)
96519 ++ select PAX_EMUSIGRT if (PARISC)
96520 ++ select PAX_ETEXECRELOCS if (ALPHA || IA64 || PARISC)
96521 ++ select PAX_REFCOUNT if (X86 || SPARC64)
96522 ++ select PAX_USERCOPY if ((X86 || PPC || SPARC32 || SPARC64) && (SLAB || SLUB || SLOB))
96523 ++ select PAX_MEMORY_SANITIZE
96524 ++ help
96525 ++ If you say Y here, a configuration for grsecurity/PaX features
96526 ++ will be used that is endorsed by the Hardened Gentoo project.
96527 ++ These pre-defined security levels are designed to provide a high
96528 ++ level of security while minimizing incompatibilities with a majority
96529 ++ of Gentoo's available software.
96530 ++
96531 ++ This "Hardened Gentoo [server]" level is identical to the
96532 ++ "Hardened Gentoo [workstation]" level, but with GRKERNSEC_IO,
96533 ++ and GRKERNSEC_PROC_ADD enabled. Accordingly, this is the preferred
96534 ++ security level if the system will not be utilizing software incompatible
96535 ++ with these features.
96536 ++
96537 ++ When this level is selected, some security features will be forced on,
96538 ++ while others will default to their suggested values of off or on. The
96539 ++ later can be tweaked at the user's discretion, but may cause problems
96540 ++ in some situations. You can fully customize all grsecurity/PaX features
96541 ++ by choosing "Custom" in the Security Level menu. It may be helpful to
96542 ++ inherit the options selected by this security level as a starting point.
96543 ++ To accomplish this, select this security level, then exit the menuconfig
96544 ++ interface, saving changes when prompted. Run make menuconfig again and
96545 ++ select the "Custom" level.
96546 ++
96547 ++config GRKERNSEC_HARDENED_WORKSTATION
96548 ++ bool "Hardened Gentoo [workstation]"
96549 ++ select GRKERNSEC_LINK
96550 ++ select GRKERNSEC_FIFO
96551 ++ select GRKERNSEC_DMESG
96552 ++ select GRKERNSEC_FORKFAIL
96553 ++ select GRKERNSEC_TIME
96554 ++ select GRKERNSEC_SIGNAL
96555 ++ select GRKERNSEC_CHROOT
96556 ++ select GRKERNSEC_CHROOT_SHMAT
96557 ++ select GRKERNSEC_CHROOT_UNIX
96558 ++ select GRKERNSEC_CHROOT_MOUNT
96559 ++ select GRKERNSEC_CHROOT_FCHDIR
96560 ++ select GRKERNSEC_CHROOT_PIVOT
96561 ++ select GRKERNSEC_CHROOT_DOUBLE
96562 ++ select GRKERNSEC_CHROOT_CHDIR
96563 ++ select GRKERNSEC_CHROOT_MKNOD
96564 ++ select GRKERNSEC_CHROOT_CAPS
96565 ++ select GRKERNSEC_CHROOT_SYSCTL
96566 ++ select GRKERNSEC_CHROOT_FINDTASK
96567 ++ select GRKERNSEC_PROC
96568 ++ select GRKERNSEC_PROC_MEMMAP if (PAX_NOEXEC || PAX_ASLR)
96569 ++ select GRKERNSEC_HIDESYM
96570 ++ select GRKERNSEC_BRUTE
96571 ++ select GRKERNSEC_PROC_USERGROUP
96572 ++ select GRKERNSEC_KMEM
96573 ++ select GRKERNSEC_RESLOG
96574 ++ select GRKERNSEC_RANDNET
96575 ++ # select GRKERNSEC_PROC_ADD
96576 ++ select GRKERNSEC_CHROOT_CHMOD
96577 ++ select GRKERNSEC_CHROOT_NICE
96578 ++ select GRKERNSEC_AUDIT_MOUNT
96579 ++ select GRKERNSEC_MODHARDEN if (MODULES)
96580 ++ select GRKERNSEC_HARDEN_PTRACE
96581 ++ select GRKERNSEC_VM86 if (X86_32)
96582 ++ # select GRKERNSEC_IO if (X86)
96583 ++ select GRKERNSEC_PROC_IPADDR
96584 ++ select GRKERNSEC_RWXMAP_LOG
96585 ++ select GRKERNSEC_SYSCTL
96586 ++ select GRKERNSEC_SYSCTL_ON
96587 ++ select PAX
96588 ++ select PAX_RANDUSTACK
96589 ++ select PAX_ASLR
96590 ++ select PAX_RANDMMAP
96591 ++ select PAX_NOEXEC
96592 ++ select PAX_MPROTECT
96593 ++ select PAX_EI_PAX
96594 ++ select PAX_PT_PAX_FLAGS
96595 ++ select PAX_HAVE_ACL_FLAGS
96596 ++ # select PAX_KERNEXEC if ((PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN)
96597 ++ # select PAX_MEMORY_UDEREF if (X86 && !XEN)
96598 ++ select PAX_RANDKSTACK if (X86_TSC && !X86_64)
96599 ++ select PAX_SEGMEXEC if (X86_32)
96600 ++ select PAX_PAGEEXEC
96601 ++ select PAX_EMUPLT if (ALPHA || PARISC || SPARC32 || SPARC64)
96602 ++ select PAX_EMUTRAMP if (PARISC)
96603 ++ select PAX_EMUSIGRT if (PARISC)
96604 ++ select PAX_ETEXECRELOCS if (ALPHA || IA64 || PARISC)
96605 ++ select PAX_REFCOUNT if (X86 || SPARC64)
96606 ++ select PAX_USERCOPY if ((X86 || PPC || SPARC32 || SPARC64) && (SLAB || SLUB || SLOB))
96607 ++ select PAX_MEMORY_SANITIZE
96608 ++ help
96609 ++ If you say Y here, a configuration for grsecurity/PaX features
96610 ++ will be used that is endorsed by the Hardened Gentoo project.
96611 ++ These pre-defined security levels are designed to provide a high
96612 ++ level of security while minimizing incompatibilities with a majority
96613 ++ of Gentoo's available software.
96614 ++
96615 ++ This "Hardened Gentoo [workstation]" level is identical to the
96616 ++ "Hardened Gentoo [server]" level, but with GRKERNSEC_IO and
96617 ++ GRKERNSEC_PROC_ADD disabled. Accordingly, this is the preferred
96618 ++ security level if the system will be utilizing software incompatible
96619 ++ with these features.
96620 ++
96621 ++ When this level is selected, some security features will be forced on,
96622 ++ while others will default to their suggested values of off or on. The
96623 ++ later can be tweaked at the user's discretion, but may cause problems
96624 ++ in some situations. You can fully customize all grsecurity/PaX features
96625 ++ by choosing "Custom" in the Security Level menu. It may be helpful to
96626 ++ inherit the options selected by this security level as a starting point.
96627 ++ To accomplish this, select this security level, then exit the menuconfig
96628 ++ interface, saving changes when prompted. Run make menuconfig again and
96629 ++ select the "Custom" level.
96630 ++
96631 ++config GRKERNSEC_HARDENED_VIRTUALIZATION
96632 ++ bool "Hardened Gentoo [virtualization]"
96633 ++ select GRKERNSEC_LINK
96634 ++ select GRKERNSEC_FIFO
96635 ++ select GRKERNSEC_DMESG
96636 ++ select GRKERNSEC_FORKFAIL
96637 ++ select GRKERNSEC_TIME
96638 ++ select GRKERNSEC_SIGNAL
96639 ++ select GRKERNSEC_CHROOT
96640 ++ select GRKERNSEC_CHROOT_SHMAT
96641 ++ select GRKERNSEC_CHROOT_UNIX
96642 ++ select GRKERNSEC_CHROOT_MOUNT
96643 ++ select GRKERNSEC_CHROOT_FCHDIR
96644 ++ select GRKERNSEC_CHROOT_PIVOT
96645 ++ select GRKERNSEC_CHROOT_DOUBLE
96646 ++ select GRKERNSEC_CHROOT_CHDIR
96647 ++ select GRKERNSEC_CHROOT_MKNOD
96648 ++ select GRKERNSEC_CHROOT_CAPS
96649 ++ select GRKERNSEC_CHROOT_SYSCTL
96650 ++ select GRKERNSEC_CHROOT_FINDTASK
96651 ++ select GRKERNSEC_PROC
96652 ++ select GRKERNSEC_PROC_MEMMAP if (PAX_NOEXEC || PAX_ASLR)
96653 ++ select GRKERNSEC_HIDESYM
96654 ++ select GRKERNSEC_BRUTE
96655 ++ select GRKERNSEC_PROC_USERGROUP
96656 ++ select GRKERNSEC_KMEM
96657 ++ select GRKERNSEC_RESLOG
96658 ++ select GRKERNSEC_RANDNET
96659 ++ # select GRKERNSEC_PROC_ADD
96660 ++ select GRKERNSEC_CHROOT_CHMOD
96661 ++ select GRKERNSEC_CHROOT_NICE
96662 ++ select GRKERNSEC_AUDIT_MOUNT
96663 ++ select GRKERNSEC_MODHARDEN if (MODULES)
96664 ++ select GRKERNSEC_HARDEN_PTRACE
96665 ++ select GRKERNSEC_VM86 if (X86_32)
96666 ++ # select GRKERNSEC_IO if (X86)
96667 ++ select GRKERNSEC_PROC_IPADDR
96668 ++ select GRKERNSEC_RWXMAP_LOG
96669 ++ select GRKERNSEC_SYSCTL
96670 ++ select GRKERNSEC_SYSCTL_ON
96671 ++ select PAX
96672 ++ select PAX_RANDUSTACK
96673 ++ select PAX_ASLR
96674 ++ select PAX_RANDMMAP
96675 ++ select PAX_NOEXEC
96676 ++ select PAX_MPROTECT
96677 ++ select PAX_EI_PAX
96678 ++ select PAX_PT_PAX_FLAGS
96679 ++ select PAX_HAVE_ACL_FLAGS
96680 ++ # select PAX_KERNEXEC if ((PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN)
96681 ++ # select PAX_MEMORY_UDEREF if (X86 && !XEN)
96682 ++ select PAX_RANDKSTACK if (X86_TSC && !X86_64)
96683 ++ select PAX_SEGMEXEC if (X86_32)
96684 ++ select PAX_PAGEEXEC
96685 ++ select PAX_EMUPLT if (ALPHA || PARISC || SPARC32 || SPARC64)
96686 ++ select PAX_EMUTRAMP if (PARISC)
96687 ++ select PAX_EMUSIGRT if (PARISC)
96688 ++ select PAX_ETEXECRELOCS if (ALPHA || IA64 || PARISC)
96689 ++ select PAX_REFCOUNT if (X86 || SPARC64)
96690 ++ select PAX_USERCOPY if ((X86 || PPC || SPARC32 || SPARC64) && (SLAB || SLUB || SLOB))
96691 ++ select PAX_MEMORY_SANITIZE
96692 ++ help
96693 ++ If you say Y here, a configuration for grsecurity/PaX features
96694 ++ will be used that is endorsed by the Hardened Gentoo project.
96695 ++ These pre-defined security levels are designed to provide a high
96696 ++ level of security while minimizing incompatibilities with a majority
96697 ++ of Gentoo's available software.
96698 ++
96699 ++ This "Hardened Gentoo [virtualization]" level is identical to the
96700 ++ "Hardened Gentoo [workstation]" level, but with the PAX_KERNEXEC and
96701 ++ PAX_MEMORY_UDEREF defaulting to off. Accordingly, this is the preferred
96702 ++ security level if the system will be utilizing virtualization software
96703 ++ incompatible with these features, like VirtualBox or kvm.
96704 ++
96705 ++ When this level is selected, some security features will be forced on,
96706 ++ while others will default to their suggested values of off or on. The
96707 ++ later can be tweaked at the user's discretion, but may cause problems
96708 ++ in some situations. You can fully customize all grsecurity/PaX features
96709 ++ by choosing "Custom" in the Security Level menu. It may be helpful to
96710 ++ inherit the options selected by this security level as a starting point.
96711 ++ To accomplish this, select this security level, then exit the menuconfig
96712 ++ interface, saving changes when prompted. Run make menuconfig again and
96713 ++ select the "Custom" level.
96714 ++
96715 + config GRKERNSEC_CUSTOM
96716 + bool "Custom"
96717 + help
96718 +diff -Naur a/security/Kconfig b/security/Kconfig
96719 +--- a/security/Kconfig 2011-09-21 07:20:02.000000000 -0400
96720 ++++ b/security/Kconfig 2011-09-21 07:25:50.000000000 -0400
96721 +@@ -322,9 +322,10 @@
96722 +
96723 + config PAX_KERNEXEC
96724 + bool "Enforce non-executable kernel pages"
96725 +- depends on (PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN
96726 ++ depends on (PPC || X86) && (!X86_32 || X86_WP_WORKS_OK) && !XEN && !GRKERNSEC_HARDENED_VIRTUALIZATION
96727 + select PAX_PER_CPU_PGD if X86_64 || (X86_32 && X86_PAE)
96728 + select PAX_KERNEXEC_PLUGIN if X86_64
96729 ++ default y if GRKERNSEC_HARDENED_WORKSTATION
96730 + help
96731 + This is the kernel land equivalent of PAGEEXEC and MPROTECT,
96732 + that is, enabling this option will make it harder to inject
96733 +@@ -487,8 +488,9 @@
96734 +
96735 + config PAX_MEMORY_UDEREF
96736 + bool "Prevent invalid userland pointer dereference"
96737 +- depends on X86 && !UML_X86 && !XEN
96738 ++ depends on X86 && !UML_X86 && !XEN && !GRKERNSEC_HARDENED_VIRTUALIZATION
96739 + select PAX_PER_CPU_PGD if X86_64
96740 ++ default y if GRKERNSEC_HARDENED_WORKSTATION
96741 + help
96742 + By saying Y here the kernel will be prevented from dereferencing
96743 + userland pointers in contexts where the kernel expects only kernel
96744 +
96745
96746 diff --git a/3.0.8/4437-grsec-kconfig-proc-user.patch b/3.0.8/4437-grsec-kconfig-proc-user.patch
96747 new file mode 100644
96748 index 0000000..c588683
96749 --- /dev/null
96750 +++ b/3.0.8/4437-grsec-kconfig-proc-user.patch
96751 @@ -0,0 +1,26 @@
96752 +From: Anthony G. Basile <blueness@g.o>
96753 +
96754 +Address the mutually exclusive options GRKERNSEC_PROC_USER and GRKERNSEC_PROC_USERGROUP
96755 +in a different way to avoid bug #366019. This patch should eventually go upstream.
96756 +
96757 +diff -Naur linux-2.6.39-hardened-r4.orig//grsecurity/Kconfig linux-2.6.39-hardened-r4/grsecurity/Kconfig
96758 +--- a/grsecurity/Kconfig 2011-06-29 10:02:56.000000000 -0400
96759 ++++ b/grsecurity/Kconfig 2011-06-29 10:08:07.000000000 -0400
96760 +@@ -666,7 +666,7 @@
96761 +
96762 + config GRKERNSEC_PROC_USER
96763 + bool "Restrict /proc to user only"
96764 +- depends on GRKERNSEC_PROC
96765 ++ depends on GRKERNSEC_PROC && !GRKERNSEC_PROC_USERGROUP
96766 + help
96767 + If you say Y here, non-root users will only be able to view their own
96768 + processes, and restricts them from viewing network-related information,
96769 +@@ -674,7 +674,7 @@
96770 +
96771 + config GRKERNSEC_PROC_USERGROUP
96772 + bool "Allow special group"
96773 +- depends on GRKERNSEC_PROC && !GRKERNSEC_PROC_USER
96774 ++ depends on GRKERNSEC_PROC
96775 + help
96776 + If you say Y here, you will be able to select a group that will be
96777 + able to view all processes and network-related information. If you've
96778
96779 diff --git a/3.0.8/4440_selinux-avc_audit-log-curr_ip.patch b/3.0.8/4440_selinux-avc_audit-log-curr_ip.patch
96780 new file mode 100644
96781 index 0000000..0fd5d2d
96782 --- /dev/null
96783 +++ b/3.0.8/4440_selinux-avc_audit-log-curr_ip.patch
96784 @@ -0,0 +1,73 @@
96785 +From: Anthony G. Basile <blueness@g.o>
96786 +
96787 +Removed deprecated NIPQUAD macro in favor of %pI4.
96788 +See bug #346333.
96789 +
96790 +---
96791 +From: Gordon Malm <gengor@g.o>
96792 +
96793 +This is a reworked version of the original
96794 +*_selinux-avc_audit-log-curr_ip.patch carried in earlier releases of
96795 +hardened-sources.
96796 +
96797 +Dropping the patch, or simply fixing the #ifdef of the original patch
96798 +could break automated logging setups so this route was necessary.
96799 +
96800 +Suggestions for improving the help text are welcome.
96801 +
96802 +The original patch's description is still accurate and included below.
96803 +
96804 +---
96805 +Provides support for a new field ipaddr within the SELinux
96806 +AVC audit log, relying in task_struct->curr_ip (ipv4 only)
96807 +provided by grSecurity patch to be applied before.
96808 +
96809 +Signed-off-by: Lorenzo Hernandez Garcia-Hierro <lorenzo@×××.org>
96810 +---
96811 +
96812 +diff -Naur linux-2.6.38-hardened-r1.orig/grsecurity/Kconfig linux-2.6.38-hardened-r1/grsecurity/Kconfig
96813 +--- linux-2.6.38-hardened-r1.orig/grsecurity/Kconfig 2011-04-17 19:25:54.000000000 -0400
96814 ++++ linux-2.6.38-hardened-r1/grsecurity/Kconfig 2011-04-17 19:32:53.000000000 -0400
96815 +@@ -1265,6 +1265,27 @@
96816 + menu "Logging Options"
96817 + depends on GRKERNSEC
96818 +
96819 ++config GRKERNSEC_SELINUX_AVC_LOG_IPADDR
96820 ++ def_bool n
96821 ++ prompt "Add source IP address to SELinux AVC log messages"
96822 ++ depends on GRKERNSEC && SECURITY_SELINUX
96823 ++ help
96824 ++ If you say Y here, a new field "ipaddr=" will be added to many SELinux
96825 ++ AVC log messages. The value of this field in any given message
96826 ++ represents the source IP address of the remote machine/user that created
96827 ++ the offending process.
96828 ++
96829 ++ This information is sourced from task_struct->curr_ip provided by
96830 ++ grsecurity's GRKERNSEC top-level configuration option. One limitation
96831 ++ is that only IPv4 is supported.
96832 ++
96833 ++ In many instances SELinux AVC log messages already log a superior level
96834 ++ of information that also includes source port and destination ip/port.
96835 ++ Additionally, SELinux's AVC log code supports IPv6.
96836 ++
96837 ++ However, grsecurity's task_struct->curr_ip will sometimes (often?)
96838 ++ provide the offender's IP address where stock SELinux logging fails to.
96839 ++
96840 + config GRKERNSEC_FLOODTIME
96841 + int "Seconds in between log messages (minimum)"
96842 + default 10
96843 +diff -Naur linux-2.6.38-hardened-r1.orig/security/selinux/avc.c linux-2.6.38-hardened-r1/security/selinux/avc.c
96844 +--- linux-2.6.38-hardened-r1.orig/security/selinux/avc.c 2011-04-17 19:04:47.000000000 -0400
96845 ++++ linux-2.6.38-hardened-r1/security/selinux/avc.c 2011-04-17 19:32:53.000000000 -0400
96846 +@@ -139,6 +139,11 @@
96847 + char *scontext;
96848 + u32 scontext_len;
96849 +
96850 ++#ifdef CONFIG_GRKERNSEC_SELINUX_AVC_LOG_IPADDR
96851 ++ if (current->signal->curr_ip)
96852 ++ audit_log_format(ab, "ipaddr=%pI4 ", &current->signal->curr_ip);
96853 ++#endif
96854 ++
96855 + rc = security_sid_to_context(ssid, &scontext, &scontext_len);
96856 + if (rc)
96857 + audit_log_format(ab, "ssid=%d", ssid);
96858
96859 diff --git a/3.0.8/4445_disable-compat_vdso.patch b/3.0.8/4445_disable-compat_vdso.patch
96860 new file mode 100644
96861 index 0000000..3b76b6c
96862 --- /dev/null
96863 +++ b/3.0.8/4445_disable-compat_vdso.patch
96864 @@ -0,0 +1,46 @@
96865 +No need to wrap vdso calls as gentoo does not use any version of
96866 +glibc <=2.3.3
96867 +---
96868 +From: Gordon Malm <gengor@g.o>
96869 +From: Kerin Millar <kerframil@×××××.com>
96870 +From: Jory A. Pratt <anarchy@g.o>
96871 +
96872 +COMPAT_VDSO is inappropriate for any modern Hardened Gentoo system. It
96873 +conflicts with various parts of PaX, crashing the system if enabled
96874 +while PaX's NOEXEC or UDEREF features are active. Moreover, it prevents
96875 +a number of important PaX options from appearing in the configuration
96876 +menu, including all PaX NOEXEC implementations. Unfortunately, the
96877 +reason for the disappearance of these PaX configuration options is
96878 +often far from obvious to inexperienced users.
96879 +
96880 +Therefore, we disable the COMPAT_VDSO menu entry entirely. However,
96881 +COMPAT_VDSO operation can still be enabled via bootparam and sysctl
96882 +interfaces. Consequently, we must also disable the ability to select
96883 +COMPAT_VDSO operation at boot or runtime. Here we patch the kernel so
96884 +that selecting COMPAT_VDSO operation at boot/runtime has no effect if
96885 +conflicting PaX options are enabled, leaving VDSO_ENABLED operation
96886 +intact.
96887 +
96888 +Closes bug: http://bugs.gentoo.org/show_bug.cgi?id=210138
96889 +
96890 +diff -urp a/arch/x86/Kconfig b/arch/x86/Kconfig
96891 +--- a/arch/x86/Kconfig 2009-07-31 01:36:57.323857684 +0100
96892 ++++ b/arch/x86/Kconfig 2009-07-31 01:51:39.395749681 +0100
96893 +@@ -1638,17 +1638,8 @@
96894 +
96895 + config COMPAT_VDSO
96896 + def_bool n
96897 +- prompt "Compat VDSO support"
96898 + depends on X86_32 || IA32_EMULATION
96899 + depends on !PAX_NOEXEC && !PAX_MEMORY_UDEREF
96900 +- ---help---
96901 +- Map the 32-bit VDSO to the predictable old-style address too.
96902 +-
96903 +- Say N here if you are running a sufficiently recent glibc
96904 +- version (2.3.3 or later), to remove the high-mapped
96905 +- VDSO mapping and to exclusively use the randomized VDSO.
96906 +-
96907 +- If unsure, say Y.
96908 +
96909 + config CMDLINE_BOOL
96910 + bool "Built-in kernel command line"