diff options
| -rw-r--r-- | fs/proc/kcore.c | 14 | ||||
| -rw-r--r-- | fs/proc/proc_misc.c | 8 | ||||
| -rw-r--r-- | include/linux/proc_fs.h | 4 |
3 files changed, 13 insertions, 13 deletions
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index c2370c76fb71..59b43a068872 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c | |||
| @@ -27,6 +27,8 @@ | |||
| 27 | #define ELF_CORE_EFLAGS 0 | 27 | #define ELF_CORE_EFLAGS 0 |
| 28 | #endif | 28 | #endif |
| 29 | 29 | ||
| 30 | static struct proc_dir_entry *proc_root_kcore; | ||
| 31 | |||
| 30 | static int open_kcore(struct inode * inode, struct file * filp) | 32 | static int open_kcore(struct inode * inode, struct file * filp) |
| 31 | { | 33 | { |
| 32 | return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; | 34 | return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; |
| @@ -34,7 +36,7 @@ static int open_kcore(struct inode * inode, struct file * filp) | |||
| 34 | 36 | ||
| 35 | static ssize_t read_kcore(struct file *, char __user *, size_t, loff_t *); | 37 | static ssize_t read_kcore(struct file *, char __user *, size_t, loff_t *); |
| 36 | 38 | ||
| 37 | const struct file_operations proc_kcore_operations = { | 39 | static const struct file_operations proc_kcore_operations = { |
| 38 | .read = read_kcore, | 40 | .read = read_kcore, |
| 39 | .open = open_kcore, | 41 | .open = open_kcore, |
| 40 | }; | 42 | }; |
| @@ -399,3 +401,13 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) | |||
| 399 | 401 | ||
| 400 | return acc; | 402 | return acc; |
| 401 | } | 403 | } |
| 404 | |||
| 405 | static int __init proc_kcore_init(void) | ||
| 406 | { | ||
| 407 | proc_root_kcore = proc_create("kcore", S_IRUSR, NULL, &proc_kcore_operations); | ||
| 408 | if (proc_root_kcore) | ||
| 409 | proc_root_kcore->size = | ||
| 410 | (size_t)high_memory - PAGE_OFFSET + PAGE_SIZE; | ||
| 411 | return 0; | ||
| 412 | } | ||
| 413 | module_init(proc_kcore_init); | ||
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c index 4a768ed5da2e..5ed15ff8fd1d 100644 --- a/fs/proc/proc_misc.c +++ b/fs/proc/proc_misc.c | |||
| @@ -188,19 +188,11 @@ static struct file_operations proc_kpageflags_operations = { | |||
| 188 | }; | 188 | }; |
| 189 | #endif /* CONFIG_PROC_PAGE_MONITOR */ | 189 | #endif /* CONFIG_PROC_PAGE_MONITOR */ |
| 190 | 190 | ||
| 191 | struct proc_dir_entry *proc_root_kcore; | ||
| 192 | |||
| 193 | void __init proc_misc_init(void) | 191 | void __init proc_misc_init(void) |
| 194 | { | 192 | { |
| 195 | proc_symlink("mounts", NULL, "self/mounts"); | 193 | proc_symlink("mounts", NULL, "self/mounts"); |
| 196 | 194 | ||
| 197 | /* And now for trickier ones */ | 195 | /* And now for trickier ones */ |
| 198 | #ifdef CONFIG_PROC_KCORE | ||
| 199 | proc_root_kcore = proc_create("kcore", S_IRUSR, NULL, &proc_kcore_operations); | ||
| 200 | if (proc_root_kcore) | ||
| 201 | proc_root_kcore->size = | ||
| 202 | (size_t)high_memory - PAGE_OFFSET + PAGE_SIZE; | ||
| 203 | #endif | ||
| 204 | #ifdef CONFIG_PROC_PAGE_MONITOR | 196 | #ifdef CONFIG_PROC_PAGE_MONITOR |
| 205 | proc_create("kpagecount", S_IRUSR, NULL, &proc_kpagecount_operations); | 197 | proc_create("kpagecount", S_IRUSR, NULL, &proc_kpagecount_operations); |
| 206 | proc_create("kpageflags", S_IRUSR, NULL, &proc_kpageflags_operations); | 198 | proc_create("kpageflags", S_IRUSR, NULL, &proc_kpageflags_operations); |
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 27d534f4470d..9d8308905053 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
| @@ -97,8 +97,6 @@ struct vmcore { | |||
| 97 | 97 | ||
| 98 | #ifdef CONFIG_PROC_FS | 98 | #ifdef CONFIG_PROC_FS |
| 99 | 99 | ||
| 100 | extern struct proc_dir_entry *proc_root_kcore; | ||
| 101 | |||
| 102 | extern spinlock_t proc_subdir_lock; | 100 | extern spinlock_t proc_subdir_lock; |
| 103 | 101 | ||
| 104 | extern void proc_root_init(void); | 102 | extern void proc_root_init(void); |
| @@ -138,8 +136,6 @@ extern struct inode *proc_get_inode(struct super_block *, unsigned int, struct p | |||
| 138 | extern int proc_readdir(struct file *, void *, filldir_t); | 136 | extern int proc_readdir(struct file *, void *, filldir_t); |
| 139 | extern struct dentry *proc_lookup(struct inode *, struct dentry *, struct nameidata *); | 137 | extern struct dentry *proc_lookup(struct inode *, struct dentry *, struct nameidata *); |
| 140 | 138 | ||
| 141 | extern const struct file_operations proc_kcore_operations; | ||
| 142 | |||
| 143 | extern int pid_ns_prepare_proc(struct pid_namespace *ns); | 139 | extern int pid_ns_prepare_proc(struct pid_namespace *ns); |
| 144 | extern void pid_ns_release_proc(struct pid_namespace *ns); | 140 | extern void pid_ns_release_proc(struct pid_namespace *ns); |
| 145 | 141 | ||
