Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78e92b99 authored by Denis V. Lunev's avatar Denis V. Lunev Committed by David S. Miller
Browse files

netns: assign PDE->data before gluing entry into /proc tree



In this unfortunate case, proc_mkdir_mode wrapper can't be used anymore and
this is no way to reuse proc_create_data due to nlinks assignment. So,
copy the code from proc_mkdir and assign PDE->data at the appropriate
moment.

Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8b169240
Loading
Loading
Loading
Loading
+17 −0
Original line number Original line Diff line number Diff line
@@ -641,6 +641,23 @@ struct proc_dir_entry *proc_mkdir_mode(const char *name, mode_t mode,
	return ent;
	return ent;
}
}


struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name,
		struct proc_dir_entry *parent)
{
	struct proc_dir_entry *ent;

	ent = __proc_create(&parent, name, S_IFDIR | S_IRUGO | S_IXUGO, 2);
	if (ent) {
		ent->data = net;
		if (proc_register(parent, ent) < 0) {
			kfree(ent);
			ent = NULL;
		}
	}
	return ent;
}
EXPORT_SYMBOL_GPL(proc_net_mkdir);

struct proc_dir_entry *proc_mkdir(const char *name,
struct proc_dir_entry *proc_mkdir(const char *name,
		struct proc_dir_entry *parent)
		struct proc_dir_entry *parent)
{
{
+0 −11
Original line number Original line Diff line number Diff line
@@ -159,17 +159,6 @@ struct net *get_proc_net(const struct inode *inode)
}
}
EXPORT_SYMBOL_GPL(get_proc_net);
EXPORT_SYMBOL_GPL(get_proc_net);


struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name,
		struct proc_dir_entry *parent)
{
	struct proc_dir_entry *pde;
	pde = proc_mkdir_mode(name, S_IRUGO | S_IXUGO, parent);
	if (pde != NULL)
		pde->data = net;
	return pde;
}
EXPORT_SYMBOL_GPL(proc_net_mkdir);

static __net_init int proc_net_ns_init(struct net *net)
static __net_init int proc_net_ns_init(struct net *net)
{
{
	struct proc_dir_entry *netd, *net_statd;
	struct proc_dir_entry *netd, *net_statd;