It has five callsites, and is big. fs/namespace.c | 10 ++++++++++ include/linux/namespace.h | 11 +++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff -puN include/linux/namespace.h~uninline-put_namespace include/linux/namespace.h --- 25/include/linux/namespace.h~uninline-put_namespace 2003-07-14 01:25:18.000000000 -0700 +++ 25-akpm/include/linux/namespace.h 2003-07-14 01:26:25.000000000 -0700 @@ -14,17 +14,12 @@ struct namespace { extern void umount_tree(struct vfsmount *); extern int copy_namespace(int, struct task_struct *); +void __put_namespace(struct namespace *namespace); static inline void put_namespace(struct namespace *namespace) { - if (atomic_dec_and_test(&namespace->count)) { - down_write(&namespace->sem); - spin_lock(&vfsmount_lock); - umount_tree(namespace->root); - spin_unlock(&vfsmount_lock); - up_write(&namespace->sem); - kfree(namespace); - } + if (atomic_dec_and_test(&namespace->count)) + __put_namespace(namespace); } static inline void exit_namespace(struct task_struct *p) diff -puN fs/namespace.c~uninline-put_namespace fs/namespace.c --- 25/fs/namespace.c~uninline-put_namespace 2003-07-14 01:25:18.000000000 -0700 +++ 25-akpm/fs/namespace.c 2003-07-14 01:26:09.000000000 -0700 @@ -1158,3 +1158,13 @@ void __init mnt_init(unsigned long mempa init_rootfs(); init_mount_tree(); } + +void __put_namespace(struct namespace *namespace) +{ + down_write(&namespace->sem); + spin_lock(&vfsmount_lock); + umount_tree(namespace->root); + spin_unlock(&vfsmount_lock); + up_write(&namespace->sem); + kfree(namespace); +} _