Loading fs/namespace.c +6 −14 Original line number Diff line number Diff line Loading @@ -1426,13 +1426,11 @@ struct vfsmount *collect_mounts(struct path *path) void drop_collected_mounts(struct vfsmount *mnt) { LIST_HEAD(umount_list); down_write(&namespace_sem); br_write_lock(&vfsmount_lock); umount_tree(real_mount(mnt), 0, &umount_list); umount_tree(real_mount(mnt), 0, &unmounted); br_write_unlock(&vfsmount_lock); up_write(&namespace_sem); release_mounts(&umount_list); namespace_unlock(); } int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, Loading Loading @@ -2060,7 +2058,6 @@ void mark_mounts_for_expiry(struct list_head *mounts) { struct mount *mnt, *next; LIST_HEAD(graveyard); LIST_HEAD(umounts); if (list_empty(mounts)) return; Loading @@ -2083,12 +2080,10 @@ void mark_mounts_for_expiry(struct list_head *mounts) while (!list_empty(&graveyard)) { mnt = list_first_entry(&graveyard, struct mount, mnt_expire); touch_mnt_namespace(mnt->mnt_ns); umount_tree(mnt, 1, &umounts); umount_tree(mnt, 1, &unmounted); } br_write_unlock(&vfsmount_lock); up_write(&namespace_sem); release_mounts(&umounts); namespace_unlock(); } EXPORT_SYMBOL_GPL(mark_mounts_for_expiry); Loading Loading @@ -2741,16 +2736,13 @@ void __init mnt_init(void) void put_mnt_ns(struct mnt_namespace *ns) { LIST_HEAD(umount_list); if (!atomic_dec_and_test(&ns->count)) return; down_write(&namespace_sem); br_write_lock(&vfsmount_lock); umount_tree(ns->root, 0, &umount_list); umount_tree(ns->root, 0, &unmounted); br_write_unlock(&vfsmount_lock); up_write(&namespace_sem); release_mounts(&umount_list); namespace_unlock(); free_mnt_ns(ns); } Loading Loading
fs/namespace.c +6 −14 Original line number Diff line number Diff line Loading @@ -1426,13 +1426,11 @@ struct vfsmount *collect_mounts(struct path *path) void drop_collected_mounts(struct vfsmount *mnt) { LIST_HEAD(umount_list); down_write(&namespace_sem); br_write_lock(&vfsmount_lock); umount_tree(real_mount(mnt), 0, &umount_list); umount_tree(real_mount(mnt), 0, &unmounted); br_write_unlock(&vfsmount_lock); up_write(&namespace_sem); release_mounts(&umount_list); namespace_unlock(); } int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, Loading Loading @@ -2060,7 +2058,6 @@ void mark_mounts_for_expiry(struct list_head *mounts) { struct mount *mnt, *next; LIST_HEAD(graveyard); LIST_HEAD(umounts); if (list_empty(mounts)) return; Loading @@ -2083,12 +2080,10 @@ void mark_mounts_for_expiry(struct list_head *mounts) while (!list_empty(&graveyard)) { mnt = list_first_entry(&graveyard, struct mount, mnt_expire); touch_mnt_namespace(mnt->mnt_ns); umount_tree(mnt, 1, &umounts); umount_tree(mnt, 1, &unmounted); } br_write_unlock(&vfsmount_lock); up_write(&namespace_sem); release_mounts(&umounts); namespace_unlock(); } EXPORT_SYMBOL_GPL(mark_mounts_for_expiry); Loading Loading @@ -2741,16 +2736,13 @@ void __init mnt_init(void) void put_mnt_ns(struct mnt_namespace *ns) { LIST_HEAD(umount_list); if (!atomic_dec_and_test(&ns->count)) return; down_write(&namespace_sem); br_write_lock(&vfsmount_lock); umount_tree(ns->root, 0, &umount_list); umount_tree(ns->root, 0, &unmounted); br_write_unlock(&vfsmount_lock); up_write(&namespace_sem); release_mounts(&umount_list); namespace_unlock(); free_mnt_ns(ns); } Loading