Message ID | 20130416182606.27773.55054.stgit@warthog.procyon.org.uk (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Em 16-04-2013 15:26, David Howells escreveu: > Supply accessor functions to set attributes in proc_dir_entry structs. > > The following are supplied: proc_set_size() and proc_set_user(). > > Signed-off-by: David Howells <dhowells@redhat.com> > cc: linuxppc-dev@lists.ozlabs.org > cc: linux-media@vger.kernel.org > cc: netdev@vger.kernel.org > cc: linux-wireless@vger.kernel.org > cc: linux-pci@vger.kernel.org > cc: netfilter-devel@vger.kernel.org > cc: alsa-devel@alsa-project.org > --- > > arch/powerpc/kernel/proc_powerpc.c | 2 +- > arch/powerpc/platforms/pseries/reconfig.c | 2 +- > drivers/media/pci/ttpci/av7110_ir.c | 2 +- Weird that av7110 IR uses /proc... Well, this is an old, obsolete driver for hardware that is not sold anymore for a long time... So, be it. Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com> > drivers/net/irda/vlsi_ir.c | 2 +- > drivers/net/wireless/airo.c | 34 +++++++++-------------------- > drivers/pci/proc.c | 2 +- > fs/proc/generic.c | 13 +++++++++++ > include/linux/proc_fs.h | 5 ++++ > kernel/configs.c | 2 +- > kernel/profile.c | 2 +- > net/netfilter/xt_recent.c | 3 +-- > sound/core/info.c | 2 +- > 12 files changed, 38 insertions(+), 33 deletions(-) > > diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c > index 41d8ee9..feb8580 100644 > --- a/arch/powerpc/kernel/proc_powerpc.c > +++ b/arch/powerpc/kernel/proc_powerpc.c > @@ -83,7 +83,7 @@ static int __init proc_ppc64_init(void) > &page_map_fops, vdso_data); > if (!pde) > return 1; > - pde->size = PAGE_SIZE; > + proc_set_size(pde, PAGE_SIZE); > > return 0; > } > diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c > index d6491bd..f93cdf5 100644 > --- a/arch/powerpc/platforms/pseries/reconfig.c > +++ b/arch/powerpc/platforms/pseries/reconfig.c > @@ -452,7 +452,7 @@ static int proc_ppc64_create_ofdt(void) > > ent = proc_create("powerpc/ofdt", S_IWUSR, NULL, &ofdt_fops); > if (ent) > - ent->size = 0; > + proc_set_size(ent, 0); > > return 0; > } > diff --git a/drivers/media/pci/ttpci/av7110_ir.c b/drivers/media/pci/ttpci/av7110_ir.c > index eb82286..0e763a7 100644 > --- a/drivers/media/pci/ttpci/av7110_ir.c > +++ b/drivers/media/pci/ttpci/av7110_ir.c > @@ -375,7 +375,7 @@ int av7110_ir_init(struct av7110 *av7110) > if (av_cnt == 1) { > e = proc_create("av7110_ir", S_IWUSR, NULL, &av7110_ir_proc_fops); > if (e) > - e->size = 4 + 256 * sizeof(u16); > + proc_set_size(e, 4 + 256 * sizeof(u16)); > } > > tasklet_init(&av7110->ir.ir_tasklet, av7110_emit_key, (unsigned long) &av7110->ir); > diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c > index e22cd4e..5f47584 100644 > --- a/drivers/net/irda/vlsi_ir.c > +++ b/drivers/net/irda/vlsi_ir.c > @@ -1678,7 +1678,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id) > IRDA_WARNING("%s: failed to create proc entry\n", > __func__); > } else { > - ent->size = 0; > + proc_set_size(ent, 0); > } > idev->proc_entry = ent; > } > diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c > index 66e398d..21d0233 100644 > --- a/drivers/net/wireless/airo.c > +++ b/drivers/net/wireless/airo.c > @@ -4507,73 +4507,63 @@ static int setup_proc_entry( struct net_device *dev, > airo_entry); > if (!apriv->proc_entry) > goto fail; > - apriv->proc_entry->uid = proc_kuid; > - apriv->proc_entry->gid = proc_kgid; > + proc_set_user(apriv->proc_entry, proc_kuid, proc_kgid); > > /* Setup the StatsDelta */ > entry = proc_create_data("StatsDelta", S_IRUGO & proc_perm, > apriv->proc_entry, &proc_statsdelta_ops, dev); > if (!entry) > goto fail_stats_delta; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Stats */ > entry = proc_create_data("Stats", S_IRUGO & proc_perm, > apriv->proc_entry, &proc_stats_ops, dev); > if (!entry) > goto fail_stats; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Status */ > entry = proc_create_data("Status", S_IRUGO & proc_perm, > apriv->proc_entry, &proc_status_ops, dev); > if (!entry) > goto fail_status; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Config */ > entry = proc_create_data("Config", proc_perm, > apriv->proc_entry, &proc_config_ops, dev); > if (!entry) > goto fail_config; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the SSID */ > entry = proc_create_data("SSID", proc_perm, > apriv->proc_entry, &proc_SSID_ops, dev); > if (!entry) > goto fail_ssid; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the APList */ > entry = proc_create_data("APList", proc_perm, > apriv->proc_entry, &proc_APList_ops, dev); > if (!entry) > goto fail_aplist; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the BSSList */ > entry = proc_create_data("BSSList", proc_perm, > apriv->proc_entry, &proc_BSSList_ops, dev); > if (!entry) > goto fail_bsslist; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the WepKey */ > entry = proc_create_data("WepKey", proc_perm, > apriv->proc_entry, &proc_wepkey_ops, dev); > if (!entry) > goto fail_wepkey; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > - > + proc_set_user(entry, proc_kuid, proc_kgid); > return 0; > > fail_wepkey: > @@ -5695,10 +5685,8 @@ static int __init airo_init_module( void ) > > airo_entry = proc_mkdir_mode("driver/aironet", airo_perm, NULL); > > - if (airo_entry) { > - airo_entry->uid = proc_kuid; > - airo_entry->gid = proc_kgid; > - } > + if (airo_entry) > + proc_set_user(airo_entry, proc_kuid, proc_kgid); > > for (i = 0; i < 4 && io[i] && irq[i]; i++) { > airo_print_info("", "Trying to configure ISA adapter at irq=%d " > diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c > index 12e4fb5..7cde7c1 100644 > --- a/drivers/pci/proc.c > +++ b/drivers/pci/proc.c > @@ -419,7 +419,7 @@ int pci_proc_attach_device(struct pci_dev *dev) > &proc_bus_pci_operations, dev); > if (!e) > return -ENOMEM; > - e->size = dev->cfg_size; > + proc_set_size(e, dev->cfg_size); > dev->procent = e; > > return 0; > diff --git a/fs/proc/generic.c b/fs/proc/generic.c > index 1c07cad..5f6f6c3 100644 > --- a/fs/proc/generic.c > +++ b/fs/proc/generic.c > @@ -498,6 +498,19 @@ out: > return NULL; > } > EXPORT_SYMBOL(proc_create_data); > + > +void proc_set_size(struct proc_dir_entry *de, loff_t size) > +{ > + de->size = size; > +} > +EXPORT_SYMBOL(proc_set_size); > + > +void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) > +{ > + de->uid = uid; > + de->gid = gid; > +} > +EXPORT_SYMBOL(proc_set_user); > > static void free_proc_entry(struct proc_dir_entry *de) > { > diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h > index 805edac..28a4d7e 100644 > --- a/include/linux/proc_fs.h > +++ b/include/linux/proc_fs.h > @@ -130,6 +130,9 @@ static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, > extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, > struct proc_dir_entry *parent); > > +extern void proc_set_size(struct proc_dir_entry *, loff_t); > +extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t); > + > extern struct file *proc_ns_fget(int fd); > extern bool proc_ns_inode(struct inode *inode); > > @@ -158,6 +161,8 @@ static inline struct proc_dir_entry *proc_mkdir(const char *name, > struct proc_dir_entry *parent) {return NULL;} > static inline struct proc_dir_entry *proc_mkdir_mode(const char *name, > umode_t mode, struct proc_dir_entry *parent) { return NULL; } > +static inline void proc_set_size(struct proc_dir_entry *de, loff_t size) {} > +static inline void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) {} > > struct tty_driver; > static inline void proc_tty_register_driver(struct tty_driver *driver) {}; > diff --git a/kernel/configs.c b/kernel/configs.c > index 42e8fa0..c18b1f1 100644 > --- a/kernel/configs.c > +++ b/kernel/configs.c > @@ -79,7 +79,7 @@ static int __init ikconfig_init(void) > if (!entry) > return -ENOMEM; > > - entry->size = kernel_config_data_size; > + proc_set_size(entry, kernel_config_data_size); > > return 0; > } > diff --git a/kernel/profile.c b/kernel/profile.c > index 524ce5e..0bf4007 100644 > --- a/kernel/profile.c > +++ b/kernel/profile.c > @@ -600,7 +600,7 @@ int __ref create_proc_profile(void) /* false positive from hotcpu_notifier */ > NULL, &proc_profile_operations); > if (!entry) > return 0; > - entry->size = (1+prof_len) * sizeof(atomic_t); > + proc_set_size(entry, (1 + prof_len) * sizeof(atomic_t)); > hotcpu_notifier(profile_cpu_callback, 0); > return 0; > } > diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c > index 3db2d38..1e657cf 100644 > --- a/net/netfilter/xt_recent.c > +++ b/net/netfilter/xt_recent.c > @@ -401,8 +401,7 @@ static int recent_mt_check(const struct xt_mtchk_param *par, > ret = -ENOMEM; > goto out; > } > - pde->uid = uid; > - pde->gid = gid; > + proc_set_user(pde, uid, gid); > #endif > spin_lock_bh(&recent_lock); > list_add_tail(&t->list, &recent_net->tables); > diff --git a/sound/core/info.c b/sound/core/info.c > index 3aa8864..c7f41c3 100644 > --- a/sound/core/info.c > +++ b/sound/core/info.c > @@ -970,7 +970,7 @@ int snd_info_register(struct snd_info_entry * entry) > mutex_unlock(&info_mutex); > return -ENOMEM; > } > - p->size = entry->size; > + proc_set_size(p, entry->size); > } > entry->p = p; > if (entry->parent) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-media" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Apr 16, 2013 at 12:26 PM, David Howells <dhowells@redhat.com> wrote: > Supply accessor functions to set attributes in proc_dir_entry structs. > > The following are supplied: proc_set_size() and proc_set_user(). > > Signed-off-by: David Howells <dhowells@redhat.com> > cc: linuxppc-dev@lists.ozlabs.org > cc: linux-media@vger.kernel.org > cc: netdev@vger.kernel.org > cc: linux-wireless@vger.kernel.org > cc: linux-pci@vger.kernel.org > cc: netfilter-devel@vger.kernel.org > cc: alsa-devel@alsa-project.org > --- > > arch/powerpc/kernel/proc_powerpc.c | 2 +- > arch/powerpc/platforms/pseries/reconfig.c | 2 +- > drivers/media/pci/ttpci/av7110_ir.c | 2 +- > drivers/net/irda/vlsi_ir.c | 2 +- > drivers/net/wireless/airo.c | 34 +++++++++-------------------- > drivers/pci/proc.c | 2 +- For the drivers/pci part: Acked-by: Bjorn Helgaas <bhelgaas@google.com> > fs/proc/generic.c | 13 +++++++++++ > include/linux/proc_fs.h | 5 ++++ > kernel/configs.c | 2 +- > kernel/profile.c | 2 +- > net/netfilter/xt_recent.c | 3 +-- > sound/core/info.c | 2 +- > 12 files changed, 38 insertions(+), 33 deletions(-) > > diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c > index 41d8ee9..feb8580 100644 > --- a/arch/powerpc/kernel/proc_powerpc.c > +++ b/arch/powerpc/kernel/proc_powerpc.c > @@ -83,7 +83,7 @@ static int __init proc_ppc64_init(void) > &page_map_fops, vdso_data); > if (!pde) > return 1; > - pde->size = PAGE_SIZE; > + proc_set_size(pde, PAGE_SIZE); > > return 0; > } > diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c > index d6491bd..f93cdf5 100644 > --- a/arch/powerpc/platforms/pseries/reconfig.c > +++ b/arch/powerpc/platforms/pseries/reconfig.c > @@ -452,7 +452,7 @@ static int proc_ppc64_create_ofdt(void) > > ent = proc_create("powerpc/ofdt", S_IWUSR, NULL, &ofdt_fops); > if (ent) > - ent->size = 0; > + proc_set_size(ent, 0); > > return 0; > } > diff --git a/drivers/media/pci/ttpci/av7110_ir.c b/drivers/media/pci/ttpci/av7110_ir.c > index eb82286..0e763a7 100644 > --- a/drivers/media/pci/ttpci/av7110_ir.c > +++ b/drivers/media/pci/ttpci/av7110_ir.c > @@ -375,7 +375,7 @@ int av7110_ir_init(struct av7110 *av7110) > if (av_cnt == 1) { > e = proc_create("av7110_ir", S_IWUSR, NULL, &av7110_ir_proc_fops); > if (e) > - e->size = 4 + 256 * sizeof(u16); > + proc_set_size(e, 4 + 256 * sizeof(u16)); > } > > tasklet_init(&av7110->ir.ir_tasklet, av7110_emit_key, (unsigned long) &av7110->ir); > diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c > index e22cd4e..5f47584 100644 > --- a/drivers/net/irda/vlsi_ir.c > +++ b/drivers/net/irda/vlsi_ir.c > @@ -1678,7 +1678,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id) > IRDA_WARNING("%s: failed to create proc entry\n", > __func__); > } else { > - ent->size = 0; > + proc_set_size(ent, 0); > } > idev->proc_entry = ent; > } > diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c > index 66e398d..21d0233 100644 > --- a/drivers/net/wireless/airo.c > +++ b/drivers/net/wireless/airo.c > @@ -4507,73 +4507,63 @@ static int setup_proc_entry( struct net_device *dev, > airo_entry); > if (!apriv->proc_entry) > goto fail; > - apriv->proc_entry->uid = proc_kuid; > - apriv->proc_entry->gid = proc_kgid; > + proc_set_user(apriv->proc_entry, proc_kuid, proc_kgid); > > /* Setup the StatsDelta */ > entry = proc_create_data("StatsDelta", S_IRUGO & proc_perm, > apriv->proc_entry, &proc_statsdelta_ops, dev); > if (!entry) > goto fail_stats_delta; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Stats */ > entry = proc_create_data("Stats", S_IRUGO & proc_perm, > apriv->proc_entry, &proc_stats_ops, dev); > if (!entry) > goto fail_stats; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Status */ > entry = proc_create_data("Status", S_IRUGO & proc_perm, > apriv->proc_entry, &proc_status_ops, dev); > if (!entry) > goto fail_status; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Config */ > entry = proc_create_data("Config", proc_perm, > apriv->proc_entry, &proc_config_ops, dev); > if (!entry) > goto fail_config; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the SSID */ > entry = proc_create_data("SSID", proc_perm, > apriv->proc_entry, &proc_SSID_ops, dev); > if (!entry) > goto fail_ssid; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the APList */ > entry = proc_create_data("APList", proc_perm, > apriv->proc_entry, &proc_APList_ops, dev); > if (!entry) > goto fail_aplist; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the BSSList */ > entry = proc_create_data("BSSList", proc_perm, > apriv->proc_entry, &proc_BSSList_ops, dev); > if (!entry) > goto fail_bsslist; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the WepKey */ > entry = proc_create_data("WepKey", proc_perm, > apriv->proc_entry, &proc_wepkey_ops, dev); > if (!entry) > goto fail_wepkey; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > - > + proc_set_user(entry, proc_kuid, proc_kgid); > return 0; > > fail_wepkey: > @@ -5695,10 +5685,8 @@ static int __init airo_init_module( void ) > > airo_entry = proc_mkdir_mode("driver/aironet", airo_perm, NULL); > > - if (airo_entry) { > - airo_entry->uid = proc_kuid; > - airo_entry->gid = proc_kgid; > - } > + if (airo_entry) > + proc_set_user(airo_entry, proc_kuid, proc_kgid); > > for (i = 0; i < 4 && io[i] && irq[i]; i++) { > airo_print_info("", "Trying to configure ISA adapter at irq=%d " > diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c > index 12e4fb5..7cde7c1 100644 > --- a/drivers/pci/proc.c > +++ b/drivers/pci/proc.c > @@ -419,7 +419,7 @@ int pci_proc_attach_device(struct pci_dev *dev) > &proc_bus_pci_operations, dev); > if (!e) > return -ENOMEM; > - e->size = dev->cfg_size; > + proc_set_size(e, dev->cfg_size); > dev->procent = e; > > return 0; > diff --git a/fs/proc/generic.c b/fs/proc/generic.c > index 1c07cad..5f6f6c3 100644 > --- a/fs/proc/generic.c > +++ b/fs/proc/generic.c > @@ -498,6 +498,19 @@ out: > return NULL; > } > EXPORT_SYMBOL(proc_create_data); > + > +void proc_set_size(struct proc_dir_entry *de, loff_t size) > +{ > + de->size = size; > +} > +EXPORT_SYMBOL(proc_set_size); > + > +void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) > +{ > + de->uid = uid; > + de->gid = gid; > +} > +EXPORT_SYMBOL(proc_set_user); > > static void free_proc_entry(struct proc_dir_entry *de) > { > diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h > index 805edac..28a4d7e 100644 > --- a/include/linux/proc_fs.h > +++ b/include/linux/proc_fs.h > @@ -130,6 +130,9 @@ static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, > extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, > struct proc_dir_entry *parent); > > +extern void proc_set_size(struct proc_dir_entry *, loff_t); > +extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t); > + > extern struct file *proc_ns_fget(int fd); > extern bool proc_ns_inode(struct inode *inode); > > @@ -158,6 +161,8 @@ static inline struct proc_dir_entry *proc_mkdir(const char *name, > struct proc_dir_entry *parent) {return NULL;} > static inline struct proc_dir_entry *proc_mkdir_mode(const char *name, > umode_t mode, struct proc_dir_entry *parent) { return NULL; } > +static inline void proc_set_size(struct proc_dir_entry *de, loff_t size) {} > +static inline void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) {} > > struct tty_driver; > static inline void proc_tty_register_driver(struct tty_driver *driver) {}; > diff --git a/kernel/configs.c b/kernel/configs.c > index 42e8fa0..c18b1f1 100644 > --- a/kernel/configs.c > +++ b/kernel/configs.c > @@ -79,7 +79,7 @@ static int __init ikconfig_init(void) > if (!entry) > return -ENOMEM; > > - entry->size = kernel_config_data_size; > + proc_set_size(entry, kernel_config_data_size); > > return 0; > } > diff --git a/kernel/profile.c b/kernel/profile.c > index 524ce5e..0bf4007 100644 > --- a/kernel/profile.c > +++ b/kernel/profile.c > @@ -600,7 +600,7 @@ int __ref create_proc_profile(void) /* false positive from hotcpu_notifier */ > NULL, &proc_profile_operations); > if (!entry) > return 0; > - entry->size = (1+prof_len) * sizeof(atomic_t); > + proc_set_size(entry, (1 + prof_len) * sizeof(atomic_t)); > hotcpu_notifier(profile_cpu_callback, 0); > return 0; > } > diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c > index 3db2d38..1e657cf 100644 > --- a/net/netfilter/xt_recent.c > +++ b/net/netfilter/xt_recent.c > @@ -401,8 +401,7 @@ static int recent_mt_check(const struct xt_mtchk_param *par, > ret = -ENOMEM; > goto out; > } > - pde->uid = uid; > - pde->gid = gid; > + proc_set_user(pde, uid, gid); > #endif > spin_lock_bh(&recent_lock); > list_add_tail(&t->list, &recent_net->tables); > diff --git a/sound/core/info.c b/sound/core/info.c > index 3aa8864..c7f41c3 100644 > --- a/sound/core/info.c > +++ b/sound/core/info.c > @@ -970,7 +970,7 @@ int snd_info_register(struct snd_info_entry * entry) > mutex_unlock(&info_mutex); > return -ENOMEM; > } > - p->size = entry->size; > + proc_set_size(p, entry->size); > } > entry->p = p; > if (entry->parent) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 04/16/2013 11:56 PM, David Howells wrote: > Supply accessor functions to set attributes in proc_dir_entry structs. > > The following are supplied: proc_set_size() and proc_set_user(). > > Signed-off-by: David Howells<dhowells@redhat.com> > cc: linuxppc-dev@lists.ozlabs.org > cc: linux-media@vger.kernel.org > cc: netdev@vger.kernel.org > cc: linux-wireless@vger.kernel.org > cc: linux-pci@vger.kernel.org > cc: netfilter-devel@vger.kernel.org > cc: alsa-devel@alsa-project.org > --- > > arch/powerpc/kernel/proc_powerpc.c | 2 +- > arch/powerpc/platforms/pseries/reconfig.c | 2 +- arch/powerpc side changes looks good. -Vasant > drivers/media/pci/ttpci/av7110_ir.c | 2 +- > drivers/net/irda/vlsi_ir.c | 2 +- > drivers/net/wireless/airo.c | 34 +++++++++-------------------- > drivers/pci/proc.c | 2 +- > fs/proc/generic.c | 13 +++++++++++ > include/linux/proc_fs.h | 5 ++++ > kernel/configs.c | 2 +- > kernel/profile.c | 2 +- > net/netfilter/xt_recent.c | 3 +-- > sound/core/info.c | 2 +- > 12 files changed, 38 insertions(+), 33 deletions(-) > > diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c > index 41d8ee9..feb8580 100644 > --- a/arch/powerpc/kernel/proc_powerpc.c > +++ b/arch/powerpc/kernel/proc_powerpc.c > @@ -83,7 +83,7 @@ static int __init proc_ppc64_init(void) > &page_map_fops, vdso_data); > if (!pde) > return 1; > - pde->size = PAGE_SIZE; > + proc_set_size(pde, PAGE_SIZE); > > return 0; > } > diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c > index d6491bd..f93cdf5 100644 > --- a/arch/powerpc/platforms/pseries/reconfig.c > +++ b/arch/powerpc/platforms/pseries/reconfig.c > @@ -452,7 +452,7 @@ static int proc_ppc64_create_ofdt(void) > > ent = proc_create("powerpc/ofdt", S_IWUSR, NULL,&ofdt_fops); > if (ent) > - ent->size = 0; > + proc_set_size(ent, 0); > > return 0; > } > diff --git a/drivers/media/pci/ttpci/av7110_ir.c b/drivers/media/pci/ttpci/av7110_ir.c > index eb82286..0e763a7 100644 > --- a/drivers/media/pci/ttpci/av7110_ir.c > +++ b/drivers/media/pci/ttpci/av7110_ir.c > @@ -375,7 +375,7 @@ int av7110_ir_init(struct av7110 *av7110) > if (av_cnt == 1) { > e = proc_create("av7110_ir", S_IWUSR, NULL,&av7110_ir_proc_fops); > if (e) > - e->size = 4 + 256 * sizeof(u16); > + proc_set_size(e, 4 + 256 * sizeof(u16)); > } > > tasklet_init(&av7110->ir.ir_tasklet, av7110_emit_key, (unsigned long)&av7110->ir); > diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c > index e22cd4e..5f47584 100644 > --- a/drivers/net/irda/vlsi_ir.c > +++ b/drivers/net/irda/vlsi_ir.c > @@ -1678,7 +1678,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id) > IRDA_WARNING("%s: failed to create proc entry\n", > __func__); > } else { > - ent->size = 0; > + proc_set_size(ent, 0); > } > idev->proc_entry = ent; > } > diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c > index 66e398d..21d0233 100644 > --- a/drivers/net/wireless/airo.c > +++ b/drivers/net/wireless/airo.c > @@ -4507,73 +4507,63 @@ static int setup_proc_entry( struct net_device *dev, > airo_entry); > if (!apriv->proc_entry) > goto fail; > - apriv->proc_entry->uid = proc_kuid; > - apriv->proc_entry->gid = proc_kgid; > + proc_set_user(apriv->proc_entry, proc_kuid, proc_kgid); > > /* Setup the StatsDelta */ > entry = proc_create_data("StatsDelta", S_IRUGO& proc_perm, > apriv->proc_entry,&proc_statsdelta_ops, dev); > if (!entry) > goto fail_stats_delta; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Stats */ > entry = proc_create_data("Stats", S_IRUGO& proc_perm, > apriv->proc_entry,&proc_stats_ops, dev); > if (!entry) > goto fail_stats; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Status */ > entry = proc_create_data("Status", S_IRUGO& proc_perm, > apriv->proc_entry,&proc_status_ops, dev); > if (!entry) > goto fail_status; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the Config */ > entry = proc_create_data("Config", proc_perm, > apriv->proc_entry,&proc_config_ops, dev); > if (!entry) > goto fail_config; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the SSID */ > entry = proc_create_data("SSID", proc_perm, > apriv->proc_entry,&proc_SSID_ops, dev); > if (!entry) > goto fail_ssid; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the APList */ > entry = proc_create_data("APList", proc_perm, > apriv->proc_entry,&proc_APList_ops, dev); > if (!entry) > goto fail_aplist; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the BSSList */ > entry = proc_create_data("BSSList", proc_perm, > apriv->proc_entry,&proc_BSSList_ops, dev); > if (!entry) > goto fail_bsslist; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > + proc_set_user(entry, proc_kuid, proc_kgid); > > /* Setup the WepKey */ > entry = proc_create_data("WepKey", proc_perm, > apriv->proc_entry,&proc_wepkey_ops, dev); > if (!entry) > goto fail_wepkey; > - entry->uid = proc_kuid; > - entry->gid = proc_kgid; > - > + proc_set_user(entry, proc_kuid, proc_kgid); > return 0; > > fail_wepkey: > @@ -5695,10 +5685,8 @@ static int __init airo_init_module( void ) > > airo_entry = proc_mkdir_mode("driver/aironet", airo_perm, NULL); > > - if (airo_entry) { > - airo_entry->uid = proc_kuid; > - airo_entry->gid = proc_kgid; > - } > + if (airo_entry) > + proc_set_user(airo_entry, proc_kuid, proc_kgid); > > for (i = 0; i< 4&& io[i]&& irq[i]; i++) { > airo_print_info("", "Trying to configure ISA adapter at irq=%d " > diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c > index 12e4fb5..7cde7c1 100644 > --- a/drivers/pci/proc.c > +++ b/drivers/pci/proc.c > @@ -419,7 +419,7 @@ int pci_proc_attach_device(struct pci_dev *dev) > &proc_bus_pci_operations, dev); > if (!e) > return -ENOMEM; > - e->size = dev->cfg_size; > + proc_set_size(e, dev->cfg_size); > dev->procent = e; > > return 0; > diff --git a/fs/proc/generic.c b/fs/proc/generic.c > index 1c07cad..5f6f6c3 100644 > --- a/fs/proc/generic.c > +++ b/fs/proc/generic.c > @@ -498,6 +498,19 @@ out: > return NULL; > } > EXPORT_SYMBOL(proc_create_data); > + > +void proc_set_size(struct proc_dir_entry *de, loff_t size) > +{ > + de->size = size; > +} > +EXPORT_SYMBOL(proc_set_size); > + > +void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) > +{ > + de->uid = uid; > + de->gid = gid; > +} > +EXPORT_SYMBOL(proc_set_user); > > static void free_proc_entry(struct proc_dir_entry *de) > { > diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h > index 805edac..28a4d7e 100644 > --- a/include/linux/proc_fs.h > +++ b/include/linux/proc_fs.h > @@ -130,6 +130,9 @@ static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, > extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, > struct proc_dir_entry *parent); > > +extern void proc_set_size(struct proc_dir_entry *, loff_t); > +extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t); > + > extern struct file *proc_ns_fget(int fd); > extern bool proc_ns_inode(struct inode *inode); > > @@ -158,6 +161,8 @@ static inline struct proc_dir_entry *proc_mkdir(const char *name, > struct proc_dir_entry *parent) {return NULL;} > static inline struct proc_dir_entry *proc_mkdir_mode(const char *name, > umode_t mode, struct proc_dir_entry *parent) { return NULL; } > +static inline void proc_set_size(struct proc_dir_entry *de, loff_t size) {} > +static inline void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) {} > > struct tty_driver; > static inline void proc_tty_register_driver(struct tty_driver *driver) {}; > diff --git a/kernel/configs.c b/kernel/configs.c > index 42e8fa0..c18b1f1 100644 > --- a/kernel/configs.c > +++ b/kernel/configs.c > @@ -79,7 +79,7 @@ static int __init ikconfig_init(void) > if (!entry) > return -ENOMEM; > > - entry->size = kernel_config_data_size; > + proc_set_size(entry, kernel_config_data_size); > > return 0; > } > diff --git a/kernel/profile.c b/kernel/profile.c > index 524ce5e..0bf4007 100644 > --- a/kernel/profile.c > +++ b/kernel/profile.c > @@ -600,7 +600,7 @@ int __ref create_proc_profile(void) /* false positive from hotcpu_notifier */ > NULL,&proc_profile_operations); > if (!entry) > return 0; > - entry->size = (1+prof_len) * sizeof(atomic_t); > + proc_set_size(entry, (1 + prof_len) * sizeof(atomic_t)); > hotcpu_notifier(profile_cpu_callback, 0); > return 0; > } > diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c > index 3db2d38..1e657cf 100644 > --- a/net/netfilter/xt_recent.c > +++ b/net/netfilter/xt_recent.c > @@ -401,8 +401,7 @@ static int recent_mt_check(const struct xt_mtchk_param *par, > ret = -ENOMEM; > goto out; > } > - pde->uid = uid; > - pde->gid = gid; > + proc_set_user(pde, uid, gid); > #endif > spin_lock_bh(&recent_lock); > list_add_tail(&t->list,&recent_net->tables); > diff --git a/sound/core/info.c b/sound/core/info.c > index 3aa8864..c7f41c3 100644 > --- a/sound/core/info.c > +++ b/sound/core/info.c > @@ -970,7 +970,7 @@ int snd_info_register(struct snd_info_entry * entry) > mutex_unlock(&info_mutex); > return -ENOMEM; > } > - p->size = entry->size; > + proc_set_size(p, entry->size); > } > entry->p = p; > if (entry->parent) > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c index 41d8ee9..feb8580 100644 --- a/arch/powerpc/kernel/proc_powerpc.c +++ b/arch/powerpc/kernel/proc_powerpc.c @@ -83,7 +83,7 @@ static int __init proc_ppc64_init(void) &page_map_fops, vdso_data); if (!pde) return 1; - pde->size = PAGE_SIZE; + proc_set_size(pde, PAGE_SIZE); return 0; } diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c index d6491bd..f93cdf5 100644 --- a/arch/powerpc/platforms/pseries/reconfig.c +++ b/arch/powerpc/platforms/pseries/reconfig.c @@ -452,7 +452,7 @@ static int proc_ppc64_create_ofdt(void) ent = proc_create("powerpc/ofdt", S_IWUSR, NULL, &ofdt_fops); if (ent) - ent->size = 0; + proc_set_size(ent, 0); return 0; } diff --git a/drivers/media/pci/ttpci/av7110_ir.c b/drivers/media/pci/ttpci/av7110_ir.c index eb82286..0e763a7 100644 --- a/drivers/media/pci/ttpci/av7110_ir.c +++ b/drivers/media/pci/ttpci/av7110_ir.c @@ -375,7 +375,7 @@ int av7110_ir_init(struct av7110 *av7110) if (av_cnt == 1) { e = proc_create("av7110_ir", S_IWUSR, NULL, &av7110_ir_proc_fops); if (e) - e->size = 4 + 256 * sizeof(u16); + proc_set_size(e, 4 + 256 * sizeof(u16)); } tasklet_init(&av7110->ir.ir_tasklet, av7110_emit_key, (unsigned long) &av7110->ir); diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c index e22cd4e..5f47584 100644 --- a/drivers/net/irda/vlsi_ir.c +++ b/drivers/net/irda/vlsi_ir.c @@ -1678,7 +1678,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id) IRDA_WARNING("%s: failed to create proc entry\n", __func__); } else { - ent->size = 0; + proc_set_size(ent, 0); } idev->proc_entry = ent; } diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index 66e398d..21d0233 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c @@ -4507,73 +4507,63 @@ static int setup_proc_entry( struct net_device *dev, airo_entry); if (!apriv->proc_entry) goto fail; - apriv->proc_entry->uid = proc_kuid; - apriv->proc_entry->gid = proc_kgid; + proc_set_user(apriv->proc_entry, proc_kuid, proc_kgid); /* Setup the StatsDelta */ entry = proc_create_data("StatsDelta", S_IRUGO & proc_perm, apriv->proc_entry, &proc_statsdelta_ops, dev); if (!entry) goto fail_stats_delta; - entry->uid = proc_kuid; - entry->gid = proc_kgid; + proc_set_user(entry, proc_kuid, proc_kgid); /* Setup the Stats */ entry = proc_create_data("Stats", S_IRUGO & proc_perm, apriv->proc_entry, &proc_stats_ops, dev); if (!entry) goto fail_stats; - entry->uid = proc_kuid; - entry->gid = proc_kgid; + proc_set_user(entry, proc_kuid, proc_kgid); /* Setup the Status */ entry = proc_create_data("Status", S_IRUGO & proc_perm, apriv->proc_entry, &proc_status_ops, dev); if (!entry) goto fail_status; - entry->uid = proc_kuid; - entry->gid = proc_kgid; + proc_set_user(entry, proc_kuid, proc_kgid); /* Setup the Config */ entry = proc_create_data("Config", proc_perm, apriv->proc_entry, &proc_config_ops, dev); if (!entry) goto fail_config; - entry->uid = proc_kuid; - entry->gid = proc_kgid; + proc_set_user(entry, proc_kuid, proc_kgid); /* Setup the SSID */ entry = proc_create_data("SSID", proc_perm, apriv->proc_entry, &proc_SSID_ops, dev); if (!entry) goto fail_ssid; - entry->uid = proc_kuid; - entry->gid = proc_kgid; + proc_set_user(entry, proc_kuid, proc_kgid); /* Setup the APList */ entry = proc_create_data("APList", proc_perm, apriv->proc_entry, &proc_APList_ops, dev); if (!entry) goto fail_aplist; - entry->uid = proc_kuid; - entry->gid = proc_kgid; + proc_set_user(entry, proc_kuid, proc_kgid); /* Setup the BSSList */ entry = proc_create_data("BSSList", proc_perm, apriv->proc_entry, &proc_BSSList_ops, dev); if (!entry) goto fail_bsslist; - entry->uid = proc_kuid; - entry->gid = proc_kgid; + proc_set_user(entry, proc_kuid, proc_kgid); /* Setup the WepKey */ entry = proc_create_data("WepKey", proc_perm, apriv->proc_entry, &proc_wepkey_ops, dev); if (!entry) goto fail_wepkey; - entry->uid = proc_kuid; - entry->gid = proc_kgid; - + proc_set_user(entry, proc_kuid, proc_kgid); return 0; fail_wepkey: @@ -5695,10 +5685,8 @@ static int __init airo_init_module( void ) airo_entry = proc_mkdir_mode("driver/aironet", airo_perm, NULL); - if (airo_entry) { - airo_entry->uid = proc_kuid; - airo_entry->gid = proc_kgid; - } + if (airo_entry) + proc_set_user(airo_entry, proc_kuid, proc_kgid); for (i = 0; i < 4 && io[i] && irq[i]; i++) { airo_print_info("", "Trying to configure ISA adapter at irq=%d " diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c index 12e4fb5..7cde7c1 100644 --- a/drivers/pci/proc.c +++ b/drivers/pci/proc.c @@ -419,7 +419,7 @@ int pci_proc_attach_device(struct pci_dev *dev) &proc_bus_pci_operations, dev); if (!e) return -ENOMEM; - e->size = dev->cfg_size; + proc_set_size(e, dev->cfg_size); dev->procent = e; return 0; diff --git a/fs/proc/generic.c b/fs/proc/generic.c index 1c07cad..5f6f6c3 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c @@ -498,6 +498,19 @@ out: return NULL; } EXPORT_SYMBOL(proc_create_data); + +void proc_set_size(struct proc_dir_entry *de, loff_t size) +{ + de->size = size; +} +EXPORT_SYMBOL(proc_set_size); + +void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) +{ + de->uid = uid; + de->gid = gid; +} +EXPORT_SYMBOL(proc_set_user); static void free_proc_entry(struct proc_dir_entry *de) { diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 805edac..28a4d7e 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h @@ -130,6 +130,9 @@ static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, struct proc_dir_entry *parent); +extern void proc_set_size(struct proc_dir_entry *, loff_t); +extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t); + extern struct file *proc_ns_fget(int fd); extern bool proc_ns_inode(struct inode *inode); @@ -158,6 +161,8 @@ static inline struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent) {return NULL;} static inline struct proc_dir_entry *proc_mkdir_mode(const char *name, umode_t mode, struct proc_dir_entry *parent) { return NULL; } +static inline void proc_set_size(struct proc_dir_entry *de, loff_t size) {} +static inline void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) {} struct tty_driver; static inline void proc_tty_register_driver(struct tty_driver *driver) {}; diff --git a/kernel/configs.c b/kernel/configs.c index 42e8fa0..c18b1f1 100644 --- a/kernel/configs.c +++ b/kernel/configs.c @@ -79,7 +79,7 @@ static int __init ikconfig_init(void) if (!entry) return -ENOMEM; - entry->size = kernel_config_data_size; + proc_set_size(entry, kernel_config_data_size); return 0; } diff --git a/kernel/profile.c b/kernel/profile.c index 524ce5e..0bf4007 100644 --- a/kernel/profile.c +++ b/kernel/profile.c @@ -600,7 +600,7 @@ int __ref create_proc_profile(void) /* false positive from hotcpu_notifier */ NULL, &proc_profile_operations); if (!entry) return 0; - entry->size = (1+prof_len) * sizeof(atomic_t); + proc_set_size(entry, (1 + prof_len) * sizeof(atomic_t)); hotcpu_notifier(profile_cpu_callback, 0); return 0; } diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c index 3db2d38..1e657cf 100644 --- a/net/netfilter/xt_recent.c +++ b/net/netfilter/xt_recent.c @@ -401,8 +401,7 @@ static int recent_mt_check(const struct xt_mtchk_param *par, ret = -ENOMEM; goto out; } - pde->uid = uid; - pde->gid = gid; + proc_set_user(pde, uid, gid); #endif spin_lock_bh(&recent_lock); list_add_tail(&t->list, &recent_net->tables); diff --git a/sound/core/info.c b/sound/core/info.c index 3aa8864..c7f41c3 100644 --- a/sound/core/info.c +++ b/sound/core/info.c @@ -970,7 +970,7 @@ int snd_info_register(struct snd_info_entry * entry) mutex_unlock(&info_mutex); return -ENOMEM; } - p->size = entry->size; + proc_set_size(p, entry->size); } entry->p = p; if (entry->parent)
Supply accessor functions to set attributes in proc_dir_entry structs. The following are supplied: proc_set_size() and proc_set_user(). Signed-off-by: David Howells <dhowells@redhat.com> cc: linuxppc-dev@lists.ozlabs.org cc: linux-media@vger.kernel.org cc: netdev@vger.kernel.org cc: linux-wireless@vger.kernel.org cc: linux-pci@vger.kernel.org cc: netfilter-devel@vger.kernel.org cc: alsa-devel@alsa-project.org --- arch/powerpc/kernel/proc_powerpc.c | 2 +- arch/powerpc/platforms/pseries/reconfig.c | 2 +- drivers/media/pci/ttpci/av7110_ir.c | 2 +- drivers/net/irda/vlsi_ir.c | 2 +- drivers/net/wireless/airo.c | 34 +++++++++-------------------- drivers/pci/proc.c | 2 +- fs/proc/generic.c | 13 +++++++++++ include/linux/proc_fs.h | 5 ++++ kernel/configs.c | 2 +- kernel/profile.c | 2 +- net/netfilter/xt_recent.c | 3 +-- sound/core/info.c | 2 +- 12 files changed, 38 insertions(+), 33 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html