diff options
Diffstat (limited to 'fs/ncpfs/inode.c')
-rw-r--r-- | fs/ncpfs/inode.c | 11 |
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 | ||
90 | static void destroy_inodecache(void) | 90 | static 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 | ||
324 | static int ncp_show_options(struct seq_file *seq, struct dentry *root) | 329 | static int ncp_show_options(struct seq_file *seq, struct dentry *root) |