Re: [alsa-devel] [PATCH 04/28] proc: Supply PDE attribute setting accessor functions [RFC]
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
participants (1)
-
Bjorn Helgaas