Loading fs/proc/generic.c +25 −19 Original line number Diff line number Diff line Loading @@ -511,33 +511,39 @@ struct proc_dir_entry *proc_create_mount_point(const char *name) } EXPORT_SYMBOL(proc_create_mount_point); struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data) struct proc_dir_entry *proc_create_reg(const char *name, umode_t mode, struct proc_dir_entry **parent, void *data) { struct proc_dir_entry *pde; struct proc_dir_entry *p; if ((mode & S_IFMT) == 0) mode |= S_IFREG; if (!S_ISREG(mode)) { WARN_ON(1); /* use proc_mkdir() */ if ((mode & S_IALLUGO) == 0) mode |= S_IRUGO; if (WARN_ON_ONCE(!S_ISREG(mode))) return NULL; p = __proc_create(parent, name, mode, 1); if (p) { p->proc_iops = &proc_file_inode_operations; p->data = data; } return p; } struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data) { struct proc_dir_entry *p; BUG_ON(proc_fops == NULL); if ((mode & S_IALLUGO) == 0) mode |= S_IRUGO; pde = __proc_create(&parent, name, mode, 1); if (!pde) goto out; pde->proc_fops = proc_fops; pde->data = data; pde->proc_iops = &proc_file_inode_operations; return proc_register(parent, pde); out: p = proc_create_reg(name, mode, &parent, data); if (!p) return NULL; p->proc_fops = proc_fops; return proc_register(parent, p); } EXPORT_SYMBOL(proc_create_data); Loading fs/proc/internal.h +2 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,8 @@ extern bool proc_fill_cache(struct file *, struct dir_context *, const char *, i /* * generic.c */ struct proc_dir_entry *proc_create_reg(const char *name, umode_t mode, struct proc_dir_entry **parent, void *data); struct proc_dir_entry *proc_register(struct proc_dir_entry *dir, struct proc_dir_entry *dp); extern struct dentry *proc_lookup(struct inode *, struct dentry *, unsigned int); Loading Loading
fs/proc/generic.c +25 −19 Original line number Diff line number Diff line Loading @@ -511,33 +511,39 @@ struct proc_dir_entry *proc_create_mount_point(const char *name) } EXPORT_SYMBOL(proc_create_mount_point); struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data) struct proc_dir_entry *proc_create_reg(const char *name, umode_t mode, struct proc_dir_entry **parent, void *data) { struct proc_dir_entry *pde; struct proc_dir_entry *p; if ((mode & S_IFMT) == 0) mode |= S_IFREG; if (!S_ISREG(mode)) { WARN_ON(1); /* use proc_mkdir() */ if ((mode & S_IALLUGO) == 0) mode |= S_IRUGO; if (WARN_ON_ONCE(!S_ISREG(mode))) return NULL; p = __proc_create(parent, name, mode, 1); if (p) { p->proc_iops = &proc_file_inode_operations; p->data = data; } return p; } struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data) { struct proc_dir_entry *p; BUG_ON(proc_fops == NULL); if ((mode & S_IALLUGO) == 0) mode |= S_IRUGO; pde = __proc_create(&parent, name, mode, 1); if (!pde) goto out; pde->proc_fops = proc_fops; pde->data = data; pde->proc_iops = &proc_file_inode_operations; return proc_register(parent, pde); out: p = proc_create_reg(name, mode, &parent, data); if (!p) return NULL; p->proc_fops = proc_fops; return proc_register(parent, p); } EXPORT_SYMBOL(proc_create_data); Loading
fs/proc/internal.h +2 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,8 @@ extern bool proc_fill_cache(struct file *, struct dir_context *, const char *, i /* * generic.c */ struct proc_dir_entry *proc_create_reg(const char *name, umode_t mode, struct proc_dir_entry **parent, void *data); struct proc_dir_entry *proc_register(struct proc_dir_entry *dir, struct proc_dir_entry *dp); extern struct dentry *proc_lookup(struct inode *, struct dentry *, unsigned int); Loading