| From 47f6d9ce45b03a40c34b668a9884754c58122b39 Mon Sep 17 00:00:00 2001 |
| From: Zhihao Cheng <chengzhihao1@huawei.com> |
| Date: Tue, 29 Sep 2020 20:45:29 +0800 |
| Subject: ubifs: Fix a memleak after dumping authentication mount options |
| |
| From: Zhihao Cheng <chengzhihao1@huawei.com> |
| |
| commit 47f6d9ce45b03a40c34b668a9884754c58122b39 upstream. |
| |
| Fix a memory leak after dumping authentication mount options in error |
| handling branch. |
| |
| Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com> |
| Cc: <stable@vger.kernel.org> # 4.20+ |
| Fixes: d8a22773a12c6d7 ("ubifs: Enable authentication support") |
| Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de> |
| Signed-off-by: Richard Weinberger <richard@nod.at> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ubifs/super.c | 16 ++++++++++++++-- |
| 1 file changed, 14 insertions(+), 2 deletions(-) |
| |
| --- a/fs/ubifs/super.c |
| +++ b/fs/ubifs/super.c |
| @@ -1141,6 +1141,18 @@ static int ubifs_parse_options(struct ub |
| return 0; |
| } |
| |
| +/* |
| + * ubifs_release_options - release mount parameters which have been dumped. |
| + * @c: UBIFS file-system description object |
| + */ |
| +static void ubifs_release_options(struct ubifs_info *c) |
| +{ |
| + kfree(c->auth_key_name); |
| + c->auth_key_name = NULL; |
| + kfree(c->auth_hash_name); |
| + c->auth_hash_name = NULL; |
| +} |
| + |
| /** |
| * destroy_journal - destroy journal data structures. |
| * @c: UBIFS file-system description object |
| @@ -1650,8 +1662,7 @@ static void ubifs_umount(struct ubifs_in |
| ubifs_lpt_free(c, 0); |
| ubifs_exit_authentication(c); |
| |
| - kfree(c->auth_key_name); |
| - kfree(c->auth_hash_name); |
| + ubifs_release_options(c); |
| kfree(c->cbuf); |
| kfree(c->rcvrd_mst_node); |
| kfree(c->mst_node); |
| @@ -2219,6 +2230,7 @@ out_umount: |
| out_unlock: |
| mutex_unlock(&c->umount_mutex); |
| out_close: |
| + ubifs_release_options(c); |
| ubi_close_volume(c->ubi); |
| out: |
| return err; |