[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1523948733-8537-1-git-send-email-cgxu519@gmx.com>
Date: Tue, 17 Apr 2018 15:05:32 +0800
From: Chengguang Xu <cgxu519@....com>
To: linux-fsdevel@...r.kernel.org
Cc: dhowells@...hat.com, kstewart@...uxfoundation.org,
gregkh@...uxfoundation.org, tglx@...utronix.de,
pombredanne@...b.com, linux-kernel@...r.kernel.org,
Chengguang Xu <cgxu519@....com>
Subject: [PATCH 1/2] hfs: fix potential refcnt problem of nls module
When specifying iocharset/codepage 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 <cgxu519@....com>
---
fs/hfs/super.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/fs/hfs/super.c b/fs/hfs/super.c
index 1738767..6a5f6fd 100644
--- a/fs/hfs/super.c
+++ b/fs/hfs/super.c
@@ -329,8 +329,10 @@ static int parse_options(char *options, struct hfs_sb_info *hsb)
return 0;
}
p = match_strdup(&args[0]);
- if (p)
+ if (p) {
+ unload_nls(hsb->nls_disk);
hsb->nls_disk = load_nls(p);
+ }
if (!hsb->nls_disk) {
pr_err("unable to load codepage \"%s\"\n", p);
kfree(p);
@@ -344,8 +346,10 @@ static int parse_options(char *options, struct hfs_sb_info *hsb)
return 0;
}
p = match_strdup(&args[0]);
- if (p)
+ if (p) {
+ unload_nls(hsb->nls_io);
hsb->nls_io = load_nls(p);
+ }
if (!hsb->nls_io) {
pr_err("unable to load iocharset \"%s\"\n", p);
kfree(p);
--
1.8.3.1
Powered by blists - more mailing lists