From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net ([212.227.15.18]:60365 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751183AbeDQHGN (ORCPT ); Tue, 17 Apr 2018 03:06:13 -0400 From: Chengguang Xu To: linux-fsdevel@vger.kernel.org Cc: dhowells@redhat.com, kstewart@linuxfoundation.org, gregkh@linuxfoundation.org, tglx@linutronix.de, pombredanne@nexb.com, linux-kernel@vger.kernel.org, Chengguang Xu Subject: [PATCH 1/2] hfs: fix potential refcnt problem of nls module Date: Tue, 17 Apr 2018 15:05:32 +0800 Message-Id: <1523948733-8537-1-git-send-email-cgxu519@gmx.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: 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 --- 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