summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChengguang Xu <cgxu519@icloud.com>2018-02-25 15:17:31 -0500
committerDarrick J. Wong <darrick.wong@oracle.com>2018-02-26 13:02:13 -0500
commit5b4c845ea4f4b86c43096eb924354c83a2e26f3c (patch)
tree49d0741f02305b0b9169c4aeadeda594bfaae0d7 /fs
parentb31c2bdcd83e3374fec5a8e27a2fb4d26e771c52 (diff)
xfs: fix potential memory leak in mount option parsing
When specifying string type mount option (e.g., logdev) several times in a mount, current option parsing may cause memory leak. Hence, call kfree for previous one in this case. Signed-off-by: Chengguang Xu <cgxu519@icloud.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/xfs/xfs_super.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 7aba628dc527..93588ea3d3d2 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -250,6 +250,7 @@ xfs_parseargs(
250 return -EINVAL; 250 return -EINVAL;
251 break; 251 break;
252 case Opt_logdev: 252 case Opt_logdev:
253 kfree(mp->m_logname);
253 mp->m_logname = match_strdup(args); 254 mp->m_logname = match_strdup(args);
254 if (!mp->m_logname) 255 if (!mp->m_logname)
255 return -ENOMEM; 256 return -ENOMEM;
@@ -258,6 +259,7 @@ xfs_parseargs(
258 xfs_warn(mp, "%s option not allowed on this system", p); 259 xfs_warn(mp, "%s option not allowed on this system", p);
259 return -EINVAL; 260 return -EINVAL;
260 case Opt_rtdev: 261 case Opt_rtdev:
262 kfree(mp->m_rtname);
261 mp->m_rtname = match_strdup(args); 263 mp->m_rtname = match_strdup(args);
262 if (!mp->m_rtname) 264 if (!mp->m_rtname)
263 return -ENOMEM; 265 return -ENOMEM;