aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/kernfs/dir.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index 3ac93737174a..9603c06550a0 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -177,9 +177,10 @@ void kernfs_put_active(struct kernfs_node *kn)
177 * kernfs_deactivate - deactivate kernfs_node 177 * kernfs_deactivate - deactivate kernfs_node
178 * @kn: kernfs_node to deactivate 178 * @kn: kernfs_node to deactivate
179 * 179 *
180 * Deny new active references and drain existing ones. Mutiple 180 * Deny new active references, drain existing ones and nuke all
181 * removers may invoke this function concurrently on @kn and all will 181 * existing mmaps. Mutiple removers may invoke this function
182 * return after deactivation and draining are complete. 182 * concurrently on @kn and all will return after deactivation and
183 * draining are complete.
183 */ 184 */
184static void kernfs_deactivate(struct kernfs_node *kn) 185static void kernfs_deactivate(struct kernfs_node *kn)
185 __releases(&kernfs_mutex) __acquires(&kernfs_mutex) 186 __releases(&kernfs_mutex) __acquires(&kernfs_mutex)
@@ -213,6 +214,8 @@ static void kernfs_deactivate(struct kernfs_node *kn)
213 rwsem_release(&kn->dep_map, 1, _RET_IP_); 214 rwsem_release(&kn->dep_map, 1, _RET_IP_);
214 } 215 }
215 216
217 kernfs_unmap_bin_file(kn);
218
216 mutex_lock(&kernfs_mutex); 219 mutex_lock(&kernfs_mutex);
217} 220}
218 221
@@ -493,7 +496,6 @@ void kernfs_addrm_finish(struct kernfs_addrm_cxt *acxt)
493 496
494 acxt->removed = kn->u.removed_list; 497 acxt->removed = kn->u.removed_list;
495 498
496 kernfs_unmap_bin_file(kn);
497 kernfs_put(kn); 499 kernfs_put(kn);
498 } 500 }
499} 501}