Skip to content

Commit be5f21d

Browse files
committed
ns: add ns_common_free()
And drop ns_free_inum(). Anything common that can be wasted centrally should be wasted in the new common helper. Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent 5612ff3 commit be5f21d

11 files changed

Lines changed: 21 additions & 15 deletions

File tree

fs/namespace.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4082,7 +4082,7 @@ static void dec_mnt_namespaces(struct ucounts *ucounts)
40824082
static void free_mnt_ns(struct mnt_namespace *ns)
40834083
{
40844084
if (!is_anon_ns(ns))
4085-
ns_free_inum(&ns->ns);
4085+
ns_common_free(ns);
40864086
dec_mnt_namespaces(ns->ucounts);
40874087
mnt_ns_tree_remove(ns);
40884088
}
@@ -4154,7 +4154,7 @@ struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
41544154
new = copy_tree(old, old->mnt.mnt_root, copy_flags);
41554155
if (IS_ERR(new)) {
41564156
namespace_unlock();
4157-
ns_free_inum(&new_ns->ns);
4157+
ns_common_free(ns);
41584158
dec_mnt_namespaces(new_ns->ucounts);
41594159
mnt_ns_release(new_ns);
41604160
return ERR_CAST(new);

include/linux/ns_common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ struct ns_common {
4141
};
4242

4343
int __ns_common_init(struct ns_common *ns, const struct proc_ns_operations *ops, int inum);
44+
void __ns_common_free(struct ns_common *ns);
4445

4546
#define to_ns_common(__ns) \
4647
_Generic((__ns), \
@@ -80,4 +81,6 @@ int __ns_common_init(struct ns_common *ns, const struct proc_ns_operations *ops,
8081

8182
#define ns_common_init_inum(__ns, __ops, __inum) __ns_common_init(to_ns_common(__ns), __ops, __inum)
8283

84+
#define ns_common_free(__ns) __ns_common_free(to_ns_common((__ns)))
85+
8386
#endif

include/linux/proc_ns.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ static inline void proc_free_inum(unsigned int inum) {}
6666

6767
#endif /* CONFIG_PROC_FS */
6868

69-
#define ns_free_inum(ns) proc_free_inum((ns)->inum)
70-
7169
#define get_proc_ns(inode) ((struct ns_common *)(inode)->i_private)
7270

7371
#endif /* _LINUX_PROC_NS_H */

ipc/namespace.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns,
9797

9898
fail_put:
9999
put_user_ns(ns->user_ns);
100-
ns_free_inum(&ns->ns);
100+
ns_common_free(ns);
101101
fail_free:
102102
kfree(ns);
103103
fail_dec:
@@ -161,7 +161,7 @@ static void free_ipc_ns(struct ipc_namespace *ns)
161161

162162
dec_ipc_namespaces(ns->ucounts);
163163
put_user_ns(ns->user_ns);
164-
ns_free_inum(&ns->ns);
164+
ns_common_free(ns);
165165
kfree(ns);
166166
}
167167

kernel/cgroup/namespace.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void free_cgroup_ns(struct cgroup_namespace *ns)
4040
put_css_set(ns->root_cset);
4141
dec_cgroup_namespaces(ns->ucounts);
4242
put_user_ns(ns->user_ns);
43-
ns_free_inum(&ns->ns);
43+
ns_common_free(ns);
4444
/* Concurrent nstree traversal depends on a grace period. */
4545
kfree_rcu(ns, ns.ns_rcu);
4646
}

kernel/nscommon.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,8 @@ int __ns_common_init(struct ns_common *ns, const struct proc_ns_operations *ops,
1818
}
1919
return proc_alloc_inum(&ns->inum);
2020
}
21+
22+
void __ns_common_free(struct ns_common *ns)
23+
{
24+
proc_free_inum(ns->inum);
25+
}

kernel/pid_namespace.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ static struct pid_namespace *create_pid_namespace(struct user_namespace *user_ns
127127
return ns;
128128

129129
out_free_inum:
130-
ns_free_inum(&ns->ns);
130+
ns_common_free(ns);
131131
out_free_idr:
132132
idr_destroy(&ns->idr);
133133
kmem_cache_free(pid_ns_cachep, ns);
@@ -152,7 +152,7 @@ static void destroy_pid_namespace(struct pid_namespace *ns)
152152
ns_tree_remove(ns);
153153
unregister_pidns_sysctls(ns);
154154

155-
ns_free_inum(&ns->ns);
155+
ns_common_free(ns);
156156

157157
idr_destroy(&ns->idr);
158158
call_rcu(&ns->rcu, delayed_free_pidns);

kernel/time/namespace.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ void free_time_ns(struct time_namespace *ns)
255255
ns_tree_remove(ns);
256256
dec_time_namespaces(ns->ucounts);
257257
put_user_ns(ns->user_ns);
258-
ns_free_inum(&ns->ns);
258+
ns_common_free(ns);
259259
__free_page(ns->vvar_page);
260260
/* Concurrent nstree traversal depends on a grace period. */
261261
kfree_rcu(ns, ns.ns_rcu);

kernel/user_namespace.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ int create_user_ns(struct cred *new)
165165
#ifdef CONFIG_PERSISTENT_KEYRINGS
166166
key_put(ns->persistent_keyring_register);
167167
#endif
168-
ns_free_inum(&ns->ns);
168+
ns_common_free(ns);
169169
fail_free:
170170
kmem_cache_free(user_ns_cachep, ns);
171171
fail_dec:
@@ -220,7 +220,7 @@ static void free_user_ns(struct work_struct *work)
220220
#endif
221221
retire_userns_sysctls(ns);
222222
key_free_user_ns(ns);
223-
ns_free_inum(&ns->ns);
223+
ns_common_free(ns);
224224
/* Concurrent nstree traversal depends on a grace period. */
225225
kfree_rcu(ns, ns.ns_rcu);
226226
dec_user_namespaces(ucounts);

kernel/utsname.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ void free_uts_ns(struct uts_namespace *ns)
9898
ns_tree_remove(ns);
9999
dec_uts_namespaces(ns->ucounts);
100100
put_user_ns(ns->user_ns);
101-
ns_free_inum(&ns->ns);
101+
ns_common_free(ns);
102102
/* Concurrent nstree traversal depends on a grace period. */
103103
kfree_rcu(ns, ns.ns_rcu);
104104
}

0 commit comments

Comments
 (0)