aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/connect.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r--fs/cifs/connect.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index a279ffc0bc29..886db8b41e35 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -3755,6 +3755,13 @@ CIFSTCon(const unsigned int xid, struct cifs_ses *ses,
3755 return rc; 3755 return rc;
3756} 3756}
3757 3757
3758static void delayed_free(struct rcu_head *p)
3759{
3760 struct cifs_sb_info *sbi = container_of(p, struct cifs_sb_info, rcu);
3761 unload_nls(sbi->local_nls);
3762 kfree(sbi);
3763}
3764
3758void 3765void
3759cifs_umount(struct cifs_sb_info *cifs_sb) 3766cifs_umount(struct cifs_sb_info *cifs_sb)
3760{ 3767{
@@ -3779,8 +3786,7 @@ cifs_umount(struct cifs_sb_info *cifs_sb)
3779 3786
3780 bdi_destroy(&cifs_sb->bdi); 3787 bdi_destroy(&cifs_sb->bdi);
3781 kfree(cifs_sb->mountdata); 3788 kfree(cifs_sb->mountdata);
3782 unload_nls(cifs_sb->local_nls); 3789 call_rcu(&cifs_sb->rcu, delayed_free);
3783 kfree(cifs_sb);
3784} 3790}
3785 3791
3786int 3792int