When specifying nls option multiple times in a mount,
current option parsing will cause inaccurate refcount of nls
module. Hence, call unload_nls for previous one in this case.

Signed-off-by: Chengguang Xu <cgxu...@gmx.com>
---
 fs/hfsplus/options.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/hfsplus/options.c b/fs/hfsplus/options.c
index 047e05c..068d4e2 100644
--- a/fs/hfsplus/options.c
+++ b/fs/hfsplus/options.c
@@ -171,8 +171,10 @@ int hfsplus_parse_options(char *input, struct 
hfsplus_sb_info *sbi)
                                return 0;
                        }
                        p = match_strdup(&args[0]);
-                       if (p)
+                       if (p) {
+                               unload_nls(sbi->nls);
                                sbi->nls = load_nls(p);
+                       }
                        if (!sbi->nls) {
                                pr_err("unable to load nls mapping \"%s\"\n",
                                       p);
-- 
1.8.3.1

Reply via email to