aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ncpfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ncpfs/inode.c')
-rw-r--r--fs/ncpfs/inode.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
index 333df07ae3bd..d7e9fe77188a 100644
--- a/fs/ncpfs/inode.c
+++ b/fs/ncpfs/inode.c
@@ -89,6 +89,11 @@ static int init_inodecache(void)
89 89
90static void destroy_inodecache(void) 90static void destroy_inodecache(void)
91{ 91{
92 /*
93 * Make sure all delayed rcu free inodes are flushed before we
94 * destroy cache.
95 */
96 rcu_barrier();
92 kmem_cache_destroy(ncp_inode_cachep); 97 kmem_cache_destroy(ncp_inode_cachep);
93} 98}
94 99
@@ -314,11 +319,11 @@ static void ncp_stop_tasks(struct ncp_server *server) {
314 release_sock(sk); 319 release_sock(sk);
315 del_timer_sync(&server->timeout_tm); 320 del_timer_sync(&server->timeout_tm);
316 321
317 flush_work_sync(&server->rcv.tq); 322 flush_work(&server->rcv.tq);
318 if (sk->sk_socket->type == SOCK_STREAM) 323 if (sk->sk_socket->type == SOCK_STREAM)
319 flush_work_sync(&server->tx.tq); 324 flush_work(&server->tx.tq);
320 else 325 else
321 flush_work_sync(&server->timeout_tq); 326 flush_work(&server->timeout_tq);
322} 327}
323 328
324static int ncp_show_options(struct seq_file *seq, struct dentry *root) 329static int ncp_show_options(struct seq_file *seq, struct dentry *root)