From: Grant Likely <grant.likely@secretlab.ca>
To: David Howells <dhowells@redhat.com>, linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org, linux-pci@vger.kernel.org,
devicetree-discuss@lists.ozlabs.org, linux-acpi@vger.kernel.org,
netfilter-devel@vger.kernel.org, viro@zeniv.linux.org.uk,
netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org,
openipmi-developer@lists.sourceforge.net
Subject: Re: [PATCH 26/28] proc: Supply a function to remove a proc entry by PDE [RFC]
Date: Wed, 17 Apr 2013 16:03:01 +0100 [thread overview]
Message-ID: <20130417150301.DCA443E2B73@localhost> (raw)
In-Reply-To: <20130416182734.27773.47452.stgit@warthog.procyon.org.uk>
On Tue, 16 Apr 2013 19:27:34 +0100, David Howells <dhowells@redhat.com> wrote:
> Supply a function (proc_remove()) to remove a proc entry (and any subtree
> rooted there) by proc_dir_entry pointer rather than by name and (optionally)
> root dir entry pointer. This allows us to eliminate all remaining pde->name
> accesses outside of procfs.
>
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: linux-acpi@vger.kernel.org
> cc: openipmi-developer@lists.sourceforge.net
> cc: devicetree-discuss@lists.ozlabs.org
> cc: linux-pci@vger.kernel.org
> cc: netdev@vger.kernel.org
> cc: netfilter-devel@vger.kernel.org
> cc: alsa-devel@alsa-project.org
Looks okay to me. For the OF portion:
Acked-by: Grant Likely <grant.likely@linaro.or>
> ---
>
> drivers/acpi/sbs.c | 21 ++++-----------------
> drivers/char/ipmi/ipmi_msghandler.c | 2 +-
> drivers/misc/sgi-gru/gruprocfs.c | 2 +-
> drivers/of/base.c | 11 +----------
> drivers/pci/proc.c | 12 +++---------
> fs/proc/generic.c | 7 +++++++
> fs/proc/vmcore.c | 2 +-
> include/linux/proc_fs.h | 2 ++
> kernel/irq/proc.c | 6 +-----
> net/8021q/vlanproc.c | 9 ++-------
> net/core/pktgen.c | 6 ++----
> net/ipv4/netfilter/ipt_CLUSTERIP.c | 4 ++--
> net/ipv6/proc.c | 3 +--
> net/netfilter/xt_hashlimit.c | 4 ++--
> sound/core/info.c | 19 +++++--------------
> 15 files changed, 35 insertions(+), 75 deletions(-)
>
> diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
> index a296e08..b6241ee 100644
> --- a/drivers/acpi/sbs.c
> +++ b/drivers/acpi/sbs.c
> @@ -521,19 +521,6 @@ acpi_sbs_add_fs(struct proc_dir_entry **dir,
> return 0;
> }
>
> -static void
> -acpi_sbs_remove_fs(struct proc_dir_entry **dir,
> - struct proc_dir_entry *parent_dir)
> -{
> - if (*dir) {
> - remove_proc_entry(ACPI_SBS_FILE_INFO, *dir);
> - remove_proc_entry(ACPI_SBS_FILE_STATE, *dir);
> - remove_proc_entry(ACPI_SBS_FILE_ALARM, *dir);
> - remove_proc_entry((*dir)->name, parent_dir);
> - *dir = NULL;
> - }
> -}
> -
> /* Smart Battery Interface */
> static struct proc_dir_entry *acpi_battery_dir = NULL;
>
> @@ -836,8 +823,8 @@ static void acpi_battery_remove(struct acpi_sbs *sbs, int id)
> power_supply_unregister(&battery->bat);
> }
> #ifdef CONFIG_ACPI_PROCFS_POWER
> - if (battery->proc_entry)
> - acpi_sbs_remove_fs(&battery->proc_entry, acpi_battery_dir);
> + proc_remove(battery->proc_entry);
> + battery->proc_entry = NULL;
> #endif
> }
>
> @@ -873,8 +860,8 @@ static void acpi_charger_remove(struct acpi_sbs *sbs)
> if (sbs->charger.dev)
> power_supply_unregister(&sbs->charger);
> #ifdef CONFIG_ACPI_PROCFS_POWER
> - if (sbs->charger_entry)
> - acpi_sbs_remove_fs(&sbs->charger_entry, acpi_ac_dir);
> + proc_remove(sbs->charger_entry);
> + sbs->charger_entry = NULL;
> #endif
> }
>
> diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
> index 1420bbb..4d439d2 100644
> --- a/drivers/char/ipmi/ipmi_msghandler.c
> +++ b/drivers/char/ipmi/ipmi_msghandler.c
> @@ -4541,7 +4541,7 @@ static void __exit cleanup_ipmi(void)
> del_timer_sync(&ipmi_timer);
>
> #ifdef CONFIG_PROC_FS
> - remove_proc_entry(proc_ipmi_root->name, NULL);
> + proc_remove(proc_ipmi_root);
> #endif /* CONFIG_PROC_FS */
>
> driver_unregister(&ipmidriver.driver);
> diff --git a/drivers/misc/sgi-gru/gruprocfs.c b/drivers/misc/sgi-gru/gruprocfs.c
> index 950dbe9..797d796 100644
> --- a/drivers/misc/sgi-gru/gruprocfs.c
> +++ b/drivers/misc/sgi-gru/gruprocfs.c
> @@ -355,7 +355,7 @@ static void delete_proc_files(void)
> for (p = proc_files; p->name; p++)
> if (p->entry)
> remove_proc_entry(p->name, proc_gru);
> - remove_proc_entry("gru", proc_gru->parent);
> + proc_remove(proc_gru);
> }
> }
>
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index 321d3ef..9c70436 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -1452,16 +1452,7 @@ int of_attach_node(struct device_node *np)
> #ifdef CONFIG_PROC_DEVICETREE
> static void of_remove_proc_dt_entry(struct device_node *dn)
> {
> - struct device_node *parent = dn->parent;
> - struct property *prop = dn->properties;
> -
> - while (prop) {
> - remove_proc_entry(prop->name, dn->pde);
> - prop = prop->next;
> - }
> -
> - if (dn->pde)
> - remove_proc_entry(dn->pde->name, parent->pde);
> + proc_remove(dn->pde);
> }
> #else
> static void of_remove_proc_dt_entry(struct device_node *dn)
> diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
> index 7cde7c1..0812608 100644
> --- a/drivers/pci/proc.c
> +++ b/drivers/pci/proc.c
> @@ -427,20 +427,14 @@ int pci_proc_attach_device(struct pci_dev *dev)
>
> int pci_proc_detach_device(struct pci_dev *dev)
> {
> - struct proc_dir_entry *e;
> -
> - if ((e = dev->procent)) {
> - remove_proc_entry(e->name, dev->bus->procdir);
> - dev->procent = NULL;
> - }
> + proc_remove(dev->procent);
> + dev->procent = NULL;
> return 0;
> }
>
> int pci_proc_detach_bus(struct pci_bus* bus)
> {
> - struct proc_dir_entry *de = bus->procdir;
> - if (de)
> - remove_proc_entry(de->name, proc_bus_pci_dir);
> + proc_remove(bus->procdir);
> return 0;
> }
>
> diff --git a/fs/proc/generic.c b/fs/proc/generic.c
> index 2c6d6be..4b48033 100644
> --- a/fs/proc/generic.c
> +++ b/fs/proc/generic.c
> @@ -630,3 +630,10 @@ const char *get_proc_name(const struct proc_dir_entry *de)
> return de->name;
> }
> EXPORT_SYMBOL_GPL(get_proc_name);
> +
> +void proc_remove(struct proc_dir_entry *de)
> +{
> + if (de)
> + remove_proc_subtree(de->name, de->parent);
> +}
> +EXPORT_SYMBOL(proc_remove);
> diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
> index 38edddc..17f7e08 100644
> --- a/fs/proc/vmcore.c
> +++ b/fs/proc/vmcore.c
> @@ -699,7 +699,7 @@ void vmcore_cleanup(void)
> struct list_head *pos, *next;
>
> if (proc_vmcore) {
> - remove_proc_entry(proc_vmcore->name, proc_vmcore->parent);
> + proc_remove(proc_vmcore);
> proc_vmcore = NULL;
> }
>
> diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
> index 7abc72a..b8949b1 100644
> --- a/include/linux/proc_fs.h
> +++ b/include/linux/proc_fs.h
> @@ -67,6 +67,7 @@ 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);
> +extern void proc_remove(struct proc_dir_entry *);
> extern void remove_proc_entry(const char *name, struct proc_dir_entry *parent);
> extern int remove_proc_subtree(const char *name, struct proc_dir_entry *parent);
>
> @@ -103,6 +104,7 @@ static inline struct proc_dir_entry *proc_create_data(const char *name,
> {
> return NULL;
> }
> +static inline void proc_remove(struct proc_dir_entry *de) {}
> #define remove_proc_entry(name, parent) do {} while (0)
> #define remove_proc_subtree(name, parent) do {} while (0)
>
> diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c
> index d59ae37..19ed5c4 100644
> --- a/kernel/irq/proc.c
> +++ b/kernel/irq/proc.c
> @@ -366,11 +366,7 @@ void unregister_irq_proc(unsigned int irq, struct irq_desc *desc)
>
> void unregister_handler_proc(unsigned int irq, struct irqaction *action)
> {
> - if (action->dir) {
> - struct irq_desc *desc = irq_to_desc(irq);
> -
> - remove_proc_entry(action->dir->name, desc->dir);
> - }
> + proc_remove(action->dir);
> }
>
> static void register_default_affinity_proc(void)
> diff --git a/net/8021q/vlanproc.c b/net/8021q/vlanproc.c
> index 959ddbb..1d0e8921 100644
> --- a/net/8021q/vlanproc.c
> +++ b/net/8021q/vlanproc.c
> @@ -184,14 +184,9 @@ int vlan_proc_add_dev(struct net_device *vlandev)
> */
> int vlan_proc_rem_dev(struct net_device *vlandev)
> {
> - struct vlan_net *vn = net_generic(dev_net(vlandev), vlan_net_id);
> -
> /** NOTE: This will consume the memory pointed to by dent, it seems. */
> - if (vlan_dev_priv(vlandev)->dent) {
> - remove_proc_entry(vlan_dev_priv(vlandev)->dent->name,
> - vn->proc_vlan_dir);
> - vlan_dev_priv(vlandev)->dent = NULL;
> - }
> + proc_remove(vlan_dev_priv(vlandev)->dent);
> + vlan_dev_priv(vlandev)->dent = NULL;
> return 0;
> }
>
> diff --git a/net/core/pktgen.c b/net/core/pktgen.c
> index f6af4fe..6c41e97 100644
> --- a/net/core/pktgen.c
> +++ b/net/core/pktgen.c
> @@ -1904,7 +1904,7 @@ static void pktgen_change_name(const struct pktgen_net *pn, struct net_device *d
> if (pkt_dev->odev != dev)
> continue;
>
> - remove_proc_entry(pkt_dev->entry->name, pn->proc_dir);
> + proc_remove(pkt_dev->entry);
>
> pkt_dev->entry = proc_create_data(dev->name, 0600,
> pn->proc_dir,
> @@ -3576,8 +3576,6 @@ static void _rem_dev_from_if_list(struct pktgen_thread *t,
> static int pktgen_remove_device(struct pktgen_thread *t,
> struct pktgen_dev *pkt_dev)
> {
> - struct pktgen_net *pn = t->net;
> -
> pr_debug("remove_device pkt_dev=%p\n", pkt_dev);
>
> if (pkt_dev->running) {
> @@ -3597,7 +3595,7 @@ static int pktgen_remove_device(struct pktgen_thread *t,
> _rem_dev_from_if_list(t, pkt_dev);
>
> if (pkt_dev->entry)
> - remove_proc_entry(pkt_dev->entry->name, pn->proc_dir);
> + proc_remove(pkt_dev->entry);
>
> #ifdef CONFIG_XFRM
> free_SAs(pkt_dev);
> diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
> index e4738fe..0b732ef 100644
> --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
> +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
> @@ -105,7 +105,7 @@ clusterip_config_entry_put(struct clusterip_config *c)
> * functions are also incrementing the refcount on their own,
> * so it's safe to remove the entry even if it's in use. */
> #ifdef CONFIG_PROC_FS
> - remove_proc_entry(c->pde->name, c->pde->parent);
> + proc_remove(c->pde);
> #endif
> return;
> }
> @@ -736,7 +736,7 @@ static void __exit clusterip_tg_exit(void)
> {
> pr_info("ClusterIP Version %s unloading\n", CLUSTERIP_VERSION);
> #ifdef CONFIG_PROC_FS
> - remove_proc_entry(clusterip_procdir->name, clusterip_procdir->parent);
> + proc_remove(clusterip_procdir);
> #endif
> nf_unregister_hook(&cip_arp_ops);
> xt_unregister_target(&clusterip_tg_reg);
> diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
> index 7ea6e18..537d9ee 100644
> --- a/net/ipv6/proc.c
> +++ b/net/ipv6/proc.c
> @@ -287,8 +287,7 @@ int snmp6_unregister_dev(struct inet6_dev *idev)
> return -ENOENT;
> if (!idev->stats.proc_dir_entry)
> return -EINVAL;
> - remove_proc_entry(idev->stats.proc_dir_entry->name,
> - net->mib.proc_net_devsnmp6);
> + proc_remove(idev->stats.proc_dir_entry);
> idev->stats.proc_dir_entry = NULL;
> return 0;
> }
> diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
> index d2fd53b..40002ef 100644
> --- a/net/netfilter/xt_hashlimit.c
> +++ b/net/netfilter/xt_hashlimit.c
> @@ -330,7 +330,7 @@ static void htable_destroy(struct xt_hashlimit_htable *hinfo)
> parent = hashlimit_net->ip6t_hashlimit;
>
> if(parent != NULL)
> - remove_proc_entry(hinfo->pde->name, parent);
> + proc_remove(hinfo->pde);
>
> htable_selective_cleanup(hinfo, select_all);
> vfree(hinfo);
> @@ -887,7 +887,7 @@ static void __net_exit hashlimit_proc_net_exit(struct net *net)
> pde = hashlimit_net->ip6t_hashlimit;
>
> hlist_for_each_entry(hinfo, &hashlimit_net->htables, node)
> - remove_proc_entry(hinfo->pde->name, pde);
> + proc_remove(hinfo->pde);
>
> hashlimit_net->ipt_hashlimit = NULL;
> hashlimit_net->ip6t_hashlimit = NULL;
> diff --git a/sound/core/info.c b/sound/core/info.c
> index c7f41c3..3c9bd6b 100644
> --- a/sound/core/info.c
> +++ b/sound/core/info.c
> @@ -153,13 +153,6 @@ EXPORT_SYMBOL(snd_seq_root);
> struct snd_info_entry *snd_oss_root;
> #endif
>
> -static void snd_remove_proc_entry(struct proc_dir_entry *parent,
> - struct proc_dir_entry *de)
> -{
> - if (de)
> - remove_proc_entry(de->name, parent);
> -}
> -
> static loff_t snd_info_entry_llseek(struct file *file, loff_t offset, int orig)
> {
> struct snd_info_private_data *data;
> @@ -580,7 +573,7 @@ int __exit snd_info_done(void)
> #ifdef CONFIG_SND_OSSEMUL
> snd_info_free_entry(snd_oss_root);
> #endif
> - snd_remove_proc_entry(NULL, snd_proc_root);
> + proc_remove(snd_proc_root);
> }
> return 0;
> }
> @@ -642,7 +635,7 @@ void snd_info_card_id_change(struct snd_card *card)
> {
> mutex_lock(&info_mutex);
> if (card->proc_root_link) {
> - snd_remove_proc_entry(snd_proc_root, card->proc_root_link);
> + proc_remove(card->proc_root_link);
> card->proc_root_link = NULL;
> }
> if (strcmp(card->id, card->proc_root->name))
> @@ -661,10 +654,8 @@ void snd_info_card_disconnect(struct snd_card *card)
> if (!card)
> return;
> mutex_lock(&info_mutex);
> - if (card->proc_root_link) {
> - snd_remove_proc_entry(snd_proc_root, card->proc_root_link);
> - card->proc_root_link = NULL;
> - }
> + proc_remove(card->proc_root_link);
> + card->proc_root_link = NULL;
> if (card->proc_root)
> snd_info_disconnect(card->proc_root);
> mutex_unlock(&info_mutex);
> @@ -856,7 +847,7 @@ static void snd_info_disconnect(struct snd_info_entry *entry)
> list_del_init(&entry->list);
> root = entry->parent == NULL ? snd_proc_root : entry->parent->p;
> snd_BUG_ON(!root);
> - snd_remove_proc_entry(root, entry->p);
> + proc_remove(entry->p);
> entry->p = NULL;
> }
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
next prev parent reply other threads:[~2013-04-17 15:03 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-16 18:25 [PATCH 00/28] Privatise procfs internals [RFC] David Howells
2013-04-16 18:25 ` [PATCH 01/28] Include missing linux/slab.h inclusions [RFC] David Howells
2013-04-16 18:25 ` David Howells
2013-04-16 18:25 ` David Howells
[not found] ` <20130416182554.27773.86004.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2013-04-17 0:56 ` Greg KH
2013-04-17 0:56 ` Greg KH
2013-04-17 0:56 ` Greg KH
2013-04-17 0:56 ` Greg KH
2013-04-16 18:25 ` [PATCH 02/28] Include missing linux/magic.h " David Howells
2013-04-16 18:26 ` [PATCH 03/28] proc: Split kcore bits from linux/procfs.h into linux/kcore.h [RFC] David Howells
2013-04-16 18:26 ` David Howells
2013-04-16 18:26 ` David Howells
2013-04-16 21:37 ` KOSAKI Motohiro
2013-04-16 21:37 ` KOSAKI Motohiro
2013-04-16 21:37 ` KOSAKI Motohiro
2013-04-16 22:07 ` David Howells
2013-04-16 22:07 ` David Howells
2013-04-16 22:07 ` David Howells
2013-04-16 22:13 ` KOSAKI Motohiro
2013-04-16 22:13 ` KOSAKI Motohiro
2013-04-16 22:13 ` KOSAKI Motohiro
2013-04-17 9:13 ` Ralf Baechle
2013-04-17 9:13 ` Ralf Baechle
2013-04-17 9:13 ` Ralf Baechle
2013-04-16 18:26 ` [PATCH 04/28] proc: Supply PDE attribute setting accessor functions [RFC] David Howells
2013-04-16 18:26 ` David Howells
2013-04-16 21:37 ` Mauro Carvalho Chehab
2013-04-16 21:37 ` Mauro Carvalho Chehab
2013-04-18 16:42 ` Bjorn Helgaas
2013-04-18 16:42 ` Bjorn Helgaas
[not found] ` <20130416182606.27773.55054.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2013-04-25 15:22 ` Vasant Hegde
2013-04-25 15:22 ` Vasant Hegde
2013-04-25 15:22 ` Vasant Hegde
2013-04-16 18:26 ` [PATCH 05/28] proc: Uninline pid_delete_dentry() [RFC] David Howells
2013-04-16 18:26 ` [PATCH 06/28] proc: Move proc_fd() to fs/proc/fd.h [RFC] David Howells
2013-04-16 18:26 ` [PATCH 07/28] proc: Split the namespace stuff out into linux/proc_ns.h [RFC] David Howells
2013-04-16 18:26 ` [PATCH 08/28] proc: Move PDE_NET() to fs/proc/proc_net.c [RFC] David Howells
2013-04-16 18:26 ` [PATCH 09/28] proc: Move some bits from linux/proc_fs.h to linux/{of.h, signal.h, tty.h} [RFC] David Howells
2013-04-17 0:57 ` Greg Kroah-Hartman
2013-04-17 14:59 ` Grant Likely
2013-04-16 18:26 ` [PATCH 10/28] proc: Add proc_mkdir_data() [RFC] David Howells
2013-04-16 21:39 ` Mauro Carvalho Chehab
2013-04-17 0:58 ` Greg KH
2013-04-17 0:58 ` Greg KH
2013-04-16 18:26 ` [PATCH 11/28] rtl8187se: Use a dir under /proc/net/r8180/ [RFC] David Howells
2013-04-17 0:59 ` Greg KH
2013-04-17 0:59 ` Greg KH
2013-04-16 18:26 ` [PATCH 12/28] rtl8192u: Don't need to save device proc dir PDE [RFC] David Howells
2013-04-17 1:00 ` Greg KH
2013-04-17 1:00 ` Greg KH
2013-04-16 18:26 ` [PATCH 13/28] airo: Use remove_proc_subtree() [RFC] David Howells
2013-04-16 18:26 ` [PATCH 14/28] proc: Supply an accessor for getting the data from a PDE's parent [RFC] David Howells
2013-04-17 1:01 ` Greg KH
2013-04-16 18:26 ` [PATCH 15/28] reiserfs: Don't access the proc_dir_entry in r_open(), r_start() r_show() [RFC] David Howells
2013-04-16 18:26 ` [PATCH 16/28] zoran: Don't print proc_dir_entry data in debug [RFC] David Howells
2013-04-16 21:32 ` Mauro Carvalho Chehab
2013-04-16 18:26 ` [PATCH 17/28] drm: Constify drm_proc_list[] [RFC] David Howells
2013-04-16 18:27 ` [PATCH 18/28] drm: proc: Use minor->index to label things, not PDE->name [RFC] David Howells
2013-04-16 18:27 ` [PATCH 19/28] drm: proc: Use remove_proc_subtree() [RFC] David Howells
2013-04-16 18:27 ` [PATCH 20/28] hostap: " David Howells
2013-04-16 18:27 ` David Howells
2013-04-16 18:27 ` [PATCH 21/28] dgrp: Clean up the use of procfs [RFC] David Howells
2013-04-16 18:27 ` David Howells
2013-04-17 1:02 ` Greg KH
2013-04-16 18:27 ` [PATCH 22/28] ppc: Clean up rtas_flash driver somewhat [RFC] David Howells
2013-04-16 18:27 ` David Howells
2013-04-25 14:33 ` Vasant Hegde
2013-04-25 14:33 ` Vasant Hegde
2013-04-16 18:27 ` [PATCH 23/28] ppc: Clean up scanlog [RFC] David Howells
2013-04-16 18:27 ` David Howells
2013-04-25 15:01 ` Vasant Hegde
2013-04-25 15:01 ` Vasant Hegde
2013-04-16 18:27 ` [PATCH 24/28] proc: Supply an accessor to get the name in a proc_dir_entry struct [RFC] David Howells
2013-04-16 22:20 ` Harald Welte
[not found] ` <20130416182550.27773.89310.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2013-04-16 18:27 ` [PATCH 25/28] proc: Supply an accessor to get the process ID associated with some proc files [RFC] David Howells
2013-04-16 18:27 ` David Howells
[not found] ` <20130416182730.27773.88726.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2013-04-17 1:53 ` Li Zefan
2013-04-17 1:53 ` Li Zefan
2013-04-18 18:39 ` Tejun Heo
2013-04-18 18:39 ` Tejun Heo
2013-04-16 18:27 ` [PATCH 26/28] proc: Supply a function to remove a proc entry by PDE [RFC] David Howells
2013-04-17 15:03 ` Grant Likely [this message]
2013-04-18 16:41 ` Bjorn Helgaas
2013-04-18 20:34 ` David Howells
2013-04-21 22:01 ` Rafael J. Wysocki
2013-04-16 18:27 ` [PATCH 27/28] proc: Make the PROC_I() and PDE() macros internal to procfs [RFC] David Howells
2013-04-16 18:27 ` [PATCH 28/28] proc: Move non-public stuff from linux/proc_fs.h to fs/proc/internal.h [RFC] David Howells
2013-05-01 20:51 ` [PATCH 00/28] Privatise procfs internals [RFC] Geert Uytterhoeven
2013-05-03 20:27 ` Geert Uytterhoeven
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130417150301.DCA443E2B73@localhost \
--to=grant.likely@secretlab.ca \
--cc=alsa-devel@alsa-project.org \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=dhowells@redhat.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=openipmi-developer@lists.sourceforge.net \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.