Magellan Linux

Annotation of /trunk/kernel26-alx/patches-2.6.27-r3/0111-2.6.27.12-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1176 - (hide annotations) (download)
Thu Oct 14 15:11:06 2010 UTC (13 years, 8 months ago) by niro
File size: 225444 byte(s)
-2.6.27-alx-r3: new magellan 0.5.2 kernel
1 niro 1176 diff --git a/arch/Kconfig b/arch/Kconfig
2     index 364c6da..1d07625 100644
3     --- a/arch/Kconfig
4     +++ b/arch/Kconfig
5     @@ -46,6 +46,9 @@ config HAVE_EFFICIENT_UNALIGNED_ACCESS
6     See Documentation/unaligned-memory-access.txt for more
7     information on the topic of unaligned memory accesses.
8    
9     +config HAVE_SYSCALL_WRAPPERS
10     + bool
11     +
12     config KRETPROBES
13     def_bool y
14     depends on KPROBES && HAVE_KRETPROBES
15     diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
16     index 5fc61e2..36a93f8 100644
17     --- a/arch/alpha/kernel/entry.S
18     +++ b/arch/alpha/kernel/entry.S
19     @@ -894,9 +894,9 @@ sys_getxpid:
20     .end sys_getxpid
21    
22     .align 4
23     - .globl sys_pipe
24     - .ent sys_pipe
25     -sys_pipe:
26     + .globl sys_alpha_pipe
27     + .ent sys_alpha_pipe
28     +sys_alpha_pipe:
29     lda $sp, -16($sp)
30     stq $26, 0($sp)
31     .prologue 0
32     @@ -914,7 +914,7 @@ sys_pipe:
33     stq $1, 80+16($sp)
34     1: lda $sp, 16($sp)
35     ret
36     -.end sys_pipe
37     +.end sys_alpha_pipe
38    
39     .align 4
40     .globl sys_execve
41     diff --git a/arch/alpha/kernel/systbls.S b/arch/alpha/kernel/systbls.S
42     index ba914af..9d9e3a9 100644
43     --- a/arch/alpha/kernel/systbls.S
44     +++ b/arch/alpha/kernel/systbls.S
45     @@ -52,7 +52,7 @@ sys_call_table:
46     .quad sys_setpgid
47     .quad alpha_ni_syscall /* 40 */
48     .quad sys_dup
49     - .quad sys_pipe
50     + .quad sys_alpha_pipe
51     .quad osf_set_program_attributes
52     .quad alpha_ni_syscall
53     .quad sys_open /* 45 */
54     diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
55     index 09a061c..9ca8d13 100644
56     --- a/arch/arm/kernel/calls.S
57     +++ b/arch/arm/kernel/calls.S
58     @@ -98,7 +98,7 @@
59     CALL(sys_uselib)
60     CALL(sys_swapon)
61     CALL(sys_reboot)
62     - CALL(OBSOLETE(old_readdir)) /* used by libc4 */
63     + CALL(OBSOLETE(sys_old_readdir)) /* used by libc4 */
64     /* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */
65     CALL(sys_munmap)
66     CALL(sys_truncate)
67     diff --git a/arch/cris/arch-v10/kernel/entry.S b/arch/cris/arch-v10/kernel/entry.S
68     index 3a65f32..2485b3e 100644
69     --- a/arch/cris/arch-v10/kernel/entry.S
70     +++ b/arch/cris/arch-v10/kernel/entry.S
71     @@ -691,7 +691,7 @@ sys_call_table:
72     .long sys_uselib
73     .long sys_swapon
74     .long sys_reboot
75     - .long old_readdir
76     + .long sys_old_readdir
77     .long old_mmap /* 90 */
78     .long sys_munmap
79     .long sys_truncate
80     diff --git a/arch/cris/arch-v32/kernel/entry.S b/arch/cris/arch-v32/kernel/entry.S
81     index eebbaba..149430c 100644
82     --- a/arch/cris/arch-v32/kernel/entry.S
83     +++ b/arch/cris/arch-v32/kernel/entry.S
84     @@ -614,7 +614,7 @@ sys_call_table:
85     .long sys_uselib
86     .long sys_swapon
87     .long sys_reboot
88     - .long old_readdir
89     + .long sys_old_readdir
90     .long old_mmap /* 90 */
91     .long sys_munmap
92     .long sys_truncate
93     diff --git a/arch/h8300/kernel/syscalls.S b/arch/h8300/kernel/syscalls.S
94     index 54e21c3..4eb67fa 100644
95     --- a/arch/h8300/kernel/syscalls.S
96     +++ b/arch/h8300/kernel/syscalls.S
97     @@ -103,7 +103,7 @@ SYMBOL_NAME_LABEL(sys_call_table)
98     .long SYMBOL_NAME(sys_uselib)
99     .long SYMBOL_NAME(sys_swapon)
100     .long SYMBOL_NAME(sys_reboot)
101     - .long SYMBOL_NAME(old_readdir)
102     + .long SYMBOL_NAME(sys_old_readdir)
103     .long SYMBOL_NAME(old_mmap) /* 90 */
104     .long SYMBOL_NAME(sys_munmap)
105     .long SYMBOL_NAME(sys_truncate)
106     diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
107     index ff88c48..0a67464 100644
108     --- a/arch/ia64/ia32/ia32_entry.S
109     +++ b/arch/ia64/ia32/ia32_entry.S
110     @@ -215,7 +215,7 @@ ia32_syscall_table:
111     data8 sys_mkdir
112     data8 sys_rmdir /* 40 */
113     data8 sys_dup
114     - data8 sys32_pipe
115     + data8 sys_ia64_pipe
116     data8 compat_sys_times
117     data8 sys_ni_syscall /* old prof syscall holder */
118     data8 sys32_brk /* 45 */
119     diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
120     index d535833..206d5d8 100644
121     --- a/arch/ia64/include/asm/unistd.h
122     +++ b/arch/ia64/include/asm/unistd.h
123     @@ -363,7 +363,7 @@ struct pt_regs;
124     struct sigaction;
125     long sys_execve(char __user *filename, char __user * __user *argv,
126     char __user * __user *envp, struct pt_regs *regs);
127     -asmlinkage long sys_pipe(void);
128     +asmlinkage long sys_ia64_pipe(void);
129     asmlinkage long sys_rt_sigaction(int sig,
130     const struct sigaction __user *act,
131     struct sigaction __user *oact,
132     diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
133     index 0dd6c14..f6e8b63 100644
134     --- a/arch/ia64/kernel/entry.S
135     +++ b/arch/ia64/kernel/entry.S
136     @@ -1436,7 +1436,7 @@ sys_call_table:
137     data8 sys_mkdir // 1055
138     data8 sys_rmdir
139     data8 sys_dup
140     - data8 sys_pipe
141     + data8 sys_ia64_pipe
142     data8 sys_times
143     data8 ia64_brk // 1060
144     data8 sys_setgid
145     diff --git a/arch/ia64/kernel/sys_ia64.c b/arch/ia64/kernel/sys_ia64.c
146     index bcbb6d8..92ed83f 100644
147     --- a/arch/ia64/kernel/sys_ia64.c
148     +++ b/arch/ia64/kernel/sys_ia64.c
149     @@ -154,7 +154,7 @@ out:
150     * and r9) as this is faster than doing a copy_to_user().
151     */
152     asmlinkage long
153     -sys_pipe (void)
154     +sys_ia64_pipe (void)
155     {
156     struct pt_regs *regs = task_pt_regs(current);
157     int fd[2];
158     diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
159     index f28404d..25b2176 100644
160     --- a/arch/m68k/kernel/entry.S
161     +++ b/arch/m68k/kernel/entry.S
162     @@ -513,7 +513,7 @@ sys_call_table:
163     .long sys_uselib
164     .long sys_swapon
165     .long sys_reboot
166     - .long old_readdir
167     + .long sys_old_readdir
168     .long old_mmap /* 90 */
169     .long sys_munmap
170     .long sys_truncate
171     diff --git a/arch/m68knommu/kernel/syscalltable.S b/arch/m68knommu/kernel/syscalltable.S
172     index 812f8d8..5c3e3f6 100644
173     --- a/arch/m68knommu/kernel/syscalltable.S
174     +++ b/arch/m68knommu/kernel/syscalltable.S
175     @@ -107,7 +107,7 @@ ENTRY(sys_call_table)
176     .long sys_uselib
177     .long sys_ni_syscall /* sys_swapon */
178     .long sys_reboot
179     - .long old_readdir
180     + .long sys_old_readdir
181     .long old_mmap /* 90 */
182     .long sys_munmap
183     .long sys_truncate
184     diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
185     index 5e75a31..61906f6 100644
186     --- a/arch/mips/kernel/scall32-o32.S
187     +++ b/arch/mips/kernel/scall32-o32.S
188     @@ -401,7 +401,7 @@ einval: li v0, -EINVAL
189     sys sys_uselib 1
190     sys sys_swapon 2
191     sys sys_reboot 3
192     - sys old_readdir 3
193     + sys sys_old_readdir 3
194     sys old_mmap 6 /* 4090 */
195     sys sys_munmap 2
196     sys sys_truncate 2
197     diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
198     index b7cbb14..7fc6aba 100644
199     --- a/arch/mn10300/kernel/entry.S
200     +++ b/arch/mn10300/kernel/entry.S
201     @@ -477,7 +477,7 @@ ENTRY(sys_call_table)
202     .long sys_uselib
203     .long sys_swapon
204     .long sys_reboot
205     - .long old_readdir
206     + .long sys_old_readdir
207     .long old_mmap /* 90 */
208     .long sys_munmap
209     .long sys_truncate
210     diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
211     index 587da5e..a2b228f 100644
212     --- a/arch/powerpc/Kconfig
213     +++ b/arch/powerpc/Kconfig
214     @@ -122,6 +122,7 @@ config PPC
215     select HAVE_DMA_ATTRS if PPC64
216     select USE_GENERIC_SMP_HELPERS if SMP
217     select HAVE_OPROFILE
218     + select HAVE_SYSCALL_WRAPPERS if PPC64
219    
220     config EARLY_PRINTK
221     bool
222     diff --git a/arch/powerpc/include/asm/systbl.h b/arch/powerpc/include/asm/systbl.h
223     index f6cc7a4..180d5ea 100644
224     --- a/arch/powerpc/include/asm/systbl.h
225     +++ b/arch/powerpc/include/asm/systbl.h
226     @@ -92,7 +92,7 @@ COMPAT_SYS_SPU(readlink)
227     SYSCALL(uselib)
228     SYSCALL(swapon)
229     SYSCALL(reboot)
230     -SYSX(sys_ni_syscall,compat_sys_old_readdir,old_readdir)
231     +SYSX(sys_ni_syscall,compat_sys_old_readdir,sys_old_readdir)
232     SYSCALL_SPU(mmap)
233     SYSCALL_SPU(munmap)
234     SYSCALL_SPU(truncate)
235     diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig
236     index 97619fd..ddc2a30 100644
237     --- a/arch/powerpc/platforms/pseries/Kconfig
238     +++ b/arch/powerpc/platforms/pseries/Kconfig
239     @@ -54,7 +54,7 @@ config PPC_SMLPAR
240    
241     config CMM
242     tristate "Collaborative memory management"
243     - depends on PPC_SMLPAR
244     + depends on PPC_SMLPAR && !CRASH_DUMP
245     default y
246     help
247     Select this option, if you want to enable the kernel interface
248     diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
249     index 8d41908..f9b3dcd 100644
250     --- a/arch/s390/Kconfig
251     +++ b/arch/s390/Kconfig
252     @@ -70,6 +70,7 @@ mainmenu "Linux Kernel Configuration"
253    
254     config S390
255     def_bool y
256     + select HAVE_SYSCALL_WRAPPERS
257     select HAVE_OPROFILE
258     select HAVE_KPROBES
259     select HAVE_KRETPROBES
260     diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
261     index 328a20e..93a5c96 100644
262     --- a/arch/s390/kernel/compat_wrapper.S
263     +++ b/arch/s390/kernel/compat_wrapper.S
264     @@ -549,7 +549,7 @@ sys32_setdomainname_wrapper:
265     .globl sys32_newuname_wrapper
266     sys32_newuname_wrapper:
267     llgtr %r2,%r2 # struct new_utsname *
268     - jg s390x_newuname # branch to system call
269     + jg sys_s390_newuname # branch to system call
270    
271     .globl compat_sys_adjtimex_wrapper
272     compat_sys_adjtimex_wrapper:
273     @@ -617,7 +617,7 @@ sys32_sysfs_wrapper:
274     .globl sys32_personality_wrapper
275     sys32_personality_wrapper:
276     llgfr %r2,%r2 # unsigned long
277     - jg s390x_personality # branch to system call
278     + jg sys_s390_personality # branch to system call
279    
280     .globl sys32_setfsuid16_wrapper
281     sys32_setfsuid16_wrapper:
282     diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
283     index 6b18963..df0a813 100644
284     --- a/arch/s390/kernel/entry.h
285     +++ b/arch/s390/kernel/entry.h
286     @@ -30,23 +30,23 @@ struct fadvise64_64_args;
287     struct old_sigaction;
288     struct sel_arg_struct;
289    
290     -long sys_pipe(unsigned long __user *fildes);
291     long sys_mmap2(struct mmap_arg_struct __user *arg);
292     -long old_mmap(struct mmap_arg_struct __user *arg);
293     +long sys_s390_old_mmap(struct mmap_arg_struct __user *arg);
294     long sys_ipc(uint call, int first, unsigned long second,
295     unsigned long third, void __user *ptr);
296     -long s390x_newuname(struct new_utsname __user *name);
297     -long s390x_personality(unsigned long personality);
298     -long s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
299     +long sys_s390_newuname(struct new_utsname __user *name);
300     +long sys_s390_personality(unsigned long personality);
301     +long sys_s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
302     size_t len, int advice);
303     -long s390_fadvise64_64(struct fadvise64_64_args __user *args);
304     -long s390_fallocate(int fd, int mode, loff_t offset, u32 len_high, u32 len_low);
305     +long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
306     +long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high,
307     + u32 len_low);
308     long sys_fork(void);
309     long sys_clone(void);
310     long sys_vfork(void);
311     void execve_tail(void);
312     long sys_execve(void);
313     -int sys_sigsuspend(int history0, int history1, old_sigset_t mask);
314     +long sys_sigsuspend(int history0, int history1, old_sigset_t mask);
315     long sys_sigaction(int sig, const struct old_sigaction __user *act,
316     struct old_sigaction __user *oact);
317     long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss);
318     diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
319     index 3e2c05c..c8cb494 100644
320     --- a/arch/s390/kernel/process.c
321     +++ b/arch/s390/kernel/process.c
322     @@ -38,6 +38,7 @@
323     #include <linux/utsname.h>
324     #include <linux/tick.h>
325     #include <linux/elfcore.h>
326     +#include <linux/syscalls.h>
327     #include <asm/uaccess.h>
328     #include <asm/pgtable.h>
329     #include <asm/system.h>
330     @@ -257,13 +258,13 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
331     return 0;
332     }
333    
334     -asmlinkage long sys_fork(void)
335     +SYSCALL_DEFINE0(fork)
336     {
337     struct pt_regs *regs = task_pt_regs(current);
338     return do_fork(SIGCHLD, regs->gprs[15], regs, 0, NULL, NULL);
339     }
340    
341     -asmlinkage long sys_clone(void)
342     +SYSCALL_DEFINE0(clone)
343     {
344     struct pt_regs *regs = task_pt_regs(current);
345     unsigned long clone_flags;
346     @@ -290,7 +291,7 @@ asmlinkage long sys_clone(void)
347     * do not have enough call-clobbered registers to hold all
348     * the information you need.
349     */
350     -asmlinkage long sys_vfork(void)
351     +SYSCALL_DEFINE0(vfork)
352     {
353     struct pt_regs *regs = task_pt_regs(current);
354     return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,
355     @@ -310,7 +311,7 @@ asmlinkage void execve_tail(void)
356     /*
357     * sys_execve() executes a new program.
358     */
359     -asmlinkage long sys_execve(void)
360     +SYSCALL_DEFINE0(execve)
361     {
362     struct pt_regs *regs = task_pt_regs(current);
363     char *filename;
364     diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
365     index b976820..68c61da 100644
366     --- a/arch/s390/kernel/signal.c
367     +++ b/arch/s390/kernel/signal.c
368     @@ -24,6 +24,7 @@
369     #include <linux/tty.h>
370     #include <linux/personality.h>
371     #include <linux/binfmts.h>
372     +#include <linux/syscalls.h>
373     #include <asm/ucontext.h>
374     #include <asm/uaccess.h>
375     #include <asm/lowcore.h>
376     @@ -52,8 +53,7 @@ typedef struct
377     /*
378     * Atomically swap in the new signal mask, and wait for a signal.
379     */
380     -asmlinkage int
381     -sys_sigsuspend(int history0, int history1, old_sigset_t mask)
382     +SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask)
383     {
384     mask &= _BLOCKABLE;
385     spin_lock_irq(&current->sighand->siglock);
386     @@ -69,9 +69,8 @@ sys_sigsuspend(int history0, int history1, old_sigset_t mask)
387     return -ERESTARTNOHAND;
388     }
389    
390     -asmlinkage long
391     -sys_sigaction(int sig, const struct old_sigaction __user *act,
392     - struct old_sigaction __user *oact)
393     +SYSCALL_DEFINE3(sigaction, int, sig, const struct old_sigaction __user *, act,
394     + struct old_sigaction __user *, oact)
395     {
396     struct k_sigaction new_ka, old_ka;
397     int ret;
398     @@ -101,15 +100,13 @@ sys_sigaction(int sig, const struct old_sigaction __user *act,
399     return ret;
400     }
401    
402     -asmlinkage long
403     -sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
404     +SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss,
405     + stack_t __user *, uoss)
406     {
407     struct pt_regs *regs = task_pt_regs(current);
408     return do_sigaltstack(uss, uoss, regs->gprs[15]);
409     }
410    
411     -
412     -
413     /* Returns non-zero on fault. */
414     static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
415     {
416     @@ -163,7 +160,7 @@ static int restore_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
417     return 0;
418     }
419    
420     -asmlinkage long sys_sigreturn(void)
421     +SYSCALL_DEFINE0(sigreturn)
422     {
423     struct pt_regs *regs = task_pt_regs(current);
424     sigframe __user *frame = (sigframe __user *)regs->gprs[15];
425     @@ -190,7 +187,7 @@ badframe:
426     return 0;
427     }
428    
429     -asmlinkage long sys_rt_sigreturn(void)
430     +SYSCALL_DEFINE0(rt_sigreturn)
431     {
432     struct pt_regs *regs = task_pt_regs(current);
433     rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15];
434     diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c
435     index 5fdb799..e001ac1 100644
436     --- a/arch/s390/kernel/sys_s390.c
437     +++ b/arch/s390/kernel/sys_s390.c
438     @@ -29,6 +29,7 @@
439     #include <linux/personality.h>
440     #include <linux/unistd.h>
441     #include <linux/ipc.h>
442     +#include <linux/syscalls.h>
443     #include <asm/uaccess.h>
444     #include "entry.h"
445    
446     @@ -74,7 +75,7 @@ struct mmap_arg_struct {
447     unsigned long offset;
448     };
449    
450     -asmlinkage long sys_mmap2(struct mmap_arg_struct __user *arg)
451     +SYSCALL_DEFINE1(mmap2, struct mmap_arg_struct __user *, arg)
452     {
453     struct mmap_arg_struct a;
454     int error = -EFAULT;
455     @@ -86,7 +87,7 @@ out:
456     return error;
457     }
458    
459     -asmlinkage long old_mmap(struct mmap_arg_struct __user *arg)
460     +SYSCALL_DEFINE1(s390_old_mmap, struct mmap_arg_struct __user *, arg)
461     {
462     struct mmap_arg_struct a;
463     long error = -EFAULT;
464     @@ -127,8 +128,8 @@ asmlinkage long old_select(struct sel_arg_struct __user *arg)
465     *
466     * This is really horribly ugly.
467     */
468     -asmlinkage long sys_ipc(uint call, int first, unsigned long second,
469     - unsigned long third, void __user *ptr)
470     +SYSCALL_DEFINE5(ipc, uint, call, int, first, unsigned long, second,
471     + unsigned long, third, void __user *, ptr)
472     {
473     struct ipc_kludge tmp;
474     int ret;
475     @@ -194,7 +195,7 @@ asmlinkage long sys_ipc(uint call, int first, unsigned long second,
476     }
477    
478     #ifdef CONFIG_64BIT
479     -asmlinkage long s390x_newuname(struct new_utsname __user *name)
480     +SYSCALL_DEFINE1(s390_newuname, struct new_utsname __user *, name)
481     {
482     int ret = sys_newuname(name);
483    
484     @@ -205,7 +206,7 @@ asmlinkage long s390x_newuname(struct new_utsname __user *name)
485     return ret;
486     }
487    
488     -asmlinkage long s390x_personality(unsigned long personality)
489     +SYSCALL_DEFINE1(s390_personality, unsigned long, personality)
490     {
491     int ret;
492    
493     @@ -224,15 +225,13 @@ asmlinkage long s390x_personality(unsigned long personality)
494     */
495     #ifndef CONFIG_64BIT
496    
497     -asmlinkage long
498     -s390_fadvise64(int fd, u32 offset_high, u32 offset_low, size_t len, int advice)
499     +SYSCALL_DEFINE5(s390_fadvise64, int, fd, u32, offset_high, u32, offset_low,
500     + size_t, len, int, advice)
501     {
502     return sys_fadvise64(fd, (u64) offset_high << 32 | offset_low,
503     len, advice);
504     }
505    
506     -#endif
507     -
508     struct fadvise64_64_args {
509     int fd;
510     long long offset;
511     @@ -240,8 +239,7 @@ struct fadvise64_64_args {
512     int advice;
513     };
514    
515     -asmlinkage long
516     -s390_fadvise64_64(struct fadvise64_64_args __user *args)
517     +SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args)
518     {
519     struct fadvise64_64_args a;
520    
521     @@ -250,7 +248,6 @@ s390_fadvise64_64(struct fadvise64_64_args __user *args)
522     return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice);
523     }
524    
525     -#ifndef CONFIG_64BIT
526     /*
527     * This is a wrapper to call sys_fallocate(). For 31 bit s390 the last
528     * 64 bit argument "len" is split into the upper and lower 32 bits. The
529     @@ -263,9 +260,19 @@ s390_fadvise64_64(struct fadvise64_64_args __user *args)
530     * to
531     * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len
532     */
533     -asmlinkage long s390_fallocate(int fd, int mode, loff_t offset,
534     +SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset,
535     u32 len_high, u32 len_low)
536     {
537     return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low);
538     }
539     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
540     +asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset,
541     + long len_high, long len_low)
542     +{
543     + return SYSC_s390_fallocate((int) fd, (int) mode, offset,
544     + (u32) len_high, (u32) len_low);
545     +}
546     +SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate);
547     +#endif
548     +
549     #endif
550     diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
551     index c66d35e..2a3abd4 100644
552     --- a/arch/s390/kernel/syscalls.S
553     +++ b/arch/s390/kernel/syscalls.S
554     @@ -98,7 +98,7 @@ SYSCALL(sys_uselib,sys_uselib,sys32_uselib_wrapper)
555     SYSCALL(sys_swapon,sys_swapon,sys32_swapon_wrapper)
556     SYSCALL(sys_reboot,sys_reboot,sys32_reboot_wrapper)
557     SYSCALL(sys_ni_syscall,sys_ni_syscall,old32_readdir_wrapper) /* old readdir syscall */
558     -SYSCALL(old_mmap,old_mmap,old32_mmap_wrapper) /* 90 */
559     +SYSCALL(sys_s390_old_mmap,sys_s390_old_mmap,old32_mmap_wrapper) /* 90 */
560     SYSCALL(sys_munmap,sys_munmap,sys32_munmap_wrapper)
561     SYSCALL(sys_truncate,sys_truncate,sys32_truncate_wrapper)
562     SYSCALL(sys_ftruncate,sys_ftruncate,sys32_ftruncate_wrapper)
563     @@ -130,7 +130,7 @@ SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper)
564     SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
565     SYSCALL(sys_clone,sys_clone,sys32_clone) /* 120 */
566     SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper)
567     -SYSCALL(sys_newuname,s390x_newuname,sys32_newuname_wrapper)
568     +SYSCALL(sys_newuname,sys_s390_newuname,sys32_newuname_wrapper)
569     NI_SYSCALL /* modify_ldt for i386 */
570     SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper)
571     SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */
572     @@ -144,7 +144,7 @@ SYSCALL(sys_getpgid,sys_getpgid,sys32_getpgid_wrapper)
573     SYSCALL(sys_fchdir,sys_fchdir,sys32_fchdir_wrapper)
574     SYSCALL(sys_bdflush,sys_bdflush,sys32_bdflush_wrapper)
575     SYSCALL(sys_sysfs,sys_sysfs,sys32_sysfs_wrapper) /* 135 */
576     -SYSCALL(sys_personality,s390x_personality,sys32_personality_wrapper)
577     +SYSCALL(sys_personality,sys_s390_personality,sys32_personality_wrapper)
578     NI_SYSCALL /* for afs_syscall */
579     SYSCALL(sys_setfsuid16,sys_ni_syscall,sys32_setfsuid16_wrapper) /* old setfsuid16 syscall */
580     SYSCALL(sys_setfsgid16,sys_ni_syscall,sys32_setfsgid16_wrapper) /* old setfsgid16 syscall */
581     @@ -261,7 +261,7 @@ SYSCALL(sys_epoll_create,sys_epoll_create,sys_epoll_create_wrapper)
582     SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */
583     SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper)
584     SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper)
585     -SYSCALL(s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper)
586     +SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper)
587     SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper)
588     SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */
589     SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper)
590     @@ -272,7 +272,7 @@ SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260
591     SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
592     SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
593     NI_SYSCALL /* reserved for vserver */
594     -SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
595     +SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
596     SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
597     SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
598     SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper)
599     @@ -322,7 +322,7 @@ NI_SYSCALL /* 310 sys_move_pages */
600     SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper)
601     SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper)
602     SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper)
603     -SYSCALL(s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
604     +SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
605     SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */
606     SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper)
607     NI_SYSCALL /* 317 old sys_timer_fd */
608     diff --git a/arch/sh/kernel/sys_sh32.c b/arch/sh/kernel/sys_sh32.c
609     index f0aa5c3..c907f8c 100644
610     --- a/arch/sh/kernel/sys_sh32.c
611     +++ b/arch/sh/kernel/sys_sh32.c
612     @@ -21,7 +21,7 @@
613     * sys_pipe() is the normal C calling standard for creating
614     * a pipe. It's not the way Unix traditionally does this, though.
615     */
616     -asmlinkage int sys_pipe(unsigned long r4, unsigned long r5,
617     +asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
618     unsigned long r6, unsigned long r7,
619     struct pt_regs __regs)
620     {
621     diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S
622     index 0af693e..e67c173 100644
623     --- a/arch/sh/kernel/syscalls_32.S
624     +++ b/arch/sh/kernel/syscalls_32.S
625     @@ -58,7 +58,7 @@ ENTRY(sys_call_table)
626     .long sys_mkdir
627     .long sys_rmdir /* 40 */
628     .long sys_dup
629     - .long sys_pipe
630     + .long sys_sh_pipe
631     .long sys_times
632     .long sys_ni_syscall /* old prof syscall holder */
633     .long sys_brk /* 45 */
634     @@ -105,7 +105,7 @@ ENTRY(sys_call_table)
635     .long sys_uselib
636     .long sys_swapon
637     .long sys_reboot
638     - .long old_readdir
639     + .long sys_old_readdir
640     .long old_mmap /* 90 */
641     .long sys_munmap
642     .long sys_truncate
643     diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S
644     index 0b436aa..557cb91 100644
645     --- a/arch/sh/kernel/syscalls_64.S
646     +++ b/arch/sh/kernel/syscalls_64.S
647     @@ -109,7 +109,7 @@ sys_call_table:
648     .long sys_uselib
649     .long sys_swapon
650     .long sys_reboot
651     - .long old_readdir
652     + .long sys_old_readdir
653     .long old_mmap /* 90 */
654     .long sys_munmap
655     .long sys_truncate
656     diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
657     index e8cdf71..e3b7ed0 100644
658     --- a/arch/sparc/kernel/entry.S
659     +++ b/arch/sparc/kernel/entry.S
660     @@ -1142,8 +1142,8 @@ sunos_execv:
661     ld [%sp + STACKFRAME_SZ + PT_I0], %o0
662    
663     .align 4
664     - .globl sys_pipe
665     -sys_pipe:
666     + .globl sys_sparc_pipe
667     +sys_sparc_pipe:
668     mov %o7, %l5
669     add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg
670     call sparc_pipe
671     diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S
672     index e1b9233..6a62545 100644
673     --- a/arch/sparc/kernel/systbls.S
674     +++ b/arch/sparc/kernel/systbls.S
675     @@ -24,7 +24,7 @@ sys_call_table:
676     /*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
677     /*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
678     /*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
679     -/*40*/ .long sys_newlstat, sys_dup, sys_pipe, sys_times, sys_getuid
680     +/*40*/ .long sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_getuid
681     /*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
682     /*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl
683     /*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve
684     @@ -56,7 +56,7 @@ sys_call_table:
685     /*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname
686     /*190*/ .long sys_init_module, sys_personality, sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl
687     /*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sparc_sigaction, sys_sgetmask
688     -/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, old_readdir
689     +/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir
690     /*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
691     /*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
692     /*215*/ .long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex
693     diff --git a/arch/sparc64/kernel/syscalls.S b/arch/sparc64/kernel/syscalls.S
694     index a2f2427..cd2d333 100644
695     --- a/arch/sparc64/kernel/syscalls.S
696     +++ b/arch/sparc64/kernel/syscalls.S
697     @@ -20,7 +20,7 @@ execve_merge:
698     add %sp, PTREGS_OFF, %o0
699    
700     .align 32
701     -sys_pipe:
702     +sys_sparc_pipe:
703     ba,pt %xcc, sparc_pipe
704     add %sp, PTREGS_OFF, %o0
705     sys_nis_syscall:
706     diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S
707     index 0fdbf3b..26b39de 100644
708     --- a/arch/sparc64/kernel/systbls.S
709     +++ b/arch/sparc64/kernel/systbls.S
710     @@ -26,7 +26,7 @@ sys_call_table32:
711     /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause
712     /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice
713     .word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile
714     -/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid
715     +/*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid
716     .word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16
717     /*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
718     .word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve
719     @@ -100,7 +100,7 @@ sys_call_table:
720     /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall
721     /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice
722     .word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64
723     -/*40*/ .word sys_newlstat, sys_dup, sys_pipe, sys_times, sys_nis_syscall
724     +/*40*/ .word sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_nis_syscall
725     .word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid
726     /*50*/ .word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl
727     .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
728     diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
729     index 552d2b7..388bae2 100644
730     --- a/arch/x86/Kconfig
731     +++ b/arch/x86/Kconfig
732     @@ -567,7 +567,7 @@ config AMD_IOMMU
733    
734     # need this always selected by IOMMU for the VIA workaround
735     config SWIOTLB
736     - bool
737     + def_bool y if X86_64
738     help
739     Support for software bounce buffers used on x86-64 systems
740     which don't have a hardware IOMMU (e.g. the current generation
741     diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
742     index 9bfc4d7..290cb54 100644
743     --- a/arch/x86/kernel/head64.c
744     +++ b/arch/x86/kernel/head64.c
745     @@ -26,7 +26,7 @@
746     #include <asm/bios_ebda.h>
747    
748     /* boot cpu pda */
749     -static struct x8664_pda _boot_cpu_pda __read_mostly;
750     +static struct x8664_pda _boot_cpu_pda;
751    
752     #ifdef CONFIG_SMP
753     /*
754     diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
755     index db3280a..872d9d0 100644
756     --- a/arch/x86/kernel/head_64.S
757     +++ b/arch/x86/kernel/head_64.S
758     @@ -305,7 +305,7 @@ ENTRY(early_idt_handler)
759     call dump_stack
760     #ifdef CONFIG_KALLSYMS
761     leaq early_idt_ripmsg(%rip),%rdi
762     - movq 8(%rsp),%rsi # get rip again
763     + movq 0(%rsp),%rsi # get rip again
764     call __print_symbol
765     #endif
766     #endif /* EARLY_PRINTK */
767     diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S
768     index d44395f..e2e86a0 100644
769     --- a/arch/x86/kernel/syscall_table_32.S
770     +++ b/arch/x86/kernel/syscall_table_32.S
771     @@ -88,7 +88,7 @@ ENTRY(sys_call_table)
772     .long sys_uselib
773     .long sys_swapon
774     .long sys_reboot
775     - .long old_readdir
776     + .long sys_old_readdir
777     .long old_mmap /* 90 */
778     .long sys_munmap
779     .long sys_truncate
780     diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
781     index 8b8c0d6..2fc8b6a 100644
782     --- a/arch/x86/kernel/tlb_uv.c
783     +++ b/arch/x86/kernel/tlb_uv.c
784     @@ -586,7 +586,6 @@ static int __init uv_ptc_init(void)
785     static struct bau_control * __init uv_table_bases_init(int blade, int node)
786     {
787     int i;
788     - int *ip;
789     struct bau_msg_status *msp;
790     struct bau_control *bau_tabp;
791    
792     @@ -603,13 +602,6 @@ static struct bau_control * __init uv_table_bases_init(int blade, int node)
793     bau_cpubits_clear(&msp->seen_by, (int)
794     uv_blade_nr_possible_cpus(blade));
795    
796     - bau_tabp->watching =
797     - kmalloc_node(sizeof(int) * DEST_NUM_RESOURCES, GFP_KERNEL, node);
798     - BUG_ON(!bau_tabp->watching);
799     -
800     - for (i = 0, ip = bau_tabp->watching; i < DEST_Q_SIZE; i++, ip++)
801     - *ip = 0;
802     -
803     uv_bau_table_bases[blade] = bau_tabp;
804    
805     return bau_tabp;
806     @@ -632,7 +624,6 @@ uv_table_bases_finish(int blade, int node, int cur_cpu,
807     bcp->bau_msg_head = bau_tablesp->va_queue_first;
808     bcp->va_queue_first = bau_tablesp->va_queue_first;
809     bcp->va_queue_last = bau_tablesp->va_queue_last;
810     - bcp->watching = bau_tablesp->watching;
811     bcp->msg_statuses = bau_tablesp->msg_statuses;
812     bcp->descriptor_base = adp;
813     }
814     diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
815     index 455f3fe..da1973b 100644
816     --- a/arch/x86/mm/fault.c
817     +++ b/arch/x86/mm/fault.c
818     @@ -534,7 +534,7 @@ static int vmalloc_fault(unsigned long address)
819     happen within a race in page table update. In the later
820     case just flush. */
821    
822     - pgd = pgd_offset(current->mm ?: &init_mm, address);
823     + pgd = pgd_offset(current->active_mm, address);
824     pgd_ref = pgd_offset_k(address);
825     if (pgd_none(*pgd_ref))
826     return -1;
827     diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
828     index 60ec1d0..62dc07c 100644
829     --- a/arch/x86/mm/init_32.c
830     +++ b/arch/x86/mm/init_32.c
831     @@ -718,7 +718,7 @@ void __init setup_bootmem_allocator(void)
832     after_init_bootmem = 1;
833     }
834    
835     -static void __init find_early_table_space(unsigned long end)
836     +static void __init find_early_table_space(unsigned long end, int use_pse)
837     {
838     unsigned long puds, pmds, ptes, tables, start;
839    
840     @@ -728,7 +728,7 @@ static void __init find_early_table_space(unsigned long end)
841     pmds = (end + PMD_SIZE - 1) >> PMD_SHIFT;
842     tables += PAGE_ALIGN(pmds * sizeof(pmd_t));
843    
844     - if (cpu_has_pse) {
845     + if (use_pse) {
846     unsigned long extra;
847    
848     extra = end - ((end>>PMD_SHIFT) << PMD_SHIFT);
849     @@ -768,12 +768,22 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
850     pgd_t *pgd_base = swapper_pg_dir;
851     unsigned long start_pfn, end_pfn;
852     unsigned long big_page_start;
853     +#ifdef CONFIG_DEBUG_PAGEALLOC
854     + /*
855     + * For CONFIG_DEBUG_PAGEALLOC, identity mapping will use small pages.
856     + * This will simplify cpa(), which otherwise needs to support splitting
857     + * large pages into small in interrupt context, etc.
858     + */
859     + int use_pse = 0;
860     +#else
861     + int use_pse = cpu_has_pse;
862     +#endif
863    
864     /*
865     * Find space for the kernel direct mapping tables.
866     */
867     if (!after_init_bootmem)
868     - find_early_table_space(end);
869     + find_early_table_space(end, use_pse);
870    
871     #ifdef CONFIG_X86_PAE
872     set_nx();
873     @@ -819,7 +829,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
874     end_pfn = (end>>PMD_SHIFT) << (PMD_SHIFT - PAGE_SHIFT);
875     if (start_pfn < end_pfn)
876     kernel_physical_mapping_init(pgd_base, start_pfn, end_pfn,
877     - cpu_has_pse);
878     + use_pse);
879    
880     /* tail is not big page alignment ? */
881     start_pfn = end_pfn;
882     diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
883     index 1adbb3e..753ea12 100644
884     --- a/arch/x86/mm/init_64.c
885     +++ b/arch/x86/mm/init_64.c
886     @@ -446,13 +446,14 @@ phys_pud_update(pgd_t *pgd, unsigned long addr, unsigned long end,
887     return phys_pud_init(pud, addr, end, page_size_mask);
888     }
889    
890     -static void __init find_early_table_space(unsigned long end)
891     +static void __init find_early_table_space(unsigned long end, int use_pse,
892     + int use_gbpages)
893     {
894     unsigned long puds, pmds, ptes, tables, start;
895    
896     puds = (end + PUD_SIZE - 1) >> PUD_SHIFT;
897     tables = round_up(puds * sizeof(pud_t), PAGE_SIZE);
898     - if (direct_gbpages) {
899     + if (use_gbpages) {
900     unsigned long extra;
901     extra = end - ((end>>PUD_SHIFT) << PUD_SHIFT);
902     pmds = (extra + PMD_SIZE - 1) >> PMD_SHIFT;
903     @@ -460,7 +461,7 @@ static void __init find_early_table_space(unsigned long end)
904     pmds = (end + PMD_SIZE - 1) >> PMD_SHIFT;
905     tables += round_up(pmds * sizeof(pmd_t), PAGE_SIZE);
906    
907     - if (cpu_has_pse) {
908     + if (use_pse) {
909     unsigned long extra;
910     extra = end - ((end>>PMD_SHIFT) << PMD_SHIFT);
911     ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT;
912     @@ -571,6 +572,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
913    
914     struct map_range mr[NR_RANGE_MR];
915     int nr_range, i;
916     + int use_pse, use_gbpages;
917    
918     printk(KERN_INFO "init_memory_mapping\n");
919    
920     @@ -584,9 +586,21 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
921     if (!after_bootmem)
922     init_gbpages();
923    
924     - if (direct_gbpages)
925     +#ifdef CONFIG_DEBUG_PAGEALLOC
926     + /*
927     + * For CONFIG_DEBUG_PAGEALLOC, identity mapping will use small pages.
928     + * This will simplify cpa(), which otherwise needs to support splitting
929     + * large pages into small in interrupt context, etc.
930     + */
931     + use_pse = use_gbpages = 0;
932     +#else
933     + use_pse = cpu_has_pse;
934     + use_gbpages = direct_gbpages;
935     +#endif
936     +
937     + if (use_gbpages)
938     page_size_mask |= 1 << PG_LEVEL_1G;
939     - if (cpu_has_pse)
940     + if (use_pse)
941     page_size_mask |= 1 << PG_LEVEL_2M;
942    
943     memset(mr, 0, sizeof(mr));
944     @@ -647,7 +661,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
945     (mr[i].page_size_mask & (1<<PG_LEVEL_2M))?"2M":"4k"));
946    
947     if (!after_bootmem)
948     - find_early_table_space(end);
949     + find_early_table_space(end, use_pse, use_gbpages);
950    
951     for (i = 0; i < nr_range; i++)
952     last_map_addr = kernel_physical_mapping_init(
953     diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c
954     index 56790f8..d62311f 100644
955     --- a/drivers/dma/ioat_dma.c
956     +++ b/drivers/dma/ioat_dma.c
957     @@ -1337,12 +1337,11 @@ static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan)
958     */
959     #define IOAT_TEST_SIZE 2000
960    
961     -DECLARE_COMPLETION(test_completion);
962     static void ioat_dma_test_callback(void *dma_async_param)
963     {
964     - printk(KERN_ERR "ioatdma: ioat_dma_test_callback(%p)\n",
965     - dma_async_param);
966     - complete(&test_completion);
967     + struct completion *cmp = dma_async_param;
968     +
969     + complete(cmp);
970     }
971    
972     /**
973     @@ -1359,6 +1358,7 @@ static int ioat_dma_self_test(struct ioatdma_device *device)
974     dma_addr_t dma_dest, dma_src;
975     dma_cookie_t cookie;
976     int err = 0;
977     + struct completion cmp;
978    
979     src = kzalloc(sizeof(u8) * IOAT_TEST_SIZE, GFP_KERNEL);
980     if (!src)
981     @@ -1398,8 +1398,9 @@ static int ioat_dma_self_test(struct ioatdma_device *device)
982     }
983    
984     async_tx_ack(tx);
985     + init_completion(&cmp);
986     tx->callback = ioat_dma_test_callback;
987     - tx->callback_param = (void *)0x8086;
988     + tx->callback_param = &cmp;
989     cookie = tx->tx_submit(tx);
990     if (cookie < 0) {
991     dev_err(&device->pdev->dev,
992     @@ -1409,7 +1410,7 @@ static int ioat_dma_self_test(struct ioatdma_device *device)
993     }
994     device->common.device_issue_pending(dma_chan);
995    
996     - wait_for_completion_timeout(&test_completion, msecs_to_jiffies(3000));
997     + wait_for_completion_timeout(&cmp, msecs_to_jiffies(3000));
998    
999     if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
1000     != DMA_SUCCESS) {
1001     diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
1002     index ab7c8e4..666b7ba 100644
1003     --- a/drivers/md/bitmap.c
1004     +++ b/drivers/md/bitmap.c
1005     @@ -964,9 +964,11 @@ static int bitmap_init_from_disk(struct bitmap *bitmap, sector_t start)
1006     */
1007     page = bitmap->sb_page;
1008     offset = sizeof(bitmap_super_t);
1009     - read_sb_page(bitmap->mddev, bitmap->offset,
1010     - page,
1011     - index, count);
1012     + if (!file)
1013     + read_sb_page(bitmap->mddev,
1014     + bitmap->offset,
1015     + page,
1016     + index, count);
1017     } else if (file) {
1018     page = read_page(file, index, bitmap, count);
1019     offset = 0;
1020     diff --git a/drivers/md/dm-log.c b/drivers/md/dm-log.c
1021     index 5b48478..73b5ec1 100644
1022     --- a/drivers/md/dm-log.c
1023     +++ b/drivers/md/dm-log.c
1024     @@ -467,6 +467,7 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
1025     lc->disk_header = vmalloc(buf_size);
1026     if (!lc->disk_header) {
1027     DMWARN("couldn't allocate disk log buffer");
1028     + dm_io_client_destroy(lc->io_req.client);
1029     kfree(lc);
1030     return -ENOMEM;
1031     }
1032     @@ -482,6 +483,8 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
1033     DMWARN("couldn't allocate sync bitset");
1034     if (!dev)
1035     vfree(lc->clean_bits);
1036     + else
1037     + dm_io_client_destroy(lc->io_req.client);
1038     vfree(lc->disk_header);
1039     kfree(lc);
1040     return -ENOMEM;
1041     @@ -495,6 +498,8 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
1042     vfree(lc->sync_bits);
1043     if (!dev)
1044     vfree(lc->clean_bits);
1045     + else
1046     + dm_io_client_destroy(lc->io_req.client);
1047     vfree(lc->disk_header);
1048     kfree(lc);
1049     return -ENOMEM;
1050     diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
1051     index 97ef945..8fe418b 100644
1052     --- a/drivers/md/dm-raid1.c
1053     +++ b/drivers/md/dm-raid1.c
1054     @@ -727,9 +727,6 @@ static void fail_mirror(struct mirror *m, enum dm_raid1_error error_type)
1055     struct mirror_set *ms = m->ms;
1056     struct mirror *new;
1057    
1058     - if (!errors_handled(ms))
1059     - return;
1060     -
1061     /*
1062     * error_count is used for nothing more than a
1063     * simple way to tell if a device has encountered
1064     @@ -740,6 +737,9 @@ static void fail_mirror(struct mirror *m, enum dm_raid1_error error_type)
1065     if (test_and_set_bit(error_type, &m->error_type))
1066     return;
1067    
1068     + if (!errors_handled(ms))
1069     + return;
1070     +
1071     if (m != get_default_mirror(ms))
1072     goto out;
1073    
1074     diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h
1075     index 5ea6b60..4ee3d97 100644
1076     --- a/drivers/net/e1000e/e1000.h
1077     +++ b/drivers/net/e1000e/e1000.h
1078     @@ -283,6 +283,7 @@ struct e1000_adapter {
1079     unsigned long led_status;
1080    
1081     unsigned int flags;
1082     + unsigned int flags2;
1083     struct work_struct downshift_task;
1084     struct work_struct update_phy_task;
1085     };
1086     @@ -290,6 +291,7 @@ struct e1000_adapter {
1087     struct e1000_info {
1088     enum e1000_mac_type mac;
1089     unsigned int flags;
1090     + unsigned int flags2;
1091     u32 pba;
1092     s32 (*get_variants)(struct e1000_adapter *);
1093     struct e1000_mac_operations *mac_ops;
1094     @@ -330,6 +332,9 @@ struct e1000_info {
1095     #define FLAG_RX_RESTART_NOW (1 << 30)
1096     #define FLAG_MSI_TEST_FAILED (1 << 31)
1097    
1098     +/* CRC Stripping defines */
1099     +#define FLAG2_CRC_STRIPPING (1 << 0)
1100     +
1101     #define E1000_RX_DESC_PS(R, i) \
1102     (&(((union e1000_rx_desc_packet_split *)((R).desc))[i]))
1103     #define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i]))
1104     diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
1105     index 660c85a..c476982 100644
1106     --- a/drivers/net/e1000e/netdev.c
1107     +++ b/drivers/net/e1000e/netdev.c
1108     @@ -497,6 +497,10 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
1109     goto next_desc;
1110     }
1111    
1112     + /* adjust length to remove Ethernet CRC */
1113     + if (!(adapter->flags2 & FLAG2_CRC_STRIPPING))
1114     + length -= 4;
1115     +
1116     total_rx_bytes += length;
1117     total_rx_packets++;
1118    
1119     @@ -802,6 +806,10 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
1120     pci_dma_sync_single_for_device(pdev, ps_page->dma,
1121     PAGE_SIZE, PCI_DMA_FROMDEVICE);
1122    
1123     + /* remove the CRC */
1124     + if (!(adapter->flags2 & FLAG2_CRC_STRIPPING))
1125     + l1 -= 4;
1126     +
1127     skb_put(skb, l1);
1128     goto copydone;
1129     } /* if */
1130     @@ -823,6 +831,12 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
1131     skb->truesize += length;
1132     }
1133    
1134     + /* strip the ethernet crc, problem is we're using pages now so
1135     + * this whole operation can get a little cpu intensive
1136     + */
1137     + if (!(adapter->flags2 & FLAG2_CRC_STRIPPING))
1138     + pskb_trim(skb, skb->len - 4);
1139     +
1140     copydone:
1141     total_rx_bytes += skb->len;
1142     total_rx_packets++;
1143     @@ -1987,8 +2001,12 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
1144     else
1145     rctl |= E1000_RCTL_LPE;
1146    
1147     - /* Enable hardware CRC frame stripping */
1148     - rctl |= E1000_RCTL_SECRC;
1149     + /* Some systems expect that the CRC is included in SMBUS traffic. The
1150     + * hardware strips the CRC before sending to both SMBUS (BMC) and to
1151     + * host memory when this is enabled
1152     + */
1153     + if (adapter->flags2 & FLAG2_CRC_STRIPPING)
1154     + rctl |= E1000_RCTL_SECRC;
1155    
1156     /* Setup buffer sizes */
1157     rctl &= ~E1000_RCTL_SZ_4096;
1158     @@ -4412,6 +4430,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
1159     adapter->ei = ei;
1160     adapter->pba = ei->pba;
1161     adapter->flags = ei->flags;
1162     + adapter->flags2 = ei->flags2;
1163     adapter->hw.adapter = adapter;
1164     adapter->hw.mac.type = ei->mac;
1165     adapter->msg_enable = (1 << NETIF_MSG_DRV | NETIF_MSG_PROBE) - 1;
1166     diff --git a/drivers/net/e1000e/param.c b/drivers/net/e1000e/param.c
1167     index d91dbf7..a7c8b99 100644
1168     --- a/drivers/net/e1000e/param.c
1169     +++ b/drivers/net/e1000e/param.c
1170     @@ -142,6 +142,16 @@ E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround");
1171     */
1172     E1000_PARAM(WriteProtectNVM, "Write-protect NVM [WARNING: disabling this can lead to corrupted NVM]");
1173    
1174     +/*
1175     + * Enable CRC Stripping
1176     + *
1177     + * Valid Range: 0, 1
1178     + *
1179     + * Default Value: 1 (enabled)
1180     + */
1181     +E1000_PARAM(CrcStripping, "Enable CRC Stripping, disable if your BMC needs " \
1182     + "the CRC");
1183     +
1184     struct e1000_option {
1185     enum { enable_option, range_option, list_option } type;
1186     const char *name;
1187     @@ -377,6 +387,21 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter)
1188     adapter->flags |= FLAG_SMART_POWER_DOWN;
1189     }
1190     }
1191     + { /* CRC Stripping */
1192     + const struct e1000_option opt = {
1193     + .type = enable_option,
1194     + .name = "CRC Stripping",
1195     + .err = "defaulting to enabled",
1196     + .def = OPTION_ENABLED
1197     + };
1198     +
1199     + if (num_CrcStripping > bd) {
1200     + unsigned int crc_stripping = CrcStripping[bd];
1201     + e1000_validate_option(&crc_stripping, &opt, adapter);
1202     + if (crc_stripping == OPTION_ENABLED)
1203     + adapter->flags2 |= FLAG2_CRC_STRIPPING;
1204     + }
1205     + }
1206     { /* Kumeran Lock Loss Workaround */
1207     const struct e1000_option opt = {
1208     .type = enable_option,
1209     diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
1210     index 79b7ae3..20ab0fd 100644
1211     --- a/drivers/net/wireless/iwlwifi/iwl-agn.c
1212     +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
1213     @@ -1334,16 +1334,6 @@ static void iwl_setup_rx_handlers(struct iwl_priv *priv)
1214     priv->cfg->ops->lib->rx_handler_setup(priv);
1215     }
1216    
1217     -/*
1218     - * this should be called while priv->lock is locked
1219     -*/
1220     -static void __iwl_rx_replenish(struct iwl_priv *priv)
1221     -{
1222     - iwl_rx_allocate(priv);
1223     - iwl_rx_queue_restock(priv);
1224     -}
1225     -
1226     -
1227     /**
1228     * iwl_rx_handle - Main entry function for receiving responses from uCode
1229     *
1230     @@ -1449,7 +1439,7 @@ void iwl_rx_handle(struct iwl_priv *priv)
1231     count++;
1232     if (count >= 8) {
1233     priv->rxq.read = i;
1234     - __iwl_rx_replenish(priv);
1235     + iwl_rx_queue_restock(priv);
1236     count = 0;
1237     }
1238     }
1239     diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
1240     index ce25379..36391ef 100644
1241     --- a/drivers/net/wireless/iwlwifi/iwl-rx.c
1242     +++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
1243     @@ -245,25 +245,31 @@ void iwl_rx_allocate(struct iwl_priv *priv)
1244     struct list_head *element;
1245     struct iwl_rx_mem_buffer *rxb;
1246     unsigned long flags;
1247     - spin_lock_irqsave(&rxq->lock, flags);
1248     - while (!list_empty(&rxq->rx_used)) {
1249     +
1250     + while (1) {
1251     + spin_lock_irqsave(&rxq->lock, flags);
1252     +
1253     + if (list_empty(&rxq->rx_used)) {
1254     + spin_unlock_irqrestore(&rxq->lock, flags);
1255     + return;
1256     + }
1257     element = rxq->rx_used.next;
1258     rxb = list_entry(element, struct iwl_rx_mem_buffer, list);
1259     + list_del(element);
1260     +
1261     + spin_unlock_irqrestore(&rxq->lock, flags);
1262    
1263     /* Alloc a new receive buffer */
1264     rxb->skb = alloc_skb(priv->hw_params.rx_buf_size + 256,
1265     - __GFP_NOWARN | GFP_ATOMIC);
1266     + GFP_KERNEL);
1267     if (!rxb->skb) {
1268     - if (net_ratelimit())
1269     - printk(KERN_CRIT DRV_NAME
1270     - ": Can not allocate SKB buffers\n");
1271     + printk(KERN_CRIT DRV_NAME
1272     + "Can not allocate SKB buffers\n");
1273     /* We don't reschedule replenish work here -- we will
1274     * call the restock method and if it still needs
1275     * more buffers it will schedule replenish */
1276     break;
1277     }
1278     - priv->alloc_rxb_skb++;
1279     - list_del(element);
1280    
1281     /* Get physical address of RB/SKB */
1282     rxb->real_dma_addr = pci_map_single(
1283     @@ -277,12 +283,15 @@ void iwl_rx_allocate(struct iwl_priv *priv)
1284     rxb->aligned_dma_addr = ALIGN(rxb->real_dma_addr, 256);
1285     skb_reserve(rxb->skb, rxb->aligned_dma_addr - rxb->real_dma_addr);
1286    
1287     + spin_lock_irqsave(&rxq->lock, flags);
1288     +
1289     list_add_tail(&rxb->list, &rxq->rx_free);
1290     rxq->free_count++;
1291     + priv->alloc_rxb_skb++;
1292     +
1293     + spin_unlock_irqrestore(&rxq->lock, flags);
1294     }
1295     - spin_unlock_irqrestore(&rxq->lock, flags);
1296     }
1297     -EXPORT_SYMBOL(iwl_rx_allocate);
1298    
1299     void iwl_rx_replenish(struct iwl_priv *priv)
1300     {
1301     diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
1302     index a13f534..2d04b28 100644
1303     --- a/drivers/pci/pci-driver.c
1304     +++ b/drivers/pci/pci-driver.c
1305     @@ -287,6 +287,14 @@ static void pci_device_shutdown(struct device *dev)
1306    
1307     #ifdef CONFIG_PM_SLEEP
1308    
1309     +static bool pci_has_legacy_pm_support(struct pci_dev *pci_dev)
1310     +{
1311     + struct pci_driver *drv = pci_dev->driver;
1312     +
1313     + return drv && (drv->suspend || drv->suspend_late || drv->resume
1314     + || drv->resume_early);
1315     +}
1316     +
1317     /*
1318     * Default "suspend" method for devices that have no driver provided suspend,
1319     * or not even a driver at all.
1320     @@ -304,14 +312,22 @@ static void pci_default_pm_suspend(struct pci_dev *pci_dev)
1321    
1322     /*
1323     * Default "resume" method for devices that have no driver provided resume,
1324     - * or not even a driver at all.
1325     + * or not even a driver at all (first part).
1326     */
1327     -static int pci_default_pm_resume(struct pci_dev *pci_dev)
1328     +static void pci_default_pm_resume_early(struct pci_dev *pci_dev)
1329     {
1330     - int retval = 0;
1331     -
1332     /* restore the PCI config space */
1333     pci_restore_state(pci_dev);
1334     +}
1335     +
1336     +/*
1337     + * Default "resume" method for devices that have no driver provided resume,
1338     + * or not even a driver at all (second part).
1339     + */
1340     +static int pci_default_pm_resume_late(struct pci_dev *pci_dev)
1341     +{
1342     + int retval;
1343     +
1344     /* if the device was enabled before suspend, reenable */
1345     retval = pci_reenable_device(pci_dev);
1346     /*
1347     @@ -358,10 +374,12 @@ static int pci_legacy_resume(struct device *dev)
1348     struct pci_dev * pci_dev = to_pci_dev(dev);
1349     struct pci_driver * drv = pci_dev->driver;
1350    
1351     - if (drv && drv->resume)
1352     + if (drv && drv->resume) {
1353     error = drv->resume(pci_dev);
1354     - else
1355     - error = pci_default_pm_resume(pci_dev);
1356     + } else {
1357     + pci_default_pm_resume_early(pci_dev);
1358     + error = pci_default_pm_resume_late(pci_dev);
1359     + }
1360     return error;
1361     }
1362    
1363     @@ -407,10 +425,8 @@ static int pci_pm_suspend(struct device *dev)
1364     if (drv->pm->suspend) {
1365     error = drv->pm->suspend(dev);
1366     suspend_report_result(drv->pm->suspend, error);
1367     - } else {
1368     - pci_default_pm_suspend(pci_dev);
1369     }
1370     - } else {
1371     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1372     error = pci_legacy_suspend(dev, PMSG_SUSPEND);
1373     }
1374     pci_fixup_device(pci_fixup_suspend, pci_dev);
1375     @@ -429,8 +445,10 @@ static int pci_pm_suspend_noirq(struct device *dev)
1376     error = drv->pm->suspend_noirq(dev);
1377     suspend_report_result(drv->pm->suspend_noirq, error);
1378     }
1379     - } else {
1380     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1381     error = pci_legacy_suspend_late(dev, PMSG_SUSPEND);
1382     + } else {
1383     + pci_default_pm_suspend(pci_dev);
1384     }
1385    
1386     return error;
1387     @@ -440,15 +458,17 @@ static int pci_pm_resume(struct device *dev)
1388     {
1389     struct pci_dev *pci_dev = to_pci_dev(dev);
1390     struct device_driver *drv = dev->driver;
1391     - int error;
1392     + int error = 0;
1393    
1394     pci_fixup_device(pci_fixup_resume, pci_dev);
1395    
1396     if (drv && drv->pm) {
1397     - error = drv->pm->resume ? drv->pm->resume(dev) :
1398     - pci_default_pm_resume(pci_dev);
1399     - } else {
1400     + if (drv->pm->resume)
1401     + error = drv->pm->resume(dev);
1402     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1403     error = pci_legacy_resume(dev);
1404     + } else {
1405     + error = pci_default_pm_resume_late(pci_dev);
1406     }
1407    
1408     return error;
1409     @@ -465,8 +485,10 @@ static int pci_pm_resume_noirq(struct device *dev)
1410     if (drv && drv->pm) {
1411     if (drv->pm->resume_noirq)
1412     error = drv->pm->resume_noirq(dev);
1413     - } else {
1414     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1415     error = pci_legacy_resume_early(dev);
1416     + } else {
1417     + pci_default_pm_resume_early(pci_dev);
1418     }
1419    
1420     return error;
1421     @@ -493,10 +515,8 @@ static int pci_pm_freeze(struct device *dev)
1422     if (drv->pm->freeze) {
1423     error = drv->pm->freeze(dev);
1424     suspend_report_result(drv->pm->freeze, error);
1425     - } else {
1426     - pci_default_pm_suspend(pci_dev);
1427     }
1428     - } else {
1429     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1430     error = pci_legacy_suspend(dev, PMSG_FREEZE);
1431     pci_fixup_device(pci_fixup_suspend, pci_dev);
1432     }
1433     @@ -515,8 +535,10 @@ static int pci_pm_freeze_noirq(struct device *dev)
1434     error = drv->pm->freeze_noirq(dev);
1435     suspend_report_result(drv->pm->freeze_noirq, error);
1436     }
1437     - } else {
1438     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1439     error = pci_legacy_suspend_late(dev, PMSG_FREEZE);
1440     + } else {
1441     + pci_default_pm_suspend(pci_dev);
1442     }
1443    
1444     return error;
1445     @@ -524,14 +546,15 @@ static int pci_pm_freeze_noirq(struct device *dev)
1446    
1447     static int pci_pm_thaw(struct device *dev)
1448     {
1449     + struct pci_dev *pci_dev = to_pci_dev(dev);
1450     struct device_driver *drv = dev->driver;
1451     int error = 0;
1452    
1453     if (drv && drv->pm) {
1454     if (drv->pm->thaw)
1455     error = drv->pm->thaw(dev);
1456     - } else {
1457     - pci_fixup_device(pci_fixup_resume, to_pci_dev(dev));
1458     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1459     + pci_fixup_device(pci_fixup_resume, pci_dev);
1460     error = pci_legacy_resume(dev);
1461     }
1462    
1463     @@ -547,7 +570,7 @@ static int pci_pm_thaw_noirq(struct device *dev)
1464     if (drv && drv->pm) {
1465     if (drv->pm->thaw_noirq)
1466     error = drv->pm->thaw_noirq(dev);
1467     - } else {
1468     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1469     pci_fixup_device(pci_fixup_resume_early, pci_dev);
1470     error = pci_legacy_resume_early(dev);
1471     }
1472     @@ -557,17 +580,18 @@ static int pci_pm_thaw_noirq(struct device *dev)
1473    
1474     static int pci_pm_poweroff(struct device *dev)
1475     {
1476     + struct pci_dev *pci_dev = to_pci_dev(dev);
1477     struct device_driver *drv = dev->driver;
1478     int error = 0;
1479    
1480     - pci_fixup_device(pci_fixup_suspend, to_pci_dev(dev));
1481     + pci_fixup_device(pci_fixup_suspend, pci_dev);
1482    
1483     if (drv && drv->pm) {
1484     if (drv->pm->poweroff) {
1485     error = drv->pm->poweroff(dev);
1486     suspend_report_result(drv->pm->poweroff, error);
1487     }
1488     - } else {
1489     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1490     error = pci_legacy_suspend(dev, PMSG_HIBERNATE);
1491     }
1492    
1493     @@ -585,7 +609,7 @@ static int pci_pm_poweroff_noirq(struct device *dev)
1494     error = drv->pm->poweroff_noirq(dev);
1495     suspend_report_result(drv->pm->poweroff_noirq, error);
1496     }
1497     - } else {
1498     + } else if (pci_has_legacy_pm_support(to_pci_dev(dev))) {
1499     error = pci_legacy_suspend_late(dev, PMSG_HIBERNATE);
1500     }
1501    
1502     @@ -596,13 +620,15 @@ static int pci_pm_restore(struct device *dev)
1503     {
1504     struct pci_dev *pci_dev = to_pci_dev(dev);
1505     struct device_driver *drv = dev->driver;
1506     - int error;
1507     + int error = 0;
1508    
1509     if (drv && drv->pm) {
1510     - error = drv->pm->restore ? drv->pm->restore(dev) :
1511     - pci_default_pm_resume(pci_dev);
1512     - } else {
1513     + if (drv->pm->restore)
1514     + error = drv->pm->restore(dev);
1515     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1516     error = pci_legacy_resume(dev);
1517     + } else {
1518     + error = pci_default_pm_resume_late(pci_dev);
1519     }
1520     pci_fixup_device(pci_fixup_resume, pci_dev);
1521    
1522     @@ -620,8 +646,10 @@ static int pci_pm_restore_noirq(struct device *dev)
1523     if (drv && drv->pm) {
1524     if (drv->pm->restore_noirq)
1525     error = drv->pm->restore_noirq(dev);
1526     - } else {
1527     + } else if (pci_has_legacy_pm_support(pci_dev)) {
1528     error = pci_legacy_resume_early(dev);
1529     + } else {
1530     + pci_default_pm_resume_early(pci_dev);
1531     }
1532     pci_fixup_device(pci_fixup_resume_early, pci_dev);
1533    
1534     diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
1535     index c9884bb..409e00e 100644
1536     --- a/drivers/pci/pci.c
1537     +++ b/drivers/pci/pci.c
1538     @@ -636,19 +636,14 @@ static int pci_save_pcie_state(struct pci_dev *dev)
1539     int pos, i = 0;
1540     struct pci_cap_saved_state *save_state;
1541     u16 *cap;
1542     - int found = 0;
1543    
1544     pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
1545     if (pos <= 0)
1546     return 0;
1547    
1548     save_state = pci_find_saved_cap(dev, PCI_CAP_ID_EXP);
1549     - if (!save_state)
1550     - save_state = kzalloc(sizeof(*save_state) + sizeof(u16) * 4, GFP_KERNEL);
1551     - else
1552     - found = 1;
1553     if (!save_state) {
1554     - dev_err(&dev->dev, "out of memory in pci_save_pcie_state\n");
1555     + dev_err(&dev->dev, "buffer not found in %s\n", __FUNCTION__);
1556     return -ENOMEM;
1557     }
1558     cap = (u16 *)&save_state->data[0];
1559     @@ -657,9 +652,7 @@ static int pci_save_pcie_state(struct pci_dev *dev)
1560     pci_read_config_word(dev, pos + PCI_EXP_LNKCTL, &cap[i++]);
1561     pci_read_config_word(dev, pos + PCI_EXP_SLTCTL, &cap[i++]);
1562     pci_read_config_word(dev, pos + PCI_EXP_RTCTL, &cap[i++]);
1563     - save_state->cap_nr = PCI_CAP_ID_EXP;
1564     - if (!found)
1565     - pci_add_saved_cap(dev, save_state);
1566     +
1567     return 0;
1568     }
1569    
1570     @@ -684,30 +677,21 @@ static void pci_restore_pcie_state(struct pci_dev *dev)
1571    
1572     static int pci_save_pcix_state(struct pci_dev *dev)
1573     {
1574     - int pos, i = 0;
1575     + int pos;
1576     struct pci_cap_saved_state *save_state;
1577     - u16 *cap;
1578     - int found = 0;
1579    
1580     pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
1581     if (pos <= 0)
1582     return 0;
1583    
1584     save_state = pci_find_saved_cap(dev, PCI_CAP_ID_PCIX);
1585     - if (!save_state)
1586     - save_state = kzalloc(sizeof(*save_state) + sizeof(u16), GFP_KERNEL);
1587     - else
1588     - found = 1;
1589     if (!save_state) {
1590     - dev_err(&dev->dev, "out of memory in pci_save_pcie_state\n");
1591     + dev_err(&dev->dev, "buffer not found in %s\n", __FUNCTION__);
1592     return -ENOMEM;
1593     }
1594     - cap = (u16 *)&save_state->data[0];
1595    
1596     - pci_read_config_word(dev, pos + PCI_X_CMD, &cap[i++]);
1597     - save_state->cap_nr = PCI_CAP_ID_PCIX;
1598     - if (!found)
1599     - pci_add_saved_cap(dev, save_state);
1600     + pci_read_config_word(dev, pos + PCI_X_CMD, (u16 *)save_state->data);
1601     +
1602     return 0;
1603     }
1604    
1605     @@ -726,6 +710,50 @@ static void pci_restore_pcix_state(struct pci_dev *dev)
1606     pci_write_config_word(dev, pos + PCI_X_CMD, cap[i++]);
1607     }
1608    
1609     + /**
1610     + * pci_add_save_buffer - allocate buffer for saving given capability registers
1611     + * @dev: the PCI device
1612     + * @cap: the capability to allocate the buffer for
1613     + * @size: requested size of the buffer
1614     + */
1615     +static int pci_add_cap_save_buffer(
1616     + struct pci_dev *dev, char cap, unsigned int size)
1617     +{
1618     + int pos;
1619     + struct pci_cap_saved_state *save_state;
1620     +
1621     + pos = pci_find_capability(dev, cap);
1622     + if (pos <= 0)
1623     + return 0;
1624     +
1625     + save_state = kzalloc(sizeof(*save_state) + size, GFP_KERNEL);
1626     + if (!save_state)
1627     + return -ENOMEM;
1628     +
1629     + save_state->cap_nr = cap;
1630     + pci_add_saved_cap(dev, save_state);
1631     +
1632     + return 0;
1633     +}
1634     +
1635     +/**
1636     + * pci_allocate_cap_save_buffers - allocate buffers for saving capabilities
1637     + * @dev: the PCI device
1638     + */
1639     +void pci_allocate_cap_save_buffers(struct pci_dev *dev)
1640     +{
1641     + int error;
1642     +
1643     + error = pci_add_cap_save_buffer(dev, PCI_CAP_ID_EXP, 4 * sizeof(u16));
1644     + if (error)
1645     + dev_err(&dev->dev,
1646     + "unable to preallocate PCI Express save buffer\n");
1647     +
1648     + error = pci_add_cap_save_buffer(dev, PCI_CAP_ID_PCIX, sizeof(u16));
1649     + if (error)
1650     + dev_err(&dev->dev,
1651     + "unable to preallocate PCI-X save buffer\n");
1652     +}
1653    
1654     /**
1655     * pci_save_state - save the PCI configuration space of a device before suspending
1656     diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
1657     index d807cd7..7b1efe9 100644
1658     --- a/drivers/pci/pci.h
1659     +++ b/drivers/pci/pci.h
1660     @@ -35,6 +35,7 @@ struct pci_platform_pm_ops {
1661    
1662     extern int pci_set_platform_pm(struct pci_platform_pm_ops *ops);
1663     extern void pci_pm_init(struct pci_dev *dev);
1664     +extern void pci_allocate_cap_save_buffers(struct pci_dev *dev);
1665    
1666     extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val);
1667     extern int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val);
1668     diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
1669     index 367c9c2..6abfafc 100644
1670     --- a/drivers/pci/pcie/portdrv_pci.c
1671     +++ b/drivers/pci/pcie/portdrv_pci.c
1672     @@ -41,7 +41,6 @@ static int pcie_portdrv_restore_config(struct pci_dev *dev)
1673     {
1674     int retval;
1675    
1676     - pci_restore_state(dev);
1677     retval = pci_enable_device(dev);
1678     if (retval)
1679     return retval;
1680     @@ -52,11 +51,18 @@ static int pcie_portdrv_restore_config(struct pci_dev *dev)
1681     #ifdef CONFIG_PM
1682     static int pcie_portdrv_suspend(struct pci_dev *dev, pm_message_t state)
1683     {
1684     - int ret = pcie_port_device_suspend(dev, state);
1685     + return pcie_port_device_suspend(dev, state);
1686    
1687     - if (!ret)
1688     - ret = pcie_portdrv_save_config(dev);
1689     - return ret;
1690     +}
1691     +
1692     +static int pcie_portdrv_suspend_late(struct pci_dev *dev, pm_message_t state)
1693     +{
1694     + return pci_save_state(dev);
1695     +}
1696     +
1697     +static int pcie_portdrv_resume_early(struct pci_dev *dev)
1698     +{
1699     + return pci_restore_state(dev);
1700     }
1701    
1702     static int pcie_portdrv_resume(struct pci_dev *dev)
1703     @@ -66,6 +72,8 @@ static int pcie_portdrv_resume(struct pci_dev *dev)
1704     }
1705     #else
1706     #define pcie_portdrv_suspend NULL
1707     +#define pcie_portdrv_suspend_late NULL
1708     +#define pcie_portdrv_resume_early NULL
1709     #define pcie_portdrv_resume NULL
1710     #endif
1711    
1712     @@ -221,6 +229,7 @@ static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
1713    
1714     /* If fatal, restore cfg space for possible link reset at upstream */
1715     if (dev->error_state == pci_channel_io_frozen) {
1716     + pci_restore_state(dev);
1717     pcie_portdrv_restore_config(dev);
1718     pci_enable_pcie_error_reporting(dev);
1719     }
1720     @@ -283,6 +292,8 @@ static struct pci_driver pcie_portdriver = {
1721     .remove = pcie_portdrv_remove,
1722    
1723     .suspend = pcie_portdrv_suspend,
1724     + .suspend_late = pcie_portdrv_suspend_late,
1725     + .resume_early = pcie_portdrv_resume_early,
1726     .resume = pcie_portdrv_resume,
1727    
1728     .err_handler = &pcie_portdrv_err_handler,
1729     diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
1730     index bcafbd6..eb6c8d1 100644
1731     --- a/drivers/pci/probe.c
1732     +++ b/drivers/pci/probe.c
1733     @@ -1028,6 +1028,9 @@ void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1734     /* Fix up broken headers */
1735     pci_fixup_device(pci_fixup_header, dev);
1736    
1737     + /* Buffers for saving PCIe and PCI-X capabilities */
1738     + pci_allocate_cap_save_buffers(dev);
1739     +
1740     /* Initialize power management of the device */
1741     pci_pm_init(dev);
1742    
1743     diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
1744     index 645d7a6..ec22284 100644
1745     --- a/drivers/pci/syscall.c
1746     +++ b/drivers/pci/syscall.c
1747     @@ -14,10 +14,8 @@
1748     #include <asm/uaccess.h>
1749     #include "pci.h"
1750    
1751     -asmlinkage long
1752     -sys_pciconfig_read(unsigned long bus, unsigned long dfn,
1753     - unsigned long off, unsigned long len,
1754     - void __user *buf)
1755     +SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
1756     + unsigned long, off, unsigned long, len, void __user *, buf)
1757     {
1758     struct pci_dev *dev;
1759     u8 byte;
1760     @@ -86,10 +84,8 @@ error:
1761     return err;
1762     }
1763    
1764     -asmlinkage long
1765     -sys_pciconfig_write(unsigned long bus, unsigned long dfn,
1766     - unsigned long off, unsigned long len,
1767     - void __user *buf)
1768     +SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
1769     + unsigned long, off, unsigned long, len, void __user *, buf)
1770     {
1771     struct pci_dev *dev;
1772     u8 byte;
1773     diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c
1774     index a73a6bb..976cdd5 100644
1775     --- a/drivers/scsi/eata.c
1776     +++ b/drivers/scsi/eata.c
1777     @@ -1626,8 +1626,15 @@ static void map_dma(unsigned int i, struct hostdata *ha)
1778    
1779     cpp->sense_len = SCSI_SENSE_BUFFERSIZE;
1780    
1781     - count = scsi_dma_map(SCpnt);
1782     - BUG_ON(count < 0);
1783     + if (!scsi_sg_count(SCpnt)) {
1784     + cpp->data_len = 0;
1785     + return;
1786     + }
1787     +
1788     + count = pci_map_sg(ha->pdev, scsi_sglist(SCpnt), scsi_sg_count(SCpnt),
1789     + pci_dir);
1790     + BUG_ON(!count);
1791     +
1792     scsi_for_each_sg(SCpnt, sg, count, k) {
1793     cpp->sglist[k].address = H2DEV(sg_dma_address(sg));
1794     cpp->sglist[k].num_bytes = H2DEV(sg_dma_len(sg));
1795     @@ -1655,7 +1662,9 @@ static void unmap_dma(unsigned int i, struct hostdata *ha)
1796     pci_unmap_single(ha->pdev, DEV2H(cpp->sense_addr),
1797     DEV2H(cpp->sense_len), PCI_DMA_FROMDEVICE);
1798    
1799     - scsi_dma_unmap(SCpnt);
1800     + if (scsi_sg_count(SCpnt))
1801     + pci_unmap_sg(ha->pdev, scsi_sglist(SCpnt), scsi_sg_count(SCpnt),
1802     + pci_dir);
1803    
1804     if (!DEV2H(cpp->data_len))
1805     pci_dir = PCI_DMA_BIDIRECTIONAL;
1806     diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
1807     index 4e0b7c8..2f114b4 100644
1808     --- a/drivers/scsi/ibmvscsi/ibmvfc.c
1809     +++ b/drivers/scsi/ibmvscsi/ibmvfc.c
1810     @@ -566,7 +566,7 @@ static void ibmvfc_init_host(struct ibmvfc_host *vhost, int relogin)
1811     struct ibmvfc_target *tgt;
1812    
1813     if (vhost->action == IBMVFC_HOST_ACTION_INIT_WAIT) {
1814     - if (++vhost->init_retries > IBMVFC_MAX_INIT_RETRIES) {
1815     + if (++vhost->init_retries > IBMVFC_MAX_HOST_INIT_RETRIES) {
1816     dev_err(vhost->dev,
1817     "Host initialization retries exceeded. Taking adapter offline\n");
1818     ibmvfc_link_down(vhost, IBMVFC_HOST_OFFLINE);
1819     @@ -847,11 +847,12 @@ static void ibmvfc_reset_host(struct ibmvfc_host *vhost)
1820     static void ibmvfc_retry_host_init(struct ibmvfc_host *vhost)
1821     {
1822     if (vhost->action == IBMVFC_HOST_ACTION_INIT_WAIT) {
1823     - if (++vhost->init_retries > IBMVFC_MAX_INIT_RETRIES) {
1824     + vhost->delay_init = 1;
1825     + if (++vhost->init_retries > IBMVFC_MAX_HOST_INIT_RETRIES) {
1826     dev_err(vhost->dev,
1827     "Host initialization retries exceeded. Taking adapter offline\n");
1828     ibmvfc_link_down(vhost, IBMVFC_HOST_OFFLINE);
1829     - } else if (vhost->init_retries == IBMVFC_MAX_INIT_RETRIES)
1830     + } else if (vhost->init_retries == IBMVFC_MAX_HOST_INIT_RETRIES)
1831     __ibmvfc_reset_host(vhost);
1832     else
1833     ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT);
1834     @@ -2091,15 +2092,17 @@ static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
1835     case IBMVFC_AE_LINK_UP:
1836     case IBMVFC_AE_RESUME:
1837     vhost->events_to_log |= IBMVFC_AE_LINKUP;
1838     - ibmvfc_init_host(vhost, 1);
1839     + vhost->delay_init = 1;
1840     + __ibmvfc_reset_host(vhost);
1841     break;
1842     case IBMVFC_AE_SCN_FABRIC:
1843     + case IBMVFC_AE_SCN_DOMAIN:
1844     vhost->events_to_log |= IBMVFC_AE_RSCN;
1845     - ibmvfc_init_host(vhost, 1);
1846     + vhost->delay_init = 1;
1847     + __ibmvfc_reset_host(vhost);
1848     break;
1849     case IBMVFC_AE_SCN_NPORT:
1850     case IBMVFC_AE_SCN_GROUP:
1851     - case IBMVFC_AE_SCN_DOMAIN:
1852     vhost->events_to_log |= IBMVFC_AE_RSCN;
1853     case IBMVFC_AE_ELS_LOGO:
1854     case IBMVFC_AE_ELS_PRLO:
1855     @@ -2671,7 +2674,7 @@ static void ibmvfc_init_tgt(struct ibmvfc_target *tgt,
1856     static void ibmvfc_retry_tgt_init(struct ibmvfc_target *tgt,
1857     void (*job_step) (struct ibmvfc_target *))
1858     {
1859     - if (++tgt->init_retries > IBMVFC_MAX_INIT_RETRIES) {
1860     + if (++tgt->init_retries > IBMVFC_MAX_TGT_INIT_RETRIES) {
1861     ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT);
1862     wake_up(&tgt->vhost->work_wait_q);
1863     } else
1864     @@ -3521,7 +3524,13 @@ static void ibmvfc_do_work(struct ibmvfc_host *vhost)
1865     break;
1866     case IBMVFC_HOST_ACTION_INIT:
1867     BUG_ON(vhost->state != IBMVFC_INITIALIZING);
1868     - vhost->job_step(vhost);
1869     + if (vhost->delay_init) {
1870     + vhost->delay_init = 0;
1871     + spin_unlock_irqrestore(vhost->host->host_lock, flags);
1872     + ssleep(15);
1873     + return;
1874     + } else
1875     + vhost->job_step(vhost);
1876     break;
1877     case IBMVFC_HOST_ACTION_QUERY:
1878     list_for_each_entry(tgt, &vhost->targets, queue)
1879     diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h
1880     index fb3177a..d0e76d5 100644
1881     --- a/drivers/scsi/ibmvscsi/ibmvfc.h
1882     +++ b/drivers/scsi/ibmvscsi/ibmvfc.h
1883     @@ -33,7 +33,7 @@
1884     #define IBMVFC_DRIVER_DATE "(August 14, 2008)"
1885    
1886     #define IBMVFC_DEFAULT_TIMEOUT 15
1887     -#define IBMVFC_INIT_TIMEOUT 30
1888     +#define IBMVFC_INIT_TIMEOUT 120
1889     #define IBMVFC_MAX_REQUESTS_DEFAULT 100
1890    
1891     #define IBMVFC_DEBUG 0
1892     @@ -43,7 +43,8 @@
1893     #define IBMVFC_MAX_DISC_THREADS 4
1894     #define IBMVFC_TGT_MEMPOOL_SZ 64
1895     #define IBMVFC_MAX_CMDS_PER_LUN 64
1896     -#define IBMVFC_MAX_INIT_RETRIES 3
1897     +#define IBMVFC_MAX_HOST_INIT_RETRIES 6
1898     +#define IBMVFC_MAX_TGT_INIT_RETRIES 3
1899     #define IBMVFC_DEV_LOSS_TMO (5 * 60)
1900     #define IBMVFC_DEFAULT_LOG_LEVEL 2
1901     #define IBMVFC_MAX_CDB_LEN 16
1902     @@ -671,6 +672,7 @@ struct ibmvfc_host {
1903     int discovery_threads;
1904     int client_migrated;
1905     int reinit;
1906     + int delay_init;
1907     int events_to_log;
1908     #define IBMVFC_AE_LINKUP 0x0001
1909     #define IBMVFC_AE_LINKDOWN 0x0002
1910     diff --git a/drivers/scsi/mvsas.c b/drivers/scsi/mvsas.c
1911     index 1dd70d7..23e5a87 100644
1912     --- a/drivers/scsi/mvsas.c
1913     +++ b/drivers/scsi/mvsas.c
1914     @@ -2959,7 +2959,7 @@ static int __devinit mvs_hw_init(struct mvs_info *mvi)
1915    
1916     /* enable auto port detection */
1917     mw32(GBL_PORT_TYPE, MODE_AUTO_DET_EN);
1918     - msleep(100);
1919     + msleep(1100);
1920     /* init and reset phys */
1921     for (i = 0; i < mvi->chip->n_phy; i++) {
1922     u32 lo = be32_to_cpu(*(u32 *)&mvi->sas_addr[4]);
1923     diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c
1924     index 2dd0dc9..c2e2de3 100644
1925     --- a/drivers/scsi/pcmcia/aha152x_stub.c
1926     +++ b/drivers/scsi/pcmcia/aha152x_stub.c
1927     @@ -114,7 +114,7 @@ static int aha152x_probe(struct pcmcia_device *link)
1928     link->io.NumPorts1 = 0x20;
1929     link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
1930     link->io.IOAddrLines = 10;
1931     - link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
1932     + link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
1933     link->irq.IRQInfo1 = IRQ_LEVEL_ID;
1934     link->conf.Attributes = CONF_ENABLE_IRQ;
1935     link->conf.IntType = INT_MEMORY_AND_IO;
1936     diff --git a/drivers/usb/host/isp1760-if.c b/drivers/usb/host/isp1760-if.c
1937     index 78b8aaa..d8b0ba5 100644
1938     --- a/drivers/usb/host/isp1760-if.c
1939     +++ b/drivers/usb/host/isp1760-if.c
1940     @@ -267,12 +267,16 @@ static void isp1761_pci_shutdown(struct pci_dev *dev)
1941     printk(KERN_ERR "ips1761_pci_shutdown\n");
1942     }
1943    
1944     -static const struct pci_device_id isp1760_plx [] = { {
1945     - /* handle any USB 2.0 EHCI controller */
1946     - PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_OTHER << 8) | (0x06 << 16)), ~0),
1947     - .driver_data = 0,
1948     -},
1949     -{ /* end: all zeroes */ }
1950     +static const struct pci_device_id isp1760_plx [] = {
1951     + {
1952     + .class = PCI_CLASS_BRIDGE_OTHER << 8,
1953     + .class_mask = ~0,
1954     + .vendor = PCI_VENDOR_ID_PLX,
1955     + .device = 0x5406,
1956     + .subvendor = PCI_VENDOR_ID_PLX,
1957     + .subdevice = 0x9054,
1958     + },
1959     + { }
1960     };
1961     MODULE_DEVICE_TABLE(pci, isp1760_plx);
1962    
1963     diff --git a/drivers/usb/misc/emi26.c b/drivers/usb/misc/emi26.c
1964     index 4b994a0..5cae8fd 100644
1965     --- a/drivers/usb/misc/emi26.c
1966     +++ b/drivers/usb/misc/emi26.c
1967     @@ -157,7 +157,7 @@ static int emi26_load_firmware (struct usb_device *dev)
1968     err("%s - error loading firmware: error = %d", __func__, err);
1969     goto wraperr;
1970     }
1971     - } while (i > 0);
1972     + } while (rec);
1973    
1974     /* Assert reset (stop the CPU in the EMI) */
1975     err = emi26_set_reset(dev,1);
1976     diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
1977     index e16d547..476da5d 100644
1978     --- a/drivers/usb/storage/unusual_devs.h
1979     +++ b/drivers/usb/storage/unusual_devs.h
1980     @@ -246,6 +246,13 @@ UNUSUAL_DEV( 0x0421, 0x04b9, 0x0500, 0x0551,
1981     US_SC_DEVICE, US_PR_DEVICE, NULL,
1982     US_FL_FIX_CAPACITY ),
1983    
1984     +/* Reported by Paulo Fessel <pfessel@gmail.com> */
1985     +UNUSUAL_DEV( 0x0421, 0x04bd, 0x0000, 0x9999,
1986     + "Nokia",
1987     + "5200",
1988     + US_SC_DEVICE, US_PR_DEVICE, NULL,
1989     + US_FL_FIX_CAPACITY ),
1990     +
1991     /* Reported by Richard Nauber <RichardNauber@web.de> */
1992     UNUSUAL_DEV( 0x0421, 0x04fa, 0x0550, 0x0660,
1993     "Nokia",
1994     @@ -1040,7 +1047,7 @@ UNUSUAL_DEV( 0x067b, 0x2507, 0x0100, 0x0100,
1995     US_FL_FIX_CAPACITY | US_FL_GO_SLOW ),
1996    
1997     /* Reported by Alex Butcher <alex.butcher@assursys.co.uk> */
1998     -UNUSUAL_DEV( 0x067b, 0x3507, 0x0001, 0x0001,
1999     +UNUSUAL_DEV( 0x067b, 0x3507, 0x0001, 0x0101,
2000     "Prolific Technology Inc.",
2001     "ATAPI-6 Bridge Controller",
2002     US_SC_DEVICE, US_PR_DEVICE, NULL,
2003     @@ -1320,6 +1327,13 @@ UNUSUAL_DEV( 0x0840, 0x0082, 0x0001, 0x0001,
2004     US_SC_DEVICE, US_PR_DEVICE, NULL,
2005     US_FL_FIX_CAPACITY),
2006    
2007     +/* Reported and patched by Nguyen Anh Quynh <aquynh@gmail.com> */
2008     +UNUSUAL_DEV( 0x0840, 0x0084, 0x0001, 0x0001,
2009     + "Argosy",
2010     + "Storage",
2011     + US_SC_DEVICE, US_PR_DEVICE, NULL,
2012     + US_FL_FIX_CAPACITY),
2013     +
2014     /* Entry and supporting patch by Theodore Kilgore <kilgota@auburn.edu>.
2015     * Flag will support Bulk devices which use a standards-violating 32-byte
2016     * Command Block Wrapper. Here, the "DC2MEGA" cameras (several brands) with
2017     @@ -1425,6 +1439,13 @@ UNUSUAL_DEV( 0x0a17, 0x006, 0x0000, 0xffff,
2018     US_SC_DEVICE, US_PR_DEVICE, NULL,
2019     US_FL_FIX_INQUIRY ),
2020    
2021     +/* Reported by Jaak Ristioja <Ristioja@gmail.com> */
2022     +UNUSUAL_DEV( 0x0a17, 0x006e, 0x0100, 0x0100,
2023     + "Pentax",
2024     + "K10D",
2025     + US_SC_DEVICE, US_PR_DEVICE, NULL,
2026     + US_FL_FIX_CAPACITY ),
2027     +
2028     /* These are virtual windows driver CDs, which the zd1211rw driver
2029     * automatically converts into WLAN devices. */
2030     UNUSUAL_DEV( 0x0ace, 0x2011, 0x0101, 0x0101,
2031     diff --git a/fs/affs/file.c b/fs/affs/file.c
2032     index 1377b12..9246cb4 100644
2033     --- a/fs/affs/file.c
2034     +++ b/fs/affs/file.c
2035     @@ -628,7 +628,7 @@ static int affs_write_begin_ofs(struct file *file, struct address_space *mapping
2036     }
2037    
2038     index = pos >> PAGE_CACHE_SHIFT;
2039     - page = __grab_cache_page(mapping, index);
2040     + page = grab_cache_page_write_begin(mapping, index, flags);
2041     if (!page)
2042     return -ENOMEM;
2043     *pagep = page;
2044     diff --git a/fs/aio.c b/fs/aio.c
2045     index f658441..048648d 100644
2046     --- a/fs/aio.c
2047     +++ b/fs/aio.c
2048     @@ -1258,7 +1258,7 @@ static void io_destroy(struct kioctx *ioctx)
2049     * pointer is passed for ctxp. Will fail with -ENOSYS if not
2050     * implemented.
2051     */
2052     -asmlinkage long sys_io_setup(unsigned nr_events, aio_context_t __user *ctxp)
2053     +SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp)
2054     {
2055     struct kioctx *ioctx = NULL;
2056     unsigned long ctx;
2057     @@ -1296,7 +1296,7 @@ out:
2058     * implemented. May fail with -EFAULT if the context pointed to
2059     * is invalid.
2060     */
2061     -asmlinkage long sys_io_destroy(aio_context_t ctx)
2062     +SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx)
2063     {
2064     struct kioctx *ioctx = lookup_ioctx(ctx);
2065     if (likely(NULL != ioctx)) {
2066     @@ -1650,8 +1650,8 @@ out_put_req:
2067     * are available to queue any iocbs. Will return 0 if nr is 0. Will
2068     * fail with -ENOSYS if not implemented.
2069     */
2070     -asmlinkage long sys_io_submit(aio_context_t ctx_id, long nr,
2071     - struct iocb __user * __user *iocbpp)
2072     +SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr,
2073     + struct iocb __user * __user *, iocbpp)
2074     {
2075     struct kioctx *ctx;
2076     long ret = 0;
2077     @@ -1725,8 +1725,8 @@ static struct kiocb *lookup_kiocb(struct kioctx *ctx, struct iocb __user *iocb,
2078     * invalid. May fail with -EAGAIN if the iocb specified was not
2079     * cancelled. Will fail with -ENOSYS if not implemented.
2080     */
2081     -asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
2082     - struct io_event __user *result)
2083     +SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb,
2084     + struct io_event __user *, result)
2085     {
2086     int (*cancel)(struct kiocb *iocb, struct io_event *res);
2087     struct kioctx *ctx;
2088     @@ -1787,11 +1787,11 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
2089     * will be updated if not NULL and the operation blocks. Will fail
2090     * with -ENOSYS if not implemented.
2091     */
2092     -asmlinkage long sys_io_getevents(aio_context_t ctx_id,
2093     - long min_nr,
2094     - long nr,
2095     - struct io_event __user *events,
2096     - struct timespec __user *timeout)
2097     +SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id,
2098     + long, min_nr,
2099     + long, nr,
2100     + struct io_event __user *, events,
2101     + struct timespec __user *, timeout)
2102     {
2103     struct kioctx *ioctx = lookup_ioctx(ctx_id);
2104     long ret = -EINVAL;
2105     diff --git a/fs/buffer.c b/fs/buffer.c
2106     index ac78d4c..a542f97 100644
2107     --- a/fs/buffer.c
2108     +++ b/fs/buffer.c
2109     @@ -1988,7 +1988,7 @@ int block_write_begin(struct file *file, struct address_space *mapping,
2110     page = *pagep;
2111     if (page == NULL) {
2112     ownpage = 1;
2113     - page = __grab_cache_page(mapping, index);
2114     + page = grab_cache_page_write_begin(mapping, index, flags);
2115     if (!page) {
2116     status = -ENOMEM;
2117     goto out;
2118     @@ -2494,7 +2494,7 @@ int nobh_write_begin(struct file *file, struct address_space *mapping,
2119     from = pos & (PAGE_CACHE_SIZE - 1);
2120     to = from + len;
2121    
2122     - page = __grab_cache_page(mapping, index);
2123     + page = grab_cache_page_write_begin(mapping, index, flags);
2124     if (!page)
2125     return -ENOMEM;
2126     *pagep = page;
2127     @@ -3177,7 +3177,7 @@ void block_sync_page(struct page *page)
2128     * Use of bdflush() is deprecated and will be removed in a future kernel.
2129     * The `pdflush' kernel threads fully replace bdflush daemons and this call.
2130     */
2131     -asmlinkage long sys_bdflush(int func, long data)
2132     +SYSCALL_DEFINE2(bdflush, int, func, long, data)
2133     {
2134     static int msg_count;
2135    
2136     diff --git a/fs/compat.c b/fs/compat.c
2137     index 075d050..a76455b 100644
2138     --- a/fs/compat.c
2139     +++ b/fs/compat.c
2140     @@ -1640,7 +1640,7 @@ sticky:
2141     }
2142    
2143     #ifdef HAVE_SET_RESTORE_SIGMASK
2144     -asmlinkage long compat_sys_pselect7(int n, compat_ulong_t __user *inp,
2145     +static long do_compat_pselect(int n, compat_ulong_t __user *inp,
2146     compat_ulong_t __user *outp, compat_ulong_t __user *exp,
2147     struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask,
2148     compat_size_t sigsetsize)
2149     @@ -1748,8 +1748,8 @@ asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
2150     (compat_size_t __user *)(sig+sizeof(up))))
2151     return -EFAULT;
2152     }
2153     - return compat_sys_pselect7(n, inp, outp, exp, tsp, compat_ptr(up),
2154     - sigsetsize);
2155     + return do_compat_pselect(n, inp, outp, exp, tsp, compat_ptr(up),
2156     + sigsetsize);
2157     }
2158    
2159     asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
2160     diff --git a/fs/dcache.c b/fs/dcache.c
2161     index e7a1a99..1c12fcc 100644
2162     --- a/fs/dcache.c
2163     +++ b/fs/dcache.c
2164     @@ -1615,8 +1615,11 @@ static void switch_names(struct dentry *dentry, struct dentry *target)
2165     */
2166     memcpy(dentry->d_iname, target->d_name.name,
2167     target->d_name.len + 1);
2168     + dentry->d_name.len = target->d_name.len;
2169     + return;
2170     }
2171     }
2172     + do_switch(dentry->d_name.len, target->d_name.len);
2173     }
2174    
2175     /*
2176     @@ -1676,7 +1679,6 @@ already_unhashed:
2177    
2178     /* Switch the names.. */
2179     switch_names(dentry, target);
2180     - do_switch(dentry->d_name.len, target->d_name.len);
2181     do_switch(dentry->d_name.hash, target->d_name.hash);
2182    
2183     /* ... and switch the parents */
2184     @@ -1781,7 +1783,6 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon)
2185     struct dentry *dparent, *aparent;
2186    
2187     switch_names(dentry, anon);
2188     - do_switch(dentry->d_name.len, anon->d_name.len);
2189     do_switch(dentry->d_name.hash, anon->d_name.hash);
2190    
2191     dparent = dentry->d_parent;
2192     @@ -2085,7 +2086,7 @@ Elong:
2193     * return NULL;
2194     * }
2195     */
2196     -asmlinkage long sys_getcwd(char __user *buf, unsigned long size)
2197     +SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size)
2198     {
2199     int error;
2200     struct path pwd, root;
2201     diff --git a/fs/dcookies.c b/fs/dcookies.c
2202     index 855d4b1..f0da95b 100644
2203     --- a/fs/dcookies.c
2204     +++ b/fs/dcookies.c
2205     @@ -140,7 +140,7 @@ out:
2206     /* And here is where the userspace process can look up the cookie value
2207     * to retrieve the path.
2208     */
2209     -asmlinkage long sys_lookup_dcookie(u64 cookie64, char __user * buf, size_t len)
2210     +SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len)
2211     {
2212     unsigned long cookie = (unsigned long)cookie64;
2213     int err = -EINVAL;
2214     @@ -193,7 +193,13 @@ out:
2215     mutex_unlock(&dcookie_mutex);
2216     return err;
2217     }
2218     -
2219     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
2220     +asmlinkage long SyS_lookup_dcookie(u64 cookie64, long buf, long len)
2221     +{
2222     + return SYSC_lookup_dcookie(cookie64, (char __user *) buf, (size_t) len);
2223     +}
2224     +SYSCALL_ALIAS(sys_lookup_dcookie, SyS_lookup_dcookie);
2225     +#endif
2226    
2227     static int dcookie_init(void)
2228     {
2229     diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
2230     index 89209f0..5e78fc1 100644
2231     --- a/fs/ecryptfs/inode.c
2232     +++ b/fs/ecryptfs/inode.c
2233     @@ -673,10 +673,11 @@ static void *ecryptfs_follow_link(struct dentry *dentry, struct nameidata *nd)
2234     ecryptfs_printk(KERN_DEBUG, "Calling readlink w/ "
2235     "dentry->d_name.name = [%s]\n", dentry->d_name.name);
2236     rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len);
2237     - buf[rc] = '\0';
2238     set_fs(old_fs);
2239     if (rc < 0)
2240     goto out_free;
2241     + else
2242     + buf[rc] = '\0';
2243     rc = 0;
2244     nd_set_link(nd, buf);
2245     goto out;
2246     diff --git a/fs/eventfd.c b/fs/eventfd.c
2247     index 08bf558..5de2c2d 100644
2248     --- a/fs/eventfd.c
2249     +++ b/fs/eventfd.c
2250     @@ -198,7 +198,7 @@ struct file *eventfd_fget(int fd)
2251     return file;
2252     }
2253    
2254     -asmlinkage long sys_eventfd2(unsigned int count, int flags)
2255     +SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags)
2256     {
2257     int fd;
2258     struct eventfd_ctx *ctx;
2259     @@ -228,8 +228,7 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags)
2260     return fd;
2261     }
2262    
2263     -asmlinkage long sys_eventfd(unsigned int count)
2264     +SYSCALL_DEFINE1(eventfd, unsigned int, count)
2265     {
2266     return sys_eventfd2(count, 0);
2267     }
2268     -
2269     diff --git a/fs/eventpoll.c b/fs/eventpoll.c
2270     index c8cec49..cb60f92 100644
2271     --- a/fs/eventpoll.c
2272     +++ b/fs/eventpoll.c
2273     @@ -1106,7 +1106,7 @@ retry:
2274     /*
2275     * Open an eventpoll file descriptor.
2276     */
2277     -asmlinkage long sys_epoll_create1(int flags)
2278     +SYSCALL_DEFINE1(epoll_create1, int, flags)
2279     {
2280     int error, fd = -1;
2281     struct eventpoll *ep;
2282     @@ -1146,7 +1146,7 @@ error_return:
2283     return fd;
2284     }
2285    
2286     -asmlinkage long sys_epoll_create(int size)
2287     +SYSCALL_DEFINE1(epoll_create, int, size)
2288     {
2289     if (size < 0)
2290     return -EINVAL;
2291     @@ -1159,8 +1159,8 @@ asmlinkage long sys_epoll_create(int size)
2292     * the eventpoll file that enables the insertion/removal/change of
2293     * file descriptors inside the interest set.
2294     */
2295     -asmlinkage long sys_epoll_ctl(int epfd, int op, int fd,
2296     - struct epoll_event __user *event)
2297     +SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
2298     + struct epoll_event __user *, event)
2299     {
2300     int error;
2301     struct file *file, *tfile;
2302     @@ -1257,8 +1257,8 @@ error_return:
2303     * Implement the event wait interface for the eventpoll file. It is the kernel
2304     * part of the user space epoll_wait(2).
2305     */
2306     -asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events,
2307     - int maxevents, int timeout)
2308     +SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events,
2309     + int, maxevents, int, timeout)
2310     {
2311     int error;
2312     struct file *file;
2313     @@ -1315,9 +1315,9 @@ error_return:
2314     * Implement the event wait interface for the eventpoll file. It is the kernel
2315     * part of the user space epoll_pwait(2).
2316     */
2317     -asmlinkage long sys_epoll_pwait(int epfd, struct epoll_event __user *events,
2318     - int maxevents, int timeout, const sigset_t __user *sigmask,
2319     - size_t sigsetsize)
2320     +SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events,
2321     + int, maxevents, int, timeout, const sigset_t __user *, sigmask,
2322     + size_t, sigsetsize)
2323     {
2324     int error;
2325     sigset_t ksigmask, sigsaved;
2326     diff --git a/fs/exec.c b/fs/exec.c
2327     index b266ace..5027d01 100644
2328     --- a/fs/exec.c
2329     +++ b/fs/exec.c
2330     @@ -105,7 +105,7 @@ static inline void put_binfmt(struct linux_binfmt * fmt)
2331     *
2332     * Also note that we take the address to load from from the file itself.
2333     */
2334     -asmlinkage long sys_uselib(const char __user * library)
2335     +SYSCALL_DEFINE1(uselib, const char __user *, library)
2336     {
2337     struct file *file;
2338     struct nameidata nd;
2339     diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
2340     index 507d868..c5f40a0 100644
2341     --- a/fs/ext3/inode.c
2342     +++ b/fs/ext3/inode.c
2343     @@ -1152,7 +1152,7 @@ static int ext3_write_begin(struct file *file, struct address_space *mapping,
2344     to = from + len;
2345    
2346     retry:
2347     - page = __grab_cache_page(mapping, index);
2348     + page = grab_cache_page_write_begin(mapping, index, flags);
2349     if (!page)
2350     return -ENOMEM;
2351     *pagep = page;
2352     diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
2353     index de13e91..1f55382 100644
2354     --- a/fs/ext3/namei.c
2355     +++ b/fs/ext3/namei.c
2356     @@ -2187,8 +2187,7 @@ retry:
2357     * We have a transaction open. All is sweetness. It also sets
2358     * i_size in generic_commit_write().
2359     */
2360     - err = __page_symlink(inode, symname, l,
2361     - mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS);
2362     + err = __page_symlink(inode, symname, l, 1);
2363     if (err) {
2364     drop_nlink(inode);
2365     ext3_mark_inode_dirty(handle, inode);
2366     diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
2367     index 846a790..d77f674 100644
2368     --- a/fs/ext4/inode.c
2369     +++ b/fs/ext4/inode.c
2370     @@ -1370,7 +1370,7 @@ retry:
2371     goto out;
2372     }
2373    
2374     - page = __grab_cache_page(mapping, index);
2375     + page = grab_cache_page_write_begin(mapping, index, flags);
2376     if (!page) {
2377     ext4_journal_stop(handle);
2378     ret = -ENOMEM;
2379     @@ -2421,7 +2421,7 @@ retry:
2380     goto out;
2381     }
2382    
2383     - page = __grab_cache_page(mapping, index);
2384     + page = grab_cache_page_write_begin(mapping, index, flags);
2385     if (!page) {
2386     ext4_journal_stop(handle);
2387     ret = -ENOMEM;
2388     diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
2389     index 387ad98..d626533 100644
2390     --- a/fs/ext4/namei.c
2391     +++ b/fs/ext4/namei.c
2392     @@ -2216,8 +2216,7 @@ retry:
2393     * We have a transaction open. All is sweetness. It also sets
2394     * i_size in generic_commit_write().
2395     */
2396     - err = __page_symlink(inode, symname, l,
2397     - mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS);
2398     + err = __page_symlink(inode, symname, l, 1);
2399     if (err) {
2400     clear_nlink(inode);
2401     ext4_mark_inode_dirty(handle, inode);
2402     diff --git a/fs/fcntl.c b/fs/fcntl.c
2403     index 549daf8..08a109b 100644
2404     --- a/fs/fcntl.c
2405     +++ b/fs/fcntl.c
2406     @@ -50,7 +50,7 @@ static int get_close_on_exec(unsigned int fd)
2407     return res;
2408     }
2409    
2410     -asmlinkage long sys_dup3(unsigned int oldfd, unsigned int newfd, int flags)
2411     +SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
2412     {
2413     int err = -EBADF;
2414     struct file * file, *tofree;
2415     @@ -113,7 +113,7 @@ out_unlock:
2416     return err;
2417     }
2418    
2419     -asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd)
2420     +SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd)
2421     {
2422     if (unlikely(newfd == oldfd)) { /* corner case */
2423     struct files_struct *files = current->files;
2424     @@ -126,7 +126,7 @@ asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd)
2425     return sys_dup3(oldfd, newfd, 0);
2426     }
2427    
2428     -asmlinkage long sys_dup(unsigned int fildes)
2429     +SYSCALL_DEFINE1(dup, unsigned int, fildes)
2430     {
2431     int ret = -EBADF;
2432     struct file *file = fget(fildes);
2433     @@ -334,7 +334,7 @@ static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
2434     return err;
2435     }
2436    
2437     -asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg)
2438     +SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
2439     {
2440     struct file *filp;
2441     long err = -EBADF;
2442     @@ -357,7 +357,8 @@ out:
2443     }
2444    
2445     #if BITS_PER_LONG == 32
2446     -asmlinkage long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)
2447     +SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
2448     + unsigned long, arg)
2449     {
2450     struct file * filp;
2451     long err;
2452     diff --git a/fs/filesystems.c b/fs/filesystems.c
2453     index f37f872..25f5b6a 100644
2454     --- a/fs/filesystems.c
2455     +++ b/fs/filesystems.c
2456     @@ -177,7 +177,7 @@ static int fs_maxindex(void)
2457     /*
2458     * Whee.. Weird sysv syscall.
2459     */
2460     -asmlinkage long sys_sysfs(int option, unsigned long arg1, unsigned long arg2)
2461     +SYSCALL_DEFINE3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2)
2462     {
2463     int retval = -EINVAL;
2464    
2465     diff --git a/fs/fuse/file.c b/fs/fuse/file.c
2466     index 2bada6b..c8206db 100644
2467     --- a/fs/fuse/file.c
2468     +++ b/fs/fuse/file.c
2469     @@ -644,7 +644,7 @@ static int fuse_write_begin(struct file *file, struct address_space *mapping,
2470     {
2471     pgoff_t index = pos >> PAGE_CACHE_SHIFT;
2472    
2473     - *pagep = __grab_cache_page(mapping, index);
2474     + *pagep = grab_cache_page_write_begin(mapping, index, flags);
2475     if (!*pagep)
2476     return -ENOMEM;
2477     return 0;
2478     @@ -777,7 +777,7 @@ static ssize_t fuse_fill_write_pages(struct fuse_req *req,
2479     break;
2480    
2481     err = -ENOMEM;
2482     - page = __grab_cache_page(mapping, index);
2483     + page = grab_cache_page_write_begin(mapping, index, 0);
2484     if (!page)
2485     break;
2486    
2487     diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c
2488     index e64a1b0..c75df06 100644
2489     --- a/fs/gfs2/ops_address.c
2490     +++ b/fs/gfs2/ops_address.c
2491     @@ -675,7 +675,7 @@ static int gfs2_write_begin(struct file *file, struct address_space *mapping,
2492     goto out_trans_fail;
2493    
2494     error = -ENOMEM;
2495     - page = __grab_cache_page(mapping, index);
2496     + page = grab_cache_page_write_begin(mapping, index, flags);
2497     *pagep = page;
2498     if (unlikely(!page))
2499     goto out_endtrans;
2500     diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
2501     index d6ecabf..5e17cae 100644
2502     --- a/fs/hostfs/hostfs_kern.c
2503     +++ b/fs/hostfs/hostfs_kern.c
2504     @@ -500,7 +500,7 @@ int hostfs_write_begin(struct file *file, struct address_space *mapping,
2505     {
2506     pgoff_t index = pos >> PAGE_CACHE_SHIFT;
2507    
2508     - *pagep = __grab_cache_page(mapping, index);
2509     + *pagep = grab_cache_page_write_begin(mapping, index, flags);
2510     if (!*pagep)
2511     return -ENOMEM;
2512     return 0;
2513     diff --git a/fs/inotify_user.c b/fs/inotify_user.c
2514     index d85c7d9..a13f487 100644
2515     --- a/fs/inotify_user.c
2516     +++ b/fs/inotify_user.c
2517     @@ -579,7 +579,7 @@ static const struct inotify_operations inotify_user_ops = {
2518     .destroy_watch = free_inotify_user_watch,
2519     };
2520    
2521     -asmlinkage long sys_inotify_init1(int flags)
2522     +SYSCALL_DEFINE1(inotify_init1, int, flags)
2523     {
2524     struct inotify_device *dev;
2525     struct inotify_handle *ih;
2526     @@ -658,12 +658,13 @@ out_put_fd:
2527     return ret;
2528     }
2529    
2530     -asmlinkage long sys_inotify_init(void)
2531     +SYSCALL_DEFINE0(inotify_init)
2532     {
2533     return sys_inotify_init1(0);
2534     }
2535    
2536     -asmlinkage long sys_inotify_add_watch(int fd, const char __user *pathname, u32 mask)
2537     +SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
2538     + u32, mask)
2539     {
2540     struct inode *inode;
2541     struct inotify_device *dev;
2542     @@ -707,7 +708,7 @@ fput_and_out:
2543     return ret;
2544     }
2545    
2546     -asmlinkage long sys_inotify_rm_watch(int fd, u32 wd)
2547     +SYSCALL_DEFINE2(inotify_rm_watch, int, fd, __s32, wd)
2548     {
2549     struct file *filp;
2550     struct inotify_device *dev;
2551     diff --git a/fs/ioctl.c b/fs/ioctl.c
2552     index 612e0b2..b9a59a4 100644
2553     --- a/fs/ioctl.c
2554     +++ b/fs/ioctl.c
2555     @@ -195,7 +195,7 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
2556     return error;
2557     }
2558    
2559     -asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
2560     +SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
2561     {
2562     struct file *filp;
2563     int error = -EBADF;
2564     diff --git a/fs/ioprio.c b/fs/ioprio.c
2565     index da3cc46..3715d7d 100644
2566     --- a/fs/ioprio.c
2567     +++ b/fs/ioprio.c
2568     @@ -65,7 +65,7 @@ static int set_task_ioprio(struct task_struct *task, int ioprio)
2569     return err;
2570     }
2571    
2572     -asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
2573     +SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio)
2574     {
2575     int class = IOPRIO_PRIO_CLASS(ioprio);
2576     int data = IOPRIO_PRIO_DATA(ioprio);
2577     @@ -181,7 +181,7 @@ int ioprio_best(unsigned short aprio, unsigned short bprio)
2578     return aprio;
2579     }
2580    
2581     -asmlinkage long sys_ioprio_get(int which, int who)
2582     +SYSCALL_DEFINE2(ioprio_get, int, which, int, who)
2583     {
2584     struct task_struct *g, *p;
2585     struct user_struct *user;
2586     @@ -245,4 +245,3 @@ asmlinkage long sys_ioprio_get(int which, int who)
2587     read_unlock(&tasklist_lock);
2588     return ret;
2589     }
2590     -
2591     diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c
2592     index 5a98aa8..5edc2bf 100644
2593     --- a/fs/jffs2/file.c
2594     +++ b/fs/jffs2/file.c
2595     @@ -132,7 +132,7 @@ static int jffs2_write_begin(struct file *filp, struct address_space *mapping,
2596     uint32_t pageofs = index << PAGE_CACHE_SHIFT;
2597     int ret = 0;
2598    
2599     - pg = __grab_cache_page(mapping, index);
2600     + pg = grab_cache_page_write_begin(mapping, index, flags);
2601     if (!pg)
2602     return -ENOMEM;
2603     *pagep = pg;
2604     diff --git a/fs/libfs.c b/fs/libfs.c
2605     index 1add676..8fc2407 100644
2606     --- a/fs/libfs.c
2607     +++ b/fs/libfs.c
2608     @@ -360,7 +360,7 @@ int simple_write_begin(struct file *file, struct address_space *mapping,
2609     index = pos >> PAGE_CACHE_SHIFT;
2610     from = pos & (PAGE_CACHE_SIZE - 1);
2611    
2612     - page = __grab_cache_page(mapping, index);
2613     + page = grab_cache_page_write_begin(mapping, index, flags);
2614     if (!page)
2615     return -ENOMEM;
2616    
2617     diff --git a/fs/locks.c b/fs/locks.c
2618     index 5eb259e..5d39a43 100644
2619     --- a/fs/locks.c
2620     +++ b/fs/locks.c
2621     @@ -1564,7 +1564,7 @@ EXPORT_SYMBOL(flock_lock_file_wait);
2622     * %LOCK_MAND can be combined with %LOCK_READ or %LOCK_WRITE to allow other
2623     * processes read and write access respectively.
2624     */
2625     -asmlinkage long sys_flock(unsigned int fd, unsigned int cmd)
2626     +SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd)
2627     {
2628     struct file *filp;
2629     struct file_lock *lock;
2630     diff --git a/fs/minix/dir.c b/fs/minix/dir.c
2631     index f704338..d4946c4 100644
2632     --- a/fs/minix/dir.c
2633     +++ b/fs/minix/dir.c
2634     @@ -280,7 +280,7 @@ int minix_add_link(struct dentry *dentry, struct inode *inode)
2635     return -EINVAL;
2636    
2637     got_it:
2638     - pos = (page->index >> PAGE_CACHE_SHIFT) + p - (char*)page_address(page);
2639     + pos = page_offset(page) + p - (char *)page_address(page);
2640     err = __minix_write_begin(NULL, page->mapping, pos, sbi->s_dirsize,
2641     AOP_FLAG_UNINTERRUPTIBLE, &page, NULL);
2642     if (err)
2643     diff --git a/fs/namei.c b/fs/namei.c
2644     index 4ea63ed..2259d21 100644
2645     --- a/fs/namei.c
2646     +++ b/fs/namei.c
2647     @@ -1990,8 +1990,8 @@ static int may_mknod(mode_t mode)
2648     }
2649     }
2650    
2651     -asmlinkage long sys_mknodat(int dfd, const char __user *filename, int mode,
2652     - unsigned dev)
2653     +SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode,
2654     + unsigned, dev)
2655     {
2656     int error;
2657     char *tmp;
2658     @@ -2041,7 +2041,7 @@ out_unlock:
2659     return error;
2660     }
2661    
2662     -asmlinkage long sys_mknod(const char __user *filename, int mode, unsigned dev)
2663     +SYSCALL_DEFINE3(mknod, const char __user *, filename, int, mode, unsigned, dev)
2664     {
2665     return sys_mknodat(AT_FDCWD, filename, mode, dev);
2666     }
2667     @@ -2068,7 +2068,7 @@ int vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
2668     return error;
2669     }
2670    
2671     -asmlinkage long sys_mkdirat(int dfd, const char __user *pathname, int mode)
2672     +SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int, mode)
2673     {
2674     int error = 0;
2675     char * tmp;
2676     @@ -2101,7 +2101,7 @@ out_err:
2677     return error;
2678     }
2679    
2680     -asmlinkage long sys_mkdir(const char __user *pathname, int mode)
2681     +SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode)
2682     {
2683     return sys_mkdirat(AT_FDCWD, pathname, mode);
2684     }
2685     @@ -2208,7 +2208,7 @@ exit1:
2686     return error;
2687     }
2688    
2689     -asmlinkage long sys_rmdir(const char __user *pathname)
2690     +SYSCALL_DEFINE1(rmdir, const char __user *, pathname)
2691     {
2692     return do_rmdir(AT_FDCWD, pathname);
2693     }
2694     @@ -2297,7 +2297,7 @@ slashes:
2695     goto exit2;
2696     }
2697    
2698     -asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag)
2699     +SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int, flag)
2700     {
2701     if ((flag & ~AT_REMOVEDIR) != 0)
2702     return -EINVAL;
2703     @@ -2308,7 +2308,7 @@ asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag)
2704     return do_unlinkat(dfd, pathname);
2705     }
2706    
2707     -asmlinkage long sys_unlink(const char __user *pathname)
2708     +SYSCALL_DEFINE1(unlink, const char __user *, pathname)
2709     {
2710     return do_unlinkat(AT_FDCWD, pathname);
2711     }
2712     @@ -2334,8 +2334,8 @@ int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
2713     return error;
2714     }
2715    
2716     -asmlinkage long sys_symlinkat(const char __user *oldname,
2717     - int newdfd, const char __user *newname)
2718     +SYSCALL_DEFINE3(symlinkat, const char __user *, oldname,
2719     + int, newdfd, const char __user *, newname)
2720     {
2721     int error;
2722     char *from;
2723     @@ -2372,7 +2372,7 @@ out_putname:
2724     return error;
2725     }
2726    
2727     -asmlinkage long sys_symlink(const char __user *oldname, const char __user *newname)
2728     +SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *, newname)
2729     {
2730     return sys_symlinkat(oldname, AT_FDCWD, newname);
2731     }
2732     @@ -2424,9 +2424,8 @@ int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_de
2733     * with linux 2.0, and to avoid hard-linking to directories
2734     * and other special files. --ADM
2735     */
2736     -asmlinkage long sys_linkat(int olddfd, const char __user *oldname,
2737     - int newdfd, const char __user *newname,
2738     - int flags)
2739     +SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
2740     + int, newdfd, const char __user *, newname, int, flags)
2741     {
2742     struct dentry *new_dentry;
2743     struct nameidata nd;
2744     @@ -2471,7 +2470,7 @@ out:
2745     return error;
2746     }
2747    
2748     -asmlinkage long sys_link(const char __user *oldname, const char __user *newname)
2749     +SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname)
2750     {
2751     return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
2752     }
2753     @@ -2622,8 +2621,8 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
2754     return error;
2755     }
2756    
2757     -asmlinkage long sys_renameat(int olddfd, const char __user *oldname,
2758     - int newdfd, const char __user *newname)
2759     +SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
2760     + int, newdfd, const char __user *, newname)
2761     {
2762     struct dentry *old_dir, *new_dir;
2763     struct dentry *old_dentry, *new_dentry;
2764     @@ -2707,7 +2706,7 @@ exit:
2765     return error;
2766     }
2767    
2768     -asmlinkage long sys_rename(const char __user *oldname, const char __user *newname)
2769     +SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname)
2770     {
2771     return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname);
2772     }
2773     @@ -2797,18 +2796,23 @@ void page_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
2774     }
2775     }
2776    
2777     -int __page_symlink(struct inode *inode, const char *symname, int len,
2778     - gfp_t gfp_mask)
2779     +/*
2780     + * The nofs argument instructs pagecache_write_begin to pass AOP_FLAG_NOFS
2781     + */
2782     +int __page_symlink(struct inode *inode, const char *symname, int len, int nofs)
2783     {
2784     struct address_space *mapping = inode->i_mapping;
2785     struct page *page;
2786     void *fsdata;
2787     int err;
2788     char *kaddr;
2789     + unsigned int flags = AOP_FLAG_UNINTERRUPTIBLE;
2790     + if (nofs)
2791     + flags |= AOP_FLAG_NOFS;
2792    
2793     retry:
2794     err = pagecache_write_begin(NULL, mapping, 0, len-1,
2795     - AOP_FLAG_UNINTERRUPTIBLE, &page, &fsdata);
2796     + flags, &page, &fsdata);
2797     if (err)
2798     goto fail;
2799    
2800     @@ -2832,7 +2836,7 @@ fail:
2801     int page_symlink(struct inode *inode, const char *symname, int len)
2802     {
2803     return __page_symlink(inode, symname, len,
2804     - mapping_gfp_mask(inode->i_mapping));
2805     + !(mapping_gfp_mask(inode->i_mapping) & __GFP_FS));
2806     }
2807    
2808     const struct inode_operations page_symlink_inode_operations = {
2809     diff --git a/fs/namespace.c b/fs/namespace.c
2810     index 1bd5ba2..efe0251 100644
2811     --- a/fs/namespace.c
2812     +++ b/fs/namespace.c
2813     @@ -1128,7 +1128,7 @@ static int do_umount(struct vfsmount *mnt, int flags)
2814     * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
2815     */
2816    
2817     -asmlinkage long sys_umount(char __user * name, int flags)
2818     +SYSCALL_DEFINE2(umount, char __user *, name, int, flags)
2819     {
2820     struct path path;
2821     int retval;
2822     @@ -1160,7 +1160,7 @@ out:
2823     /*
2824     * The 2.0 compatible umount. No flags.
2825     */
2826     -asmlinkage long sys_oldumount(char __user * name)
2827     +SYSCALL_DEFINE1(oldumount, char __user *, name)
2828     {
2829     return sys_umount(name, 0);
2830     }
2831     @@ -2053,9 +2053,8 @@ struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
2832     return new_ns;
2833     }
2834    
2835     -asmlinkage long sys_mount(char __user * dev_name, char __user * dir_name,
2836     - char __user * type, unsigned long flags,
2837     - void __user * data)
2838     +SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
2839     + char __user *, type, unsigned long, flags, void __user *, data)
2840     {
2841     int retval;
2842     unsigned long data_page;
2843     @@ -2180,8 +2179,8 @@ static void chroot_fs_refs(struct path *old_root, struct path *new_root)
2844     * though, so you may need to say mount --bind /nfs/my_root /nfs/my_root
2845     * first.
2846     */
2847     -asmlinkage long sys_pivot_root(const char __user * new_root,
2848     - const char __user * put_old)
2849     +SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
2850     + const char __user *, put_old)
2851     {
2852     struct vfsmount *tmp;
2853     struct path new, old, parent_path, root_parent, root;
2854     diff --git a/fs/nfs/file.c b/fs/nfs/file.c
2855     index 7846065..30541f0 100644
2856     --- a/fs/nfs/file.c
2857     +++ b/fs/nfs/file.c
2858     @@ -351,7 +351,7 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping,
2859     file->f_path.dentry->d_name.name,
2860     mapping->host->i_ino, len, (long long) pos);
2861    
2862     - page = __grab_cache_page(mapping, index);
2863     + page = grab_cache_page_write_begin(mapping, index, flags);
2864     if (!page)
2865     return -ENOMEM;
2866     *pagep = page;
2867     diff --git a/fs/nfs/read.c b/fs/nfs/read.c
2868     index 40d1798..f856004 100644
2869     --- a/fs/nfs/read.c
2870     +++ b/fs/nfs/read.c
2871     @@ -533,12 +533,6 @@ readpage_async_filler(void *data, struct page *page)
2872     unsigned int len;
2873     int error;
2874    
2875     - error = nfs_wb_page(inode, page);
2876     - if (error)
2877     - goto out_unlock;
2878     - if (PageUptodate(page))
2879     - goto out_unlock;
2880     -
2881     len = nfs_page_length(page);
2882     if (len == 0)
2883     return nfs_return_empty_page(page);
2884     diff --git a/fs/nfsctl.c b/fs/nfsctl.c
2885     index aed8145..bf2cbd9 100644
2886     --- a/fs/nfsctl.c
2887     +++ b/fs/nfsctl.c
2888     @@ -82,8 +82,8 @@ static struct {
2889     },
2890     };
2891    
2892     -long
2893     -asmlinkage sys_nfsservctl(int cmd, struct nfsctl_arg __user *arg, void __user *res)
2894     +SYSCALL_DEFINE3(nfsservctl, int, cmd, struct nfsctl_arg __user *, arg,
2895     + void __user *, res)
2896     {
2897     struct file *file;
2898     void __user *p = &arg->u;
2899     diff --git a/fs/open.c b/fs/open.c
2900     index 07da935..975ce3e 100644
2901     --- a/fs/open.c
2902     +++ b/fs/open.c
2903     @@ -122,7 +122,7 @@ static int vfs_statfs64(struct dentry *dentry, struct statfs64 *buf)
2904     return 0;
2905     }
2906    
2907     -asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * buf)
2908     +SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct statfs __user *, buf)
2909     {
2910     struct path path;
2911     int error;
2912     @@ -138,8 +138,7 @@ asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * b
2913     return error;
2914     }
2915    
2916     -
2917     -asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct statfs64 __user *buf)
2918     +SYSCALL_DEFINE3(statfs64, const char __user *, pathname, size_t, sz, struct statfs64 __user *, buf)
2919     {
2920     struct path path;
2921     long error;
2922     @@ -157,8 +156,7 @@ asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct stat
2923     return error;
2924     }
2925    
2926     -
2927     -asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user * buf)
2928     +SYSCALL_DEFINE2(fstatfs, unsigned int, fd, struct statfs __user *, buf)
2929     {
2930     struct file * file;
2931     struct statfs tmp;
2932     @@ -176,7 +174,7 @@ out:
2933     return error;
2934     }
2935    
2936     -asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 __user *buf)
2937     +SYSCALL_DEFINE3(fstatfs64, unsigned int, fd, size_t, sz, struct statfs64 __user *, buf)
2938     {
2939     struct file * file;
2940     struct statfs64 tmp;
2941     @@ -287,7 +285,7 @@ out:
2942     return error;
2943     }
2944    
2945     -asmlinkage long sys_truncate(const char __user * path, unsigned long length)
2946     +SYSCALL_DEFINE2(truncate, const char __user *, path, unsigned long, length)
2947     {
2948     /* on 32-bit boxen it will cut the range 2^31--2^32-1 off */
2949     return do_sys_truncate(path, (long)length);
2950     @@ -336,7 +334,7 @@ out:
2951     return error;
2952     }
2953    
2954     -asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
2955     +SYSCALL_DEFINE2(ftruncate, unsigned int, fd, unsigned long, length)
2956     {
2957     long ret = do_sys_ftruncate(fd, length, 1);
2958     /* avoid REGPARM breakage on x86: */
2959     @@ -346,21 +344,35 @@ asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
2960    
2961     /* LFS versions of truncate are only needed on 32 bit machines */
2962     #if BITS_PER_LONG == 32
2963     -asmlinkage long sys_truncate64(const char __user * path, loff_t length)
2964     +SYSCALL_DEFINE(truncate64)(const char __user * path, loff_t length)
2965     {
2966     return do_sys_truncate(path, length);
2967     }
2968     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
2969     +asmlinkage long SyS_truncate64(long path, loff_t length)
2970     +{
2971     + return SYSC_truncate64((const char __user *) path, length);
2972     +}
2973     +SYSCALL_ALIAS(sys_truncate64, SyS_truncate64);
2974     +#endif
2975    
2976     -asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length)
2977     +SYSCALL_DEFINE(ftruncate64)(unsigned int fd, loff_t length)
2978     {
2979     long ret = do_sys_ftruncate(fd, length, 0);
2980     /* avoid REGPARM breakage on x86: */
2981     asmlinkage_protect(2, ret, fd, length);
2982     return ret;
2983     }
2984     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
2985     +asmlinkage long SyS_ftruncate64(long fd, loff_t length)
2986     +{
2987     + return SYSC_ftruncate64((unsigned int) fd, length);
2988     +}
2989     +SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64);
2990     #endif
2991     +#endif /* BITS_PER_LONG == 32 */
2992    
2993     -asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len)
2994     +SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len)
2995     {
2996     struct file *file;
2997     struct inode *inode;
2998     @@ -417,13 +429,20 @@ out_fput:
2999     out:
3000     return ret;
3001     }
3002     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
3003     +asmlinkage long SyS_fallocate(long fd, long mode, loff_t offset, loff_t len)
3004     +{
3005     + return SYSC_fallocate((int)fd, (int)mode, offset, len);
3006     +}
3007     +SYSCALL_ALIAS(sys_fallocate, SyS_fallocate);
3008     +#endif
3009    
3010     /*
3011     * access() needs to use the real uid/gid, not the effective uid/gid.
3012     * We do this by temporarily clearing all FS-related capabilities and
3013     * switching the fsuid/fsgid around to the real ones.
3014     */
3015     -asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode)
3016     +SYSCALL_DEFINE3(faccessat, int, dfd, const char __user *, filename, int, mode)
3017     {
3018     struct path path;
3019     struct inode *inode;
3020     @@ -503,12 +522,12 @@ out:
3021     return res;
3022     }
3023    
3024     -asmlinkage long sys_access(const char __user *filename, int mode)
3025     +SYSCALL_DEFINE2(access, const char __user *, filename, int, mode)
3026     {
3027     return sys_faccessat(AT_FDCWD, filename, mode);
3028     }
3029    
3030     -asmlinkage long sys_chdir(const char __user * filename)
3031     +SYSCALL_DEFINE1(chdir, const char __user *, filename)
3032     {
3033     struct path path;
3034     int error;
3035     @@ -529,7 +548,7 @@ out:
3036     return error;
3037     }
3038    
3039     -asmlinkage long sys_fchdir(unsigned int fd)
3040     +SYSCALL_DEFINE1(fchdir, unsigned int, fd)
3041     {
3042     struct file *file;
3043     struct inode *inode;
3044     @@ -555,7 +574,7 @@ out:
3045     return error;
3046     }
3047    
3048     -asmlinkage long sys_chroot(const char __user * filename)
3049     +SYSCALL_DEFINE1(chroot, const char __user *, filename)
3050     {
3051     struct path path;
3052     int error;
3053     @@ -580,7 +599,7 @@ out:
3054     return error;
3055     }
3056    
3057     -asmlinkage long sys_fchmod(unsigned int fd, mode_t mode)
3058     +SYSCALL_DEFINE2(fchmod, unsigned int, fd, mode_t, mode)
3059     {
3060     struct inode * inode;
3061     struct dentry * dentry;
3062     @@ -614,8 +633,7 @@ out:
3063     return err;
3064     }
3065    
3066     -asmlinkage long sys_fchmodat(int dfd, const char __user *filename,
3067     - mode_t mode)
3068     +SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, mode_t, mode)
3069     {
3070     struct path path;
3071     struct inode *inode;
3072     @@ -644,7 +662,7 @@ out:
3073     return error;
3074     }
3075    
3076     -asmlinkage long sys_chmod(const char __user *filename, mode_t mode)
3077     +SYSCALL_DEFINE2(chmod, const char __user *, filename, mode_t, mode)
3078     {
3079     return sys_fchmodat(AT_FDCWD, filename, mode);
3080     }
3081     @@ -674,7 +692,7 @@ static int chown_common(struct dentry * dentry, uid_t user, gid_t group)
3082     return error;
3083     }
3084    
3085     -asmlinkage long sys_chown(const char __user * filename, uid_t user, gid_t group)
3086     +SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)
3087     {
3088     struct path path;
3089     int error;
3090     @@ -693,8 +711,8 @@ out:
3091     return error;
3092     }
3093    
3094     -asmlinkage long sys_fchownat(int dfd, const char __user *filename, uid_t user,
3095     - gid_t group, int flag)
3096     +SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user,
3097     + gid_t, group, int, flag)
3098     {
3099     struct path path;
3100     int error = -EINVAL;
3101     @@ -718,7 +736,7 @@ out:
3102     return error;
3103     }
3104    
3105     -asmlinkage long sys_lchown(const char __user * filename, uid_t user, gid_t group)
3106     +SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group)
3107     {
3108     struct path path;
3109     int error;
3110     @@ -737,8 +755,7 @@ out:
3111     return error;
3112     }
3113    
3114     -
3115     -asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group)
3116     +SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
3117     {
3118     struct file * file;
3119     int error = -EBADF;
3120     @@ -1029,7 +1046,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
3121     return fd;
3122     }
3123    
3124     -asmlinkage long sys_open(const char __user *filename, int flags, int mode)
3125     +SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)
3126     {
3127     long ret;
3128    
3129     @@ -1042,8 +1059,8 @@ asmlinkage long sys_open(const char __user *filename, int flags, int mode)
3130     return ret;
3131     }
3132    
3133     -asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
3134     - int mode)
3135     +SYSCALL_DEFINE4(openat, int, dfd, const char __user *, filename, int, flags,
3136     + int, mode)
3137     {
3138     long ret;
3139    
3140     @@ -1062,7 +1079,7 @@ asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
3141     * For backward compatibility? Maybe this should be moved
3142     * into arch/i386 instead?
3143     */
3144     -asmlinkage long sys_creat(const char __user * pathname, int mode)
3145     +SYSCALL_DEFINE2(creat, const char __user *, pathname, int, mode)
3146     {
3147     return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);
3148     }
3149     @@ -1098,7 +1115,7 @@ EXPORT_SYMBOL(filp_close);
3150     * releasing the fd. This ensures that one clone task can't release
3151     * an fd while another clone is opening it.
3152     */
3153     -asmlinkage long sys_close(unsigned int fd)
3154     +SYSCALL_DEFINE1(close, unsigned int, fd)
3155     {
3156     struct file * filp;
3157     struct files_struct *files = current->files;
3158     @@ -1131,14 +1148,13 @@ out_unlock:
3159     spin_unlock(&files->file_lock);
3160     return -EBADF;
3161     }
3162     -
3163     EXPORT_SYMBOL(sys_close);
3164    
3165     /*
3166     * This routine simulates a hangup on the tty, to arrange that users
3167     * are given clean terminals at login time.
3168     */
3169     -asmlinkage long sys_vhangup(void)
3170     +SYSCALL_DEFINE0(vhangup)
3171     {
3172     if (capable(CAP_SYS_TTY_CONFIG)) {
3173     /* XXX: this needs locking */
3174     diff --git a/fs/pipe.c b/fs/pipe.c
3175     index fcba654..35d2cbb 100644
3176     --- a/fs/pipe.c
3177     +++ b/fs/pipe.c
3178     @@ -1051,7 +1051,7 @@ int do_pipe(int *fd)
3179     * sys_pipe() is the normal C calling standard for creating
3180     * a pipe. It's not the way Unix traditionally does this, though.
3181     */
3182     -asmlinkage long __weak sys_pipe2(int __user *fildes, int flags)
3183     +SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags)
3184     {
3185     int fd[2];
3186     int error;
3187     @@ -1067,7 +1067,7 @@ asmlinkage long __weak sys_pipe2(int __user *fildes, int flags)
3188     return error;
3189     }
3190    
3191     -asmlinkage long __weak sys_pipe(int __user *fildes)
3192     +SYSCALL_DEFINE1(pipe, int __user *, fildes)
3193     {
3194     return sys_pipe2(fildes, 0);
3195     }
3196     diff --git a/fs/quota.c b/fs/quota.c
3197     index 7f4386e..e9851af 100644
3198     --- a/fs/quota.c
3199     +++ b/fs/quota.c
3200     @@ -368,7 +368,8 @@ static inline struct super_block *quotactl_block(const char __user *special)
3201     * calls. Maybe we need to add the process quotas etc. in the future,
3202     * but we probably should use rlimits for that.
3203     */
3204     -asmlinkage long sys_quotactl(unsigned int cmd, const char __user *special, qid_t id, void __user *addr)
3205     +SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special,
3206     + qid_t, id, void __user *, addr)
3207     {
3208     uint cmds, type;
3209     struct super_block *sb = NULL;
3210     diff --git a/fs/read_write.c b/fs/read_write.c
3211     index 9ba495d..0619b2a 100644
3212     --- a/fs/read_write.c
3213     +++ b/fs/read_write.c
3214     @@ -112,7 +112,7 @@ loff_t vfs_llseek(struct file *file, loff_t offset, int origin)
3215     }
3216     EXPORT_SYMBOL(vfs_llseek);
3217    
3218     -asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
3219     +SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, origin)
3220     {
3221     off_t retval;
3222     struct file * file;
3223     @@ -136,9 +136,9 @@ bad:
3224     }
3225    
3226     #ifdef __ARCH_WANT_SYS_LLSEEK
3227     -asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
3228     - unsigned long offset_low, loff_t __user * result,
3229     - unsigned int origin)
3230     +SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high,
3231     + unsigned long, offset_low, loff_t __user *, result,
3232     + unsigned int, origin)
3233     {
3234     int retval;
3235     struct file * file;
3236     @@ -334,7 +334,7 @@ static inline void file_pos_write(struct file *file, loff_t pos)
3237     file->f_pos = pos;
3238     }
3239    
3240     -asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
3241     +SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
3242     {
3243     struct file *file;
3244     ssize_t ret = -EBADF;
3245     @@ -351,7 +351,8 @@ asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
3246     return ret;
3247     }
3248    
3249     -asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t count)
3250     +SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf,
3251     + size_t, count)
3252     {
3253     struct file *file;
3254     ssize_t ret = -EBADF;
3255     @@ -368,8 +369,8 @@ asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t co
3256     return ret;
3257     }
3258    
3259     -asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
3260     - size_t count, loff_t pos)
3261     +SYSCALL_DEFINE(pread64)(unsigned int fd, char __user *buf,
3262     + size_t count, loff_t pos)
3263     {
3264     struct file *file;
3265     ssize_t ret = -EBADF;
3266     @@ -388,9 +389,17 @@ asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
3267    
3268     return ret;
3269     }
3270     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
3271     +asmlinkage long SyS_pread64(long fd, long buf, long count, loff_t pos)
3272     +{
3273     + return SYSC_pread64((unsigned int) fd, (char __user *) buf,
3274     + (size_t) count, pos);
3275     +}
3276     +SYSCALL_ALIAS(sys_pread64, SyS_pread64);
3277     +#endif
3278    
3279     -asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
3280     - size_t count, loff_t pos)
3281     +SYSCALL_DEFINE(pwrite64)(unsigned int fd, const char __user *buf,
3282     + size_t count, loff_t pos)
3283     {
3284     struct file *file;
3285     ssize_t ret = -EBADF;
3286     @@ -409,6 +418,14 @@ asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
3287    
3288     return ret;
3289     }
3290     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
3291     +asmlinkage long SyS_pwrite64(long fd, long buf, long count, loff_t pos)
3292     +{
3293     + return SYSC_pwrite64((unsigned int) fd, (const char __user *) buf,
3294     + (size_t) count, pos);
3295     +}
3296     +SYSCALL_ALIAS(sys_pwrite64, SyS_pwrite64);
3297     +#endif
3298    
3299     /*
3300     * Reduce an iovec's length in-place. Return the resulting number of segments
3301     @@ -637,8 +654,8 @@ ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
3302    
3303     EXPORT_SYMBOL(vfs_writev);
3304    
3305     -asmlinkage ssize_t
3306     -sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
3307     +SYSCALL_DEFINE3(readv, unsigned long, fd, const struct iovec __user *, vec,
3308     + unsigned long, vlen)
3309     {
3310     struct file *file;
3311     ssize_t ret = -EBADF;
3312     @@ -658,8 +675,8 @@ sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
3313     return ret;
3314     }
3315    
3316     -asmlinkage ssize_t
3317     -sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
3318     +SYSCALL_DEFINE3(writev, unsigned long, fd, const struct iovec __user *, vec,
3319     + unsigned long, vlen)
3320     {
3321     struct file *file;
3322     ssize_t ret = -EBADF;
3323     @@ -777,7 +794,7 @@ out:
3324     return retval;
3325     }
3326    
3327     -asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, size_t count)
3328     +SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, off_t __user *, offset, size_t, count)
3329     {
3330     loff_t pos;
3331     off_t off;
3332     @@ -796,7 +813,7 @@ asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, siz
3333     return do_sendfile(out_fd, in_fd, NULL, count, 0);
3334     }
3335    
3336     -asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t __user *offset, size_t count)
3337     +SYSCALL_DEFINE4(sendfile64, int, out_fd, int, in_fd, loff_t __user *, offset, size_t, count)
3338     {
3339     loff_t pos;
3340     ssize_t ret;
3341     diff --git a/fs/readdir.c b/fs/readdir.c
3342     index 93a7559..d68ea47 100644
3343     --- a/fs/readdir.c
3344     +++ b/fs/readdir.c
3345     @@ -102,7 +102,8 @@ efault:
3346     return -EFAULT;
3347     }
3348    
3349     -asmlinkage long old_readdir(unsigned int fd, struct old_linux_dirent __user * dirent, unsigned int count)
3350     +SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
3351     + struct old_linux_dirent __user *, dirent, unsigned int, count)
3352     {
3353     int error;
3354     struct file * file;
3355     @@ -187,7 +188,8 @@ efault:
3356     return -EFAULT;
3357     }
3358    
3359     -asmlinkage long sys_getdents(unsigned int fd, struct linux_dirent __user * dirent, unsigned int count)
3360     +SYSCALL_DEFINE3(getdents, unsigned int, fd,
3361     + struct linux_dirent __user *, dirent, unsigned int, count)
3362     {
3363     struct file * file;
3364     struct linux_dirent __user * lastdirent;
3365     @@ -271,7 +273,8 @@ efault:
3366     return -EFAULT;
3367     }
3368    
3369     -asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count)
3370     +SYSCALL_DEFINE3(getdents64, unsigned int, fd,
3371     + struct linux_dirent64 __user *, dirent, unsigned int, count)
3372     {
3373     struct file * file;
3374     struct linux_dirent64 __user * lastdirent;
3375     diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
3376     index 5699171..8c2615e 100644
3377     --- a/fs/reiserfs/inode.c
3378     +++ b/fs/reiserfs/inode.c
3379     @@ -2565,7 +2565,7 @@ static int reiserfs_write_begin(struct file *file,
3380     }
3381    
3382     index = pos >> PAGE_CACHE_SHIFT;
3383     - page = __grab_cache_page(mapping, index);
3384     + page = grab_cache_page_write_begin(mapping, index, flags);
3385     if (!page)
3386     return -ENOMEM;
3387     *pagep = page;
3388     diff --git a/fs/select.c b/fs/select.c
3389     index da0e882..d575e4f 100644
3390     --- a/fs/select.c
3391     +++ b/fs/select.c
3392     @@ -374,8 +374,8 @@ out_nofds:
3393     return ret;
3394     }
3395    
3396     -asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp,
3397     - fd_set __user *exp, struct timeval __user *tvp)
3398     +SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp,
3399     + fd_set __user *, exp, struct timeval __user *, tvp)
3400     {
3401     s64 timeout = -1;
3402     struct timeval tv;
3403     @@ -427,9 +427,9 @@ sticky:
3404     }
3405    
3406     #ifdef HAVE_SET_RESTORE_SIGMASK
3407     -asmlinkage long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp,
3408     - fd_set __user *exp, struct timespec __user *tsp,
3409     - const sigset_t __user *sigmask, size_t sigsetsize)
3410     +static long do_pselect(int n, fd_set __user *inp, fd_set __user *outp,
3411     + fd_set __user *exp, struct timespec __user *tsp,
3412     + const sigset_t __user *sigmask, size_t sigsetsize)
3413     {
3414     s64 timeout = MAX_SCHEDULE_TIMEOUT;
3415     sigset_t ksigmask, sigsaved;
3416     @@ -513,8 +513,9 @@ sticky:
3417     * which has a pointer to the sigset_t itself followed by a size_t containing
3418     * the sigset size.
3419     */
3420     -asmlinkage long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp,
3421     - fd_set __user *exp, struct timespec __user *tsp, void __user *sig)
3422     +SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp,
3423     + fd_set __user *, exp, struct timespec __user *, tsp,
3424     + void __user *, sig)
3425     {
3426     size_t sigsetsize = 0;
3427     sigset_t __user *up = NULL;
3428     @@ -527,7 +528,7 @@ asmlinkage long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp,
3429     return -EFAULT;
3430     }
3431    
3432     - return sys_pselect7(n, inp, outp, exp, tsp, up, sigsetsize);
3433     + return do_pselect(n, inp, outp, exp, tsp, up, sigsetsize);
3434     }
3435     #endif /* HAVE_SET_RESTORE_SIGMASK */
3436    
3437     @@ -727,8 +728,8 @@ static long do_restart_poll(struct restart_block *restart_block)
3438     return ret;
3439     }
3440    
3441     -asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,
3442     - long timeout_msecs)
3443     +SYSCALL_DEFINE3(poll, struct pollfd __user *, ufds, unsigned int, nfds,
3444     + long, timeout_msecs)
3445     {
3446     s64 timeout_jiffies;
3447     int ret;
3448     @@ -761,9 +762,9 @@ asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,
3449     }
3450    
3451     #ifdef HAVE_SET_RESTORE_SIGMASK
3452     -asmlinkage long sys_ppoll(struct pollfd __user *ufds, unsigned int nfds,
3453     - struct timespec __user *tsp, const sigset_t __user *sigmask,
3454     - size_t sigsetsize)
3455     +SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, unsigned int, nfds,
3456     + struct timespec __user *, tsp, const sigset_t __user *, sigmask,
3457     + size_t, sigsetsize)
3458     {
3459     sigset_t ksigmask, sigsaved;
3460     struct timespec ts;
3461     diff --git a/fs/signalfd.c b/fs/signalfd.c
3462     index 9c39bc7..b07565c 100644
3463     --- a/fs/signalfd.c
3464     +++ b/fs/signalfd.c
3465     @@ -205,8 +205,8 @@ static const struct file_operations signalfd_fops = {
3466     .read = signalfd_read,
3467     };
3468    
3469     -asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask,
3470     - size_t sizemask, int flags)
3471     +SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
3472     + size_t, sizemask, int, flags)
3473     {
3474     sigset_t sigmask;
3475     struct signalfd_ctx *ctx;
3476     @@ -259,8 +259,8 @@ asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask,
3477     return ufd;
3478     }
3479    
3480     -asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask,
3481     - size_t sizemask)
3482     +SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask,
3483     + size_t, sizemask)
3484     {
3485     return sys_signalfd4(ufd, user_mask, sizemask, 0);
3486     }
3487     diff --git a/fs/smbfs/file.c b/fs/smbfs/file.c
3488     index e4f8d51..92d5e8f 100644
3489     --- a/fs/smbfs/file.c
3490     +++ b/fs/smbfs/file.c
3491     @@ -297,7 +297,7 @@ static int smb_write_begin(struct file *file, struct address_space *mapping,
3492     struct page **pagep, void **fsdata)
3493     {
3494     pgoff_t index = pos >> PAGE_CACHE_SHIFT;
3495     - *pagep = __grab_cache_page(mapping, index);
3496     + *pagep = grab_cache_page_write_begin(mapping, index, flags);
3497     if (!*pagep)
3498     return -ENOMEM;
3499     return 0;
3500     diff --git a/fs/splice.c b/fs/splice.c
3501     index a1e701c..6d310c7 100644
3502     --- a/fs/splice.c
3503     +++ b/fs/splice.c
3504     @@ -1434,8 +1434,8 @@ static long vmsplice_to_pipe(struct file *file, const struct iovec __user *iov,
3505     * Currently we punt and implement it as a normal copy, see pipe_to_user().
3506     *
3507     */
3508     -asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
3509     - unsigned long nr_segs, unsigned int flags)
3510     +SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, iov,
3511     + unsigned long, nr_segs, unsigned int, flags)
3512     {
3513     struct file *file;
3514     long error;
3515     @@ -1460,9 +1460,9 @@ asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
3516     return error;
3517     }
3518    
3519     -asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
3520     - int fd_out, loff_t __user *off_out,
3521     - size_t len, unsigned int flags)
3522     +SYSCALL_DEFINE6(splice, int, fd_in, loff_t __user *, off_in,
3523     + int, fd_out, loff_t __user *, off_out,
3524     + size_t, len, unsigned int, flags)
3525     {
3526     long error;
3527     struct file *in, *out;
3528     @@ -1684,7 +1684,7 @@ static long do_tee(struct file *in, struct file *out, size_t len,
3529     return ret;
3530     }
3531    
3532     -asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags)
3533     +SYSCALL_DEFINE4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags)
3534     {
3535     struct file *in;
3536     int error, fput_in;
3537     diff --git a/fs/stat.c b/fs/stat.c
3538     index 7c46fbe..4bd85da 100644
3539     --- a/fs/stat.c
3540     +++ b/fs/stat.c
3541     @@ -152,7 +152,7 @@ static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat __user * sta
3542     return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
3543     }
3544    
3545     -asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user * statbuf)
3546     +SYSCALL_DEFINE2(stat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
3547     {
3548     struct kstat stat;
3549     int error = vfs_stat_fd(AT_FDCWD, filename, &stat);
3550     @@ -162,7 +162,8 @@ asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user
3551    
3552     return error;
3553     }
3554     -asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __user * statbuf)
3555     +
3556     +SYSCALL_DEFINE2(lstat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
3557     {
3558     struct kstat stat;
3559     int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
3560     @@ -172,7 +173,8 @@ asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __use
3561    
3562     return error;
3563     }
3564     -asmlinkage long sys_fstat(unsigned int fd, struct __old_kernel_stat __user * statbuf)
3565     +
3566     +SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf)
3567     {
3568     struct kstat stat;
3569     int error = vfs_fstat(fd, &stat);
3570     @@ -235,7 +237,7 @@ static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
3571     return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
3572     }
3573    
3574     -asmlinkage long sys_newstat(char __user *filename, struct stat __user *statbuf)
3575     +SYSCALL_DEFINE2(newstat, char __user *, filename, struct stat __user *, statbuf)
3576     {
3577     struct kstat stat;
3578     int error = vfs_stat_fd(AT_FDCWD, filename, &stat);
3579     @@ -246,7 +248,7 @@ asmlinkage long sys_newstat(char __user *filename, struct stat __user *statbuf)
3580     return error;
3581     }
3582    
3583     -asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf)
3584     +SYSCALL_DEFINE2(newlstat, char __user *, filename, struct stat __user *, statbuf)
3585     {
3586     struct kstat stat;
3587     int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
3588     @@ -258,8 +260,8 @@ asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf)
3589     }
3590    
3591     #if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT)
3592     -asmlinkage long sys_newfstatat(int dfd, char __user *filename,
3593     - struct stat __user *statbuf, int flag)
3594     +SYSCALL_DEFINE4(newfstatat, int, dfd, char __user *, filename,
3595     + struct stat __user *, statbuf, int, flag)
3596     {
3597     struct kstat stat;
3598     int error = -EINVAL;
3599     @@ -280,7 +282,7 @@ out:
3600     }
3601     #endif
3602    
3603     -asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf)
3604     +SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf)
3605     {
3606     struct kstat stat;
3607     int error = vfs_fstat(fd, &stat);
3608     @@ -291,8 +293,8 @@ asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf)
3609     return error;
3610     }
3611    
3612     -asmlinkage long sys_readlinkat(int dfd, const char __user *pathname,
3613     - char __user *buf, int bufsiz)
3614     +SYSCALL_DEFINE4(readlinkat, int, dfd, const char __user *, pathname,
3615     + char __user *, buf, int, bufsiz)
3616     {
3617     struct path path;
3618     int error;
3619     @@ -318,8 +320,8 @@ asmlinkage long sys_readlinkat(int dfd, const char __user *pathname,
3620     return error;
3621     }
3622    
3623     -asmlinkage long sys_readlink(const char __user *path, char __user *buf,
3624     - int bufsiz)
3625     +SYSCALL_DEFINE3(readlink, const char __user *, path, char __user *, buf,
3626     + int, bufsiz)
3627     {
3628     return sys_readlinkat(AT_FDCWD, path, buf, bufsiz);
3629     }
3630     @@ -365,7 +367,7 @@ static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf)
3631     return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
3632     }
3633    
3634     -asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbuf)
3635     +SYSCALL_DEFINE2(stat64, char __user *, filename, struct stat64 __user *, statbuf)
3636     {
3637     struct kstat stat;
3638     int error = vfs_stat(filename, &stat);
3639     @@ -375,7 +377,8 @@ asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbu
3640    
3641     return error;
3642     }
3643     -asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statbuf)
3644     +
3645     +SYSCALL_DEFINE2(lstat64, char __user *, filename, struct stat64 __user *, statbuf)
3646     {
3647     struct kstat stat;
3648     int error = vfs_lstat(filename, &stat);
3649     @@ -385,7 +388,8 @@ asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statb
3650    
3651     return error;
3652     }
3653     -asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf)
3654     +
3655     +SYSCALL_DEFINE2(fstat64, unsigned long, fd, struct stat64 __user *, statbuf)
3656     {
3657     struct kstat stat;
3658     int error = vfs_fstat(fd, &stat);
3659     @@ -396,8 +400,8 @@ asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf)
3660     return error;
3661     }
3662    
3663     -asmlinkage long sys_fstatat64(int dfd, char __user *filename,
3664     - struct stat64 __user *statbuf, int flag)
3665     +SYSCALL_DEFINE4(fstatat64, int, dfd, char __user *, filename,
3666     + struct stat64 __user *, statbuf, int, flag)
3667     {
3668     struct kstat stat;
3669     int error = -EINVAL;
3670     diff --git a/fs/super.c b/fs/super.c
3671     index e931ae9..909fcb4 100644
3672     --- a/fs/super.c
3673     +++ b/fs/super.c
3674     @@ -534,7 +534,7 @@ rescan:
3675     return NULL;
3676     }
3677    
3678     -asmlinkage long sys_ustat(unsigned dev, struct ustat __user * ubuf)
3679     +SYSCALL_DEFINE2(ustat, unsigned, dev, struct ustat __user *, ubuf)
3680     {
3681     struct super_block *s;
3682     struct ustat tmp;
3683     diff --git a/fs/sync.c b/fs/sync.c
3684     index 2967562..6cc8cb4 100644
3685     --- a/fs/sync.c
3686     +++ b/fs/sync.c
3687     @@ -36,7 +36,7 @@ static void do_sync(unsigned long wait)
3688     laptop_sync_completion();
3689     }
3690    
3691     -asmlinkage long sys_sync(void)
3692     +SYSCALL_DEFINE0(sync)
3693     {
3694     do_sync(1);
3695     return 0;
3696     @@ -118,12 +118,12 @@ static long __do_fsync(unsigned int fd, int datasync)
3697     return ret;
3698     }
3699    
3700     -asmlinkage long sys_fsync(unsigned int fd)
3701     +SYSCALL_DEFINE1(fsync, unsigned int, fd)
3702     {
3703     return __do_fsync(fd, 0);
3704     }
3705    
3706     -asmlinkage long sys_fdatasync(unsigned int fd)
3707     +SYSCALL_DEFINE1(fdatasync, unsigned int, fd)
3708     {
3709     return __do_fsync(fd, 1);
3710     }
3711     @@ -175,8 +175,8 @@ asmlinkage long sys_fdatasync(unsigned int fd)
3712     * already-instantiated disk blocks, there are no guarantees here that the data
3713     * will be available after a crash.
3714     */
3715     -asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes,
3716     - unsigned int flags)
3717     +SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes,
3718     + unsigned int flags)
3719     {
3720     int ret;
3721     struct file *file;
3722     @@ -236,14 +236,32 @@ out_put:
3723     out:
3724     return ret;
3725     }
3726     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
3727     +asmlinkage long SyS_sync_file_range(long fd, loff_t offset, loff_t nbytes,
3728     + long flags)
3729     +{
3730     + return SYSC_sync_file_range((int) fd, offset, nbytes,
3731     + (unsigned int) flags);
3732     +}
3733     +SYSCALL_ALIAS(sys_sync_file_range, SyS_sync_file_range);
3734     +#endif
3735    
3736     /* It would be nice if people remember that not all the world's an i386
3737     when they introduce new system calls */
3738     -asmlinkage long sys_sync_file_range2(int fd, unsigned int flags,
3739     - loff_t offset, loff_t nbytes)
3740     +SYSCALL_DEFINE(sync_file_range2)(int fd, unsigned int flags,
3741     + loff_t offset, loff_t nbytes)
3742     {
3743     return sys_sync_file_range(fd, offset, nbytes, flags);
3744     }
3745     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
3746     +asmlinkage long SyS_sync_file_range2(long fd, long flags,
3747     + loff_t offset, loff_t nbytes)
3748     +{
3749     + return SYSC_sync_file_range2((int) fd, (unsigned int) flags,
3750     + offset, nbytes);
3751     +}
3752     +SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
3753     +#endif
3754    
3755     /*
3756     * `endbyte' is inclusive
3757     diff --git a/fs/timerfd.c b/fs/timerfd.c
3758     index c502c60..ee211df 100644
3759     --- a/fs/timerfd.c
3760     +++ b/fs/timerfd.c
3761     @@ -179,7 +179,7 @@ static struct file *timerfd_fget(int fd)
3762     return file;
3763     }
3764    
3765     -asmlinkage long sys_timerfd_create(int clockid, int flags)
3766     +SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
3767     {
3768     int ufd;
3769     struct timerfd_ctx *ctx;
3770     @@ -210,9 +210,9 @@ asmlinkage long sys_timerfd_create(int clockid, int flags)
3771     return ufd;
3772     }
3773    
3774     -asmlinkage long sys_timerfd_settime(int ufd, int flags,
3775     - const struct itimerspec __user *utmr,
3776     - struct itimerspec __user *otmr)
3777     +SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags,
3778     + const struct itimerspec __user *, utmr,
3779     + struct itimerspec __user *, otmr)
3780     {
3781     struct file *file;
3782     struct timerfd_ctx *ctx;
3783     @@ -267,7 +267,7 @@ asmlinkage long sys_timerfd_settime(int ufd, int flags,
3784     return 0;
3785     }
3786    
3787     -asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr)
3788     +SYSCALL_DEFINE2(timerfd_gettime, int, ufd, struct itimerspec __user *, otmr)
3789     {
3790     struct file *file;
3791     struct timerfd_ctx *ctx;
3792     diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
3793     index 3d698e2..40033dc 100644
3794     --- a/fs/ubifs/file.c
3795     +++ b/fs/ubifs/file.c
3796     @@ -213,7 +213,8 @@ static void release_existing_page_budget(struct ubifs_info *c)
3797     }
3798    
3799     static int write_begin_slow(struct address_space *mapping,
3800     - loff_t pos, unsigned len, struct page **pagep)
3801     + loff_t pos, unsigned len, struct page **pagep,
3802     + unsigned flags)
3803     {
3804     struct inode *inode = mapping->host;
3805     struct ubifs_info *c = inode->i_sb->s_fs_info;
3806     @@ -241,7 +242,7 @@ static int write_begin_slow(struct address_space *mapping,
3807     if (unlikely(err))
3808     return err;
3809    
3810     - page = __grab_cache_page(mapping, index);
3811     + page = grab_cache_page_write_begin(mapping, index, flags);
3812     if (unlikely(!page)) {
3813     ubifs_release_budget(c, &req);
3814     return -ENOMEM;
3815     @@ -432,7 +433,7 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,
3816     return -EROFS;
3817    
3818     /* Try out the fast-path part first */
3819     - page = __grab_cache_page(mapping, index);
3820     + page = grab_cache_page_write_begin(mapping, index, flags);
3821     if (unlikely(!page))
3822     return -ENOMEM;
3823    
3824     @@ -477,7 +478,7 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,
3825     unlock_page(page);
3826     page_cache_release(page);
3827    
3828     - return write_begin_slow(mapping, pos, len, pagep);
3829     + return write_begin_slow(mapping, pos, len, pagep, flags);
3830     }
3831    
3832     /*
3833     diff --git a/fs/utimes.c b/fs/utimes.c
3834     index 6929e3e..e4c75db 100644
3835     --- a/fs/utimes.c
3836     +++ b/fs/utimes.c
3837     @@ -24,7 +24,7 @@
3838     * must be owner or have write permission.
3839     * Else, update from *times, must be owner or super user.
3840     */
3841     -asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times)
3842     +SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
3843     {
3844     struct timespec tv[2];
3845    
3846     @@ -170,7 +170,8 @@ out:
3847     return error;
3848     }
3849    
3850     -asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags)
3851     +SYSCALL_DEFINE4(utimensat, int, dfd, char __user *, filename,
3852     + struct timespec __user *, utimes, int, flags)
3853     {
3854     struct timespec tstimes[2];
3855    
3856     @@ -187,7 +188,8 @@ asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __
3857     return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags);
3858     }
3859    
3860     -asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __user *utimes)
3861     +SYSCALL_DEFINE3(futimesat, int, dfd, char __user *, filename,
3862     + struct timeval __user *, utimes)
3863     {
3864     struct timeval times[2];
3865     struct timespec tstimes[2];
3866     @@ -214,7 +216,8 @@ asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __u
3867     return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
3868     }
3869    
3870     -asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes)
3871     +SYSCALL_DEFINE2(utimes, char __user *, filename,
3872     + struct timeval __user *, utimes)
3873     {
3874     return sys_futimesat(AT_FDCWD, filename, utimes);
3875     }
3876     diff --git a/fs/xattr.c b/fs/xattr.c
3877     index 468377e..086db06 100644
3878     --- a/fs/xattr.c
3879     +++ b/fs/xattr.c
3880     @@ -251,9 +251,9 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
3881     return error;
3882     }
3883    
3884     -asmlinkage long
3885     -sys_setxattr(const char __user *pathname, const char __user *name,
3886     - const void __user *value, size_t size, int flags)
3887     +SYSCALL_DEFINE5(setxattr, const char __user *, pathname,
3888     + const char __user *, name, const void __user *, value,
3889     + size_t, size, int, flags)
3890     {
3891     struct path path;
3892     int error;
3893     @@ -270,9 +270,9 @@ sys_setxattr(const char __user *pathname, const char __user *name,
3894     return error;
3895     }
3896    
3897     -asmlinkage long
3898     -sys_lsetxattr(const char __user *pathname, const char __user *name,
3899     - const void __user *value, size_t size, int flags)
3900     +SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
3901     + const char __user *, name, const void __user *, value,
3902     + size_t, size, int, flags)
3903     {
3904     struct path path;
3905     int error;
3906     @@ -289,9 +289,8 @@ sys_lsetxattr(const char __user *pathname, const char __user *name,
3907     return error;
3908     }
3909    
3910     -asmlinkage long
3911     -sys_fsetxattr(int fd, const char __user *name, const void __user *value,
3912     - size_t size, int flags)
3913     +SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
3914     + const void __user *,value, size_t, size, int, flags)
3915     {
3916     struct file *f;
3917     struct dentry *dentry;
3918     @@ -349,9 +348,8 @@ getxattr(struct dentry *d, const char __user *name, void __user *value,
3919     return error;
3920     }
3921    
3922     -asmlinkage ssize_t
3923     -sys_getxattr(const char __user *pathname, const char __user *name,
3924     - void __user *value, size_t size)
3925     +SYSCALL_DEFINE4(getxattr, const char __user *, pathname,
3926     + const char __user *, name, void __user *, value, size_t, size)
3927     {
3928     struct path path;
3929     ssize_t error;
3930     @@ -364,9 +362,8 @@ sys_getxattr(const char __user *pathname, const char __user *name,
3931     return error;
3932     }
3933    
3934     -asmlinkage ssize_t
3935     -sys_lgetxattr(const char __user *pathname, const char __user *name, void __user *value,
3936     - size_t size)
3937     +SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname,
3938     + const char __user *, name, void __user *, value, size_t, size)
3939     {
3940     struct path path;
3941     ssize_t error;
3942     @@ -379,8 +376,8 @@ sys_lgetxattr(const char __user *pathname, const char __user *name, void __user
3943     return error;
3944     }
3945    
3946     -asmlinkage ssize_t
3947     -sys_fgetxattr(int fd, const char __user *name, void __user *value, size_t size)
3948     +SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
3949     + void __user *, value, size_t, size)
3950     {
3951     struct file *f;
3952     ssize_t error = -EBADF;
3953     @@ -424,8 +421,8 @@ listxattr(struct dentry *d, char __user *list, size_t size)
3954     return error;
3955     }
3956    
3957     -asmlinkage ssize_t
3958     -sys_listxattr(const char __user *pathname, char __user *list, size_t size)
3959     +SYSCALL_DEFINE3(listxattr, const char __user *, pathname, char __user *, list,
3960     + size_t, size)
3961     {
3962     struct path path;
3963     ssize_t error;
3964     @@ -438,8 +435,8 @@ sys_listxattr(const char __user *pathname, char __user *list, size_t size)
3965     return error;
3966     }
3967    
3968     -asmlinkage ssize_t
3969     -sys_llistxattr(const char __user *pathname, char __user *list, size_t size)
3970     +SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list,
3971     + size_t, size)
3972     {
3973     struct path path;
3974     ssize_t error;
3975     @@ -452,8 +449,7 @@ sys_llistxattr(const char __user *pathname, char __user *list, size_t size)
3976     return error;
3977     }
3978    
3979     -asmlinkage ssize_t
3980     -sys_flistxattr(int fd, char __user *list, size_t size)
3981     +SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
3982     {
3983     struct file *f;
3984     ssize_t error = -EBADF;
3985     @@ -485,8 +481,8 @@ removexattr(struct dentry *d, const char __user *name)
3986     return vfs_removexattr(d, kname);
3987     }
3988    
3989     -asmlinkage long
3990     -sys_removexattr(const char __user *pathname, const char __user *name)
3991     +SYSCALL_DEFINE2(removexattr, const char __user *, pathname,
3992     + const char __user *, name)
3993     {
3994     struct path path;
3995     int error;
3996     @@ -503,8 +499,8 @@ sys_removexattr(const char __user *pathname, const char __user *name)
3997     return error;
3998     }
3999    
4000     -asmlinkage long
4001     -sys_lremovexattr(const char __user *pathname, const char __user *name)
4002     +SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,
4003     + const char __user *, name)
4004     {
4005     struct path path;
4006     int error;
4007     @@ -521,8 +517,7 @@ sys_lremovexattr(const char __user *pathname, const char __user *name)
4008     return error;
4009     }
4010    
4011     -asmlinkage long
4012     -sys_fremovexattr(int fd, const char __user *name)
4013     +SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
4014     {
4015     struct file *f;
4016     struct dentry *dentry;
4017     diff --git a/include/linux/compat.h b/include/linux/compat.h
4018     index cf8d11c..275b9bd 100644
4019     --- a/include/linux/compat.h
4020     +++ b/include/linux/compat.h
4021     @@ -278,5 +278,18 @@ asmlinkage long compat_sys_timerfd_settime(int ufd, int flags,
4022     asmlinkage long compat_sys_timerfd_gettime(int ufd,
4023     struct compat_itimerspec __user *otmr);
4024    
4025     +asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
4026     + __u32 __user *pages,
4027     + const int __user *nodes,
4028     + int __user *status,
4029     + int flags);
4030     +asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename,
4031     + struct compat_timeval __user *t);
4032     +asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
4033     + struct compat_stat __user *statbuf,
4034     + int flag);
4035     +asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
4036     + int flags, int mode);
4037     +
4038     #endif /* CONFIG_COMPAT */
4039     #endif /* _LINUX_COMPAT_H */
4040     diff --git a/include/linux/fs.h b/include/linux/fs.h
4041     index 580b513..d621217 100644
4042     --- a/include/linux/fs.h
4043     +++ b/include/linux/fs.h
4044     @@ -403,6 +403,9 @@ enum positive_aop_returns {
4045    
4046     #define AOP_FLAG_UNINTERRUPTIBLE 0x0001 /* will not do a short write */
4047     #define AOP_FLAG_CONT_EXPAND 0x0002 /* called from cont_expand */
4048     +#define AOP_FLAG_NOFS 0x0004 /* used by filesystem to direct
4049     + * helper code (eg buffer layer)
4050     + * to clear GFP_FS from alloc */
4051    
4052     /*
4053     * oh the beauties of C type declarations.
4054     @@ -1959,7 +1962,7 @@ extern int page_readlink(struct dentry *, char __user *, int);
4055     extern void *page_follow_link_light(struct dentry *, struct nameidata *);
4056     extern void page_put_link(struct dentry *, struct nameidata *, void *);
4057     extern int __page_symlink(struct inode *inode, const char *symname, int len,
4058     - gfp_t gfp_mask);
4059     + int nofs);
4060     extern int page_symlink(struct inode *inode, const char *symname, int len);
4061     extern const struct inode_operations page_symlink_inode_operations;
4062     extern int generic_readlink(struct dentry *, char __user *, int);
4063     diff --git a/include/linux/mm.h b/include/linux/mm.h
4064     index 72a15dc..856d52a 100644
4065     --- a/include/linux/mm.h
4066     +++ b/include/linux/mm.h
4067     @@ -253,7 +253,6 @@ static inline int put_page_testzero(struct page *page)
4068     */
4069     static inline int get_page_unless_zero(struct page *page)
4070     {
4071     - VM_BUG_ON(PageTail(page));
4072     return atomic_inc_not_zero(&page->_count);
4073     }
4074    
4075     diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
4076     index 5da31c1..62efceb 100644
4077     --- a/include/linux/pagemap.h
4078     +++ b/include/linux/pagemap.h
4079     @@ -213,7 +213,8 @@ unsigned find_get_pages_contig(struct address_space *mapping, pgoff_t start,
4080     unsigned find_get_pages_tag(struct address_space *mapping, pgoff_t *index,
4081     int tag, unsigned int nr_pages, struct page **pages);
4082    
4083     -struct page *__grab_cache_page(struct address_space *mapping, pgoff_t index);
4084     +struct page *grab_cache_page_write_begin(struct address_space *mapping,
4085     + pgoff_t index, unsigned flags);
4086    
4087     /*
4088     * Returns locked page at given index in given cache, creating it if needed.
4089     diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h
4090     index a916c66..355f6e8 100644
4091     --- a/include/linux/radix-tree.h
4092     +++ b/include/linux/radix-tree.h
4093     @@ -136,7 +136,7 @@ do { \
4094     */
4095     static inline void *radix_tree_deref_slot(void **pslot)
4096     {
4097     - void *ret = *pslot;
4098     + void *ret = rcu_dereference(*pslot);
4099     if (unlikely(radix_tree_is_indirect_ptr(ret)))
4100     ret = RADIX_TREE_RETRY;
4101     return ret;
4102     diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
4103     index d6ff145..f54aa38 100644
4104     --- a/include/linux/syscalls.h
4105     +++ b/include/linux/syscalls.h
4106     @@ -54,6 +54,7 @@ struct compat_stat;
4107     struct compat_timeval;
4108     struct robust_list_head;
4109     struct getcpu_cache;
4110     +struct old_linux_dirent;
4111    
4112     #include <linux/types.h>
4113     #include <linux/aio_abi.h>
4114     @@ -65,6 +66,74 @@ struct getcpu_cache;
4115     #include <linux/quota.h>
4116     #include <linux/key.h>
4117    
4118     +#define __SC_DECL1(t1, a1) t1 a1
4119     +#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__)
4120     +#define __SC_DECL3(t3, a3, ...) t3 a3, __SC_DECL2(__VA_ARGS__)
4121     +#define __SC_DECL4(t4, a4, ...) t4 a4, __SC_DECL3(__VA_ARGS__)
4122     +#define __SC_DECL5(t5, a5, ...) t5 a5, __SC_DECL4(__VA_ARGS__)
4123     +#define __SC_DECL6(t6, a6, ...) t6 a6, __SC_DECL5(__VA_ARGS__)
4124     +
4125     +#define __SC_LONG1(t1, a1) long a1
4126     +#define __SC_LONG2(t2, a2, ...) long a2, __SC_LONG1(__VA_ARGS__)
4127     +#define __SC_LONG3(t3, a3, ...) long a3, __SC_LONG2(__VA_ARGS__)
4128     +#define __SC_LONG4(t4, a4, ...) long a4, __SC_LONG3(__VA_ARGS__)
4129     +#define __SC_LONG5(t5, a5, ...) long a5, __SC_LONG4(__VA_ARGS__)
4130     +#define __SC_LONG6(t6, a6, ...) long a6, __SC_LONG5(__VA_ARGS__)
4131     +
4132     +#define __SC_CAST1(t1, a1) (t1) a1
4133     +#define __SC_CAST2(t2, a2, ...) (t2) a2, __SC_CAST1(__VA_ARGS__)
4134     +#define __SC_CAST3(t3, a3, ...) (t3) a3, __SC_CAST2(__VA_ARGS__)
4135     +#define __SC_CAST4(t4, a4, ...) (t4) a4, __SC_CAST3(__VA_ARGS__)
4136     +#define __SC_CAST5(t5, a5, ...) (t5) a5, __SC_CAST4(__VA_ARGS__)
4137     +#define __SC_CAST6(t6, a6, ...) (t6) a6, __SC_CAST5(__VA_ARGS__)
4138     +
4139     +#define __SC_TEST(type) BUILD_BUG_ON(sizeof(type) > sizeof(long))
4140     +#define __SC_TEST1(t1, a1) __SC_TEST(t1)
4141     +#define __SC_TEST2(t2, a2, ...) __SC_TEST(t2); __SC_TEST1(__VA_ARGS__)
4142     +#define __SC_TEST3(t3, a3, ...) __SC_TEST(t3); __SC_TEST2(__VA_ARGS__)
4143     +#define __SC_TEST4(t4, a4, ...) __SC_TEST(t4); __SC_TEST3(__VA_ARGS__)
4144     +#define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__)
4145     +#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
4146     +
4147     +#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
4148     +#define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__)
4149     +#define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__)
4150     +#define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__)
4151     +#define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__)
4152     +#define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__)
4153     +#define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__)
4154     +
4155     +#ifdef CONFIG_PPC64
4156     +#define SYSCALL_ALIAS(alias, name) \
4157     + asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
4158     + "\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
4159     +#else
4160     +#define SYSCALL_ALIAS(alias, name) \
4161     + asm ("\t.globl " #alias "\n\t.set " #alias ", " #name)
4162     +#endif
4163     +
4164     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
4165     +
4166     +#define SYSCALL_DEFINE(name) static inline long SYSC_##name
4167     +#define SYSCALL_DEFINEx(x, name, ...) \
4168     + asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \
4169     + static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \
4170     + asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \
4171     + { \
4172     + __SC_TEST##x(__VA_ARGS__); \
4173     + return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \
4174     + } \
4175     + SYSCALL_ALIAS(sys_##name, SyS_##name); \
4176     + static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__))
4177     +
4178     +#else /* CONFIG_HAVE_SYSCALL_WRAPPERS */
4179     +
4180     +#define SYSCALL_DEFINE(name) asmlinkage long sys_##name
4181     +#define SYSCALL_DEFINEx(x, name, ...) \
4182     + asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__))
4183     +
4184     +#endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */
4185     +
4186     asmlinkage long sys_time(time_t __user *tloc);
4187     asmlinkage long sys_stime(time_t __user *tptr);
4188     asmlinkage long sys_gettimeofday(struct timeval __user *tv,
4189     @@ -77,7 +146,7 @@ asmlinkage long sys_times(struct tms __user *tbuf);
4190    
4191     asmlinkage long sys_gettid(void);
4192     asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp);
4193     -asmlinkage unsigned long sys_alarm(unsigned int seconds);
4194     +asmlinkage long sys_alarm(unsigned int seconds);
4195     asmlinkage long sys_getpid(void);
4196     asmlinkage long sys_getppid(void);
4197     asmlinkage long sys_getuid(void);
4198     @@ -166,7 +235,7 @@ asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments,
4199     unsigned long flags);
4200    
4201     asmlinkage long sys_exit(int error_code);
4202     -asmlinkage void sys_exit_group(int error_code);
4203     +asmlinkage long sys_exit_group(int error_code);
4204     asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr,
4205     int options, struct rusage __user *ru);
4206     asmlinkage long sys_waitid(int which, pid_t pid,
4207     @@ -196,7 +265,7 @@ asmlinkage long sys_tkill(int pid, int sig);
4208     asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo);
4209     asmlinkage long sys_sgetmask(void);
4210     asmlinkage long sys_ssetmask(int newmask);
4211     -asmlinkage unsigned long sys_signal(int sig, __sighandler_t handler);
4212     +asmlinkage long sys_signal(int sig, __sighandler_t handler);
4213     asmlinkage long sys_pause(void);
4214    
4215     asmlinkage long sys_sync(void);
4216     @@ -246,29 +315,29 @@ asmlinkage long sys_lsetxattr(const char __user *path, const char __user *name,
4217     const void __user *value, size_t size, int flags);
4218     asmlinkage long sys_fsetxattr(int fd, const char __user *name,
4219     const void __user *value, size_t size, int flags);
4220     -asmlinkage ssize_t sys_getxattr(const char __user *path, const char __user *name,
4221     - void __user *value, size_t size);
4222     -asmlinkage ssize_t sys_lgetxattr(const char __user *path, const char __user *name,
4223     - void __user *value, size_t size);
4224     -asmlinkage ssize_t sys_fgetxattr(int fd, const char __user *name,
4225     - void __user *value, size_t size);
4226     -asmlinkage ssize_t sys_listxattr(const char __user *path, char __user *list,
4227     - size_t size);
4228     -asmlinkage ssize_t sys_llistxattr(const char __user *path, char __user *list,
4229     - size_t size);
4230     -asmlinkage ssize_t sys_flistxattr(int fd, char __user *list, size_t size);
4231     +asmlinkage long sys_getxattr(const char __user *path, const char __user *name,
4232     + void __user *value, size_t size);
4233     +asmlinkage long sys_lgetxattr(const char __user *path, const char __user *name,
4234     + void __user *value, size_t size);
4235     +asmlinkage long sys_fgetxattr(int fd, const char __user *name,
4236     + void __user *value, size_t size);
4237     +asmlinkage long sys_listxattr(const char __user *path, char __user *list,
4238     + size_t size);
4239     +asmlinkage long sys_llistxattr(const char __user *path, char __user *list,
4240     + size_t size);
4241     +asmlinkage long sys_flistxattr(int fd, char __user *list, size_t size);
4242     asmlinkage long sys_removexattr(const char __user *path,
4243     const char __user *name);
4244     asmlinkage long sys_lremovexattr(const char __user *path,
4245     const char __user *name);
4246     asmlinkage long sys_fremovexattr(int fd, const char __user *name);
4247    
4248     -asmlinkage unsigned long sys_brk(unsigned long brk);
4249     +asmlinkage long sys_brk(unsigned long brk);
4250     asmlinkage long sys_mprotect(unsigned long start, size_t len,
4251     unsigned long prot);
4252     -asmlinkage unsigned long sys_mremap(unsigned long addr,
4253     - unsigned long old_len, unsigned long new_len,
4254     - unsigned long flags, unsigned long new_addr);
4255     +asmlinkage long sys_mremap(unsigned long addr,
4256     + unsigned long old_len, unsigned long new_len,
4257     + unsigned long flags, unsigned long new_addr);
4258     asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
4259     unsigned long prot, unsigned long pgoff,
4260     unsigned long flags);
4261     @@ -321,10 +390,10 @@ asmlinkage long sys_io_submit(aio_context_t, long,
4262     struct iocb __user * __user *);
4263     asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
4264     struct io_event __user *result);
4265     -asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd,
4266     - off_t __user *offset, size_t count);
4267     -asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd,
4268     - loff_t __user *offset, size_t count);
4269     +asmlinkage long sys_sendfile(int out_fd, int in_fd,
4270     + off_t __user *offset, size_t count);
4271     +asmlinkage long sys_sendfile64(int out_fd, int in_fd,
4272     + loff_t __user *offset, size_t count);
4273     asmlinkage long sys_readlink(const char __user *path,
4274     char __user *buf, int bufsiz);
4275     asmlinkage long sys_creat(const char __user *pathname, int mode);
4276     @@ -368,26 +437,25 @@ asmlinkage long sys_utime(char __user *filename,
4277     struct utimbuf __user *times);
4278     asmlinkage long sys_utimes(char __user *filename,
4279     struct timeval __user *utimes);
4280     -asmlinkage off_t sys_lseek(unsigned int fd, off_t offset,
4281     - unsigned int origin);
4282     +asmlinkage long sys_lseek(unsigned int fd, off_t offset,
4283     + unsigned int origin);
4284     asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
4285     unsigned long offset_low, loff_t __user *result,
4286     unsigned int origin);
4287     -asmlinkage ssize_t sys_read(unsigned int fd, char __user *buf,
4288     - size_t count);
4289     -asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count);
4290     -asmlinkage ssize_t sys_readv(unsigned long fd,
4291     - const struct iovec __user *vec,
4292     - unsigned long vlen);
4293     -asmlinkage ssize_t sys_write(unsigned int fd, const char __user *buf,
4294     - size_t count);
4295     -asmlinkage ssize_t sys_writev(unsigned long fd,
4296     - const struct iovec __user *vec,
4297     - unsigned long vlen);
4298     -asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
4299     - size_t count, loff_t pos);
4300     -asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
4301     - size_t count, loff_t pos);
4302     +asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);
4303     +asmlinkage long sys_readahead(int fd, loff_t offset, size_t count);
4304     +asmlinkage long sys_readv(unsigned long fd,
4305     + const struct iovec __user *vec,
4306     + unsigned long vlen);
4307     +asmlinkage long sys_write(unsigned int fd, const char __user *buf,
4308     + size_t count);
4309     +asmlinkage long sys_writev(unsigned long fd,
4310     + const struct iovec __user *vec,
4311     + unsigned long vlen);
4312     +asmlinkage long sys_pread64(unsigned int fd, char __user *buf,
4313     + size_t count, loff_t pos);
4314     +asmlinkage long sys_pwrite64(unsigned int fd, const char __user *buf,
4315     + size_t count, loff_t pos);
4316     asmlinkage long sys_getcwd(char __user *buf, unsigned long size);
4317     asmlinkage long sys_mkdir(const char __user *pathname, int mode);
4318     asmlinkage long sys_chdir(const char __user *filename);
4319     @@ -477,7 +545,7 @@ asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf);
4320     asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr);
4321     asmlinkage long sys_mq_unlink(const char __user *name);
4322     asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec __user *abs_timeout);
4323     -asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout);
4324     +asmlinkage long sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout);
4325     asmlinkage long sys_mq_notify(mqd_t mqdes, const struct sigevent __user *notification);
4326     asmlinkage long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr __user *mqstat, struct mq_attr __user *omqstat);
4327    
4328     @@ -531,11 +599,6 @@ asmlinkage long sys_move_pages(pid_t pid, unsigned long nr_pages,
4329     const int __user *nodes,
4330     int __user *status,
4331     int flags);
4332     -asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
4333     - __u32 __user *pages,
4334     - const int __user *nodes,
4335     - int __user *status,
4336     - int flags);
4337     asmlinkage long sys_mbind(unsigned long start, unsigned long len,
4338     unsigned long mode,
4339     unsigned long __user *nmask,
4340     @@ -550,7 +613,7 @@ asmlinkage long sys_inotify_init(void);
4341     asmlinkage long sys_inotify_init1(int flags);
4342     asmlinkage long sys_inotify_add_watch(int fd, const char __user *path,
4343     u32 mask);
4344     -asmlinkage long sys_inotify_rm_watch(int fd, u32 wd);
4345     +asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd);
4346    
4347     asmlinkage long sys_spu_run(int fd, __u32 __user *unpc,
4348     __u32 __user *ustatus);
4349     @@ -584,13 +647,6 @@ asmlinkage long sys_readlinkat(int dfd, const char __user *path, char __user *bu
4350     int bufsiz);
4351     asmlinkage long sys_utimensat(int dfd, char __user *filename,
4352     struct timespec __user *utimes, int flags);
4353     -asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename,
4354     - struct compat_timeval __user *t);
4355     -asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
4356     - struct compat_stat __user *statbuf,
4357     - int flag);
4358     -asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
4359     - int flags, int mode);
4360     asmlinkage long sys_unshare(unsigned long unshare_flags);
4361    
4362     asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
4363     @@ -622,6 +678,15 @@ asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr);
4364     asmlinkage long sys_eventfd(unsigned int count);
4365     asmlinkage long sys_eventfd2(unsigned int count, int flags);
4366     asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len);
4367     +asmlinkage long sys_old_readdir(unsigned int, struct old_linux_dirent __user *, unsigned int);
4368     +asmlinkage long sys_pselect6(int, fd_set __user *, fd_set __user *,
4369     + fd_set __user *, struct timespec __user *,
4370     + void __user *);
4371     +asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int,
4372     + struct timespec __user *, const sigset_t __user *,
4373     + size_t);
4374     +asmlinkage long sys_pipe2(int __user *, int);
4375     +asmlinkage long sys_pipe(int __user *);
4376    
4377     int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
4378    
4379     diff --git a/include/linux/time.h b/include/linux/time.h
4380     index e15206a..0095ad1 100644
4381     --- a/include/linux/time.h
4382     +++ b/include/linux/time.h
4383     @@ -99,6 +99,7 @@ extern unsigned long read_persistent_clock(void);
4384     extern int update_persistent_clock(struct timespec now);
4385     extern int no_sync_cmos_clock __read_mostly;
4386     void timekeeping_init(void);
4387     +extern int timekeeping_suspended;
4388    
4389     unsigned long get_seconds(void);
4390     struct timespec current_kernel_time(void);
4391     diff --git a/ipc/mqueue.c b/ipc/mqueue.c
4392     index 96fb36c..a58bfad 100644
4393     --- a/ipc/mqueue.c
4394     +++ b/ipc/mqueue.c
4395     @@ -647,8 +647,8 @@ static int oflag2acc[O_ACCMODE] = { MAY_READ, MAY_WRITE,
4396     return dentry_open(dentry, mqueue_mnt, oflag);
4397     }
4398    
4399     -asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode,
4400     - struct mq_attr __user *u_attr)
4401     +SYSCALL_DEFINE4(mq_open, const char __user *, u_name, int, oflag, mode_t, mode,
4402     + struct mq_attr __user *, u_attr)
4403     {
4404     struct dentry *dentry;
4405     struct file *filp;
4406     @@ -715,7 +715,7 @@ out_putname:
4407     return fd;
4408     }
4409    
4410     -asmlinkage long sys_mq_unlink(const char __user *u_name)
4411     +SYSCALL_DEFINE1(mq_unlink, const char __user *, u_name)
4412     {
4413     int err;
4414     char *name;
4415     @@ -808,9 +808,9 @@ static inline void pipelined_receive(struct mqueue_inode_info *info)
4416     sender->state = STATE_READY;
4417     }
4418    
4419     -asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr,
4420     - size_t msg_len, unsigned int msg_prio,
4421     - const struct timespec __user *u_abs_timeout)
4422     +SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr,
4423     + size_t, msg_len, unsigned int, msg_prio,
4424     + const struct timespec __user *, u_abs_timeout)
4425     {
4426     struct file *filp;
4427     struct inode *inode;
4428     @@ -896,9 +896,9 @@ out:
4429     return ret;
4430     }
4431    
4432     -asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr,
4433     - size_t msg_len, unsigned int __user *u_msg_prio,
4434     - const struct timespec __user *u_abs_timeout)
4435     +SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr,
4436     + size_t, msg_len, unsigned int __user *, u_msg_prio,
4437     + const struct timespec __user *, u_abs_timeout)
4438     {
4439     long timeout;
4440     ssize_t ret;
4441     @@ -981,8 +981,8 @@ out:
4442     * and he isn't currently owner of notification, will be silently discarded.
4443     * It isn't explicitly defined in the POSIX.
4444     */
4445     -asmlinkage long sys_mq_notify(mqd_t mqdes,
4446     - const struct sigevent __user *u_notification)
4447     +SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes,
4448     + const struct sigevent __user *, u_notification)
4449     {
4450     int ret;
4451     struct file *filp;
4452     @@ -1107,9 +1107,9 @@ out:
4453     return ret;
4454     }
4455    
4456     -asmlinkage long sys_mq_getsetattr(mqd_t mqdes,
4457     - const struct mq_attr __user *u_mqstat,
4458     - struct mq_attr __user *u_omqstat)
4459     +SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes,
4460     + const struct mq_attr __user *, u_mqstat,
4461     + struct mq_attr __user *, u_omqstat)
4462     {
4463     int ret;
4464     struct mq_attr mqstat, omqstat;
4465     diff --git a/ipc/msg.c b/ipc/msg.c
4466     index b4eee1c..2ceab7f 100644
4467     --- a/ipc/msg.c
4468     +++ b/ipc/msg.c
4469     @@ -309,7 +309,7 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
4470     return security_msg_queue_associate(msq, msgflg);
4471     }
4472    
4473     -asmlinkage long sys_msgget(key_t key, int msgflg)
4474     +SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg)
4475     {
4476     struct ipc_namespace *ns;
4477     struct ipc_ops msg_ops;
4478     @@ -466,7 +466,7 @@ out_up:
4479     return err;
4480     }
4481    
4482     -asmlinkage long sys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf)
4483     +SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
4484     {
4485     struct msg_queue *msq;
4486     int err, version;
4487     @@ -723,8 +723,8 @@ out_free:
4488     return err;
4489     }
4490    
4491     -asmlinkage long
4492     -sys_msgsnd(int msqid, struct msgbuf __user *msgp, size_t msgsz, int msgflg)
4493     +SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
4494     + int, msgflg)
4495     {
4496     long mtype;
4497    
4498     @@ -904,8 +904,8 @@ out_unlock:
4499     return msgsz;
4500     }
4501    
4502     -asmlinkage long sys_msgrcv(int msqid, struct msgbuf __user *msgp, size_t msgsz,
4503     - long msgtyp, int msgflg)
4504     +SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
4505     + long, msgtyp, int, msgflg)
4506     {
4507     long err, mtype;
4508    
4509     diff --git a/ipc/sem.c b/ipc/sem.c
4510     index bf1bc36..9eb9d31 100644
4511     --- a/ipc/sem.c
4512     +++ b/ipc/sem.c
4513     @@ -308,7 +308,7 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
4514     return 0;
4515     }
4516    
4517     -asmlinkage long sys_semget(key_t key, int nsems, int semflg)
4518     +SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
4519     {
4520     struct ipc_namespace *ns;
4521     struct ipc_ops sem_ops;
4522     @@ -887,7 +887,7 @@ out_up:
4523     return err;
4524     }
4525    
4526     -asmlinkage long sys_semctl (int semid, int semnum, int cmd, union semun arg)
4527     +SYSCALL_DEFINE(semctl)(int semid, int semnum, int cmd, union semun arg)
4528     {
4529     int err = -EINVAL;
4530     int version;
4531     @@ -923,6 +923,13 @@ asmlinkage long sys_semctl (int semid, int semnum, int cmd, union semun arg)
4532     return -EINVAL;
4533     }
4534     }
4535     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
4536     +asmlinkage long SyS_semctl(int semid, int semnum, int cmd, union semun arg)
4537     +{
4538     + return SYSC_semctl((int) semid, (int) semnum, (int) cmd, arg);
4539     +}
4540     +SYSCALL_ALIAS(sys_semctl, SyS_semctl);
4541     +#endif
4542    
4543     /* If the task doesn't already have a undo_list, then allocate one
4544     * here. We guarantee there is only one thread using this undo list,
4545     @@ -1048,8 +1055,8 @@ out:
4546     return un;
4547     }
4548    
4549     -asmlinkage long sys_semtimedop(int semid, struct sembuf __user *tsops,
4550     - unsigned nsops, const struct timespec __user *timeout)
4551     +SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops,
4552     + unsigned, nsops, const struct timespec __user *, timeout)
4553     {
4554     int error = -EINVAL;
4555     struct sem_array *sma;
4556     @@ -1226,7 +1233,8 @@ out_free:
4557     return error;
4558     }
4559    
4560     -asmlinkage long sys_semop (int semid, struct sembuf __user *tsops, unsigned nsops)
4561     +SYSCALL_DEFINE3(semop, int, semid, struct sembuf __user *, tsops,
4562     + unsigned, nsops)
4563     {
4564     return sys_semtimedop(semid, tsops, nsops, NULL);
4565     }
4566     diff --git a/ipc/shm.c b/ipc/shm.c
4567     index e77ec69..f00c897 100644
4568     --- a/ipc/shm.c
4569     +++ b/ipc/shm.c
4570     @@ -440,7 +440,7 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
4571     return 0;
4572     }
4573    
4574     -asmlinkage long sys_shmget (key_t key, size_t size, int shmflg)
4575     +SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
4576     {
4577     struct ipc_namespace *ns;
4578     struct ipc_ops shm_ops;
4579     @@ -621,7 +621,7 @@ out_up:
4580     return err;
4581     }
4582    
4583     -asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf)
4584     +SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
4585     {
4586     struct shmid_kernel *shp;
4587     int err, version;
4588     @@ -941,7 +941,7 @@ out_put_dentry:
4589     goto out_nattch;
4590     }
4591    
4592     -asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg)
4593     +SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg)
4594     {
4595     unsigned long ret;
4596     long err;
4597     @@ -957,7 +957,7 @@ asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg)
4598     * detach and kill segment if marked destroyed.
4599     * The work is done in shm_close.
4600     */
4601     -asmlinkage long sys_shmdt(char __user *shmaddr)
4602     +SYSCALL_DEFINE1(shmdt, char __user *, shmaddr)
4603     {
4604     struct mm_struct *mm = current->mm;
4605     struct vm_area_struct *vma, *next;
4606     diff --git a/kernel/acct.c b/kernel/acct.c
4607     index dd68b90..a272f53 100644
4608     --- a/kernel/acct.c
4609     +++ b/kernel/acct.c
4610     @@ -277,7 +277,7 @@ static int acct_on(char *name)
4611     * should be written. If the filename is NULL, accounting will be
4612     * shutdown.
4613     */
4614     -asmlinkage long sys_acct(const char __user *name)
4615     +SYSCALL_DEFINE1(acct, const char __user *, name)
4616     {
4617     int error;
4618    
4619     diff --git a/kernel/capability.c b/kernel/capability.c
4620     index 33e51e7..6ec8359 100644
4621     --- a/kernel/capability.c
4622     +++ b/kernel/capability.c
4623     @@ -348,7 +348,7 @@ EXPORT_SYMBOL(cap_set_effective);
4624     *
4625     * Returns 0 on success and < 0 on error.
4626     */
4627     -asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
4628     +SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
4629     {
4630     int ret = 0;
4631     pid_t pid;
4632     @@ -425,7 +425,7 @@ asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
4633     *
4634     * Returns 0 on success and < 0 on error.
4635     */
4636     -asmlinkage long sys_capset(cap_user_header_t header, const cap_user_data_t data)
4637     +SYSCALL_DEFINE2(capset, cap_user_header_t, header, const cap_user_data_t, data)
4638     {
4639     struct __user_cap_data_struct kdata[_KERNEL_CAPABILITY_U32S];
4640     unsigned i, tocopy;
4641     diff --git a/kernel/cgroup.c b/kernel/cgroup.c
4642     index 0ba3a5a..271763d 100644
4643     --- a/kernel/cgroup.c
4644     +++ b/kernel/cgroup.c
4645     @@ -2885,7 +2885,11 @@ int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *subsys,
4646     parent = task_cgroup(tsk, subsys->subsys_id);
4647    
4648     /* Pin the hierarchy */
4649     - atomic_inc(&parent->root->sb->s_active);
4650     + if (!atomic_inc_not_zero(&parent->root->sb->s_active)) {
4651     + /* We race with the final deactivate_super() */
4652     + mutex_unlock(&cgroup_mutex);
4653     + return 0;
4654     + }
4655    
4656     /* Keep the cgroup alive */
4657     get_css_set(cg);
4658     diff --git a/kernel/exec_domain.c b/kernel/exec_domain.c
4659     index 0d407e8..18e8a50 100644
4660     --- a/kernel/exec_domain.c
4661     +++ b/kernel/exec_domain.c
4662     @@ -188,8 +188,7 @@ get_exec_domain_list(char *page)
4663     return (len);
4664     }
4665    
4666     -asmlinkage long
4667     -sys_personality(u_long personality)
4668     +SYSCALL_DEFINE1(personality, u_long, personality)
4669     {
4670     u_long old = current->personality;
4671    
4672     diff --git a/kernel/exit.c b/kernel/exit.c
4673     index 85a83c8..14096a1 100644
4674     --- a/kernel/exit.c
4675     +++ b/kernel/exit.c
4676     @@ -1145,7 +1145,7 @@ NORET_TYPE void complete_and_exit(struct completion *comp, long code)
4677    
4678     EXPORT_SYMBOL(complete_and_exit);
4679    
4680     -asmlinkage long sys_exit(int error_code)
4681     +SYSCALL_DEFINE1(exit, int, error_code)
4682     {
4683     do_exit((error_code&0xff)<<8);
4684     }
4685     @@ -1186,9 +1186,11 @@ do_group_exit(int exit_code)
4686     * wait4()-ing process will get the correct exit code - even if this
4687     * thread is not the thread group leader.
4688     */
4689     -asmlinkage void sys_exit_group(int error_code)
4690     +SYSCALL_DEFINE1(exit_group, int, error_code)
4691     {
4692     do_group_exit((error_code & 0xff) << 8);
4693     + /* NOTREACHED */
4694     + return 0;
4695     }
4696    
4697     static struct pid *task_pid_type(struct task_struct *task, enum pid_type type)
4698     @@ -1749,9 +1751,8 @@ end:
4699     return retval;
4700     }
4701    
4702     -asmlinkage long sys_waitid(int which, pid_t upid,
4703     - struct siginfo __user *infop, int options,
4704     - struct rusage __user *ru)
4705     +SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
4706     + infop, int, options, struct rusage __user *, ru)
4707     {
4708     struct pid *pid = NULL;
4709     enum pid_type type;
4710     @@ -1790,8 +1791,8 @@ asmlinkage long sys_waitid(int which, pid_t upid,
4711     return ret;
4712     }
4713    
4714     -asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr,
4715     - int options, struct rusage __user *ru)
4716     +SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr,
4717     + int, options, struct rusage __user *, ru)
4718     {
4719     struct pid *pid = NULL;
4720     enum pid_type type;
4721     @@ -1828,7 +1829,7 @@ asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr,
4722     * sys_waitpid() remains for compatibility. waitpid() should be
4723     * implemented by calling sys_wait4() from libc.a.
4724     */
4725     -asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options)
4726     +SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options)
4727     {
4728     return sys_wait4(pid, stat_addr, options, NULL);
4729     }
4730     diff --git a/kernel/fork.c b/kernel/fork.c
4731     index d8ad2c6..42fb5b0 100644
4732     --- a/kernel/fork.c
4733     +++ b/kernel/fork.c
4734     @@ -865,7 +865,7 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *p)
4735     clear_freeze_flag(p);
4736     }
4737    
4738     -asmlinkage long sys_set_tid_address(int __user *tidptr)
4739     +SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
4740     {
4741     current->clear_child_tid = tidptr;
4742    
4743     @@ -1561,7 +1561,7 @@ static int unshare_fd(unsigned long unshare_flags, struct files_struct **new_fdp
4744     * constructed. Here we are modifying the current, active,
4745     * task_struct.
4746     */
4747     -asmlinkage long sys_unshare(unsigned long unshare_flags)
4748     +SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
4749     {
4750     int err = 0;
4751     struct fs_struct *fs, *new_fs = NULL;
4752     diff --git a/kernel/futex.c b/kernel/futex.c
4753     index 7d1136e..ec84da5 100644
4754     --- a/kernel/futex.c
4755     +++ b/kernel/futex.c
4756     @@ -1797,9 +1797,8 @@ pi_faulted:
4757     * @head: pointer to the list-head
4758     * @len: length of the list-head, as userspace expects
4759     */
4760     -asmlinkage long
4761     -sys_set_robust_list(struct robust_list_head __user *head,
4762     - size_t len)
4763     +SYSCALL_DEFINE2(set_robust_list, struct robust_list_head __user *, head,
4764     + size_t, len)
4765     {
4766     if (!futex_cmpxchg_enabled)
4767     return -ENOSYS;
4768     @@ -1820,9 +1819,9 @@ sys_set_robust_list(struct robust_list_head __user *head,
4769     * @head_ptr: pointer to a list-head pointer, the kernel fills it in
4770     * @len_ptr: pointer to a length field, the kernel fills in the header size
4771     */
4772     -asmlinkage long
4773     -sys_get_robust_list(int pid, struct robust_list_head __user * __user *head_ptr,
4774     - size_t __user *len_ptr)
4775     +SYSCALL_DEFINE3(get_robust_list, int, pid,
4776     + struct robust_list_head __user * __user *, head_ptr,
4777     + size_t __user *, len_ptr)
4778     {
4779     struct robust_list_head __user *head;
4780     unsigned long ret;
4781     @@ -2036,9 +2035,9 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
4782     }
4783    
4784    
4785     -asmlinkage long sys_futex(u32 __user *uaddr, int op, u32 val,
4786     - struct timespec __user *utime, u32 __user *uaddr2,
4787     - u32 val3)
4788     +SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
4789     + struct timespec __user *, utime, u32 __user *, uaddr2,
4790     + u32, val3)
4791     {
4792     struct timespec ts;
4793     ktime_t t, *tp = NULL;
4794     diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
4795     index cdec83e..98bbbe5 100644
4796     --- a/kernel/hrtimer.c
4797     +++ b/kernel/hrtimer.c
4798     @@ -1560,8 +1560,8 @@ out:
4799     return ret;
4800     }
4801    
4802     -asmlinkage long
4803     -sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp)
4804     +SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
4805     + struct timespec __user *, rmtp)
4806     {
4807     struct timespec tu;
4808    
4809     diff --git a/kernel/itimer.c b/kernel/itimer.c
4810     index ab98274..13470aa 100644
4811     --- a/kernel/itimer.c
4812     +++ b/kernel/itimer.c
4813     @@ -109,7 +109,7 @@ int do_getitimer(int which, struct itimerval *value)
4814     return 0;
4815     }
4816    
4817     -asmlinkage long sys_getitimer(int which, struct itimerval __user *value)
4818     +SYSCALL_DEFINE2(getitimer, int, which, struct itimerval __user *, value)
4819     {
4820     int error = -EFAULT;
4821     struct itimerval get_buffer;
4822     @@ -273,9 +273,8 @@ unsigned int alarm_setitimer(unsigned int seconds)
4823     return it_old.it_value.tv_sec;
4824     }
4825    
4826     -asmlinkage long sys_setitimer(int which,
4827     - struct itimerval __user *value,
4828     - struct itimerval __user *ovalue)
4829     +SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value,
4830     + struct itimerval __user *, ovalue)
4831     {
4832     struct itimerval set_buffer, get_buffer;
4833     int error;
4834     diff --git a/kernel/kexec.c b/kernel/kexec.c
4835     index aef2653..cba525a 100644
4836     --- a/kernel/kexec.c
4837     +++ b/kernel/kexec.c
4838     @@ -933,9 +933,8 @@ struct kimage *kexec_crash_image;
4839    
4840     static DEFINE_MUTEX(kexec_mutex);
4841    
4842     -asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments,
4843     - struct kexec_segment __user *segments,
4844     - unsigned long flags)
4845     +SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
4846     + struct kexec_segment __user *, segments, unsigned long, flags)
4847     {
4848     struct kimage **dest_image, *image;
4849     int result;
4850     diff --git a/kernel/module.c b/kernel/module.c
4851     index d5fcd24..69d274a 100644
4852     --- a/kernel/module.c
4853     +++ b/kernel/module.c
4854     @@ -715,8 +715,8 @@ static void wait_for_zero_refcount(struct module *mod)
4855     mutex_lock(&module_mutex);
4856     }
4857    
4858     -asmlinkage long
4859     -sys_delete_module(const char __user *name_user, unsigned int flags)
4860     +SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
4861     + unsigned int, flags)
4862     {
4863     struct module *mod;
4864     char name[MODULE_NAME_LEN];
4865     @@ -2257,10 +2257,8 @@ static noinline struct module *load_module(void __user *umod,
4866     }
4867    
4868     /* This is where the real work happens */
4869     -asmlinkage long
4870     -sys_init_module(void __user *umod,
4871     - unsigned long len,
4872     - const char __user *uargs)
4873     +SYSCALL_DEFINE3(init_module, void __user *, umod,
4874     + unsigned long, len, const char __user *, uargs)
4875     {
4876     struct module *mod;
4877     int ret = 0;
4878     diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
4879     index 5131e54..24ae236 100644
4880     --- a/kernel/posix-timers.c
4881     +++ b/kernel/posix-timers.c
4882     @@ -463,10 +463,9 @@ static void release_posix_timer(struct k_itimer *tmr, int it_id_set)
4883    
4884     /* Create a POSIX.1b interval timer. */
4885    
4886     -asmlinkage long
4887     -sys_timer_create(const clockid_t which_clock,
4888     - struct sigevent __user *timer_event_spec,
4889     - timer_t __user * created_timer_id)
4890     +SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock,
4891     + struct sigevent __user *, timer_event_spec,
4892     + timer_t __user *, created_timer_id)
4893     {
4894     int error = 0;
4895     struct k_itimer *new_timer = NULL;
4896     @@ -682,8 +681,8 @@ common_timer_get(struct k_itimer *timr, struct itimerspec *cur_setting)
4897     }
4898    
4899     /* Get the time remaining on a POSIX.1b interval timer. */
4900     -asmlinkage long
4901     -sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting)
4902     +SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
4903     + struct itimerspec __user *, setting)
4904     {
4905     struct k_itimer *timr;
4906     struct itimerspec cur_setting;
4907     @@ -712,8 +711,7 @@ sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting)
4908     * the call back to do_schedule_next_timer(). So all we need to do is
4909     * to pick up the frozen overrun.
4910     */
4911     -asmlinkage long
4912     -sys_timer_getoverrun(timer_t timer_id)
4913     +SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id)
4914     {
4915     struct k_itimer *timr;
4916     int overrun;
4917     @@ -783,10 +781,9 @@ common_timer_set(struct k_itimer *timr, int flags,
4918     }
4919    
4920     /* Set a POSIX.1b interval timer */
4921     -asmlinkage long
4922     -sys_timer_settime(timer_t timer_id, int flags,
4923     - const struct itimerspec __user *new_setting,
4924     - struct itimerspec __user *old_setting)
4925     +SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
4926     + const struct itimerspec __user *, new_setting,
4927     + struct itimerspec __user *, old_setting)
4928     {
4929     struct k_itimer *timr;
4930     struct itimerspec new_spec, old_spec;
4931     @@ -839,8 +836,7 @@ static inline int timer_delete_hook(struct k_itimer *timer)
4932     }
4933    
4934     /* Delete a POSIX.1b interval timer. */
4935     -asmlinkage long
4936     -sys_timer_delete(timer_t timer_id)
4937     +SYSCALL_DEFINE1(timer_delete, timer_t, timer_id)
4938     {
4939     struct k_itimer *timer;
4940     unsigned long flags;
4941     @@ -930,8 +926,8 @@ int do_posix_clock_nonanosleep(const clockid_t clock, int flags,
4942     }
4943     EXPORT_SYMBOL_GPL(do_posix_clock_nonanosleep);
4944    
4945     -asmlinkage long sys_clock_settime(const clockid_t which_clock,
4946     - const struct timespec __user *tp)
4947     +SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
4948     + const struct timespec __user *, tp)
4949     {
4950     struct timespec new_tp;
4951    
4952     @@ -943,8 +939,8 @@ asmlinkage long sys_clock_settime(const clockid_t which_clock,
4953     return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp));
4954     }
4955    
4956     -asmlinkage long
4957     -sys_clock_gettime(const clockid_t which_clock, struct timespec __user *tp)
4958     +SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock,
4959     + struct timespec __user *,tp)
4960     {
4961     struct timespec kernel_tp;
4962     int error;
4963     @@ -960,8 +956,8 @@ sys_clock_gettime(const clockid_t which_clock, struct timespec __user *tp)
4964    
4965     }
4966    
4967     -asmlinkage long
4968     -sys_clock_getres(const clockid_t which_clock, struct timespec __user *tp)
4969     +SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock,
4970     + struct timespec __user *, tp)
4971     {
4972     struct timespec rtn_tp;
4973     int error;
4974     @@ -990,10 +986,9 @@ static int common_nsleep(const clockid_t which_clock, int flags,
4975     which_clock);
4976     }
4977    
4978     -asmlinkage long
4979     -sys_clock_nanosleep(const clockid_t which_clock, int flags,
4980     - const struct timespec __user *rqtp,
4981     - struct timespec __user *rmtp)
4982     +SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags,
4983     + const struct timespec __user *, rqtp,
4984     + struct timespec __user *, rmtp)
4985     {
4986     struct timespec t;
4987    
4988     diff --git a/kernel/printk.c b/kernel/printk.c
4989     index b51b156..0084812 100644
4990     --- a/kernel/printk.c
4991     +++ b/kernel/printk.c
4992     @@ -421,7 +421,7 @@ out:
4993     return error;
4994     }
4995    
4996     -asmlinkage long sys_syslog(int type, char __user *buf, int len)
4997     +SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len)
4998     {
4999     return do_syslog(type, buf, len);
5000     }
5001     @@ -782,11 +782,6 @@ EXPORT_SYMBOL(vprintk);
5002    
5003     #else
5004    
5005     -asmlinkage long sys_syslog(int type, char __user *buf, int len)
5006     -{
5007     - return -ENOSYS;
5008     -}
5009     -
5010     static void call_console_drivers(unsigned start, unsigned end)
5011     {
5012     }
5013     diff --git a/kernel/ptrace.c b/kernel/ptrace.c
5014     index 356699a..85c1983 100644
5015     --- a/kernel/ptrace.c
5016     +++ b/kernel/ptrace.c
5017     @@ -545,7 +545,7 @@ struct task_struct *ptrace_get_task_struct(pid_t pid)
5018     #define arch_ptrace_attach(child) do { } while (0)
5019     #endif
5020    
5021     -asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
5022     +SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
5023     {
5024     struct task_struct *child;
5025     long ret;
5026     diff --git a/kernel/sched.c b/kernel/sched.c
5027     index 92c0a70..2a09e44 100644
5028     --- a/kernel/sched.c
5029     +++ b/kernel/sched.c
5030     @@ -4942,7 +4942,7 @@ int can_nice(const struct task_struct *p, const int nice)
5031     * sys_setpriority is a more generic, but much slower function that
5032     * does similar things.
5033     */
5034     -asmlinkage long sys_nice(int increment)
5035     +SYSCALL_DEFINE1(nice, int, increment)
5036     {
5037     long nice, retval;
5038    
5039     @@ -5233,8 +5233,8 @@ do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
5040     * @policy: new policy.
5041     * @param: structure containing the new RT priority.
5042     */
5043     -asmlinkage long
5044     -sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
5045     +SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy,
5046     + struct sched_param __user *, param)
5047     {
5048     /* negative values for policy are not valid */
5049     if (policy < 0)
5050     @@ -5248,7 +5248,7 @@ sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
5051     * @pid: the pid in question.
5052     * @param: structure containing the new RT priority.
5053     */
5054     -asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param)
5055     +SYSCALL_DEFINE2(sched_setparam, pid_t, pid, struct sched_param __user *, param)
5056     {
5057     return do_sched_setscheduler(pid, -1, param);
5058     }
5059     @@ -5257,7 +5257,7 @@ asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param)
5060     * sys_sched_getscheduler - get the policy (scheduling class) of a thread
5061     * @pid: the pid in question.
5062     */
5063     -asmlinkage long sys_sched_getscheduler(pid_t pid)
5064     +SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid)
5065     {
5066     struct task_struct *p;
5067     int retval;
5068     @@ -5282,7 +5282,7 @@ asmlinkage long sys_sched_getscheduler(pid_t pid)
5069     * @pid: the pid in question.
5070     * @param: structure containing the RT priority.
5071     */
5072     -asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param __user *param)
5073     +SYSCALL_DEFINE2(sched_getparam, pid_t, pid, struct sched_param __user *, param)
5074     {
5075     struct sched_param lp;
5076     struct task_struct *p;
5077     @@ -5390,8 +5390,8 @@ static int get_user_cpu_mask(unsigned long __user *user_mask_ptr, unsigned len,
5078     * @len: length in bytes of the bitmask pointed to by user_mask_ptr
5079     * @user_mask_ptr: user-space pointer to the new cpu mask
5080     */
5081     -asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len,
5082     - unsigned long __user *user_mask_ptr)
5083     +SYSCALL_DEFINE3(sched_setaffinity, pid_t, pid, unsigned int, len,
5084     + unsigned long __user *, user_mask_ptr)
5085     {
5086     cpumask_t new_mask;
5087     int retval;
5088     @@ -5435,8 +5435,8 @@ out_unlock:
5089     * @len: length in bytes of the bitmask pointed to by user_mask_ptr
5090     * @user_mask_ptr: user-space pointer to hold the current cpu mask
5091     */
5092     -asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len,
5093     - unsigned long __user *user_mask_ptr)
5094     +SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len,
5095     + unsigned long __user *, user_mask_ptr)
5096     {
5097     int ret;
5098     cpumask_t mask;
5099     @@ -5460,7 +5460,7 @@ asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len,
5100     * This function yields the current CPU to other tasks. If there are no
5101     * other threads running on this CPU then this function will return.
5102     */
5103     -asmlinkage long sys_sched_yield(void)
5104     +SYSCALL_DEFINE0(sched_yield)
5105     {
5106     struct rq *rq = this_rq_lock();
5107    
5108     @@ -5601,7 +5601,7 @@ long __sched io_schedule_timeout(long timeout)
5109     * this syscall returns the maximum rt_priority that can be used
5110     * by a given scheduling class.
5111     */
5112     -asmlinkage long sys_sched_get_priority_max(int policy)
5113     +SYSCALL_DEFINE1(sched_get_priority_max, int, policy)
5114     {
5115     int ret = -EINVAL;
5116    
5117     @@ -5626,7 +5626,7 @@ asmlinkage long sys_sched_get_priority_max(int policy)
5118     * this syscall returns the minimum rt_priority that can be used
5119     * by a given scheduling class.
5120     */
5121     -asmlinkage long sys_sched_get_priority_min(int policy)
5122     +SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
5123     {
5124     int ret = -EINVAL;
5125    
5126     @@ -5651,8 +5651,8 @@ asmlinkage long sys_sched_get_priority_min(int policy)
5127     * this syscall writes the default timeslice value of a given process
5128     * into the user-space timespec buffer. A value of '0' means infinity.
5129     */
5130     -asmlinkage
5131     -long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval)
5132     +SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid,
5133     + struct timespec __user *, interval)
5134     {
5135     struct task_struct *p;
5136     unsigned int time_slice;
5137     diff --git a/kernel/sched_clock.c b/kernel/sched_clock.c
5138     index e8ab096..a0b0852 100644
5139     --- a/kernel/sched_clock.c
5140     +++ b/kernel/sched_clock.c
5141     @@ -124,7 +124,7 @@ static u64 __update_sched_clock(struct sched_clock_data *scd, u64 now)
5142    
5143     clock = scd->tick_gtod + delta;
5144     min_clock = wrap_max(scd->tick_gtod, scd->clock);
5145     - max_clock = scd->tick_gtod + TICK_NSEC;
5146     + max_clock = wrap_max(scd->clock, scd->tick_gtod + TICK_NSEC);
5147    
5148     clock = wrap_max(clock, min_clock);
5149     clock = wrap_min(clock, max_clock);
5150     @@ -227,6 +227,9 @@ EXPORT_SYMBOL_GPL(sched_clock_idle_sleep_event);
5151     */
5152     void sched_clock_idle_wakeup_event(u64 delta_ns)
5153     {
5154     + if (timekeeping_suspended)
5155     + return;
5156     +
5157     sched_clock_tick();
5158     touch_softlockup_watchdog();
5159     }
5160     diff --git a/kernel/signal.c b/kernel/signal.c
5161     index e661b01..6f06f43 100644
5162     --- a/kernel/signal.c
5163     +++ b/kernel/signal.c
5164     @@ -1936,7 +1936,7 @@ EXPORT_SYMBOL(unblock_all_signals);
5165     * System call entry points.
5166     */
5167    
5168     -asmlinkage long sys_restart_syscall(void)
5169     +SYSCALL_DEFINE0(restart_syscall)
5170     {
5171     struct restart_block *restart = &current_thread_info()->restart_block;
5172     return restart->fn(restart);
5173     @@ -1989,8 +1989,8 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
5174     return error;
5175     }
5176    
5177     -asmlinkage long
5178     -sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize)
5179     +SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set,
5180     + sigset_t __user *, oset, size_t, sigsetsize)
5181     {
5182     int error = -EINVAL;
5183     sigset_t old_set, new_set;
5184     @@ -2049,8 +2049,7 @@ out:
5185     return error;
5186     }
5187    
5188     -asmlinkage long
5189     -sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
5190     +SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize)
5191     {
5192     return do_sigpending(set, sigsetsize);
5193     }
5194     @@ -2121,11 +2120,9 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
5195    
5196     #endif
5197    
5198     -asmlinkage long
5199     -sys_rt_sigtimedwait(const sigset_t __user *uthese,
5200     - siginfo_t __user *uinfo,
5201     - const struct timespec __user *uts,
5202     - size_t sigsetsize)
5203     +SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
5204     + siginfo_t __user *, uinfo, const struct timespec __user *, uts,
5205     + size_t, sigsetsize)
5206     {
5207     int ret, sig;
5208     sigset_t these;
5209     @@ -2198,8 +2195,7 @@ sys_rt_sigtimedwait(const sigset_t __user *uthese,
5210     return ret;
5211     }
5212    
5213     -asmlinkage long
5214     -sys_kill(pid_t pid, int sig)
5215     +SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
5216     {
5217     struct siginfo info;
5218    
5219     @@ -2258,7 +2254,7 @@ static int do_tkill(pid_t tgid, pid_t pid, int sig)
5220     * exists but it's not belonging to the target process anymore. This
5221     * method solves the problem of threads exiting and PIDs getting reused.
5222     */
5223     -asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig)
5224     +SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
5225     {
5226     /* This is only valid for single tasks */
5227     if (pid <= 0 || tgid <= 0)
5228     @@ -2270,8 +2266,7 @@ asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig)
5229     /*
5230     * Send a signal to only one task, even if it's a CLONE_THREAD task.
5231     */
5232     -asmlinkage long
5233     -sys_tkill(pid_t pid, int sig)
5234     +SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig)
5235     {
5236     /* This is only valid for single tasks */
5237     if (pid <= 0)
5238     @@ -2280,8 +2275,8 @@ sys_tkill(pid_t pid, int sig)
5239     return do_tkill(0, pid, sig);
5240     }
5241    
5242     -asmlinkage long
5243     -sys_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t __user *uinfo)
5244     +SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig,
5245     + siginfo_t __user *, uinfo)
5246     {
5247     siginfo_t info;
5248    
5249     @@ -2409,8 +2404,7 @@ out:
5250    
5251     #ifdef __ARCH_WANT_SYS_SIGPENDING
5252    
5253     -asmlinkage long
5254     -sys_sigpending(old_sigset_t __user *set)
5255     +SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
5256     {
5257     return do_sigpending(set, sizeof(*set));
5258     }
5259     @@ -2421,8 +2415,8 @@ sys_sigpending(old_sigset_t __user *set)
5260     /* Some platforms have their own version with special arguments others
5261     support only sys_rt_sigprocmask. */
5262    
5263     -asmlinkage long
5264     -sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset)
5265     +SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set,
5266     + old_sigset_t __user *, oset)
5267     {
5268     int error;
5269     old_sigset_t old_set, new_set;
5270     @@ -2472,11 +2466,10 @@ out:
5271     #endif /* __ARCH_WANT_SYS_SIGPROCMASK */
5272    
5273     #ifdef __ARCH_WANT_SYS_RT_SIGACTION
5274     -asmlinkage long
5275     -sys_rt_sigaction(int sig,
5276     - const struct sigaction __user *act,
5277     - struct sigaction __user *oact,
5278     - size_t sigsetsize)
5279     +SYSCALL_DEFINE4(rt_sigaction, int, sig,
5280     + const struct sigaction __user *, act,
5281     + struct sigaction __user *, oact,
5282     + size_t, sigsetsize)
5283     {
5284     struct k_sigaction new_sa, old_sa;
5285     int ret = -EINVAL;
5286     @@ -2506,15 +2499,13 @@ out:
5287     /*
5288     * For backwards compatibility. Functionality superseded by sigprocmask.
5289     */
5290     -asmlinkage long
5291     -sys_sgetmask(void)
5292     +SYSCALL_DEFINE0(sgetmask)
5293     {
5294     /* SMP safe */
5295     return current->blocked.sig[0];
5296     }
5297    
5298     -asmlinkage long
5299     -sys_ssetmask(int newmask)
5300     +SYSCALL_DEFINE1(ssetmask, int, newmask)
5301     {
5302     int old;
5303    
5304     @@ -2534,8 +2525,7 @@ sys_ssetmask(int newmask)
5305     /*
5306     * For backwards compatibility. Functionality superseded by sigaction.
5307     */
5308     -asmlinkage unsigned long
5309     -sys_signal(int sig, __sighandler_t handler)
5310     +SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler)
5311     {
5312     struct k_sigaction new_sa, old_sa;
5313     int ret;
5314     @@ -2552,8 +2542,7 @@ sys_signal(int sig, __sighandler_t handler)
5315    
5316     #ifdef __ARCH_WANT_SYS_PAUSE
5317    
5318     -asmlinkage long
5319     -sys_pause(void)
5320     +SYSCALL_DEFINE0(pause)
5321     {
5322     current->state = TASK_INTERRUPTIBLE;
5323     schedule();
5324     @@ -2563,7 +2552,7 @@ sys_pause(void)
5325     #endif
5326    
5327     #ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
5328     -asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize)
5329     +SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize)
5330     {
5331     sigset_t newset;
5332    
5333     diff --git a/kernel/sys.c b/kernel/sys.c
5334     index 038a7bc..10a263b 100644
5335     --- a/kernel/sys.c
5336     +++ b/kernel/sys.c
5337     @@ -137,7 +137,7 @@ out:
5338     return error;
5339     }
5340    
5341     -asmlinkage long sys_setpriority(int which, int who, int niceval)
5342     +SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval)
5343     {
5344     struct task_struct *g, *p;
5345     struct user_struct *user;
5346     @@ -201,7 +201,7 @@ out:
5347     * has been offset by 20 (ie it returns 40..1 instead of -20..19)
5348     * to stay compatible.
5349     */
5350     -asmlinkage long sys_getpriority(int which, int who)
5351     +SYSCALL_DEFINE2(getpriority, int, which, int, who)
5352     {
5353     struct task_struct *g, *p;
5354     struct user_struct *user;
5355     @@ -347,7 +347,8 @@ EXPORT_SYMBOL_GPL(kernel_power_off);
5356     *
5357     * reboot doesn't sync: do that yourself before calling this.
5358     */
5359     -asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void __user * arg)
5360     +SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
5361     + void __user *, arg)
5362     {
5363     char buffer[256];
5364    
5365     @@ -470,7 +471,7 @@ void ctrl_alt_del(void)
5366     * SMP: There are not races, the GIDs are checked only by filesystem
5367     * operations (as far as semantic preservation is concerned).
5368     */
5369     -asmlinkage long sys_setregid(gid_t rgid, gid_t egid)
5370     +SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
5371     {
5372     int old_rgid = current->gid;
5373     int old_egid = current->egid;
5374     @@ -519,7 +520,7 @@ asmlinkage long sys_setregid(gid_t rgid, gid_t egid)
5375     *
5376     * SMP: Same implicit races as above.
5377     */
5378     -asmlinkage long sys_setgid(gid_t gid)
5379     +SYSCALL_DEFINE1(setgid, gid_t, gid)
5380     {
5381     int old_egid = current->egid;
5382     int retval;
5383     @@ -589,7 +590,7 @@ static int set_user(uid_t new_ruid, int dumpclear)
5384     * 100% compatible with BSD. A program which uses just setuid() will be
5385     * 100% compatible with POSIX with saved IDs.
5386     */
5387     -asmlinkage long sys_setreuid(uid_t ruid, uid_t euid)
5388     +SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
5389     {
5390     int old_ruid, old_euid, old_suid, new_ruid, new_euid;
5391     int retval;
5392     @@ -651,7 +652,7 @@ asmlinkage long sys_setreuid(uid_t ruid, uid_t euid)
5393     * will allow a root program to temporarily drop privileges and be able to
5394     * regain them by swapping the real and effective uid.
5395     */
5396     -asmlinkage long sys_setuid(uid_t uid)
5397     +SYSCALL_DEFINE1(setuid, uid_t, uid)
5398     {
5399     int old_euid = current->euid;
5400     int old_ruid, old_suid, new_suid;
5401     @@ -690,7 +691,7 @@ asmlinkage long sys_setuid(uid_t uid)
5402     * This function implements a generic ability to update ruid, euid,
5403     * and suid. This allows you to implement the 4.4 compatible seteuid().
5404     */
5405     -asmlinkage long sys_setresuid(uid_t ruid, uid_t euid, uid_t suid)
5406     +SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
5407     {
5408     int old_ruid = current->uid;
5409     int old_euid = current->euid;
5410     @@ -733,7 +734,7 @@ asmlinkage long sys_setresuid(uid_t ruid, uid_t euid, uid_t suid)
5411     return security_task_post_setuid(old_ruid, old_euid, old_suid, LSM_SETID_RES);
5412     }
5413    
5414     -asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __user *suid)
5415     +SYSCALL_DEFINE3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid)
5416     {
5417     int retval;
5418    
5419     @@ -747,7 +748,7 @@ asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __us
5420     /*
5421     * Same as above, but for rgid, egid, sgid.
5422     */
5423     -asmlinkage long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid)
5424     +SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
5425     {
5426     int retval;
5427    
5428     @@ -784,7 +785,7 @@ asmlinkage long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid)
5429     return 0;
5430     }
5431    
5432     -asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __user *sgid)
5433     +SYSCALL_DEFINE3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid)
5434     {
5435     int retval;
5436    
5437     @@ -802,7 +803,7 @@ asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __us
5438     * whatever uid it wants to). It normally shadows "euid", except when
5439     * explicitly set by setfsuid() or for access..
5440     */
5441     -asmlinkage long sys_setfsuid(uid_t uid)
5442     +SYSCALL_DEFINE1(setfsuid, uid_t, uid)
5443     {
5444     int old_fsuid;
5445    
5446     @@ -831,7 +832,7 @@ asmlinkage long sys_setfsuid(uid_t uid)
5447     /*
5448     * Samma pÃ¥ svenska..
5449     */
5450     -asmlinkage long sys_setfsgid(gid_t gid)
5451     +SYSCALL_DEFINE1(setfsgid, gid_t, gid)
5452     {
5453     int old_fsgid;
5454    
5455     @@ -853,7 +854,7 @@ asmlinkage long sys_setfsgid(gid_t gid)
5456     return old_fsgid;
5457     }
5458    
5459     -asmlinkage long sys_times(struct tms __user * tbuf)
5460     +SYSCALL_DEFINE1(times, struct tms __user *, tbuf)
5461     {
5462     /*
5463     * In the SMP world we might just be unlucky and have one of
5464     @@ -903,7 +904,7 @@ asmlinkage long sys_times(struct tms __user * tbuf)
5465     * Auch. Had to add the 'did_exec' flag to conform completely to POSIX.
5466     * LBT 04.03.94
5467     */
5468     -asmlinkage long sys_setpgid(pid_t pid, pid_t pgid)
5469     +SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid)
5470     {
5471     struct task_struct *p;
5472     struct task_struct *group_leader = current->group_leader;
5473     @@ -974,7 +975,7 @@ out:
5474     return err;
5475     }
5476    
5477     -asmlinkage long sys_getpgid(pid_t pid)
5478     +SYSCALL_DEFINE1(getpgid, pid_t, pid)
5479     {
5480     struct task_struct *p;
5481     struct pid *grp;
5482     @@ -1004,14 +1005,14 @@ out:
5483    
5484     #ifdef __ARCH_WANT_SYS_GETPGRP
5485    
5486     -asmlinkage long sys_getpgrp(void)
5487     +SYSCALL_DEFINE0(getpgrp)
5488     {
5489     return sys_getpgid(0);
5490     }
5491    
5492     #endif
5493    
5494     -asmlinkage long sys_getsid(pid_t pid)
5495     +SYSCALL_DEFINE1(getsid, pid_t, pid)
5496     {
5497     struct task_struct *p;
5498     struct pid *sid;
5499     @@ -1039,7 +1040,7 @@ out:
5500     return retval;
5501     }
5502    
5503     -asmlinkage long sys_setsid(void)
5504     +SYSCALL_DEFINE0(setsid)
5505     {
5506     struct task_struct *group_leader = current->group_leader;
5507     struct pid *sid = task_pid(group_leader);
5508     @@ -1245,7 +1246,7 @@ int set_current_groups(struct group_info *group_info)
5509    
5510     EXPORT_SYMBOL(set_current_groups);
5511    
5512     -asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist)
5513     +SYSCALL_DEFINE2(getgroups, int, gidsetsize, gid_t __user *, grouplist)
5514     {
5515     int i = 0;
5516    
5517     @@ -1278,7 +1279,7 @@ out:
5518     * without another task interfering.
5519     */
5520    
5521     -asmlinkage long sys_setgroups(int gidsetsize, gid_t __user *grouplist)
5522     +SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist)
5523     {
5524     struct group_info *group_info;
5525     int retval;
5526     @@ -1328,7 +1329,7 @@ EXPORT_SYMBOL(in_egroup_p);
5527    
5528     DECLARE_RWSEM(uts_sem);
5529    
5530     -asmlinkage long sys_newuname(struct new_utsname __user * name)
5531     +SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name)
5532     {
5533     int errno = 0;
5534    
5535     @@ -1339,7 +1340,7 @@ asmlinkage long sys_newuname(struct new_utsname __user * name)
5536     return errno;
5537     }
5538    
5539     -asmlinkage long sys_sethostname(char __user *name, int len)
5540     +SYSCALL_DEFINE2(sethostname, char __user *, name, int, len)
5541     {
5542     int errno;
5543     char tmp[__NEW_UTS_LEN];
5544     @@ -1361,7 +1362,7 @@ asmlinkage long sys_sethostname(char __user *name, int len)
5545    
5546     #ifdef __ARCH_WANT_SYS_GETHOSTNAME
5547    
5548     -asmlinkage long sys_gethostname(char __user *name, int len)
5549     +SYSCALL_DEFINE2(gethostname, char __user *, name, int, len)
5550     {
5551     int i, errno;
5552    
5553     @@ -1384,7 +1385,7 @@ asmlinkage long sys_gethostname(char __user *name, int len)
5554     * Only setdomainname; getdomainname can be implemented by calling
5555     * uname()
5556     */
5557     -asmlinkage long sys_setdomainname(char __user *name, int len)
5558     +SYSCALL_DEFINE2(setdomainname, char __user *, name, int, len)
5559     {
5560     int errno;
5561     char tmp[__NEW_UTS_LEN];
5562     @@ -1405,7 +1406,7 @@ asmlinkage long sys_setdomainname(char __user *name, int len)
5563     return errno;
5564     }
5565    
5566     -asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim)
5567     +SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim)
5568     {
5569     if (resource >= RLIM_NLIMITS)
5570     return -EINVAL;
5571     @@ -1424,7 +1425,8 @@ asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim)
5572     * Back compatibility for getrlimit. Needed for some apps.
5573     */
5574    
5575     -asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *rlim)
5576     +SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
5577     + struct rlimit __user *, rlim)
5578     {
5579     struct rlimit x;
5580     if (resource >= RLIM_NLIMITS)
5581     @@ -1442,7 +1444,7 @@ asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *r
5582    
5583     #endif
5584    
5585     -asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim)
5586     +SYSCALL_DEFINE2(setrlimit, unsigned int, resource, struct rlimit __user *, rlim)
5587     {
5588     struct rlimit new_rlim, *old_rlim;
5589     unsigned long it_prof_secs;
5590     @@ -1618,7 +1620,7 @@ int getrusage(struct task_struct *p, int who, struct rusage __user *ru)
5591     return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
5592     }
5593    
5594     -asmlinkage long sys_getrusage(int who, struct rusage __user *ru)
5595     +SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru)
5596     {
5597     if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN &&
5598     who != RUSAGE_THREAD)
5599     @@ -1626,14 +1628,14 @@ asmlinkage long sys_getrusage(int who, struct rusage __user *ru)
5600     return getrusage(current, who, ru);
5601     }
5602    
5603     -asmlinkage long sys_umask(int mask)
5604     +SYSCALL_DEFINE1(umask, int, mask)
5605     {
5606     mask = xchg(&current->fs->umask, mask & S_IRWXUGO);
5607     return mask;
5608     }
5609    
5610     -asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3,
5611     - unsigned long arg4, unsigned long arg5)
5612     +SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
5613     + unsigned long, arg4, unsigned long, arg5)
5614     {
5615     long error = 0;
5616    
5617     @@ -1734,8 +1736,8 @@ asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3,
5618     return error;
5619     }
5620    
5621     -asmlinkage long sys_getcpu(unsigned __user *cpup, unsigned __user *nodep,
5622     - struct getcpu_cache __user *unused)
5623     +SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep,
5624     + struct getcpu_cache __user *, unused)
5625     {
5626     int err = 0;
5627     int cpu = raw_smp_processor_id();
5628     diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
5629     index 08d6e1b..d7b7b45 100644
5630     --- a/kernel/sys_ni.c
5631     +++ b/kernel/sys_ni.c
5632     @@ -125,6 +125,7 @@ cond_syscall(sys_vm86old);
5633     cond_syscall(sys_vm86);
5634     cond_syscall(compat_sys_ipc);
5635     cond_syscall(compat_sys_sysctl);
5636     +cond_syscall(sys_syslog);
5637    
5638     /* arch-specific weak syscall entries */
5639     cond_syscall(sys_pciconfig_read);
5640     diff --git a/kernel/sysctl.c b/kernel/sysctl.c
5641     index 6ffbed2..6816e6d 100644
5642     --- a/kernel/sysctl.c
5643     +++ b/kernel/sysctl.c
5644     @@ -1614,7 +1614,7 @@ int do_sysctl(int __user *name, int nlen, void __user *oldval, size_t __user *ol
5645     return error;
5646     }
5647    
5648     -asmlinkage long sys_sysctl(struct __sysctl_args __user *args)
5649     +SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
5650     {
5651     struct __sysctl_args tmp;
5652     int error;
5653     @@ -2925,7 +2925,7 @@ int sysctl_ms_jiffies(struct ctl_table *table, int __user *name, int nlen,
5654     #else /* CONFIG_SYSCTL_SYSCALL */
5655    
5656    
5657     -asmlinkage long sys_sysctl(struct __sysctl_args __user *args)
5658     +SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
5659     {
5660     struct __sysctl_args tmp;
5661     int error;
5662     diff --git a/kernel/time.c b/kernel/time.c
5663     index 6a08660..4ed46e3 100644
5664     --- a/kernel/time.c
5665     +++ b/kernel/time.c
5666     @@ -59,7 +59,7 @@ EXPORT_SYMBOL(sys_tz);
5667     * why not move it into the appropriate arch directory (for those
5668     * architectures that need it).
5669     */
5670     -asmlinkage long sys_time(time_t __user * tloc)
5671     +SYSCALL_DEFINE1(time, time_t __user *, tloc)
5672     {
5673     time_t i = get_seconds();
5674    
5675     @@ -77,7 +77,7 @@ asmlinkage long sys_time(time_t __user * tloc)
5676     * architectures that need it).
5677     */
5678    
5679     -asmlinkage long sys_stime(time_t __user *tptr)
5680     +SYSCALL_DEFINE1(stime, time_t __user *, tptr)
5681     {
5682     struct timespec tv;
5683     int err;
5684     @@ -97,8 +97,8 @@ asmlinkage long sys_stime(time_t __user *tptr)
5685    
5686     #endif /* __ARCH_WANT_SYS_TIME */
5687    
5688     -asmlinkage long sys_gettimeofday(struct timeval __user *tv,
5689     - struct timezone __user *tz)
5690     +SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv,
5691     + struct timezone __user *, tz)
5692     {
5693     if (likely(tv != NULL)) {
5694     struct timeval ktv;
5695     @@ -182,8 +182,8 @@ int do_sys_settimeofday(struct timespec *tv, struct timezone *tz)
5696     return 0;
5697     }
5698    
5699     -asmlinkage long sys_settimeofday(struct timeval __user *tv,
5700     - struct timezone __user *tz)
5701     +SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv,
5702     + struct timezone __user *, tz)
5703     {
5704     struct timeval user_tv;
5705     struct timespec new_ts;
5706     @@ -203,7 +203,7 @@ asmlinkage long sys_settimeofday(struct timeval __user *tv,
5707     return do_sys_settimeofday(tv ? &new_ts : NULL, tz ? &new_tz : NULL);
5708     }
5709    
5710     -asmlinkage long sys_adjtimex(struct timex __user *txc_p)
5711     +SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p)
5712     {
5713     struct timex txc; /* Local copy of parameter */
5714     int ret;
5715     diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
5716     index e91c29f..4220a2e 100644
5717     --- a/kernel/time/timekeeping.c
5718     +++ b/kernel/time/timekeeping.c
5719     @@ -46,6 +46,9 @@ struct timespec xtime __attribute__ ((aligned (16)));
5720     struct timespec wall_to_monotonic __attribute__ ((aligned (16)));
5721     static unsigned long total_sleep_time; /* seconds */
5722    
5723     +/* flag for if timekeeping is suspended */
5724     +int __read_mostly timekeeping_suspended;
5725     +
5726     static struct timespec xtime_cache __attribute__ ((aligned (16)));
5727     void update_xtime_cache(u64 nsec)
5728     {
5729     @@ -92,6 +95,8 @@ void getnstimeofday(struct timespec *ts)
5730     unsigned long seq;
5731     s64 nsecs;
5732    
5733     + WARN_ON(timekeeping_suspended);
5734     +
5735     do {
5736     seq = read_seqbegin(&xtime_lock);
5737    
5738     @@ -261,8 +266,6 @@ void __init timekeeping_init(void)
5739     write_sequnlock_irqrestore(&xtime_lock, flags);
5740     }
5741    
5742     -/* flag for if timekeeping is suspended */
5743     -static int timekeeping_suspended;
5744     /* time in seconds when suspend began */
5745     static unsigned long timekeeping_suspend_time;
5746     /* xtime offset when we went into suspend */
5747     diff --git a/kernel/timer.c b/kernel/timer.c
5748     index 03bc7f1..e9a0195 100644
5749     --- a/kernel/timer.c
5750     +++ b/kernel/timer.c
5751     @@ -1074,7 +1074,7 @@ void do_timer(unsigned long ticks)
5752     * For backwards compatibility? This can be done in libc so Alpha
5753     * and all newer ports shouldn't need it.
5754     */
5755     -asmlinkage unsigned long sys_alarm(unsigned int seconds)
5756     +SYSCALL_DEFINE1(alarm, unsigned int, seconds)
5757     {
5758     return alarm_setitimer(seconds);
5759     }
5760     @@ -1097,7 +1097,7 @@ asmlinkage unsigned long sys_alarm(unsigned int seconds)
5761     *
5762     * This is SMP safe as current->tgid does not change.
5763     */
5764     -asmlinkage long sys_getpid(void)
5765     +SYSCALL_DEFINE0(getpid)
5766     {
5767     return task_tgid_vnr(current);
5768     }
5769     @@ -1108,7 +1108,7 @@ asmlinkage long sys_getpid(void)
5770     * value of ->real_parent under rcu_read_lock(), see
5771     * release_task()->call_rcu(delayed_put_task_struct).
5772     */
5773     -asmlinkage long sys_getppid(void)
5774     +SYSCALL_DEFINE0(getppid)
5775     {
5776     int pid;
5777    
5778     @@ -1119,25 +1119,25 @@ asmlinkage long sys_getppid(void)
5779     return pid;
5780     }
5781    
5782     -asmlinkage long sys_getuid(void)
5783     +SYSCALL_DEFINE0(getuid)
5784     {
5785     /* Only we change this so SMP safe */
5786     return current->uid;
5787     }
5788    
5789     -asmlinkage long sys_geteuid(void)
5790     +SYSCALL_DEFINE0(geteuid)
5791     {
5792     /* Only we change this so SMP safe */
5793     return current->euid;
5794     }
5795    
5796     -asmlinkage long sys_getgid(void)
5797     +SYSCALL_DEFINE0(getgid)
5798     {
5799     /* Only we change this so SMP safe */
5800     return current->gid;
5801     }
5802    
5803     -asmlinkage long sys_getegid(void)
5804     +SYSCALL_DEFINE0(getegid)
5805     {
5806     /* Only we change this so SMP safe */
5807     return current->egid;
5808     @@ -1253,7 +1253,7 @@ signed long __sched schedule_timeout_uninterruptible(signed long timeout)
5809     EXPORT_SYMBOL(schedule_timeout_uninterruptible);
5810    
5811     /* Thread ID - the internal kernel "pid" */
5812     -asmlinkage long sys_gettid(void)
5813     +SYSCALL_DEFINE0(gettid)
5814     {
5815     return task_pid_vnr(current);
5816     }
5817     @@ -1345,7 +1345,7 @@ out:
5818     return 0;
5819     }
5820    
5821     -asmlinkage long sys_sysinfo(struct sysinfo __user *info)
5822     +SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
5823     {
5824     struct sysinfo val;
5825    
5826     diff --git a/kernel/uid16.c b/kernel/uid16.c
5827     index 3e41c16..67bb92c 100644
5828     --- a/kernel/uid16.c
5829     +++ b/kernel/uid16.c
5830     @@ -17,7 +17,7 @@
5831    
5832     #include <asm/uaccess.h>
5833    
5834     -asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gid_t group)
5835     +SYSCALL_DEFINE3(chown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
5836     {
5837     long ret = sys_chown(filename, low2highuid(user), low2highgid(group));
5838     /* avoid REGPARM breakage on x86: */
5839     @@ -25,7 +25,7 @@ asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gi
5840     return ret;
5841     }
5842    
5843     -asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_gid_t group)
5844     +SYSCALL_DEFINE3(lchown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
5845     {
5846     long ret = sys_lchown(filename, low2highuid(user), low2highgid(group));
5847     /* avoid REGPARM breakage on x86: */
5848     @@ -33,7 +33,7 @@ asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_g
5849     return ret;
5850     }
5851    
5852     -asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)
5853     +SYSCALL_DEFINE3(fchown16, unsigned int, fd, old_uid_t, user, old_gid_t, group)
5854     {
5855     long ret = sys_fchown(fd, low2highuid(user), low2highgid(group));
5856     /* avoid REGPARM breakage on x86: */
5857     @@ -41,7 +41,7 @@ asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)
5858     return ret;
5859     }
5860    
5861     -asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid)
5862     +SYSCALL_DEFINE2(setregid16, old_gid_t, rgid, old_gid_t, egid)
5863     {
5864     long ret = sys_setregid(low2highgid(rgid), low2highgid(egid));
5865     /* avoid REGPARM breakage on x86: */
5866     @@ -49,7 +49,7 @@ asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid)
5867     return ret;
5868     }
5869    
5870     -asmlinkage long sys_setgid16(old_gid_t gid)
5871     +SYSCALL_DEFINE1(setgid16, old_gid_t, gid)
5872     {
5873     long ret = sys_setgid(low2highgid(gid));
5874     /* avoid REGPARM breakage on x86: */
5875     @@ -57,7 +57,7 @@ asmlinkage long sys_setgid16(old_gid_t gid)
5876     return ret;
5877     }
5878    
5879     -asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid)
5880     +SYSCALL_DEFINE2(setreuid16, old_uid_t, ruid, old_uid_t, euid)
5881     {
5882     long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid));
5883     /* avoid REGPARM breakage on x86: */
5884     @@ -65,7 +65,7 @@ asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid)
5885     return ret;
5886     }
5887    
5888     -asmlinkage long sys_setuid16(old_uid_t uid)
5889     +SYSCALL_DEFINE1(setuid16, old_uid_t, uid)
5890     {
5891     long ret = sys_setuid(low2highuid(uid));
5892     /* avoid REGPARM breakage on x86: */
5893     @@ -73,7 +73,7 @@ asmlinkage long sys_setuid16(old_uid_t uid)
5894     return ret;
5895     }
5896    
5897     -asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
5898     +SYSCALL_DEFINE3(setresuid16, old_uid_t, ruid, old_uid_t, euid, old_uid_t, suid)
5899     {
5900     long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid),
5901     low2highuid(suid));
5902     @@ -82,7 +82,7 @@ asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
5903     return ret;
5904     }
5905    
5906     -asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid)
5907     +SYSCALL_DEFINE3(getresuid16, old_uid_t __user *, ruid, old_uid_t __user *, euid, old_uid_t __user *, suid)
5908     {
5909     int retval;
5910    
5911     @@ -93,7 +93,7 @@ asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid,
5912     return retval;
5913     }
5914    
5915     -asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
5916     +SYSCALL_DEFINE3(setresgid16, old_gid_t, rgid, old_gid_t, egid, old_gid_t, sgid)
5917     {
5918     long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid),
5919     low2highgid(sgid));
5920     @@ -102,7 +102,8 @@ asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
5921     return ret;
5922     }
5923    
5924     -asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid)
5925     +
5926     +SYSCALL_DEFINE3(getresgid16, old_gid_t __user *, rgid, old_gid_t __user *, egid, old_gid_t __user *, sgid)
5927     {
5928     int retval;
5929    
5930     @@ -113,7 +114,7 @@ asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid,
5931     return retval;
5932     }
5933    
5934     -asmlinkage long sys_setfsuid16(old_uid_t uid)
5935     +SYSCALL_DEFINE1(setfsuid16, old_uid_t, uid)
5936     {
5937     long ret = sys_setfsuid(low2highuid(uid));
5938     /* avoid REGPARM breakage on x86: */
5939     @@ -121,7 +122,7 @@ asmlinkage long sys_setfsuid16(old_uid_t uid)
5940     return ret;
5941     }
5942    
5943     -asmlinkage long sys_setfsgid16(old_gid_t gid)
5944     +SYSCALL_DEFINE1(setfsgid16, old_gid_t, gid)
5945     {
5946     long ret = sys_setfsgid(low2highgid(gid));
5947     /* avoid REGPARM breakage on x86: */
5948     @@ -159,7 +160,7 @@ static int groups16_from_user(struct group_info *group_info,
5949     return 0;
5950     }
5951    
5952     -asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist)
5953     +SYSCALL_DEFINE2(getgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
5954     {
5955     int i = 0;
5956    
5957     @@ -183,7 +184,7 @@ out:
5958     return i;
5959     }
5960    
5961     -asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
5962     +SYSCALL_DEFINE2(setgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
5963     {
5964     struct group_info *group_info;
5965     int retval;
5966     @@ -208,22 +209,22 @@ asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
5967     return retval;
5968     }
5969    
5970     -asmlinkage long sys_getuid16(void)
5971     +SYSCALL_DEFINE0(getuid16)
5972     {
5973     return high2lowuid(current->uid);
5974     }
5975    
5976     -asmlinkage long sys_geteuid16(void)
5977     +SYSCALL_DEFINE0(geteuid16)
5978     {
5979     return high2lowuid(current->euid);
5980     }
5981    
5982     -asmlinkage long sys_getgid16(void)
5983     +SYSCALL_DEFINE0(getgid16)
5984     {
5985     return high2lowgid(current->gid);
5986     }
5987    
5988     -asmlinkage long sys_getegid16(void)
5989     +SYSCALL_DEFINE0(getegid16)
5990     {
5991     return high2lowgid(current->egid);
5992     }
5993     diff --git a/mm/fadvise.c b/mm/fadvise.c
5994     index 343cfdf..a32a66e 100644
5995     --- a/mm/fadvise.c
5996     +++ b/mm/fadvise.c
5997     @@ -24,7 +24,7 @@
5998     * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could
5999     * deactivate the pages and clear PG_Referenced.
6000     */
6001     -asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice)
6002     +SYSCALL_DEFINE(fadvise64_64)(int fd, loff_t offset, loff_t len, int advice)
6003     {
6004     struct file *file = fget(fd);
6005     struct address_space *mapping;
6006     @@ -126,12 +126,26 @@ out:
6007     fput(file);
6008     return ret;
6009     }
6010     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
6011     +asmlinkage long SyS_fadvise64_64(long fd, loff_t offset, loff_t len, long advice)
6012     +{
6013     + return SYSC_fadvise64_64((int) fd, offset, len, (int) advice);
6014     +}
6015     +SYSCALL_ALIAS(sys_fadvise64_64, SyS_fadvise64_64);
6016     +#endif
6017    
6018     #ifdef __ARCH_WANT_SYS_FADVISE64
6019    
6020     -asmlinkage long sys_fadvise64(int fd, loff_t offset, size_t len, int advice)
6021     +SYSCALL_DEFINE(fadvise64)(int fd, loff_t offset, size_t len, int advice)
6022     {
6023     return sys_fadvise64_64(fd, offset, len, advice);
6024     }
6025     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
6026     +asmlinkage long SyS_fadvise64(long fd, loff_t offset, long len, long advice)
6027     +{
6028     + return SYSC_fadvise64((int) fd, offset, (size_t)len, (int)advice);
6029     +}
6030     +SYSCALL_ALIAS(sys_fadvise64, SyS_fadvise64);
6031     +#endif
6032    
6033     #endif
6034     diff --git a/mm/filemap.c b/mm/filemap.c
6035     index 876bc59..f3033d0 100644
6036     --- a/mm/filemap.c
6037     +++ b/mm/filemap.c
6038     @@ -1353,7 +1353,7 @@ do_readahead(struct address_space *mapping, struct file *filp,
6039     return 0;
6040     }
6041    
6042     -asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count)
6043     +SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
6044     {
6045     ssize_t ret;
6046     struct file *file;
6047     @@ -1372,6 +1372,13 @@ asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count)
6048     }
6049     return ret;
6050     }
6051     +#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
6052     +asmlinkage long SyS_readahead(long fd, loff_t offset, long count)
6053     +{
6054     + return SYSC_readahead((int) fd, offset, (size_t) count);
6055     +}
6056     +SYSCALL_ALIAS(sys_readahead, SyS_readahead);
6057     +#endif
6058    
6059     #ifdef CONFIG_MMU
6060     /**
6061     @@ -2026,7 +2033,7 @@ int pagecache_write_begin(struct file *file, struct address_space *mapping,
6062     struct inode *inode = mapping->host;
6063     struct page *page;
6064     again:
6065     - page = __grab_cache_page(mapping, index);
6066     + page = grab_cache_page_write_begin(mapping, index, flags);
6067     *pagep = page;
6068     if (!page)
6069     return -ENOMEM;
6070     @@ -2190,19 +2197,24 @@ EXPORT_SYMBOL(generic_file_direct_write);
6071     * Find or create a page at the given pagecache position. Return the locked
6072     * page. This function is specifically for buffered writes.
6073     */
6074     -struct page *__grab_cache_page(struct address_space *mapping, pgoff_t index)
6075     +struct page *grab_cache_page_write_begin(struct address_space *mapping,
6076     + pgoff_t index, unsigned flags)
6077     {
6078     int status;
6079     struct page *page;
6080     + gfp_t gfp_notmask = 0;
6081     + if (flags & AOP_FLAG_NOFS)
6082     + gfp_notmask = __GFP_FS;
6083     repeat:
6084     page = find_lock_page(mapping, index);
6085     if (likely(page))
6086     return page;
6087    
6088     - page = page_cache_alloc(mapping);
6089     + page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask);
6090     if (!page)
6091     return NULL;
6092     - status = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL);
6093     + status = add_to_page_cache_lru(page, mapping, index,
6094     + GFP_KERNEL & ~gfp_notmask);
6095     if (unlikely(status)) {
6096     page_cache_release(page);
6097     if (status == -EEXIST)
6098     @@ -2211,7 +2223,7 @@ repeat:
6099     }
6100     return page;
6101     }
6102     -EXPORT_SYMBOL(__grab_cache_page);
6103     +EXPORT_SYMBOL(grab_cache_page_write_begin);
6104    
6105     static ssize_t generic_perform_write_2copy(struct file *file,
6106     struct iov_iter *i, loff_t pos)
6107     @@ -2256,7 +2268,7 @@ static ssize_t generic_perform_write_2copy(struct file *file,
6108     break;
6109     }
6110    
6111     - page = __grab_cache_page(mapping, index);
6112     + page = grab_cache_page_write_begin(mapping, index, 0);
6113     if (!page) {
6114     status = -ENOMEM;
6115     break;
6116     diff --git a/mm/fremap.c b/mm/fremap.c
6117     index 7881638..b4a4aa3 100644
6118     --- a/mm/fremap.c
6119     +++ b/mm/fremap.c
6120     @@ -118,8 +118,8 @@ static int populate_range(struct mm_struct *mm, struct vm_area_struct *vma,
6121     * and the vma's default protection is used. Arbitrary protections
6122     * might be implemented in the future.
6123     */
6124     -asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
6125     - unsigned long prot, unsigned long pgoff, unsigned long flags)
6126     +SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
6127     + unsigned long, prot, unsigned long, pgoff, unsigned long, flags)
6128     {
6129     struct mm_struct *mm = current->mm;
6130     struct address_space *mapping;
6131     diff --git a/mm/madvise.c b/mm/madvise.c
6132     index f9349c1..b9ce574 100644
6133     --- a/mm/madvise.c
6134     +++ b/mm/madvise.c
6135     @@ -281,7 +281,7 @@ madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev,
6136     * -EBADF - map exists, but area maps something that isn't a file.
6137     * -EAGAIN - a kernel resource was temporarily unavailable.
6138     */
6139     -asmlinkage long sys_madvise(unsigned long start, size_t len_in, int behavior)
6140     +SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
6141     {
6142     unsigned long end, tmp;
6143     struct vm_area_struct * vma, *prev;
6144     diff --git a/mm/mempolicy.c b/mm/mempolicy.c
6145     index 8336905..83bea4f 100644
6146     --- a/mm/mempolicy.c
6147     +++ b/mm/mempolicy.c
6148     @@ -1059,10 +1059,9 @@ static int copy_nodes_to_user(unsigned long __user *mask, unsigned long maxnode,
6149     return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0;
6150     }
6151    
6152     -asmlinkage long sys_mbind(unsigned long start, unsigned long len,
6153     - unsigned long mode,
6154     - unsigned long __user *nmask, unsigned long maxnode,
6155     - unsigned flags)
6156     +SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len,
6157     + unsigned long, mode, unsigned long __user *, nmask,
6158     + unsigned long, maxnode, unsigned, flags)
6159     {
6160     nodemask_t nodes;
6161     int err;
6162     @@ -1082,8 +1081,8 @@ asmlinkage long sys_mbind(unsigned long start, unsigned long len,
6163     }
6164    
6165     /* Set the process memory policy */
6166     -asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
6167     - unsigned long maxnode)
6168     +SYSCALL_DEFINE3(set_mempolicy, int, mode, unsigned long __user *, nmask,
6169     + unsigned long, maxnode)
6170     {
6171     int err;
6172     nodemask_t nodes;
6173     @@ -1101,9 +1100,9 @@ asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
6174     return do_set_mempolicy(mode, flags, &nodes);
6175     }
6176    
6177     -asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode,
6178     - const unsigned long __user *old_nodes,
6179     - const unsigned long __user *new_nodes)
6180     +SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
6181     + const unsigned long __user *, old_nodes,
6182     + const unsigned long __user *, new_nodes)
6183     {
6184     struct mm_struct *mm;
6185     struct task_struct *task;
6186     @@ -1171,10 +1170,9 @@ out:
6187    
6188    
6189     /* Retrieve NUMA policy */
6190     -asmlinkage long sys_get_mempolicy(int __user *policy,
6191     - unsigned long __user *nmask,
6192     - unsigned long maxnode,
6193     - unsigned long addr, unsigned long flags)
6194     +SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
6195     + unsigned long __user *, nmask, unsigned long, maxnode,
6196     + unsigned long, addr, unsigned long, flags)
6197     {
6198     int err;
6199     int uninitialized_var(pval);
6200     diff --git a/mm/migrate.c b/mm/migrate.c
6201     index 2a80136..d493c02 100644
6202     --- a/mm/migrate.c
6203     +++ b/mm/migrate.c
6204     @@ -979,10 +979,10 @@ set_status:
6205     * Move a list of pages in the address space of the currently executing
6206     * process.
6207     */
6208     -asmlinkage long sys_move_pages(pid_t pid, unsigned long nr_pages,
6209     - const void __user * __user *pages,
6210     - const int __user *nodes,
6211     - int __user *status, int flags)
6212     +SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
6213     + const void __user * __user *, pages,
6214     + const int __user *, nodes,
6215     + int __user *, status, int, flags)
6216     {
6217     int err = 0;
6218     int i;
6219     diff --git a/mm/mincore.c b/mm/mincore.c
6220     index 5178800..8cb508f 100644
6221     --- a/mm/mincore.c
6222     +++ b/mm/mincore.c
6223     @@ -177,8 +177,8 @@ none_mapped:
6224     * mapped
6225     * -EAGAIN - A kernel resource was temporarily unavailable.
6226     */
6227     -asmlinkage long sys_mincore(unsigned long start, size_t len,
6228     - unsigned char __user * vec)
6229     +SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len,
6230     + unsigned char __user *, vec)
6231     {
6232     long retval;
6233     unsigned long pages;
6234     diff --git a/mm/mlock.c b/mm/mlock.c
6235     index 01fbe93..73ee3fa 100644
6236     --- a/mm/mlock.c
6237     +++ b/mm/mlock.c
6238     @@ -130,7 +130,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
6239     return error;
6240     }
6241    
6242     -asmlinkage long sys_mlock(unsigned long start, size_t len)
6243     +SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
6244     {
6245     unsigned long locked;
6246     unsigned long lock_limit;
6247     @@ -156,7 +156,7 @@ asmlinkage long sys_mlock(unsigned long start, size_t len)
6248     return error;
6249     }
6250    
6251     -asmlinkage long sys_munlock(unsigned long start, size_t len)
6252     +SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)
6253     {
6254     int ret;
6255    
6256     @@ -193,7 +193,7 @@ out:
6257     return 0;
6258     }
6259    
6260     -asmlinkage long sys_mlockall(int flags)
6261     +SYSCALL_DEFINE1(mlockall, int, flags)
6262     {
6263     unsigned long lock_limit;
6264     int ret = -EINVAL;
6265     @@ -219,7 +219,7 @@ out:
6266     return ret;
6267     }
6268    
6269     -asmlinkage long sys_munlockall(void)
6270     +SYSCALL_DEFINE0(munlockall)
6271     {
6272     int ret;
6273    
6274     diff --git a/mm/mmap.c b/mm/mmap.c
6275     index e7a5a68..ca12a93 100644
6276     --- a/mm/mmap.c
6277     +++ b/mm/mmap.c
6278     @@ -244,7 +244,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
6279     return next;
6280     }
6281    
6282     -asmlinkage unsigned long sys_brk(unsigned long brk)
6283     +SYSCALL_DEFINE1(brk, unsigned long, brk)
6284     {
6285     unsigned long rlim, retval;
6286     unsigned long newbrk, oldbrk;
6287     @@ -1927,7 +1927,7 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
6288    
6289     EXPORT_SYMBOL(do_munmap);
6290    
6291     -asmlinkage long sys_munmap(unsigned long addr, size_t len)
6292     +SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
6293     {
6294     int ret;
6295     struct mm_struct *mm = current->mm;
6296     diff --git a/mm/mprotect.c b/mm/mprotect.c
6297     index fded06f..2623e29 100644
6298     --- a/mm/mprotect.c
6299     +++ b/mm/mprotect.c
6300     @@ -219,8 +219,8 @@ fail:
6301     return error;
6302     }
6303    
6304     -asmlinkage long
6305     -sys_mprotect(unsigned long start, size_t len, unsigned long prot)
6306     +SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
6307     + unsigned long, prot)
6308     {
6309     unsigned long vm_flags, nstart, end, tmp, reqprot;
6310     struct vm_area_struct *vma, *prev;
6311     diff --git a/mm/mremap.c b/mm/mremap.c
6312     index 1a77439..cfdeed9 100644
6313     --- a/mm/mremap.c
6314     +++ b/mm/mremap.c
6315     @@ -418,9 +418,9 @@ out_nc:
6316     return ret;
6317     }
6318    
6319     -asmlinkage unsigned long sys_mremap(unsigned long addr,
6320     - unsigned long old_len, unsigned long new_len,
6321     - unsigned long flags, unsigned long new_addr)
6322     +SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
6323     + unsigned long, new_len, unsigned long, flags,
6324     + unsigned long, new_addr)
6325     {
6326     unsigned long ret;
6327    
6328     diff --git a/mm/msync.c b/mm/msync.c
6329     index 144a757..9e06d2e 100644
6330     --- a/mm/msync.c
6331     +++ b/mm/msync.c
6332     @@ -28,7 +28,7 @@
6333     * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to
6334     * applications.
6335     */
6336     -asmlinkage long sys_msync(unsigned long start, size_t len, int flags)
6337     +SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags)
6338     {
6339     unsigned long end;
6340     struct mm_struct *mm = current->mm;
6341     diff --git a/mm/nommu.c b/mm/nommu.c
6342     index ed75bc9..4bf7686 100644
6343     --- a/mm/nommu.c
6344     +++ b/mm/nommu.c
6345     @@ -355,7 +355,7 @@ EXPORT_SYMBOL(vm_insert_page);
6346     * to a regular file. in this case, the unmapping will need
6347     * to invoke file system routines that need the global lock.
6348     */
6349     -asmlinkage unsigned long sys_brk(unsigned long brk)
6350     +SYSCALL_DEFINE1(brk, unsigned long, brk)
6351     {
6352     struct mm_struct *mm = current->mm;
6353    
6354     @@ -1170,7 +1170,7 @@ int do_munmap(struct mm_struct *mm, unsigned long addr, size_t len)
6355     }
6356     EXPORT_SYMBOL(do_munmap);
6357    
6358     -asmlinkage long sys_munmap(unsigned long addr, size_t len)
6359     +SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
6360     {
6361     int ret;
6362     struct mm_struct *mm = current->mm;
6363     @@ -1261,9 +1261,9 @@ unsigned long do_mremap(unsigned long addr,
6364     }
6365     EXPORT_SYMBOL(do_mremap);
6366    
6367     -asmlinkage unsigned long sys_mremap(unsigned long addr,
6368     - unsigned long old_len, unsigned long new_len,
6369     - unsigned long flags, unsigned long new_addr)
6370     +SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
6371     + unsigned long, new_len, unsigned long, flags,
6372     + unsigned long, new_addr)
6373     {
6374     unsigned long ret;
6375    
6376     diff --git a/mm/swapfile.c b/mm/swapfile.c
6377     index 1e330f2..572cc78 100644
6378     --- a/mm/swapfile.c
6379     +++ b/mm/swapfile.c
6380     @@ -1204,7 +1204,7 @@ int page_queue_congested(struct page *page)
6381     }
6382     #endif
6383    
6384     -asmlinkage long sys_swapoff(const char __user * specialfile)
6385     +SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
6386     {
6387     struct swap_info_struct * p = NULL;
6388     unsigned short *swap_map;
6389     @@ -1448,7 +1448,7 @@ __initcall(procswaps_init);
6390     *
6391     * The swapon system call
6392     */
6393     -asmlinkage long sys_swapon(const char __user * specialfile, int swap_flags)
6394     +SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
6395     {
6396     struct swap_info_struct * p;
6397     char *name = NULL;
6398     diff --git a/net/socket.c b/net/socket.c
6399     index 3e8d4e3..3e2859c 100644
6400     --- a/net/socket.c
6401     +++ b/net/socket.c
6402     @@ -1216,7 +1216,7 @@ int sock_create_kern(int family, int type, int protocol, struct socket **res)
6403     return __sock_create(&init_net, family, type, protocol, res, 1);
6404     }
6405    
6406     -asmlinkage long sys_socket(int family, int type, int protocol)
6407     +SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
6408     {
6409     int retval;
6410     struct socket *sock;
6411     @@ -1257,8 +1257,8 @@ out_release:
6412     * Create a pair of connected sockets.
6413     */
6414    
6415     -asmlinkage long sys_socketpair(int family, int type, int protocol,
6416     - int __user *usockvec)
6417     +SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,
6418     + int __user *, usockvec)
6419     {
6420     struct socket *sock1, *sock2;
6421     int fd1, fd2, err;
6422     @@ -1365,7 +1365,7 @@ out_fd:
6423     * the protocol layer (having also checked the address is ok).
6424     */
6425    
6426     -asmlinkage long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
6427     +SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
6428     {
6429     struct socket *sock;
6430     struct sockaddr_storage address;
6431     @@ -1394,7 +1394,7 @@ asmlinkage long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
6432     * ready for listening.
6433     */
6434    
6435     -asmlinkage long sys_listen(int fd, int backlog)
6436     +SYSCALL_DEFINE2(listen, int, fd, int, backlog)
6437     {
6438     struct socket *sock;
6439     int err, fput_needed;
6440     @@ -1567,8 +1567,8 @@ asmlinkage long sys_paccept(int fd, struct sockaddr __user *upeer_sockaddr,
6441     #endif
6442     #endif
6443    
6444     -asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr,
6445     - int __user *upeer_addrlen)
6446     +SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr,
6447     + int __user *, upeer_addrlen)
6448     {
6449     return do_accept(fd, upeer_sockaddr, upeer_addrlen, 0);
6450     }
6451     @@ -1585,8 +1585,8 @@ asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr,
6452     * include the -EINPROGRESS status for such sockets.
6453     */
6454    
6455     -asmlinkage long sys_connect(int fd, struct sockaddr __user *uservaddr,
6456     - int addrlen)
6457     +SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
6458     + int, addrlen)
6459     {
6460     struct socket *sock;
6461     struct sockaddr_storage address;
6462     @@ -1617,8 +1617,8 @@ out:
6463     * name to user space.
6464     */
6465    
6466     -asmlinkage long sys_getsockname(int fd, struct sockaddr __user *usockaddr,
6467     - int __user *usockaddr_len)
6468     +SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr,
6469     + int __user *, usockaddr_len)
6470     {
6471     struct socket *sock;
6472     struct sockaddr_storage address;
6473     @@ -1648,8 +1648,8 @@ out:
6474     * name to user space.
6475     */
6476    
6477     -asmlinkage long sys_getpeername(int fd, struct sockaddr __user *usockaddr,
6478     - int __user *usockaddr_len)
6479     +SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
6480     + int __user *, usockaddr_len)
6481     {
6482     struct socket *sock;
6483     struct sockaddr_storage address;
6484     @@ -1680,9 +1680,9 @@ asmlinkage long sys_getpeername(int fd, struct sockaddr __user *usockaddr,
6485     * the protocol.
6486     */
6487    
6488     -asmlinkage long sys_sendto(int fd, void __user *buff, size_t len,
6489     - unsigned flags, struct sockaddr __user *addr,
6490     - int addr_len)
6491     +SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
6492     + unsigned, flags, struct sockaddr __user *, addr,
6493     + int, addr_len)
6494     {
6495     struct socket *sock;
6496     struct sockaddr_storage address;
6497     @@ -1725,7 +1725,8 @@ out:
6498     * Send a datagram down a socket.
6499     */
6500    
6501     -asmlinkage long sys_send(int fd, void __user *buff, size_t len, unsigned flags)
6502     +SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len,
6503     + unsigned, flags)
6504     {
6505     return sys_sendto(fd, buff, len, flags, NULL, 0);
6506     }
6507     @@ -1736,9 +1737,9 @@ asmlinkage long sys_send(int fd, void __user *buff, size_t len, unsigned flags)
6508     * sender address from kernel to user space.
6509     */
6510    
6511     -asmlinkage long sys_recvfrom(int fd, void __user *ubuf, size_t size,
6512     - unsigned flags, struct sockaddr __user *addr,
6513     - int __user *addr_len)
6514     +SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
6515     + unsigned, flags, struct sockaddr __user *, addr,
6516     + int __user *, addr_len)
6517     {
6518     struct socket *sock;
6519     struct iovec iov;
6520     @@ -1790,8 +1791,8 @@ asmlinkage long sys_recv(int fd, void __user *ubuf, size_t size,
6521     * to pass the user mode parameter for the protocols to sort out.
6522     */
6523    
6524     -asmlinkage long sys_setsockopt(int fd, int level, int optname,
6525     - char __user *optval, int optlen)
6526     +SYSCALL_DEFINE5(setsockopt, int, fd, int, level, int, optname,
6527     + char __user *, optval, int, optlen)
6528     {
6529     int err, fput_needed;
6530     struct socket *sock;
6531     @@ -1824,8 +1825,8 @@ out_put:
6532     * to pass a user mode parameter for the protocols to sort out.
6533     */
6534    
6535     -asmlinkage long sys_getsockopt(int fd, int level, int optname,
6536     - char __user *optval, int __user *optlen)
6537     +SYSCALL_DEFINE5(getsockopt, int, fd, int, level, int, optname,
6538     + char __user *, optval, int __user *, optlen)
6539     {
6540     int err, fput_needed;
6541     struct socket *sock;
6542     @@ -1854,7 +1855,7 @@ out_put:
6543     * Shutdown a socket.
6544     */
6545    
6546     -asmlinkage long sys_shutdown(int fd, int how)
6547     +SYSCALL_DEFINE2(shutdown, int, fd, int, how)
6548     {
6549     int err, fput_needed;
6550     struct socket *sock;
6551     @@ -1880,7 +1881,7 @@ asmlinkage long sys_shutdown(int fd, int how)
6552     * BSD sendmsg interface
6553     */
6554    
6555     -asmlinkage long sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags)
6556     +SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned, flags)
6557     {
6558     struct compat_msghdr __user *msg_compat =
6559     (struct compat_msghdr __user *)msg;
6560     @@ -1986,8 +1987,8 @@ out:
6561     * BSD recvmsg interface
6562     */
6563    
6564     -asmlinkage long sys_recvmsg(int fd, struct msghdr __user *msg,
6565     - unsigned int flags)
6566     +SYSCALL_DEFINE3(recvmsg, int, fd, struct msghdr __user *, msg,
6567     + unsigned int, flags)
6568     {
6569     struct compat_msghdr __user *msg_compat =
6570     (struct compat_msghdr __user *)msg;
6571     @@ -2110,7 +2111,7 @@ static const unsigned char nargs[19]={
6572     * it is set by the callees.
6573     */
6574    
6575     -asmlinkage long sys_socketcall(int call, unsigned long __user *args)
6576     +SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args)
6577     {
6578     unsigned long a[6];
6579     unsigned long a0, a1;
6580     diff --git a/security/device_cgroup.c b/security/device_cgroup.c
6581     index 46f2397..9ef066d 100644
6582     --- a/security/device_cgroup.c
6583     +++ b/security/device_cgroup.c
6584     @@ -543,6 +543,9 @@ int devcgroup_inode_mknod(int mode, dev_t dev)
6585     struct dev_cgroup *dev_cgroup;
6586     struct dev_whitelist_item *wh;
6587    
6588     + if (!S_ISBLK(mode) && !S_ISCHR(mode))
6589     + return 0;
6590     +
6591     rcu_read_lock();
6592    
6593     dev_cgroup = task_devcgroup(current);
6594     diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
6595     index acc9c89..9b4e0e9 100644
6596     --- a/security/keys/keyctl.c
6597     +++ b/security/keys/keyctl.c
6598     @@ -54,11 +54,11 @@ static int key_get_type_from_user(char *type,
6599     * - returns the new key's serial number
6600     * - implements add_key()
6601     */
6602     -asmlinkage long sys_add_key(const char __user *_type,
6603     - const char __user *_description,
6604     - const void __user *_payload,
6605     - size_t plen,
6606     - key_serial_t ringid)
6607     +SYSCALL_DEFINE5(add_key, const char __user *, _type,
6608     + const char __user *, _description,
6609     + const void __user *, _payload,
6610     + size_t, plen,
6611     + key_serial_t, ringid)
6612     {
6613     key_ref_t keyring_ref, key_ref;
6614     char type[32], *description;
6615     @@ -146,10 +146,10 @@ asmlinkage long sys_add_key(const char __user *_type,
6616     * - if the _callout_info string is empty, it will be rendered as "-"
6617     * - implements request_key()
6618     */
6619     -asmlinkage long sys_request_key(const char __user *_type,
6620     - const char __user *_description,
6621     - const char __user *_callout_info,
6622     - key_serial_t destringid)
6623     +SYSCALL_DEFINE4(request_key, const char __user *, _type,
6624     + const char __user *, _description,
6625     + const char __user *, _callout_info,
6626     + key_serial_t, destringid)
6627     {
6628     struct key_type *ktype;
6629     struct key *key;
6630     @@ -1152,8 +1152,8 @@ long keyctl_get_security(key_serial_t keyid,
6631     /*
6632     * the key control system call
6633     */
6634     -asmlinkage long sys_keyctl(int option, unsigned long arg2, unsigned long arg3,
6635     - unsigned long arg4, unsigned long arg5)
6636     +SYSCALL_DEFINE5(keyctl, int, option, unsigned long, arg2, unsigned long, arg3,
6637     + unsigned long, arg4, unsigned long, arg5)
6638     {
6639     switch (option) {
6640     case KEYCTL_GET_KEYRING_ID:
6641     diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
6642     index cb13307..591f62f 100644
6643     --- a/sound/pci/hda/patch_analog.c
6644     +++ b/sound/pci/hda/patch_analog.c
6645     @@ -3848,6 +3848,7 @@ static const char *ad1884a_models[AD1884A_MODELS] = {
6646     static struct snd_pci_quirk ad1884a_cfg_tbl[] = {
6647     SND_PCI_QUIRK(0x103c, 0x3030, "HP", AD1884A_MOBILE),
6648     SND_PCI_QUIRK(0x103c, 0x3056, "HP", AD1884A_MOBILE),
6649     + SND_PCI_QUIRK(0x103c, 0x30e6, "HP 6730b", AD1884A_LAPTOP),
6650     SND_PCI_QUIRK(0x103c, 0x30e7, "HP EliteBook 8530p", AD1884A_LAPTOP),
6651     SND_PCI_QUIRK(0x103c, 0x3614, "HP 6730s", AD1884A_LAPTOP),
6652     SND_PCI_QUIRK(0x17aa, 0x20ac, "Thinkpad X300", AD1884A_THINKPAD),
6653     diff --git a/sound/usb/caiaq/caiaq-device.h b/sound/usb/caiaq/caiaq-device.h
6654     index f9fbdba..ab56e73 100644
6655     --- a/sound/usb/caiaq/caiaq-device.h
6656     +++ b/sound/usb/caiaq/caiaq-device.h
6657     @@ -75,6 +75,7 @@ struct snd_usb_caiaqdev {
6658     wait_queue_head_t ep1_wait_queue;
6659     wait_queue_head_t prepare_wait_queue;
6660     int spec_received, audio_parm_answer;
6661     + int midi_out_active;
6662    
6663     char vendor_name[CAIAQ_USB_STR_LEN];
6664     char product_name[CAIAQ_USB_STR_LEN];
6665     diff --git a/sound/usb/caiaq/caiaq-midi.c b/sound/usb/caiaq/caiaq-midi.c
6666     index 30b57f9..f19fd36 100644
6667     --- a/sound/usb/caiaq/caiaq-midi.c
6668     +++ b/sound/usb/caiaq/caiaq-midi.c
6669     @@ -59,6 +59,11 @@ static int snd_usb_caiaq_midi_output_open(struct snd_rawmidi_substream *substrea
6670    
6671     static int snd_usb_caiaq_midi_output_close(struct snd_rawmidi_substream *substream)
6672     {
6673     + struct snd_usb_caiaqdev *dev = substream->rmidi->private_data;
6674     + if (dev->midi_out_active) {
6675     + usb_kill_urb(&dev->midi_out_urb);
6676     + dev->midi_out_active = 0;
6677     + }
6678     return 0;
6679     }
6680    
6681     @@ -69,7 +74,8 @@ static void snd_usb_caiaq_midi_send(struct snd_usb_caiaqdev *dev,
6682    
6683     dev->midi_out_buf[0] = EP1_CMD_MIDI_WRITE;
6684     dev->midi_out_buf[1] = 0; /* port */
6685     - len = snd_rawmidi_transmit_peek(substream, dev->midi_out_buf+3, EP1_BUFSIZE-3);
6686     + len = snd_rawmidi_transmit(substream, dev->midi_out_buf + 3,
6687     + EP1_BUFSIZE - 3);
6688    
6689     if (len <= 0)
6690     return;
6691     @@ -79,24 +85,24 @@ static void snd_usb_caiaq_midi_send(struct snd_usb_caiaqdev *dev,
6692    
6693     ret = usb_submit_urb(&dev->midi_out_urb, GFP_ATOMIC);
6694     if (ret < 0)
6695     - log("snd_usb_caiaq_midi_send(%p): usb_submit_urb() failed, %d\n",
6696     - substream, ret);
6697     + log("snd_usb_caiaq_midi_send(%p): usb_submit_urb() failed,"
6698     + "ret=%d, len=%d\n",
6699     + substream, ret, len);
6700     + else
6701     + dev->midi_out_active = 1;
6702     }
6703    
6704     static void snd_usb_caiaq_midi_output_trigger(struct snd_rawmidi_substream *substream, int up)
6705     {
6706     struct snd_usb_caiaqdev *dev = substream->rmidi->private_data;
6707    
6708     - if (dev->midi_out_substream != NULL)
6709     - return;
6710     -
6711     - if (!up) {
6712     + if (up) {
6713     + dev->midi_out_substream = substream;
6714     + if (!dev->midi_out_active)
6715     + snd_usb_caiaq_midi_send(dev, substream);
6716     + } else {
6717     dev->midi_out_substream = NULL;
6718     - return;
6719     }
6720     -
6721     - dev->midi_out_substream = substream;
6722     - snd_usb_caiaq_midi_send(dev, substream);
6723     }
6724    
6725    
6726     @@ -161,16 +167,14 @@ int snd_usb_caiaq_midi_init(struct snd_usb_caiaqdev *device)
6727     void snd_usb_caiaq_midi_output_done(struct urb* urb)
6728     {
6729     struct snd_usb_caiaqdev *dev = urb->context;
6730     - char *buf = urb->transfer_buffer;
6731    
6732     + dev->midi_out_active = 0;
6733     if (urb->status != 0)
6734     return;
6735    
6736     if (!dev->midi_out_substream)
6737     return;
6738    
6739     - snd_rawmidi_transmit_ack(dev->midi_out_substream, buf[2]);
6740     - dev->midi_out_substream = NULL;
6741     snd_usb_caiaq_midi_send(dev, dev->midi_out_substream);
6742     }
6743