diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-m68knommu/cacheflush.h | 14 | ||||
-rw-r--r-- | include/asm-m68knommu/system.h | 2 | ||||
-rw-r--r-- | include/asm-powerpc/systbl.h | 4 | ||||
-rw-r--r-- | include/asm-powerpc/unistd.h | 6 | ||||
-rw-r--r-- | include/asm-ppc/page.h | 2 | ||||
-rw-r--r-- | include/asm-x86/cacheflush.h | 7 | ||||
-rw-r--r-- | include/asm-x86/kdebug.h | 1 | ||||
-rw-r--r-- | include/linux/audit.h | 5 | ||||
-rw-r--r-- | include/linux/configfs.h | 1 | ||||
-rw-r--r-- | include/linux/dcache.h | 5 | ||||
-rw-r--r-- | include/linux/dcookies.h | 15 | ||||
-rw-r--r-- | include/linux/fs.h | 6 | ||||
-rw-r--r-- | include/linux/fs_struct.h | 10 | ||||
-rw-r--r-- | include/linux/ktime.h | 2 | ||||
-rw-r--r-- | include/linux/module.h | 3 | ||||
-rw-r--r-- | include/linux/namei.h | 11 | ||||
-rw-r--r-- | include/linux/nfsd/export.h | 8 | ||||
-rw-r--r-- | include/linux/path.h | 15 | ||||
-rw-r--r-- | include/linux/proc_fs.h | 2 | ||||
-rw-r--r-- | include/linux/seq_file.h | 5 | ||||
-rw-r--r-- | include/linux/slub_def.h | 15 |
21 files changed, 79 insertions, 60 deletions
diff --git a/include/asm-m68knommu/cacheflush.h b/include/asm-m68knommu/cacheflush.h index 29bc0aad2ebc..87e5dc0413b4 100644 --- a/include/asm-m68knommu/cacheflush.h +++ b/include/asm-m68knommu/cacheflush.h | |||
@@ -54,28 +54,28 @@ static inline void __flush_cache_all(void) | |||
54 | #if defined(CONFIG_M527x) || defined(CONFIG_M528x) | 54 | #if defined(CONFIG_M527x) || defined(CONFIG_M528x) |
55 | __asm__ __volatile__ ( | 55 | __asm__ __volatile__ ( |
56 | "movel #0x81000200, %%d0\n\t" | 56 | "movel #0x81000200, %%d0\n\t" |
57 | "movec %%d0, %%CACR\n\t" | 57 | "movec %%d0, %%CACR\n\t" |
58 | "nop\n\t" | 58 | "nop\n\t" |
59 | : : : "d0" ); | 59 | : : : "d0" ); |
60 | #endif /* CONFIG_M527x || CONFIG_M528x */ | 60 | #endif /* CONFIG_M527x || CONFIG_M528x */ |
61 | #if defined(CONFIG_M5206) || defined(CONFIG_M5206e) || defined(CONFIG_M5272) | 61 | #if defined(CONFIG_M5206) || defined(CONFIG_M5206e) || defined(CONFIG_M5272) |
62 | __asm__ __volatile__ ( | 62 | __asm__ __volatile__ ( |
63 | "movel #0x81000100, %%d0\n\t" | 63 | "movel #0x81000100, %%d0\n\t" |
64 | "movec %%d0, %%CACR\n\t" | 64 | "movec %%d0, %%CACR\n\t" |
65 | "nop\n\t" | 65 | "nop\n\t" |
66 | : : : "d0" ); | 66 | : : : "d0" ); |
67 | #endif /* CONFIG_M5206 || CONFIG_M5206e || CONFIG_M5272 */ | 67 | #endif /* CONFIG_M5206 || CONFIG_M5206e || CONFIG_M5272 */ |
68 | #ifdef CONFIG_M5249 | 68 | #ifdef CONFIG_M5249 |
69 | __asm__ __volatile__ ( | 69 | __asm__ __volatile__ ( |
70 | "movel #0xa1000200, %%d0\n\t" | 70 | "movel #0xa1000200, %%d0\n\t" |
71 | "movec %%d0, %%CACR\n\t" | 71 | "movec %%d0, %%CACR\n\t" |
72 | "nop\n\t" | 72 | "nop\n\t" |
73 | : : : "d0" ); | 73 | : : : "d0" ); |
74 | #endif /* CONFIG_M5249 */ | 74 | #endif /* CONFIG_M5249 */ |
75 | #ifdef CONFIG_M532x | 75 | #ifdef CONFIG_M532x |
76 | __asm__ __volatile__ ( | 76 | __asm__ __volatile__ ( |
77 | "movel #0x81000200, %%d0\n\t" | 77 | "movel #0x81000200, %%d0\n\t" |
78 | "movec %%d0, %%CACR\n\t" | 78 | "movec %%d0, %%CACR\n\t" |
79 | "nop\n\t" | 79 | "nop\n\t" |
80 | : : : "d0" ); | 80 | : : : "d0" ); |
81 | #endif /* CONFIG_M532x */ | 81 | #endif /* CONFIG_M532x */ |
diff --git a/include/asm-m68knommu/system.h b/include/asm-m68knommu/system.h index 039ab3f81732..64c64432bbb8 100644 --- a/include/asm-m68knommu/system.h +++ b/include/asm-m68knommu/system.h | |||
@@ -104,7 +104,7 @@ asmlinkage void resume(void); | |||
104 | #define mb() asm volatile ("" : : :"memory") | 104 | #define mb() asm volatile ("" : : :"memory") |
105 | #define rmb() asm volatile ("" : : :"memory") | 105 | #define rmb() asm volatile ("" : : :"memory") |
106 | #define wmb() asm volatile ("" : : :"memory") | 106 | #define wmb() asm volatile ("" : : :"memory") |
107 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | 107 | #define set_mb(var, value) ({ (var) = (value); wmb(); }) |
108 | 108 | ||
109 | #ifdef CONFIG_SMP | 109 | #ifdef CONFIG_SMP |
110 | #define smp_mb() mb() | 110 | #define smp_mb() mb() |
diff --git a/include/asm-powerpc/systbl.h b/include/asm-powerpc/systbl.h index e996521fb3a6..ae7085c65692 100644 --- a/include/asm-powerpc/systbl.h +++ b/include/asm-powerpc/systbl.h | |||
@@ -309,8 +309,10 @@ SYSCALL_SPU(getcpu) | |||
309 | COMPAT_SYS(epoll_pwait) | 309 | COMPAT_SYS(epoll_pwait) |
310 | COMPAT_SYS_SPU(utimensat) | 310 | COMPAT_SYS_SPU(utimensat) |
311 | COMPAT_SYS_SPU(signalfd) | 311 | COMPAT_SYS_SPU(signalfd) |
312 | SYSCALL(ni_syscall) | 312 | SYSCALL_SPU(timerfd_create) |
313 | SYSCALL_SPU(eventfd) | 313 | SYSCALL_SPU(eventfd) |
314 | COMPAT_SYS_SPU(sync_file_range2) | 314 | COMPAT_SYS_SPU(sync_file_range2) |
315 | COMPAT_SYS(fallocate) | 315 | COMPAT_SYS(fallocate) |
316 | SYSCALL(subpage_prot) | 316 | SYSCALL(subpage_prot) |
317 | COMPAT_SYS_SPU(timerfd_settime) | ||
318 | COMPAT_SYS_SPU(timerfd_gettime) | ||
diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h index fedc4b8e49e2..ce91bb662063 100644 --- a/include/asm-powerpc/unistd.h +++ b/include/asm-powerpc/unistd.h | |||
@@ -328,15 +328,17 @@ | |||
328 | #define __NR_epoll_pwait 303 | 328 | #define __NR_epoll_pwait 303 |
329 | #define __NR_utimensat 304 | 329 | #define __NR_utimensat 304 |
330 | #define __NR_signalfd 305 | 330 | #define __NR_signalfd 305 |
331 | #define __NR_timerfd 306 | 331 | #define __NR_timerfd_create 306 |
332 | #define __NR_eventfd 307 | 332 | #define __NR_eventfd 307 |
333 | #define __NR_sync_file_range2 308 | 333 | #define __NR_sync_file_range2 308 |
334 | #define __NR_fallocate 309 | 334 | #define __NR_fallocate 309 |
335 | #define __NR_subpage_prot 310 | 335 | #define __NR_subpage_prot 310 |
336 | #define __NR_timerfd_settime 311 | ||
337 | #define __NR_timerfd_gettime 312 | ||
336 | 338 | ||
337 | #ifdef __KERNEL__ | 339 | #ifdef __KERNEL__ |
338 | 340 | ||
339 | #define __NR_syscalls 311 | 341 | #define __NR_syscalls 313 |
340 | 342 | ||
341 | #define __NR__exit __NR_exit | 343 | #define __NR__exit __NR_exit |
342 | #define NR_syscalls __NR_syscalls | 344 | #define NR_syscalls __NR_syscalls |
diff --git a/include/asm-ppc/page.h b/include/asm-ppc/page.h index ad4c5a1bc9d6..37e4756b6b2d 100644 --- a/include/asm-ppc/page.h +++ b/include/asm-ppc/page.h | |||
@@ -125,6 +125,8 @@ extern __inline__ int get_order(unsigned long size) | |||
125 | return 32 - lz; | 125 | return 32 - lz; |
126 | } | 126 | } |
127 | 127 | ||
128 | typedef struct page *pgtable_t; | ||
129 | |||
128 | #endif /* __ASSEMBLY__ */ | 130 | #endif /* __ASSEMBLY__ */ |
129 | 131 | ||
130 | #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ | 132 | #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ |
diff --git a/include/asm-x86/cacheflush.h b/include/asm-x86/cacheflush.h index 6a22212b4b20..5396c212d8c0 100644 --- a/include/asm-x86/cacheflush.h +++ b/include/asm-x86/cacheflush.h | |||
@@ -48,12 +48,15 @@ void cpa_init(void); | |||
48 | 48 | ||
49 | #ifdef CONFIG_DEBUG_RODATA | 49 | #ifdef CONFIG_DEBUG_RODATA |
50 | void mark_rodata_ro(void); | 50 | void mark_rodata_ro(void); |
51 | extern const int rodata_test_data; | ||
51 | #endif | 52 | #endif |
53 | |||
52 | #ifdef CONFIG_DEBUG_RODATA_TEST | 54 | #ifdef CONFIG_DEBUG_RODATA_TEST |
53 | void rodata_test(void); | 55 | int rodata_test(void); |
54 | #else | 56 | #else |
55 | static inline void rodata_test(void) | 57 | static inline int rodata_test(void) |
56 | { | 58 | { |
59 | return 0; | ||
57 | } | 60 | } |
58 | #endif | 61 | #endif |
59 | 62 | ||
diff --git a/include/asm-x86/kdebug.h b/include/asm-x86/kdebug.h index dd442a1632c0..99dcbafa1511 100644 --- a/include/asm-x86/kdebug.h +++ b/include/asm-x86/kdebug.h | |||
@@ -31,7 +31,6 @@ extern void show_trace(struct task_struct *t, struct pt_regs *regs, | |||
31 | unsigned long *sp, unsigned long bp); | 31 | unsigned long *sp, unsigned long bp); |
32 | extern void __show_regs(struct pt_regs *regs); | 32 | extern void __show_regs(struct pt_regs *regs); |
33 | extern void show_regs(struct pt_regs *regs); | 33 | extern void show_regs(struct pt_regs *regs); |
34 | extern void dump_pagetable(unsigned long); | ||
35 | extern unsigned long oops_begin(void); | 34 | extern unsigned long oops_begin(void); |
36 | extern void oops_end(unsigned long, struct pt_regs *, int signr); | 35 | extern void oops_end(unsigned long, struct pt_regs *, int signr); |
37 | 36 | ||
diff --git a/include/linux/audit.h b/include/linux/audit.h index 97153027207a..2af9ec025015 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -534,8 +534,7 @@ extern void audit_log_n_untrustedstring(struct audit_buffer *ab, | |||
534 | const char *string); | 534 | const char *string); |
535 | extern void audit_log_d_path(struct audit_buffer *ab, | 535 | extern void audit_log_d_path(struct audit_buffer *ab, |
536 | const char *prefix, | 536 | const char *prefix, |
537 | struct dentry *dentry, | 537 | struct path *path); |
538 | struct vfsmount *vfsmnt); | ||
539 | extern void audit_log_lost(const char *message); | 538 | extern void audit_log_lost(const char *message); |
540 | /* Private API (for audit.c only) */ | 539 | /* Private API (for audit.c only) */ |
541 | extern int audit_filter_user(struct netlink_skb_parms *cb, int type); | 540 | extern int audit_filter_user(struct netlink_skb_parms *cb, int type); |
@@ -552,7 +551,7 @@ extern int audit_enabled; | |||
552 | #define audit_log_hex(a,b,l) do { ; } while (0) | 551 | #define audit_log_hex(a,b,l) do { ; } while (0) |
553 | #define audit_log_untrustedstring(a,s) do { ; } while (0) | 552 | #define audit_log_untrustedstring(a,s) do { ; } while (0) |
554 | #define audit_log_n_untrustedstring(a,n,s) do { ; } while (0) | 553 | #define audit_log_n_untrustedstring(a,n,s) do { ; } while (0) |
555 | #define audit_log_d_path(b,p,d,v) do { ; } while (0) | 554 | #define audit_log_d_path(b, p, d) do { ; } while (0) |
556 | #define audit_enabled 0 | 555 | #define audit_enabled 0 |
557 | #endif | 556 | #endif |
558 | #endif | 557 | #endif |
diff --git a/include/linux/configfs.h b/include/linux/configfs.h index 8c6967f3fb11..4b287ad9371a 100644 --- a/include/linux/configfs.h +++ b/include/linux/configfs.h | |||
@@ -37,6 +37,7 @@ | |||
37 | 37 | ||
38 | #ifdef __KERNEL__ | 38 | #ifdef __KERNEL__ |
39 | 39 | ||
40 | #include <linux/kernel.h> | ||
40 | #include <linux/types.h> | 41 | #include <linux/types.h> |
41 | #include <linux/list.h> | 42 | #include <linux/list.h> |
42 | #include <linux/kref.h> | 43 | #include <linux/kref.h> |
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index c2c153f97e8f..6bd646096fa6 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/rcupdate.h> | 10 | #include <linux/rcupdate.h> |
11 | 11 | ||
12 | struct nameidata; | 12 | struct nameidata; |
13 | struct path; | ||
13 | struct vfsmount; | 14 | struct vfsmount; |
14 | 15 | ||
15 | /* | 16 | /* |
@@ -300,8 +301,8 @@ extern int d_validate(struct dentry *, struct dentry *); | |||
300 | */ | 301 | */ |
301 | extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); | 302 | extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); |
302 | 303 | ||
303 | extern char * d_path(struct dentry *, struct vfsmount *, char *, int); | 304 | extern char *d_path(struct path *, char *, int); |
304 | 305 | ||
305 | /* Allocation counts.. */ | 306 | /* Allocation counts.. */ |
306 | 307 | ||
307 | /** | 308 | /** |
diff --git a/include/linux/dcookies.h b/include/linux/dcookies.h index 98c69ab80c84..24c806f12a6c 100644 --- a/include/linux/dcookies.h +++ b/include/linux/dcookies.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #ifdef CONFIG_PROFILING | 13 | #ifdef CONFIG_PROFILING |
14 | 14 | ||
15 | #include <linux/dcache.h> | 15 | #include <linux/dcache.h> |
16 | #include <linux/path.h> | ||
16 | #include <linux/types.h> | 17 | #include <linux/types.h> |
17 | 18 | ||
18 | struct dcookie_user; | 19 | struct dcookie_user; |
@@ -43,8 +44,7 @@ void dcookie_unregister(struct dcookie_user * user); | |||
43 | * | 44 | * |
44 | * Returns 0 on success, with *cookie filled in | 45 | * Returns 0 on success, with *cookie filled in |
45 | */ | 46 | */ |
46 | int get_dcookie(struct dentry * dentry, struct vfsmount * vfsmnt, | 47 | int get_dcookie(struct path *path, unsigned long *cookie); |
47 | unsigned long * cookie); | ||
48 | 48 | ||
49 | #else | 49 | #else |
50 | 50 | ||
@@ -57,13 +57,12 @@ static inline void dcookie_unregister(struct dcookie_user * user) | |||
57 | { | 57 | { |
58 | return; | 58 | return; |
59 | } | 59 | } |
60 | 60 | ||
61 | static inline int get_dcookie(struct dentry * dentry, | 61 | static inline int get_dcookie(struct path *path, unsigned long *cookie) |
62 | struct vfsmount * vfsmnt, unsigned long * cookie) | ||
63 | { | 62 | { |
64 | return -ENOSYS; | 63 | return -ENOSYS; |
65 | } | 64 | } |
66 | 65 | ||
67 | #endif /* CONFIG_PROFILING */ | 66 | #endif /* CONFIG_PROFILING */ |
68 | 67 | ||
69 | #endif /* DCOOKIES_H */ | 68 | #endif /* DCOOKIES_H */ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 18cfbf76ec5b..98ffb6ead434 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -1284,8 +1284,10 @@ struct super_operations { | |||
1284 | * | 1284 | * |
1285 | * I_DIRTY_SYNC Inode is dirty, but doesn't have to be written on | 1285 | * I_DIRTY_SYNC Inode is dirty, but doesn't have to be written on |
1286 | * fdatasync(). i_atime is the usual cause. | 1286 | * fdatasync(). i_atime is the usual cause. |
1287 | * I_DIRTY_DATASYNC Inode is dirty and must be written on fdatasync(), f.e. | 1287 | * I_DIRTY_DATASYNC Data-related inode changes pending. We keep track of |
1288 | * because i_size changed. | 1288 | * these changes separately from I_DIRTY_SYNC so that we |
1289 | * don't have to write inode on fdatasync() when only | ||
1290 | * mtime has changed in it. | ||
1289 | * I_DIRTY_PAGES Inode has dirty pages. Inode itself may be clean. | 1291 | * I_DIRTY_PAGES Inode has dirty pages. Inode itself may be clean. |
1290 | * I_NEW get_new_inode() sets i_state to I_LOCK|I_NEW. Both | 1292 | * I_NEW get_new_inode() sets i_state to I_LOCK|I_NEW. Both |
1291 | * are cleared by unlock_new_inode(), called from iget(). | 1293 | * are cleared by unlock_new_inode(), called from iget(). |
diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h index 11a36ceddf73..282f54219129 100644 --- a/include/linux/fs_struct.h +++ b/include/linux/fs_struct.h | |||
@@ -1,15 +1,13 @@ | |||
1 | #ifndef _LINUX_FS_STRUCT_H | 1 | #ifndef _LINUX_FS_STRUCT_H |
2 | #define _LINUX_FS_STRUCT_H | 2 | #define _LINUX_FS_STRUCT_H |
3 | 3 | ||
4 | struct dentry; | 4 | #include <linux/path.h> |
5 | struct vfsmount; | ||
6 | 5 | ||
7 | struct fs_struct { | 6 | struct fs_struct { |
8 | atomic_t count; | 7 | atomic_t count; |
9 | rwlock_t lock; | 8 | rwlock_t lock; |
10 | int umask; | 9 | int umask; |
11 | struct dentry * root, * pwd, * altroot; | 10 | struct path root, pwd, altroot; |
12 | struct vfsmount * rootmnt, * pwdmnt, * altrootmnt; | ||
13 | }; | 11 | }; |
14 | 12 | ||
15 | #define INIT_FS { \ | 13 | #define INIT_FS { \ |
@@ -22,8 +20,8 @@ extern struct kmem_cache *fs_cachep; | |||
22 | 20 | ||
23 | extern void exit_fs(struct task_struct *); | 21 | extern void exit_fs(struct task_struct *); |
24 | extern void set_fs_altroot(void); | 22 | extern void set_fs_altroot(void); |
25 | extern void set_fs_root(struct fs_struct *, struct vfsmount *, struct dentry *); | 23 | extern void set_fs_root(struct fs_struct *, struct path *); |
26 | extern void set_fs_pwd(struct fs_struct *, struct vfsmount *, struct dentry *); | 24 | extern void set_fs_pwd(struct fs_struct *, struct path *); |
27 | extern struct fs_struct *copy_fs_struct(struct fs_struct *); | 25 | extern struct fs_struct *copy_fs_struct(struct fs_struct *); |
28 | extern void put_fs_struct(struct fs_struct *); | 26 | extern void put_fs_struct(struct fs_struct *); |
29 | 27 | ||
diff --git a/include/linux/ktime.h b/include/linux/ktime.h index 36c542b70c6d..2cd7fa73d1af 100644 --- a/include/linux/ktime.h +++ b/include/linux/ktime.h | |||
@@ -310,6 +310,8 @@ static inline ktime_t ktime_sub_us(const ktime_t kt, const u64 usec) | |||
310 | return ktime_sub_ns(kt, usec * 1000); | 310 | return ktime_sub_ns(kt, usec * 1000); |
311 | } | 311 | } |
312 | 312 | ||
313 | extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs); | ||
314 | |||
313 | /* | 315 | /* |
314 | * The resolution of the clocks. The resolution value is returned in | 316 | * The resolution of the clocks. The resolution value is returned in |
315 | * the clock_getres() system call to give application programmers an | 317 | * the clock_getres() system call to give application programmers an |
diff --git a/include/linux/module.h b/include/linux/module.h index 330bec08c2c4..819c4e889bf1 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
@@ -567,8 +567,7 @@ static inline void print_modules(void) | |||
567 | { | 567 | { |
568 | } | 568 | } |
569 | 569 | ||
570 | static inline void module_update_markers(struct module *probe_module, | 570 | static inline void module_update_markers(void) |
571 | int *refcount) | ||
572 | { | 571 | { |
573 | } | 572 | } |
574 | 573 | ||
diff --git a/include/linux/namei.h b/include/linux/namei.h index c13e411491f4..24d88e98a626 100644 --- a/include/linux/namei.h +++ b/include/linux/namei.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/dcache.h> | 4 | #include <linux/dcache.h> |
5 | #include <linux/linkage.h> | 5 | #include <linux/linkage.h> |
6 | #include <linux/path.h> | ||
6 | 7 | ||
7 | struct vfsmount; | 8 | struct vfsmount; |
8 | 9 | ||
@@ -15,8 +16,7 @@ struct open_intent { | |||
15 | enum { MAX_NESTED_LINKS = 8 }; | 16 | enum { MAX_NESTED_LINKS = 8 }; |
16 | 17 | ||
17 | struct nameidata { | 18 | struct nameidata { |
18 | struct dentry *dentry; | 19 | struct path path; |
19 | struct vfsmount *mnt; | ||
20 | struct qstr last; | 20 | struct qstr last; |
21 | unsigned int flags; | 21 | unsigned int flags; |
22 | int last_type; | 22 | int last_type; |
@@ -29,11 +29,6 @@ struct nameidata { | |||
29 | } intent; | 29 | } intent; |
30 | }; | 30 | }; |
31 | 31 | ||
32 | struct path { | ||
33 | struct vfsmount *mnt; | ||
34 | struct dentry *dentry; | ||
35 | }; | ||
36 | |||
37 | /* | 32 | /* |
38 | * Type of the last component on LOOKUP_PARENT | 33 | * Type of the last component on LOOKUP_PARENT |
39 | */ | 34 | */ |
@@ -71,8 +66,6 @@ extern int __user_walk_fd(int dfd, const char __user *, unsigned, struct nameida | |||
71 | extern int path_lookup(const char *, unsigned, struct nameidata *); | 66 | extern int path_lookup(const char *, unsigned, struct nameidata *); |
72 | extern int vfs_path_lookup(struct dentry *, struct vfsmount *, | 67 | extern int vfs_path_lookup(struct dentry *, struct vfsmount *, |
73 | const char *, unsigned int, struct nameidata *); | 68 | const char *, unsigned int, struct nameidata *); |
74 | extern void path_release(struct nameidata *); | ||
75 | extern void path_release_on_umount(struct nameidata *); | ||
76 | 69 | ||
77 | extern int __user_path_lookup_open(const char __user *, unsigned lookup_flags, struct nameidata *nd, int open_flags); | 70 | extern int __user_path_lookup_open(const char __user *, unsigned lookup_flags, struct nameidata *nd, int open_flags); |
78 | extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags); | 71 | extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags); |
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h index 3a1687251367..5431512b2757 100644 --- a/include/linux/nfsd/export.h +++ b/include/linux/nfsd/export.h | |||
@@ -84,9 +84,8 @@ struct svc_export { | |||
84 | struct cache_head h; | 84 | struct cache_head h; |
85 | struct auth_domain * ex_client; | 85 | struct auth_domain * ex_client; |
86 | int ex_flags; | 86 | int ex_flags; |
87 | struct vfsmount * ex_mnt; | 87 | struct path ex_path; |
88 | struct dentry * ex_dentry; | 88 | char *ex_pathname; |
89 | char * ex_path; | ||
90 | uid_t ex_anon_uid; | 89 | uid_t ex_anon_uid; |
91 | gid_t ex_anon_gid; | 90 | gid_t ex_anon_gid; |
92 | int ex_fsid; | 91 | int ex_fsid; |
@@ -107,8 +106,7 @@ struct svc_expkey { | |||
107 | int ek_fsidtype; | 106 | int ek_fsidtype; |
108 | u32 ek_fsid[6]; | 107 | u32 ek_fsid[6]; |
109 | 108 | ||
110 | struct vfsmount * ek_mnt; | 109 | struct path ek_path; |
111 | struct dentry * ek_dentry; | ||
112 | }; | 110 | }; |
113 | 111 | ||
114 | #define EX_SECURE(exp) (!((exp)->ex_flags & NFSEXP_INSECURE_PORT)) | 112 | #define EX_SECURE(exp) (!((exp)->ex_flags & NFSEXP_INSECURE_PORT)) |
diff --git a/include/linux/path.h b/include/linux/path.h new file mode 100644 index 000000000000..915e0c382a51 --- /dev/null +++ b/include/linux/path.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #ifndef _LINUX_PATH_H | ||
2 | #define _LINUX_PATH_H | ||
3 | |||
4 | struct dentry; | ||
5 | struct vfsmount; | ||
6 | |||
7 | struct path { | ||
8 | struct vfsmount *mnt; | ||
9 | struct dentry *dentry; | ||
10 | }; | ||
11 | |||
12 | extern void path_get(struct path *); | ||
13 | extern void path_put(struct path *); | ||
14 | |||
15 | #endif /* _LINUX_PATH_H */ | ||
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index d6a4f69bdc92..d9a9e718ad19 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
@@ -269,7 +269,7 @@ extern void kclist_add(struct kcore_list *, void *, size_t); | |||
269 | #endif | 269 | #endif |
270 | 270 | ||
271 | union proc_op { | 271 | union proc_op { |
272 | int (*proc_get_link)(struct inode *, struct dentry **, struct vfsmount **); | 272 | int (*proc_get_link)(struct inode *, struct path *); |
273 | int (*proc_read)(struct task_struct *task, char *page); | 273 | int (*proc_read)(struct task_struct *task, char *page); |
274 | int (*proc_show)(struct seq_file *m, | 274 | int (*proc_show)(struct seq_file *m, |
275 | struct pid_namespace *ns, struct pid *pid, | 275 | struct pid_namespace *ns, struct pid *pid, |
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h index 648dfeb444db..67c2563961f3 100644 --- a/include/linux/seq_file.h +++ b/include/linux/seq_file.h | |||
@@ -8,8 +8,7 @@ | |||
8 | 8 | ||
9 | struct seq_operations; | 9 | struct seq_operations; |
10 | struct file; | 10 | struct file; |
11 | struct vfsmount; | 11 | struct path; |
12 | struct dentry; | ||
13 | struct inode; | 12 | struct inode; |
14 | 13 | ||
15 | struct seq_file { | 14 | struct seq_file { |
@@ -42,7 +41,7 @@ int seq_puts(struct seq_file *m, const char *s); | |||
42 | int seq_printf(struct seq_file *, const char *, ...) | 41 | int seq_printf(struct seq_file *, const char *, ...) |
43 | __attribute__ ((format (printf,2,3))); | 42 | __attribute__ ((format (printf,2,3))); |
44 | 43 | ||
45 | int seq_path(struct seq_file *, struct vfsmount *, struct dentry *, char *); | 44 | int seq_path(struct seq_file *, struct path *, char *); |
46 | 45 | ||
47 | int single_open(struct file *, int (*)(struct seq_file *, void *), void *); | 46 | int single_open(struct file *, int (*)(struct seq_file *, void *), void *); |
48 | int single_release(struct inode *, struct file *); | 47 | int single_release(struct inode *, struct file *); |
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index 5e6d3d634d5b..57deecc79d52 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h | |||
@@ -71,6 +71,7 @@ struct kmem_cache { | |||
71 | 71 | ||
72 | /* Allocation and freeing of slabs */ | 72 | /* Allocation and freeing of slabs */ |
73 | int objects; /* Number of objects in slab */ | 73 | int objects; /* Number of objects in slab */ |
74 | gfp_t allocflags; /* gfp flags to use on each alloc */ | ||
74 | int refcount; /* Refcount for slab cache destroy */ | 75 | int refcount; /* Refcount for slab cache destroy */ |
75 | void (*ctor)(struct kmem_cache *, void *); | 76 | void (*ctor)(struct kmem_cache *, void *); |
76 | int inuse; /* Offset to metadata */ | 77 | int inuse; /* Offset to metadata */ |
@@ -110,7 +111,7 @@ struct kmem_cache { | |||
110 | * We keep the general caches in an array of slab caches that are used for | 111 | * We keep the general caches in an array of slab caches that are used for |
111 | * 2^x bytes of allocations. | 112 | * 2^x bytes of allocations. |
112 | */ | 113 | */ |
113 | extern struct kmem_cache kmalloc_caches[PAGE_SHIFT]; | 114 | extern struct kmem_cache kmalloc_caches[PAGE_SHIFT + 1]; |
114 | 115 | ||
115 | /* | 116 | /* |
116 | * Sorry that the following has to be that ugly but some versions of GCC | 117 | * Sorry that the following has to be that ugly but some versions of GCC |
@@ -188,12 +189,16 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size) | |||
188 | void *kmem_cache_alloc(struct kmem_cache *, gfp_t); | 189 | void *kmem_cache_alloc(struct kmem_cache *, gfp_t); |
189 | void *__kmalloc(size_t size, gfp_t flags); | 190 | void *__kmalloc(size_t size, gfp_t flags); |
190 | 191 | ||
192 | static __always_inline void *kmalloc_large(size_t size, gfp_t flags) | ||
193 | { | ||
194 | return (void *)__get_free_pages(flags | __GFP_COMP, get_order(size)); | ||
195 | } | ||
196 | |||
191 | static __always_inline void *kmalloc(size_t size, gfp_t flags) | 197 | static __always_inline void *kmalloc(size_t size, gfp_t flags) |
192 | { | 198 | { |
193 | if (__builtin_constant_p(size)) { | 199 | if (__builtin_constant_p(size)) { |
194 | if (size > PAGE_SIZE / 2) | 200 | if (size > PAGE_SIZE) |
195 | return (void *)__get_free_pages(flags | __GFP_COMP, | 201 | return kmalloc_large(size, flags); |
196 | get_order(size)); | ||
197 | 202 | ||
198 | if (!(flags & SLUB_DMA)) { | 203 | if (!(flags & SLUB_DMA)) { |
199 | struct kmem_cache *s = kmalloc_slab(size); | 204 | struct kmem_cache *s = kmalloc_slab(size); |
@@ -214,7 +219,7 @@ void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node); | |||
214 | static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) | 219 | static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) |
215 | { | 220 | { |
216 | if (__builtin_constant_p(size) && | 221 | if (__builtin_constant_p(size) && |
217 | size <= PAGE_SIZE / 2 && !(flags & SLUB_DMA)) { | 222 | size <= PAGE_SIZE && !(flags & SLUB_DMA)) { |
218 | struct kmem_cache *s = kmalloc_slab(size); | 223 | struct kmem_cache *s = kmalloc_slab(size); |
219 | 224 | ||
220 | if (!s) | 225 | if (!s) |